伽马变换

伽马变换可以调整图像亮暗

经过Gamma变换后的输入和输出图像灰度值关系如图所示:横坐标是输入灰度值,纵坐标是输出灰度值,蓝色曲线是gamma值小于1时的输入输出关系,红色曲线是gamma值大于1时的输入输出关系。可以观察到,当gamma值小于1时(蓝色曲线),图像的整体亮度值得到提升,同时低灰度处的对比度得到增加,更利于分辩低灰度值时的图像细节。

import cv2
import time
import numpy as np

def main():
    # Open the image.
    img = cv2.imread('1.png')

    def gamma_f1(img, gamma=0.5):
        gamma_corrected = np.array(255 * np.power((img / 255), gamma), dtype='uint8')
        return gamma_corrected

    def gamma_f2(img, gamma=2.0):
        table = np.power(np.arange(256) / 255.0, gamma) * 255
        gamma_corrected = cv2.LUT(img, table.astype(np.uint8))
        return gamma_corrected

    start = time.perf_counter()
    img_gamma1 = gamma_f1(img)
    print(time.perf_counter() - start)
    cv2.imwrite('img_gamma1.png', img_gamma1)

    start = time.perf_counter()
    img_gamma2 = gamma_f2(img)
    print(time.perf_counter() - start)
    cv2.imwrite('img_gamma2.png', img_gamma2)

if __name__ == "__main__":
    main()
Last modification:July 13, 2023
如果觉得我的文章对你有用,请随意赞赏