Objekterkennung mit CmuCam v5 (Pixy-Cam) mit Matlab/Simulink und EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Gesina Kira Tigger
Betreuer: Prof. Schneider

Abbildung 1: Der LEGO-Roboter mit der Pixy-Cam

Aufgabe

Die Aufgabe des Projekts "Objekterkennung mit CmuCam v5 (Pixy-Cam) mit Matlab/Simulink und EV3" ist einen Roboter (LEGO Mindstorms EV3) mit Hilfe eines Farbsensors (Pixy-Cam) kurz vor einem in dem Weg stehenden Gegenstandes anhalten zu lassen. In Abbildung 1 ist der LEGO-Roboter mit der angebrachten Pixy-Cam zu sehen. Es wird in sehr vereinfachter Form versucht ein Fahrerassistenzsystem, dass eine Notfallbremsung durchführt, nachzubilden. Bearbeitet wurde das Projekt von Gesina Kira Tigger in dem Modul "Signalverarbeitende Systeme" des Masterstudiengangs "Business and Systems Engineering" unter Prof. Schneider als Betreuer.

Zunächst wird die Pixy-Cam und der verbaute Sensor mit seinen Funktionen und Übergabeparameter beschrieben. Des Weiteren folgen Ausführungen zur Signalentstehung und -vorverarbeitung, zum Analog-Digital-Umsetzer und Bussystem sowie zum Prozessor. Abschließend wird die digitale Signalverarbeitung und die Darstellung der Ergebnisse thematisiert.


Pixy-Cam

Pixy ist eine schneller Farbkamera für Robotertechnik und ähnliche Anwendungen (siehe Abbildung 2b und 2c). Die Kamera kann mit Hilfe eines Tasters angelernt werden, sodass Pixy in der Lage ist Objekte zu erkennen und ihnen zu folgen. Sie kann mehreren hundert Objekten gleichzeitig folgen und stellt nur Daten zur Verfügung, die von Interesse sind. Pixy LEGO benutzt spezifische Firmware, die die Sprache des LEGO Sensor Protokolls verwendet. Zusätzlich beinhaltet der Lieferumfang ein spezielles Kabel, um den LEGO Mindstorms Brick mit der Pixy zu verbinden (siehe Abbildung 2a). Des Weiteren werden Software Blöcke für die LEGO Mindstorms Programmierumgebung zur Verfügung gestellt, sodass Pixy ein Teil dieser Umgebung wird. [1]

Technische Spezifikationen der Pixy-Cam: [2]

  • Prozessor: NXP LPC4330, 204 MHz, Dual Core
  • Bildsensor: Omnivision OV9715, 1/4", 1280x800
  • Objektiv-Sichtfeld: 75 Grad horizontal, 47 Grad vertical
  • Objektivtyp: Standard M12
  • Energieverbrauch: 140 mA
  • Leistungsaufnahme: USB Eingang (5V) oder Ungeregelte Eingabe (6V bis 10V)
  • RAM: 264 KB
  • Flash: 1 MB
  • Verfügbare Datenausgänge: UART, SPI, I2C, USB, digital, analog
  • Dimensionen: 2.1" x 2.0" x 1.4
  • Gewicht: 27 g

Im Folgenden wird der Sensor, der in der Pixy-Cam verbaut ist, tiefergehend betrachtet.


Der Primärsensor

Abbildung 3: Sensor von OmniVision [3]
Abbildung 4: Der in der Pixy-Cam verbaute Farbsensor [4]

