中值滤波器 ( Median Filter ) C++ 实现
来源:互联网 发布:java中的volatile 编辑:程序博客网 时间:2024/04/28 02:52
中值滤波器 ( Median Filter ) C++ 实现
有了前面一个均值滤波器 的基础, 在看中值滤波器就不是很容易继续了。均值滤波是像素周围的3*3的像素做平均值操作, 那么中值就是在3*3中的像素中寻找中值。 来看这样一个描述图(无图无真相)
这把可以清晰地看到, 这里有6,2,0,3,97,4,19,3,10这些像素, 然后中间的这些像素值就被这些像素的中位数也就是中值取代了。为了满足和前面一篇文章的格式相对应, 我们马上进入下一个单元, 来看看在平滑和降噪方面的功效!
原图1 中值滤波之后
噪声图(5%) 中值滤波后:
非常impressive的一点在这里就可以看出来了, 很明显中值滤波不仅是图像变得平滑,同时去除了椒盐噪声(图像最外圈的像素没有去除掉只是因为我没有从0-width处理而已)。从这里中值的逻辑来看, 我们做中值操作的时候, 那么白色(255)和黑色(0)因为是最大最小值, 除非周围的颜色都是黑色或者白色,不然一般都会被剔除掉, 这就是和均值最大的不同! 所以在效果上要好很多。一般来说这个中值滤波是去除椒盐噪声的非常理想的选择。
一样的,最后还是贴一段我运行的代码:
view plaincopy to clipboardprint? /** ** method to remove noise from the corrupted image by median value * @param corrupted input grayscale binary array with corrupted info * @param smooth output data for smooth result, the memory need to be allocated outside of the function * @param width width of the input grayscale image * @param height height of the input grayscale image */ void medianFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height) { memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) ); // 内存拷贝 for (int j=1;j<height-1;j++) { for (int i=1;i<width-1;i++) { int k = 0; unsigned char window[9]; // for (int jj = j - 1; jj < j + 2; ++jj) for (int ii = i - 1; ii < i + 2; ++ii) window[k++] = corrupted[jj * width + ii]; // Order elements (only half of them) // 找中值 for (int m = 0; m < 5; ++m) { int min = m; for (int n = m + 1; n < 9; ++n) if (window[n] < window[min]) min = n; // Put found minimum element in its place unsigned char temp = window[m]; window[m] = window[min]; window[min] = temp; } // 从这里知道, 图像中的每一个像素都经过这样的处理(四条边没有) smooth[ j*width+i ] = window[4]; } } }
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hhygcy/archive/2009/07/06/4325462.aspx
- 中值滤波器 ( Median Filter ) C++ 实现
- 中值滤波器 ( Median Filter ) C++ 实现
- 中值滤波器 ( Median Filter ) C++ 实现
- 中值滤波器 ( Median Filter ) C++ 实现
- 中值滤波器 ( Median Filter ) C++ 实现
- 中值滤波器 ( Median Filter ) C++ 实现[转]
- 中值滤波器 ( Median Filter ) C++ 实现
- 混合中值滤波器 ( Hybrid Median Filter ) C++ 实现
- 混合中值滤波器 ( Hybrid Median Filter ) C++ 实现
- 中值滤波器(Median filter)特性及其实现
- 图像处理滤波器(二)——中值滤波器(Median Filter)
- 中值滤波(Median Filter)
- opencv实现中值滤波器
- 中值濾波器 ( Median Filter ) C++ 實現
- 均值滤波器与中值滤波器的实现
- FPGA的中值滤波器实现
- matlab中滤波器函数filter的C语言实现
- 中值滤波器
- C++的输入输出流、文件操作
- TCP协议通讯工作原理
- 【转】 Oracle group by及其若干相关函数的一些说明
- symbian DrawText时需要注意,设置字体
- 报到了
- 中值滤波器 ( Median Filter ) C++ 实现
- 学习JAVA的朋友进来帮忙
- 7.8 进程环境_存储器分配
- css在不同浏览器中的写法-----------
- 让vs2008支持GNU ToolChain
- Ubuntu 10.04 下安装Eclipse-CDT
- 创建Oracle数据库索引的三个标准
- Linux无线网卡配置
- mysql中的时间运算