Lade Inhalt...

Digitale Gesichtserkennung: Theoretischer Überblick und praktische C++-Implementierung

©2012 Bachelorarbeit 59 Seiten

Zusammenfassung

Das vorliegende Fachbuch befasst sich mit Algorithmen und Techniken zur Gesichtsentdeckung sowie zur Gesichtserkennung bzw. Gesichtswiedererkennung. Das hauptsächlich behandelte Thema ist die Wiedererkennung von Personen aufgrund zuvor erlernter biometrischer Informationen.
Einleitend wird der derzeitige Stand der Forschung präsentiert. Dieser Überblick behandelt sowohl 2D- als auch 3D-basierende Algorithmen zur Gesichtsentdeckung und Gesichtserkennung. Beispielsweise wird die Gesichtsentdeckung durch Bildreduzierung um Hintergrundinformationen, durch die Auswertung von Farbinformationen, durch Erkennung von Bewegungen und durch Geometrievergleiche beschrieben. Die leistungsfähige und heutzutage gängigste Gesichtsentdeckungsmethode, die Viola-Jones-Methode, wird eingehend diskutiert und als C++-Programmcode implementiert.
Die theoretische Behandlung verschiedener Gesichtserkennungsalgorithmen, wie Erkennung mittels Hidden Markov Models, durch Elastic Bunch Graph Matching, mit Hilfe von 3D Morphable Models, durch 3D Face Recognition sowie durch Anwendung von Fisherfaces oder Eigenfaces, führt zur praktischen Gesichtserkennungsimplementierung.
Dabei werden Gesichter in einem Webcam-Stream automatisch entdeckt, in den Graustufenbereich transformiert und aus der Aufnahme extrahiert. Die normalisierte Gesichtsabbildung wird an den Gesichtserkennungsteil der Software weitergereicht, der die Wiedererkennung bekannter Personen oder die Erlernung unbekannter Gesichter mit Hilfe des Eigenfaces-Algorithmus durchführt. Die selbst geschriebene Software wurde mit einem kleinen Set an Bildern von Personen getestet und erreichte dabei eine Erkennungsrate von 95,83 %.
Das vorliegende Fachbuch beschreibt die Funktionsweise des Programms detailliert. Der C++-Code ist im Buch enthalten und bedient sich der frei erhältlichen Open Computer Vision Library.

Leseprobe

Inhaltsverzeichnis


Inhaltsverzeichnis
1
Einleitung ... 7
2
Gesichtsentdeckung ... 9
2.1
Gesichtsentdeckung durch Bildreduzierung um Hintergrundinformationen ... 9
2.2
Gesichtsentdeckung durch Farbinformationen ... 10
2.3
Gesichtsentdeckung durch Bewegungsinformationen ... 10
2.4
Gesichtsentdeckung durch Geometrie ... 11
2.5
Viola-Jones Methode ... 12
3
Gesichtserkennung ... 14
3.1
Eigenfaces ... 14
3.1.1
Funktionsweise von Eigenfaces... 15
3.2
Fisherfaces ... 17
3.2.1
Funktionsweise von Fisherfaces ... 18
3.3
Gesichtserkennung durch Unabhängigkeitsanalyse ... 20
3.3.1
Funktionsweise ... 20
3.4
Hidden Markov Model ... 21
3.5
Elastic Bunch Graph Matching ... 22
3.5.1
Funktionsweise ... 22
3.6
3D Morphable Model ... 25
3.6.1
Funktionsweise ... 26
3.7
3D Face Recognition ... 27
3.7.1
Funktionsweise ... 27
3.8
Vergleich ... 30
3.9
Leistungssteigernde Erweiterungen ... 30
4
Verwendete Hardware ... 31
4.1
Kameraauswahl ... 31
4.2
Workstation-Auswahl ... 31

5
Software ... 32
5.1
Auswahl der Programmiersprache und Bibliotheken ... 32
5.2
Gesichtsentdeckung ... 32
5.2.1
Bildaufnahme ... 32
5.2.2
Bildvorbereitung ... 33
5.2.3
Gesichtsmerkmalsentdeckung ... 33
5.2.4
Kennzeichnung ... 34
5.3
Gesichtserkennung ... 35
5.3.1
Merkmalsextraktion und Gesichtserlernung ... 36
5.3.2
Gesichtsvergleich und Klassifizierung ... 37
5.3.3
Evaluierung mittels eigener Gesichtsdatenbank ... 38
6
Zusammenfassung und Ausblick ... 40

