📜  亮度和对比度(1)

📅  最后修改于: 2023-12-03 15:36:07.276000             🧑  作者: Mango

亮度和对比度

概述

亮度和对比度是图像处理中常用的两个参数。亮度指图像整体的明暗度,对比度指黑白之间的差异程度。通过调整亮度和对比度,可以使图像更加清晰鲜明,也可以达到调整色彩效果的目的。

实现方法

在程序中实现亮度和对比度的调整,可以采用以下方法:

1. 像素点遍历

对于每个像素点,根据公式将像素值进行调整。

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))
2. 直方图均衡

对图像进行直方图均衡,可以改善图像的亮度和对比度效果。

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)
3. CLAHE

自适应直方图均衡化(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等方法来实现亮度和对比度的调整。