2016-05-03 9 views
1

Ich weiß nicht genau, wie Sie diese Frage angeben, so betrachten Sie das folgende Bild. enter image description herereduzieren Umfang des Polygons durch die Beseitigung von Punkten

Die Polygone wurden durch Erfassen von Konturen einer gerasterten Karte von verschiedenen Bereichsgrenzen erzeugt. Beachten Sie die "Inlets", die durch Buchstaben im Originalbild erzeugt werden. Ich möchte Punktegruppen identifizieren, die die Länge des Umfangs des Polygons um mindestens einen Wert verringern würden, wenn die Endpunkte verbunden wären. Ich habe versucht, die konvexe Hülle für jedes Polygon zu erzeugen und basiere die Umkreiseinsparungen auf der Differenz des Abstands zwischen den Polygonumfängen zwischen den Rumpfscheitelpunkten und dem Abstand zwischen den Scheitelpunkten, aber es gibt keine Garantie dafür, dass diese Scheitelpunkte in der Nähe der Kante des "Einlasses" liegen ".

Ich habe das Gefühl, es gibt einen Begriff in Computer-Geometrie für dieses Problem, aber ich weiß nicht, was es ist. Muss ich die gespeicherte Distanz für jede mögliche Kombination von Start-/Endpunkten berechnen oder gibt es einen vereinfachten Algorithmus, der dies rekursiv tut?

Ein Beispiel, wenn die konvexe Hülle bricht mit der Polygon in der Mitte des folgenden Beispiels ist: enter image description here

Hier verbindet die konvexe Hülle die Ecken des Polygons während ich nur die verschließen will großer Einlass auf der rechten Seite des Polygons unter Beibehaltung der Krümmung dieser Seite.

+0

Die konvexe Hülle klingt wie der richtige Ansatz. Haben Sie sich bereits https://scipy.github.io/devdocs/generated/scipy.spatial.ConvexHull.html angesehen? – Dietrich

+0

Sie suchen wahrscheinlich nach einer konkaven Hülle, in der Sie die Parameter steuern können, um zu bestimmen, wie eng der Rumpf mit der Eingabeform übereinstimmt. Es gibt eine Anzahl von Verweisen auf die generischen Prinzipien und Implementierungen, viele innerhalb der gis Felder –

+0

Das klingt nach einem Job für [Ramer-Douglas Peucker] (https://en.wikipedia.org/wiki/Ramer%E2%80% 93 Douglas% E2% 80% 93Peucker_Algorithmus). OpenCV implementiert es in [approxPolyDP] (http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#approxpolydp). – Jaime

Antwort

0

Sie könnten eine Alpha-Form versuchen. Die Alpha-Form ist definiert als Kanten in einer Delaunay-Triangulation, die nicht größer als Alpha ist.

Verwandte Themen