PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : objekterkennung


Nikolai
26.08.2004, 17:56
ich bins mal wieder.
leider komm ich beim thema objekterkennung und bildauswertung nicht weiter.

stand:
habe ein prog welches relativ gut kanten erkennen kann jetzt suche ich nach einer möglichkeit meinem prog beizubringen, das es objekte erkennen soll.

habe es schon mit "theme" probiert. leider ist da das problem das ich keine ahnung habe wie ich es schaffe das das prog auch auf größenänderungen anspringt und das objekt immer noch erkennt.

nach etwas googeln bin ich auf das thema "neuronales netz" gestoßen.
habe mir ein paar theoretische dinge durchgelesen aber leider kein geeignetes tutorial dazu gefunden.

weiterhin habe ich mich auch mit der skeletierung beschäftigt.
diese erwies sich als ungeeignet da ich auch objekte habe die keine geschlossenen kanten haben und somit kann kein skelet gebildet werden.

kennt sich jemand von euch mit der objekterklennung und bildverarbeitung aus? bräuchte ein paar ratschläge.

thx


Scavi
27.08.2004, 10:41
Neuronale Netze sind schon ein guter Anfang. Lies dich mal in Kohonen-Netze ein, sind relativ einfach zu verstehen. Wenn du es dann wirklich verstanden hast, kannste auch einfach selbst ein eigenes Netz implementieren und es dann lernen lassen. Brauchste bloss halt mehrere Bilder für. Das gute an NNen ist ja auch, das auch Größenänderungen erkannt werden, bloss die Farbe sollte stimmen.

Nikolai
27.08.2004, 21:53
hab mich jetzt bei google dumm und dämlich gelesen und bin immer noch keinen schritt weiter.
das meiste was ich über neuronale netze (im speziellen kohonen netze) gelesen habe ist wissenschaftlicher "schrott".
irgentwie muss es den professoren ziemlichen spaß machen einfache dinge kompliziert auszudrücken.
ich suche immer noch vergebens nach nem stück quelltext oder ähnlichem was mir verraten könnte wie ich meine mustererkennung nun schreibe.
bzw. wie ich es schaffe dass die position drehwinkel und größe egal sind.

Scavi
28.08.2004, 12:05
Ja nagut, es steckt viel heavy Mathematik dahinter und feine Quellcodes wirste sicherlich nicht finden (nuja, ich hab hier nur nen Javaquellcode). Das Problem ist erstmal die Idee und die Mathematik zu verstehend dann kannste dir auch ein Netz selbst implementieren. Das Thema wird sicher nicht umsonst in Hochschulen gelehrt als Spezialvorlesung oder als Teil von KI. Und meine Spezialvorlesung ist schon ne Weile her, so dass ich dir das nicht wirklich 100%ig erklären kann.

bzw. wie ich es schaffe dass die position drehwinkel und größe egal sind. ...das ist dem NN egal, weil es Gewichtungen prüft, je öfter es gelernt hat, desto genauer die Wiedererkennung.

DanDanger
28.08.2004, 17:29
Hi,


Das gute an NNen ist ja auch, das auch Größenänderungen erkannt werden, bloss die Farbe sollte stimmen.


Allerdings befreien Dich die Neuronalen Netzte nicht von der Aufgabe,
deinen Bildauschnitt auf die richtige grösse zu Skalieren.

Bei einen NN hast Du ja eine art "Bildmatrix", in der jeder Pixel ein Eingangssignal für (mindestens) ein Neuron darstellt.
Für eine einfache Objekterkennung ("Kreis oder Quadrat") finde ich ein NN zu aufwending (allein schon das einlernen durch Back-Propagation kann einem den letzten Nerv rauben).

@Nikolai :
Die "eigentliche" Objekterkennung ist wirklich extrem Komplex.
Du kannst ja mal einen Blick auf versch. Fertig Implementierte Bilderkennungs-Bibliotheken werfen. Empfehlen kann ich da z.B. die LTI-Lib "meiner" Uni (RWTH-Aachen).

Zu erreichen unter : http://www.techinfo.rwth-aachen.de
bzw. direkt unter : http://www.techinfo.rwth-aachen.de/Software/Ltilib/index.html

EDIT :
Das ganze steht übrigends auch unter der GPL.
Wenn man absolut nicht weiterkommt, kann man ja dort mal schauen, "wie die das denn gelöst haben" ... :)

Gruss
DanDanger

Nikolai
28.08.2004, 20:44
würde das ganze am liebsten selbst schreiben und verstehen, ohne auf vorgevertigte lösungen zurückgreifen zu müssen.

ich verstehe nicht warum es keinen gibt der zu ner einfachen objekterkennung ein tut geschrieben hat. ich will doch nur einfache figuren erkennen lassen und das noch unabhängig von größe, position und drehwinkel. :mauer:

habe schon überlegt an das ganze net mit vektoren zu gehen aber das wird auch nix.

DanDanger
29.08.2004, 00:28
würde das ganze am liebsten selbst schreiben und verstehen, ohne auf vorgevertigte lösungen zurückgreifen zu müssen.

ich verstehe nicht warum es keinen gibt der zu ner einfachen objekterkennung ein tut geschrieben hat. ich will doch nur einfache figuren erkennen lassen und das noch unabhängig von größe, position und drehwinkel. :mauer:

habe schon überlegt an das ganze net mit vektoren zu gehen aber das wird auch nix.

