PhotoShop算法实现--对比度增强(三)
http://blog.csdn.net/kezunhai
假设有一副图像,成像时光照不足,使得整幅图像变暗,或者成像时光照国强,使得整幅图像偏亮,这些情况就称为低对比度,即颜色挤在一起,没有拉开。对比度调整就是使图像的颜色更符合人们的需要,以实现一些效果。通常采用对比度增强,把感兴趣的颜色范围拉开,使得该范围内的像素,亮的越亮,暗的越暗,从而达到对比度增强的目的。
实现原理:根据用户指定的一个对比度,分别与原始R、G、B色彩分量进行一定比例的缩放,从而拉开原色色彩亮度级别的分布,达到对比度增强的作用。
实现代码:
void PhotoShop::Contrast(Mat& img, Mat& bImg, int degree)
{
if ( bImg.empty())
bImg.create(img.rows, img.cols, img.type());
bImg = cv::Scalar::all(0);
int i, j;
Size size = img.size();
int chns = img.channels();
if (img.isContinuous() && bImg.isContinuous())
{
size.width *= size.height;
size.height = 1;
}
// 验证参数范围
if ( degree<-100) degree = -100;
if ( degree> 100) degree = 100;
double contrast = (100.0+degree)/100.0;
contrast *= contrast;
for ( i= 0; i(((src[j*chns]/255.0 -0.5)*contrast +0.5)*255);
dst[j*chns+1] = saturate_cast(((src[j*chns+1]/255.0 -0.5)*contrast +0.5)*255);
dst[j*chns+2] = saturate_cast(((src[j*chns+2]/255.0 -0.5)*contrast +0.5)*255);
}
}
}
实现效果:
作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。