我是靠谱客的博主 跳跃向日葵,最近开发中收集的这篇文章主要介绍均值滤波器 ( Mean Filter ) C++ 实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

具体说说均值滤波器是什么东西吧。其实这个东西就是在图像处理的时候, “把每个像素都用周围的8个像素来做均值操作 ”, 比如说这里有一个例子:

sample

图通常是最能说明问题的东西, 非常明显的, 这个3*3区域像素的颜色值分别是5,3,6,2,1,9,8,4,7那么中间的1这个像素的过滤后的值就是这些值的平均值, 也就是前面的计算方法: (5+3+6+2+1+9+8+4+7)/9=5

一目了然。那么这个均值滤波器有什么用处呢?

主要还是平滑图像的用处, 有的图像的锐度很高,用这样的均值算法,可以把锐度降低。使得图像看上去更加自然,下面就有几幅图我们可以看出一些端倪:

原图:                                                                          平滑处理之后:

这里还是可以明显的感觉到不同的, 没有好坏之分,就是第二幅图片看上去更为平滑。 继续我们的问题, 那这里均值平滑是否具有去除噪声的功能呢? 我们搞来了椒盐噪声(就是随机的白点,黑点)来试试手:

噪声图(5%):                                                         平滑处理之后:

首先这里的噪声还是比较小的, 只有5%,从均值的效果来看的话, 我可以说几乎没有用,其实直观的想也可以判断, 因为这里的处理并没有剔除这些噪声点, 而只是微弱地降低了噪声,所以效果可以想见的。。

好吧, 最后的时候还是贴上一段处理的代码:

[cpp] view plain copy print ?
  1. /** 
  2. ** method to remove noise from the corrupted image by mean 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. void meanFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)  
  9. {  
  10.       
  11.     memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );  
  12.       
  13.     for (int j=1;j<height-1;j++)  
  14.     {  
  15.         for (int i=1;i<width-1;i++)  
  16.         {  
  17.             smooth [ j*width+i ] = (    corrupted [ (j-1)*width+(i-1) ] + corrupted [ (j-1)*width+i] + corrupted [ (j-1)*width+(i+1) ] +  
  18.                                         corrupted [ j*width+(i-1) ]     + corrupted [ j*width+i]     + corrupted [ j*width+(i+1) ] +  
  19.                                         corrupted [ (j+1)*width+(i-1) ] + corrupted [ (j+1)*width+i] + corrupted [ (j+1)*width+(i+1) ] ) / 9;  
  20.         }  
  21.     }  
  22. }  

说明一下,一般处理的时候通常还有边界上的一些处理, 但是这里就简单的从1...width-1来处理, 所以第一个和最后一个像素就简单的抛掉了, 如果只是简单的看看效果还是没有问题的!

本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/hhygcy/article/details/4325304#comments

最后

以上就是跳跃向日葵为你收集整理的均值滤波器 ( Mean Filter ) C++ 实现的全部内容,希望文章能够帮你解决均值滤波器 ( Mean Filter ) C++ 实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部