Smooth 函式 平滑處理函式 OpenCV

NO IMAGE

OpenCV 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 (雙濾波) – 應用雙向 3×3 濾波,彩色 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 方式處理影象.

 

轉自:http://blog.sina.com.cn/s/blog_61c2cbe90100k6pv.html