Suche primitive Mustererkennung für Bilder

roxX0r

Mitglied
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!
 
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
 
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
 
ich versuche es jetzt mit ner eigenen lösung, wäre dir trotzdem dankbar wenn du mir da noch tipps geben könntest :)
 
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
 
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.
 
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!
 
Zurück