2015
Projekt: Florian Engel, Marc Vögele, Ann-
Katrin Riedel, Steffen Fleck
Dokumentation: Florian Engel
Hochschule Darmstadt
23.07.2015
Bildverarbeitung mit dem Raspberry Pi
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
1 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
Inhaltsverzeichnis Vorbemerkung ......................................................................................................................................... 2
1. Grundlegendes ................................................................................................................................ 3
1.1 Was wird benötigt? ................................................................................................................. 3
1.2 Aufbau der Hardwarekomponenten ....................................................................................... 4
1.2 Installation des Betriebssystems Raspbian ............................................................................. 4
2. Erste Bildverarbeitung mit dem Raspberry Pi ................................................................................. 7
2.1 Notwendige Installationen ...................................................................................................... 7
2.2 OpenCV Grundgerüst .............................................................................................................. 7
2.3 Beispielprogramm: Threshold ................................................................................................. 9
3. Nützliche Befehle für die Kommandozeile .................................................................................... 11
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
2 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
Vorbemerkung Ziel dieser Dokumentation ist es, den Studierenden des Optotechnik und Bildverarbeitung Studien-
gangs der Hochschule Darmstadt, die Möglichkeiten von Bildverarbeitung mit dem Raspberry Pi na-
hezubringen. Sie stellt eine Guideline zur Einrichtung des Raspberry Pi und dessen Nutzung mit dem
Raspberry Pi Camera Module in Verbindung mit der OpenCV dar. Damit soll Grundlage und Anregung
zu eigenen Experimenten geschaffen sein.
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
3 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
1. Grundlegendes Der Raspberry Pi ist ein kleiner und preisgünstiger Einplatinencomputer („Microcontroller“), der vor-
dergründig dazu entwickelt wurde, Programmier- und Hardwarekenntnisse zu erlangen. Seine Ein-
satzzwecke sind äußerst vielseitig und es lassen sich unterschiedlichste Projekte und Ideen damit
verwirklichen, worauf hier allerdings nicht näher eingegangen werden soll. Diese Dokumentation
beschränkt sich auf den Einsatz des Raspberry Pi als Bildverarbeitungssystem mit der OpenCV. Dazu
werden die benötigten Hard- und Softwareelemente gelistet und die prinzipielle Vorgehensweise
(Zusammenbau und Installationen) beschrieben sowie ein erstes OpenCV-Projekt gezeigt.
1.1 Was wird benötigt?
Der Raspberry Pi an sich
Hier gibt es mehrere Modelle, die sich hinsichtlich ihrer Leistung und ein paar Anschlussmög-
lichkeiten unterscheiden. Welches Modell gewählt wird ist prinzipiell jedoch zweitrangig,
wobei das neueste Raspberry 2 Modell B hinsichtlich Leistung und Anschlussvielfalt zu emp-
fehlen ist.
Netzteil
Als Spannung werden 5V DC benötigt, dies entspricht einem gewöhnlichen USB-Ladegerät.
Wie viel Strom der Raspberry benötigt hängt auch von den angeschlossenen Geräten ab, in
der Regel reicht ein Strom von 1200mA allerdings völlig aus.
Als kleiner Hinweis am Rande: USB-Ladegeräte liefern gegenüber „richtigen“ Netzteilen
meist keinen stabilisierten Strom, was bei Lastspitzen zu Aussetzern führen kann.
SD Karte
Der Raspberry hat keine Schnittstelle für Festplatten, das Betriebssystem und alle weiteren
Programme müssen auf einer SD Karte installiert werden.
Ein- und Ausgabegeräte
Alle zwingend erforderlichen Elemente sind bereits gelistet, der Raspberry Pi kann prinzipiell
komplett über die Konsole angesprochen werden, was für eine Serveranwendung zielführend
wäre, für unseren Zweck als Bildverarbeitungssystem allerdings nicht.
o Raspberry Pi Camera Module
Wird mit einem Flachbandkabel am CSI-Port des Raspberry Pi (direkt hinter der
Ethernet-Buchse) angeschlossen. Da die Kamera durch statische Ladung beschädigt
werden kann, sollte darauf geachtet werden, sich zuvor geerdet, also vollständig ent-
laden, zu haben.
o Tastatur und Maus
Aufgrund der begrenzten Anzahl an USB-Ports empfiehlt sich hier eine Tastatur mit
eingebautem Touchpad.
o Bildschirm
Hier eignet sich nahezu jeder Monitor, der via HDMI angeschlossen werden kann.
Software
o Raspbian
o CMake
o OpenCV
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
4 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
1.2 Aufbau der Hardwarekomponenten
Abbildung 1: Draufsicht des Raspberry Pi 1 Model B1
Der Anschluss der Hardwarekomponenten ist einfach und gestaltet sich denkbar unkompliziert. Alle
hier benötigten Anschlüsse wurden in Abbildung 1 grün umrandet und dürften selbsterklärend sein.
Bevor mit dem Raspberry Pi gearbeitet werden kann, muss jedoch zunächst ein Betriebssystem (hier
Raspbian) auf der SD Karte installiert werden.
1.2 Installation des Betriebssystems Raspbian Zunächst sei darauf hingewiesen, dass auf dem Raspberry Pi auch andere (Linux-basierte) Betriebs-
systeme lauffähig sind. Diese Dokumentation beschränkt sich aber auf die Installation von Raspbian,
einem von Debian abgeleiteten und speziell auf den Raspberry Pi zugeschnitten Betriebssystem. Dies
muss zuerst aus dem Internet heruntergeladen werden, am besten direkt von der Raspberry Pi
Website:
http://www.raspberrypi.org/downloads/
Aus dem zu entpackenden zip-Archiv erhält man eine Image-Datei, die auf der SD Karte von einem
anderen Rechner aus installiert werden muss. Bei einem Windows-Rechner funktioniert dies zum
1 Quelle: http://www.elektronik-kompendium.de/sites/raspberry-pi/1912111.htm, Stand 19.02.2015, Modifiziert durch Autor
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
5 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
Beispiel mit Win32DiskImager und unter MacOS mit der App RPi-sd card builder. Nachdem die
Image-Datei auf der SD Karte installiert wurde, kann diese an den Raspberry Pi gesteckt werden. Die-
ser ist jetzt bootfähig und kann, nachdem Tastatur, Maus, Bildschirm und optional ein Netzwerkkabel
angeschlossen wurde, mit Strom versorgt werden. Die Kamera wird an dieser Stelle noch nicht benö-
tigt, es müssen vielmehr einige Einstellungen vorgenommen werden:
Abbildung 2: Haupt-Konfigurationsmenü2
Das Konfigurationsmenü (kann bei anderen Versionen variieren, hier Raspbian Wheezy) sollte nach
einer Weile beim ersten Start des Raspberry Pi auf dem Bildschirm erscheinen. In diesem navigiert
man grundsätzlich mit den Pfeiltasten durch die Menüpunkte, bestätigt mit der Eingabetaste, trifft
Mehrfachauswahlen mit der Leertaste und wechselt mit der Tab-Taste zwischen Auswahlmöglichkei-
ten. Folgende Einstellungen müssen getroffen werden:
1 Expand Filesystem
Sorgt dafür, dass der gesamte SD Karten Speicher (beim späteren Neustart) zur Verfügung
gestellt wird.
3 Enable Boot to Desktop/Scratch
Ermöglicht die Auswahl zwischen einer graphischen Benutzeroberfläche oder eine reine Kon-
solennutzung. Wir entscheiden uns für die Desktopvariante und bestätigen mit Ok.
4 Internationalisation Options
o I1 Change Locale
Es erscheint eine Liste, in der die drei Einträge de_DE ISO-8859-1, de_DE.UTF-8 UTF-8
und de_DE@euro ISO-8859-15 ausgewählt werden müssen (Mehrfachauswal mit
Leertaste, anschließend mit der Tab-Taste zu Ok navigieren und bestätigen).
Im nächsten Fenster de_DE.UTF-8 auswählen.
o I2 Change Timezone
Zunächst Europe wählen und dann mit Berlin präzisieren.
o I3 Change Keyboard Layout
In der Liste die angeschlossene Tastatur selektieren, falls diese nicht gelistet ist oder
Unsicherheit über den genauen Typ besteht, kann die Voreinstellung beibehalten
werden. Im nächsten Fenster other auswählen, dann German und letztendlich noch
einmal German. Besitzt die Tastatur die Taste „AltGr“ wird noch The default for the
keyboard layout und No compose key gewählt sowie die Meldung „By default the
combination Control+Alt+Backspace does nothing. If you want it can be used to ter-
2 Quelle: http://www.nat.at/_media/blog/raspberry-pi_raspi-config_expand-filesystem.png, Stand 21.02.2015
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
6 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
minate the X server.” mit No bestätigt. Damit sollte das Ausgangsmenü wieder er-
reicht sein.
5 Enable Camera
Hierbei Enable auswählen, um die Nutzung der Kamera zu etablieren.
8 Advanced Options
o A1 Overscan
Dient zur Skalierung der Anzeige, wird nur bei Darstellungsproblemen benötigt.
o A2 Hostname
Gibt dem Raspberry Pi einen Namen, unter dem er im Netzwerk zu finden ist. Dabei
empfehlen sich durchweg Kleinbuchstaben und keine Sonderzeichen sowie keine Zif-
fern am Anfang.
o A3 Memory Split
Erlaubt die Aufteilung des Arbeitsspeichers für die CPU und GPU, also zwischen Pro-
zessor und Grafikeinheit des Raspberry Pi. Da wir Bildverarbeitung betreiben wollen,
sollte dieser nicht zu gering gewählt werden (128 MB).
Die weiteren Einstellungen in diesem Menü sind erstmal unerheblich. Damit ist die Konfiguration des
Betriebssystems abgeschlossen, es darf mit Finish neugestartet werden. Wenn ein Login erforderlich
ist, lautet der Benutzername „pi“ und das Passwort „raspberry“ (sofern hierfür keine eigenen Einstel-
lungen getroffen wurden).
Hinweis: Das Konfigurationsmenü kann auch nachträglich erneut aufgerufen und weitere Einstellun-
gen vorgenommen werden. Dafür gibt man lediglich sudo raspi-config in die Kommandozeile ein.
Nach der Installation des Betriebssystems, empfiehlt es sich ein Systemupdate durchzuführen. Fol-gende Befehle müssen dazu in der Kommandozeile eingegeben werden: sudo apt-get update
sudo apt-get upgrade sudo raspi-config
Die Kamera kann nun mit dem Raspberry Pi verbunden werden.
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
7 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
2. Erste Bildverarbeitung mit dem Raspberry Pi
2.1 Notwendige Installationen Zuerst muss Cmake heruntergeladen ( http://www.cmake.org/download/ ) und installiert werden.
Die Datei muss entpackt werden, dies geschieht mit einem Rechtsklick Hier entpacken. Zur Instal-
lation die Kommandozeile (im selben Verzeichnis) öffnen und entweder
./bootstrap oder sudo apt-get install cmake make make install
eingeben und ausführen.
Danach muss der Quellcode für die OpenCV bezogen werden. Zum Beispiel über die Eingabe von wget https://github.com/Nolaan/libopencv_24/archive/OpenCV_2.4.10.tar.gz oder wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.11/opencv-2.4.11.zip in der Kommandozeile. Es empfiehlt sich nach der aktuellen OpenCV Version zu suchen und den je-
weiligen URL zu benutzen.
Nach dem Entpacken müssen abschließend noch folgende Befehle nacheinander in die Kommando-zeile eingegeben werden: cmake Cmakelist.txt sudo make install Hierzu sollte bei dem Raspberry 2 etwa 2 bis 3 Stunden und bei dem Vorgängermodell etwa die 3- bis
4-fache Zeit einplant werden.
2.2 OpenCV Grundgerüst Zuerst muss CmakeLists.txt mit dem Texteditor erstellt werden: cmake_minimum_required(VERSION 2.8) project(Filename) find_package(OpenCV REQUIRED) add_executable (Filename filename.cpp) target_link_libraries(Filename ${OpenCV_LIBS}) Der OpenCV Code wird ebenfalls im Texteditor geschrieben und muss als filename.cpp gespeichert werden. Die Anzeige eines Bildes kann wie folgt aussehen (Abb.3):
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
8 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
Abbildung 3: Beispielcode zum Anzeigen eines Bildes
3
Vor der ersten Kompilierung muss cmake CMakeLists.txt einmalig in die Kommandozeile eingeben werden. Die Kompilierung und Ausführung geschieht in der Kommandozeile mit den Befehlen: make Filename ./Filename Im Fall von Abb.3 muss zudem der Bild-Pfad angegeben werden: ./Filename pic.jpg Weitere nützliche Informationen, Tutorials und eine Übersicht der OpenCV Funktionen sind auf
http://opencv.org/ zu finden.
3 Quelle: http://docs.opencv.org/doc/tutorials/introduction/display_image/display_image.html#display-image, Stand 04.06.2015
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
9 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
2.3 Beispielprogramm: Threshold Als grundlegendes Beispiel sei hier ein einfacher Threshold auf ein Bild angewandt. Der Bildpfad wird
bei diesem Beispiel erst bei der Ausführung des Programms in der Kommandozeile angegeben. Es
wird also auf ein bereits aufgenommenes Bild zugegriffen. Dieses wird dann zuerst in ein Grautonbild
umgewandelt und dann Binarisiert.
Abbildung 4 zeigt ein Bild, welches mit der Raspberry Camera aufgenommen und dann mit obigem
Programm binarisiert wurde (Abb.5).
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <cv.h>
using namespace cv;
// Globale Variablen
int threshold_value = 128; // Schwellwert
int threshold_type = 3; // versch. Binarisierungstypen (0...4), s. OpenCV Doku
int const max_BINARY_value = 255; // Groesster Grauwert
int main(int argc, char** argv)
{
if (argc !=2) // Ueberpruefen, ob der Bildpfad vorhanden ist
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image, image_gray, dst; // Bildmatrizen (Type: Mat - Matrix)
image = imread(argv[1],1); // Bild einlesen
if (!image.data) // Ueberpruefen, ob das Bild eingelesen wurde
{
printf("No Image data\n");
return -1;
}
// Konvertierung in ein Grautonbild, Parameter: (Urspungsbild, Zielbild, Konvertierung)
cvtColor(image, image_gray,COLOR_RGB2GRAY);
// Threshold, Parameter: (Urspungsbild, Zielbild, Schwellwert, Max. Grauwert, Typ)
threshold(image_gray,dst, threshold_value, max_BINARY_value, threshold_type);
// Bilder anzeigen
namedWindow("Display Image", WINDOW_AUTOSIZE);
imshow("Original Image",image);
imshow("Binarized Image",dst);
// Bild speichern
imwrite("pic/Binarized_Image.jpg", dst);
waitKey(0);
return 0;
}
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
10 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
Abbildung 4: Foto mit der Raspberry Camera
Abbildung 5: Binarisiertes Bild
Dokumentation: Florian Engel Projekt: Florian Engel, Marc Vögele, Ann-Katrin Riedel, Steffen Fleck
11 Hochschule Darmstadt Bildverarbeitung mit dem Raspberry Pi Dokumentation
3. Nützliche Befehle für die Kommandozeile
Befehl Aktion
raspivid Video mit der Kamera aufnehmen
raspivid –o dateiname.h264 5s Video aufnhemen; für andere Zeitspanne –t Zeit[ms] anfügen
raspivid | less Gibt eine Liste mit Befehlen für raspivid zurück, exit mit q
raspistill Foto aufnehmen; Befehle für raspivid beachten; speichert im jpg-Format
ls Liste von Dateien im aktuellen Verzeichnis
cd Wechselt das Verzeichnis, z.B. cd directory oder cd /home/pi/directory
pwd Zeigt den aktuellen Verzeichnispfad
mkdir Neues Verzeichnis (Ordner) erstellen, z.B.: mkdir newDir
rmdir Entfernt ein vorhandenes Verzeichnis
sudo Einen Befehl als Superuser ausführen; wichtig bei Installationen
unzip Eine zip-Datei entpacken
tar –xvzf *filename.tar.gz* Eine tar-Datei entpacken
wget Dateien aus dem Internet herunterladen (URL anfügen)
apt-get Verwaltung von Paketen auf Debian, z.B. Installationen
ipconfig Anzeigen der Internetverbindung (analog zu ipconfig bei Windwos)