2016-07-23 14 views
0

Ich weiß, dass Sobel Filter zu finden, Gradient auf x ist 1/8. * [-1 0 1; -2 0 2; -1 0 1].Kantenerkennung mit Matlab normxcorr2

Also statt imgradientxy zu verwenden, um die Gradienten von x und y zu erhalten, habe ich versucht, sobel Filter direkt mit normxcorr2 zu verwenden, um den Filter mit dem Bild zu korrelieren. Die Ergebnisse sehen jedoch wie folgt aus.

Anmerkung: Ich normalisierte zunächst das Originalbild im Bereich [-1,1] anstelle von [0255]

Ich verstehe, dass normxcorr2 den Kernel mit dem Bild korreliert, und wenn ich Sobel-Filter auf x als oben angegeben, dann sollte es mir ein ähnliches Ergebnis geben wie imgradientxy.

Was ist falsch in meinem Verständnis?

Sobel-Filter korrelierten mit dem Bild unter Verwendung normxcorr2:

Image 1: Sobel filter correlated with the image using normxcorr2

Steigung auf x unter Verwendung von imgradientxy:

Image 2: Gradient on x using imgradientxy

+0

Try Bildbereich auf [0, 1] zu normalisieren. – Rotem

Antwort

1

imgradientxy (I) berechnen, die Gradienten in X und Y-Richtung unter Verwendung von eine Faltung mit dem Sobel-Filter, ohne jeden Ort zu normalisieren, auf dem der Kernel läuft.

normxcorr2 (I, Vorlage) normalisieren Sie die Vorlage und die Region unter der Vorlage und nur dann berechnet die Korrelation.

Also, wenn Sie wollen, um sich selbst implementieren imgradientxy den folgenden Code

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