使用亮度通道的平均值调整图像亮度和对比度

问题描述

我想使用此像素变换操作来调整图像的亮度和对比度:

g(i,j)=α* f(i,j)+β

其中 f(i,j)是原始BGR图像, g(i,j)是调整后的图像,而(i,j) 是像素索引。

显然可以使用Y'UV颜色空间(也称为YUV)中亮度通道(Y')的平均值来估算alpha和beta参数(又称为增益和偏差)。[1]

首先,我找到亮度通道的平均值:

import cv2
import numpy as np

bgr = cv2.imread('/original_image.png')

bgr_avgs = np.average(np.average(bgr,axis=0),axis=0) # find avg of each channel
y_coeffs = np.array([ 0.114,0.587,0.299 ]) # BGR
luma_avg = np.dot(y_coeffs,bgr_avgs)

然后我想从luma_avg计算alpha和beta来进行以下转换:

adjusted_img = cv2.convertScaleAbs(bgr,alpha=alpha,beta=beta)

我愿意使用其他方法。任何见解将不胜感激。

[1] El Harraj和Raissouni声称可以根据他们的论文OCR Accuracy Improvement on Dcoument Images Through a Novel Pre-Processing Approach,SIPIJ Vol.6,No.4 (Aug 2015)第7页最后一段中的平均亮度来估算alpha(增益)和beta(偏置)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)