punkte finden
-
Guck dir mal die Hough-Transformation für Kreise an
-
@thordk:
die Idee gefällt mir, aber ich denke das Problem werden die unterschiedlichen Hintergründe,der Laserpointer ist zwar immer gleich weit entfernt, aber der Beamer zeigt immer andere Bilder, außerdem ist es mal heller und mal dunkler.
Aber ich probier das trotzdem mal, immerhin sind Laserpointer ziemlich hell, vielleicht merkt man durch den Hintergrund keinen allzu großen Unterschied.Ganz hab ich das aber noch nicht verstanden, wie genau soll ich das Template über das Bild "jagen"?
wenn ich jeden Pixel von dem Webcam-Bild einmal als Offset für das Template nehm, muss ich ja Pixel_webcam*Pixel_Template viele vergleiche machen, das dauert aber zu lange, da das ganze in Echtzeit laufen muss.@Vertexwahn:
da find ich auch keine Librarys oder Tutorials drüber wie man das praktisch machen kann, kennst du da was?
-
Vertexwahn schrieb:
Guck dir mal die Hough-Transformation für Kreise an
die ist imo ziemlich rechenlastig.
Wenn du _wirklich_ runde kreise hast, gehts vielleicht, aber ansonsten hast du wenigstens 5 variable Parameter.. da braucht selbst nen guter PC ne Weilezum Thema Tutorial:
Du hast folgende variablen Werte:
Radius höhe: a
Radius breite: b
Rotationswinkel um den Kreismittelpunkt.Mittelpunkt: x, y
Hiermit errechnest du die Randpunkte eines Ellipsoids.
Wenn du jetzt den Mitteplunkt verschiebst und die errechneten Randpixel auf deinem Bild suchst, musst du eigentlich nur noch entscheiden, ob du genug weiße Punkte direkt auf den Randpunkten hast. Bist du der Meinung, es sind genug, speicherst du die Daten der Ellipse ab und schwärzt das Bild an der Stelle, damit du auch ja nichts doppelt findest..
-
bewegt sich der laserpointer zufaellig?
-
@DocJunioR:
das hört sich auch gut an, ich mach überprüf am besten auch noch ob in einem größeren radius dann keine weißen Punkte mehr sind, wenn doch ist es ein weißer Teil vom Beamer und kein Laserpointer.@rapso:
jop, sonst wärs nicht in Echtzeit und man könnt auch einfach das Bild von der Webcam holen und von Hand bestimmen wo der Laser ist.
Oder meinst du die Position von der der Laserpointer strahlt und nicht die auf der er aufkommt?
Wär schon besser wenn die variabel wäre, muss aber nicht sein.
-
wenn sich der laserpointer mehr bewegt als der rest, mach diffs zu den letzten paar frames und dann ist die stelle mit den meisten bewegungen die letzte position vom LP.
-
ne im Hintergrund bewegt sich viel zu viel, da bewegt sich der Laserpointer wahrscheinlich noch am wenigsten.
-
scales of justice schrieb:
@thordk:
die Idee gefällt mir, aber ich denke das Problem werden die unterschiedlichen Hintergründe,der Laserpointer ist zwar immer gleich weit entfernt, aber der Beamer zeigt immer andere Bilder, außerdem ist es mal heller und mal dunkler.
Aber ich probier das trotzdem mal, immerhin sind Laserpointer ziemlich hell, vielleicht merkt man durch den Hintergrund keinen allzu großen Unterschied.Ganz hab ich das aber noch nicht verstanden, wie genau soll ich das Template über das Bild "jagen"?
wenn ich jeden Pixel von dem Webcam-Bild einmal als Offset für das Template nehm, muss ich ja Pixel_webcam*Pixel_Template viele vergleiche machen, das dauert aber zu lange, da das ganze in Echtzeit laufen muss.klar, das kann schon recht lang dauern, wenn man es pixelweise macht. kommt halt auf die gewünschte genauigkeit an. sinnvoll ist es bei sowas entweder das bild zu skalieren, oder das template nicht immer einen pixel pro schritt zu bewegen, sondern gleich mehrere (equivalent dazu, das bild zu verkleinern).
in der bildverarbeitung braucht man sehr sehr selten "riesige" bilder. meist erhält man ebenso gute (manchmal sogar bessere) ergebnisse, wenn man mit kleiner skalierten bildern arbeitet.
hab aus spass grad mal son template ding implementiert und siehe da, es hat sogar geklappt
hab mal nen bild angefügt, wie ursprungsbilder ungefähr gestaltet sein sollten, damit das gut klappt.http://img50.imageshack.us/img50/5953/blubbog4.png
der laserpointer (hier der dicke fleck) muss schon irgendwie besonders herausstechen. wenn er im vergleich zum rest des bildes extrem klein ist und viele bereiche ähnliche helligkeit aufweisen, dann kann es mitunter schwer werden, hier mit nem template verfahren weiter zu kommen. bewegliche objekte auf sich veränderndem untergrund zu finden ist wahrlich keine einfache aufgabe.
möglicherweise wirst du mit "simplen" verfahren gar nicht weiterkommen. wär hilfreich, wenn du mal paar beispielbilder hättest.
-
scales of justice schrieb:
ne im Hintergrund bewegt sich viel zu viel, da bewegt sich der Laserpointer wahrscheinlich noch am wenigsten.
ist doch gut, mach es genau andersrum, die stelle die am meisten gleich bleibt, da ist der laserpointer

-
bei mir funzt jetzt einigermaßen:
ich durchsuch das bild erstmal nach hellen pixel und probier nur in deren nähe das template, damit ist die rechenzeit in Ordnung, solange man die Kamera nicht in die Sonne hält.Allerdings kommen immer noch manchmal Fehler, kannst du mir den Sourcecode von deinem Programm geben?
vielleicht hast du das besser hinbekommen wie ich.das ist eher ein kleines projekt, falls es mit einem einfachen varfahren nicht funktioniert mach ich einfach die hellen sachen aus dem spiel raus, das ist auch nicht so schlimm.
Bilder kann ich machen, allerdings hab ich den Projektor nicht zu hause, kom ich wahrscheinlich Donnerstag wieder dran.EDIT:
hat sich erledigt, jetzt funktionierts gut, war nur ein programmierfehler.Eine Frage noch weil ich das ganze präsentier:
gibts ein Fremdwort für diese Template-Technik? ist das Korrelation?
-
klar, den source kannst haben. habs allerdings in java geschrieben, also nich irritieren lassen
und das ganze is nich wirklich auf speed optimiert, sollte nur mal testen, wie das funzt.source: http://rafb.net/p/Eu0r8B93.html