Implementierung eines Harris-Eckendetektors

Ich implementiere einen Harris-Eckendetektor für Bildungszwecke, aber ich bin beim Harris-Reaktionsteil festgefahren. Grundsätzlich mache ich:

Bildintensitätsgradienten in x- und y-Richtung berechnenBlur Ausgabe von (1)Compute Harris Antwort über Ausgabe von (2) Nicht-Maximen in der Ausgabe von (3) in einer 3x3-Nachbarschaft und Schwellenwertausgabe unterdrücken

1 und 2 scheinen gut zu funktionieren; Ich erhalte jedoch sehr kleine Werte als Harris-Antwort, und kein Punkt erreicht den Schwellenwert. Der Eingang ist eine Standardfotografie im Freien.

[...]
[Ix, Iy] = intensityGradients(img);
g = fspecial('gaussian');
Ix = imfilter(Ix, g);
Iy = imfilter(Iy, g);
H = harrisResponse(Ix, Iy);
[...]

function K = harrisResponse(Ix, Iy)
    max = 0;
    [sy, sx] = size(Ix);
    K = zeros(sy, sx);
    for i = 1:sx,
        for j = 1:sy,
            H = [Ix(j,i) * Ix(j,i), Ix(j,i) * Iy(j,i)
                Ix(j,i) * Iy(j,i), Iy(j,i) * Iy(j,i)];
            K(j,i) = det(H) / trace(H);
            if K(j,i) > max,
                max = K(j,i);
            end
        end
    end
    max
end

Für das Beispielbild beträgt die maximale Anzahl 6.4163e-018, was viel zu niedrig zu sein scheint.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage