【摘录】中值滤波器 ( Median Filter ) C++ 实现


http://blog.csdn.net/hhygcy/archive/2009/07/06/4325462.aspx

有了前面一个均值滤波器的基础, 在看中值滤波器就不是很容易继续了。均值滤波是像素周围的33的像素做平均值操作, 那么中值就是在33中的像素中寻找中值。 来看这样一个描述图(无图无真相)

【摘录】中值滤波器 ( Median Filter ) C++ 实现

这把可以清晰地看到, 这里有6,2,0,3,97,4,19,3,10这些像素, 然后中间的这些像素值就被这些像素的中位数也就是中值取代了。为了满足和前面一篇文章的格式相对应, 我们马上进入下一个单元, 来看看在平滑和降噪方面的功效!

原图1 中值滤波之后

【摘录】中值滤波器 ( Median Filter ) C++ 实现 【摘录】中值滤波器 ( Median Filter ) C++ 实现

噪声图(5%) 中值滤波后:

【摘录】中值滤波器 ( Median Filter ) C++ 实现 【摘录】中值滤波器 ( Median Filter ) C++ 实现

非常impressive的一点在这里就可以看出来了, 很明显中值滤波不仅是图像变得平滑,同时去除了椒盐噪声(图像最外圈的像素没有去除掉只是因为我没有从0-width处理而已)。从这里中值的逻辑来看, 我们做中值操作的时候, 那么白色(255)和黑色(0)因为是最大最小值, 除非周围的颜色都是黑色或者白色,不然一般都会被剔除掉, 这就是和均值最大的不同! 所以在效果上要好很多。一般来说这个中值滤波是去除椒盐噪声的非常理想的选择。

一样的,最后还是贴一段我运行的代码:

view plaincopy to clipboardprint?
1. /
2.
method to remove noise from the corrupted image by median value
3. @param corrupted input grayscale binary array with corrupted info
4.
@param smooth output data for smooth result, the memory need to be allocated outside of the function
5. @param width width of the input grayscale image
6.
@param height height of the input grayscale image
7. /
8. voidmedianFilter (unsignedchar
corrupted, unsignedchar smooth,intwidth,intheight)
9. {
10.
11. memcpy ( smooth, corrupted, width
heightsizeof(unsignedchar) );
12. for(intj=1;j<height-1;j++)
13. {
14. for(inti=1;i<width-1;i++)
15. {
16. intk = 0;
17. unsignedcharwindow[9];
18. for(intjj = j - 1; jj < j + 2; ++jj)
19. for(intii = i - 1; ii < i + 2; ++ii)
20. window[k++] = corrupted[jj * width + ii];
21. // Order elements (only half of them)
22. for(intm = 0; m < 5; ++m)
23. {
24. intmin = m;
25. for(intn = m + 1; n < 9; ++n)
26. if(window[n] < window[min])
27. min = n;
28. // Put found minimum element in its place
29. unsignedchartemp = window[m];
30. window[m] = window[min];
31. window[min] = temp;
32. }
33. smooth[ j
width+i ] = window[4];
34. }
35. }
36. }

原文链接: https://www.cnblogs.com/IamEasy_Man/archive/2010/08/17/1801480.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/13950

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午1:25
下一篇 2023年2月7日 下午1:25

相关推荐