7
1
Einleitung
Gesichtsentdeckung, engl. ,,face detection", und Gesichtserkennung, engl. ,,face recognition",
stellen große Herausforderungen an die WissenschafterInnen im Bereich des Computer-
Sehvermögens, engl. Computer Vision, dar. Bereits in den 1960ern wurden die Forschungen
in diesem Gebiet gestartet und konnten aufgrund ihrer Komplexität bis heute nicht
abgeschlossen werden [1].
Als Gesichtsentdeckung wird in dieser Arbeit der computerautomatisierte Vorgang zur
Entdeckung von Gesichtern in einer digitalen Abbildung bezeichnet. Einige der
Schwierigkeiten sind dabei die sich verändernden Lichtverhältnisse, die unterschiedlichen
Größen der Gesichter im Bild sowie die Drehung von Gesichtern. Das Hauptproblem in
Bezug auf computerautomatisierte Gesichtsentdeckung stellt aber die große Variation an
Gesichtern aufgrund von Herkunft und unterschiedlichen Erscheinungsbildern dar [1].
Die Gesichtserkennung wiederum setzt voraus, dass das Gesicht im vorgelagerten
Entdeckungsprozess aus dem Bild extrahiert werden konnte und weiter verarbeitet werden
kann. Die automatisierte Gesichtserkennung bezeichnet die Identifikation von Personen aus
zuvor erlernten, abgespeicherten Gesichtern. Da zur Personenidentifikation nicht dieselben
Bilder wie zur Erlernung der Gesichter vorliegen, treffen ebenfalls die zuvor genannten
Probleme der Gesichtsentdeckung zu. Vor allem sind die derzeit gängigen Algorithmen auch
mit Problemen wie Täuschungen durch Fotos, Manipulation von Gesichtern, Identifikation
eineiiger Zwillinge oder Emotionen und Gesichtsausdrücken konfrontiert [1], [2], [3].
Die Gesichtserkennung erlebt durch soziale Netzwerke einen neuen Aufschwung, wird aber
zum Teil auch schon jahrelang zur Verbrechensaufklärung eingesetzt. Vor allem im Bereich
der öffentlichen Sicherheit finden immer wieder Evaluierungen und Forschungstätigkeiten
statt. Die Gesichtserkennung stellt die am wenigsten aufdringliche Art der biometrischen
Identifikation dar und ist zudem in Echtzeit auf große Menschengruppen anwendbar.
Zukünftige Anwendungen sehen die Nutzung zur Personenidentifikation an Flughäfen, in
Firmen, Banken, Gefängnissen und anderen Einrichtungen vor. Auch die Verbreitung und
Verbesserung der Nutzung in der Robotik ist ein großes Thema für Gesichtserkennung
1
.
In dieser Arbeit werden die derzeit gängigen Verfahren zur Gesichtsentdeckung sowie
Gesichtserkennung vorgestellt und es wird jeweils ein ausgewähltes Verfahren implementiert.
_____________________
1
Dt. Bundesamt für Sicherheit in der Informationstechnik (2005), Studie: ,,Untersuchung der Leistungsfähigkeit
von biometrischen Verifikationssystemen - BioP II"

8
Diese praktische Implementierung wird im Detail beschrieben. Aufbauend auf diese Arbeit
könnte etwa ein Roboter oder ein Laborzugang mit einem Gesichtserkennungssystem
ausgestattet werden.

9
2
Gesichtsentdeckung
Die Gesichtsentdeckung, engl. ,,face detection", bildet die Basis zur Erkennung bzw.
Wiedererkennung von Gesichtern. Damit ein digitales System Gesichter identifizieren und
somit bekannten Personen zuordnen kann, müssen zuerst biometrische Daten in Bildern oder
Videoaufnahmen gefunden und aus diesen extrahiert werden. Dabei werden Bilder
systematisch nach menschlichen Gesichtern untersucht und es wird die Lage
(Pixelkoordinaten innerhalb des Bildes) der dabei gefundenen Merkmale gespeichert.
Algorithmen zur Erkennung von Gesichtern unterscheiden sich in Suchstrategien und
Erkennungsmethoden. Abbildung 1 stellt das Ergebnis einer typischen Gesichtsentdeckungs-
anwendung dar.
Abbildung 1 Gesichtsentdeckung
In den folgenden Unterkapiteln werden einige Verfahren zur Gesichtsentdeckung
überblicksmäßig beschrieben.
2.1
Gesichtsentdeckung durch Bildreduzierung um
Hintergrundinformationen
Ist der Hintergrund der zu durchsuchenden Gesichtsaufnahmen dem System bekannt, so kann
durch Subtraktion dieser Hintergrundinformationen das Gesicht innerhalb des Bildes
lokalisiert werden. Der Hintergrund muss vordefiniert sowie statisch sein und es darf sich nur
eine Frontalabbildung eines Gesichts im Bild befinden [4].

