Ich versuche, die Ausrichtung eines binären Bildes zu finden (wobei die Orientierung als die Achse des geringsten Trägheitsmoments definiert ist, d. h. das kleinste zweite Moment der Fläche). Ich benutze Dr. Horns Buch (MIT) über Robot Vision welches hier zu finden ist als Referenz.
Mit OpenCV, hier ist meine Funktion, wo a, b und c sind die zweiten Momente des Bereichs wie auf Seite 15 der pdf oben (Seite 60 des Textes) gefunden:
%Vor%OpenCV berechnet die zweiten Momente um den Ursprung (0,0), also muss ich den Parallel Axis Theorem verwenden Verschiebe die Achse in die Mitte der Form, mr ^ 2.
Das Center sieht richtig aus, wenn ich
anrufe %Vor%Aber wenn ich versuche, die Achse mit dem niedrigsten Trägheitsmoment zu zeichnen, sieht diese Funktion ganz falsch aus:
%Vor%Hier sind einige Beispiele für Eingabe und Ausgabe:
(Ich würde erwarten, dass es vertikal ist)
(Ich würde erwarten, dass es horizontal ist)
Ich habe mit der Orientierung manchmal zurück gearbeitet und folgendes codiert. Es gibt mir die genaue Ausrichtung des Objekts zurück. large_contour ist die Form, die erkannt wird.
%Vor%Tags und Links opencv computer-vision