Listing 1
Camarray HAT installieren
$ wget -O install_pivariety_pkgs.sh https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/releases/download/install_script/install_pivariety_pkgs.sh $ chmod +x install_pivariety_pkgs.sh $ sudo apt-update $ ./install_pivariety_pkgs.sh -p libcamera_dev $ ./install_pivariety_pkgs.sh -p libcamera_apps $ ./install_pivariety_pkgs.sh -p imx519_kernel_driver_low_speed [...] $ libcamera-still --list-cameras 0 : imx519 [4656x3496] (/base/soc/i2c0mux/i2c@1/imx519@1a) Modes: 'SRGGB10_CSI2P' : 1280x720 1920x1080 2328x1748 3840x2160 4656x3496
Libcamera
Mit Erscheinen des Betriebssystems Raspberry Pi OS “Bullseye” im November 2021 hat sich die Handhabung des Kameramoduls grundsätzlich geändert: Ganz neue Libcamera-Kommandos ersetzen seitdem die bewährten Kommandozeilenwerkzeuge Raspistill und Raspivid. Im Legacy-Modus können Sie Raspistill derzeit noch verwenden, ambitionierte Maker müssen sich mit libcamera vertraut machen.
Der Übergang der Kameraansteuerung auf den Libcamera-Treiber des Linux-Kernels sorgt für eine standardkonforme Lösung ohne proprietären Code. Zum einen stehen neue Kommandos wie libcamera-still oder libcamera-vid zur Verfügung, zum anderen können Sie auf Basis des Libcamera-Codes eigene Apps bauen. Eine umfangreiche Dokumentation dazu findet sich auf den Webseiten der Raspberry Pi Foundation [6].
Haben Sie bereits mit Raspistill oder Raspivid gearbeitet, dürfte es Ihnen nicht schwerfallen, schnell mit Libcamera zurechtzukommen. Der Beispielcode aus Listing 2 nimmt nach einer Vorschauzeit von 30 Sekunden (time out, -t) mit einer Aufnahmekompensation von -5 (exposure value, --ev) das gesamte Bild (region of interest, --roi) im Autofokus-Modus auf. Der Parameter --gain**8 entspricht einem ISO-Wert von 800. Mit dem Schalter --info-text manipulieren Sie die Titelzeile der Applikation, die Ausgabedatei bekommt den Namen testQuadro.jpg (output, -o).
Listing 2
Aufnahme
$ i2cset -y 10 0x24 0x24 0x00 $ libcamera-still \ -t 30000 --ev -5 --gain 8 \ --roi 0,0,1,1 --autofocus \ --info-text "Killepitch" \ -o testQuadro.jpg
Lentikularfotos schießen
Einen schnellen Schnappschuss bezeichnet man im Englischen als Point and Shoot. So ähnlich soll auch unsere DIY-Kamera arbeiten, wegen der vorhandenen Technik allerdings etwas bescheidener umgesetzt. In unserer Testumgebung arbeitet das System im lokalen WLAN hinter einem mobilen Router. Nach Einschalten der Kamera bootet das Betriebssystem und meldet sich im WLAN an. Der VNC-Server startet während des Bootens.
Dasselbe gilt für die grafische Nutzeroberfläche (Abbildung 5) mit einfachen Setup-Funktionen wie Bildbezeichnung, Verschlusszeit, Lichtwert, Vorschaubild und Auslösen der Aufnahme. Sie bietet noch weitere Funktionen, die allerdings zunächst ausgeblendet bleiben. Die in Python geschriebene Software nutzt Guizero mit objektorientierten Bedienelementen, hält die Settings in einem Dictionary und ruft die Kamerafunktionen über Systembefehle auf (siehe auch Kasten “Grafische Oberfläche”).

Abbildung 5: Über eine grafische Oberfläche stellen Sie die grundlegenden Werte für die Aufnahme ein.
Grafische Oberfläche
Im Download-Bereich zu diesem Artikel finden Sie die in Python geschriebene GUI lentiCam.py aus der Feder des Autors. Im Verzeichnis dcim/ liegen als Beispiel zudem einige von ihm angefertigte aktuelle Aufnahmen als Beispiel für die Komponenten eines Lentikularbilds.
Die Bilder für Position A und B sowie die einzelnen Bildkacheln landen in unserem Aufbau mit randomisierten Bildbezeichnungen im Verzeichnis dcim/randomCode/. In der GUI erscheint der generierte Random-Code, der sich bei Bedarf alphanumerisch ändern lässt. Sie entscheiden vorab, ob Sie zwei, vier oder acht Aufnahmen anfertigen möchten. Die Kameraeinstellungen lassen sich speichern, sodass Sie sie für Folgeaufnahmen erneut einsetzen können. Mithilfe der Vorschau richten Sie die Kamera aus, Statusmeldungen erfolgen in der Titelzeile.
Nun stellt sich noch die Frage nach einer geeigneten Aufnahmesituation. Die Kamera ist horizontal ausgerichtet, eine Faustregel setzt den Abstand für das Objekt auf das 30-fache des Abstands von der rechten zur linken Kamera an (Nahentfernung 1/30). Zwischenbilder unterteilen diesen Abstand gleichmäßig, wie in Abbildung 6 skizziert. Wir arbeiten mit vier Sensoren im Abstand von 12 Zentimetern mit zwei Zwischenbildern, was eine Nahentfernung von rund 3,6 Metern ergibt. Verschieben Sie das Objektiv-Board um 2 Zentimeter, landen Sie mit vier Aufnahmen bei 8 Zentimeter Abstand und nähern sich idealerweise auf 2,4 Meter an das Objekt an.

Abbildung 6: Zwischenbilder unterteilen die Basis oder den Abstand zwischen der rechten und der linken Kamera.
Dabei handelt es sich jedoch nur um grobe Näherungswerte, die keinesfalls verpflichtend sind und eher aus der Erfahrung stammen. Der Nahbereichswert kann statt 1/30 auch durchaus eher 1/20 betragen. Sobald Sie Ihre Kamera zwischen zwei Positionen verschieben, müssen Sie sich notgedrungen auf statische Objekte beschränken. Zudem empfiehlt sich generell eine manuelle Belichtung über die Verschlusszeit (shutter speed) und den Gain.
Im Anschluss an die Bildaufzeichnung zerlegen Sie den Frame in einzelne Kacheln, um sie weiterzuverarbeiten. Dabei helfen die Werkzeuge Ffmpeg und ImageMagick, die Sie gegebenenfalls mit sudo apt-get install imagemagick oder sudo apt-get install ffmpeg nachinstallieren. Die korrekte Reihenfolge der Bilder erreichen Sie durch ein numerisches Suffix in der Dateibezeichnung.
Aus vielen eines
Haben Sie die Feldarbeit erledigt, geht es am Rechner mit der Bildserie weiter. Laden Sie die Bilder über den FTP-Client herunter. Anschließend liefert Ihnen beispielsweise StereoPhoto Maker (SPM) alle notwendigen Funktionen zur Weiterbearbeitung. Auch Triaxes [7] eignet sich für Lentikularbilder. Schon mit zwei Aufnahmen erstellen Sie ein Anaglyphenbild für Rot-Cyan-Brillen oder ein einfaches Wackelbild. Gleichmäßigere Bewegung und Lentikularbilder setzen zwingend eine Bildserie voraus.





