全局亮度调整:
Im
,输入图像平均亮度:
Im=e(1M∗N∑Mx=1∑Ny=1log(I(x,y)+1))−1
//亮度均值 exp(x)
void CImagesQualityEvaluationToolDlg::OnBnClickedButton4()
{
/*if((image_in_1.rows != image_in_2.rows)||(image_in_1.cols != image_in_2.cols)
||(image_in_1.rows != image_in_2.rows)||(image_in_1.cols != image_in_2.cols))
{
CString str_Problem("图片1和2大小不一致");
GetDlgItem(IDC_EDIT1)->SetWindowText(str_Problem);
return;
}*/
//unsigned char***texture = NULL;
//texture=ZL_allocu_3(image_in_1.rows,image_in_1.cols,3); //allocate memory
double Img_b=0.,Img_g=0.,Img_r=0.;
double Img_bgr=0.,PSNR_b=0.,PSNR_g=0.,PSNR_r=0.,PSNR=0.;
for (int row = 0; row < image_in_1.rows; row++)
{
for (int col = 0; col < image_in_1.cols; col++)
{
Img_b += log((double)(*(image_in_1.data + image_in_1.step[0] * row + image_in_1.step[1] * col)) + 1.);
Img_g += log((double)(*(image_in_1.data + image_in_1.step[0] * row + image_in_1.step[1] * col + image_in_1.elemSize1())) + 1.);
Img_r += log((double)(*(image_in_1.data + image_in_1.step[0] * row + image_in_1.step[1] * col + image_in_1.elemSize1() * 2)) + 1.);
}
}
int WH = image_in_1.rows * image_in_1.cols;
Img_b = Img_b/WH;
Img_g = Img_g/WH;
Img_r = Img_r/WH;
Img_b = exp(Img_b) - 1;
Img_g = exp(Img_g) - 1;
Img_r = exp(Img_r) - 1;
Img_bgr = (Img_b+Img_g+Img_r)/3;
CString str_Img_bgr;
str_Img_bgr.Format("%f",Img_bgr);
GetDlgItem(IDC_EDIT5)->SetWindowText(str_Img_bgr);
}
s,缩放因子
s=k∗Im+b
k和b取值,代入
s=−4.3∗10−5∗Im+0.018
Iω
,白点参数
Iω=s∗Min(255,Ratio(I,0.8)∗1.25)
Iω=(−4.3∗10−5∗Im+0.018)∗Min(255,Ratio(I,0.8)∗1.25)
Is(x,y)=s∗I(x,y)
I′=Is1+Iγs∗(Iγ−1ω+IsI2ω)
I′=I∗s∗(Iγ−1ω+s∗II2ω)1+(s∗I)γ
全局调整因子:
f0(I)=s∗(Iγ−1ω+s∗II2ω)1+(s∗I)γ
Iabf,I
的自适应双边滤波结果
f0(I)=s∗(Iγ−1ω+s∗IabfI2ω)1+(s∗Iabf)γ
f0(I)=(−4.3∗10−5∗Im+0.018)∗(Iγ−1ω+(−4.3∗10−5∗Im+0.018)∗IabfI2ω)1+((−4.3∗10−5∗Im+0.018)∗Iabf)γ
参考文献:
1、《图像亮度的自动调整》
2、《图像和视频亮度的自动调整》 王 想1,郭延文13,杜振龙2,3,武港山1,张福炎1,彭群生2
(1.南京大学计算机软件新技术国家重点实验室,江苏南京210093;2.浙江大学CAD&CG国家重点实验室,浙江杭州310058;3.南京工业大学信息科学与工程学院,江苏南京210009)