Ich habe ein Bild, das ich mit meinem Programm ausarbeite, um eine Liste von Koordinaten zu erhalten.Erkennen einer Matrix in einer Gruppe von Punkten
Im Bild dargestellt gibt es eine Matrix. In einem idealen Test würde ich nur die sechzehn zentralen Punkte jedes Quadrats der Matrix bekommen. Aber in tatsächlichen Tests nehme ich ziemlich viele Rauschpunkte.
Ich möchte einen Algorithmus aus der Liste der Koordinaten extrapolieren, die Gruppe von 16 Koordinaten, die am besten eine Matrix darstellen.
Die Matrix kann ein beliebiges Seitenverhältnis (zwischen einem Bereich) haben und etwas gedreht werden. Aber ist immer eine 4x4-Matrix. Die Matrix ist nicht immer im Bild vorhanden, aber ist kein Problem, ich brauche nur die beste Anpassung. Natürlich ist die gegründet Punkt sind immer mehr als 16 (oder i überspringen)
Beispiel gegründet Punkte:
Beispiel desidered Ergebnis:
Wenn jemand kann mir vorschlagen, eine bevorzugte Möglichkeit, dies zu tun wäre großartig.
Ich denke über den euklidischen Abstand zwischen Punkten nach.
For each point in the list:
1. calculate the euclidean distance (D) with the others
2. filter that points that D * 3 > image.widht (or height)
3. see if it have at least 2 point at the same (more or less) distance,
if not skip
4. if yes put the point in a list and for each same-distance founded points: go to 2nd step.
Am Ende, wenn ich 16 Punkte in der Liste habe, könnte dies eine Matrix sein.
Jeder bessere Vorschlag?
Danke
Sie wollen eine Form mit einem regelmäßigen Gitter? Peridocity auf X-Linie oder Y-Linie oder beides? Wie steht es mit der Winkel-Symmetrie? Sie wollen auch Diamantformen? –
Ein Diamant Formen ist nie rappraesentiert. Ich denke, die maximale Drehung (beginnend mit einem perfekten Quadrat) kann 45 ° (und -45 °) betragen. Ja, die Form hat ein periodisches Gitter (X und Y), aber wenn ich die Punkte aus dem Bild extrapoliere, unterscheiden sich die extrapolierten Punkte ein wenig. – Univers3
Wäre ein Quadrat, das um 45 ° gedreht wurde, nicht eine Rautenform? – mbeckish