PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bildverarbeitung auf mobilem Roboter



Johannes
03.04.2004, 14:28
Moin,
ich bin am Überlegen, ob ich auf meinem nächsten Roboter meinen alten 500Mhz-Rechner als Steuercomputer installiere und dann über die serielle Schnittstelle mit kleinen Mikrocontrollern kommuniziere, die die Sensoren und Motoren ansteuern. Ich möchte nämlich eine eigene Bildverarbeitung programmieren und brauche aus diesem Grund bessere Rechenleistung.

Hat damit schon jemand Erfahrung gemacht? Ich habe einen Akku mit 12V, 7Ah. Nur muss ich die 5V noch mit einem Spannungswandler umsetzten.

Für Anregungen wäre ich dankbar.

Gruß
Johannes

NumberFive
03.04.2004, 16:41
Hallo ich habe die selbe Idee aber so einfach ist es nicht.

siehe:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=1249

und

https://www.roboternetz.de/phpBB2/viewforum.php?f=8

hast du die Bild erkennung schon ?

das mit den 5V reicht nicht aus um ein standart mainborad zu betreiben.
Hast du ein atx board ?

Gruß

Johannes
03.04.2004, 18:16
Oh, dieses Forum PC, Pocket... ist mir noch gar nicht aufgefallen... Kann man das irgendwie verschieben?

Nene, ein ATX braucht noch 3.3V, mein altes ist aber noch AT. Ich brauche also zwei leistungsfähige Spannungsregler. Wie viel Strom zieht ein Motherboard eigentlich?

Gruß
Johannes

NumberFive
03.04.2004, 18:39
Hallo johannes,

ein PC Board vorallem die alten brauch teil weise bis zu 15A auf dem 5V teil. Kommt natürlich darauf an was drin steckt. du brauchst aber auch die neativen spannung und hier begint dein problem. den wie willst du -12V machen. aber ich habe irgend wo ne schaltung dafür aber ich werde mir wohl ein Netzteil kaufen den ist mir zu teuer son board zum probieren.

Schade ich wollte dir die schaltung dran hängen aber leider finde ich die nicht mehr.

da du hier kein anfänger bist würde mich schon mal interesieren wie du das mit der Bilderkennung machen willst

Gottfreak
03.04.2004, 23:59
Das mit den -12V sollte (hab' ich nicht ausprobiert) doch mit zwei Akkus gehen: Die +Seite vom Zweiten an die Masse und die -Seite liefert -12V
Damit die gemeinsame Masse von allem erhalten bleibt, brauchst du dann aber noch einen anderen Spannungsregler.

NumberFive
04.04.2004, 01:03
das ist schon richtig aber zwei akkus einhaufen gewicht oder nicht ?

Johannes
04.04.2004, 10:00
Moin Numberfive,
>aber ich habe irgend wo ne schaltung dafür aber ich werde mir wohl ein Netzteil kaufen den ist mir zu teuer son board zum probieren.

Was meinst du mit Netzteil kaufen? Kabel hintergerziegen oder wie?

Ist mir peinlich die Frage, aber sind -12 V nicht einfach umgepolte +12V?

Zur Bilderkennung: Ich habe bei Jugend forscht den Landeswettbewerb gewonnen, und unser Roboter sollte sogenannte Orientierungspunkte per Kamera erkennen. Dazu haben wir die CMUCam genommen, allerdings hat die Probleme mit mehreren gleichen Farbfeldern in einem Bild etc.
Deshalb soll mein nächster Roboter die Bildverarbeitung selber übernehmen, sprich mit zwei Webcams.

Dann soll es aber nicht bei Orientierungspunkten bleiben (also Farbfelder erkennen), sondern ich möchte auch eine Objekterkennung realisieren.

Ich habe vor, unser Projekt mal ins Web zu stellen, allerdings laufen gerade die Vorbereitungen für den Bundeswettbewerb. Also, kann noch etwas dauert. Aber dann sage ich Bescheid. ;-)

Gruß
Johannes

Johannes
04.04.2004, 10:02
Boa, wurden hier die Smileys geändert? Ist ja ein dickes Ding! :-)

Frank
04.04.2004, 10:31
Ja, wir haben neuen Smiles! Ich denke die sind jetzt wirklich schön
:bye

NumberFive
04.04.2004, 12:08
Hallo Johannes,

ja das mit den -12v habe ich auch so gedacht nur das stimmt leider nicht
es in wirklichkeit so das es zwei spannungen sind dn 0V ist die Mitte
sprich zwischen -12V und und +12V sind 24V. ich hoffe du verstehst was ich meine. also wenn ds mit de Bild erkennug wirklich so einfach ist bin ich wohl zu blöde. den Ich bekomme es nicht hin . Ich bin she gespannt auf deine /eure seite. Ich bekomme zur Zeit ca. alle 500 Milisekunden ein bild. Aber wenn ich nur ein bisschen damit rechne komme schon nicht mehr nach würde mich schon interresieren wie euche logarythmen aus sehen das sie so schnell sind. das es zu steueren reicht.

Netzteil für den PC mit 12V wenn du auf den Seiten suchst findest du auch Netzteile für AT boards.

http://www.rsg-electronic.de/datenblatt/sdx-160.pdf
http://www.datafile.de/dh

Eine Bastler Seite


http://www.obelode.de/images/DCDC_Schematic.pdf

Ich hoffe geholfen zu haben

Gottfreak
04.04.2004, 12:44
Wie wäre es denn mit einem kleineren Akku(z.B. 10 Mignon-Akkus oder 3-4 alte Handyakkus oder so) für die -12V
Ich hab' mir mal das Datenblatt von 'nem "normalen" Netzteil vorgenommen und das hatte nur ein paar mA Belastbarkeit auf den negativen Spannungen.

hrrh
04.04.2004, 12:58
ein 7Ah-stunden akku wird etwaas sehr schnell lehr, wenn der pc 20A zieht, unsd die motoren brauchen auch noch viel strom. da waere meiner meinung nauch wein akku von der groese eines autoakkus angemessener :) auserdem ist ein pc nicht als klein + leicht zu bezeichnen und die akkus sind auch nicht sehr leicht. da muss der roboter sehr gross werden und braucht entsprechend grosse und stromfressende motoren :( wenn pc, dann wuerde ich einen laptop verwenden, der ist leichtz und hat einen eigenen akku :) ist aber leider teurer :( ich bezweifle allerdings, dass ein 500mhz pc zur bildverarbeitung reicht (speziell wenns in echtzeit sein muss und es viele bilder in kurzer zeit sind)

NumberFive
04.04.2004, 12:58
das könnte wohl gehen. aber mein han lege ich für nicht ins feuer.
ich denke das hngt auch da von ab was in dem pc drin steckt.

Meines wissen sind die Internen geräte diedie spannung brauchen.

Gruß

NumberFive
04.04.2004, 13:06
hallo hrrh,

ich denke echt zeit wirst du nicht erreiche aber ich denk das brauch man auch nicht würde immer auch sensoren dran machen.

aber hier gibt es jemand der die erkennug schon fertig hat den könnte man ja fragen wieviel Mhz man braucht.

https://www.roboternetz.de/phpBB2/viewtopic.php?t=1222

mir ist zwar noch nicht klar wie er es macht aber mal shen den ich bin ehrlich ich bekomme es noch nicht hin.

Gruß

Johannes
04.04.2004, 13:15
Neinen, Echtzeit kann man vergessen, wenn es um riochtige Objekterkennung geht.

Aber Farben sollte man schon in Echtzeit erkennen können. Das hängt ganz vom Interface ab. Wenn man natürlich irgendwie die Pixelfarben auf dem Bildschirm abfragt, dann kann mans gleich vergessen. Da muss man schon direkt die Schnittstelle abfragen und die Daten gleich beim "reinkommen" verarbeiten. Das Anzeigen auf dem Bildschirm bzw. die Farbabfrage über Windows dauert zu lange.

Auch das Anzeigen von Farben ist über die Windowsschnittstelle zu langsam. Ist euch mal aufgefallen, dass man im Mediaplayer keinen Screenshot von einem Video machen kann? Das kommt daher, dass scheinbar die Garfikkarte direkt angesprochen wird, was natürlich wesentlich schneller ist. Screenshots werden aber von Windows gemacht, und das weiß gar nicht, dass da auf dem Bildschirm ein Video angezeigt wird. Wer XP hat, sieht das auch daran, dass die Schatten des Menüs über dem Video nicht verlaufen. Kann auch nicht, da für Windows der Bereich einfach Schwarz ist.

Aber ich habe mir zum Interface auch noch keine Gedanken gemacht. Wie gesagt, im Moment verwenden wir die CMUcam, die die Bildverarbeitung selbst übernimmt. Aber auf Dauer sind die Ergebnisse nicht zufriedenstellend.

Gruß
Johannes

Johannes
04.04.2004, 13:34
Sorry, aber kann mir mal einer von euch sagen, wie ich meine Signatur aktiviere? Ich habe zwar eine erstellt, aber sie erscheint nicht auf der Seite.

Ich habe mal eine vorläufige Seite zum Projekt hochgeladen. Ist zwar noch nicht viel Information, aber ein Foto ist schon mal drauf ;-)
http://www.mindrobots.de

