基于局部均方差的图像局部对比度增强算法

基于局部均方差的图像局部对比度增强算法

1.基于局部均方差增强原理

      我们知道图像的高频部分代表的是图像中类似边缘的高频分量;底频部分代表的是图像中较为平坦的部分。假若用原始图像减去图像中低频部分的,那么得到的就是图像的高频分量。这个方法和直接把原始图像通过高通滤波的方式得到的图像相一致,最后都是得到图像的高频部分。而这一部分我们可以适当的进行增强,是图像变得较为清晰。但是需要控制高频增强的程度,否则会带来溢出的效果或者导致图像一些部分不平滑,出现褶皱。

     如何获取高频增强系数是最为关键的步骤。假设一幅M*N大小的灰度图像,窗口大小为(2*n+1)(2*m+1),则我们可以计算图像的局部平均值作为图像的低频分量:


    局部方差为:

   定义输出图像f(I,j)为增强之后的图像,其增强算法表示为:

   G(i,j)为增强控制系数。X(i,j)-m(i,j)为高频分量。最简单的增强系数即设定为常量C。即

   C>1,当一般不能太大,传统值为2或3..这种情况下高频部分都被同等放大,可能有些高频部分会出现过增强的现象的。

    为了避免出现过增强的现象,JONG-SEN LEE提出了一种改进的方法。如下公式所示:

     其增强系数与局部方差相关。局部方差较大,说明是图像的高频部分,增强系数比较小;局部方差较小,说明是图像的低频部分,增强系数比较大,引起了噪音的放大,所以需要对CG的最大值做一定的限制才能获得更好的效果。也即对图像的高频部分和低频部分做不同的处理,以达到图像的增强效果。D一般取整幅图像的平均值,也可以是全局均方值。

2.基于局部均方差增强代码实现

关键代码:

                GobalSum = 0;
		GobalMean = 0;
		GobalSum2 = 0;
		GobalVar = 0;
		for(x = 0; x< height;x++)
		{
			for(y = 0;y < width;y++)
			{
				index = x*lineByte+y;

				GobalSum += img_data[index];
				GobalSum2 += img_data[index]*img_data[index];
			}
		}

		GobalMean = GobalSum/(height*width);
		GobalVar = (GobalSum2-(GobalSum*GobalSum)/(width*height))/(height*width);



		for(x = SIZE/2; x< height-SIZE/2;x++)
		{
			for(y = SIZE/2;y < width-SIZE/2;y++)
			{
				Sum = 0;
				Mean = 0;
				Sum2 = 0;
				index = x*lineByte+y;
				for(i = -SIZE/2;i<= SIZE/2;i++)
				{
					for(j = -SIZE/2;j<=SIZE/2;j++)
					{
						Sum += img_data[index+i*lineByte+j];
						Sum2 += img_data[index+i*lineByte+j]*img_data[index+i*lineByte+j];
					}
				}
				Mean = Sum/size;
				Var = (Sum2-(Sum*Sum)/size)/size;

				CG = GobalVar/Var;
				if(CG > 4)
					CG = 4;
				img_data[index] = CLIP255((int)(Mean + (CG)*(img_data[index]- Mean)));
			}
		}

3.图像效果

 左侧图像为原始图像,右侧图像为增强系数CG=3时的结果。


参考资料:

http://www.cnblogs.com/Imageshop/p/3324282.html





  • 6
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值