一、线性灰度变换
- 线性灰度变换将原始图像灰度值的动态范围按线性关系扩展到指定范围或整个动态范围。
二、伽马变换
-
幂律变换也称伽马变换,可以提升暗部细节,对发白(曝光过度)或过暗(曝光不足)的图片进行矫正。
-
幂律变换可以由以下公式描述:
-
伽马变换本质上是对图像矩阵中的每个值进行幂运算。
时,拉伸图像中灰度级较低的区域,压缩灰度级较高的部分,增加图像的对比度;
时,拉伸图像中灰度级较高的区域,压缩灰度级较低的部分,降低图像的对比度。
-
伽马变换通过非线性变换对人类视觉特性进行补偿,最大化地利用有效的灰度级带宽。很多拍摄、显示、打印设备的亮度曲线都符合幂律曲线,因此伽马变换广泛应用于各种设备显示效果的调校,称为伽马校正。
三、例程
- 1.56 图像的幂律变换
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 1.56 图像的非线性灰度变换: 幂律变换 (伽马变换)
img = cv2.imread(r"e:/opencv/bgra.png", flags=0) # flags=0 读取为灰度图像
gammaList = [0.125, 0.25, 0.5, 1.0, 2.0, 4.0] # gamma 值
normImg = lambda x: 255. * (x-x.min()) / (x.max()-x.min()+1e-6) # 归一化为 [0,255]
plt.figure(figsize=(9,6))
for k in range(len(gammaList)):
imgGamma = np.power(img, gammaList[k])
imgGamma = np.uint8(normImg(imgGamma))
plt.subplot(2, 3, k+1), plt.axis('off')
plt.imshow(imgGamma, cmap='gray', vmin=0, vmax=255)
plt.title(f"$\gamma={gammaList[k]}$")
plt.show()
四、资料
youcans_的博客:
https://blog.csdn.net/youcans/article/details/121508973












网友评论