Gruß
Johannes

NumberFive
04.04.2004, 13:41
Hallo Johannes,

du hast mit allem recht ich verwende die aus gabe zwar beim debug da sich das dan leichter vorstellen was der rechner mach aber dann kann du es gerade vergessen. ist nur für die kontrolle. ich hänge genau an der schnistelle im treiber. d. h. in der call back rotuine die den bildschrim zeichen im ram der graphic karte. ich so fern ist das bekommen der daten nicht das problem. ich habe dann ein array of byte. nur wenn ich jetzt byte für byte durch gehe dann wird es zu langsam. also bei mir geht es ähnlich wie bei dir ob man nun die daten in arry lies oder ein bekommt ist glaube ich egal. mich würde halt einfach nur interresieren wie das von der logi her geht mit dem erkennen. oder interpertieren ich da zu viel rein ? du hälst vor die cam ein quartat mit ein farbe erkenn dan der rechne nur die farbe oder auch wo sich das quadrat befinden. was ist mit dem abstand zur cam ?. Fragen über fragen.

Gruß

NumberFive
04.04.2004, 13:47
Hallo Johannes,

da ist ein hancken neben dem ein gabe felde und wenn du willst das sie immer ange hängt wird muß du das in deienm profil ein tragen

Gruß

Johannes
04.04.2004, 13:50
Ah ja, jetzt habe ich den Hacken gesehen ;-)

Nein, mit einem Farbfeld klappt es natürlich nicht, man braucht 3 oder vier.

Gruß
Johannes

NumberFive
04.04.2004, 14:02
Also ich muß zu geben jetzt bin ich föllige durcheinander ?

Gruß

Johannes
04.04.2004, 15:03
:-)

Ok, 4 Farbfelder für einen Orientierungspunkt:
# #

# #

Daraus kann der Roboter die Entfernung und den Winkel des Punktes errechnen. Das ist noch relativ einfache Bilderkennung mit nur einer Kamera.

Viel Interessanter ist die Erkennung von 3D-Objekt aus zwei Blickwinkeln. Dazu ist mir neulich eine Idee gekommen, aber zu dem Thema gibt es bereits mehrere Doktorarbeiten. ;-)

Das erste Problem ist das Interface. Wie steuerst du die Kamera genau an? Welche Programmiersprache etc.?

Gruß
Johannes

NumberFive
04.04.2004, 15:57
Hallo Johannes,

nun den Rechner AND 100 512 MB. Alles SCSI Platte Graphickarte 64 MB.
Video Hauppage WinTV PCI. Cam ist ein alte Viedeo Kamera. Auflösung
320x240 im rechner. Über den DirectX Treiber hänge ich in der CallBack rotine des Vorschau Kanals. Von da aus schicke in mir ein nachricht an ein Thread mit dem Bild drin. (das mache ich mu den Treiber nicht auf zu halten und da befindet man sich auch im Kernel kontext d.h da darf man nicht alles. Geschrieb ist es im C++ VisualStidio 6 sp5 sonst noch fragen ?

Gruß

Johannes
04.04.2004, 16:15
Klingt interessant, das bedeutet, dass der Thread praktisch die Videosignale nicht aufhält, da es halt ein anderer Thread ist.

Ok, und was für eine Frame-Rate hast du und was für Berechnungen möchtest du machen? Vielleicht kann man die effizienter programmieren. Aber dass das ganze sehr rechenaufwändig ist, steht außer zweifel. Das Problem ist auch, dass Windows ja nicht die volle Rechenkapazität zur Verfügung stellt sondern selber ja ne Menge Resourcen frisst.

Gruß
Johannes

NumberFive
04.04.2004, 16:59
Die framerate spielt hier keine rolle da das alleine läuft, es sein den du schreibst den stream parallel auf die platte. was das program auch kann kommen avi bei raus. ich mache das mit einem timer schreibe mir alle 500 milisekunden den auftrag hole bild. das kann man aber beliebig machen. so bald das bild im speicher vorliegt bekomme ich dann das bild. aber ich sagt dir ganz ehrlich der treiber ist so schnell und bring die bilder in der geschwindigkeit. das heist die algorytmen habe nicht viel mehr Zeit als diese, sonst staut es sich. ürbiges es git was langasm mehr res als auf den bildschrim zu malen ATLTRACE wenn du damit ausgaben machst bremst das richtig. was ich zur zeit mache ist das bild auf grau werte zu reduzieren da ich dann schneller rechnen kann 320x240x3 Bytes ist ne menge als nur 320x240 Bytes. Zur zeit mach ich dann auch noch drei grau werte draus damit ich kannten erkennung machen kann aber das werde ich wohl vergessen müssen für die erste version das wird zu komplext. jetzt stehe ich hier weiß nicht wie ich die nav machen soll.

Aus frust habe ich aus dem progamm ein tool gemacht mit dem mein freundin jetzt Ihr viedeo auf dvd brennt.

Versuche gerade mit dem Hellsten punkt rum zu spiele dann könnte
er ein taschen lampe folgen abe da zu muß ich noch ein bisschen was um schreiben durch die runter rechnung auf drei farbe geh zwar die bewegungs erkenn richtig klasse aber was sagt mir das ?

also ich sag mal wenn er rum steh könnte er daruf reagier wenn jemand vor beim läuft ich zeiche dir dann auch genau welche bildpunkt sich beweg haben. aber zu verfolgen reich es hat einfach nicht oder ich kann die daten nicht richtig interpretieren.

Aber vielleicht brauch ich auch nur jemand mit dem man da rüber reden kann und da wird alles besser

Gruß

NumberFive
04.04.2004, 17:01
nachtrag um noch mehr leistung aus der machine zu holnen ist auf den robi mein selbst programmierte shell drauf die braucht fast keine speicher
also es gibt da keine explorer es sein den man mach den auf *g*

Johannes
04.04.2004, 18:03
Klingt ja schon mal ganz gut. Leider bin ich noch nicht zu hundert pro auf der Höhe, da ich wie gesagt im Moment noch an dem Jufo-Projekt arbeite. Aber danach werde ich mir darum kümmern, einen leistungsfähigeren Roboter zu installieren. Und dann geht es auch bei mir los mit Bilderkennung. Wir können dann ja unsere Erfahrungen austauschen. Mit Teamarbeit über Foren habe ich schon gute Erfahrungen gemacht.

Gruß
Johannes

NumberFive
04.04.2004, 18:25
ich noch keine da mein idee niemand realiesierbar fand aber ich habe nix dagegen wenn es sich ändert. bin dabei muß dich melden bekommst auch den source wenn du ihn haben willst

Johannes
04.04.2004, 18:41
wunderbar. Der Grund, dass mich manche Leute für etwas verrückt halten, ist, dass ich nie gleich etwas als unmöglich abstemple. Das ist aber auch gleichzeitig der Grund, weshalb ich manchmal Dinge hinbekomme, die andere für unmöglich gehalten hätten ;-)

Also, wir machen unsere Bilderkennung :-)

Gruß
Johannes

NumberFive
04.04.2004, 21:01
Hallo die ersten versuche zur kanten erkennung bildlich fest gehalten

leider dreht das forum die attachments aber egal

Albanac
04.04.2004, 22:32
nicht schlecht - schaffst du das in echtzeit?

was ist das für ein roter punkt im analysierten bild?

NumberFive
04.04.2004, 22:55
Der rote punkt ist nach mein berechungen der hellste punkt.
nebenbei macht er noch ein bewegungs erkennung.

Na echt zeit ist es bestimmt nicht aber dafür das ich das in drei wochen geschrieben habe. Hier ein auszug aus dem log:

