Montag, 21. Februar 2011

Mittwoch, 15. September 2010

Einbinden der OpenCV-Bibliothek unter Visual Studio .NET 2008

OpenCV-Konfiguration unter VS 2008

Bevor die OpenCV-Bibliothek in die eigenen Projekte integriert und kompiliert
werden kann, müssen unter Visual Studio .NET 2008, die folgenden statischen
Bibliotheken konfiguriert werden.
Unter VS 2008 -> Extras -> Optionen -> Projekte und Projektmappen->
VC++-Verzeichnisse-> Verzeichnisse anzeigen für: Includedateien
Hier nun den Pfad für das Includeverzeichnis eingeben
C:\OpenCV2.1\include\opencv
Diese Konfiguration auch für das Bibliotheksverzeichnis und die Quelldatei durchführen.








Pfad für das Bibliotheksverzeichnis:
C:\OpenCV2.1\lib


Pfade für die Quelldateien:
C:\OpenCV2.1\src\cxcore
C:\OpenCV2.1\src\cvaux
C:\OpenCV2.1\src\cvaux\vs
C:\OpenCV2.1\src\cv
C:\OpenCV2.1\src\highgui
C:\OpenCV2.1\src\ml


Konfiguration der OpenCV-Projekte unter VS 2008

Nachdem ein Projekt unter VS 2008 erstellt wurde, ist es notwendig die statischen
Bibliotheken von OpenCV, in das zu erstellende Projekt einzubinden.
Unter VS 2008-> Projekt -> ProjektName-Eigenschaften->Konfigurationseigenschaften-
> Linker->Eingabe -> Zusätzliche Abhängigkeiten folgende OpenCV Abhängigkeiten,
Zeilenweise eintragen.
cv210.lib
cvaux210.lib
cxcore210.lib
highgui210.lib

Weitere spezielle lib-Dateien, die für das Projekt benötigt werden, müssen hier
eingetragen werden.

Installation der SVS Software für die Stereovision Kamera der Firma Videre






Die aktuelle SVS Software (stand Juni 2010) für die Stereovision Kamera kann unter der Homepage
http://www.videredesign.com heruntergeladen werden. Laut dem Hersteller werden folgende Betriebssysteme empfohlen:
• MSW 2000 mit SP4
• MSW XP mit SP1
• MSW Vista: Ist Kompatibel mit allen neuen Kameramodellen, die nach dem 12.01.2008 hergestellt wurden. Mit allen älteren Kameramodellen ist das Betriebssystem Vista nicht kompatibel.
• MSW 98SE: Laut dem Hersteller ist die Software unter diesem Betriebssystem
lauffähig dennoch wird sie von Videre nicht empfohlen.
Laut Anfragen beim Hersteller ist die Software SVS unter Windows 7 oder einem
64-Bit Rechner nicht lauffähig. Die Folgende Installation wurde von mir unter dem Betriebssystem Windows XP mit Service Pack 2 (32-Bit) durchgeführt.


Wichtig!:

Durch SP2 kommt es zu Komplikationen mit der IEEE 1394 Treiber, da die Videre Stereovision Kamera mit anderen Kamerasystemen verwendet wird. Daher müssen zuerst einmal folgende Schritte vorgenommen werden um die IEEE 1394 Treiber von SP1 auf SP2 zu laden.

• 1.Schritt:

