矩形滤波

 在图像处理中,经常要做矩形平滑滤波或其它操作,要用到模板运算。其中可能会遇到窗口的求和问题。

  对每个窗口都要求和,然后求均值,而且是对每个像素点进行遍历,当然是个费时的过程。一般的操作可能是这样的:

sum=0;
     for(i=0;i<w;i++)
     {
      for(j=0;j<w;j++)
      {
       sum+=Array[m+i][n+j];
      }
     }
     mean=sum/(w*w);


 

其中Array是图像的灰度矩阵,w是窗口的大小(w*w)。后来因为在特征提取的过程中用的时间太长了,于是思考如何减小这些特征提取的时间(在w比较大时)。窗口在滑动的过程中,只是改变了一部分数据,即前面出去了一列,后面进来了一列。如果保存原来的和,只加减这两部分,可以减小很多求加运算的循环。就改成了下面的代码:只在第一次求一个总和,后面就在前面的基础上求两列的和,再加减就行了。

for(m=0;m<m_Height;m++)
{
    for(n=0;n<m_Width;n++)
    {
     if(n==0)
     {
      sum=0;
      for(i=0;i<w;i++)
      {
          for(j=0;j<w;j++)
       {
           sum+=Array[m+i][n+j];
       }
      }
     }
     else
     {
      a=b=0;
      for(i=0;i<w;i++)
      {
       a+=Array[m+i][n+w-1];
       b+=Array[m+i][n-1];
      }
      sum=sum+a-b;
     }
     mean=sum/(w*w);

}

}

 

开始我还为自己的发现欣喜不已,后来无意之中看到有文献已经讨论了该问题,而且研究了更一般的情况。不过是哪篇文献,自己也记不清了。现在有如此多的研究工作者,有些非常的细节的问题都被研究到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值