影像雜訊去除— 中值濾波器(Median filter) - 電腦視覺- Medium

文章推薦指數: 80 %
投票人數:10人

影像雜訊去除— 中值濾波器(Median filter). 若雜訊的數值大於周遭像素非常多,平滑法的效果會變得很差,因為數值差距太大 ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWritePublishedin電腦視覺影像雜訊去除—中值濾波器(Medianfilter)若雜訊的數值大於周遭像素非常多,平滑法的效果會變得很差,因為數值差距太大,取均值降噪後仍會被視為雜訊。

這時改取中值(Median)代替,則可改善雜訊數據過於唐突的影響。

前言關於影像雜訊的議題,先前文章提到過「平滑法(Smoothingmethod)」,透過捲積(Convolution)的技巧讓遮罩(Mask)對局部影像取平均值之後取代中間像素。

這種作法如果遇到雜訊素質與周遭差異過大的情形,效果會變得很有限。

為了凸顯平滑法不適用的情況,接下來舉一個3*3影像做為例子。

中值濾波器(Mediumfilter)運算方式這個範例長這樣:與平滑法範例不同之處在於中間的數值與接鄰像素差異非常大,為了方便比較,這邊同時套用平滑法與中值濾波器的運算方式,再將結果並列顯示:這邊可以看到平滑法的響應值是:(5+6+2+3+208+3+1+4+2)/9=234/9=26所以右半邊的結果中間是26。

而中值濾波器的作法則是將Mask遮到的數據先做由小到大的排序:1,2,2,3,「3」,4,5,6,208接著直接對此數列取中值(Median)再取代中間數據,所以左半邊的結果中間是3。

透過這樣並列比較,可以直觀地看到數值差異過大時,中值濾波的效果比平滑法還要好。

接下來就透過實際圖片來呈現視覺上的效果。

中值濾波器(Mediumfilter)實作透過python的OpenCV可以用medianBlurfunction直接指定原始影像與Mask的大小,很快就能實作出結果:如果原圖是一般影像感覺不太出來Medianfilter的效果,為了凸顯Medianfilter的功能,我先把原圖隨機撒上40000個白色像素:再用相同大小的Mask同時做Medianfilter和Smoothingmethod,結果差異如下:結論平滑法因為是取Mask範圍內的平均值覆蓋中間像素,所以會把那些白噪融入了整張影像,因此整體變亮了,但因為灰階值差異大,處理過後仍隱約看得出白點的存在。

所以如果是處理點狀雜訊且數值差異大的情況,採用Medianfilter降噪的效果會比較好。

Sourcecode:Morefrom電腦視覺未來會從事與電腦視覺相關工作,在這邊紀錄研究所相關課程內容Readmorefrom電腦視覺AboutHelpTermsPrivacyGettheMediumappGetstartedKenHuang186Followers在網路上自學的過程中,體會到開放式資源的美好,希望藉由撰寫文章記錄研究所的學習過程,同時作為回饋網路世界的一種方式。

Email:[email protected],如果有任何問題都歡迎與我聯繫。

FollowHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?