04.04.2004 23:02:27,962 Image end
04.04.2004 23:02:28,092 Image begin
04.04.2004 23:02:28,493 Image end
04.04.2004 23:02:28,613 Image begin
04.04.2004 23:02:28,733 Alive in GobalControl Thread
04.04.2004 23:02:28,733 Alive for RemoteControl
04.04.2004 23:02:28,733 Alive in SpeakThread
04.04.2004 23:02:28,994 Image end
04.04.2004 23:02:29,134 Image begin
04.04.2004 23:02:29,544 Image end
04.04.2004 23:02:29,624 Image begin
04.04.2004 23:02:29,745 Alive in GobalControl Thread
04.04.2004 23:02:29,745 Alive in SpeakThread
04.04.2004 23:02:29,745 Alive for RemoteControl
04.04.2004 23:02:30,005 Image end
04.04.2004 23:02:30,175 Image begin
04.04.2004 23:02:30,576 Image end
04.04.2004 23:02:30,656 Image begin
04.04.2004 23:02:30,776 Alive in GobalControl Thread
04.04.2004 23:02:30,776 Alive in SpeakThread
04.04.2004 23:02:30,776 Alive for RemoteControl
04.04.2004 23:02:31,036 Image end
04.04.2004 23:02:31,217 Image begin
04.04.2004 23:02:31,607 Image end
04.04.2004 23:02:31,617 Image begin
04.04.2004 23:02:31,697 Alive in GobalControl Thread
04.04.2004 23:02:31,697 Alive in SpeakThread
04.04.2004 23:02:31,697 Alive for RemoteControl
04.04.2004 23:02:32,008 Image end
04.04.2004 23:02:32,218 Image begin
04.04.2004 23:02:32,619 Image end
04.04.2004 23:02:32,619 Image begin
04.04.2004 23:02:32,699 Alive in GobalControl Thread
04.04.2004 23:02:32,699 Alive in SpeakThread
04.04.2004 23:02:32,699 Alive for RemoteControl
04.04.2004 23:02:33,019 Image end
04.04.2004 23:02:33,180 Image begin
04.04.2004 23:02:33,580 Image end
04.04.2004 23:02:33,700 Alive in GobalControl Thread
04.04.2004 23:02:33,700 Alive for RemoteControl
04.04.2004 23:02:33,700 Alive in SpeakThread
04.04.2004 23:02:33,700 Image begin
04.04.2004 23:02:34,081 Image end
04.04.2004 23:02:34,091 Image begin
04.04.2004 23:02:34,491 Image end
04.04.2004 23:02:34,692 Image begin
04.04.2004 23:02:34,752 Alive in GobalControl Thread
04.04.2004 23:02:34,752 Alive for RemoteControl
04.04.2004 23:02:34,752 Alive in SpeakThread
04.04.2004 23:02:35,092 Image end
04.04.2004 23:02:35,102 Image begin
04.04.2004 23:02:35,553 Image end
04.04.2004 23:02:35,613 Image begin
04.04.2004 23:02:35,733 Alive in GobalControl Thread
04.04.2004 23:02:35,733 Alive in SpeakThread
04.04.2004 23:02:35,733 Alive for RemoteControl
04.04.2004 23:02:36,044 Image end
04.04.2004 23:02:36,214 Image begin
04.04.2004 23:02:36,615 Image end
04.04.2004 23:02:36,615 Image begin
04.04.2004 23:02:36,705 Alive in GobalControl Thread
04.04.2004 23:02:36,705 Alive in SpeakThread
04.04.2004 23:02:36,705 Alive for RemoteControl
04.04.2004 23:02:36,995 Image end
04.04.2004 23:02:36,995 Speak -> incomming messsage cam is offline

Release version aber mit bidlschirm ausgabe die kann man nach auf dem roby auch noch abschalten

Johannes
05.04.2004, 10:26
Ja, sieht nicht schlecht aus. Den weißen Karton kenne ich übrigens :-)

Ich habe im Internet vor Kurzem eine Kamera gesehen, auf die man Programme spielen, die die Bilder verarbeiten können. Das Ding ist hochprofessionell aber teuer. Ich bin gerade in der Schule, aber zu Hause habe ich den Link liegen und poste ihn heute nachmittag.

Gruß
Johannes

Johannes
05.04.2004, 10:28
An dem Source wäre ich übrigens interessiert. Ich habe zwar vor, den Roboter mit Java zu programmieren, aber die Bilderkennung wird mit C++ wahrscheinlich schneller laufen. Aber diese Sprache muss ich dann erst noch lernen...

Johannes
05.04.2004, 16:51
So, habe den Link gefunden: http://www.matrix-vision.com/mvcampc.htm

NumberFive
06.04.2004, 19:59
wenn du dir leisten kannst. aber mal ganz ehrlich selbst wenn ich das geld hätte würde ich es anders machen aber es ist dein entscheidung.
na wenn du erst mit C++ anfäng nustz der code dir im moment wenig da über habe nicht dokumentiert ist. und multi threading programmierung ist nicht ohen, ich glaube das geht in java garnicht oder ?. da hier sich doch einge tummel die lust auf sowas habe könnte wir vielleicht ja mal ein treffe organisieren wo man über cameras und roboter reden können.
würde auch pc programm und cam mit bringen.

Gruß

NumberFive
06.04.2004, 23:15
Hilfe wie rechnent man das rauches aus ein viedeo bild
habe den fehler für das traking gefunden ich habe ein rauchen im bild
gibt es cams die nicht rauschen ? kann ich dass rauschen raus rechnen

?!?!?

Gruß

Albanac
06.04.2004, 23:19
ich denke rauschen wirst du nur los wenn du allgemein auf schärfe verzichtest (das ganze bild unscharf machst)

Obwohl es in einigen Bildbearbeitungsprogrammen "Rauschen entfernen" als Filter gibt - also begrenzt möglich ists schon

recycle
07.04.2004, 01:40
Hilfe wie rechnent man das rauches aus ein viedeo bild


ich glaube es bringt es dir nichts, das Rauschen rauszurechnen.

Rauschen heisst ja, dass du dort keine eindeutigen Daten hast.
Einige Grafik- oder Videoprogramme haben Rauschfilter, damit die Bilder schöner aussehen. Die gehen aber mehr oder weniger nach optischen Askekten vor und ersetzen das Rauschen durch Bildpunkte die für das menschliche Auge irgendwie dahin passen.

Du willst aber doch eigentlich gar nicht, dass die Bilder schön aussehen, sondern willst aus den Daten die Umgebung deines Roboters berechnen.

Ein Rauschfilter würde dir das Rauschen nur auf Kosten der Rechenzeit durch andere falsche Daten ersetzen und dein eigentlicher Algorythmus muss dann mehr Daten weiterverarbeiten die zusätzlich auch noch falsch sind.

Eigentlich bräuchtest du einen Algorythmus mit dem du feststellen kannst, welche Daten Rauschen sind, damit du die gleich von der weiteren Berechnung ausschliessen kannst.

Theoretisch müsste es doch gehen, dass man immer mehrere benachbarte Pixel vergleicht und dann die die aus der Reihe fallen bei der weiteren Verarbeitung ausschliesst.
Mustererkennung müsste ja eigentlich auch möglich sein, wenn einige Pixel fehlen.
Naja, einfach wird das programmiertechnisch garantiert nicht. Ich glaube da hast du dir ganz schön was vorgenommen.
Intel stellt auf ihren Webseiten irgendwelche Algorithmen, ein SDK oder irgendsowas für Bilderkennung zur Verfügung. Allerdings auch nichts fertiges, soweit ich das verstanden habe entwickeln die da selber dran.



gibt es cams die nicht rauschen ?


Ich glaube die gibts nicht wirklich, höchstens welche die weniger rauschen.
Um das sichtbare Rauschen bei Digi-Cams gering zu halten braucht man vor allem gute Beleuchtung und ein lichtstarkes Objektiv.

Meine erste Webcam mit der ich vor Jahren mal rumgespielt habe, machte z.B. nur bei hellem Tageslicht einigermassen erträgliche Aufnahmen. Bei künstlichem Licht konnte man einen 200W Hallogenstrahler auf das Motiv richten und die Aufnahme war immer noch total verauscht.
Etwas später habe ich mir dann eine teurere Webcam gekauft, die war dann zwar etwas besser, aber wenn man keine Flutbeleuchtung angemacht hat, war da bei Kunstlicht auch noch nicht viel zu holen.

Vor ein paar Tagen habe ich Aufnahmen mit einem relativ guten CamCorder gemacht. Ohne Tageslicht bei normaler Zimmerbeleuchtung ist da auch noch reichlich Rauschen in der Aufnahme zu erkennen.
Ich habs dann mal aus Spass mit einem 500W Halogenstrahler versucht. Da war die Aufnahme dann schon wesentlich besser.
Für deinen Robby dürfte dir das aber nicht helfen.
Mal abgesehen davon, dass so Halogenstrahler etwas zuviel Strom aus den Akkus saugen dürfte, würdest du es dann auch nur noch mit Sonnenbrille aushalten wenn dein Robby unterwegs ist ;-)

Was eventuell helfen könnte ist in der Bildfrequenz runterzugehen, falls deine Software das unterstützt und in längere Belichtungszeiten umsetzt.
Ich bin mir nicht mehr 100% sicher, aber ich glaube das hat bei meiner Webcam damals geholfen.

Das könnte sich dann aber wieder negativ auswirken, wenn dein Robby sich während der Aufnahme bewegt.
Verwackelte Bilder eignen sich sicherlich noch schlechter zur Weiterverarbeitung als verauschte.

Johannes
07.04.2004, 08:06
Naja, mit Programmierung kenne ich mich schon ziemlich gut aus, und natürlich geht multithreading mit Java :-)

Das Geld für die Kamera habe ich natürlich nicht, aber das könnte eine Lösung für die Bildverarbeitung sein, die sonst zu lange dauern würde. Ich kenne mehrere C-verwandte sprachen.

Ein Treffen wäre vielleicht wirklich nicht schlecht, aber wo wohnt ihr denn?

Gruß
Johannes

NumberFive
07.04.2004, 21:12
Hallo recycle

das rausche ist bei der objekt erkennung wahrscheinlich wirklich nicht das problem (das habe ich nocht nicht programmiert). Es ist beim erkennen von bewegung das problem. Aber ich habe seid gestern ein neuen algorythmus gefunden den werde ich mal testen. Mag sein das es draussen umd am tage nicht so ein problem ist mit dem rauschen aber das ist doch fern jeden realistischen situation. Das SDK von intel habe ich mir an gesehen aber da tut nicht wirklich viel. Ausserdem bin ich ehrlich schreiben ich mein prg lieber selber ich weiß ist ne macke von Mir.

