高斯平滑算法原理与设计

算法思想

      在介绍高斯平滑前,先介绍模板操作。模板操作是数字图像处理中经常用到的一种运算方法,图像的平滑、锐化以及细化、边缘检测都要用到模板操作。例如:有一种常见的平滑算法是将原图中一个像素的灰度值和它周围邻近八个像素的灰度值相加,然后求得的平均值(除以9)作为新图中该像素的灰度值,用如下方法来表示该操作:

   

                      1    1     1

1/9      

                      1    1·    1

                       1    1    1   

上式类似于矩阵,我们通常称之为模板。中间的黑点表示该元素中心元素,即该个元素是要进行处理的元素。如果模板是:

1·    1    1

1/9   1    1     1

1    1     1

则该操作应该描述为:将原图中一个像素的灰度值和它右下邻近的8个像素的灰度值相加,然后将求得的平均值9(除以9)作为新图中该像素的灰度值。如果模板为     2.   ,

  1

则表示将自身灰度值的2倍加下边的元素灰度值作为新值,而    2     则表示将自身

                                                          1.

灰度值加上边元素灰度值的2倍作为新灰度值。通常模板不允许移出边界,所以处理后的图像会比原图小,例如:当模板是  1. 0   原图灰度值矩阵是  1  1  1  1  1   

                                  0   2                     2  2  2  2  2

                                                            3  3  3  3  3                

                                                            4  4  4  4  4                              

  时,经过模板操作后的图像为  5   5   5   5  -

                              8   8   8   8  -                      

                              11  11  11  11 -                

                              -   -   -   -  -                    

“-”表示边界上无法进行模板操作的点,一般的做法是复制原图的灰度值,不再进行任何其他的处理。模板操作实现了一种领域运算,即某个像素点的结果不仅和本像素灰度有关,而且和其领域点的值有关。下面对平滑的用途和解决方法进行详细介绍。

在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量。处理噪声点的过程称之为平滑,平滑可以降低图像的视觉噪声,同时除去图像中的高频部分后,那些本来不明显的低频成分更容易识别。而噪声点一般是孤

立的点,噪声点的像素灰度与它们的近邻像素有显著的区别,即灰度变化总在这附近有突变高频。平滑可用卷积来实现,平滑的频率截止点由卷积核的大小及卷积系数决定。用于平滑滤波的卷积核叫做低通过滤波器,低通过滤波器具有如下的特征:1卷积核的行、列数为奇数,通常为3×3的矩阵;2卷积系数以中心点为中心对称分布;3所有的卷积系数都为正数;4距离中心较远的卷积系数的值较小或保持不变;5卷积后的结果不改变图像的亮度。经过卷积平滑后给随后的水平投影、二值化提供了较好的图像效果。水平投影的曲线显得比较平滑,二值化后的图像孤立点比较少。以下是几个常用的卷积核:

1/9   1/9   1/9               1/10   1/10  1/10        1/16  2/16  1/16

1/9   1/9   1/9               1/10   1/5   1/10        2/16  4/16  2/16

1/9   1/9   1/9               1/10   1/10  1/10        1/16  2/16  1/16

L P1                           LP2                       LP3

通常的处理是:将中心点周围八个点的像素值乘于各自矩阵相应的系数后相加得到一个值,然后将这个值乘上中心点的系数,中心点的像素值赋为得到的最后值。一般来说,不同的噪声有各自针对性的卷积算法。本文使用的卷积算法是高斯卷积核,亦即上面卷积核的LP3。高斯卷积是通过采样2维高斯函数得到的。高斯平滑算法的优点是平滑后图像的失真少,算法更具备通用性,能去除不同的噪声干扰。需要注意的是:在平滑处理时,图像边界点无法处理,因此循环范围应设定在图像边界内。

(2) 具体实现高斯平滑功能

知道高斯平滑原理之后,可进行编码将其实现:

      •    编辑菜单IDR_MAINFRAM,在菜单“预处理”中添加一子菜单项,命名为“高斯平滑”并将其ID设为ID_READY_Template。
      •    在类CFaceDetectView中添加“高斯平滑”菜单项的事件处理程序,其代码如下:

           //进行模板操作

          Template(tem ,3,3, xishu); 

        Invalidate(TRUE);   

其中tem是模板参数,xishu是模板系数;Template()函数是实现高斯平滑的主要函数,其核心代码是:

          for(m=i-((tem_h-1)/2);m<=i+((tem_h-1)/2);m++)

          {

     for(n=j-((tem_w-1)/2);n<=j+((tem_w-1)/2);n++)

    

            注:  将以点(i,j)为中心,与模板大小相同的范围内的象素与模板对用位置的系数进行相乘并线形叠加  

      sum+=Gray[m][n]* tem[(m-i+((tem_h-1)/2))*tem_w+n-j+((tem_w-1)/2)];

   }          

    将结果乘上总的模板系数

          sum=(int)sum*xishu;

   计算绝对值

   sum = fabs(sum);

   如果小于0,强制赋值为0

          if(sum<0)     

          sum=0;

   如果大于255,强制赋值为255

          if(sum>255)

   sum=255;

          HeightTemplate[i][j]  =  sum;

      •    高斯平滑效果图:见下图 4-4

图4-4  高斯平滑效果图

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值