# Suche primitive Mustererkennung für Bilder



## roxX0r (13. Juli 2007)

Hio,

es geht um folgendes: Ich habe z.B. ein kleines Bild welches ich in einem größeren Bild suchen möchte. Man kanns auch auf was einfaches runter reduzieren: Ich habe ein Bild (als Datei) von einem Stern. So, nun habe ich ein großes Bild (liegt auf dem Bildschirm) in dem es viele Objekte gibt, aber genau einen stern, der so aussieht wie der in der extra bilddatei. Nun würde ich gerne sowas haben wie if (imgkleinerStern in imggroßesBild) then <blabla;

Aber wie mache ich sowas? Es geht also nur um eine primitive Mustererkennung ... vielleicht gibts da ja schon was?

Danke für die Hilfe!


----------



## dto (13. Juli 2007)

Ja so trivial ist dieses Problem garnicht es kommt auch darauf an ob der Stern skaliert sein kann also größer oder kleiner als das Original wenn nicht heißt die Lösung tamplate matching


----------



## roxX0r (13. Juli 2007)

hm also es wäre schon so, dass der stern auch kleiner sein kann in der skalierung...
wie mache ich es dann ?


----------



## dto (14. Juli 2007)

Heute kann ich dir die Antwort leider nicht mehr geben dafür muss ich selbst erst mal in meinen Studienunterlagen nachschauen aber ich werde mich morgen gerne mal der Sache annehmen ich hoffe das reicht dir


----------



## roxX0r (14. Juli 2007)

ich versuche es jetzt mit ner eigenen lösung, wäre dir trotzdem dankbar wenn du mir da noch tipps geben könntest


----------



## wuz666 (14. Juli 2007)

Hi!
Wir haben Objekterkennung heuer im Studium behandelt.
Googel mal nach Chamfer Algorithmus, das sollte dir weiterhelfen. Allerdings funktioniert dies "nur" gut, wenn das zu suchende Objekt in etwa gleich groß ist, wie das mit dem du vergleichst.
Ich müsst auch erst noch meine Unterlagen suchen, falls du mehr Infos brauchst...

Sag einfach Bescheid

mfg wuz


----------



## roxX0r (16. Juli 2007)

wäre für weitere hilfedankbar.. das "zu" suchende objekt kann auch kelienr sein als das Orginal...


----------



## zeja (16. Juli 2007)

Ist ne recht aufwändige Sache, das stimmt schon. Zunächst einmal musst du alle Objekte in deinem Bild extrahieren können. Für jedes Objekt musst du dann normierte zentrale Momente berechnen: http://www.ecs.fh-osnabrueck.de/fil...ik/09_Merkmalgewinnung_und_Klassifikation.pdf

Diese berechnest du ebenfalls für den eigentlich zu suchenden Stern.

Dann berechnest du für jedes Moment des Objektes die Differenz zu dem entsprechendem Moment vom Stern, quadrierst diese und summierst die auf. Dann musst du mit ein wenig testen einen Schwellwert für diesen berechneten Wert ermitteln unter welchem es wahrscheinlich ist dass das untersuchte Objekt ein Stern ist.

Ich weiss nicht ob die Java Advanced Imaging API dafür schon was anbietet.

Ansonsten gehts eventuell einfacher wenn du dir das in C mit OpenCV schreibst und aus Java heraus über JNI aufrufst.


----------



## roxX0r (16. Juli 2007)

OpenCV scheint ganz nett zu sein, nur bin ich was C++ angeht wirklich auf anfänger Niveau, weiß nicht ob ich das hinbekomme...

Ich schau mir mal JAI an, wär cool wenn es da schon soetwas gäbe 
if (img1.isIn(img2) ) bla;

danke für die Hinweise!


----------



## Thomas Darimont (16. Juli 2007)

Hallo,

schau dich doch mal auf http://www.generation5.org/jdk/demos.asp ein wenig um.
Dort gibts einige interessante Beispiele zum Thema Machine Vision / Pattern recognition.

Gruß Tom


----------

