Skelettierung von 2D-Objekten



  • Hallo!

    Kennt jemand einen leicht zu programmierenden Algorithmus, welcher 2D-Objekten skelettiert.

    Unter skelettieren verstehe ich die Reduzierung einer Fläche zu einer Linie. D. h. Rechteck -> Linie, Kreisring --> Kreis usw.

    Ich habe es hierbei mit Pixelgraphiken zu tun, welche auf einem ganzzahligen Koordinatensystem basieren, was die Sache - so glaube ich - etwas erleichtert.

    Mein bsheriger Ansatz war:
    1. Ermittle die Pixel der Randfläche
    2. Entferne alle Pixel, die abgeschlossene Flächen sind
    3a. Unterbreche, wenn Objekt vollständig skelettiert
    3b. Gehe zu 1, wenn Objekt nicht vollständig skelletiert

    2, 3 sind sehr schwierig festzustellen und scheitern immer wieder an Sonderkonstellationen!

    Deshalb meine Frage, ob es nicht einen Algorithmus, der auf einer völlig anderen Idee arbeitet gibt.

    Oder hat jemand schon meinen beschriebenen Algorithmus benutzt und hat alle Probleme lösen können, die sich mit ihm ergeben?

    Hat jemand eine Idee?



  • Vielleicht ist das da was für Dich:

    http://www.vincent-net.com/luc/papers/92vcip_bisector.pdf



  • Sieht gut aus ... aber ... oh gott ... 15 Seiten und noch dazu in Englisch 😮

    Aber trotzdem, vielen Dank!



  • Leider handelt es sich nicht dabei um jene art der Skelettierung, die ich benötige.

    Ich will eine Skelettierung im Rahmen einer Buchstabenerkennung vornehmen. Buchstaben mit der Größe von 12 dpi sind als Pixelgrafik so klein, daß sie lediglich aus Linien bestehen. Werden allerdings Buchstaben größer dpi 12 dargestellt, wird u. a. bei Arial und Times New Roman Buchstabenlinien als Flächen dargestellt. Diese Buchstabenflächen möchte ich zur Urgestalt, einen Buchstaben bestehend nur aus Linien zusammenschrumpfen lassen.

    Diese Art der Skelettierung unterscheidet sich bei der von Dir vorgeschlagenen Art ...

    Hättest vielleicht noch andere Lösungsvorschläge ... 😋



  • ChrisPlusPlus schrieb:

    Hättest vielleicht noch andere Lösungsvorschläge ... 😋

    Ne, sorry. Lies halt die klassischen Bildverarbeitungsbücher. Da stehen genug Algorithmen zur Skelettierung drin.



  • Dabei dachte ich, der Erwerb dieser Bücher wird durch das Benutzen eines Formums einem erspart ... 😞



  • ChrisPlusPlus schrieb:

    Dabei dachte ich, der Erwerb dieser Bücher wird durch das Benutzen eines Formums einem erspart ... 😞

    Das stimmt definitiv nicht. Alleine schon deshalb, weil man in solchen Büchern nicht nur eine Auflistung von Algorithmen geboten bekommt. Stattdessen existieren z.B. in der Bildverarbeitung bestimmte Strukturen. Die kriegt man nicht in einem Forum mit. Wenn man kompetent in einem Gebiet arbeiten will, dann reicht es nicht aus sich punktuelles Wissen über ein Forum zu besorgen. Man muss sich in der Struktur des Gebietes auskennen. Nur wenn das gegeben ist, kann man auch unterschiedliche Lösungsansätze miteinander vergleichen, jeweils den besten Ansatz für ein gegebenes Problem wählen und dies dann auch entsprechend gut realisieren. Auch ganz allgemeine Vorgehensweisen, die in einem Gebiet üblich sind, wirst Du in einem Forum nicht in dem Maße geboten bekommen, wie man es einem guten Buch entnehmen kann.

    Abgesehen davon kann man die Forennutzer, die sich hier ernsthaft mit Bildverarbeitung auseinandersetzen, an ein oder zwei Händen abzählen. Das ist halt schon ein relativ spezielles Thema. Das die dann auch noch Lust haben, sich auf ein spezielles Problem innerhalb der Bildverarbeitung einzulassen, mit dem sie vielleicht keinen großen Kontakt haben, ist relativ unwahrscheinlich. Du bist dann praktisch auf die Launen weniger angewiesen:

    Ich hatte vorhin zum Beispiel Lust, Dir dieses Paper herauszusuchen. Zu mehr habe ich aber keine Lust. Zumal mir nicht klar geworden ist, warum Du damit eigentlich nichts anfangen kannst. Mir ist auch insgesamt nicht klar, warum Du überhaupt einen Skelletierungsansatz gewählt hast: Man könnte ja auch anders an das gegebene Problem herangehen.

    ...und irgendwelche Implementierungsprobleme sollte man eh selbst lösen können, wenn man sich mit derartigen Dingen beschäftigt.



  • Mit der eingehenden Beschäftigung einer Thematik gebe ich Dir nur bedingt recht.

    Zum einen habe ich das Problem schon so weit extrahiert, daß ich weiß, daß jene Art der Skelettierung, so wie ich sie beschrieben habe, die bestmöglichste Lösung für mein Problem ist, da ich es anhand von Testreihen bereits festgestellt habe.

    Auf der anderen Seite muß man als Profi, d. h. ein IT-ler von Berufswegen ist, den Wust an Informationen schon aus Zeitgründen ausdünnen.

    Also, ned böse sein 😉


Anmelden zum Antworten