Autor Beitrag
benbalzer
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 25.01.04 15:00 
Hallo!
Also es geht um folgendes:

Für ein Schulprojekt habe ich vor, ein kleines Auto zu bauen, auf dem sich eine Webcam befindet, so dass das Auto einer Linie auf dem Boden folgen kann.

Soweit zu dem grobem Thema.

Ich habe nun dieses Problem:

Das Auto soll geradeaus fahren, wenn die "Straße", sprich die Linie, sich genau in der Mitte des Webcam Bildes befindet.
Sobald nun aber eine Kurve erscheint, oder das Auto leicht schief fährt, muss gegengesteuert werden.

Nun habe ich noch keine vernünftige Idee, wie ich überprüfen kann, ob nach links oder rechts gegengesteuert werden kann.
Ich habe zwar eine Methode um zu testen, ob das Auto geradeaus weiterfahren kann, aber sobald dies nicht mehr gegeben ist weiß ich nicht mehr weiter.

Die Straße kann ja auch mehr oder weniger stark nach links bzw rechts verlaufen, so dass ich das auch testen muss.

Hat jemand eine Idee, wie ich aus dem Bitmap was die Webcam mir liefert herausfinden kann, in welche Richtung gegengesteuert werden muss???

Vielen Dank im voraus,
ben
umpani
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 389



BeitragVerfasst: So 25.01.04 15:36 
Mach es dir am besten Einfach.
Wie Weiße linie befindet sich auf einem schwarzen Untergrund.

Wenn du dann das Bild in dein Programm eingespeißt hast, wandelst du es in eine schwarz/weiß grafik (2.Farben) um.

Jetzt bestimmst du, wo der meißte weißanteil im Bil zu finden ist (links / mitte / rechts). Dafür könntest du das Bild in 3 Zonen aufteilen (ungefähr dritteln).

Dann gehst du jede Zone durch und bestimmst den Prozentsatz der weißen und schwarzen pixel. Dann kommt z.B. raus 40% / 20% / 3 %
Das fürde heißen, daß links mehr weiß als rechts zu finden ist. Also muß das Fahrzeug nach links lenken.


Gruß Umpani

_________________
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius
benbalzer Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 25.01.04 15:42 
Titel: Danke!
hey!
Danke für die schnelle Antwort.
So eine ähnliche Idee hatte ich auch schon, allerdings wäre es wesentlich komplizierter geworden ^^
Echt ne gute Idee,
danke dir!

edit:
wenn mir jemand nun noch sagen kann wie ich ein bitmap in ein s/w-bitmap umwandele wäre das klasse :)
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: So 25.01.04 17:08 
::ben

Die einfachste Lösung ist folgende:

:arrow: Ermittle jeden Farbwert für jedes Pixel.

:arrow: Splitte den Farbwert in seine Komponenten: R, G, B (Rot, Grün, Blau).

:arrow: Nun Addiere diese Werte und Teile durch drei.

:arrow: Das Result ist ein Wert von 0 (dunkel) bis 255 (hell).

:arrow: Nehme einen Schwellenwert z.B. 200 und wenn das Resultat drüber liegt, speichere in dem Bild ein weißes Pixel sonst ein schwarzes.

Voila.

Die Sache hat nur einen Hacken: Die Formel ist ein bisserl primitiv; genaugenommen müßte man z.B. die Farbanteile verschieden gewichten, aber ich denke für deine Zwecke reicht die Methode - und eh, Feinschliff kannst ja immer noch machen :wink:

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
benbalzer Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 25.01.04 18:04 
Titel: nochmals danke!
Deine Tipps mit dem Aufsplitten etc. haben wunderbar funktioniert...an und für sich.

Nur das Problem ist, sobald das ein paar Schatten reinfallen in das Bild gibt es Chaos :)

Aber das krieg ich in den Griff, ich kleb einfach ein paar helle LEDs an die Kamera oder so, damit immer gleiche Verhältnisse sind :)
umpani
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 389



BeitragVerfasst: So 25.01.04 18:07 
Genau,

ich könnte zwar auch noch ein paar wesentlich kompliziertere Vorschlägre machen (in Richtung Verktorberechnung) aber für ein Schulprojekt sollte das reichen.


Gruß Umpani

_________________
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius