Dies ist eine alte Version des Dokuments!
Protokoll und Verlauf
Bei unserer Ersten Sitzung am 09.12. haben wir uns zunächst erarbeitet, wie man eine Videodatei mithilfe von OpenCV einliest und wieder abspielt. Außerdem haben wir generelle Überlegungen getätigt, wie das Programm aussehen soll und was es für Funktionen haben soll.
Anschließend haben wir die Frames des Videos einzeln exportiert und abgespeichert, um sie später in ASCII umwandeln zu können.
Bei der zweiten Sitzung am 16.12. haben wir zuerst uns das Speichern der Frames in einem temporären Unterordner und das Löschen des Ordners am Ende des Programms erarbeitet. Außerdem haben wir eine Schleife für die Anzahl an Frames erstellt.
Danach haben wir die Grayscale Werte des Bildes ausgelesen und in Blöcken von 10×10 Pixeln in Arrays gespeichert, um diese anschließend in ASCII verwandeln zu können. Es ist nicht sinnvoll, das Gleiche mit einzelnen Pixeln zu machen, weil ASCII-chars aus mehreren Pixeln bestehen.
Bei unserer dritten Sitzung am 6.1. haben wir uns darum gekümmert, die jeweiligen Pixel in ASCII-Zeichen umzuwandeln. Hierfür betrachten wir lediglich die Helligkeit bzw. Intensität der jeweiligen Pixelgruppen.
Jeder Helligkeit wird ein bestimmtes Zeichen aus einer selbst definierten Liste zugewiesen. Unsere Liste besteht aktuell aus 12 manuell nach Helligkeit geordneten Zeichen, doch wenn sich das für das finale Video als zu wenig oder zu viel herausstellt, können wir das noch ändern.
Die Formatierung des Bildes muss in kommenden Sitzungen noch optimiert werden. Aktuell haben wir dafür nur feste Werte genommen, die jeweils nur für ein Video gut funktionieren, idealerweise sollte dies aber noch überarbeitet werden, sodass jedes Video ohne Stauchung im richtigen Seitenverhältnis abgespielt werden kann.
Bei der vierten Sitzung am 13.1. haben wir die Wiedergabe des ASCII-Videos optimiert. Dabei versuchten wir, dass das Video in der Konsole nicht mehr „flackert“. Eine Variante ist es, die konvertieren Frames nicht hintereinander ausgegeben, sondern die ASCII-Zeichen in der Konsole überschrieben werden. Dies funktioniert aber (noch) nicht so gut, weshalb wir die bisherige Ausgabe optimiert haben, indem die letzte Zeile überschrieben und die erste Zeile abgeschnitten wird.
Außerdem passt sich jetzt die Größe der Videowiedergabe an die Höhe und Breite des Terminals an. Beim Versuch die Geschwindigkeit des Videos zu optimieren, sind uns ein paar kleine Probleme aufgefallen, die wir noch lösen müssen. Auch bessere Ladezeiten und eine Benutzereingabe über das Terminal sind noch in Planung.
In der 5. Sitzung am 20.1. hat jede Gruppe den aktuellen Stand ihres Projektes kurz den anderen vorgestellt. Danach haben wir an unserem Projekt jedoch normal weitergearbeitet.
Unter anderem haben wir einen Ladebalken implementiert, welcher in Prozent anzeigt, wie lange es noch dauert, bis das Video in die einzelnen Frames unterteilt und abgespeichert ist.
Außerdem haben wir die Skalierung des Terminal-Fensters weiter optimiert, sodass es z.B. sich automatisch staucht, wenn das Terminal zu schmal gezogen wird.
Bei dem Versuch, die Geschwindigkeit der Ausgabe exakt dem Originalvideo anzupassen, sind immer noch erhebliche Probleme aufgefallen, die wir bis jetzt noch nicht lösen konnten.
In der 6. Sitzung am 27.1. haben wir die Möglichkeit implementiert, die Ausgabe farbig zu gestalten. Dafür kann der Benutzer selbst auswählen, welche Farben für den Vorder- und Hintergrund genommen werden sollen.
Ebenfalls haben wir verschiedene kleine Verbesserungen vorgenommen, zum Beispiel dass der Bilderordner auch bei Abbruch des Programms gelöscht wird (extra Datei für Abbrechen des Programms erstellt).
Das Problem der Geschwindigkeit der Ausgabe haben wir gelöst, indem wir die Berechnungszeit des Umwandelns messen und so variabel anpassen können, wie lange vor dem Anzeigen des nächsten Bildes pausiert werden soll.
Wir haben uns dafür entschieden, unser Projekt im Wissenschaftsfenster vorzustellen. Als Vorbereitung darauf haben wir diese Sitzung dafür genutzt, eine unterstützende PowerPoint-Präsentation zu erstellen und den Ablauf des Vortrags durchzusprechen.
Heute haben wir nochmal an der Präsentation für das Wissenschaftsfenster gearbeitet und den Vortrag auch geübt. Außerdem haben wir das Programm noch verbessert, indem wir mit der Threading-Bibliothek die Ladezeit zwischen dem Speichern der Bilder und Konvertieren sowie Ausgeben in ASCII erheblich verbessert haben. Das ist vor allem für längere Videos wichtig, da die Ladezeit je nach Länge mehr als 5 Minuten betrug (jetzt sind es nur noch 5-10 Sekunden).
Wissenschaftsfenster Ergebnis unserer Präsentation von ASCII-Animation: knapper 2. Platz bei „bester Weg zur Erkenntnis gezeigt“ und 2. Platz bei „coolstes Projekt“
In der letzten Sitzung im Semester haben wir noch ein paar Kleinigkeiten am Code geändert: Langsames Drucken, Invertierbarkeit der Zeichen (Möglichkeit zum Auswählen), readchar für Eingabe einzelner Buchstaben, Überspringen der Farbauswahl, Fehlerbehebungen (welche durch Threading entstanden → kill Thread usw. hinzugefügt) + mehr. Auch die ASCII-Zeichen für die Konsole und die Wiedergabegeschwindigkeit haben wir nochmal angepasst.
Das Programm ist jetzt soweit eigentlich fertig.
Abschließend haben wir noch geplant, was wir im Blocktermin machen wollen (Wiki fertigstellen).