Bildentzerrung und KOS-Transformation

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Luca_Di-Lillo, Tim Leonard Bexten
Betreuer: Prof. Schneider

Inbetriebnahme der Kamera

Ansteuerung mit CamLab am Fahrzeug

Bereich zum Download der Software

Um einen ersten Funktionstest der Kamera durchzuführen, wurde die Kamera über einen Ethernetkabel mit dem Laborrechner verbunden und das zugehörige Netzteil für die Stromversorgung angeschlossen. Das VRmagic Programm zum ausgeben des Kamerabildes "CamLab" ist auf allen Laborrechnern bereits installiert.
Falls es nicht installiert sein sollte, kann das Programm von der VRmagic Homepage heruntergeladen werden:
https://www.vrmagic.com/de/vrmagic-imaging/service-support/
Der richtige Typ der Software, für den entspechenden Rechner kann unter dem Punkt "USBPlattform/Software" ausgewählt und heruntergeladen werden, siehe Bild.
Nachdem das Programm heruntergeladen wurde, muss die ZIP-Datei entpackt werden und die "Setup"-Datei ausgeführt werden. Für nähere Informationen zur Installation, ist in der ZIP-Datei eine README-Dokument enthalten.
"WICHTIG: Admin-Rechte von Nöten!!!"
Nachdem die Installation erfolgreich abgeschlossen wurde, kann das Programm "CamLab" ausgeführt werden.
Oberfläche des CamLab Programms
Nachdem das Programm geöffnet wurde kann die VRmagic Kamera mit dem CamLab kommunizieren. Die angeschlossene Kamera kann in dem Dropdown-Menü ausgewählt werden. Dies kann nach dem ersten mal anschließen etwas dauern, bis das Programm die Ethernetverbindung zur Kamera findet. Im Anschluss daran kann die Bildausgabe gestartet werden.

Wenn die Kamera ausgewählt wurde, öffnet sich ein erweiteretes Menü. In diesem Menü können alle möglichen Konfigurationen vorgenommen werden, die die VRmagic Kamera anbietet (Format, Timing, Sensor, Filter etc.). Mit einem Klick auf den Button "Grab" kann die Bildwiedergabe gestartet werden. Es können auch Snapshots erstellt werden, die auf dem Rechner gespeichert werden können.
Mit diesem Programm wurde ein erster Funktionstest der Kamera durchgeführt, welcher Grundlage für weitere Ansterungskonzepte mit Visual Studio ist.

Implementierung der Kamera in Visual Studio

Bildverarbeitung

Installation von OpenCV

Um das Kamerabild der VRMagic Kamera zu sehen und zu verabeiten wurde OpenCV verwendet. OpenCV bietet zahlreiche Möglichkeiten Bilder zu erkennen und zu verarbeiten.
Für dieses Projekt wurde OpenCV 3.0.0 (Downloadlink zu OpenCV 3.0.0) verwendet, da diese eine x86 (32-Bit) Version enthält, die nötig ist, um OpenCV mit der VRMagic in Visual Studio lauffähig zu machen. Denn die Kamera ist nur mit x86 kompatibel.

Umgebungsvariablen

