Bestimmen Sie Skelettfugen mit einer Webcam (nicht Kinect)
Ich bin versucht zu bestimmen, Skelett Gelenke (oder zumindest verfolgen zu können, eine einzelne Palme) mit einem normale webcam. Ich habe gesucht alle über das web und kann nicht scheinen zu finden ein Weg, dies zu tun.
Jedes Beispiel, das ich gefunden habe ist die Verwendung der Kinect. Ich möchte an einem einzigen webcam.
Gibt es keine Notwendigkeit für mich, um die Berechnung der Tiefe der Gelenke - ich muss nur in der Lage sein zu erkennen, Ihre X -, Y-position in dem Rahmen. Das ist, warum ich bin mit Hilfe einer webcam, kein Kinect.
Bisher habe ich mir angeschaut:
- OpenCV (das "Skelett" - Funktionalität ist es, einen Prozess der Vereinfachung der grafischen Modelle, aber es ist nicht eine Erkennung und/oder skeletonization des menschlichen Körpers).
- OpenNI (mit NiTE) - der einzige Weg, um die Gelenke, ist die Verwendung der Kinect-Gerät, damit dieses funktioniert nicht mit einer webcam.
Ich bin auf der Suche nach einem C/C++ - Bibliothek (aber an dieser Stelle würde bei jeder anderen Sprache), am besten open source (aber, wieder, betrachten alle Lizenz), die Folgendes tun können:
- Ein Bild (einen Rahmen von einer webcam) berechnen Sie die X -, Y-Positionen der sichtbaren Gelenke
- [Optional] ein video-capture-stream-Anruf wieder in mein code mit Veranstaltungen für Gelenke Positionen
- Muss nicht super genau ist, aber würde es vorziehen, um sehr schnell sein (sub-0,1 Sekunden Bearbeitungszeit pro Bild)
Wäre wirklich sehr dankbar, wenn mir jemand helfen kann, mit diesem. Ich Hänge schon länger auf diese für ein paar Tage jetzt mit keine klaren Weg, um fortzufahren.
UPDATE
2 Jahre später wurde eine Lösung gefunden: http://dlib.net/imaging.html#shape_predictor
InformationsquelleAutor der Frage YePhIcK | 2013-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verfolgen einer hand mit einer einzigen Kamera ohne Tiefe Informationen ist eine schwere Aufgabe und Thema der Laufenden wissenschaftlichen Arbeit. Ich kann Sie liefern eine Reihe von interessanten und/oder stark zitierten wissenschaftlichen papers zum Thema:
Hand-tracking Literaturrecherche im 2. Kapitel:
Ich weiß leider nicht, über einige frei verfügbare hand-tracking-Bibliothek.
InformationsquelleAutor der Antwort Palmstrom
es gibt eine einfache Methode für die Erkennung von hand-Haut-Ton. vielleicht könnte dies helfen... Sie sehen die Ergebnisse auf diesem youtube -video. Nachteil: der hintergrund sollte nicht enthalten hautfarbene Dinge wie Holz.
hier ist der code:
den cv2.findContour ist sehr nützlich, Sie finden den Schwerpunkt eines "blob" mit cv2.Momente nach u finden der Konturen. haben Sie einen Blick auf die opencv-Dokumentation auf shape-Deskriptoren.
ich habe nicht noch herausgefunden, wie man die Skelette liegen in der Mitte der Kontur, aber ich dachte "Erodieren" die Konturen, bis Sie eine einzelne Zeile. in der Bildverarbeitung der Prozess heißt "skeletonization" oder "morphologische Skelett". hier einige grundlegende Informationen über skeletonization.
hier ist ein link, implementiert skeletonization in opencv und c++
hier ist ein link für skeletonization in opencv und python
hoffe, das hilft 🙂
--- EDIT ----
ich würde sehr empfehlen, dass Sie gehen durch diese Papiere von Deva Ramanan (nach unten scrollen nach dem Besuch der verlinkten Seite): http://www.ics.uci.edu/~dramanan/
Relationale Phraselets" European Conference on Computer Vision
(ECCV), Florenz, Italien, Okt. 2012.
on Computer Vision (ICCV) Barcelona, Spanien, November 2011.
Systems (NIPS), Vancouver, Kanada, Dezember 2006.
InformationsquelleAutor der Antwort samkhan13
Der am häufigsten verwendete Ansatz kann man im folgenden youtube-video. http://www.youtube.com/watch?v=xML2S6bvMwI
Diese Methode ist nicht sehr robust, da es dazu neigt, zu scheitern, wenn die hand gedreht wird zu viel (zB; wenn die Kamera schaut, auf der Seite der hand oder auf einem teilweise Gebogenen hand).
Wenn Sie nicht dagegen, mit zwei Kamera ' s können Sie Einblick in die Arbeit von Robert Wang. Seine aktuelle Firma (3GearSystems) verwendet diese Technologie, augmented mit kinect zu bieten tracking. Seine original-Papier verwendet zwei webcams, hat aber viel schlimmer tracking.
Anderen option (wieder, wenn mit "mehr" als ein einziges webcam ist möglich), ist die Verwendung eines IR-emitter. Ihre hand reflektiert IR-Licht Recht gut in der Erwägung, dass der hintergrund nicht. Durch das hinzufügen eines filters auf die webcam, die Filter normalem Licht (und entfernen der standard-filter, der genau das Gegenteil tut) können Sie eine sehr effektive hand-tracking. Der Vorteil dieser Methode ist, dass die Segmentierung der hand vom hintergrund ist viel einfacher. Abhängig von der Entfernung und der Qualität der Kamera, Sie müssten mehr IR-leds, um zu reflektieren, ausreichend Licht zurück in die webcam. Die leap motion verwendet diese Technologie, um zu verfolgen den Fingern & palms (es wird mit 2 IR-Kameras und 3 Infrarot-leds, die bekommen auch ausführliche Informationen).
Alle, dass gesagt wird, ich denke die Kinect ist Ihre beste option in diesem. Ja, Sie brauchen nicht die Tiefe, sondern die Tiefe der Informationen macht es viel leichter zu erkennen, die hand (mit der Tiefe der Informationen für die Segmentierung).
InformationsquelleAutor der Antwort Nallath
Mein Vorschlag, angesichts Ihrer Einschränkungen, würden Sie etwas wie dies:
http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html
Hier ist ein tutorial für die Verwendung der Gesichtserkennung:
http://opencv.willowgarage.com/wiki/FaceDetection?highlight=%28facial%29/%28recognition%29
Das problem, das Sie beschrieben haben, ist ziemlich schwierig, und ich bin mir nicht sicher, dass der Versuch, es zu tun mit nur einer webcam ist ein vernünftiger plan, aber dies ist wahrscheinlich Ihre beste Wette. Wie hier erklärt (http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html?highlight=load#cascadeclassifier-load), müssen Sie zum trainieren des Klassifikators mit so etwas wie dies:
http://docs.opencv.org/doc/user_guide/ug_traincascade.html
Denken Sie daran: obwohl Sie nicht erforderlich ausführliche Informationen für Ihre Nutzung, wenn Sie diese Informationen macht es einfacher für die Bibliothek zu identifizieren, die eine hand.
InformationsquelleAutor der Antwort Andrew W
Endlich habe ich eine Lösung gefunden habe. Stellt sich heraus, ein
dlib
open-source-Projekt hat eine "Form Prädiktor", dass, wenn richtig trainiert, macht genau das, was ich brauche: es geraten (mit einer ziemlich zufriedenstellenden Genauigkeit) der "pose". Eine "pose" ist lose definiert als "was auch immer du trainieren, es zu erkennen, wie eine pose" durch das training mit einer Reihe von Bildern, versehen mit den Formen, aus Ihnen zu extrahieren.Form Prädiktor ist hier beschrieben auf dlib website
InformationsquelleAutor der Antwort YePhIcK
Weiß ich nicht über mögliche vorhandene Lösungen. Wenn der betreute (oder semi-supervised) lernen ist eine option, die Ausbildung Entscheidungsbäume oder neuronale Netze könnten schon genug sein (kinect verwendet zufällige Wälder von dem, was ich gehört habe). Bevor Sie gehen einen solchen Weg, alles, was Sie tun können, um eine bereits vorhandene Lösung. Erste Machine-Learning-Zeug nimmt eine Menge Zeit und Experimentieren.
OpenCV-hat Maschine-learning-Komponenten, was Sie brauchen, ist Trainingsdaten.
InformationsquelleAutor der Antwort kutschkem
Mit der motion-tracking-Funktionen der open-source - Blender-Projekt ist es möglich, erstellen ein 3D-Modell auf Basis von 2D-Material. Kein kinect benötigt. Da blender ist open-source, die Sie möglicherweise in der Lage, Ihre pyton scripts außerhalb des blender-framework für Ihre eigenen Zwecke.
InformationsquelleAutor der Antwort Ruut
Haben Sie jemals gehört, über Eyesweb
Habe ich es für eines meiner Projekt, und ich dachte, es könnte nützlich sein für das, was Sie erreichen wollen.
Hier sind einige interessante Publikation LNAI 3881 - Finger-Tracking-Methoden, die Mit EyesWeb und Powerpointing-HCI mit gesten
Grundsätzlich ist der workflow:
Aber ich weiß nicht, ob es eine Möglichkeit zum einbetten von Echtzeit-Bildverarbeitung Teil der Augen Web, in einem weich wie eine Bibliothek.
InformationsquelleAutor der Antwort Gomino