Skip to content

HoloView

Andreas Kalt edited this page Oct 29, 2019 · 10 revisions

Was ist HoloView? HoloView ist ein kleines Programm, das uns bei der Auswertung der aufgenommenen Interferenzbildern helfen wird. Zudem ermöglicht HoloView den Einstieg in das Schreiben von Python Scripts zur Bildauswertung.

Hier ein Screenshot des Programms in Aktion:

HoloView capture

Nutzung

Installation

HoloView wird mithilfe eines Debian-Repositories vertrieben. So weiß der Raspberry Pi genau, wann es eine neue Version gibt. Standardmäßig ist das entsprechende Repository aber nicht eingetragen -- selbstverständlich. Deshalb muss dies zuerst getan werden.

Dazu muss lediglich eine Konsole geöffnet und folgende Befehle eingetippt werden (keine Angst vor dem komischen, schwarzen Fenster!):

curl https://debian.ch-st.de/E622EA3.pub | sudo apt-key add -
sudo nano /etc/apt/sources.list
sudo apt update
sudo apt install python3-holoview

Start

Momentan gibt es noch keine Desktopverknüpfung für HoloView, deshalb muss es ebenfalls aus der Konsole heraus gestartet werden. Dazu einfach holoview als Befehl eingeben.

Beispiel 1: Einfache Bildanzeige

Um das Prinzip von HoloView zu verdeutlichen, hier ein Beispiel.

  1. Zuerst muss im Capture-Tab ein Bild aufgenommen werden. Mit einem Klick auf Capture öffnet sich der sogenannte Viewfinder, der das aktuelle Kamerabild anzeigt. Passt der Winkel etc. kann man C das Bild aufnehmen, andernfalls kommt man mit Q wieder zurück zu den Bildeinstellungen.
  2. Hast du das perfekte Bild aufgenommen, kann es mit der Auswertung losgehen.
  3. Wechsle dazu in den Processing-Tab, wo dich ein blaues Editorfenster erwartet.
  4. Hier kannst du nun ein Python-Skript schreiben und siehst auf der rechten Seite die Ausgaben, die dein Skript produziert.

Dieses einfache Beispiel zeigt einfach nur das aufgenommene Bild an und schreibt Hello World in die Variablentabelle:

output_figs["Bild"] = plt.figure()
plt.imshow(image)
output_vars["txt"] = "Hello World"

Beispiel 2: Bildanalyse

HoloView kann auch für etwas komplexere Aufgaben eingesetzt werden. Für dieses Beispiel verwenden wir das erste Interferenzbild, das wir aufgenommen haben:

Erste Interferenz

Mithilfe eines entsprechenden Skripts können wir auswerten, in welcher Form der Rotanteil von links nach rechts zunimmt.

output_figs["x-average"] = plt.figure()
xaverages = []
for x in np.rollaxis(image, 1):
    xaverages.append(np.average(image[x][:]))
plt.plot(xaverages)

Hierfür wird zuerst mithilfe von matplotlib eine neue Figur angelegt. Zusätlich initialisieren wir noch ein leeres Array, das den Durchschnitt der Werte auf der y-Achse für jeden Punkt auf der x-Achse enthält.

Dann iteriert das Skript über die x-Achse. Da die erste Dimension des Bildes die y-Achse ist, bringen wir zuerst die x-Achse an die erste Stelle (mit np.rollaxis ), um später leichter den Durchschnitt an dieser Position errechnen zu können. Innerhalb der Schleife wird dieser Wert von numpy errechnet und an das Array angehängt (xaverages.append).

Wenn das Array mit den Werten gefüllt ist, wird es einfach an matplotlib übergeben. In dem ausgegebenen Graphen lässt sich sowohl der Anstieg der Rotanteile in der rechten Bildhälfte erkennen, als auch die einzelnen Streifen des Originalbildes.

HoloView Capture

Entwicklung

HoloView wird ebenfalls in der Python-Skriptsprache entwickelt. Das graphische Frontend wird mithilfe von Gtk angezeigt. Die Pythonbindings von Gtk heißen gi und werden mit dem Debian-Paket python3-gi installiert.

Empfohlene Entwicklungsumgebung

Natürlich kann HoloView auch direkt auf dem Raspberry Pi weiterentwickelt werden. Des Komforts wegen empfiehlt es sich jedoch, seinen Desktoprechner dafür zu nutzen -- natürlich mit GNU/Linux ;-).

Gerade für Einsteiger ist die Distribution ubuntu.com empfehlenswert.

Tipp 1: Raspberry-Dateisystem mounten

Mit dem Programm sshfs kann das Dateisystem des Raspberry Pi direkt im Home-Verzeichnis eingehängt werden:

mkdir MountPi
sshfs [email protected] MountPi
Tipp 2: GNOME Builder

Gnome builder

Git
  • Um die gemeinsame Arbeit an der Software möglich einfach zu gestalten, kommt das Versionsverwaltungprogramm Git zum Einsatz (Hier ein gutes E-Book zu git).
  • Es wird dieses Github-Repo genutzt, in welchem sich zudem ein Issue-Tracker, Projektpläne und ein eigenes Wiki befinden.