Nach abgeschlossenem Download, wird die OpenCV.exe gestartet und in einem gewünschten Verzeichnis installiert. Um OpenCV richtig zu implementieren, sucht man im Windows Suchmenü nach "Systemsteuerung" und dort wählt man die Einstellung System aus. Unter "System" wählt man nun als Administrator in der oberen linken Ecke "Erweiterte Systemeinstellungen" aus. Jetzt öffnet sich ein Fenster namens "Systemeinstellungen", dort wählt man den Button Umgebungsvariablen aus und sucht dort in "Systemvariablen", die Variable Path (siehe Abbildung Umgebungsvariablen) und wählt den Button "Bearbeiten" aus. Jetzt Öffnet sich das Fenster "Umgebungsvariable bearbeiten" (siehe Abbildung Umgebungsvariablen bearbeiten), dort betätigt man den Button "Neu". Jetzt fügt man den Dateipfad zu den OpenCV bin Dateien hinzu (C:\[Dateipfad auf eigenem Rechner]\openCV 3.0.0\opencv\build\x86\vc12\bin), dabei ist darauf zu achten, dass man x86 und vc12 auswählt, andere Konfigurationen sind mit der Kamera nicht lauffähig. Achtung bei einigen Windows Versionen sieht das Fenster "Umgebungsvariablen bearbeiten" anders aus, dort befindet sich lediglich eine Textbox mit verschiedenen Dateipfaden, sollte dies der Fall sein, trennt man den letzten Pfad mit einem Semikolon und fügt den Pfad zu OpenCV hinten an.
Nach diesen Einstellungen wird ein Projekt (Konsolenanwendung in C++) in Visual Studio geöffnet oder erstellt. In Visual Studio wählt man in dem Dropdown Menü in der oberen Leiste neben "Debug" x86 aus (siehe Abbildung Visual Studio auf x86 einstellen rotes Rechteck), ohne diese Einstellung lässt sich das Programm nicht kompilieren. Im nächsten Schritt wählt man in dem Fenster "Projektmappen-Explorer" mit einem Rechtsklick die Projektmappe aus und öffnet Eigenschaften. Die Konfiguration des Eigenschaftsfensters muss auf "Debug" eingestellt sein und die Plattform auf "Aktiv(Win32)" (siehe Abbildung Zusätzliche Includeverzeichnisse rote Rechtecke). In diesem Fenster wählt man als erstes die Registerkarte "C/C++" aus (blaues Rechteck), dort fügt man jetzt unter dem Punkt "Zusätzliche Includeverzeichnisse" (grünes Rechteck), den Dateipfad "C:\[Dateipfad auf eigenem Rechner]\openCV 3.0.0\opencv\build\include" hinzu. Im nächsten Schritt muss man die Library Dateien mit dem Linker verlinken, dazu bleibt man in dem Eigenschaftsfenster und wählt die Registerkarte "Linker" aus und öffnet dort "Allgemein" (siehe Abbildung Zusätzliche Bibliotheksverzeichnisse rotes Rechteck). Dort wählt man jetzt den Punkt "Zusätzliche Bibliotheksverzeichnisse" (siehe grünes Rechteck) und fügt den Dateipfad "C:\[Dateipfad auf eigenem Rechner]\openCV 3.0.0\opencv\build\x86\vc12\lib" hinzu. Nun öffnet man auch unter der Registerkarte "Linker" den Punkt "Eingabe" (siehe Abbildung Zusätzliche Abhängigkeiten rotes Rechteck), dort fügt man unter dem Punkt "Zusätzliche Abhängigkeiten" (siehe grünes Rechteck) folgendes hinzu:

  • opencv_ts300d.lib
  • opencv_world300d.lib
Umgebungsvariablen hinzufügen
Visual Studio auf x86 einstellen
Zusätzliche Includeverzeichnisse
Zusätzliche Bibliotheksverzeichnisse
Zusätzliche Abhängigkeiten




































Darstellung des Kamerabildes mit OpenCV

Quelltext

 

VRmColorFormat color_format_src = p_gray_src_img->m_image_format.m_color_format;

/*Wandlung des Kamerabilds in ein Mat, um das Bild mit OpenCV zu verarbeiten*/
Mat src_image(cvSize(p_gray_src_img->m_image_format.m_width, p_gray_src_img->m_image_format.m_height), toCvType(color_format_src),(void*)p_gray_src_img->mp_buffer, p_gray_src_img->m_pitch);
		
src_image.copyTo(src_UMat_image); //Kopiert die Mat in eine UMat, um die Auslastung der CPU zu verringern
imshow("Live Bild", src_UMat_image); //Zeigt das Bild an

Kantendetektion in OpenCV mit Canny Edge

Nachdem das Kamerabild der VRmagic Kamera und in eine OpenCV-Matrix (UMat) umgewandelt wurde, kann eine Kantendetektion durchgeführt werden. OpenCV bietet verschiedene Algorithmen zur detektion von Kanten in einem Kamerabild an.
Für die Kantendetektion wurde der weit verbreitete Algorithmus Canny Edge verwendet. OpenCV bietet für diesen Anwendungsfall bereits eine vorgefertigte Funktion an.

void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false )

Bildtransformation in Vogelperspektive mit OpenCV