用 vc 实现的图像均值滤波代码的例子,需要的可以参考。其中 pImg 为灰度图像指针,输出均值滤波的 图像将覆盖原图像,iWidth 为图像的宽度,iHeight 为图像的高度,size 为均值滤波的模板大小。
数字图像中经常含有零均值的随机噪声,可以用均值滤波的方法进行降噪处理。均值滤波也称为线性滤 波,其采用的主要方法为领域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待 处理的当前像素点(x,y) ,选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值, 再把该均值赋予当前像素点(x,y) ,作为处理后图像在该点上的灰度 g(x,y) ,即 g(x,y)=1/m ∑f (x,y) ,其中 m 为该模板中包含当前像素在内的像素总个数。
void AverageFilter(IMG_DATATYPE *pImg,int iWidth,int iHeight,int size) { IMG_DATATYPE *pSrc = NULL; pSrc = new IMG_DATATYPE[iWidth * iHeight]; int i,j,x,y,sum;
if(pImg == NULL || pSrc == NULL || iWidth <= 0 || iHeight <= 0) return;
for(i=0;i
= 0 &;&; i + x < iHeight &;&; j + y >= 0 &;&; j + y < iWidth) sum += pImg[(i + x) * iWidth + (j + y)];
}
pSrc[i * iWidth + j] = sum / (size * size); } }
memcpy(pImg, pSrc, iWidth * iHeight * sizeof(IMG_DATATYPE));
delete[] pSrc; }