Hallo Jahannes,

das ding was du dir vorstellst ist auch ein ganz normaler pc ich weiß nicht was da schneller sein soll. das mit dem wohnort kommt per mail. Aber ich würde für so ne session schon ziemlich weit fahren wenn es ne möglichkeit zu pennen gibt bzw wo ich im auto penne kann (ist ein Bett drin).

Gruß

recycle
07.04.2004, 21:43
das rausche ist bei der objekt erkennung wahrscheinlich wirklich nicht das problem (das habe ich nocht nicht programmiert). Es ist beim erkennen von bewegung das problem.


Was das erkennen von Bewegungen angeht, gibt es Programme die man in Verbindung mit einer Webcam als eine Art Alarm-Melder einsetzen kann.

Mit irgendso einem Programm habe ich damals mit meiner Webcam auch mal rumgespielt. Das konnte man so einstellen, dass es immer wenn jemand vor der Webcam rumgehampelt ist ein Bild machte und per E-Mail versendet oder auf einen FTP-Server hochgeladen hat.

Ich glaube das Problem mit dem Rauschen war da durch eine Art Schwellwert gelöst. Man könnte einstellen wieviel sich ein Bild zum vorherigen ändern durfte ohne, dass es als Bewegung erkannt würde.
Das gleiche galt für Helligkeitsänderung, denn nur weils dunkel wurde sollte ja auch nicht gleich der Alarm losgehen.

Wenn du zwei Bilder ohne Bewegung hintereinander machst und dein Programm die vergleicht, müsstest du ja ungefähr herausfinden können wie gross der Rauschanteil ist und kannst das als Schwellwert nehmen.

Ich vermute nur, bei dir wird das nicht ganz so einfach sein. Wenn ein Mensch vor einer Kamera rumturnt der vorher nicht da war, ändert sich ja sehr viel an dem Bild, dass heisst der Schwellwert kann so hoch sein, dass Rauschen keine Rolle spielt.

Bei geringeren Bewegungen die schnell nacheinander aufgenommen werden, ändert sich zwischen den einzelnen Aufnahmen nicht so viel, da macht das Rauschen dann einen grösseren Anteil aus.

Aber vielleicht kannst du ja auch Bilder die weiter auseinander liegen vergleichen, also nicht das aktuelle Bild mit dem vorherigen, sondern mit einem von vor ein einer oder 2 Sekunden.
Dann sollte das Rauschen wieder einen geringeren Anteil an der Bildänderung haben.

Was ich mit allerdings gar nicht vorstellen kann ist, wie du Bewegungen erkennen willst, während dein Robby mit der Kamera sich selber bewegt.



das rausche ist bei der objekt erkennung wahrscheinlich wirklich nicht das problem (das habe ich nocht nicht programmiert).


Das ist vielleicht noch ein anderer Ansatz.
Wenn du erst die Mustererkennung machst, müstest du doch eigentlich nur noch die Lage der erkannten Muster auf dem Gesamtbild vergleichen und weisst dann was sich bewegt hat und was nicht.

NumberFive
07.04.2004, 21:59
Wenn du erst die Mustererkennung machst, müstest du doch eigentlich nur noch die Lage der erkannten Muster auf dem Gesamtbild vergleichen und weisst dann was sich bewegt hat und was nicht.


genau dahin werde ich es versuche zu ändern. zu bewegung erkenn wenn der robi fährt da ist das egal. geht nur darum wem er steht da soll erkennen wenn jemand kommt.

Gruß

Albanac
08.04.2004, 11:02
So ne Uni hat auch ein Bilderkennungssystem gebaut

http://www.roboter-teile.de/Shop/pd122651047.htm?categoryId=2


135€ - aber von der qualität glaube ich seinen preis wert...

Johannes
08.04.2004, 15:10
Hm man müsste irgendwie die Bewegungen rausrechnen, die durch die Eigenbewegung zu Stande kommen.

Die Bewegungserkennungen, die einfach die Bilder vergleicht und dann sagt, Bewegung ja oder nein, sind aber nicht besonders sinnvoll, oder habt ihr da eine konkrete Anwendungsidee?

Ich denke, man müsste auf dem Kantenerkennungsalgo (oder Eckenerkennungsalgo, den ich mal programmiert habe, der aber nicht so gut funktioniert hat) aufbauen und dann die Bewegungen der Ecken bzw. Kanten vergleichen. Ich denke, dass man so viel eher die Eigenbewegung rausrechnen könnte. Außerdem wäre es so möglich, wirkliche Objekte zu erkennen. Die Kanten, die sich zueinander relativ gleich bewegen, gehören wahrscheinlich zu EINEM Objekt. So ein Objekt könnte man glaube ich vom Hintergrund ganz gut trennen, da sich dieser auch langsamer bewegt als das im Hintergrund.

Ich denke schon, dass die Cam mit dem eingebauten Rechner schneller Programme ausführt. Schließlich verbraucht das schlanke Betriebssystem weniger Prozessorkapazität als das ganze Windows. Ich werde mal schauen, ob ich im Internet weitere Infos zu dieser Cam finde.

Wie sieht es eigentlich aus, Numberfive, mit einem Mainboard für den mobilen Einsatz? Hast du schon eine Idee für die Stromversorgung etc.?

Gruß
Johannes

Johannes
08.04.2004, 15:15
@Albanac
Das ist die CMUcam, aber die liefert nicht so gute Ergebnisse. Für einfache Lösungen ist sie wohl gut, aber wenn Genauigkeit gefragt ist, klappt das nicht mehr so gut. Und ich brauche leider Genauigkeit...

Gruß
Johannes

Joerg
08.04.2004, 15:56
Hi Johannes,

Albanac meinte die CMUcam2, mit doppelter Auflösung (176 x 255) und einigen anderen neuen Features.

Um zu eurem Problem zurückzukommen, habt ihr schon mal den LineMode probiert. Hier bekommt ihr dann von den interessierenden Punkten ein Rohbild zurück, was im Host ausgewertet werden kann.

Viele Grüße
Jörg

Johannes
08.04.2004, 16:53
Moin,
um Missverständnissen auszuweichen. Die CMUcam, auch die erste Version, ist wirklich gut und für die normalen Hobby-Anwendungen gut zu gebrauchen.
Trotzdem muss man sagen, dass man einfach nicht erwarten kann, mit der CMUcam 1 Farbpositionen genau ermitteln zu können. Hiermit hatte ich große Probleme. Das bezieht sich alles auf die Version 1, mit der neuen Cam habe ich selbst noch keine Erfahrungen gemacht, ich kann mir aber gut vorstellen, dass sich die Cam in ihrer zweiten Version stark verbessert hat.

Ich habe keinesfalls die Absicht, die CMUcam schlecht zu machen. Gut, dass du, Jörg, mich darauf hingewiesen hast. Ich möchte keine schlechte Werbung machen, da die Cam keinesfalls schlecht ist. In diesem Thread geht es aber um fortgeschrittene Bildverarbeitung, und für die ist die CMUcam ungeeignet, aber auch nicht gedacht. Auch mit einer guten Webcam kann man schließlich keine Kinofilme drehen.

Gruß
Johannes

P.S. Jörg, ebenfalls frohe Ostern!

Johannes
09.04.2004, 10:54
Moin!
@numberfive
Ich hatte vorhin eine spontane Idee, allerdings weiß ich nicht, ob's was bringt.
Was wäre, wenn man einen Thread verwendet, der die Kameradaten entgegen nimmt und diese dann an unterschiedliche Thread weitergibt?

Beispielsweise könnte es zwei Verarbeitungsthreads geben. Der eine bekommt immer die ungeraden, der andere die geraden Frames.

Nur ne Idee
Gruß
Johannes

NumberFive
10.04.2004, 08:39
Hallo Johannes,

könnte man sicher tut nur ist die Frage ob du aus dem rechner noch power übrig hast würde es zeit mässig entschärfen aber mehr auch nicht
mehr als 100 % CPU bekommst du nicht.


Ich denke schon, dass die Cam mit dem eingebauten Rechner schneller Programme ausführt. Schließlich verbraucht das schlanke Betriebssystem weniger Prozessorkapazität als das ganze Windows. Ich werde mal schauen, ob ich im Internet weitere Infos zu dieser Cam finde.


Entweder habe ich mich verlesen oder du hast mehr gesehen wie ich da kannst du jedes betriebs system auf spielen auch windows. So finde past die aussage nicht so ganz.

Johannes
10.04.2004, 11:25
>könnte man sicher tut nur ist die Frage ob du aus dem rechner noch power übrig hast würde es zeit mässig entschärfen aber mehr auch nicht
mehr als 100 % CPU bekommst du nicht.

Das ist klar. Nur laufen auf dem Rechner ja noch mehrere Threads als von dem eigenen Programm ab. Wenn nun das eigene Programm mehrere Threads hat, bekommt es nicht nur 1/10 (bei 9 Windows Threads) sondern vielleicht 1/2 (bei ebenfalls 9 eigenen Threads). Die Aufteilung meine ich.