10
2.2
Gesichtsentdeckung durch Farbinformationen
Des Weiteren existieren Algorithmen zur Gesichtsentdeckung, die aufgrund von
Farbinformationen entscheiden, ob sich Gesichter in einer Aufnahme befinden oder nicht.
Eine Unterscheidung dieser Algorithmen ergibt sich im Analysevorgang durch die in den
jeweiligen Bildern verwendeten Farbräume. Es ist aber auch eine Anwendung auf
Graustufenabbildungen möglich.
Bei dieser Methode wird aus dem Bild die Sättigung (Y-Achse) pro Farbton (X-Achse)
berechnet (siehe Abbildung 2). Da menschliche Haut eine relativ dichte und monotone
Anordnung in dieser Darstellung erzeugt, kann auf die Abbildung eines Gesichts in einer
Aufnahme geschlossen werden [5].
Abbildung 2 Farbraumanordnung bei Gesichtsentdeckung durch Farbinformationen [5]
Probleme bereiten bei dieser Art der Gesichtsentdeckung vor allem die zahlreichen
unterschiedlichen Hautfarben in Zusammenspiel mit sich verändernden Lichtverhältnissen.
Außerdem ist es problematisch, Gesichter zu entdecken, die nur relativ klein innerhalb der
Aufnahme zu sehen sind. Bei dieser Methode führen unter Umständen auch gesichtsähnliche
Gegenstände zur fälschlichen Entdeckung eines Gesichts [5].
Tiefergehende Informationen zu dieser Methode können in [5] nachgelesen werden. In [6]
sowie in [7] werden Entdeckungen mit Farbbildern verschiedener Farbräume durchgeführt
und die Ergebnisse verglichen.
2.3
Gesichtsentdeckung durch Bewegungsinformationen
Die Gesichtsentdeckung aufgrund von Bewegungsinformationen lässt sich nur mit
Videoaufnahmen anwenden. Diese Methode zieht daraus Nutzen, dass sich ein Gesicht
nahezu immer in Bewegung befindet.
Von Bild zu Bild wird die Differenz der korrespondierenden Pixel berechnet. Ist die Differenz
größer als ein festgelegter Wert, so wird von einem neuen Bild ausgegangen. Auch der
Bereich für die mögliche Bewegung wird zuvor festgelegt, um zum Beispiel bei der

11
Identifikation einer Person von einer im Hintergrund vorbeigehenden Person zu
unterscheiden.
Diese Methode produziert zahlreiche Falschentdeckungen, da ohne eine nachgeschaltete
spezifischere Gesichtsentdeckung auch andere bewegte Objekte als Gesichter erkannt werden
[8].
Eine praktische Implementierung inklusive Erläuterungen wurde in [8] durchgeführt, in [9]
wird zusätzlich das Auftreten des Lidschlags überprüft. Dadurch kann ein verlässlicheres
Ergebnis erzielt werden.
2.4
Gesichtsentdeckung durch Geometrie
Bei der Gesichtsentdeckung aufgrund von geometrischen Informationen wird das zu unter-
suchende Bild derart gefiltert, dass ein binäres Bild entsteht, auf dem nur die Kanten
abgebildet sind (siehe Abbildung 3). Ein Fenster vordefinierter Größe wird dann mit einem
Kantenbild eines typischen Gesichts verglichen indem die Hausdorff-Distanz berechnet wird.
Die Hausdorff-Distanz bezeichnet den kleinstmöglichen Abstand einer Punktemenge zu einer
zweiten Punktemenge. Mit einem detaillierteren Modell der Augenpartie wird dieser Schritt
wiederholt und anschließend aufgrund der Differenz entschieden, ob es sich um ein Gesicht
handelt oder nicht [10].
Diese Methode zur Gesichtsentdeckung wird in [10] näher beschrieben. Es existieren auch
Algorithmen, die auf Basis von 3D-Bildern und darauf aufbauenden geometrischen
Vergleichen Gesichter entdecken (siehe [11]). So lässt sich der in 3.6 vorgestellte
Algorithmus auch zur Gesichtsentdeckung verwenden.
Abbildung 3 Kantenbild einer Person

