Anhang A – Erfassung von Bildsequenzen mit SunVideo

Dieser Anhang erklärt die Verwendung der Videoeinrichtung (1) am Institut für Informatik und angewandte Mathematik der Universität Bern. Nachfolgender Leitfaden richtet sich an Leser welche diese Videoeinrichtung zum ersten Mal benutzen wollen.

Das Produkt SunVideo (2) besteht aus einer speziellen SunVideo Card und Software zur Steuerung dieser Erweiterungskarte. Die SunVideo Card bietet normale Video Eingänge (Composite Video) und einen S-VHS Video Eingang. Die vorhandene Videokamera wird an einem einfachen Composite-Videoeingang angeschlossen. Die SunVideo Card unterstützt sowohl die Digitalisierung von Standbildern als auch von Bildsequenzen. Die Bildformate CellB, JPEG, MPEG-1 (konstante und variable Bitrate) und UYVY werden unterstützt.

Zum Aufnehmen von Videosequenzen ist das Demo-Programm (3) von SunVideo vorgesehen (vgl. Bild 87). Im Fenster Capture Parameters muss dann die entsprechende Eingabequelle (Input Port 1 oder Input Port 2) gewählt werden und Mode MPEG-1 eingestellt werden. Im Fenster MPEG-1 Parameters sollte der Schalter Bit Rate auf Variable eingestellt werden und die Quality auf High gestellt werden um möglichst gute Bilder zu erhalten. So ist die Dateigrösse zwar maximal, doch es geht durch Kompression möglichst wenig Qualität verloren.

Bild 87: Arbeitsoberfläche von SunVideo: Die Bilder der Videokamera (SunVideo Monitor) sollen als MPEG-1 Video (hohe Qualität) gespeichert werden.

Zur Kontrolle des Bildausschnittes sollte durch Drücken des Knopfs Monitor das Videofenster eingeblendet werden. Die Bilder von der Videokamera werden direkt am Bildschirm dargestellt. Um eine Videosequenz aufnehmen zu können muss der Dateiname neben dem Knopf Record File eingegeben werden. Um die bestmögliche Datenrate zu erreichen ist es empfehlenswert die Videodatei (einige 10 MB gross!) auf der lokalen Festplatte (4) abzuspeichern.

Nun kann die Aufnahme beginnen. Die Speicherung der Videodaten belastet die SUN Workstation sehr stark. Es empfiehlt sich also zuvor alle Benutzer von iznogoud zu bitten Ihre Jobs und Programme zu stoppen. Zudem sind Abstürze von SunVideo keine Seltenheit. Diese äussern sich darin, dass die ganze Maschine still steht, der Mauszeiger blockiert ist und sogar die Kombination "STOP – A" nichts mehr bewirkt. Die SUN muss neu aufgestartet werden. Während der Aufnahme sollte das Voschaufenster des Videos ausgeschaltet werden. Mit aktiviertem Vorschaufenster erreicht man bei MPEG-1 ca. 7 fps (5) und ohne Vorschaufenster können bis zu 18 fps erreicht werden. Die weitere Steuerung entspricht der eines Videorecorders.

Die aufgenommene Videodatei im MPEG-1 Format kann auf verschiedene Arten betrachtet werden. Einerseits bietet SunVideo die Möglichkeit Dateien anzuzeigen oder man kann sich eines üblichen MPEG-Viewers (z.B. mpeg_play) unter X11 bedienen.

Um die MPEG-1 Dateien zu benutzen ist es ratsam diese in einzelne Bilddateien aufzutrennen. Hierzu kann das Programm mpeg2decode (6) verwendet werden. Die Sequenz der PPM-Bilder belegt ca. siebenmal soviel Speicherplatz wie die MPEG-Datei. Um Speicherplatz und Verarbeitungszeit zu gewinnen können die TrueColor-Bilder mit dem Programm ppmtopgm (7) in Graustufenbilder konvertiert werden. Hierdurch belegen die Einzelbilder nur noch ca. 2.5 mal soviel Speicherplatz wie die MPEG-Datei.