Ich bin mir da nicht sicher, aber ich könnte mir vorstellen, das das klappt. Trotzdem wird dabei eine kleine Zeitverzögerung auftreten.

Gruß
Johannes

P.S. zur Cam, hast Recht, mein Fehler. Trotzdem muss diese Cam besser für Bildverarbeitung geeignet sein, sonst würde das Produkt ja kaum Sinn machen und die Bemerkung "Real time image preprocessing" nicht passen.
Naja, das Ding ist sowieso zu teuer, und ob es dann am Ende die gewünschten Ergebnisse liefert, ist auch nicht klar. Aber vom Prinzip finde ich das Ding gar nicht schlecht. Zwei von den Kameras könnten die Daten per Lan austauschen und dann Objekte erkennen. Ob das mit einem Rechner und zwei Webcams klappt, muss man ausprobieren.

NumberFive
10.04.2004, 12:45
Hallo,

ich arbeite schon daran dasich die bilder (rohdaten) per tcp verschicken kann. aber irgend wo sind leider leistungs grenzen des betriebssytems.

ne bessere aufteilung der resource sollte so Microsoft auch mit der Prioritäten erreichen lassen. aber ich denke jetzt muuß erstmal der algorythymus richtig laufen dann machen wir den den rest. dann komm die geschwindigkeit dran.

Gruß

Johannes
10.04.2004, 12:52
Ok, mir ist vorhin mein Bildschirm durchgebrann (erst verzieht sich das Bild, dann wird alles schwarz, es knallt und viel Rauch tritt aus, Gestank verbreitet sich...), muss mich also auch nochmal darum kümmern. Jetzt habe ich nur einen 17-Zoller, aber ich wollte schon immer einen TFT....

Dann werde ich mir aber den Code anschauen.

Gruß
Johannes

NumberFive
10.04.2004, 13:00
naja bis dienstag wird das woll nix werden. vielleicht gibt es bis dahin ja auch wieder neue erkenntnisse. werde jetzt die cam wieder an den rechner hängen.

NumberFive
10.04.2004, 16:50
Hallo Leute es gibt neue Bilder

NumberFive
10.04.2004, 16:53
noch einmal

leider dauert das fast ne halbe minute

NumberFive
10.04.2004, 18:47
Leider muß te ich gerade fest stelle das pfade nicht geschlossen
sind so ab in die Mülltone.

frust ](*,)

Johannes
13.04.2004, 11:04
Moin Numberfive,
ich hatte leider noch keine Zeit, genau den Code anzuschauen, aber könntest du vielleicht kurz erklären, wie dein Verfahren läuft? Suchst du einfach nach Pixelpaaren, bei denen der Farbunterschied sehr groß ist? Ich weiß nämlich nicht genau was du mit

>das pfade nicht geschlossen

meinst.

Gruß
Johannes

Johannes
13.04.2004, 11:34
Was ich mir neulich überlegt habe, ist, dass man vielleicht nicht versuchen sollte, die Kanten zu erkennen, sondern die Flächen. Ob dieses Verfahren im Endeffekt schneller laufen würde, weiß ich nicht. Jedenfalls müsste man immer die benachbarten Pixel vergleichen, wie wohl auch bei der Kantenerkennung. Ich werde mal darüber nachdenken... :-)

Gruß
Johannes

NumberFive
13.04.2004, 12:38
Hallo Johannes,

im schluß soll das ja so laufen. Es gibt ein so genannten Chain algorythmus der sollte hier zu ein satz kommen. Ich laufe durch das bild
(besteht nur noch aus drei farben). wenn ich ein Kannte finde startet
ich den Chain von diesem punkt. (Ein pfad wird geöffnet). da versuche
ich der kann bis zu schluss zu folgen dann währe der pfad geschlossen und ich kann einen Fläche analyse machen und so bestimmen was das objekt ist. nur leider finde ich nicht mehr an den ausgangspunkt zurück.
Deshalb die Aussage die Pfade sind nicht geschlossen. selbst bei den einfachen bilder nicht immer bzw. nicht oft genung um es als zu verlässig zu betrachten.

Johannes
13.04.2004, 16:07
ach so, liegt das daran, dass der Algo schlecht ist oder liegt es an der Umsetzung?

NumberFive
13.04.2004, 17:15
Ich denke die Umsetzung ist das prob. den es hat damit einer sein diplom gemacht. also kann der alogorythums nicht so schlecht sein. wo bei im meine augen der einfaches und aber auch der genialste ist den ich bis jetzt gefunden habe. vor allem ist da die flächen berechnung dabei leider finde ich die Quelle gerade nicht ist irgend wo im chaos verschunden

Johannes
13.04.2004, 18:49
Was passiert eigentlich, wenn du zwei Kreise hast? Funktioniert das auch?

Habe ich das richtig verstanden, das praktisch nicht die Pixel von links nach rechts, von oben nach unten, durchgearbeitet werden, nachdem die erste Kante gefunden wurde?

NumberFive
13.04.2004, 19:32
So neue ergbnisse es liegt am code.

das mit den kreisen kommt gleich muß erst welche malen.

NumberFive
13.04.2004, 19:48
und nun die zwei kreise

Johannes
14.04.2004, 15:35
Na, gar nicht schlecht. ;-) Nur die kleinen Fehler müssen noch raus.

Gruß
Johannes

hoer173
14.04.2004, 17:48
ich geb dir mal jetzt n tipp..

wenn du n roboter baun willst der n computer mitführt dann lies mal!

du nimmst dir wie ich n altes notebook...

25mhz hat meins...8mb ram,127mb festplatte.. windows 3.11
ein siemens pcdn4... mit farbdisplay und diskettenlaufwerk.
com1 lpt1 (+ lpt2 und lpt3 wegen 2 io-pcmcia-karten.

ne packung 1,44mb 3,5" disketten...
1 c control basic
2 m units
n haufen schirttmotoren...
n notebook netzteil (30V 8A)
1ccd camera

das reich fürs erste...
achja du kannst auch auf eine io karte verzichten und eine 16bit lan karte einsetzten dazu später..


so du hast jetzt 16 digitale ports durch 2 druckerschnittstellen... die multiplext du ersma.. wie bei einer led anzeige da kannste auch 144 ports vom computer schalten per schieberegister.. muss ein 8bit sein.

dann schanppst dir die basic unit und verbindest die mit dem computer.
4 digitale ports für 2 m units.. man will ja leistung haben!

mmh wa brauchst du jetzt erstmal..

schrittmotoren!

AEG SO26/48 benutze ich.. bei 20V und 6A und halbschritt biste gut unterwegs!

jetz rogrammierste dir ne schirttmotoransteuerung mit dazugehöriger platine... es reichen 2 l298D!

bednek du brauchst ein spannungsteiler!!!

mit den druckerports kannst du jetzt noch andere feine sachen machen!

z.b. wenn dir irgendwann die digitalen ports ausgehn (was ich nicht glaube) kannst du auf die zurückgreifen!

joaa...

dann schreibste dir halt auf vb n programm was mit der c control komuniziert und befehle reinschickt...

dann baust du dir ne diskette die wenn du sie reinsteckst windows hochfährt und dann eine anwendung start.. z.b. staubsaugen.. dann schickt der computer die daten an die c control deines zimmers die der c omputer vorer über ultraschall und ine 360° punktdrehung zugeführt bekommen hat...

mit diesen daten rattet dein computer eine routine durch mit der er den weg vorgibt durch dein zimmer.

die anderen units dienen dann nurnoch als helfer damit kannst du dir ein system mit mehr als 200kb basteln.. wenn du dann auchnoch jeden chip umprogrammierst. wen du das kannst.. dan machst du alles in assambler und schikst von der basic unit daten über den digitalport an die m unit direkt ran an den anschluss für den rs232 wandler!
natrülich musst du dire dafür auch einen code schreiben.. aber gibts schon glaub ich!

und dann is alles möglich komm ersma so weit

hrrh
14.04.2004, 18:43
25 MHz sind leider zu wenig fuer videoverarbeitung in echtzeit. . die c-controll kan man sich auserdem auch sparen. dos ist auserdem viel schneller als windows und vor allem ist die hardwareansteuerung einfacher. sonst aber gar nicht so schlecht. bei festplatten wuerde ich auch aufpassen :)

Johannes
14.04.2004, 19:31
Moin,
leider habe ich keinen Notebook, den ich dafür verwenden könnte.

Was für Akkus hast du eigentlich bei deinen 6A-Schrittmotoren?

gruß
Johannes

recycle
14.04.2004, 19:34
25 MHz sind leider zu wenig fuer videoverarbeitung in echtzeit.


Na aber das macht doch nichts.
Da ein altes 25 Mhz Notebook mit ziemlicher Sicherheit weder AV Eingang noch USB Anschluss für eine Kamera hat und die TV-Karte von NumberFive wohl auch kaum reinpasst, muss er die Bilder sowieso von Diskette einlesen. Dann kann er sie doch nach der Aufnahme schnell auf dem normalen Rechner durchrechnen, bevor er sie auf Diskette speichert und den Robby damit füttert ;-)

