Die Umsetzung einer Harris-corner-Detektor

Ich die Umsetzung einer Harris-corner-Detektor für pädagogische Zwecke, aber ich bin stecken in der harris-Antwort-Teil. Im Grunde, was ich Tue, ist:

  1. Compute Bild Intensität Gradienten in x - und y-Richtung
  2. Blur-Ausgang (1)
  3. Berechnen Harris Reaktion über Ausgabe von (2)
  4. Unterdrücken nicht-maximas in der Ausgabe von (3) in einer 3x3-Nachbarschaft und grenzleistung

1 und 2 scheinen gut zu funktionieren; allerdings bekomme ich nur sehr kleine Werte, wie der Harris-Antwort und keinen Punkt hat erreichen der Schwelle. Eingang ist eine standard-outdoor-Fotografie.

[...]
[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 Beispiel-Bild, max endet als 6.4163 e-018, die scheint viel zu gering.

InformationsquelleAutor Etan | 2010-10-05

Schreibe einen Kommentar