Nachfolgend werden drei beispielhafte Programmaufrufe aufgelistet welche zur Konvertierung dienen können:

mpeg2decode -o3 test5.Mpeg1 test%04d

erzeugt aus der MPEG-1 Datei test5.Mpeg1 eine numerierte Sequenz von Einzelbildern mit den Namen test0000.ppm, test0001.ppm, test0002.ppm, etc.

ppmtopgm test0035.ppm > test0035.pgm

konvertiert das TrueColor-PPM-Bild test0035.ppm in ein Graustufen-PPM-Bild mit dem Namen test0035.pgm.

Mit Hilfe des PERL-Programmes mpeg2ppm.pl von Bild 88 kann eine MPEG-1 Datei mit einem Programmaufruf in eine Sequenz von PPM-Graufstufenbildern in einem Unterverzeichnis konvertiert werden. Das PERL-Programm ruft hierzu die Programme mpeg2decode und ppmtopgm auf. Der Programmaufruf

mpeg2ppm.pl mpeg/bc1.Mpeg1

konvertiert die MPEG-1 Datei bc1.Mpeg1 in eine Sequenz von Einzelbildern. Diese Einzelbilder erhalten die Namen test0000.ppm, test0001.ppm, test0002.ppm, etc. und werden im Unterverzeichnis bc1 abgelegt.

 

#!/usr/local/bin/perl


$mpegtools = "/home/siebenth/diplom/mpeg2codec";
$tempdir = "/tmp";

# check arguments
if ($# != 0) { exit; };
if (stat $ARGV[0] == ()) { exit; };

# extract $filename from full path and extension
@fileparts = split(/\//, $ARGV[0]);
($filename, $extension) = split(/\./, $fileparts[$#fileparts]);


# generate directory $filename
system "mkdir $filename";

# decode MPEG stream to directory
system "$mpegtools/mpeg2decode -o3 $ARGV[0] $filename/test%04d";

# convert Truecolor ppm to Greyscale ppm images
open (PPM, "cd $filename; ls test*.ppm|");
while ($oldfile = <PPM>) {

$oldfile =~ s/\n$//g;
$newfile = "$tempdir/$oldfile";
$newfile =~ s/\.ppm$/\.pgm/g;
$cmdline1 = "ppmtopgm $filename/$oldfile > $newfile";
$cmdline2 = "mv $newfile $filename/$oldfile";
system $cmdline1;
system $cmdline2;

};
close PPM;

Bild 88: PERL-Quellcode von mpeg2ppm.pl


Fussnoten:

1) Installiert am IAM im Raum 310 in der SUN Ultra Workstation mit dem Namen iznogoud.

2) Weitere Informationen zu SunVideo können dem User’s Manual [Sun94] entnommen werden.

3) Installiert auf iznogoud unter /opt/SUNWits/Graphics-sw/xil/examples/test/SunVideo.

4) Bei iznogoud ist die lokale Festplatte untern dem Verzeichnis /iznogoud-scrtach/ eingeklinkt. Die Bilddateien müssen bei Nichtgebrauch wieder gelöscht werden um den anderen Benutzer der FKI Speicherplatz für deren Videodaten freizuhalten.

5) fps heisst frames per second und bezeichnet die Anzahl Einzelbilder, welche pro Sekunde gespeichert werden.

6) mpeg2decode ist ein Programm der MPEG Software Simulation Group (MPEG-L@netcom.com, ftp://ftp.netcom.com/pub/cfogg/mpeg2), welches MPEG-1 und MPEG-2 Videodateien in verschieden Bildformaten wie TGA, X11 oder PPM konvertieren kann. Die erzeugte Sequenz von Einzelbildern wird dabei aufsteigend numeriert werden.

7) Das UNIX Kommandozeilen Programm ppmtopgm wandelt TrueColor PPM Bilder in Graustufen Bilder um. Hierbei werden die 3 Farbkomponenten folgendermassen zu einem Grauwert quantisiert: 0.299 * Rot + 0.587 * Grün + 0.114 * Blau.