Bestimmen Sie die Mittellinie einer gebogenen, langgestreckten Region

8

Stellen Sie sich vor, ich hätte das zweidimensionale Bild eines Hotdogs. Ich kann auf dem Hotdog zwischen seinen beiden Enden eine gerade Linie ziehen. Nennen Sie das die Mittellinie. Eine seiner Eigenschaften ist, dass es die Achse ist, um die der (2D) Hotdog das niedrigste Trägheitsmoment hat.

Wenn ich jetzt den Hotdog in einem Bogen biege, wird diese Mittellinie auch verzerren.

Wie kann ich diese gebogene Mittellinie nach einem Foto des gebogenen Hotdogs bestimmen? Der Algorithmus sollte eine geringe Menge an Rauschen in dem Bild tolerieren.

    
Marc 29.12.2010, 16:05
quelle

4 Antworten

5

Wenn ich Ihre Frage verstehe, wollen Sie eine Linie durch Ihr Objekt, wo jeder Punkt in der Mitte des Objekts ist, dh wenn Sie von irgendeinem Punkt auf der Mittellinie ausgehen und in einer Richtung senkrecht zur Mittellinie gehen, müssen Sie Gehe die gleiche Strecke in beide Richtungen, bis du die Grenze des Objekts erreichst:

(das ist nur eine Illustration - wahrscheinlich nicht die geometrisch korrekte Mittellinie!)

Meine schnelle & schmutzige Lösung wäre, mit einer Mittelachse zu beginnen (die einfach aus Momenten erster und zweiter Ordnung berechnet werden kann) und verfeinert sie, indem Sie jeden Punkt dieser Linie nehmen und die nächsten Grenzpunkte auf einer senkrechten Linie finden in die aktuelle Richtung an diesem Punkt und verschiebe den Punkt zum geometrischen Mittelpunkt dieser beiden Punkte:

Wenn Sie dies für jeden Punkt tun, sollten Sie eine bessere Annäherung für die Mittellinie erhalten.

Ich sagte, das war schnell und schmutzig, weil ich mir nicht sicher bin, ob das Wiederholen dieses Verfahrens immer zu einer stabilen Lösung konvergiert. Es hängt wahrscheinlich davon ab, wie Sie die senkrechte Richtung der Mittellinie bei Knicken und Knicken berechnen.

Ein Weg ist es, ein physikalisch inspirierteres Modell zu verwenden:

  • Berechnen Sie eine Abstandstransformation für das Innere Ihres Objekts (die Entfernung jedes Punktes zum nächsten Grenzpunkt)
  • Finden Sie eine glatte Linie durch das Objekt, die das Pfadintegral des Abstandsbilds maximiert:

Um diese Linie zu finden, würde ich einen Algorithmus verwenden, der den aktiven Konturen / Schlangen ähnlich ist:

  • Beginne mit der Mittelachse
  • Wenden Sie zwei Kräfte auf jeden Punkt an:
    • Eine Kraft "schiebt" die Linie in Richtung des Gradienten der Abstandstransformation (d. h. weg von der nächsten Grenze)
    • Die andere Kraft wirkt dem Dehnen und Biegen der Schlange entgegen, so dass sie eine glatte Form beibehält, bei der es keinen klaren Entfernungs-Transformationsgradienten gibt. (Google für aktive Kontur - das ist ziemlich Standard-CV-Zeug, Sie werden viele gute Artikel darüber finden.)
  • Wiederholen Sie den Vorgang, bis die Konvergenz oder ein festgelegter Iterationsgrenzwert erreicht ist

Sie müssen einige Parameter für diese Glätte der Kurve anpassen (wie immer bei aktiven Konturen), aber Ihre Chancen, eine wohldefinierte und wohlbehütete Annäherung zu erhalten, sind viel besser als bei dem einfachen Ansatz oben.

    
Niki 29.12.2010, 19:34
quelle
3

Vielleicht kannst du deinen verbogenen Würstchen skelettieren

Sie müssen zuerst dreschen und dann einen Ausdünnungsalgorithmus verwenden.

Hier sind einige coole Links:

Ссылка Ссылка Ссылка

    
Nicolas Repiquet 29.12.2010 16:14
quelle
2

Wenn der Skelettierungsansatz nicht funktioniert, werden Sie wahrscheinlich ein schwierigeres Problem sehen - was eine Reihe von Fragen aufwirft: Wie eingeschränkt sind Ihre Formen? sind sie immer konvex? usw. Abhängig von den Antworten können Sie die Form parametrisieren.

Zunächst würde ich eine konvexe Hülle (google QHull) berechnen und dann eine Delaunay-Triangulation der Form bestimmen. Von da an glaube ich, dass Sie ein Voronoi-Diagramm berechnen und die von Ihnen benötigte Mittellinie erreichen können. Hinweis: Dies ist eine Menge Arbeit - angesichts dieses Aufwands könnte es hilfreich sein zu sehen, ob eine einfache Skelettierung ausreichend optimiert werden kann.

    
Throwback1986 29.12.2010 18:27
quelle
0

Sie suchen wahrscheinlich nach dem Voronoi-Diagramm, das Ihnen alle Punkte liefert, die äquidistant von den "Hot-Dog" -Kanten der Form sind - z. der Pfad / Rücken / Grat / Mittellinie in der Mitte.

Und hier ist ein Bild, um es zu visualisieren: Ссылка

Mapping dieses Bild zu Ihrem Beispiel, sind die schweren blauen Konturen Ihre "Hot Dog" Formen, und die dünne blaue Wirbelsäule / Mittellinie im Inneren ist durch das Voronoi-Diagramm gegeben. Die Punkte auf diesem Mittellinienrücken sind gleichweit von den schweren blauen Kanten entfernt.

    
payne 21.01.2011 15:20
quelle