2016-07-23 64 views
0

我知道在x上找到梯度的sobel濾波器是1/8。* [-1 0 1; -2 0 2; -1 0 1]。使用matlab進行邊緣檢測normxcorr2

所以,我沒有使用imgradientxy來獲得x和y的梯度,而是直接使用sobel filter直接使用normxcorr2來將濾波器與圖像相關聯。但是,結果看起來完全不同,如下所示。

注:我第一歸一化的原始圖像,以範圍[-1,1]代替[0255]

我明白normxcorr2與圖像內核相關聯,並且如果使用索貝爾濾波器上x作爲如上所示,那麼它應該給我與使用imgradientxy類似的結果。

我的理解有什麼問題?

Sobel濾波器使用normxcorr2與圖像相關聯:x上

Image 1: Sobel filter correlated with the image using normxcorr2

梯度使用imgradientxy:

Image 2: Gradient on x using imgradientxy

+0

去嘗試標準化圖像範圍爲[0,1]。 – Rotem

回答

1

imgradientxy(I),使用計算在X和Y方向的梯度與Sobel濾波器進行卷積而不對內核運行的每個位置進行歸一化。

normxcorr2(I,模板)規範化模板和模板下的區域,只計算相關性。

所以,如果你想實現imgradientxy你自己使用下面的代碼

sobelX = [-1 0 1;-2 0 2;-1 0 1]; 
gradX = conv2(double(I),sobelX,'same');