12
2.5
Viola-Jones Methode
Bei dieser Art der Gesichtsentdeckung werden Fenster fixer Größe über das gesamte Bild
geschoben und es wird jeweils entschieden, ob sich innerhalb dieses Fensters ein Gesicht
befindet oder nicht. Die Entscheidung erfolgt aufgrund von hinterlegten Entscheidungs-
schwellen, die sich auf bestimmte Regionen innerhalb des durchsuchten Fensters beziehen.
Dazu werden die Summen der Pixel jeweils innerhalb der schwarzen und weißen Markierung
(siehe Abbildung 4) gebildet. Je nach zu untersuchenden Merkmalen sehen die Fenster und
Markierungen für die Summierungen der Pixel anders aus.
Mittels der Differenz dieser Summen wird der bildspezifische Vergleichswert errechnet. Die
hinterlegten Schwellen werden durch Training des Algorithmus sowohl mit negativen als
auch mit positiven Beispielbildern erzeugt. In diesem Kontext werden Beispielbilder ohne
Gesichter als negativ und umgekehrt Bilder, die Gesichter beinhalten als positiv bezeichnet.
Abbildung 4 Regionsbezogene Merkmalsberechnung innerhalb eines Fensters
Die Entscheidung mittels Klassifikatoren erfolgt sequenziell. Das heißt, es wird zuerst der
gröbste Klassifikator auf das zu durchsuchende Fenster angewandt und nur bei positivem
Ergebnis mit den folgenden, feineren Klassifikatoren fortgefahren. Diese feineren
Klassifikatoren können jeweils ebenfalls zu einem Abbruch des Entdeckungsprozesses
führen. Im Falle eines negativen Ergebnisses wird das Fenster verworfen und das nächste
Fenster betrachtet. Dadurch erreicht die Viola-Jones Methode Echtzeittauglichkeit (siehe
Abbildung 5) [12].

13
Abbildung 5 Viola-Jones: Möglichkeit des vorzeitigen Abbruchs
Für weitere Informationen zur Funktionsweise dieser Methode siehe [12]. Details zur
Erzeugung der Klassifikationswerte können in [13] nachgelesen werden.
Im praktischen Teil dieser Arbeit wird diese Methode zur Gesichtsentdeckung angewandt.

14
3
Gesichtserkennung
Die Gesichtserkennung beschäftigt sich mit der Identifizierung von Personen aufgrund
biometrischer Informationen.
Bei der Gesichtserkennung wird zwischen der Lernphase und der Erkennungsphase unter-
schieden. In der Lernphase erhält das System Bilder von unbekannten Gesichtern, die so
weiterverarbeitet und gespeichert werden, dass ein späterer Vergleich zur Identifikation
möglich ist [1].
In diesem Kapitel werden Algorithmen zur Gesichtserkennung vorgestellt und es wird deren
Funktionsweise erläutert. Es werden darin jeweils unterschiedliche Arten der
Merkmalsextraktion implementiert, die den Rechenaufwand der Vergleiche möglichst
minimieren aber trotzdem eine hohe Erkennungsrate aufweisen.
Die Basis der Entscheidung, ob ein zu erkennendes Gesicht identifiziert werden kann, bildet
in jedem der folgenden Algorithmen der Vergleich der extrahierten Merkmale mit denen der
bereits bekannten Gesichter.
In den Anfängen der Gesichtserkennung wurde ein Bild etwa nach den Positionen der Augen,
der Nase und des Mundes durchsucht und es wurden diese Merkmale in Relation gesetzt. Dies
hatte zur Folge, dass Gesichter lediglich auf Frontalaufnahmen erkannt werden konnten und
sich auch starke Abhängigkeiten zu Emotionen sowie dem Erscheinungsbild von Personen
ergaben [1].
Gesichtserkennungsalgorithmen aus den 1980ern benötigten zudem eine sehr große Anzahl
von Lernbildern. Diese Methoden sind daher praxisuntauglich und lediglich als Vorläufer der
modernen Algorithmen anzusehen [1].
Generell ist mittels aller hier vorgestellten Gesichtserkennungsalgorithmen auch eine
Gesichtsentdeckung möglich, wobei dann gegen ein allgemein gültiges Gesichtsmodell
verglichen wird.
3.1
Eigenfaces
Eigenfaces, dt. Eigengesichter, ist eine auf der Karhunen-Loeve-Transformation bzw. Haupt-
komponentenanalyse, engl. ,,Principal Component Analysis" (im weiteren Verlauf PCA
genannt), basierende Methode zur Gesichtserkennung. Eigenfaces wurde von Matthew Turk
und Alex Pentland am Massachusetts Institute of Technology entwickelt [1].
Durch eine Erlernung von Gesichtern mit Bildern verschiedener Ansichten wird die Gesichts-
erkennung bei unterschiedlichen Bedingungen ermöglicht. Als Beispiel für dieses Prinzip sei

