码迷,mamicode.com
首页 > 其他好文 > 详细

快速均值滤波

时间:2014-07-23 00:25:48      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:文章   滤波   

参考任明武老师的文章,把均值滤波以模板形式实现,真是很快
bubuko.com,布布扣
对于500*376的图像,以大小15的半径做的滤波,速度竟然3个毫秒。如果代码有不足之处,希望批评。
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣


代码:
template<typename M,typename N>
void meanFilter(M* data,N* outputData,int width,int height,int r)
{
    assert(data!=NULL);
    int i,j,k;
    int block=(r<<1)+1;
    int winSize=block*block;
    double sum;
    double* temp=(double*)calloc(width,sizeof(double));
    for (k=0;k<block;k++)
    {
        M* data_ptr=data+k*width;
        for (j=0;j<width;j++)
        {
            temp[j]+=data_ptr[j];
        }
    }
    for (i=r;i<height-r;i++)
    {
        sum=0;
        N* ave_ptr=outputData+i*width;
        for (j=0;j<block;j++)
        {
            sum+=temp[j];
        }
        for (j=r;j<width-r;j++)
        {
            ave_ptr[j]=sum/winSize;
            if(j<width-r-1)
                sum=sum-temp[j-r]+temp[j+r+1];
        }
        if (i<height-r-1)
        {
            M* data_ptr1=data+(i-r)*width;
            M* data_ptr2=data+(i+r+1)*width;
            for(k=0;k<width;k++)
            {
                temp[k]=temp[k]-data_ptr1[k]+data_ptr2[k];
            }
        }
    }
    free(temp);
}

快速均值滤波

标签:文章   滤波   

原文地址:http://4410175.blog.51cto.com/4400175/1441464

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!