Hallo zusammen,
ich möchte das zwar nicht in VHDL lösen, sondern offline auf dem PC,
aber hier scheinen mir die meisten Videoprozessierer mitzulesen.
Netiquette
Für einige anschauliche Videos meiner Diplomarbeit möchte ich
automatisiert einen Datenstrom aus Einzelbildern nachbearbeiten. Die
Einzelbilder (png) wurden mit Matlab erzeugt, allerdings ist das
Abspielen mit konstanter Framerate eine nervenaufreibende Angelegenheit
(270k Dateien!!).
Ich konnte keine Software finden, die es mir erlaubt, eine Videodatei zu
erzeugen und dabei die effektiven Frameraten in png-files/sec variabel
anzugeben. Also müsste ich das manuell machen, indem ich für die Bilder
ein Tool zum Preprocessing schreibe. Der Sinn: dann kann einfach
virtualDub mit konstanter Framerate das gewünschte Video erzeugen.
Beispiel:
Die gewünschte effektive Framerate ergibt sich, weil die Bildserie
bereits in gut 1600 Blöcke unterteilt ist.
1. Hat ein Block 1-5 Bilder, sollen 10 Bilddateien daraus werden.
2. Hat ein Block 6-200 Bilder, sollen 25 Bilddateien daraus werden.
3. Hat ein Block 201-2000 Bilder, sollen 50 Bilddateien daraus werden.
4. Hat ein Block mehr als 2000 Bilder, sollen 100 Bilddateien daraus
werden.
Läuft das Video am Ende mit 50fps, dürfte das ganz ansehnlich werden.
Problem
ich muss also pro Block eine Bilderserie interpolieren, um aus einer
Zahl n von Bildern eine neue Zahl m von Bildern zu generieren. Dabei
kann in den Fällen 1&2 die Bilderzahl steigen. In den Fällen 2&3&4
hingegen sinkt die Zahl an Bildern.
Naiv ginge das durch Kopieren und Löschen von Einzelbildern. Aber gibt
es auch eine Möglichkeit, eine echte Interpolation hinzubekommen? Ich
könnte mir vorstellen, dass das Video dadurch optisch ansprechender wird
und weniger "Jitter" auftritt - auch wenn der Begriff hier etwas hinkt.
Mehr als 1-2 Tage Arbeit kann ich allerdings nicht mehr hineinstecken
(Deadline!). Hat Matlab vielleicht schon solche Funktionen eingebaut?
Alternativ programmiere ich in einer Sprache in VisualStudio.
So etwas häng sicherlich auch vom Inhalt der Bilder ab:
Im Prinzip sieht man das Standbild eines Labyrinths (bzw. einer beliebig
gearteten Umgebung mit variablen Überquerungskosten). In diesem
Labyrinth bewegt sich ein Roboter und erkundet neue Teile der Umgebung.
Jeder Block entspricht einem Schritt des Roboters (Anhang).
Die Bilder innerhalb des Blockes zeigen die Arbeitsschritte des
Suchalgorithmus des Roboters. Hierbei werden einzelne Zellen des
Laybrinths farbig ausgefüllt. Da jeder Block für sich nachbearbeitet
wird, muss also nur das Ausfüllen von einzelnen Zellen mit verschiedenen
Farben interpoliert werden.