15
hier eine Frontalaufnahme, eine Aufnahme mit 45°-Drehung des Gesichts um die Z-Achse
und eine Profilaufnahme des Gesichts genannt [1].
Eigenfaces basiert auf 2D-Gesichtsabbildungen und zielt nicht auf einen Vergleich
geometrischer Informationen ab. Außerdem ist diese Variante echtzeitfähig und relativ stabil
gegenüber leichten Gesichtsveränderungen [1].
3.1.1
Funktionsweise von Eigenfaces
Zur Erlernung der Gesichter werden mehrere Grauwertbilder pro Person benötigt. In [1]
werden vier Bilder mit einer Größe von
N*N Pixeln pro Gesicht empfohlen, die sich durch
Veränderungen der Emotionen und Lichtverhältnisse unterscheiden. Die absolute Anzahl der
Bilder
n ergibt sich somit aus
=
persons
pictures
(1)
wobei
n
persons
die Anzahl der zu erlernenden Personen und
n
pictures
die Anzahl der Bilder pro
Person bezeichnet. Jedes Bild wird durch einen Punktvektor mit N²-Dimensionen dargestellt.
Zunächst wird aus Bildern mehrerer Personen (
1, 2, 3, ... n) ein Durchschnittsgesicht
gebildet:
=
1
i
(2)
Anschließend wird der Differenzvektor
jedes Bildes zu dem Durchschnittsgesicht
berechnet:
i
=
i
­
(3)
Diese Differenzvektoren werden anschließend einer PCA unterzogen. Die PCA wird
angewandt, um die Vektoren zu finden, die innerhalb der
n Bilder die Verteilung der
Gesichtsinformationen am besten darstellen. Das heißt, die PCA löst die Fragestellung
,,Welche Informationen führen zur Unterschiedlichkeit der einzelnen Gesichter?" [1], [14].
Es werden korrelierte Variablen in eine geringere Menge nicht korrelierter Variablen, die
Hauptkomponenten, überführt. Die gesamte Menge der Hauptkomponenten besitzt einen
beinahe unveränderten Informationsgehalt im Vergleich zum Ursprungsvektor. Der
Informationsgehalt ergibt sich aus der Varianz der Datenpunkte [14].
Die Hauptkomponenten werden iterativ gesucht, beginnend bei der Geraden, deren
euklidische Abstände zu den Datenpunkten minimal sind. Daraus folgt, dass die Abstände
zum Datenzentrum, dem Erwartungswert, maximal werden (siehe Abbildung 6).

