机器视觉学习-day19-图像亮度变换
1 亮度和对比度
亮度:图像像素的整体强度,亮度提高就是所有的像素加一个固定值。
对比度:当对比度提高时,图像的暗部与亮部的差值会变大。


OpenCV调整图像亮度和对比度的公式使用一个:
代码实践步骤:图片输入→亮度变换→图片输出
1.1 亮度变换
亮度:主要通过β控制,在虚拟仿真实验中控制范围是[-100,100],如果是彩色图像,则会同时应用在每个通道的数值上。
图像原图:1.jpg
import cv2
import numpy as npif __name__ == '__main__':# 1. 图片输入path = '1.jpg'image_np = cv2.imread(path)# 2. 亮度变换# 公式:g(i,j) = α * f(i,j) + β# β控制亮度alpha = 1.0 # 先不管对比度beta = -100 # 虚拟仿真限制在 [-100到100],实际可超过这个范围# 截取,可以保证数据的上下限pix = np.clip((alpha * image_np + beta), # 要处理的原始图像数据0, # 下限,低于此数值会被改为此数值255 # 上限,高于此数值会被改为此数值)print(pix)print(pix.dtype) # int16# 16位转8位pix = np.uint8(pix)# 5. 图像输出cv2.imshow('pix', pix)cv2.imwrite('pix_1.jpg', pix)cv2.waitKey(0)
代码运行结果:pix_1.jpg (对比,右为pix_1.jpg)
图像亮度变换可能会改变彩色图片通道的平衡,因此实际使用时需要慎重,可以转换为灰度调节改善此问题。
1.2 对比度变换
在对比度变换的过程中,需要同时考虑α和β的数值。
α
是对比度变换的主要因素,当α大于1时,图像的对比度增加,因为图像之间的亮度差异变大了;当α位于0到1之间时,图像的对比度减小,因为像素之间的亮度差异变小了。
β
虽然β主要用于调节亮度,但是在调节对比度的时候,它也作为一个辅助因素,起到间接作用。β可以在α调节后,平移像素值,使画面亮度恢复均衡。
对比度提升是一种图像增强的手段,有助于增加梯度值,可以用于边缘检测。
原图同上:1.jpg
import cv2
import numpy as npif __name__ == '__main__':# 1. 图片输入path = '1.jpg'image_np = cv2.imread(path)# 2. 亮度变换# 公式:g(i,j) = α * f(i,j) + βalpha = 1.5 # 对比度beta = -100 # 虚拟仿真限制在 [-100到100],实际可超过这个范围# 截取,可以保证数据的上下限pix = np.clip((alpha * image_np + beta), # 要处理的原始图像数据0, # 下限,低于此数值会被改为此数值255 # 上限,高于此数值会被改为此数值)print(pix)print(pix.dtype) # int16# 16位转8位pix = np.uint8(pix)# 5. 图像输出cv2.imshow('pix', pix)cv2.imwrite('pix_2.jpg', pix)cv2.waitKey(0)
代码运行:pix_2.jpg (对比,右为pix_2.jpg)