PhotoShop算法实现--对比度增强(三)

本文详细介绍了如何使用Photoshop算法实现对比度增强,包括原理、代码实现及效果展示,帮助用户理解并应用对比度增强技术,提升图像质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         

PhotoShop算法实现--对比度增强(三)

kezunhai@gmail.com

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<size.height; ++i)
	{
		const unsigned char* src = (const unsigned char*)(img.data+ img.step*i);
		unsigned char* dst = (unsigned char*)bImg.data+bImg.step*i;
		for (  j=0; j<size.width; ++j)
		{			
			dst[j*chns] = saturate_cast<uchar>(((src[j*chns]/255.0 -0.5)*contrast +0.5)*255);
			dst[j*chns+1] = saturate_cast<uchar>(((src[j*chns+1]/255.0 -0.5)*contrast +0.5)*255);
			dst[j*chns+2] = saturate_cast<uchar>(((src[j*chns+2]/255.0 -0.5)*contrast +0.5)*255);			
		}
	}	
}
          实现效果:


作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值