16
Abbildung 6 Auffindung der ersten Hauptkomponente aus
1
Die zweite Hauptkomponente steht orthogonal auf die erste Hauptkomponente und stellt die
zweitgrößte Varianz dar, usw.
Zur genauen Beschreibung der PCA siehe [14].
Anschließend wird für jede Person die Hauptkomponente ausgewählt, die den größten Teil
der Varianz zum Durchschnittsgesicht repräsentiert, also am meisten Information enthält.
Dies erfolgt mittels einer Maximum Entropie Analyse, (4).
{
k
} =
1
(
kT
i
(4)
In der Praxis werden die Vektoren
u
k
und die zugehörigen Skalare
k
gefunden, indem die
Eigenvektoren bzw. Eigenwerte der Kovarianzmatrix aller Differenzbilder berechnet werden.
Dabei erfolgt die Einschränkung, dass maximal
npersons-1­Hauptkomponenten anstatt N²-
Hauptkomponenten gefunden werden müssen (vorausgesetzt
npersons<<N²). Dadurch wird
die Echtzeittauglichkeit ermöglicht. Die Eigenvektoren
u
k
definieren gemeinsam mit den
Eigenwerten
k
den Gesichtsraum, engl. ,,face space" [1].
Da die Eigenvektoren gesichtsähnlich aussehen wurden sie in [1] als Eigenfaces bezeichnet
(siehe auch selbst erzeugtes Eigenface in Abbildung 7).
_____________________
1
Wikipedia. (2012). Hauptkomponentenanalyse. Abgerufen am 23. 04. 2012 von
http://de.wikipedia.org/wiki/Hauptkomponentenanalyse

17
Abbildung 7 Eigenface
Die Identifikation einer Person geschieht folgendermaßen: Das zu identifizierende Gesicht ist
auf dem Bild
abgebildet und wird mittels
k
=
kT
( - )
mit
k=1,..., npersons-1
(5)
in seine Eigenface-Komponenten,
k
(,,Gewichte") zerlegt. Dadurch ergibt sich der Vektor
T
der
1
bis
npersons-1
enthält. Dieser Arbeitsschritt wurde davor auch mit jedem Bild der
bekannten Gesichter durchgeführt. Anschließend wird die Gesichtsklasse gesucht, deren
Gewichtsvektor
k
am geringsten von
des zu erkennenden Gesichts entfernt ist. Dieser
Vergleich basiert auf der Berechnung des euklidischen Abstands zu jeder Gesichtsklasse:
k
² = -
k
²
mit
k=1,..., npersons-1
(6)
Befindet sich
e
k
unter einer bestimmten Entscheidungsschwelle, so wird das Gesicht als
bekannt eingestuft. Die konkrete Zuordnung erfolgt zu der Person bei der der
-Vergleich das
geringste
e
k
² ergibt [1].
Im praktischen Teil dieser Arbeit wird die Eigenface-Methode zur Gesichtserkennung
verwendet.
3.2
Fisherfaces
Ähnlich wie Eigenfaces transformiert auch Fisherfaces die hochdimensionalen Bildvektoren
in einen niederdimensionalen Unterraum mit dem Ziel, die wesentlichen Informationen zur
Gesichtserkennung darin kompakt abzubilden. Fisherfaces verwendet anstatt der PCA die
Fisher Linear Discriminant Analysis (im weiteren Verlauf FLD genannt), die sich bei
Erfüllung einiger Vorbedingungen identisch zur Diskriminanzanalyse, engl. ,,Linear
Discriminant Analysis", verhält.

Details

Seiten
Erscheinungsform
Erstausgabe
Jahr
2012
ISBN (PDF)
9783863419325
ISBN (Paperback)
9783863414320
Dateigröße
2.1 MB
Sprache
Deutsch
Institution / Hochschule
Fachhochschule Salzburg
Erscheinungsdatum
2012 (November)
Note
1
Schlagworte
Gesichtsentdeckung Eigenfaces Viola-Jones Codebeispiel OpenCV

Autor

Andreas Ranftl, BSc, wurde 1990 in Salzburg, Österreich geboren. Er schloss die Höhere Technische Lehranstalt in Salzburg in der Vertiefung Elektronik/Technische Informatik erfolgreich mit der Arbeit ‘Presentation Glove - Entwicklung eines multifunktionalen PC-Eingabegeräts’ ab. Anschließend absolvierte er berufsbegleitend das Bachelorstudium für Informationstechnik & Systemmanagement an der Fachhochschule Salzburg, wobei er sich auf Industrielle Informationstechnik spezialisierte. Dieses Fachbuch erschien ausgehend vom Interesse des Autors für künstliche Intelligenz und folgte auf eine Studienarbeit über Stereokamerasysteme.
Zurück

Titel: Digitale Gesichtserkennung: Theoretischer Überblick und praktische C++-Implementierung
book preview page numper 1
book preview page numper 2
book preview page numper 3
book preview page numper 4
book preview page numper 5
book preview page numper 6
book preview page numper 7
book preview page numper 8
book preview page numper 9
book preview page numper 10
book preview page numper 11
book preview page numper 12
59 Seiten
Cookie-Einstellungen