PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bildverarbeitung (Fläche und Formen erkennen)



jeffrey
18.03.2006, 17:51
Hallo,
hat jemand eine Idee, wie man bei auf einem schwarz/weiß Bild zusammenhängende Flächen erkennen kann, und deren Form?
MfG Jeffrey

Spartakus
18.03.2006, 18:57
Mit welcher Software willst du das machen? Soll etwa dein dein Roboter etc. Sachen erkennen?

Bei ner einfachen sw-Bilderkennung sollte ein kleines neuronales Netz nützlich sein.
Tools dazu : SNNS, MAtlab/neural-toolbox..

Bilderkennung ist ne heikle Sache..

mfg

ogni42
18.03.2006, 19:30
Zur Erkennung von bestimmten Formen gibt es viele Möglichkeiten (Korrelation, KNNs, Pattern Matching, ...) Beschreibe doch Deine Anforderungen mal ein bisschen genauer, dann können wir Dir sicher auch genauere Antworten geben.

gast1234
19.03.2006, 01:25
Für ein reines Schwarz/Weißbild (also nur Schwarz oder Weiß) dürfte es nicht so schwer werden, da zusammenhängende Objekte einfach zu ermitteln sind, immer den schwarzen Pixeln entlang. Die Form kann man dann gut aus der Kompaktheit, dem Verhältnis zwischen Umfang und Volumen des Objekts, ableiten. Neuronale Netze sind insofern nur sinnvoll, wenn du Translation, Rotation und Skalierung der Objekte ausschließen kannst. Sonst musst du erst die "Ware" aufbereiten, mit den angesprochene Korrelationen beispielsweise. Der Aufwand ist bei Deiner Fragestellung kaum zu vertreten.
mfg
Gast1234

jeffrey
19.03.2006, 15:57
Hi,
ich bin durch das Thema https://www.roboternetz.de/phpBB2/viewtopic.php?p=168136#168136 auf die Bilderkennung gekommen. Der Roboter wird da mit einem roten Viereck markiert und dann über eine Farberkennung gesucht. Wenn man jetzt zusätzlich noch eine Formerkennung für das Viereck macht, könnte man ihn z.b von einem roten Ball unterscheiden, der auch noch im Bild liegt.
Außerdem habe ich gedacht, dass man dann wenn man auf den Bot eine Kamera baut sowas wie "such den roten Ball" machen kann, und dabei dann z.b rote Würfel ignoriert werden.
Dabei kann sich die Größe und die Lage natürlich verändern, je nach Entfernung und Lage des Bots.
MfG Jeffrey

jeffrey
20.03.2006, 15:03
hi,
das mit der Formerkennung durch verfolgen der Randpixel klingt logisch. Das habe ich mir auch schon überlegt. Wenn man zuerst eine Kantenerkennung laufen lässt hat man ja nur noch den Umriß. Aber mit welchem Algorithmus verfolge ich nun den Rand, damit er möglichst schnell gefunden wird.
MfG Jeffrey

stochri
20.03.2006, 18:19
bin durch das Thema https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=168136#168136 auf die Bilderkennung gekommen.

Hallo Jeffrey,
der urspruengliche Thread zur ASURO-Steuerung befindet sich hier:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=15762&postdays=0&postorder=asc&start=22

Dort habe ich auch schon einen Algorithmus beschrieben, mit dem man den Roboter und den Ball unterscheiden kann.

Der Algorithmus ist

- robust ( sehr stoerunempfindlich )
- einfach
- relativ schnell

Gruss,
stochri

jeffrey
21.03.2006, 12:41
hi stochri,
und wie unterscheidest du was nun ball und was asuro ist? nach welchem prinzip überzeichnest du die flächen? was passiert, wenn die flächen nicht rund ist. wie erkennst du jetzt, wenn du zusätzlich zu ball und asuro noch weitere flächen hast, was ball, was asuro und was irgendwelche störungen sind?
mir geht es z.b. darum den bot zu erkennen, indem ich ihm ne bestimmte farbe und form(z.b ring) gebe, auch wenn ich nicht garantieren kann, dass keine weiteren roten flächen auf dem bild auftauchen. deshalb habe ich gedacht, dass man sowohl nach formen, als auch nach farbe sucht und daraus errechnet mit welcher wahrscheinlichkeit ein roter fleck auch der asuro ist.
mfg jeffrey

21.03.2006, 21:15
Hier die Beschreibung des Algorithmus

Bild1: Orginalbild
Bild2: Rote Farben mittels des Algoritnus wie weiter oben im Thread beschrieben extrahiert und in eine Pixelbild umgewandelt
Bild3: tiefpassgefiltertes Pixelbild, durch die Tiefpassfilterung werden aus den ebenen weißen Fläche kleine Berge
Bild4: Höchste Bergspitze gesucht und Berg mittels Überzeichnen aus dem Bild entfernt danach suchen der zweiten Bergspitze
Bild5: Position der beiden gefundenen Bergspitzen

stochri
21.03.2006, 21:23
und wie unterscheidest du was nun ball und was asuro ist?


Zunaechst einmal ist der Algorithmus eigentlich ein Algorithmus zur sog. "Bildsegmentierung", d.h. der Extraktion relevanter Objekte aus einem Bildszenario.

Will man die gefundenen Objekt unterscheiden, kann man verschiedene Eigenschaften der Objekte dazu vewenden, z.B.

- Farbe
- Farbkombination
- Textur
- Form
- Umfang/Flaechenverhaeltnis
- Rundheit
- Schwerpunktslage im Verhaeltnis zur Standartabweichung

um nur einen sehr kleine Ausschnitt der Moeglichkeiten zu nennen.

Als Abfallprodukt der Suche nach den Bergspitzen faellt sozusagen die Groese des Objektes als Qualifizierungsmerkmal ab. Ich habe dem Ball einfach eine andere Groesse als der ASURO-Flaeche gegeben. Dadurch lassen sich beide unterscheiden.



nach welchem prinzip überzeichnest du die flächen? was passiert, wenn die flächen nicht rund ist.

Die Hoehe der Bergspitze und damit das Groessenkriterium ist relevant. Im Bildbeispiel ist ja der Ball rund und die Flaeche des ASURO eckig.



wie erkennst du jetzt, wenn du zusätzlich zu ball und asuro noch weitere flächen hast, was ball, was asuro und was irgendwelche störungen sind?

Es werden die Maximal im Bild gesucht. Im Moment werte ich nur zwei Maxima aus, d.h. es werden die zwei groesten Objekte gefunden. Man kann das natuerlich auf N-Objekte ausdehnen.
Gegen Stoerungen ist der Algorithmus auf Grund der Tiefpassfilterung besonders robust.

Gruss,
stochri

jeffrey
23.03.2006, 18:25
Hi Stochri,
um große Flächen zu erkennen muss ich ja dann einen Filter mit entsprechender Breite nehmen, sonst bekomme ich ja viele Punkte mit dem Wert 1. Deine Möglichkeit funktioniert ja bei runden Flächen ab besten. Ich habe mir aber überlegt eine Kamera auf den Bot zu packen und ihn dann z.B auf die Suche nach dem Ball zu schicken. Jetzt ändert sich ja je nach Entfernung die Größe des Balls, die Form bleibt aber erhalten. Ich weiß also auch nicht, ob der Ball immer das größte Objekt im Bild ist. Außerdem hatte ich mir überlegt seine Ladestation durch einene Art Torbogen zu kennzeichnen, also eine relativ eindeutige Form, die aber mit deiner Methode nicht gefunden wird.

@alle
Hat sonst noch jemand eine gute Idee, um diese Aufgabe zu lösen? Wie funktionieren z.B. die oben genannten Funktionen?

MfG Jeffrey

23.03.2006, 19:27
Schau mal hier,
bei Maslab machen die das Tor gelb.

http://dheera.net/photos/thumb.php?q=mit2/maslab

Gruss,
stochri

stochri
23.03.2006, 20:34
um große Flächen zu erkennen muss ich ja dann einen Filter mit entsprechender Breite nehmen, sonst bekomme ich ja viele Punkte mit dem Wert 1.

Stimmt.
Der TP-Filter muss groeser als die Flaeche sein, sonst geht´s nicht vernuenftig. Oder man muss den Filter ein paar mal drueber laufen lassen, was aber Rechenzeit kostet.

Ich habe das Problem dadurch geloest, indem ich zuerst das Bild um den Faktor 4-8 verkleinere und dann einen entsprechend kleineren Filter darueber laufen lasse.

Es ist uebrigens bei jeder Filteraufgabe so, dass der Filter auf das Problem angepasst sein muss. Nehmen wir an, wir moechten ein Tonsignal mit einem Tiefpass filtern um ein hohes Stoergerausch wegzukriegen. Dann muss gewaehrleistet sein, dass der Filter das hohe Signal wegfiltert, die Filterwirkung aber nicht so stark ist, dass das Nutzsignal verloren geht.

Insofern sind auch alle Bildverarbeitungsloesungen an das Problem angepasst und koennen fuer gewoehnlich nur die Dinge erkennen, auf welche die Algorithmen spezifiziert sind.

Der Algorithmus, denn ich verwendet habe, kommt aus einer gewissen Praxiserfahrung. Am Anfang hat man viele Ideen, was man alles tun koennte, wenn man dann aber damit experimentiert, sieht man, dass die meisten Probleme etwas schwieriger als gedacht sind.

So ist es z.B. sehr viel schwieriger, das Bild einer fahrenden Kamera auszuwerten, als das einer stationaeren, weil sich die Gesamtszene staendig aendert.

Man sieht z.B. auch in dem obigen Beispiel des Maslab, dass die Umgebung des fahrenden Roboters speziel fuer den Roboter praepariert wurde, um die Bildinformation einfach zu halten.

Ich habe das Verfahren der stationaeren Kamera vewendet, weil ich mir sicher war, dass ich damit in absehbarer Zeit zu einem Ergebnis komme.