📅  最后修改于: 2023-12-03 15:36:07.276000             🧑  作者: Mango
亮度和对比度是图像处理中常用的两个参数。亮度指图像整体的明暗度,对比度指黑白之间的差异程度。通过调整亮度和对比度,可以使图像更加清晰鲜明,也可以达到调整色彩效果的目的。
在程序中实现亮度和对比度的调整,可以采用以下方法:
对于每个像素点,根据公式将像素值进行调整。
def brightness_contrast(image, brightness, contrast):
"""
:param image: 一张图像
:param brightness: 亮度调整系数,范围[-255,255]
:param contrast: 对比度调整系数,范围[-127,127]
:return: 调整后的图像
"""
table = []
for i in range(256):
table.append((contrast * i + brightness))
if table[-1] > 255:
table[-1] = 255
elif table[-1] < 0:
table[-1] = 0
return cv2.LUT(image, np.array(table, np.uint8))
对图像进行直方图均衡,可以改善图像的亮度和对比度效果。
def histogram_equalization(image):
"""
:param image: 一张图像
:return: 直方图均衡后的图像
"""
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
eq_image = cv2.equalizeHist(gray_image)
return cv2.cvtColor(eq_image, cv2.COLOR_GRAY2BGR)
自适应直方图均衡化(Adaptive Histogram Equalization)是一种可以改善图像局部对比度的技术。OpenCV中实现了CLAHE算法。
def clahe(image):
"""
:param image: 一张图像
:return: CLAHE后的图像
"""
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
clahe = cv2.createCLAHE(clipLimit=5, tileGridSize=(8, 8))
cl_image = clahe.apply(gray_image)
return cv2.cvtColor(cl_image, cv2.COLOR_GRAY2BGR)
亮度和对比度是影响图像清晰度的两个重要参数。在图像处理和计算机视觉中,我们常常需要用亮度和对比度来改善图像的效果。在编写程序时,可以使用像素点遍历、直方图均衡、CLAHE等方法来实现亮度和对比度的调整。