OK, wenn das in Echtzeit ablaufen soll, muss man ziemlich schnell die Disketten wechseln, aber wenn Hoer173 gerade keine Spannungen teilen muss, hilft er da bestimmt gerne bei ;-)

hrrh
14.04.2004, 20:47
@recycle: dann kan man den roboter aber gleich manuell steuern :)
es gab digiltalkameras (und webcams) mit serieller schnittstelle, die koennte man sicher irgendwie dazu bringen, dass sie in regelmaesigen abstaenden ein foto machen und das an den laptop senden. nur die bildauswertung muss man dann sehr, sehr cpu-schonend programmierden :( oder viel geduld haben

recycle
14.04.2004, 22:15
@recycle: dann kan man den roboter aber gleich manuell steuern

Klar, über die Cursor-Tasten. Dafür soll der Notebook doch überhaupt nur an die C-Control angeschlossen werden ;-)



es gab digiltalkameras (und webcams) mit serieller schnittstelle, die koennte man sicher irgendwie dazu bringen, dass sie in regelmaesigen abstaenden ein foto

Ich hätte da noch einen alten Scanner für den Parallelport. Wenn der Robby nah genug an die Objekte ranfährt, kann er sie ja einscannen ;-)

Ich befürchte nur, dass das NumberFive alles überhaupt nicht interessiert.
Wie er seinen Robby aufbauen will und die Bilder in den Rechner kriegt, weiss er ja und bei der Software für die Bildverarbeitung hilft das alles nicht wirklich weiter.

NumberFive
15.04.2004, 19:29
Hallo Leute,

ok man mag das Projekt ergeizig oder vielleicht auch als verrückt titolieren aber es ist mir ernst damit und ich denke das ich auch schon erfolge zu mindestens im Software bereich habe. Die Hardware zum Steuern ist auch in mache leider mußte ich da in den letzten tagen massive änderungen vor nehmen das sich der ein oder andere gedanke
leider nicht halten ließ das gebe ich zu. Anstandt der c-control wird es ein mega8 oder ähnlich geben. Es gibt keine Schritt motoren sondern 12V DC motoren und natürlich wird es auch noch andere sensoren geben nicht nur die cam die kommt halt auch drauf. wenn sich hier wirklich dafür interesiert gebe ich gerne mehr details der planung bekannt.

Gruß

PS: Eigndlich hatte ich gedacht mann könne hier auch nicht ganz normale ideenen diskutieren aber leider stört das wohl einige leute hier. Schade

Johannes
15.04.2004, 20:32
Ich weiß nicht, was das an der Idee nicht normal sein soll.

Aber es ist wohl generell in Roboterforen üblich, Leuten, die etwas Aufwändigeres vorhaben, zu raten, erst einmal klein anzufangen. Allerdings muss man auch verstehen, wenn es manchen Leuten (zum Beispiel auch mir) nicht reicht, einen Roboter zu bauen, der eine Linie verfolgen kann.

Sowas ist für mich ein Subsystem, kann aber für mich kein Ziel sein. Damit will ich nicht ausdrücken, dass ich mehr drauf habe als andere, aber ehrgeiziger bin. Auf schnelle Erfolgserlebnisse kann ich deshalb verzichten und mehrere Jahre an etwas größerem arbeiten.

Und bin nicht der Meinung, dass für soetwas hier kein Platz sein sollte, zumahl es anscheinend mehrere Leute mit meiner Einstellung gibt. Dieses Forum ist mir in dieser Bezihung eigentlich noch nicht negativ aufgefallen.

Gruß
Johannes

recycle
15.04.2004, 20:41
@NumberFive


Eigndlich hatte ich gedacht mann könne hier auch nicht ganz normale ideenen diskutieren aber leider stört das wohl einige leute hier. Schade

Falls sich das auf die Kommentare von hrrh und mir bezieht, hast du da etwas in den falschen Hals bekommen.

Unsere Kommentare drehen sich gar nicht Zweifel oder Kritik an deinem Projekt, sondern nur um das Posting von hoer173 und seinen Vorschlag die Software zur Bilderkennung durch eine mit 144 digital verschobenen Registerports bestückte, spannungsteilergesteuerte Floppy-Transportbox zu umgehen.

Hoer173 wollte dein Projekt aber sicherlich auch nicht kritisieren, sondern hat vermutlich nur vergessen mal in den Thread reinzusehen bevor er die Überschrift beantwortet.


@Johannes

Ich weiß nicht, was das an der Idee nicht normal sein soll.
Es hat überhaupt niemand an der Idee von NumberFive gezweifelt (siehe oben)

NumberFive
15.04.2004, 20:45
Aber es ist wohl generell in Roboterforen üblich, Leuten, die etwas Aufwändigeres vorhaben, zu raten, erst einmal klein anzufangen. Allerdings muss man auch verstehen, wenn es manchen Leuten (zum Beispiel auch mir) nicht reicht, einen Roboter zu bauen, der eine Linie verfolgen kann.

Sowas ist für mich ein Subsystem, kann aber für mich kein Ziel sein. Damit will ich nicht ausdrücken, dass ich mehr drauf habe als andere, aber ehrgeiziger bin.

Ich schliese mich deiner meinung an. wie gesagt der die cam ist nur ein teil. Ja das teil muß morgen nicht Fertig sein. Also johannes probieren wir weiter und träumen davon das es tut. Den hier ist platz für träume das ist auch meine erfahrung. Nur solche Kommentare frusten zu mindestens mich.

Gruß

NumberFive
15.04.2004, 20:47
So ok
lassen wir das Thema habe vielleicht wirklich in den falsche hals bekommen

Johannes
16.04.2004, 13:38
Also, back to topic.
Ich habe vor kurzem einen Prospekt von einer Firma in die Hände bekommen, die kleine Computer produziert. Leider stehen keine Preise dabei und auf meine Mail haben die Leute immernoch nicht geantwortet. Aber wird so im 600-900€-Bereich liegen. Ist teuer, aber vielleicht kriege ich das doch irgendwie finanziert. Da ich einige Fragen zu den Video-In-Ports habe, hatte ich schon mal einen Thread gestartet: https://www.roboternetz.de/phpBB2/viewtopic.php?p=10240#10240

Es scheint aber keiner Bescheid zu wissen.

Mcih würde interessieren, ob mit so einem Ding Bildverarbeitung möglich wäre, schließlich hat das Ding 3 Video-Ins und je nach Prozessor bis zu 1,6GHz. Und der Stromverbrauch ist geringer und unproblematischer als bei einem normalen Mainboard.

Gruß
Johannes

P.S. Ist es möglich, dass wir diesen Thread verschieben und z.B. nach "Bildverarbeitung auf mobilem Roboter" umbenennen?

NumberFive
16.04.2004, 20:51
Ehrlich gesagt ich weiß nicht ob man ihn um bennen kann ich frag mal frank

Gruß

Frank
16.04.2004, 23:02
Hi,

ja man kann einen Thread umbenennen. Immer der, welcher den Thread eröffnet hat, kann diesen ersten Beitrag mit EDIT (rechts oben) editieren und dabei den Titel ändern.
Manchmal ist das sogar ganz sinnvoll. Ich hab das von mir aus auch schon einige male gemacht als ich festgestellt habe das Titel so garnicht mehr zum Schwerpunkt des Thread´s paßt.

Ich nenn ihn mal um!

Johannes
17.04.2004, 10:59
Wunderbar, danke. Aber verschieben kann man wahrscheinlich nicht selber?

Gruß
Johannes

Frank
17.04.2004, 22:06
Stimmt, das muß ein Moderator oder Admin machen.

Johannes
18.04.2004, 09:47
Ok, wenn dann wieder so ein Fall auftritt, wende ich mich direkt an dich ;-)

Gruß
Johannes

NumberFive
18.04.2004, 21:30
neuer algorytmus

NumberFive
18.04.2004, 23:26
so jetzt haben wir canny im griff.
wenn wir jetzt noch jemand da draussen erklärt wie man den
Chain alorytmus so programmiert das er mit 1 punkt liene funktioniert
kann ich fläschen aus rechenen und ob jekte erkennen da ein ziel finden.

leider liefert er bei auch nach einer halben stunde kein brauch bares ergebnis. die neues software ist zwar nicht mehr so schnell aber liefer bei mein missen beleuchtung noch erbnisse mit den was an fangen kann.
und das rauschen der cam stört nicht mehr so

Johannes
19.04.2004, 09:32
Ja, sieht gut aus. Eine halbe Stunde braucht er? Wie funktioniert der neue Algo? Oder selber Algo nur nochmal etwas anders programmiert?

Gruß
Johannes

