Seite 1 von 2

Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 15.09.2011 22:28
von mpz
Hi,

ich möchte gerne die Umrisse einer Grafikdatei erkennen. Der Umriss soll dann aus einem Polygon als mehreren geschlossenen Linien bestehen. Diese Funktion möchte ich gerne für meine 2d Physik benutzen. Also z.B. Fünfeck Grafik soll geladen werden und die Ränder als Polygon erkannt werden. Damit kann man dann das z.B. das Fünfeck physikalisch einsetzen. Geht dann auch mit anderen Objekten

Hat jemand Ideen oder schon Codebeispiele zur Verfügung? Zum Einsatz kommt Chipmunk als 2d engine. Da reicht die Übergabe von Polygonpunkten,,,

Kleiner Beispielcode von Physik-Punkten...
http://www.file-upload.net/download-373 ... D.exe.html


Gruß Michael

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 15.09.2011 22:55
von STARGÅTE
Tia, ohne mich tiefer mit dem Thema befasst zu haben würe ich sagen, dass das Ergebnis wohl kaum zufriedenstellen sein wird.
Problem ist ist da ehr nicht die Kanten erkennung, dass geht relativ schnell. Problem ist ehr, die Karten später auf zB dein Fünfeck zu reduzieren.

Ich weiß nicht wie viele Grafiken du hast, aber wäre es nicht einfach selbst für jede Grafik ein Polygon dazu selbst erstellst, zB indem du einfach überdas Bild dein Polygon zeichnest und speicherst?

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 15.09.2011 23:25
von mpz
Hi Stargate,

das Problem ist viel einfacher. Ich nehme ein Bild einer Kiste(Rand muss zu Erkennung schwarz sein) oder ein Stern (auch mit schwarzen Rand) und es sollen nur die Ränder als Polygon erkannt werden. Wieviel Seiten das Polygon hat ist dabei nebensächlich (z.B. bei Treppen sind es 40 Seiten). Die Polygone übergebe ich chipmunk und die Darstellkung der Grafik als Sprite übernimmt mp3d. Wenn ich die Ränder habe wird das Objekt physiklisch (lächerlich einfach) animiert. Die Ränder können auch grob sein, mp3d soll gut für Einsteiger benutzbar sein und dann kann jeder angry birds als 2d selber programmieren...

Gruß Michael

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 15.09.2011 23:34
von NicTheQuick
Naja, man kann ja einen Umriss relativ leicht in Polygon umwandeln, das so viele Kanten bzw. Ecken hat wie der Umriss Pixel. Anschließend gibt es ja schon fertige Algorithmen um solche Polygone zu vereinfachen. Das wird ja zum Beispiel auch in Blender mit ganzen 3D-Gittermodellen gemacht. Also muss es sowas auch für 2D geben. Leider habe ich keine Ahnung wie solche Algorithmen heißen. Wahrscheinlich gibt es da auch noch verschiedene, die alle ganz unterschiedlich heißen, je nachdem, wer die erfunden hat.
Ein bisschen googlen sollte zum passenden Ergebnis führen.

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 16.09.2011 01:26
von mpz
Danke NicTheQuick,

das Du mit mir vermutest das es Algorythmen dafür gibt. Allerdings gab Onkel Google mir noch kein nutzbares Ergebnis an die Hand 8)

Gruß Michael

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 16.09.2011 01:35
von STARGÅTE
Der Algo nett sich schlicht und einfach Vektorisierung.
Das was du gerne haben möchtest ist ein Pfad der Umrandung deiner Grafik, mit der Bedingung das es nur Strecken sind, und keine Kurven.

Kannst du vielleicht mal eine Beispiel Grafik hochladen (am besten mit Wunsch-Polygon), damit wir sehen wie der Weg sein soll.

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 16.09.2011 01:48
von NicTheQuick
Vielleicht helfen dir diese beiden Links weiter:
Raster-to-Vector algorithm
Douglas-Peucker-Algorithmus

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 16.09.2011 01:50
von mpz
Hi,

es geht eigentlich nur um Umrisserkennung. Also bei dieser Grafík sollen nur die Umrisse des Haus erkannt werden (5 Eck oder noch genauer wenn man will). Z.B. wie rot dargestellt wird. Dann kann man z.B. Bälle auf das Dach fallen lasen umd die Physik funktioniert realistisch. Alternativ muss ich einen Editor programmieren und die Linien von Hand einzeichnen...

Nick the Quick -> das ist schon ein Ansatz, wobei ich die Algorythmen mir erst betrachten muss
Raster-to-Vector algorithm
Douglas-Peucker-Algorithmus


Bild

Gruß Michael

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 16.09.2011 01:58
von NicTheQuick
Für diesen Fall könnte man noch als Bedingung angeben, dass das Polygon am Ende konvex ist, es also keine Einbuchtungen nach innen gibt. So wird in deinem Beispiel die Dachrinne nicht betrachtet.

Re: Erzeugung von Umrissen eines Bilddatei als Polygon

Verfasst: 16.09.2011 02:00
von STARGÅTE
Den Editor kann ich dir schnell schreiben (habe ja Erfahrung mit dem CanvasGadget ^^), zumal ich so ein Editor schon habe, weil ich es selbst brauchte um meinen Raumschiffe eine Hülle zu geben: Womit macht ihr die Kollisionserkennung

In welchem Format möchtest du den abschließen das Polygon? XML?
<Corner X="-0.44" Y="-0.65" />
<Corner X="-0.61" Y="0.09" />
Denn ich vermute eh, das selbst wenn du einen guten Algo hättest, eh an manchen Grafiken selbst Handanleben willst/musst.