采集的图像部分区域较亮,而部分区域较暗,需要进行亮度矫正来调整整个图片的亮度,使得整体亮度较为均匀。
传统Gamma函数亮度矫正
gamma校正原理

假设图像F中有一个像素A,值是 200 ,那么对这个像素进行校正必须执行如下步骤:
1.归一化 :将像素值转换为 0 ~ 1 之间的实数。 算法如下 : F/255 。对于像素 A 而言 , 其对应的归一化值为 0. 7843 。
2.预补偿 :求出gamma 值。这一步包含一个 求指数运算。若 gamma = 1 /2.2 = 0. 454545 , 对归一化后的 A 值进行预补偿的结果就 是 0. 7843 ^0. 454545 = 0. 8954 。
3.反归一化 :将经过预补偿的实数值反变换为 0 ~ 255 之间的整数值,即将预补偿的实数值乘以255。0.8954×255=228 , 这个 228 就是最后送 入显示器的数据。
即当 gamma<1时,输出图像变亮;当gamma >1时,输出图像变暗。
以下是python代码:
#-*-coding: UTF-8-*-
import numpy as np
import cv2
import math
from matplotlib import pyplot as plt
#import Recognise
#读取图片
img = cv2.imread('5.jpg')
#将原图片(RGB)转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#显示并保存
cv2.imshow('gray', gray)
cv2.imwrite('gray.jpg', gray)
#将灰度图做gamma校正运算
image = np.power(gray/255.0

文章介绍了如何使用传统Gamma函数进行图像亮度矫正,包括归一化、预补偿和反归一化过程。然后提出了一种快速算法,利用LUT(查找表)在已知像素值范围和gamma值的情况下提高校正效率。给出了Python和C++代码示例。
最低0.47元/天 解锁文章
9969





