在OpenCV裡實現高斯平滑6

2021-09-27 02:11:05 字數 582 閱讀 8504

前面可以看到使用分離的高斯卷積核來計算平滑更快,不過前面使用的卷積函式是採用scipy裡的,現在我們來採用opencv裡函式sepfilter2d來計算,它的定義如下:

dst=cv.sepfilter2d(src, ddepth, kernelx, kernely[, dst[, anchor[, delta[, bordertype]]]])

其中引數定義:

inputarray src:輸入影象

outputarray dst:輸出影象

int ddepth:輸出影象的深度

使用下面的組合引數src.depth() 和 ddepth:

src.depth() = cv_8u, ddepth = -1/cv_16s/cv_32f/cv_64f

src.depth() = cv_16u/cv_16s, ddepth = -1/cv_32f/cv_64f

src.depth() = cv_32f, ddepth = -1/cv_32f/cv_64f

src.depth() = cv_64f, ddepth = -1/cv_64f

inputarray kernelx:x方向的卷積核

在OpenCV裡實現高斯平滑1

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

在OpenCV裡實現高斯平滑4

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

在OpenCV裡實現高斯平滑5

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