Das Problem ist, dass Dein Problem viel zu Komplex ist, um "mal eben ein Tutorial" zu schreiben.
Scavi hat schon recht, das Zeug wird nicht umsonst erst in höheren Semestern an den Uni's gelernt. Im Netz gibt's halt sehr viele Seiten, die NN zumindest Theoretisch recht gut erklären. Den Code musst Du Dir dazu wohl selbst zusammenbasteln.

Verbeiss' Dich aber nicht in Neuronale Netze, sondern versuchs doch erstmal mit einfacheren "kreativen" Lösungen.
Wenn Du z.B. nur zwischen Kreis und Quadrat unterscheiden willst,
reicht ja schon eine "einfache" Vectorisierung.
Objekte mit mehr als THRESHOLD Vektoren lässt du z.B. als Kreis, den Rest als Quadtrat durchgehen (Nur so als Idee).

Scavi
29.08.2004, 11:17
Oder du machst es über die Polygonerkennung, die ich im letzten Thread schon erwähnt habe. Die ist relativ gut für einfache Formen geeignet, da du dann anhand der (Anzahl der) Punkte auf Formen schliessen kannst. Das wäre also eher ein intuitiver Lösungsansatz.

Nikolai
29.08.2004, 19:59
hm vektorisierung hört sich gut an.
das mit den polygonen is net so gut da ich die größe vorher net weiß.
will mal schaun ob ich die figuren nicht durch vektoren bestimmen kann.
kenne zwar die vektorformel von nem kreis aber kennt jemand die vektorformel einer elipse? (meine kreise sind net immer ganz rund)

DanDanger
29.08.2004, 20:56
(...) kenne zwar die vektorformel von nem kreis aber kennt jemand die vektorformel einer elipse?


Hi,

na, so Kompliziert braucht es gar nicht zu sein.
Was Scavi und ich meinen, ist eigentlich viel einfacher :
Wenn du einen Kreis (oder Ellipse) Vectorisierst, brauchst Du dafür ja viel mehr Punkte (Vectoren) als für ein Quadrat (das ja im Idealfall nur im den 4 Eckpunkten auskommt).
Du bestimmst also wieder mal einen THRESHOLD-Grenzwert.
Wenn ein Objekt aus mehr als THRESHOLD Punkten besteht, ist es ein Kreis,
ansonsten ein Quadrat (z.B wäre 7 ein ganz guter Startwert, da eine gute Vectorisierung bei einem Quadrat auch wirklich nur 4 Punkte erkennen sollte,
und mit 7 als THRESHOLD hast Du noch recht viel "Luft nach oben").

Gruss
DanDanger

Nikolai
30.08.2004, 17:03
irgentwie kommt mir die vektorisierung auch ziemlich kompliziert vor.
hab mir da mal ein bisschen was zu durchgelesen. am besten und einfachsten find ich da noch die methode von freeman.
damit ihr wisst von was ich rede hab ich mal ein bild gemacht von einem objekt was ich erkennen will.
http://home.t-online.de/home/maedchen-pferdehof/erkennung.jpg

wie ihr seht hab ein einen "quasi" kreis. und diesen will ich nun erkennen.

Scavi
31.08.2004, 12:42
Den Kreis zu erkennen wird nicht wirklich möglich sein. Dafür müsste die Qualität noch n bissl besser werden.

DanDanger
31.08.2004, 12:46
Hi,

ich glaube, bei dem Eingangsbild kannst Du keinen Kreis erkennen lassen.
Das sind zu viele Objekte drinn, die nicht zum Ball gehören.....

Du brauchst noch einen Schritt vor der Kantenerkennung :
Der Ball hat doch eine ganz bestimme Farbe. Filtere einfach alle anderen Farben aus dem Bild heraus, und lass über dem Rest ne' Kantenerkennung laufen.
Dann sollten alle anderen "Störobjekte", wie z.B. die "Bande" (oder die Wand, etc.), der Schatten des Ball's etc. herausgefiltert sein, und deine Objekterkennung hat es wesentlich einfacher.....

Gruss
DanDanger

Nikolai
31.08.2004, 14:39
hm das ist kein ball sondern eine holzstruktur.(astloch in nem brett)
und die sieht wirklich so aus. das ist schon die sensibelste einstellung.
vieleicht doch ein knn?

Scavi
01.09.2004, 11:00
Ich bezweifle sogar stark, dass ein NN diese Struktur erkennt. Selbst wenn du es 10 Millionen mal lernen läßt. Die Struktur des Kreises ist einfach zu schwach.

Nikolai
01.09.2004, 14:47
ich hab ein programm gesehen, das diese strukturen erkennt.
irgentwie muß es also möglich sein.
werde mir weiterhin den kopf zerbrechen, in der hoffnung auf eine lösung zu stoßen.
vielen dank für eure hilfe

Messiah_of_Death
02.09.2004, 09:01
hmm.. hab zwar net soo den Peil, daher nur mal so ne Idee (k.A. ob das effektiv wäre)

..versuch mal gerade (oder halbwegsgerade) Linien rauszufiltern, dass nur noch "kurviges" übrig bleibt, dann das Bild rastern ...

versuche Vierecke zu filtern, welche zusammen einen kleinen Kreissektor ergeben.. und diese zusammengesetzt annähernd einen großen Kreissektor ergeben und "interpolier" ggf. einen Kreis auf auf diese Stelle (so ne Art Overlay)

also vom Zentrum dieser Vierecke ein immer größer werdender Kreis der bei einer ~ % - "Passgenauigkeit" (an den "harten" Rändern) sagt "Du des is a Kreis"

... is nur ne Idee .. :o

find's faszinierend was du da bastelst :cool: