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

來源:互聯網
上載者:User

原來是不做影像處理這塊的, 所以對這裡的專用名字不是特別感冒, 濾波器聽來玄而又玄。真正拿來看了之後就不過爾爾了, 這把拿了一個均值濾波器的例子來做記錄, 希望可以依次把一些median filter, gaussian blur都拿來說說。

好吧言歸正傳, 這裡就具體說說均值濾波器是什麼東西吧。其實這個東西就是在影像處理的時候, “把每個像素都用周圍的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%,從均值的效果來看的話, 我可以說幾乎沒有用,其實直觀的想也可以判斷, 因為這裡的處理並沒有剔除這些雜訊點, 而只是微弱地降低了雜訊,所以效果可以想見的。。

好吧, 最後的時候還是貼上一段處理的代碼:

/**<br />** method to remove noise from the corrupted image by mean value<br />* @param corrupted input grayscale binary array with corrupted info<br />* @param smooth output data for smooth result, the memory need to be allocated outside of the function<br />* @param width width of the input grayscale image<br />* @param height height of the input grayscale image<br />*/<br />void meanFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)<br />{</p><p>memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );</p><p>for (int j=1;j<height-1;j++)<br />{<br />for (int i=1;i<width-1;i++)<br />{<br />smooth [ j*width+i ] = (corrupted [ (j-1)*width+(i-1) ] + corrupted [ (j-1)*width+i] + corrupted [ (j-1)*width+(i+1) ] +<br />corrupted [ j*width+(i-1) ]+ corrupted [ j*width+i] + corrupted [ j*width+(i+1) ] +<br />corrupted [ (j+1)*width+(i-1) ] + corrupted [ (j+1)*width+i] + corrupted [ (j+1)*width+(i+1) ] ) / 9;<br />}<br />}<br />}

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.