• gamma校正


    gamma校正可使得图像看起来更符合人眼的特性。gamma校正公式常写为Out= Ingamma或者Out= In1/gamma形式,式中,In表示Input image, Out 表示Output image。本文采用第一种形式。gamma校正前后图像的亮度对比如下图所示。本文分别用opencv-python和MATLAB实现了gamma校正。

    1. opencv-python实现gamma校正

     1 import cv2
     2 import numpy as np
     3 import matplotlib.pyplot as plt
     4 
     5 gamma1 = 0.4
     6 gamma2 = 2.5
     7 
     8 imgIn = cv2.imread('messi.jpg', 0)
     9 imgIn = imgIn.astype(float) / 255
    10 
    11 out1 = imgIn ** gamma1
    12 out2 = imgIn ** gamma2
    13 
    14 out1 *= 255
    15 out1[out1 < 0] = 0
    16 out1[out1 > 255] = 255
    17 out1 = out1.astype(np.uint8)
    18 
    19 out2 *= 255
    20 out2[out2 < 0] = 0
    21 out2[out2 > 255] = 255
    22 out2 = out2.astype(np.uint8)
    23 
    24 # show images
    25 plt.subplot(131)
    26 plt.title('gamma=0.4')
    27 plt.xticks([])  # 去除刻度
    28 plt.yticks([])
    29 plt.imshow(out1, cmap='gray')
    30 
    31 plt.subplot(132)
    32 plt.title('original image')
    33 plt.xticks([])
    34 plt.yticks([])
    35 plt.imshow(imgIn, cmap='gray')
    36 
    37 plt.subplot(133)
    38 plt.title('gamma=2.5')
    39 plt.xticks([])
    40 plt.yticks([])
    41 plt.imshow(out2, cmap='gray')
    42 plt.show()

    效果如下:

     2. MATLAB实现gamma校正

    clear;
    img_ori = imread('Fig0308(a)(fractured_spine).tif');
    
    img_mat = mat2gray(img_ori, [0 255]);
    
    c = 1;
    gamma03 = 0.3;
    gamma06 = 0.6;
    gamma25 = 2.5;
    
    img_gam03 = c*(img_mat.^gamma03);
    img_gam06 = c*(img_mat.^gamma06);
    img_gam25 = c*(img_mat.^gamma25);
    
    % show images
    figure;
    subplot(1,4,1);
    imshow(img_mat, [0, 1]);
    title('original image');
    
    subplot(1,4,2);
    imshow(img_gam03, [0, 1]);
    title('gamma=0.3');
    
    subplot(1,4,3);
    imshow(img_gam06, [0, 1]);
    title('gamma=0.6');
    
    subplot(1,4,4);
    imshow(img_gam25, [0, 1]);
    title('gamma=2.5');

    效果如下:

  • 相关阅读:
    阻止事件传播的常用方法
    原生JS获取元素的位置与尺寸
    FileReader 与canvas结合使用显示图片
    dot.js使用心得
    时间格式转换
    JS对象操作
    vue-awesome-swipe 基于vue使用的轮播组件 使用(改)
    vscode 插件推荐
    chrome 发送请求出现:Provisional headers are shown 提示
    手机端
  • 原文地址:https://www.cnblogs.com/picassooo/p/11792182.html
Copyright © 2020-2023  润新知