hrrh
19.04.2004, 19:58
1. was fuer ein PC wird verwendet (es macht einen unterschid ob man einen P1 oder einen PC mit 4X Atlon64 verwendet)
2. ich kann auf den bildern fast nix erkennen (soll keine kritik sein) soll das so sein (und der roboter kann doch damit etwas anfangen) oder ist das ein fehler?
3. ist es moeglich, dass sich das programm noch beschlaeunigen laesst? entv. sind unnoetige pausen oder unnoetige rechenoperationen dafuer verantwortlich. manchmal werden programme aucgh schneller, wenn man vor dem compeliren alle komentare und unnoetige leerzeilen im quelltext entfernt. es kann aber auch sein, dass das programm sich nicht viel schneller machen laesst. 2 bilder pro stunde reichen warscheinlich nicht aus (aber trozdem gratuliere ich zu dem teilerfolg)

NumberFive
19.04.2004, 20:32
oh da habe ich mich wohl falsch ausgedrükt das bild bekomme ich in ca.
250 msec. das bild ist mit absicht so denn der roboter kann ja nur mit kannte was anfangen und natvigieren. wenn auf diesem bild den Chain alogrytmus für die fläschen berechung los lassen dann dauert es eine halbe stunde und es kommt nix sin volles raus. Ich hoffe jetzt konnte man es verstehen.

auszug aus dem LOg:
19.04.2004 01:29:14,197 Image begin
19.04.2004 01:29:14,197 Image convert begin
19.04.2004 01:29:14,367 Image convert end
19.04.2004 01:29:14,688 Image end

das porblem ich muß fläschen bereichen um ding wieder erkenn zu können an bei ein bild das es was deutlicher mach hoffe ich.

Also noch mal die Frage wie berechne ich die fläsche des Kreisen wenn ein nur ein gitter mit 1 und 0 habe.

19.04.2004, 23:01
das porblem ich muß fläschen bereichen um ding wieder erkenn zu können an bei ein bild das es was deutlicher mach hoffe ich.

Also noch mal die Frage wie berechne ich die fläsche des Kreisen wenn ein nur ein gitter mit 1 und 0 habe.


Die Fläche eines Kreises ist pi*r^2, aber um die auszurechnen, müsste der Robby ja erst mal wissen, dass es überhaupt ein Kreis ist.

Eine Möglichkeit die Fläche bei unbekannter Geometrie (Form) abzuschätzen, wäre einfach die Pixel zu zählen und ins Verhältniss zur Gesamtzahl der Pixel des Bildes zu setzen. Wenn die Umrisslinien wirklich geschlossen sind, müsste das halbwegs klappen.

Nur weiss ich nicht so richtig, was es dir nutzt die Fläche zu wissen. Bei einem bekannten Objekt, könnte man daraus auf die Entfernung rückschliessen, aber dafür müsste das Objekt erst mal bekannt sein.

Kann es sein, dass du gar nicht "Fläche berechnen" sondern eher "Form/Umriss erkennen" meinst?

Weisst du denn schon genau, was du mit der Bilderkennung genau bezwecken willst?
Soll der Robby darüber
- Entfernungen ausrechnen?
- Gegenstände finden?
- sich orientieren?
- Bewegung erkennen

Als erstes würde ich nach der berechnung des Umrisses versuchen die Farbe wieder ins Spiel zu bringen. Wenn die umrissenen Fläche im originalen Bild irgendeinen rot-Ton hat, weisst du dann schon mal, dass es nur irgendein roter Gegenstand ist.
Wenn du den Robby mit einer Datenbank fütterst die möglichst viele Informationen über die vorhandenen Gegenstände in seiner Umgebung enthält, kannst du so schon mal sämtliche Dinge die nicht rot sind ausschliessen.

Als nächstes könntest du dann vielleicht das Verhältniss von Höhe, Breite und Diagonale aus dem Umriss ermitteln. Wenn die ungefähr gleich sind, könntest du in der Datenbank die rechteckigen Gegenstände auschliessen. Wenn du wie wie im Bild oben zwei Umrisse gleichzeitig hats, kannst du so sicher noch mehr Dinge ausschliessen und irgenwann bleibt mit etwas Glück nur ein Gegenstand übrig der es eigentlich sein müsste.

Wenn er in der Datenbank nichts entsprechendes findet, muss der Robby halt eine neue Aufnahme machen und von vorne anfangen.

Eventuell kann man dann noch mehrere Gegenstände miteinander verknüpfen. Wenn er z.B. links die 2 Kreise als Fahrrad identifiziert hat, aber rechts den quadratischen Umriss der Zimmertür nicht findet ist es halt doch nicht das Fahrrad und Robby muss weitersuchen.

Einfacher wäre es, wenn man die berechneten Bilder von den Umrissen direkt mit gespeicherten Bildern in einer Datenbank vergleichen könnte. Ich kann mir nur nicht vorstellen, wie man das softwaremässig hinkriegt.
Aber viellecht fällt dir da ja was ein.

Ein grossen Problem ist, dass 2- und 3-dimensionale Objekte aus unterschiedlichen Blickwinkeln unterschiedliche Umrisse ergeben. Dasselbe Problem ergibt sich bei Farben und unterschiedlicher Beleuchtung.
Daher kann ich mir eigentlich nur vorstellen, wie Robby über Datenbank und Auschlussverfahren ermittelt, was die Umrisse nicht darstellen.

Wenn die Datenbank gut gefüllt ist und man nur Umrisse ab einer bestimmten Grösse berücksichtigt, kommt man so aber in einer bekannten Umgebung vielleicht auch zum Ziel.

Johannes
20.04.2004, 10:31
Moin,
das Problem mit den verschiedenen Blickwinkeln könnte man durch eine dreidimensionale Erkennung lösen, die auf der anderen Seite natürlich noch aufwändiger ist und länger dauert.

Aber ich bin der Meinung, dass man das erkannte Bild irgendwie in Vektoren umrechnen muss. EinVektor sieht ja immer so aus:
(a) = (Ortsvektor) + (Richtungsvektor) * x

So, wenn du jetzt irgendwie das Bild bzw. das erkannte Objekt vektorisieren kannst, also es mit mehren Vekotoren beschreibst, dann wärst du das Problem mit Verzerrungen eventuell los, da der Parameter x vernachlässigt werden kann. Ich hoffe ihr könnt nachvollziehen, was ich meine. Ich gebe zu, das ist noch zu theoretisch, aber du musst einen Weg finden, mit dem du charakteristische Objekte speichern und vergleichen kannst. Dann ist es möglich, Objekte widerzuerkennen.

Ich habe vor längerer Zeit mal einen Eckenerkennungsalgorithmus programmiert, allerdings aus Zeitgründen nicht zuende bekommen. Aber da hätte man dann Punkte, die man abspeichern müsste. Der Algo lief schneller, aebr er hatt eben nur Ecken erkannt, aber nicht die Zusammenhänge, also welche Ecken zu einem Objekt gehören. Irgendwie muss diese Bearbeitung doch schneller zu realisieren sein.

Gruß
Johannes

Kjion
20.04.2004, 11:16
Hi,

nur mal ne kleine Anmerkung:

(Ortsvektor) + (Richtungsvektor) * x
Das ist was du da beschreibst ist kein Vektor sondern eine Gerade. Mit verschiedenen Werten für x kommt man dann zu jedem Punkt der Geraden...
Das nur so nebenbei ;-)

Ansonsten verfolge ich eure Diskussion auch ganz interessiert, da ich mich demnächst auch mit dem Thema beschäftigen will ( vermutlich aber erst nach JuFo ).

MfG Kjion

NumberFive
20.04.2004, 11:49
Die Cam soll als Ziel erkennung eingesetzt werden in version 1.
Das heißt ich hänge im raum ein bild auf das soll erfinden und hin fahren.
Natürlich muß das bild in der Höhe der cam hängen. Warum ich die fläsche errechnen will ist folgende Formel

Umfang
compactness = ----------------
Flächeninhalt

so mit ist der Abstand zwischen bild und cam egal und ich brauche kein zwei um die entfernung berechne zu können. Die enfernung mißt ein sharp (IR). natürlich funktioniert die Fläsche berechnung nur wenn ich da von ausgehe das es ein kreis ist oder die Form als solche erkenne. Die Formen in Vierecke und kreis zu teilen ist das nächtes Problem.

Zur zeit möchte ich folgendes hin bekommen.

Bild:

00000000
00001000
00010100
00100010
00010100
00001000
00000000
00000000

0 = Schwarz
1 = Weiß

Dieser Keis hat einen Durchmesser von 5.

Jetzt kann ich fläsche und den umfang bestimmen und mit der Ziel bestimmung vergleichen. Dieses alles funktion dann natürclich nur in ein leeren Raum. Dieses ist mir klar. Wenn das aber bei allen Licht verhältnisens und in echt funktioniert dann hätte ich mein ziel für version 1 erreicht. dann kommt die erkkennnung wenn in der Fläsche gegen stände sind.

Gruß

Johannes
20.04.2004, 12:48
Naja, man nennt das schon verktor der geraden... :-)

Gruß
Johannes

Kjion
20.04.2004, 12:55
Naja, bei uns net ;-)
Da ist das ne Gerade, definiert durch einen Ortsvektor und eine Richtungsvektor...

Johannes
20.04.2004, 14:21
Hm, so weit wohnen wir doch auch wieder nicht auseinander, oder? ;-)

