cvsmooth平滑處理函數


一、圖像處理之平滑處理(cvsmooth)

平滑處理(smoothing)也稱模糊處理(bluring),是一項簡單且使用頻率很高的圖像處理方法,用途很多,但最常見的是用來減少圖像上的噪點或者失真。降低圖像分辨率時,平滑處理是非常好用的方法。

目前opencv可以提供5中不同的平滑操作方法,所有操作都有cvsmooth函數實現。

1 void cvSmooth( const CvArr* src, 
2                CvArr* dst,
3                int smoothtype=CV_GAUSSIAN,
4                int param1=3, 
5                int param2=0, 
6                double param3=0 ,
7                double param4=0);

src:輸入圖像

dst:輸出圖像

smoothtype:平滑方法
(1)CV_BLUR_NO_SCALE (簡單不帶尺度變換的模糊)---對每個象素的 param1×param2 領域求和。如果鄰域大小是變化的,可以事先利用函數 cvIntegral 計算積分圖像。
(2)CV_BLUR (simple blur簡單模糊)---對每個象素param1×param2鄰域 求和並做尺度變換 1/(param1*param2)。
(3)CV_GAUSSIAN (gaussian blur高斯濾波)---對圖像進行核大小為 param1×param2 的高斯卷積
(4)CV_MEDIAN (median blur中值濾波)---對圖像進行核大小為param1×param1 的中值濾波(i.e. 鄰域是方的)。
(5)CV_BILATERAL (雙向濾波/雙邊濾波)---應用核大小為param1×param1的濾波,彩色sigma=param3,空間 sigma=param4。

param1
平滑操作的第一個參數,一般為卷積核的水平方向直徑(選擇CV_GAUSSIAN平滑時必須為奇數,否則會觸發assert錯誤)。
param2
平滑操作的第二個參數,對於簡單/非尺度變換的高斯模糊的情況,如果param2的值為零,則表示其被設定為param1。
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 計算 (以保證足夠精確的操作)。
param4
除CV_BILATERAL外均可以不指定該參數。CV_GAUSSIAN 模式下可以用來指定水平和垂直方向兩個不同的sigma,如果<=0則param4=param3。

 

 

注意:中值濾波主要用來消除椒鹽噪聲,高斯濾波主要用來消除高斯噪聲,自然界一般存在高斯噪聲。


二、圖像濾波
圖像濾波,指在盡量保留圖像細節特征的條件下對目標圖像的噪聲進行抑制,是圖像預處理中不可缺少的操作,其處理效果的好壞將直接影響到后續圖像處理和分析的有效性和可靠性。

消除圖像中噪聲成分叫做圖像的平滑化或濾波操作。信號或圖像的能量大部分集中在幅度譜的低頻和中頻段,而在較高頻段,有用的信息經常被噪聲淹沒,因此一個能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM