前言
伽玛矫正是一种对低光照图像进行处理的方式:
人眼在看图像的时候,对亮度的感知不是线性的,光子数量增加了1倍,人眼感知的亮度不一定增加一倍,人眼对暗色比较敏感。
一、伽玛矫正是什么?
对于现实世界的光的强度来说,描述光的强弱,是根据光子在单位面积上的光子数量来描述的,这是物理规则,这是没错的,光的亮度(强度)是和光子数量成正比的。但是对于人眼来说,由于人眼的特殊构造,0.1倍光子数量的感知亮度,并不是等于0.2倍光子数量感知亮度的一半,也就是说眼睛感知亮度不是和光子数量成固定比例的,即眼睛感知亮度和光子数量之间的关系为非线性关系。所以,当光子数量增加一倍,人眼感知亮度不一定增加一倍。
伽马矫正利用这一特征可以通过对图像中像素值的调节来达到改变图像亮度的目的。
二、代码示例
代码如下(示例):
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread("./images/1.png") # 以灰度模式读取图像
# 伽马矫正参数
gamma = 1/2.5
# 伽马矫正
gamma_corrected = np.power(img / 255.0, gamma) * 255.0
gamma_corrected = np.uint8(gamma_corrected)
print(img.shape)
plt.subplot(1,2,1)
plt.title('Input Image'),plt.xticks([]),plt.yticks([])
plt.imshow(img[:,:,::-1])
plt.subplot(1,2,2)
plt.title("Histogram of Equalized Image"),plt.xticks([]),plt.yticks([])
plt.imshow(gamma_corrected[:,:,::-1])
plt.show()
cv2.waitKey(0)