Das mit der Gerade stimmt schon, aber bei uns schreibt man immer: (x> steht für x-Vektor, also x mit Pfeil drüber)

g1: x> = s> + t * r>

g1: Gerade 1
s>: Ortsvektor
r>: Richtungsvektor
t: eben der Faktor, für jeden Punkt spezifisch

Dasselbe auch mit Ebenen:
E1: x> = ...

Kommt dir diese schreibweise völlig unbekannt vor?

Gruß
Johannes

P.S. @nr.5: Sorry, dass wir wieder abdriften, aber erst einmal muss ich zum Arzt und dann lese ich mir dein Post nochmal genau durch.
Mit der 3D-Erkennung mit 2 Cams oben dachte ich nicht nur an die Entfernungsbestimmung, sondern an die Erfassung der Objektes im ganzen Raum. Damit würde man es dann auch aus einem anderen Blickwinkel wiedererkennen können, was bei einfacher 2D von einem 3D-Objekt natürlich nicht unbedingt ohne weiteres möglich ist.

recycle
20.04.2004, 14:40
Die Formen in Vierecke und kreis zu teilen ist das nächtes Problem.


Wenn du sowas hier hast:


00000000
00001000
00010100
00100010
00010100
00001000
00000000
00000000

müsstest du da eigentlich schon auslesen können, ob es ein Kreis oder ein Rechteck ist.
-Wenn du alle Reihen von oben nach unten durchgehst und jeweils die zwischen 2 Einsen eingeschlossenen Pixel zählst, ergibt die grösste Zahl die Breite, bzw. den Durchmesser.
-Wenn du dasselbe von oben nach unten machst, erhältst du Höhe, btw. Durchmesser.
- Wenn Höhe und Breite unterschiedlich sind, ist es kein Kreis, also ein Rechteck (oder ganz was anderes)
- Wenn Höhe und Breite gleich sind, ist es ein Kreis oder ein Quadrat.
- Wenn du Breite und Höhe in Pixeln kennst, kannst du ausrechnen, wieviel Pixel der Umriss einschliessen müsste, wenn es ein Quadrat ist.
- Schliesst der Umriss weniger Pixel ein, ist es ein Kreis und kein Quadrat.

NumberFive
20.04.2004, 18:17
na so in der art habe ich auch schon gedacht aber auch das ist ein kreis


000011000
000100100
000100100
000011000
000000000

oder nicht ?

in der software ist es zwar nicht 0 und eins aber so ligen die daten vor als array of float.

recycle in was programmiers du ?
hast du vielleicht ein code ansatz ?

Kjion
21.04.2004, 10:47
@Johannes

Hm, so weit wohnen wir doch auch wieder nicht auseinander, oder?
Naja, ein Stückchen ists schon ;-)


Das mit der Gerade stimmt schon, aber bei uns schreibt man immer: (x> steht für x-Vektor, also x mit Pfeil drüber)

g1: x> = s> + t * r>

g1: Gerade 1
s>: Ortsvektor
r>: Richtungsvektor
t: eben der Faktor, für jeden Punkt spezifisch

Dasselbe auch mit Ebenen:
E1: x> = ...

Kommt dir diese schreibweise völlig unbekannt vor?
Ne, machen wir fast genauso. Wir haben wohl etwas aneinander vorbeigeredet und dabei beide das gleiche gemeint ;-)

@NumberFive

in der software ist es zwar nicht 0 und eins aber so ligen die daten vor als array of float.
Ist Array of Float nicht unsinnig ? Brauchst du wirklich Gleitkommawerte ? Wenn man das ganze mit Integer oder Bytes machen würde könnte man doch vermutlich noch ein bißchen Rechenzeit einsparen.

Deine Beispiele sind übrigens zu klein, als das man da zwischen Kreis, Rechteck usw. wirklich unterscheiden könnte. Das erste wäre nämlich zum Beispiel viel eher eine Raute als ein Kreis...

MfG Kjion

NumberFive
22.04.2004, 15:59
Hallo Kjion,

das mit dem Array of float ist erst jedes so war für ein Array of byte
aber arbeiten dann gaus und canny nicht sauber un beim umrechen von
farbe nach schwarz /weiß geht zu viel verloren deshalb float.

Natürlich sin die beispiele zu klein aber ehrlich hatte jetzt nicht gerade lust
340 Nullen in die breite zu schreiben un 240 nach unten spricht in mein posting 76000 nullen und einsen zu schreiben es ging nur um prinzip.

Gruß

matren
27.05.2004, 21:24
Hier im Downloadbereich gibt es eine Diplomarbeit, wo ein Kohonen-Netzwerk für die Erkennung von Verkehrszeichen verwendet wurde.
Dies wäre ebenso ein interessanter Ansatz, speziell wo es doch hierbei um Mustererkennung geht (Ist auch wohl einige der wenigen Bereiche wo NNs schon effektiv eingesetzt werden).

Ebenso habe ich einen anderen Bericht gesehen wo eine Kamera und ein Laser verwendet wurde um Objekte zu erkennen. Dazu wurde der Kamera noch ein Filter vorgesetzt, so daß nur das Licht des Lasers registriert wurde.
Dies vereinfacht natürlich die Erkennung von Objekten nicht unwesentlich.
(Im Bericht wurde nur eine horizontale Linie mit dem Laser gezogen).

Wenn man das weiterspinnt und sich zwei Kameras vorstellt, dazu ein Laser der die Umgebung Zeilenweise abtastet, so könnte ich mir gut Vorstellen, daß man eine Objekterkennung hinkriegen kann (zumindest kann man Objekte als Flächen erkennen und anhand der Stereobilder könnte man sogar grob die Entfernung der Objekte ermitteln).

Dies soll euch nur als kleine Anregung dienen !!!
(Ich selber habe keine große Ahnung von NN oder Bildverarbeitung, fand jedoch den Ansatz mit dem Laser sehr gut nachvollziehbar).

recycle
27.05.2004, 22:48
@NumberFive


na so in der art habe ich auch schon gedacht aber auch das ist ein kreis


000011000
000100100
000100100
000011000
000000000

oder nicht ?


Das wäre ein Kreis mit 4 Pixel Durchmesser. Das wäre dann sicherlich kein Objekt, dass du besonders gut per Bilderkennung erkennen könntest. Das würde man ja eigentlich auch mit dem menschlichen Auge eher Punkt und nicht als Kreis wahrnehmen.

Bei grösseren Objekten, z.B. einem Kreis mit 10, 20 oder mehr Pixeln ergibt sich das Problem das du da andeutest ja nicht mehr und die Symmetrie wäre wesentlich deutlicher zu erkennen.



recycle in was programmiers du ?
hast du vielleicht ein code ansatz ?

Ich programmiere da gar nichts dran, ich finde das Thema nur sehr interessant und verfolge den Thread deswegen.

Ich kenn ein bischen Visual Basic, Java, Javascript usw. kann aber nicht wirklich programmieren. Wenn ich überhaupt mal ein kleines Programm zusammenbastel, muss ich mir die einzelnen Befehle, Codeschnipsel, Beispielcode usw. mühselig zusammensuchen und zusammenbasteln.

NumberFive
28.05.2004, 18:41
Hallo Leute,

auf grund der kosten die jetzt schon entstehen auf grund der Rechnenleistung und des energie bedarfs werde ich in version eins sicher nicht noch ein cam einbauen. Das läst sich ein fach nicht relasieren vom geld verbrauch. mag schon sein das Laser und zwei cams mehr leisten könnte aber ich denk weiter hin das es sich auch so regeln läst. Im moment teste ich gerade meine version eines neuronnalen netzes viel kommte auf dem weg weiter was die Software an geht. Parall muß ich versuchen die hardware auf die reihe zu bekommen den immer nur theorie ist langweilig. weiß ich jemand einen sponsor oder will sich jemand beteiligen ?

Gruß

12.06.2004, 20:53
Hallo was haltet ihr davon dass ein Roboter seine Umgebung mit einem Stereo-Kamerasystem einscannt und als Ergebniss dann ein großes Pixelfeld erhält!
in diesem Pixelfeld kann man dann nach den entsprechenden Gegenständen suchen!

hobbyfreak

shadow-netz
13.06.2004, 10:26
Hi!

Hab das mal alles sehr gespannt durchgelesen, weil ich auch eine CAM zum steuern nehmen möchte. Dafür aber keinen PC mit Algorithmus, sondern Hardware im FPGA.

Es scheint ja viele Methoden der Wegbestimmung zu geben. Zum Beispiel auch per Vergleich von 2 Folgebildern. Der Ansatz mit den Flächen scheint aber sehr interessant zu sein.

Das einzige was ich mich frage ist welchen Sinn die Erkennung der Form der Fläche macht. Meiner Meinung wäre die Verbindung einer Fläche mit einem Helligkeitswert/Farbwert wesentlich informativer. Aber vielleicht verfolge ich da schon andere Gedanken als ihr. ;)

timur
25.01.2006, 13:12
So ne Uni hat auch ein Bilderkennungssystem gebaut

http://www.roboter-teile.de/Shop/pd122651047.htm?categoryId=2


135€ - aber von der qualität glaube ich seinen preis wert...