Unter C:\windows\ einen neuen Verzeichnis mit der Bezeichnung
1394_fix anlegen und folgende Systemdateien in das Verzeichnis 1394_fix kopieren:
1394.inf (befindet sich unter dem Verzeichnis C:\windows\inf)
arp1394.sys, enum1394.sys und nic1394.sys (befindet sich unter dem Verzeichnis C:\windows\system32\drivers)
ohci1394.sys und 1394bus.sys (Diese Systemdateien sind SP1.cab Dateien, die
unter der Homepage http://www.videredesign.com/ heruntergeladen werden
können.


• 2.Schritt:

Umbenennen der Datei C:\windows\driver cache\i386\sp2.cab in
C:\windows\driver cache\i386\sp2x.cab


• 3.Schritt:

Erneute Installation der IEEE 1394 Treiber
Unter START->Systemsteuerung-> System->Hardware-> Geräte-Manager starten
Den FireWire Kontroller 1394 IEEE aus der Liste suchen und mit der rechten
Maustaste -> Treiber aktualisieren wählen. Die Option Treibersoftware manuell
installieren wählen und Installieren fortsetzen.
Die Treiber aus dem Verzeichnis C:\windows\1394fix auswählen und Treiberaktualisierung beenden.

• 4.Schritt:
Umbenennen der Datei C:\windows\driver cache\i386\sp2x.cab in
C:\windows\driver cache\i386\sp2.cab um die Backup Datein wiederherzustellen.


• 5.Schritt:
Rechner neustarten


Sonntag, 29. Juni 2008

Konfiguration und Kompilierung von HandVU Source Code

OpenCV - testen der Beispiele und Einsicht in die C-Programmierung.

Nach dem ich nun OpenCV installiert habe, habe ich die Beispiele ausprobiert die unter dem Verzeichnis
C:\Programme\OpenCV\samples\c angelegt worden sind. Es ist anfangs Sinnvoll, als erste Einarbeitung in OpenCV, sich mit einigen dieser Beispielprogramme zu beschäftigen, wie Beispielsweise die Gesichtserkennung „facedetect“. Zu jedem Beispiel gibt es die Source Code in C++ geschrieben, die kompiliert und ausprobiert werden kann.

Kompilieren von HandVU

Beim ersten Ausführen der HandVU - Sources Code, habe ich 48 Fehler erhalten.
Eine von diesen Fehlern, ist die Meldung, dass die unten aufgelisteten Umgebungsvariablen, nicht gefunden werden.

$(INC_OPENCV)
$(INC_OPENCV_CXCORE)
$(INC_OPENCV_HIGHGUI)
$(INC_OPENCV_AUX)

Diese habe ich unter Systemeigenschaften-> Erweitert -> Umgebungsvariablen und Systemvariablen angelegt.



Eine weitere Fehlermeldung war die, dass einige Headerdateien, wie beispielsweise die „streams.h“ Headerdatei nicht gefunden werden.


Um diese Fehlermeldung zu beheben, muss das DirectX SDK mit dem Verzeichnis DirectShow eingebunden werden.

Auf der Homepage http://msdn.microsoft.com/directx/ habe ich mir Microsoft DirectX 9.0 SDK installiert.
Wichtig ist, dass in der DirectX SDK Version, das Verzeichnis DirectShow vorhanden sein muss.


Anpassung der DirectX SDK include files unter Visual Studio 2005:

Unter EXTRAS->OPTIONEN->Projekte und Projektmappen muss unter VCC+-Verzeichnisse unter den Includedatein noch das folgende Verzeichnis hinzugefügt werden.

C:\DXSDK\Samples\C++\DirectShow\BaseClasses


Nach dem ich die oben genannten Fehler behoben und die Umgebungsvariable für HandVU angepasst habe, wurde mir beim erneuten kompilieren
der HandVU, nun 27 Fehler angezeigt.

Beim kompilieren habe ich die unten aufgelistete Fehlermeldung erhalten.


C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'PVOID64'
C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Buffer'
C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.



Dieser Fehler ist eine, mit DirectX SDK zusammenhängte Fehlermeldung.

Folgende Seite war mir bei der Behebung, dieser Fehlermeldung sehr hilfreich.

http://forums.msdn.microsoft.com/en-US/vclanguage/thread/51043152-3ab6-4a9e-b3c1-2dba8300d9bb

Um die oben aufgelistete Fehlermeldung zu beheben, muss man unter Visual Studio-> Extras->Optionen->Projekte und Projektmappen-> VC++-Verzeichnisse die Liste nach der Includedatei sortieren.

Die Includedateien sollten, primär vor allen anderen Dateien stehen.





Nach dem ich diese Anpassung durchgeführt habe, wurde mir beim erneuten kompilieren, nur noch 2 Fehlermeldungen angezeigt.





Diese 2 Fehlermeldungen habe ich behoben, in dem ich unter HandVU_img.cpp, die Headerdatei „errno.h“ eingefügt habe.

Ich habe keine Fehlermeldung erhalten, jedoch muss man nun ein Verzeichnis für ein .DLL Datei angeben, die zum ausführen von HandVU benötigt wird.

Donnerstag, 22. Mai 2008

Softwareinstallation & Test

Nach dem ich die Software OpenCV und HandVU nach der Installationsanleitung installiert habe, war der nächste Schritt, das Testen der Software.
Hierzu sollte zunächst, die WebCam angeschlossen sein. Die WebCam sollte eine Auflösung von 320x240 Pixel oder eine höhere Auflösung haben.

Nach dem die WebCam angeschlossen ist, kann das Programm HandVU_OpenCV gestartet werden.
Nach dem Starten der Software, erscheint das Kamerabild und ein großes Rechteck, in der die Hand positioniert werden muss, bis die Hand erkannt wird.
Dabei sollte man den Handrücken, der rechten Hand, in das Rechteck platzieren, da diese Handposition am besten erkannt wird.




In den weiteren Bilder wird ersichtlich, wie die richtige Handstellung sein sollte, um die Handgestenerkennung zu gewährleisten:








Man sollte auf gute Lichtverhältnisse im Raum achten.
Der Raum darf weder zu dunkel, noch zu hell sein. Durch Sonnenschein, wird beispielsweise, die Erkennung der Hand durch die WebCam beeinträchtigt.
Auch Hautfarbeähnliche Hintergründe sollte man vermeiden.
In meinen Tests habe ich festgestellt, dass beispielsweise helle Holztüren als Hintergrund, nicht für den Einsatz von HandVU geeignet sind.
Bei dunklen Hintergründen wurde die Hand sehr schnell erkannt.

Die Hand wird erst erkannt, wenn das große Rechteck verschwindet und auf der erkannten Hand, weiße Punkte verteilt werden.
Dabei ist der große weiße Punkt, der Mittelpunkt des Recheckes.

Nun wird beim bewegen der Handrücken, die Hand mit den weißen Punkten mitverfolgt.
Jetzt hat man die Möglichkeit, die Hand durch sehr schnelles drehen, mit der Handinnenfläche in Richtung der Kamera zu zeigen.

Man hat auch die Möglichkeit, die Hand durch andere Objekte auszutauschen. Beispielsweise habe ich das mit einer Tasse aus Glas(siehe u. Bild) ausprobiert. Die Objektverfolgung der Tasse, hat sehr gut funktioniert.


Das bedeutet aber nicht, dass das Objekt beim Programmstart von HandVU eingesetzt werden kann. Da muss weiterhin die Hand vor die WebCam gehalten werden, bis die Handfläche erkannt wird.

Die Hand wird auch dann sehr gut erkannt, wenn sich im Hintergrund Personen bewegen.

Bilder der Testergebnisse:





Webseite:


http://www.movesinstitute.org/~kolsch/HandVu/doc/index.html

Mittwoch, 21. Mai 2008

Aktueller Stand und weitere Vorgehensweisen

Kurzbeschreibung:

Mit Hilfe einer USB-Kamera und HandVU OpenCV werden die Handbewegungen erfasst und anhand der ermittelten x,y-Koordinaten der Hand, die Balken des Spiels „PONG“ per Handbewegung gesteuert.

Projektplan bis Semesterende:

[1] Installation der Software HandVU & OpenCV
[2] Testen der Installierten Software
[3] Analyse in OpenCV, HandVU und Programmierung mit C++
[4] Ermittlung der Handposition und ankoppeln mit dem Spiel „PONG“
[5] Verbesserung der Performance eventuelle Änderungen anpassen

Dienstag, 20. Mai 2008

Einsatz von HandVU & OpenCV

Die Software HandVU, implementiert eine Sammlung Vision basierte Schnittstellen, für die Erkennung der Handgeste.
Bei der Erkennung der Handgeste, wird die Hand in Realzeit erkannt.
Das Softwarepaket von HandVU besteht aus den wichtigsten HandVU Bibliotheken und mehreren Anwendungen, die mit dem Einsatz von OpenCV ermöglicht wird.
Wie im vorherigen Beitrag schon vorgestellt, ist OpenCV eine
freie Bibliothek für Bilderkennung. Die Bibliothek enthält eine Vielzahl von nützlichen Algorithmen für Tracking, Segmentierung etc.

HandVU beruht auf einen Client-Server-Ansatz, die einen Hand-Gesten-Server zu Verfügung stellt. Nach dem man sich auf diesen Server eingeloggt hat, empfängt man für jedes von HandVU berarbeitet Bild der Kamera die Handkoordinate (x,y), sowie die momentane Handgeste.

Ein Beispiel Einsatz von HandVU, ist die Handgestenerkennung, zur Kontrolle einer Multimedia Plattform, die von Philips Applied Technologies in Eindhoven/Niederlande entwickelt wurde. Dabei handelt es sich um ein Handzeichen gesteuerte 3D GUI.

Einen Eindruck von dieser Entwicklung, kann man sich unter dem folgenden Link machen:

http://www.schroeder-wendt.com/blog/2006/09/25/diesmal-nix-zum-anfassen-handgesten-erkennung-zur-kontrolle-einer-multimedia-plattform/


Den Einsatz von HandVU, finde ich für die Realisierung des Projektes als sehr angebracht, da neben der Handgestenerkennung, auch die Handposition als x,y-Koordinate ermittelt wird.
Da die Gestenerkennung sehr viel an Ressourcen verbraucht, werde ich die Funktion der Gestenerkennung nicht in Anspruch nehmen.

Die ermittelten x,y-Koordinatenwerte aus der Handposition, werde ich mit dem
x,y-Koordinaten der Spielbalken, aus dem Spiel PONG koppeln, die dann durch Handbewegung in Realzeit angesteuert werden soll.

Installationsanleitung für HandVU:

http://www.movesinstitute.org/~kolsch/HandVu/doc/InstallationWindows.html

Mittwoch, 30. April 2008

OpenCV - Open Source Computer Vision Library

In meinen weiteren Recherchen habe ich OpenCV (Open Source Computer Vision Library) entdeckt, die ich für meine weiteren Arbeiten zur Realisierung der Aufgabenstellung einsetzen werde.

OpenCV ist eine quelloffene Programmbibliothek die von Intel-Forscher veröffentlicht wurde. Das Softwarepaket wurde für Linux und Windows OS entwickelt und im Jahr 2000 veröffentlicht. OpenCV soll Softwareentwicklern helfen, stereoskopische Bilderkennung in ihre Produkte zu integrieren. Die Software erlaubt, Tiefeninformationen aus bewegten und stehenden Bildern, die von zwei Kameraaugen erfasst werden können.

Damit könnte beispielsweise der Bereich Gestenerkennung, bei dem es auch stark auf die dritte Dimension ankommt, verbessert werden. Intel erhofft sich damit auch Möglichkeiten der besseren Objektverfolgung und der Gesichtserkennung.

Bei OpenCV handelt es sich aber nicht nur um voll ausgereifte Lösungen und Funktionen, die sofort Einsatzbereit sind. Je nach Anforderungsbedarf, müssen die Funktionen dementsprechend angepasst oder ergänzt werden.

OpenCV ist für die Programmiersprachen C und C++ geschrieben und enthält Algorithmen für die Bildverarbeitung und maschinelles Sehen die rund 500 Imagingfunktionen enthält.

Im September 2006 wurde die Version 1.0 herausgegeben.
Die Stärke von OpenCV liegt in ihrer Geschwindigkeit und in der großen Menge der Algorithmen aus neuesten Forschungsergebnissen.
Die Bibliothek umfasst unter anderm Algorithmen für Gesichtserkennung, 3D-Funktionalität, Haar-Klassifikatoren, verschiedene sehr schnelle Filter (Sobel, Canny, Gauß) und Funktionen für die Kamerakalibrierung.
Die Software besitzt auch eine Exportschnittstelle zum Softwareentwicklungstool Matlab.

Hilfreiche Webseiten:

[1] http://sourceforge.net/projects/opencvlibrary/
[2] http://www.intel.com/technology/computing/opencv/index.htm
[3] http://opencvlibrary.sourceforge.net
[4] http://groups.yahoo.com/group/OpenCV

Literatur:

• Grundlagen der Bildverarbeitung – Klaus D. Tönnis
• Digitale Bildverarbeitung/ Grundlagen und Anwendungen – Peter Haberäcker
• Werkzeuge der Signalverarbeitung – Beate Meffert & Olaf Hochmuth