Ich habe eine n: 2 Matrix mit Punkten (x, y) von Punkten in einem rechteckigen Kalibriermuster gefunden. Ich sortiere diese Punkte Zeile für Zeile. Ich habe diese Punkte mit lexsort sortiert, aber die Verzerrung von der Kamera ist zu groß, so dass y-Koordinaten überlappen werden.Sortieren 2d Kalibriermuster Punkte mit numpy
imageloading...
blobs=imageprocessing....
coordinates=np.array([blob.centroid() for blob in blobs])
nd=np.lexsort((coordinates[:,0],coordinates[:,1]))
coordinates=coordinates[ind]
Gibt es eine Möglichkeit, dies zu sortieren mit Hilfe eines delaunay Muster lange die Reihen gehen?
import matplotlib.tri as tri
x=coordinates[:,0] y=coordinates[:,1]
triang = tri.Triangulation(x, y)
Können Sie sich darauf verlassen, dass die X-Koordinaten nicht überlappen? Sie können Ihre Sortierreihenfolge invertieren und dann die resultierende Matrix transponieren. Das würde das Leben viel einfacher machen. Die Delaunay-Triangulation ist möglicherweise robuster gegenüber kleinen Überlappungen, aber wenn die Verzerrung zu groß ist, wird auch das rechteckige Muster zerstört. – Jaime
Warum möchten Sie sie sortieren? Der Punkt des Kalibrierens ist, dass Sie "nur" eine große Anzahl von Punkten in die Algorithmen einfügen können. Nach dem Kalibrieren können Sie das Bild wiederherstellen und die Punkte werden exakt auf Linien angezeigt. – RobAu