2017-02-22 81 views
0

像這樣https://gist.github.com/kkomakkoma/4fb21b853ce774fe5c6d47e9626e6570代碼關於蟒蛇Gabor濾波器

設計Gabor濾波器許多程序:)

高清build_filters(:

filters = [] 
ksize = 31 
for theta in np.arange(0, np.pi, np.pi/32): 
    params = {'ksize':(ksize, ksize), 'sigma':1.0, 'theta':theta, 'lambd':15.0, 
       'gamma':0.02, 'psi':0, 'ktype':cv2.CV_32F} 
    kern = cv2.getGaborKernel(**params) 
    kern /= 1.5*kern.sum() #why? why? why? 
    filters.append((kern,params)) 
return filters 

什麼呢{克恩/ = 1.5 *克恩.sum()}呢? 謝謝你的安撫者

回答

0

我會盡我所能來回答這個問題,因爲我正在處理這個問題。

首先,我覺得這是一個有點相關的問題: gabor edge detection with OpenCV

做的是一種平均操作的這種操作的結果(類似於只是用一個平均面膜卷積的圖像),所以在某種程度上,它提供了一些平滑。它也用來規範內核,正如我上面的鏈接所述(以防止某些像素在卷積完成時遠遠超過其他像素的響應)。如果沒有完成,那麼內核的最大值可能比最小值大幾個數量級。

我在使用openCV的filter2D函數之後,使用和不使用這行代碼在輸入圖像上測試了這一點,就像在您發佈的github鏈接中一樣(輸出圖像縮放爲0到255之間),結果是如果沒有這一行代碼,許多像素的拍攝強度達到255,這是預期的,因爲每個像素都被分配了內核的最大值。

Without this line of code

我希望這有助於...如果任何人有任何這更推理或信息,我真的想知道!