cvSmooth 用法及介紹

Smooth

各種方法的圖像平滑

void cvSmooth( const CvArr* src, CvArr* dst,
               int smoothtype=CV_GAUSSIAN,
               int param1=3, int param2=0, double param3=0 );

 

src
輸入圖像.
dst
輸出圖像.
smoothtype
平滑方法:
  • CV_BLUR_NO_SCALE (簡單不帶尺度變換的模糊) - 對每個象素領域 param1×param2 求和。如果鄰域大小是變化的,可以事先利用函數 cvIntegral 計算積分圖像。
  • CV_BLUR (simple blur) - 對每個象素鄰域 param1×param2 求和並做尺度變換 1/(param1param2).
  • CV_GAUSSIAN (gaussian blur) - 對圖像進行核大小爲 param1×param2 的高斯卷積
  • CV_MEDIAN (median blur) - 發現鄰域 param1×param1 的中值 (i.e. 鄰域是方的).
  • CV_BILATERAL (雙濾波) - 應用雙向 3x3 濾波,彩色 sigma=param1,空間 sigma=param2. 關於雙向濾波,可參考http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html
param1
平滑操作的第一個參數.
param2
平滑操作的第二個參數. param2 爲零對應簡單的尺度變換和高斯模糊。
param3
對應高斯參數的 Gaussian sigma (標準差). 如果爲零,這由下面的核尺寸計算:
sigma = (n/2 - 1)*0.3 + 0.8, 其中 n=param1 對應水平核,
                                                n=param2 對應垂直核.
對小的卷積核 (3×3 to 7×7) 使用標準 sigma 速度會快。如果 param3 不爲零,而 param1 和 param2 爲零,則核大小有 sigma 計算 (以保證足夠精確的操作).

函數 cvSmooth 可使用上面任何一種方法平滑圖像。每一種方法都有自己的特點以及侷限。

沒有縮放的圖像平滑僅支持單通道圖像,並且支持8位、16位、32位和32位浮點格式。

簡單模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特 浮點圖像。這兩種方法可以(in-place)方式處理圖像。

中值和雙向濾波工作於 1- 或 3-通道, 8-位圖像,但是不能以 in-place 方式處理圖像.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章