参考任明武老师的文章,把均值滤波以模板形式实现,真是很快
对于500*376的图像,以大小15的半径做的滤波,速度竟然3个毫秒。如果代码有不足之处,希望批评。
代码:
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);
}
快速均值滤波
原创
©著作权归作者所有:来自51CTO博客作者12小子的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:MinFilter算法的快速实现
下一篇:我的友情链接
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java集合的组内平均值怎么计算
java集合的组内平均值怎么计算
List Java API -
Python计算多个Excel文件数据的平均值
本文介绍基于Python语言,对大量不同的Excel文件加以跨文件、逐单元格平均值计算的方法~
Python Excel 平均值 跨文件平均值 平均数 -
图像 均值滤波 图像均值滤波处理
图像的平滑处理 图像的平滑处理一般用于模糊处理和减
图像 均值滤波 人工智能 均值滤波 高斯滤波 中值滤波