在OpenCV裡實現高斯差分(DoG)變換

2021-09-27 21:17:06 字數 430 閱讀 9108

difference of gaussian(dog)是高斯函式的差分。它是可以通過將影象與高斯函式進行卷積得到一幅影象的低通濾波結果,即去噪過程,這裡的gaussian和高斯低通濾波器的高斯一樣,是乙個函式,即為正態分佈函式。同時,它對高斯拉普拉斯log的近似,在某一尺度上的特徵檢測可以通過對兩個相鄰高斯尺度空間的影象相減,得到dog的響應值影象。

高斯差分核是兩個非歸一化的高斯核的差,已知高斯核是可分離的,所以真正實現時,只要將影象與兩個卷積核進行卷積,然後做差即可。

高斯平滑函式如下:

兩次平滑的差如下:

在OpenCV裡實現高斯平滑1

在前面複習了卷積的運算,以及使用python裡的函式進行計算卷積,理解到卷積的過程,其實在影象裡就是其中一點畫素值可以與它周圍的畫素值進行加權求和,這就意味著輸出的畫素值是作為平均計算,因此該點的畫素值由這點和這點周圍的畫素來決定了。理論上怎麼樣推導,怎麼樣計算,可以先放下來,首要的問題是先來感覺一...

在OpenCV裡實現高斯平滑4

上面通過 構造了高斯運算元,並且使用二維的卷積運算來平滑影象,也達到了目標,不過還有乙個問題,就是當你處理比較大的,或者比較大的高斯矩陣時,就會發現計算的時間很長。這時候我們就要考慮有沒有高效快速的演算法了,再回過頭來審視一下二維高斯函式 可以看到最後的等式,再考慮指數的運算法則 根據 1 指數運算...

在OpenCV裡實現高斯平滑5

基於可分離的高斯矩陣的卷積,並且計算量還少,那麼opencv也提供了相應的函式getgaussiankernel來計算高斯平滑,這個函式主要用來計算一維垂直方向的高斯卷積核,它的定義如下 retval cv.getgaussiankernel ksize,sigma ktype 其中引數ksize是...