首先讓我們一起領略medianBlur()函數的源碼,其於…opencvsourcesmodulesimgprocsrcsmooth.cpp的第1653行開始。
仔細閱讀源碼我們可以發現,正式進入濾波操作時,根據圖像不同的位深,我們會給medianBlur_SortNet函數模板取不同的模板類型值,或者調用medianBlur_8u_Om或medianBlur_8u_O1來進行操作。
上面我們剛說到,medianBlur_SortNet 是一個函數模板,其源碼於smooth.cpp的1439行開始,由於其函數體很長,我們在此只貼出它的函數聲明。
[cpp] view plain copy
另外,bilateralFilter函數的源碼也比較冗長,在D:Program Filesopencvsourcesmodulesimgprocsrcsmooth.cpp源碼文件中。
從1714行到2273行都是。我們在這裡只給出路徑,和一張概況圖,大家有興趣自己去看源代碼。
再提一點,smooth.cpp源碼的第2275行到2552行是OpenCV中自適應雙邊濾波器(adaptiveBilateralFilter)的源代碼,有興趣和精力的童鞋可以去探究探究。
medianBlur函數使用中值濾波器來平滑(模糊)處理一張圖片,從src輸入,而結果從dst輸出。
且對於多通道圖片,每一個通道都單獨進行處理,並且支持就地操作(In-placeoperation)。
參數詳解:
調用範例:
用上面三句核心代碼架起來的完整程序代碼:
運行效果圖(孔徑的線性尺寸為7):
3.2 雙邊濾波——bilateralFilter函數
用雙邊濾波器來處理一張圖片,由src輸入圖片,結果於dst輸出。
調用代碼示範如下:
用一個完整的示常式序把bilateralFilter函數熟悉一下:
運行效果圖:
四、綜合示例——在實戰中熟稔
依然是每篇文章都會配給大家的一個詳細注釋的博文配套示常式序,把這篇文章中介紹的知識點以代碼為載體,展現給大家。
這個示常式序中可以用軌跡條來控制各種濾波(方框濾波、均值濾波、高斯濾波、中值濾波、雙邊濾波)的參數值,通過滑動滾動條,就可以控制圖像在各種平滑處理下的模糊度,有一定的可玩性。廢話不多說,上代碼吧:
"
by淺墨";
放出一些效果圖。
原圖:
方框濾波(盒式濾波):
均值濾波:
高斯濾波:
中值濾波(參數調的有些猛,妹子完全面目全非- -):
雙邊濾波(和原圖差別不大,要仔細看才看得出效果):
OK,就放出這些吧,具體更多的運行效果大家就自己下載示常式序回去玩吧。
※模型試驗與非線性分析哪個更模擬?——楊博士每日一問匯總【貳】※非線性無源控制理論※對非線性科學的幾點思考
TAG:教程 | OpenCV | 入門教程 | 非線性 | 入門 |