赞
踩
一、理论基础
在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式:
在图像像素中其中:
参数f(x)表示源图像像素。
参数g(x) 表示输出图像像素。
参数a(需要满足a>0)被称为增益(gain),常常被用来控制图像的对比度。
参数b通常被称为偏置(bias),常常被用来控制图像的亮度。
二、获取图像像素
在opencv中图像数据是存放在Mat数据类型中,我们知道一个像素有rgb构成,所以Mat是个三维数组,一下就是简单的获取mat中图像像素。
//三个for循环,执行运算 new_image(i,j) =a*image(i,j) + b
for(int y = 0; y < image.rows; y++)
{for(int x = 0; x < image.cols; x++)
{for(int c = 0; c < 3; c++)
{
new_image.at(y,x)[c]= saturate_cast( (g_nContrastValue*0.01)*(image.at(y,x)[c] ) +g_nBrightValue );
}
}
}
上述代码中image.at(y,x)[c] 其中,y是像素所在的行, x是像素所在的列, c是R、G、B(对应0、1、2)其中之一。
saturate_cast为了安全转换
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。