上次提到产生高斯噪声的算法,我们知道,椒盐噪声是可以通过中值滤波来修复的,高斯噪声也可以通过均值滤波来还原。
顾名思义,均值滤波也是构建一个 n*n 的模板,然后取其平均值来替代模板中间的值。这样做出的效果明显不如用中值滤波修复椒盐噪声的效果好,不过当 n 取很大值的时候,图片看起来像是高斯模糊,不知道是不是一个原理……
看效果,n=3 时:
n=11 时:
算法更加简单,有以前的基础不成问题:
BmpPixmap &
BmpPixmap::mean_filter (int n)
{
assert (n >= 3 && n % 2);
int ii, jj, nn, sum [3];
BmpPixmap *temp = new BmpPixmap (*this);
for (i = n / 2; i < height - n / 2; i++) {
for (j = n / 2; j < width - n / 2; j++) {
for (nn = 0; nn < 3; nn++) {
sum [nn] = 0;
}
/*-----------------------------------------------------------------------------
* Calculate the average of the model.
*-----------------------------------------------------------------------------*/
for (ii = i - n / 2, nn = 0; ii <= i + n / 2; ii++) {
for (jj = j - n / 2; jj <= j + n / 2; jj++, nn++) {
sum [0] += pdata [ii][jj]->get_blue ();
sum [1] += pdata [ii][jj]->get_green ();
sum [2] += pdata [ii][jj]->get_red ();
}
}
temp->pdata [i][j]->set (sum [0] / (n * n), sum [1] / (n * n), sum [2] / (n * n));
}
}
return *temp;
} /* ----- end of method BmpPixmap::mean_filter ----- */
转载请注明:转自K.I.S.S. – 简单哲学 – 数字图像处理(四)——均值滤波
Related posts:





最新评论
博客不错 加油
学习LZ好榜样哟
如果再给我一次机会我会说我爱
过来学习下·······
博主的文章很棒,支持! ht
文章很不错 值得学习 呵呵
好文章!值得一看
很不错的,顶一下下
很少关注