均值濾波器 ( Mean Filter ) C++ 實現

本文介绍了均值滤波器的工作原理,通过取3x3区域像素的平均值来平滑图像,降低图像的锐度,使图像看起来更自然。示例展示了在椒盐噪声图像上的应用,但效果有限。提供了一个简单的C++实现,用于从受噪声污染的图像中去除噪声。
摘要由CSDN通过智能技术生成
http://blog.csdn.net/cay22/article/details/5546346 

均值濾波器 ( Mean Filter ) C++ 實現

均值濾波器是 「把每個像素都用周圍的8個像素來做均值操作」, 比如說這裡有一個例子:

非常明顯的, 這個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%,從均值的效果來看的話, 我可以說幾乎沒有用,其實直觀的想也可以判斷, 因為這裡的處理並沒有剔除這些噪聲點, 而只是微弱地降低了噪聲,所以效果可以想見的。。

 

view plaincopy to clipboardprint?

/** 

** method to remove noise from the corrupted image by mean 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 meanFilter (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++)  

        {  

            smooth [ j*width+i ] = (corrupted [ (j-1)*width+(i-1) ] + corrupted [ (j-1)*width+i] +

corrupted [ (j-1)*width+(i+1) ] + corrupted [ j*width+(i-1) ] +

corrupted [ j*width+i] + corrupted [ j*width+(i+1) ] +

corrupted [ (j+1)*width+(i-1) ] + corrupted [ (j+1)*width+i] +

corrupted [ (j+1)*width+(i+1) ] ) / 9;

        }

    }  

 

一般處理的時候通常還有邊界上的一些處理, 但是這裡就簡單的從1...width-1來處理, 所以第一個和最後一個像素就簡單的拋掉了, 如果只是簡單的看看效果還是沒有問題的!

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/hhygcy/archive/2009/07/06/4325304.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值