In der Pixy ist der Video-Bild-Sensor Omnivision OV9715 (1/4") verbaut (siehe Abbildung 3). Dieser Sensor hat die folgenden relevanten Spezifikationen: [5]

  • Arraygröße: 1280x800
  • Energieversorgung:
    • Hauptversorgung: 1.5 VDC +- 5% (eingebauter Regler)
    • Analog: 3.0 - 3.6 V
    • I/O: 1.7 - 3.6 V
  • Leistung:
    • Aktiv: 110 mW
    • Stand-by: 50 microA
  • Ausgabeformat: 10-bit RGB-Rohdaten
  • Linsengröße: 1/4"
  • Objektiv Kopfstrahlwinkel: 0°
  • Eingangstaktfrequenz: 6-27 MHz
  • Abtastmodus: Progressiv
  • Maximale Bildübertragungsrate:
    • WXGA (1280x800): 30 fps
    • 640x400: 60 fps
  • Bildbereich: 5415 um x 2430 um
  • CFA: RGB Bayer


Der 1/4-Zoll-Sensor bietet Full-Frame-, Sub-Sampling- oder Fenster-10-Bit-Bilder im Roh-RGB-Format über den digitalen Video-Port. Bildqualität, Formatierung und Ausgabedatenübertragung können je nach Anwendung verändert werden. Außerdem verfügt er über erweiterte Bildverarbeitungsfunktionen, einschließlich Belichtungssteuerung, Verstärkungsregelung, Weißabgleich, Objektivkorrektur und defekte Pixelkorrektur, die über die serielle Kamera-Steuerbus-Schnittstelle (SCCB) programmierbar sind. Für die Speicherung verfügt es über einen einmal programmierbaren (OTP) Speicher. [6]


Funktionsweise des Sensors

Abbildung 5: Bayer-Filter [7]

In Abbildung 4 ist ein schematischer Aufbau des Innenlebens des verbauten CMOS Sensors OV9715 dargestellt. Man kann drei Hauptteile ausmachen: Den Kern und den Prozessor des Bildsensors und die Bildausgangsschnittstelle. Der Kern des Bildsensors gliedert sich wiederum in mehrere Funktionsblöcke. [8]

Am Anfang der Kette steht zunächst der Bildbereich (image array) mit einer Größe von 5415 microm x 2430 microm. Hier sind die Photodioden mit den dazugehörigen Transistoren angeordnet, um einen Photonenstrom in eine messbare Spannung umzuwandeln. [9] Das geschieht mit Hilfe von Transimpedanzverstärkern (vgl. AMP in Abbildung 4). [10]

Da so jedoch keine Farbinformationen, sondern lediglich Informationen über Helligkeitswerte generiert werden können, werden die Photodioden mit winzigen Farbfiltern in Rot, Grün oder Blau überzogen. Dabei werden in den ungeraden Zeilen in der Folge Grün-Rot und in den geraden Zeilen in der Folge Blau-Grün Filter verwendet, sodass der Filter zu 50 % aus Grün und je 25 % aus Rot und Blau besteht. Jedes einzelne Pixel liefert also nur die Informationen über die Intensität einer einzigen Farbkomponente (siehe Abbildung 5). Dieser Filter wird auch Bayer-Filter genannt. [11]

Durch die Anordnung der Dioden können Zeilen und Spalten definiert werden, wodurch sich einzelne Pixel ergeben. Die Informationen werden mit Hilfe eines Busnetzes zum Analog-Digital-Umsetzer weitergeleitet. Diese Architektur ermöglicht es im Gegensatz zum CCD-Sensor jede Diode direkt zu adressieren und einzeln auszulesen. [12]


Analog-Digital-Umsetzer

Leider ist die Art des Analog-Digital-Umsetzers, der in dem Bildsensor von OmniVision verbaut wurde, nicht bekannt.

Man kann zwischen verschiedenen Architekturen unterscheiden: Es kann ein einzelner A/D-Wandler für alle Pixel des Sensors, je ein A/D-Wandler für jeden Kanal (Aufteilung des Sensors in mehrere Kanäle), für jede Zeile oder Spalte oder je ein A/D-Wandler für jedes Pixel verbaut werden. [13]

Allgemein diskretisiert ein D/A-Umsetzer ein zeit-kontinuierliches Eingangssignal in einzelne diskrete Abtastwerte, die dann in Digitalwerte umgesetzt werden. Da es die Anzahl von möglichen Ausgangswerten endlich ist, erfolgt dabei eine Quantisierung. Hauptparameter eines A/D-Wandlers sind seine Bittiefe und maximale Abtastrate. Es gibt eine Großzahl an Verfahren, die die Umsetzung realisieren können. Unter anderem gibt es den integrierenden Umsetzer (Zählverfahren), den rückgekoppelten Umsetzer (serielles Verfahren), Parallel-Umsetzer und den Hybrid-Umsetzer. [14] In der Vorlesung wurden direktvergleichende Umsetzer, Delta-Sigma-Modulatoren, Time-Division-Multiplizierer und Umsetzer mit Zeit oder Frequenz als Zwischengröße ausführlich behandelt. [15]


Prozessor des Bildsensors

Der Sensor hat einen digitalen Signalprozessor (DSP) verbaut. Dieser dient der kontinuierlichen Bearbeitung von digitalen Signalen, wie hier Videosignale, durch die digitale Signalverarbeitung. Es werden nicht nur Filter eingesetzt, wie es bei der analogen Signalverarbeitung der Fall ist, sondern darüber hinaus komplexe Aufgaben gelöst. [16]

In dem Prozessor findet die Bayer-Transformation statt. Dies ist ein hoch komplexer Prozess in dem mit Hilfe von Algorithmen die verschiedenen RGB-Werte zu einem Farbton zusammengesetzt werden. [17] [18] Hierfür werden auch benachbarte Zellen betrachtet, damit ein stimmiges Bild entsteht. Diese Rekonstruktion einer farbigen Rastergrafik wird auch als Demosaicing bezeichnet.Dabei werden die benachbarten Grundfarbenwerte interpoliert. [19] Korrektur der Bildschärfe und Rauschunterdrückung finden ebenfalls in dem Prozessor statt.


Bussystem des Sensors

Das Bussystem in dem OV9715 ist ein Serial Camera Control Bus (SCCB). Es ist ein seriell arbeitendes 3-adriges Bussystem, das man mit dem I2C-Bus vergleichen kann. Über den von OmniVision entwickelten SCCB kann der Sensor mit den bildbearbeitenden Funktionen (z.B. Weißabgleich, Belichtung, Objektivkorrektur) gesteuert werden. Es liegt eine Master-Slave-Konfiguration vor, wobei der CMOS-Sensor als Slave agiert. [20]


Bildausgangsschnittstelle

Der Sensor besitzt eine Digital Video Port (DVP) Schnittstelle. Dies ist eine parallele Schnittstelle, die hohe Auflösungen und Bildraten unterstützt. [21]


Digitale Signalverarbeitung im Prozessor

In der Pixy-Cam ist ein NXP LPC4330 Dual-Core-Prozessor mit 204 MHz verbaut. In diesem Prozessor findet die Objekterkennung der Pixy-Cam statt.

Es wird ein farbbasierter Filteralgorithmus verwendet, um die Objekte zu erkennen. Diese Methode ist schnell, effizient und relativ robust. Pixy kalkuliert die Farbe (hue) und die Sättigung von jedem RGB-Pixel des Bildsensors und nutzt diese als erste Filterparameter. Die Farbdaten des zu erkennenden Objektes werden in Farbcodes bzw. sogenannten Color Codes (CC) gespeichert und mit Hilfe des Algorithmus in den Bilddaten des Sensors gesucht.

Außerdem kann Pixy dank eines Graph-Algorithmus hunderte Objekte gleichzeitig erkennen. [22]


Fehler in der Objekterkennung

Pixys Farbfilteralgorithmus kann ein ganzes Frame in 20 ms (50 mal pro Sekunde) verarbeiten. Jedoch kann die Farbunterscheidung ein Problem darstellen. Entweder können falsche Objekte mit einem ähnlichen Farbton erkannt werden oder die richtigen Objekte werden nicht erkannt. Gründe für die Fehler können Veränderungen in der Belichtung sein. [23]


Bussystem

Abbildung 6: Pin-Belegung [24]

Pixy LEGO verwendet ein standardmäßiges I2C-Bussystem. Dieses ist ein Beispiel für ein Master-Slave-Bus, dabei wird der Datentransfer durch den Master initiiert und durch den Slave ausgeführt wird. I2C benötigt eine Takt- und eine Datenleitung zur Kommunikation. [25]

Pixy agiert als I2C-Slave. Alle Transaktionen erfolgen über die I2C Adresse 1. Unterstützt wird dies durch einen I/O-Anschluss. Wie Abbildung 6 zeigt, ist der Pin 5 für das Taktsignal und Pin 9 für das Datensignal zuständig. Alternativ kann Pixy LEGO auch über eine UART-Schnittstelle kommunizieren. [26]


I2C-Adressen der Pixy-Cam

Wenn Pixy über I2C adressiert ist, wird das erste Byte Query Address genannt. Für bestimmte Arten von Abfragen werden sogenannte Optional Query Data an Pixy gesendet, um die Anfrage weiter zu beschreiben. Schließlich antwortet Pixy mit der Pixy Response. Diese besteht typischerweise aus einer bestimmten Anzahl von Bytes und hängt von der Query Address ab. Alle 16-Bit-Werte, die über I2C gesendet oder empfangen werden, werden als kleiner Endian codiert, d.h. das niedrigstwertige Byte wird zuerst gesendet. [27]

Die General Query ist die Abfrage, die in der Pixy LEGO Dokumentation als "Allgemeiner Modus" bekannt ist: [28]

General Query
Adresse Optionale Daten Pixys Antwort
0x50 - 6 Bytes, die den größten Block mit allen Signaturen beschreiben und den Farbblock beinhalten. Wenn keine Objekte gefunden wurden, sind alle Bytes 0.
Beschreibung der Bytes der General Query
Byte Beschreibung
0, 1 16-bit-Wert, der die Signaturen des größten Blocks beschreiben. Ein Wert von 1 bis 7 entspricht einer Signatur von 1 bis 7. Ein Wert, der größer als 7 ist, ist ein Farbcode codiert in Oktal (8 als Basis).
2 X-Wert von dem Zentrum des größten Blocks (von 0 bis 255). Ein X-Wert von 255 beschriebt die rechte Kante von Pixys Bild.
3 Y-Wert von dem Zentrum des größten Blocks (von 0 bis 199). Ein X-Wert von 199 beschriebt die untere Kante von Pixys Bild.
4 Breite des größten Blocks (von 1 bis 255). Ein Wert von 255 beschreibt die gesamte Breite von Pixys Bild.
5 Höhe des größten Blocks (von 1 bis 200). Ein Wert von 200 beschreibt die gesamte Höhe von Pixys Bild.

Die Signature Query fordert Pixy auf den größten erkannten Block der angegebenen Signatur (Query Address 0x50) auszugeben: [29]

Signature Query
Adresse Optionale Daten Pixys Antwort
0x51 bis 0x57 - 5 Bytes, die den größten Block mit allen Signaturen von 1 bis 7 beschreiben. Wenn keine Objekte gefunden wurden, sind alle Bytes 0.
Beschreibung der Bytes der Signature Query
Byte Beschreibung
0 Nummer von Blöcken, die der angegebene Signatur entsprechen.
1 X-Wert von dem Zentrum des größten Blocks (von 0 bis 255). Ein X-Wert von 255 beschriebt die rechte Kante von Pixys Bild.
2 Y-Wert von dem Zentrum des größten Blocks (von 0 bis 199). Ein X-Wert von 199 beschriebt die untere Kante von Pixys Bild.
3 Breite des größten Blocks (von 1 bis 255). Ein Wert von 255 beschreibt die gesamte Breite von Pixys Bild.
4 Höhe des größten Blocks (von 1 bis 200). Eine Ein Wert von 200 beschreibt die gesamte Höhe von Pixys Bild.

Die Color Code Query fordert Pixy auf, den größten Block, der dem vorgegebenen Farbcode entspricht, auszugeben: [30]

Color Code Query
Adresse Optionale Daten Pixys Antwort
0x58 16-bit Wert (2 Bytes), der den Farbcode definiert (in Octal codiert). 6 Bytes, die den größten Block, der dem Farbcode entspricht, beschreiben. Wenn keine Objekte dem Farbcode entsprechen, sind alle Bytes 0.
Beschreibung der Bytes der Color Code Query
Byte Beschreibung
0 Nummer von Blöcken, die dem vorgegebenen Farbcode entsprechen.
1 X-Wert von dem Zentrum des größten Blocks (von 0 bis 255). Ein X-Wert von 255 beschriebt die rechte Kante von Pixys Bild.
2 Y-Wert von dem Zentrum des größten Blocks (von 0 bis 199). Ein X-Wert von 199 beschriebt die untere Kante von Pixys Bild.
3 Breite des größten Blocks (von 1 bis 255). Ein Wert von 255 beschreibt die gesamte Breite von Pixys Bild.
4 Höhe des größten Blocks (von 1 bis 200). Ein Wert von 200 beschreibt die gesamte Höhe von Pixys Bild.
5 Winkel des größten Farbblocks (von 0 bis 255). Ein Wert von 255 entspricht einem Winkel von 360 Grad.

Eine separate Angle Query ist vorgesehen, wenn eine General Query zu einem farbcodierten Block führt. In diesem Fall können hier die fehlenden Winkelinformationen abgefragt werden. Diese Abfrage funktioniert erst nach dem Erstellen einer General Query: [31]

Angle Query
Adresse Optionale Daten Pixys Antwort
0x60 - 1 Byte, das dem Winkel des größten Farbcodeblocks entspricht und das nach dem General Query zurückgegeben wird (von 0 bis 255). Ein Wert von 255 entspricht einem Winkel von 360 Grad.


Umsetzung

Es wird ein Datensatz benötigt, um den Abstand zu einem Gegenstand zu messen bzw. rechnerisch zu ermitteln. Die Entfernung ergibt sich aus der gemessenen Breite im Vergleich mit der wirklichen Breite des Gegenstands. Mit Hilfe einer Look-Up-Table oder des Strahlensatzes können so die verschiedenen Entfernungen abhängig von dem gewählten Gegenstand bestimmt werden und in Matlab/Simulink hinterlegt werden.


Problematik

Die Problematik dieses Projektes liegt darin die Daten der Pixy-Cam an den LEGO Brick oder an Matlab/Simulink zu übertragen. Hierzu wurden mehrere Lösungsansätze verfolgt. Leider war keiner der Ansätze erfolgreich, sodass die Anforderungen an das Projekt von Prof. Schneider angepasst wurden. Die Nachbildung eines Fahrerassistenzsystem, dass eine Notfallbremsung durchführt, wird sodann nicht mehr mit Matlab/Simulink umgesetzt, sondern mit Hilfe der LEGO Mindstorms Programmierumgebung.


Modellbildung

Abbildung 7: Strahlensatz [32]

Um zu bestimmen, wie Breit der Gegenstand, hier ein roter Punkt auf einer weißen Wand, bei einem Abstand zur Wand von 5 cm ist, wird die Linsengleichung herangezogen. Die physikalischen Grundlagen sind in Abbildung 7 dargestellt.

Demnach beschreibt die Linsengleichung den Zusammenhang zwischen der Brennweite f einer Linse, der Gegenstandsweite g und der Bildweite b mit [33]

Die Brennweite f des Sensors beträgt 2,8 mm und die Gegenstandsweite g beträgt 50 mm. Mit Hilfe der Linsengleichung kann zunächst die Bildweite g ermittelt werden. [34]



Nun kann mit Hilfe des Strahlensatzes die Bildgröße B ermittelt werden: [23]


Die Werte, die die Pixy-Cam als Breite ausgibt, liegen zwischen 0 und 256. Auf den Bildbereich von 5415 um x 2430 um bezogen ergibt das einen Umrechnungsfaktor von 21,15 um für die Breite der Bildgröße. Dementsprechend ergibt das bei einer Bildgröße von 4,75 mm einen Wert von 224,58. Ab einer Bildgröße von 224,58 muss der Roboter anhalten.

Da jedoch die Messung der Pixy-Cam besonders bei schlechten Lichtverhältnissen stark variieren kann, wird ein Wert von 200 verwendet, um eine Kollision auf jeden Fall zu vermeiden.


Programmierung in der LEGO Mindstorms Software

Abbildung 8: LEGO Mindstorms Programm

Die durch das Modell generierten Gegebenheiten werden in dem nächsten Schritt in der LEGO Mindstorms Software programmiert (siehe Abbildung 8). Zu Beginn steht der Pixy Baustein (siehe 1 in Abbildung 8), in dem die jeweiligen Ausgaben der Pixy-Cam definiert sind. Hier wird lediglich die Breite des Objekts benötigt. Diese wird zunächst in ein Display-Block geführt, um die Werte bei der Programmdurchführung abzubilden. Neben diesem Display-Block sind noch weitere Display-Blöcke angefügt, die lediglich Schriftzüge beinhalten (siehe 2 in Abbildung 8). Außerdem wird die Breite in einen Vergleichs-Block geführt, um die gemessene Bildbreite mit der zuvor bestimmten Bildbreite bei 5 cm Abstand zum Gegenstand zu vergleichen (siehe 3 in Abbildung 8). Wenn die gemessene Bildbreite kleiner oder kleiner gleich der festgelegten Bildbreite bei 5 cm Abstand zum Gegenstand ist, wird der logische Wert "true" weitergegeben - anderenfalls ist der logische Wert "false". Zum Schluss befindet sich ein Stell-Block, der bei dem logischen Wert "true" die Motoren des Roboters antreibt und bei dem logischen Wert "false" die Motoren des Roboters anhält (siehe 4 in Abbildung 8).

Die Programm-Datei ist unter dem folgenden Pfad im SVN hinterlegt: https://svn.hshl.de/svn/BSE_SigSys/trunk/User/Kohorte_04_SoSe17/Gesine_Tigger/


Darstellung der Ergebnisse

Die Erkennung des Objektes ist teilweise ungenau. Dies kann auf wechselnde Lichtverhältnisse zurückgeführt werden. Diese Fehler wurden in den kritischen Abstandswert mit eingerechnet, sodass die Notfallbremsung bei den Tests stets rechtzeitig durchgeführt werden konnte.

Als Ausblick kann in Betracht gezogen werden einen Filter zur Glättung der Messwerte einzusetzen, damit der Fehler sich minimiert.

In dem folgenden Video wird die programmierte Notfallbremsung durchgeführt: https://youtu.be/GX7vBnJBXd0


Einzelnachweise

  1. LeGrand, Rich (2015): Pixy for LEGO Mindstorms. Online verfügbar unter http://charmedlabs.com/default/pixy-for-lego-mindstorms/, zuletzt aktualisiert am 27.05.2017, zuletzt geprüft am 27.05.2017.
  2. Lang, Jean-Philippe: Introduction and Background - CMUcam5 Pixy - CMUcam: Open Source Programmable Embedded Color Vision Sensors. Online verfügbar unter http://cmucam.org/projects/cmucam5/wiki/Introduction_and_Background, zuletzt geprüft am 30.05.2017.
  3. OmniVision: OV9715. Online verfügbar unter http://www.ovt.com/sensors/OV9715 CMOS Sensor zuletzt geprüft am 30.06.2017.
  4. OmniVision: OV9715. Online verfügbar unter http://www.ovt.com/sensors/OV9715 CMOS Sensor zuletzt geprüft am 30.06.2017.
  5. OmniVision: OV9715. Online verfügbar unter http://www.ovt.com/sensors/OV9715 CMOS Sensor zuletzt geprüft am 30.06.2017.
  6. OmniVision: OV9715. Online verfügbar unter http://www.ovt.com/sensors/OV9715 CMOS Sensor zuletzt geprüft am 30.06.2017.
  7. Wikipedia: Bayer-Sensor. Online verfügbar unter https://en.wikipedia.org/wiki/Bayer_filter, zuletzt geprüft am 16.06.2017.
  8. Wikipedia: Active Pixel Sensor. Online verfügbar unter https://de.wikipedia.org/wiki/Active_Pixel_Sensor, zuletzt geprüft am 17.06.2017.
  9. Göhring, Daniel (2002): Digitalkameratechnologien. Online verfügbar unter http://www.drgoehring.de/uni/papers/CCD-CMOS_08122002.pdf, zuletzt geprüft am 17.06.2017.
  10. Wikipedia: Farbsensor. Online verfügbar unter https://de.wikipedia.org/wiki/Farbsensor, zuletzt geprüft am 16.06.2017.
  11. Wikipedia: Bayer-Sensor. Online verfügbar unter https://en.wikipedia.org/wiki/Bayer_filter, zuletzt geprüft am 16.06.2017.
  12. Göhring, Daniel (2002): Digitalkameratechnologien. Online verfügbar unter http://www.drgoehring.de/uni/papers/CCD-CMOS_08122002.pdf, zuletzt geprüft am 17.06.2017.
  13. Gnade, Michael (2004): Digitale CMOS-Photodetektormatrizen mit integrierten A/D-Wandlern. Online verfügbar unter https://duepublico.uni-duisburg-essen.de/servlets/DerivateServlet/Derivate-5537/20gnadediss.pdf, zuletzt geprüft am 30.06.2017.
  14. Wikipedia: Analog-Digital-Umsetzer. Online verfügbar unter https://de.wikipedia.org/wiki/Analog-Digital-Umsetzer, zuletzt geprüft am 30.06.2017.
  15. Schneider, Ulrich (2017): Signalverarbeitende Systeme, Analog-Digital-Umsetzer (ADU). Vorlesungsskript 6 (SVN).
  16. Wikipedia: Digitaler Signalprozessor. Online verfügbar unter https://de.wikipedia.org/wiki/Digitaler_Signalprozessor, zuletzt geprüft am 30.06.2017.
  17. Wikipedia: Image processor. Online verfügbar unter https://en.wikipedia.org/wiki/Image_processor, zuletzt geprüft am 30.06.2017.
  18. Wikipedia: Digitaler Signalprozessor. Online verfügbar unter https://de.wikipedia.org/wiki/Digitaler_Signalprozessor, zuletzt geprüft am 30.06.2017.
  19. Wikipedia: Demosaicing. Online verfügbar unter https://de.wikipedia.org/wiki/Demosaicing, zuletzt geprüft am 30.06.2017.
  20. ITWissen: SCCB (serial camera control bus). Online verfügbar unter http://www.itwissen.info/SCCB-serial-camera-control-bus.html, zuletzt geprüft am 30.06.2017.
  21. Jackson, Lee (2013): Hardware. Online verfügbar unter http://www.arducam.com/hardware/, zuletzt geprüft am 30.06.2017.
  22. Lang, Jean-Philippe: Introduction and Background - CMUcam5 Pixy - CMUcam: Open Source Programmable Embedded Color Vision Sensors. Online verfügbar unter http://cmucam.org/projects/cmucam5/wiki/Introduction_and_Background, zuletzt geprüft am 30.05.2017.
  23. CMUcam5 Pixy: Some Tips on Improving Detection Accuracy. Online verfügbar unter http://cmucam.org/projects/cmucam5/wiki/Some_Tips_on_Generating_Color_Signatures_2, zuletzt geprüft am 30.06.2017.
  24. Getz, Edward (2016): Pixy LEGO I2C Protocol. Online verfügbar unter http://cmucam.org/documents/36, zuletzt geprüft am 27.05.2017.
  25. Wikipedia: I2C. Online verfügbar unter https://de.wikipedia.org/wiki/I%C2%B2C#Bussystem, zuletzt geprüft am 30.06.2017.
  26. Getz, Edward (2016): Pixy LEGO I2C Protocol. Online verfügbar unter http://cmucam.org/documents/36, zuletzt geprüft am 27.05.2017.
  27. Getz, Edward (2016): Pixy LEGO I2C Protocol. Online verfügbar unter http://cmucam.org/documents/36, zuletzt geprüft am 27.05.2017.
  28. Getz, Edward (2016): Pixy LEGO I2C Protocol. Online verfügbar unter http://cmucam.org/documents/36, zuletzt geprüft am 27.05.2017.
  29. Getz, Edward (2016): Pixy LEGO I2C Protocol. Online verfügbar unter http://cmucam.org/documents/36, zuletzt geprüft am 27.05.2017.
  30. Getz, Edward (2016): Pixy LEGO I2C Protocol. Online verfügbar unter http://cmucam.org/documents/36, zuletzt geprüft am 27.05.2017.
  31. Getz, Edward (2016): Pixy LEGO I2C Protocol. Online verfügbar unter http://cmucam.org/documents/36, zuletzt geprüft am 27.05.2017.
  32. Von Anastasius Zwerg - Online verfügbar unter http://de.wikipedia.org/wiki/Bild:Bildweite.png, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1517257, zuletzt geprüft am 01.07.2017.
  33. LEIFI: Optische Linsen. Online verfügbar unter https://www.leifiphysik.de/optik/optische-linsen, zuletzt geprüft am 02.07.2017.
  34. LEIFI: Optische Linsen. Online verfügbar unter https://www.leifiphysik.de/optik/optische-linsen, zuletzt geprüft am 02.07.2017.


Weiterführende Links



→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017