Fachbereich Informatik

Fachbereich Informatik Diplomarbeit Bearbeiter/in: André Betz Studiengang: Informatik Studienschwerpunkt: Technik Erstprüfer: Dr. Rieckeheer ...
2 downloads 2 Views 2MB Size
Fachbereich Informatik

Diplomarbeit Bearbeiter/in:

André Betz

Studiengang:

Informatik

Studienschwerpunkt:

Technik

Erstprüfer:

Dr. Rieckeheer

Zweitprüfer:

Dr. Eck

Ausgabedatum:

19.11.2001

Abgabedatum:

19.4.2002

Durchgeführt bei der Firma:

Fraunhofer Institut für integrierte Schaltungen IIS

Betreuer/in innerhalb der Firma:

B. Fröba C. Küblbeck, intelligente Bildverarbeitung ILS 09131 776 507

(Name, Abteilung, vollständige Tel.-Nr.)

Thema der Arbeit: Erweiterung der Videocodierung H.263 zur segment- und modellbasierten Kompression bewegter Gesichtsbilder Zusammenfassung: In der vorliegenden Diplomarbeit bestand die Aufgabe darin, einen H.263-Videocodierer für Videotelefonie so zu erweitern, dass Bereiche, in denen sich Gesichter befinden, mit einer besseren Qualität komprimiert werden als der Hintergrund, um die Bandbreite der Videoübertragung weiter reduzieren zu können.

Zusammen mit der Diplomarbeit wurde ein Poster und ein „Extended Abstract“ dem Betreuer per E-Mail übergeben )

Einverständnis mit der Veröffentlichung der folgenden Informationen im Internet * Anzeige Ihres Names: Anzeige des Firmennamens: Link auf Firmen-Homepage: Ihre Mail-Adresse:

ja ja http://www.iis.fhg.de mailto: [email protected]

(Bitte keine FH-Adresse!)

Unterschrift Diplomand/in _______________________________________ *) Von Ihrer Diplomarbeit wird später der Titel im Internet angezeigt. Bei den weiteren Informationen können Sie bzw. die Firma, mit der diese Arbeit in Zusammenarbeit erstellt wurde, entscheiden, ob diese Informationen ebenfalls im Internet angezeigt werden sollen. Bitte sprechen Sie daher mit Ihrer Firma die Veröffentlichungsmodalitäten ab! Wenn Sie nicht wünschen, dass Ihr Name bzw. ein Firmenname angezeigt wird, so achten Sie bitte bei der Erstellung des Posters und des Abstracts darauf, diese Informationen dort nicht anzugeben!

Georg-Simon-Ohm-Fachhochschule Nürnberg Fraunhofer-Institut für integrierte Schaltungen Erlangen Professor Dr. Rainer Rieckeheer Professor Dr. Reinhard Eck

Diplomarbeit im Fach Informatik

Erweiterung der Videocodierung nach H.263 zur segment- und modellbasierten Kompression bewegter Gesichtsbilder

Vorgelegt von André Betz

Betreuer:

Dipl.-Ing. Bernhard Fröba Dipl.-Ing. Dr. Christian Küblbeck

Beginn:

19.11.2001

Ende:

19.04.2002

Erklärung

Ich versichere, dass ich die Arbeit ohne fremde Hilfe und ohne Benutzung anderer als der angegebenen Quellen angefertigt habe und dass die Arbeit in gleicher oder ähnlicher Form noch keiner anderen Prüfungsbehörde vorgelegen hat und von dieser als Teil einer Prüfungsleistung angenommen wurde. Alle Ausführungen, die wörtlich oder sinngemäß übernommen wurden, sind als solche gekennzeichnet.

Nürnberg, den 15.4.2002

André Betz Meisterleinsplatz 8 90489 Nürnberg [email protected]

Inhaltsverzeichnis 1

EINLEITUNG ...................................................................................................................................1

2

AUFGABENSTELLUNG UND STAND DER TECHNIK ............................................................3 2.1 2.2

3

MODELLBASIERTE GESICHTSDETEKTION ..........................................................................5 3.1 3.2 3.3

4

EXPERIMENTIERUMGEBUNG .....................................................................................................30 MESSUNG DER BILDQUALITÄT ..................................................................................................31 ERGEBNISSE .............................................................................................................................33

IMPLEMENTIERUNG EINES VIDEOKONFERENZSYSTEMS............................................43 7.1 7.2 7.3

8

PRINZIP DER SEGMENTABHÄNGIGEN VIDEOKOMPRESSION........................................................24 TIEFPASSFILTER ........................................................................................................................25 SEGMENTIERUNG ......................................................................................................................28

EXPERIMENTE UND ERGEBNISSE .........................................................................................30 6.1 6.2 6.3

7

PRINZIPIELLER AUFBAU VON H.263..........................................................................................13 EINGANGSBILDFORMAT ............................................................................................................15 BEWEGUNGSPRÄDIKTION (ME) ................................................................................................16 DISKRETE COSINUS-TRANSFORMATION (DCT) ........................................................................19 QUANTISIERUNG (QUANT) ........................................................................................................21 ENTROPIECODIERUNG (VLC) ...................................................................................................22 DECODIERUNG ..........................................................................................................................22 VERGLEICH VERSCHIEDENER STANDARDS ................................................................................23

SEGMENTSELEKTIVE VIDEOKOMPRESSION ....................................................................24 5.1 5.2 5.3

6

EXTRAKTION VON KANTENINFORMATION...................................................................................5 MODELLBILDUNG .......................................................................................................................8 DETEKTION ...............................................................................................................................11

DER H.263-STANDARD................................................................................................................13 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

5

STAND DER TECHNIK ..................................................................................................................3 AUFGABENSTELLUNG .................................................................................................................4

DIRECTX-SHOW-FILTER ...........................................................................................................44 VIDEO-CODEC ..........................................................................................................................45 TCP/IP-KOMMUNIKATION........................................................................................................47

ZUSAMMENFASSUNG UND AUSBLICK .................................................................................49

ANHANG...................................................................................................................................................51 A. FALTUNG............................................................................................................................................51 B. KONTRAST- UND HELLIGKEITSANPASSUNG ........................................................................................54 C. HUFFMANCODIERUNG ........................................................................................................................55 LITERATURVERZEICHNIS .................................................................................................................56

Abbildungsbeschreibung ABBILDUNG 2.1 : BLOCKSCHALTBILD DER OBJEKTBASIERTEN VIDEOKOMPRESSION .....................................4 ABBILDUNG 3.2 : ERGEBNISSE DER KANTENINFORMATIONSGEWINNUNG, .....................................................7 ABBILDUNG 3.3 : KANTENORIENTIERUNGSBILD V.........................................................................................8 ABBILDUNG 3.4 : MARKIERTE GESICHTER AUS DER TRAININGSMENGE .........................................................9 ABBILDUNG 3.5 : SCHABLONE DER GESICHTSTEILE.......................................................................................9 ABBILDUNG 3.6 : GESICHTSMODELL VM......................................................................................................10 ABBILDUNG 3.7 : MULTIRESOLUTIONSPYRAMIDE ........................................................................................12 ABBILDUNG 4.1 : BLOCKSCHALTBILD EINES HYBRIDEN DIFFERENZBILDCODIERERS....................................14 ABBILDUNG 4.2 : YUV-EINZELBILDER ........................................................................................................15 ABBILDUNG 4.3 : BEWEGUNGSSCHÄTZUNG .................................................................................................17 ABBILDUNG 4.4 : EINZELBILDER DER PRÄDIKTION;.....................................................................................18 ABBILDUNG 4.5 : ÜBERLAGERTE COSINUS-GRUNDFREQUENZEN .................................................................20 ABBILDUNG 4.6 : QUANTISIERUNGSKENNLINIE............................................................................................21 ABBILDUNG 5.1 : H.263-KOMPATIBLE ROI-CODIERUNG .............................................................................24 ABBILDUNG 5.2 : H.263-CODIERUNG MIT VORGESCHALTETER ROI-BASIERTER TIEFPASSFILTERUNG .........25 ABBILDUNG 5.3 : GAUßKURVE ....................................................................................................................26 ABBILDUNG 5.3 : ANWENDUNG DES BINOMIALFILTERS MIT N=7 ................................................................27 ABBILDUNG 5.4 : KOPIE DER UNGEFILTERTEN ROI IN DAS TIEFPASSGEFILTERTE BILD ................................28 ABBILDUNG 6.1 : TESTVIDEOS, LINKS AKIYO, RECHTS KARINA ..................................................................30 ABBILDUNG 6.4 : DATEIGRÖßE DES VIDEOS „KARINA“ ...............................................................................33 ABBILDUNG 6.2 : REKONSTRUIERTES VIDEO „KARINA“ ..............................................................................34 ABBILDUNG 6.3 : REKONSTRUIERTES VIDEO „AKIYO“ ................................................................................35 ABBILDUNG 6.5 : DATEIGRÖßE DES VIDEOS „AKIYO“..................................................................................36 ABBILDUNG 6.6A : OBJEKTIVE QUALITÄTSUNTERSCHIEDE DES VIDEOS „KARINA“ .....................................37 ABBILDUNG 6.6B : OBJEKTIVE QUALITÄTSUNTERSCHIEDE DES VIDEOS „KARINA“ .....................................38 ABBILDUNG 6.7A : OBJEKTIVE QUALITÄTSUNTERSCHIEDE DES VIDEOS „AKIYO“ .......................................38 ABBILDUNG 6.7B : OBJEKTIVE QUALITÄTSUNTERSCHIEDE DES VIDEOS „AKIYO“........................................39 ABBILDUNG 6.8A : VERGLEICH DER DATEIGRÖßE ........................................................................................40 ABBILDUNG 6.8B : VERGLEICH DER PSNR-WERTE .....................................................................................40 ABBILDUNG 6.9A : VERGLEICH DER DATEIGRÖßE ........................................................................................41 ABBILDUNG 6.9B : VERGLEICH DER DATEIGRÖßE ........................................................................................41 ABBILDUNG 7.1 : BILDSCHIRMFOTOS DES PROGRAMMS ..............................................................................43 ABBILDUNG 7.2 : AUFBAU DES VIDEOSYSTEMS...........................................................................................44 ABBILDUNG 7.2 : FILTERGRAF FÜR SERVER UND CLIENT ............................................................................45 ABBILDUNG 7.3 : DIALOG ZUR AUSWAHL EINES VIDEOCODECS ..................................................................46 ABBILDUNG A.1 : FALTUNG DES BILDES .....................................................................................................51 ABBILDUNG A.2 : FALTUNGSVORGANG IN EINZELSCHRITTEN .....................................................................53 ABBILDUNG B.1 : ABBILDUNGS-KENNLINIE ................................................................................................54

Tabellenverzeichnis TABELLE 4.1 : BILDFORMATE ......................................................................................................................16 TABELLE 4.4 : VERGLEICH DER KOMPRESSIONSTANDARDS.........................................................................23 TABELLE 5.1 : PASCALSCHES DREIECK .......................................................................................................26 TABELLE 6.1 : QUALTÄTSVERGLEICH FÜR DAS VIDEO „KARINA“................................................................39

Formelverzeichnis FORMEL 3.1: SOBEL-FILTERMASKEN .............................................................................................................5 FORMEL 3.2 : FALTUNG DES BILDES ..............................................................................................................6 FORMEL 3.3 : ABSOLUTE KANTENSTÄRKE S(X,Y) UND KANTENRICHTUNG φ(X,Y)........................................6 FORMEL 3.4 : SCHWELLENWERT....................................................................................................................6 FORMEL 3.5 : KANTENORIENTIERUNG ...........................................................................................................7 FORMEL 3.6 : KANTENORIENTIERUNGSVEKTORFELD .....................................................................................7 FORMEL 3.6 : BEGINN DES AUSZUSCHNEIDENDEN BEREICHES ....................................................................10 FORMEL 3.7 : GRÖßE DES AUSZUSCHNEIDENDEN BEREICHES ......................................................................10 FORMEL 3.8 : DETEKTIONSOPERATION ........................................................................................................11 FORMEL 3.9 : ABSTANDSMETRIK DER KANTENRICHTUNG ...........................................................................11 FORMEL 4.1 : UMRECHNUNG YUV -> RGB................................................................................................16 FORMEL 4.2 : UMRECHNUNG RGB -> YUV................................................................................................16 FORMEL 4.3 : COSINUS-TRANSFORMATION .................................................................................................19 FORMEL 5.1 : EINDIMENSIONALE GAUßFUNKTION .......................................................................................25 FORMEL 5.2 : ZWEIDIMENSIONALE GAUßFUNKTION ....................................................................................26 FORMEL 5.3 : GENERIERUNG EINES BINOMIALFALTUNGSOPERATORS FÜR N=2...........................................27 FORMEL 6.1 : MITTLERER QUADRATISCHER FEHLER MSE UND SIGNALRAUSCHABSTAND PSNR ...............32 FORMEL B.1 : TRANSFORMATION DES GRAUWERTEBEREICHES ..................................................................54 FORMEL B.2 : TRANSFORMATION IN DER PRAXIS ........................................................................................54

1 Einleitung Durch die Globalisierung und Öffnung der Märkte in anderen weit entfernten Ländern haben Firmen in den letzten Jahrzehnten ihre Produktionsstätten auf viele Standorte in der Welt verteilt. Dabei ist ein wichtiges Instrument zur Steuerung und Leitung dieser dezentralen Firmensitze eine gut funktionierende Kommunikationsinfrastruktur untereinander. Gemeinsame Projekte können nur dadurch entstehen, dass die Fachleute im ständigen Kontakt miteinander stehen und einen Wissensaustausch vornehmen. Dabei reicht allein die Übertragung von Sprache oft nicht mehr aus. Der Wunsch geht mehr in die Richtung, sich mit seinem Gesprächspartner von Angesicht zu Angesicht über weite Entfernungen unterhalten zu können. Über diese Videotelefonie hinaus gibt es auch eine Nachfrage nach Videokonferenzsystemen, die die Übermittlung mehrerer Teilnehmer gleichzeitig ermöglichen soll. Der Vorteil solcher Systeme liegt nicht nur in der Ersparnis von Flugkosten, sondern auch von Zeit. Aber nicht nur im kommerziellen Einsatz ist Videotelefonie eine wichtige Anwendung, sondern auch im privaten Bereich. Viele Menschen verlassen ihre gewohnte Umgebung, um an einem anderen Ort einen Arbeitsplatz anzutreten. Hierbei bietet die Übertragung des Videobildes zusätzlich zur Sprache eine gute Alternative zur bisherigen alleinigen Sprachübetragung, um weiterhin guten Kontakt zu Bekannten und Verwandten halten zu können. In diesem Marktsegment sieht auch die Mobilfunkbranche eine ihrer zukünfigen Aufgaben liegen, diese Möglichkeit in den UMTS-Mobilfunktelefonen [1] mit anzubieten. Das größte Problem bei dieser Thematik stellt die Übertragung der Datenmengen dar. Die bisherigen Leitungen waren für die Sprachübertragung ausgelegt und nicht für zusätzliche Videoübetragung. Die Bandbreite bei analogen Telefonleitungen (56kBit/s) und ISDN (64kBit/s) ist für die Übertragung von Video und Sprache (>400kBit/s) auf diesen Medien zu gering [2], wenn nicht allzu gravierende Einschnitte bei der Bildqualität erfolgen sollen. An eine Videokonferenz ist bei dieser Leitungskapazität erst recht nicht zu denken. Erst die Entwicklung leistungsfähiger Kompressionsalgorithmen für Bewegtbilder, wie sie beispielsweise die Standards H.261 und H.263 beschreiben, ermöglichten es, diese Medien auch für die Übertragung von Videos mit akzeptabler Qualität nutzbar zu

-1-

machen. Doch die Bandbreite reicht immer noch nicht aus, um eine einigermaßen ausreichende Übertragungsqualität für den Einsatz von Konferenzsystemen zu gewährleisten. Hierin steckt noch viel Entwicklungsbedarf und Spielraum. Eine Möglichkeit, die Bandbreite eines Videotelefoniesystems weiter zu senken, ohne die Qualität der wesentlichen Bildinhalte zu beeinträchtigen, beruht auf dem Ansatz, dass bei Videotelefonie- und Videokonferenzsystemen nur die Gesichter für die Teilnehmer relevant sind. Die Umgebung außen herum ist folglich nicht von Belang und kann in ihrem Informationsgehalt herabgesetzt werden. In der folgenden Diplomarbeit wird daher ein solches Verfahren vorgestellt und untersucht.

-2-

2 Aufgabenstellung und Stand der Technik 2.1

Stand der Technik

Da eine große Nachfrage nach Videotelefoniesystemen besteht, existieren auch Softwarelösungen dafür. Beispiele sind OpenH323 [3] und Netmeeting von Microsoft [4]. Abgesehen von der Toncodierung haben alle Systeme gemeinsam, dass sie zur Übertragung der Bewegtbilder auf Videokompressionsalgorithmen beruhen, die nicht objektbasiert sind. Solche objektorientierten Videokompressionsverfahren befinden sich zur Zeit noch im Versuchsstadium. Sie haben den Vorteil, dass sie Objekte im Bild finden, diese vom Hintergrund ablösen und gesondert von der Kompressionsroutine behandelt werden. Der Vorteil dieser neuen Verfahren besteht darin, dass Teile des Bildes, die für den Betrachter unwesentlich oder der Anwendung nicht dienlich sind, stärker komprimiert werden

als

die

wesentlichen

Objekte.

Dies

würde

zu

einer

weiteren

Bandbreiteneinsparung des Videos bei gleichbleibender Qualität führen. Im Fall der Bildtelefonie und der Videokonferenz wäre der interessante und somit weniger komprimiert zu übertragende Bereich das Gesicht des Gesprächspartners. Damit überhaupt Objekte gefunden werden können, muss das Bild eine Vorverarbeitung durchlaufen, die spezielle Objekte aus dem Bild herausfiltert. Für diese Aufgabe existieren schon bestehende Methoden aus der Bildverarbeitung. Es handelt sich um sogenannte Objektdetektoren, die Bildausschnitte durch einen Klassifikationsalgorithmus klassifizieren können, wie sie zum Beispiel auch in der Biometrie angewendet werden. Diesen Methoden ist gemein, dass sie ein Modell des jeweils gesuchten Objekts beinhalten, in diesem Fall eben ein Modell des Gesichtes.

-3-

2.2

Aufgabenstellung

Die Aufgabe besteht darin, einen am Fraunhofer Institut für Integrierte Schaltungen (FHG-IIS) entwickelten H.263-Videocodierer so zu erweitern, dass Bereiche (Segmente) im Bild, in denen sich ein Gesicht befindet, mit einer besseren Qualität komprimiert werden als die Umgebung. Um diese Bereiche zu finden, ist dem Bildcodierer ein Gesichtsdetektor vorgeschaltet, der ihm die entsprechenden Bildkoordinaten übergibt. Dieser Detektor ist ebenfalls am Fraunhofer Institut IIS entwickelt worden. In Abbildung 2.1 ist der schematische Aufbau dargestellt.

Gesichtsdetektor

H.263 Videokompression

Komprimierter Videostrom

Abbildung 2.1 : Blockschaltbild der objektbasierten Videokompression

-4-

3 Modellbasierte Gesichtsdetektion Bevor die Videokomprimierung ein Bild segmentorientiert komprimieren kann, muss zunächst die Region gefunden werden, in der sich Gesichter befinden. Dazu wird ein sogenannter Gesichtsdetektor [5] verwendet, dessen Aufbau in Abbildung 3.1 dargestellt ist. Kantenorientierung

Detektor

Gesichtsfeld

KantenOrientierungsmodell Abbildung 3.1 : Blockschaltbild des Gesichtsdetektors Aus dem Graubild wird zuerst die Kanteninformation extrahiert. Diese Daten werden zusammen mit einem Modell des Gesichtes der Gesichtsdetektion übergeben. Das Ergebnis sind die Positionen und Felder der Gesichter im Bild. Im folgenden sind nun die einzelnen Bearbeitungsschritte genauer aufgeführt.

3.1

Extraktion von Kanteninformation

Die Grundlage dieser Merkmalsextraktion ist die Berechnung der Kanteninformation, die aus ihrer Stärke und Richtung besteht. Dabei wird ein sogenannter Faltungsoperator verwendet, der für einen lokalen Bildpunkt seine Steigung aus den benachbarten Farbwerten berechnet. Im Speziellen wird hier der Sobelfilter verwendet. Dieser arbeitet mit zwei 3x3 grossen Filtermasken, Kx für vertikales und Ky für horizontales Filtern (Formel 3.1).

1 0 − 1  K x = 2 0 − 2 1 0 − 1

1 2 1 K y =  0 0 0  − 1 − 2 − 1

Formel 3.1: Sobel-Filtermasken

-5-

Die Filtermasken werden einzeln über das gesamte Bild I(x,y) bewegt. Jeder Farbwert, der sich innerhalb des Bereiches der Maske befindet, wird mit dem entsprechenden darüberliegenden Wert der Maske multipliziert. Anschließend werden diese Werte zusammen addiert. Das Ergebnis dieser Operation sind zwei Kantenstärke-Bilder Gx(x,y) und Gy(x,y). Dieser Vorgang wird auch Faltung genannt (Formel 3.2). Wie die Faltung genau funktioniert, ist im Anhang A erklärt.

G x ( x, y ) = K x ∗ I ( x , y ) G y ( x, y ) = K y ∗ I ( x , y ) Formel 3.2 : Faltung des Bildes

Aus diesen zwei Bildern lassen sich sowohl die absolute Kantenstärke S(x,y) als auch die Kantenrichtung φ(x,y) berechnen (Formel 3.3). 2

2

S ( x, y ) = G x ( x , y ) + G y ( x, y )  G ( x, y )  π  + φ ( x, y ) = arctan  y G x y ( , )  x  2 Formel 3.3 : Absolute Kantenstärke S(x,y) und Kantenrichtung φ(x,y) In Abbildung 3.2 sind die einzelnen Schritte der Kanteninformationsgewinnung an einem Beispiel dargestellt. Dabei werden die jeweiligen Kanteninformationen in Grauwerten wiedergegeben. Oft sind homogene Flächen, in denen es keine sichtbaren Farbunterschiede gibt, verrauscht und enthalten keine nützlichen Kanteninformationen, die zur Detektion ausgenutzt werden könnten. Aus diesem Grund wird ein Schwellenwert TS zur Kantenstärke S(x,y) eingeführt, der alle Werte, die unter einem bestimmten Schwellenwert liegen, auf Null setzt und aus den übrig bleibenden das Kantenstärkefeld ST(x,y) produziert.  S ( x, y ), wenn S ( x, y ) > TS S T ( x, y ) =  0, sonst  Formel 3.4 : Schwellenwert Die Kantenrichtung φ(x,y), die in der Formel 3.3. gegeben ist, nimmt Werte zwischen 0 und 2π ein. Dies hängt davon ab, ob der Farbverlauf von hell nach dunkel oder

-6-

a)

b)

d)

c)

e)

Abbildung 3.2 : Ergebnisse der Kanteninformationsgewinnung, a)Beispielbild I(x,y), b) vertikales Kantenbild Gx(x,y), c) horizontales Kantenbild Gy(x,y), d)Kantenstärkebild S(x,y) und e) Kantenorientierungsbild φ(x,y). umgekehrt wechselt. Da diese Information für die Detektion irrelevant ist, kann sie herausgefiltert werden, indem die Richtungsinformation auf den Wertebereich [0...π] abgebildet wird. Das Ergebnis wird Kantenorientierungsfeld ψ(x,y) genannt (Formel 3.5).  φ ( x, y ), wenn 0 ≤ φ ( x, y ) < π ψ ( x, y ) =  φ ( x, y ) − π , wenn π ≤ φ ( x, y ) < 2π Formel 3.5 : Kantenorientierung In der Formel 3.6 ist die Kantenorientierungsinformation wiedergegeben, wobei V(x,y) das Kantenorientierungsvektorfeld in komplexer Form mit j2=-1 ist. ST(x,y) und ψ(x,y) werden aus der Formel 3.4 und 3.5 gebildet.

V ( x , y ) = S T ( x , y ) e jψ ( x , y ) Formel 3.6 : Kantenorientierungsvektorfeld

-7-

In Abbildung 3.3 ist ein solches Kantenorientierungsbild V dargestellt. Die Elemente in diesem Bild beziehen sich auf Vektoren v, deren Richtung durch die Kantenorientierung vorgegeben wird. Ihre Länge gibt die Stärke der Kante wieder. Bereiche ohne Vektoren sind wegen des Schwellwertes herausgefallen.

Abbildung 3.3 : Kantenorientierungsbild V

3.2

Modellbildung

Die Mustererkennung des Gesichtsdetektors macht ein Modell des Gesichtes erforderlich. Für die Erstellung werden zunächst einige Bilder mit Gesichtern aufgenommen. Damit das Gesicht aus den Bildern ausgeschnitten werden kann, müssen die Augen von Hand markiert werden. In Abbildung 3.4 sind einige markierte Beispielbilder dargestellt. Ein normaler Datensatz besteht aus bis zu 100 Bildern. Zum Ausschneiden der Gesichter wird die Schablone aus Abbildung 3.5 benutzt. Das graue Feld ist der Bereich, der ausgeschnitten werden soll. Das linke Auge (vom Leser aus betrachtet) ist dabei der Koordinatenursprung. Die obere linke Koordinate P des Feldes ist der Punkt, ab dem das Gesicht ausgeschnitten werden soll. Als Parameter werden die endgültige Modellgröße Sm und die relativen Koordinaten des Ursprungs ds und du benötigt. Das Seitenverhältnis a wird aus der Modellgröße Sm berechnet; dabei ist a = Smx / Smy. Das Gesicht wird nun so normalisiert, dass der Augenabstand dAugen = 1 ist. -8-

Abbildung 3.4 : Markierte Gesichter aus der Trainingsmenge sx P(x,y)

dAugen

du

x sy=1/a*s

ds

y

ds

Abbildung 3.5 : Schablone der Gesichtsteile

-9-

Der linke obere Punkt des Koordinatensystems berechnet sich dann aus Formel 3.6

 px   − d s * d Augen   =   p  − d *d  y u Augen     Formel 3.6 : Beginn des auszuschneidenden Bereiches und die Größe s des Feldes aus Formel 3.7.

 s x   (2 * d s + 1) * d Augen    =   s  1/ a * sx   y  Formel 3.7 : Größe des auszuschneidenden Bereiches Danach wird das Gesicht im Bereich s ausgeschnitten und auf die Ausgangsgröße Sm skaliert. Schließlich wird aus den Gesichtern ein Durchschnittsgesicht berechnet, indem Bildpunkte, die sich an der gleichen Position befinden, aufaddiert werden und durch die Anzahl der Bilder geteilt werden. Dieses

Mittelwertbild

wird

noch

weiteren

Vorverarbeitungschritten

wie

Kontrastanhebung (Anhang B) und Histogrammequalisierung unterzogen. Schließlich wird daraus ein Kantenorientierungsbild VM(x,y) erstellt, das als Gesichtsmodell (Abbildung 3.6) der Mustererkennung dient.

Abbildung 3.6 : Gesichtsmodell VM Einen großen Einfluss auf die Leistung der Mustererkennung haben die verwendeten Parameter. Ihre optimalen Einstellungen müssen in einem iterativen Prozess gefunden werden.

- 10 -

3.3

Detektion

Bei der Gesichtsdetektion wird das Modell VM(x,y) über das Bild VI geschoben, und an jeder Bildposition (x,y) wird die Ähnlichkeit zwischen dem Modell und dem darunter liegenden Bild berechnet. Das Bild VI liegt dabei als Kantenorientierungsbild vor. Für die Berechnung der Ähnlichkeit können zwei Metriken herangezogen werden, und zwar zum einen die Metrik für die Kantenstärke und zum anderen die Metrik für die Kantenrichtung. C ( x, y ) = ∑∑ dist (VM (m, n),VI ( x + m, y + n)) n

m

Formel 3.8 : Detektionsoperation Die Funktion für die Mustererkennung kann auch als Faltungsoperator beschrieben werden (Formel 3.8), wobei C(x,y) wieder ein Bild ist, in dem jeder Bildpunkt einen Wert der Ähnlichkeit zwischen dem Ausschnitt mit der Größe m · n des Bildes VI und dem Modell mit der gleichen Größe widerspiegelt. Die Funktion dist() berechnet die lokale Ähnlichkeit zwischen zwei einzelnen Orientierungsvektoren. Sie liefert einen niedrigen Wert, wenn die Ähnlichkeit groß ist und einen hohen, wenn die Ähnlichkeit gering ist. Dabei handelt es sich um eine Abbildungsfunktion, die die beiden 2-dimensionalen Vektoren vm und vi auf den Bereich [0...smax] abbildet; diese Vektoren besitzen die Eigenschaft

arg{v}=[0...π].

Kantenorientierungsfeldern VM

Hierbei

werden

die

Vektoren

von

den

und VI gebildet. Stehen die Vektoren senkrecht

zueinander, so haben sie ihre maximale Länge smax. Diese Länge hängt von der Normalisierung der Vektoren vm und vi ab. Da das Ergebnis in einem 8Bit-Graubild dargestellt wird, ist smax=255. In Formel 3.9 ist die Funktion dist() als Abstandsmetrik der Kantenrichtung angegeben.

sin(| arg{vi } − arg{v m } |) ⋅ s max falls | vi |, | v m |> 0 dist =  s max sonst  Formel 3.9 : Abstandsmetrik der Kantenrichtung

- 11 -

Die Position eines Gesichtes wird gefunden, indem C(x,y) nach Werten abgesucht wird, die unterhalb einer Schwelle Tf liegen. Dieser Schwellenwert wird heuristisch ermittelt. Damit Gesichter unterschiedlicher Größe im Bild gefunden werden können, wird eine Multiresolutionspyramide aufgebaut, in der sich das gleiche Bild in mehreren unterschiedlichen Skalierungsstufen befindet. In Abbildung 3.7 stellt die rechte Reihe die unterschiedlichen Auflösungen des Originalbildes, die linke Reihe dagegen die gewonnen Korrelationsbilder C(x,y) dar. Der aus der Suche gewonnene dunkelste Punkt ist die Position des Gesichts in der rechten Reihe. Aus der Skalierungsstufe wird auf die ursprüngliche Größe des Gesichtes zurückgerechnet und die Feldgröße sowie die eigentliche Position bestimmt.

Abbildung 3.7 : Multiresolutionspyramide der Korrelationsbilder und der Originalbilder

- 12 -

4 Der H.263-Standard Zur Bewegtbildcodierung für Videotelefonie und Videokonferenzsysteme über analoge Telefonleitungen hat die ITU-T 1993 die Empfehlung H.261 herausgegeben. Weiterhin erschienen die Erweiterungen H.263 und H.263+. Die wesentlichen Erweiterungen von H.261 nach H.263 bestehen in der Bewegungsschätzung (Prädiktion) und diversen optionalen Erweiterungen, wie zum Beispiel der verbesserten Bewegungserkennung. Im Standard H.263+ wurden neue Optionen hinzugefügt und die vorher genau bestimmten Bildformate etwas gelockert.

4.1

Prinzipieller Aufbau von H.263

Für die Kompression bewegter Bildfolgen hat sich besonders die Methode der prädiktiven hybriden Differenzbildcodierung durchgesetzt [6][7]. Auf diesem Verfahren basieren zur Zeit die wichtigsten internationalen Standards. Darunter fällt auch der H.263-Standard. Zur Redundanzreduktion bewegter Bildfolgen werden mehrere Mechanismen zu einem hybriden Ansatz vereinigt, der trotz relativ freier Implementierung der Codierung immer aus den folgenden aufgezählten Grundbausteinen besteht. •

Bewegungsschätzung (ME)



Prädiktion (Präd)



Transformation vom Orts- in den Frequenzraum (DCT)



Quantisierung (Quant)



Entropiecodierung (VLC)

In Abbildung 4.1 sind alle Mechanismen in einem Blockschaltbild dargestellt. Die Prädiktion findet dabei in einer Rückkoppelungsschleife statt. Sie wird benötigt, da der Encoder zur Prädiktion anstelle des Eingangsbildes das rekonstruierte Bild nach der Quantisierung verwenden muss. Der Schalter am Eingang wählt zwischen zwei Codiermodi aus. Im Inter-Modus (PModus) wird die Prädiktion verwendet, wohingegen im Intra-Modus (I-Modus) die Pixelwerte des Originalbildes DCT-transformiert und quantisiert werden (ähnlich der JPEG-Kompression). Es werden keine Informationen aus vorangegangenen Bildern verwendet. Zusätzlich zum P-Modus existiert noch der B-Modus, wenn eine - 13 -

bidirektionale Prädiktion (ein Bild davor und ein Bild danach) verwendet wird. Der Intra-Modus kommt dann zur Anwendung, wenn kein Bild vorhanden ist, auf das sich die Prädiktion beziehen kann, wie beispielsweise beim Startbild oder wenn sich der Bildinhalt bei harten Schnitten komplett geändert hat. Zur Vermeidung der Fehlerausbreitung wird nur eine bestimmte Anzahl von P-Bildern zwischen zwei IBildern verwendet.

Originalbild Eingang Originalbild

+

+ -

Bild im Frequenzraum

I P

DCT

quantisiertes Bild im Frequenzraum

Q

VLC

Fehlerbild

Ausgang Bitstrom

Decodierschleife

Q-1

geschätztes Bild

dequantisiertes Bild im Frequenzraum

DCT-1 rekonstruiertes Bild

+

+

+

rekonstruiertes Bild

Bewegungskompensatio n

Bildspeicher

Bewegungsvektor

Bewegungsschätzung aktuelles Bild

Bewegungsvektor

vorhergehendes Bild

Abbildung 4.1 : Blockschaltbild eines hybriden Differenzbildcodierers

- 14 -

4.2

Eingangsbildformat

Das menschliche Auge hat unterschiedliches Auflösungsvermögen für Helligkeit und Farbnuancen. Dabei befinden sich ca. 120 Millionen Stäbchen auf der Retina, die auf Helligkeit reagieren und ca. 6 Millionen Zapfen, die auf unterschiedliche Farben ansprechen. Das

gängige

RGB-Format

berücksichtigt

dies

nicht,

sondern

verteilt

die

Helligkeitsinformationen auf die drei Farbkomponenten Rot, Grün und Blau. Aus diesem Grund wird in der Videoverarbeitung auf das YUV-Bildformat zurückgegriffen, das beim Encoder auch als Eingangssignal übergeben wird. In diesem Signal steckt die gesamte Helligkeitsinformation (Luminanz) in der Y-Komponente, die in der vollen Auflösung abgetastet worden ist. Die Farbdifferenzanteile (Chrominanz) U (Rot-GrünBalance) und V (Gelb-Blau-Balance) können in einer geringeren Auflösung vorliegen (chrominance subsampling).

Chrominanz U

Luminanz Y

Chrominanz V

Abbildung 4.2 : YUV-Einzelbilder Ein gängiges Format ist YUV 422, wobei hier die Chrominanzbilder U und V vertikal und horizontal nur eine halb so hohe Auflösung haben wie das Luminanzbild Y. Ein weiterer Vorteil des YUV-Formates liegt darin, dass Regionen mit gleicher Helligkeit im Bild häufiger vorkommen als Regionen mit gleichen RGB-Werten. Somit wird hier noch zusätzlich eine stärkere Kompression der Y-Komponente begünstigt. Tabelle 4.2 enthält die entprechenden Umrechnungsformeln.

- 15 -

R = Y + 1.370 (U - 128) G = Y - 0.698 (U - 128) - 0.336 (V - 128) B = Y + 1.730 (V - 128)

Formel 4.1 : Umrechnung YUV -> RGB

Y = 0.30 R + 0.59 G + 0.11 B U = 0.62 R - 0.52 G - 0.10 B + 128 V = -0.15 R - 0.29 G +0.44 B + 128

Formel 4.2 : Umrechnung RGB -> YUV Die Größe des Luminanz-Eingangsbildes kann je nach Einstellung im CIF-Format oder im QCIF-Format vorliegen (Tabelle 4.1). Format

Bildgröße

Makroblöcke

Pixelanzahl

(Y-Bild)

Bandbreite (25 Bilder/s)

CIF

352 x 288

22 x 18

101376

25,3 Mbit/s

QCIF

176 x 144

11 x 9

25344

633,6 kBit/s

Tabelle 4.1 : Bildformate Für die weitere Verarbeitung wird jedes Y-, U- und V-Bild in 8x8 Blöcke unterteilt und blockweise verarbeitet. Ein Makroblock MB besteht aus vier aneinander grenzenden Luminanzblöcken und den beiden flächengleichen 8x8 Chrominanzblöcken U und V. Ein Makroblock besteht folglich aus 16x16 Bildpunkten (Pixeln), von denen jeder einen Y-Wert und jeweils vier zusammen den gleichen U- und V-Wert besitzen.

4.3

Bewegungsprädiktion (ME)

Durch die kontinuierliche Bewegung der Objekte in natürlichen Videosequenzen unterscheiden sich zwei hintereinander aufgenommene Bilder nur unwesentlich. Diese zeitliche Redundanz kann beseitigt werden, indem versucht wird, eine Vorhersage über das nachfolgende Bild n aus dem vorhergehenden Bild n-1 zu erstellen (Prädiktion). Diese Vorhersage wird zur Vereinfachung nur in der Helligkeitskomponente (Luminanz) durchgeführt und die Farbkomponente (Chrominanz) daran gekoppelt. Mit verschiedenen Verfahren kann nun ein Makroblock im aktuellen Bild n im

- 16 -

vorhergehenden Bild n-1 gesucht werden. Mögliche Verfahren sind: •

full search



bi-area-subsampling (BAS)



successive elimination

Die Gemeinsamkeit aller Verfahren besteht darin, dass zwischen den beiden zu prüfenden Makroblöcken jeweils ein Abstandsmaß berechnet wird. In diesem Fall wird der

absolute

Fehler

(SAD)

bestimmt.

Dies

geschieht

dadurch,

dass

der

Bewegungsschätzung zunächst das aktuelle Originalbild n und das vorangegangene Bild n-1 übergeben werden. Aus dem aktuellen Bild n wird ein Makroblock herausgeschnitten und im vorhergehenden Bild n-1 in einem Suchbereich um sein ursprüngliche Position herum ein passender Ausschnitt gesucht. Dieser wird dadurch bestimmt, dass der Makroblock an jede möglichen Stelle verschoben wird und die Differenzen mit den dortigen Pixelwerten gebildet werden (Abbildung 4.3).

Suchbereich Objekt MV

MB Bild n

Bild n-1

Abbildung 4.3 : Bewegungsschätzung An der Stelle, an der die Summe der Differenzen am geringsten ist (kleinster SAD), wird der Bewegungsvektor MV gebildet. Dieser Vektor beschreibt folglich den Abstand des Makroblockes zum vorhergehenden Bild. Diese Information wird in jedem Makroblock gespeichert. Im nächsten Schritt wird aus den Informationen des Bildes n-1 und den Bewegungsvektoren der Makroblöcke ein geschätztes Bild aufgebaut. Dann wird die Differenz aus dem geschätzten Bild und dem Originalbild n gebildet. Das Ergebnis wird Fehlerbild genannt, mit dessen Hilfe eine vollständige Rekonstruktion des

- 17 -

Originalbildes n möglich ist. Je besser die Bewegungsschätzung funktioniert, desto geringer ist die Leistung (Informationsgehalt) des Prädiktionsfehlerbildes und umso weniger Informationen müssen am Ende zur Beschreibung benutzt werden (Beispiel siehe Abbildung 4.4). Jetzt muss noch überprüft werden, ob die Information des Bewegungsvektors und des Fehlerbildes weniger Daten ausmacht als die Übertragung des originalen Makroblockes. War die Suche erfolgreich, so wird der Makroblock - bestehend aus Fehlerbild und Bewegungsvektor - als Inter-Makroblock bezeichnet, andernfalls als Intra-Makroblock ohne Prädiktion.

Abbildung 4.4 : Einzelbilder der Prädiktion; Originalbild (oben links), rekonstruiertes Bild (oben rechts), Fehlerbild (unten links), geschätztes Bild (unten rechts)

- 18 -

Die gebräuchlichen Block-Matching-Methoden unterscheiden sich in der Suchstrategie. Bei „full search“ wird das gesamte Bild n-1 als Suchraum für einen Makroblock aus Bild n hergenommen, wobei dieser pixelweise über das Bild geschoben wird. Aufgrund des höheren Rechenaufwands wird dieses Verfahren kaum eingesetzt. Die BAS-Methode stellt eine bessere Alternative dar. Die Suche beginnt an der Position des alten Makroblocks. An dieser und an jeder um ein Pixel verschobenen Position wird der SAD berechnet. Die Stelle mit dem niedrigsten SAD wird der neue Startpunkt. Dies wird solange wiederholt, bis kein niedrigeres SAD mehr gefunden wird. Der Vorteil dieses Verfahrens besteht darin, dass nicht der komplette Suchbereich abgearbeitet werden muss. Da aber die Suche in einem lokalen Minimum enden kann, ist nicht sichergestellt, dass der optimale Makroblock gefunden wird. Da im realen Bildmaterial viele dreidimensionale Bewegungen wie Drehungen und Zoomen vorliegen, wird bei diesen zweidimensionalen Suchverfahren nicht immer der passende Makroblock gefunden. Von diesem Zusammenhang hängt das Ergebnis des Fehlerbildes ab.

4.4

Diskrete Cosinus-Transformation (DCT)

Das Fehlerbild wird im nächsten Schritt der diskreten Cosinus-Transformation übergeben. Unter Transformationen versteht man die Konvertierung der einzelnen Farbwerte der Pixel, die eine Kurve mit diskreten Werten beschreiben, in einen anderen Raum. Die Cosinus-Transformation stellt dabei diese Kurve als eine Überlagerung von Cosinuswellen dar. Diese Funktion ist bijektiv und kann aus den DCT-Koeffizienten wieder in das ursprüngliche Farbwertebild verlustfrei zurücktransformiert werden (Rücktransformation DCT-1).

F (u , v ) =

7

1 4

7

⋅ C (u ) ⋅ C ( v ) ⋅ ∑ ∑ f ( x , y ) ⋅ cos x =0 y =0

7

7

f ( x , y ) = ⋅ ∑ ∑ C (u ) ⋅ C (v ) ⋅ F (u , v ) ⋅ cos 1 4

( 2 x +1 ) u π 16

( 2 x +1) uπ 16

⋅ cos

+1) vπ ⋅ cos ( 2 y16

x =0 y =0

 1; t ≠ 0 C (t ) =  1  2 ; sonst Formel 4.3 : Cosinus-Transformation

- 19 -

( 2 y +1) v π 16

DCT DCT-1

Zur Transformation wird das Fehlerbild in 8x8 Pixel große Blöcke unterteilt, auf denen dann einzeln die DCT (Tabelle 4.3) angewendet wird. Dabei wird jeder Block aus 64 Werten aufgefasst, wobei f(x,y) die Helligkeitswerte im Y Bild liefert (entsprechend den Farbwerten der U- und V-Bilder). Diese Werte, die abhängig von ihren zwei räumlichen Koordinaten x und y sind, werden nun in den Frequenzraum transformiert, wobei u und v

die

Position

der

Amplitudenwerte

F(u,v)

der

entsprechenden

Cosinus-

Grundfrequenzen sind. Die Frequenzen steigen mit dem Betrag von u und v. Da diese in jedem 8x8 Block von 0 bis 7 laufen können, wird eine mögliche Überlagerung von 64 Grundfrequenzen (Abbildung 4.5) erhalten, die unterschiedlich stark gewichtet (Amplitude) sind, wobei der Wert in der unteren rechten Ecke die höchste Frequenz besitzt. Der Amplitudenwert der horizontalen und der vertikalen räumlichen Frequenz von 0 (v=0, u=0) wird als Gleichstromkoeffizient (direct current, DC) bezeichnet, die restlichen 63 Werte als die Wechselstromkoeffizienten (alternating current, AC). Der DC-Wert ist der arithmetische Mittelwert der 64 Bildpunkte. In einem natürlichen Bild sind scharfe Linien und abrupte Farbwechsel (Kanten) eher selten, woraus folgt, dass der Unterschied zwischen zwei benachbarten Punkten sehr gering ist und somit die Frequenz klein. Deshalb konzentriert sich der größte Teil des Ausgangssignals im Gleichstromanteil und in den unteren Frequenzen. Die meisten AC-Werte mit höheren Frequenzen sind sehr klein oder sehr nahe bei Null.

Abbildung 4.5 : Überlagerte Cosinus-Grundfrequenzen

- 20 -

4.5

Quantisierung (Quant)

Ein wesentlicher Bestandteil des Encoders zur Reduzierung der Datenmenge ist die Quantisierung. Dabei handelt es sich um eine verlustbehaftete Operation, die einerseits für das Auge fast irrelevante Informationen herausfiltert, andererseits jedoch auch zur Verschlechterung der Bildqualität führen kann. Dies geschieht dadurch, dass der Wertebereich der DCT- Koeffizienten auf wenige diskrete Werte (Quantisierungsstufen) abgebildet wird. Die Größe und Anzahl der Bereiche bestimmen dabei die Bitersparnis, und die Abweichung

von

den

Mittelwerten

(Quantisierungsstufen)

bestimmt

den

Qualitätsverlust. Über den gesamten Wertebereich der Koeffizienten lassen sich diese Bereiche in einer Treppenstufen-Kennlinie darstellen (Abbildung 4.6). Es existieren zur Quantisierung verschiedene solcher Kennlinien, von fein bis grob (1 bis 31). Dadurch muss zu den Bilddaten nur ein Parameter (QP) übertragen werden und nicht die gesamte Kennlinie. Dieser Parameter bestimmt die Quantisierungsstufenbreite, das heißt die Entfernung zwischen zwei Entscheidungsschwellen. Jedem Eingangswert S (DCT-Koeffizient), der innerhalb einer solchen Entscheidungsschwelle liegt, wird ein Quantisierungswert Sq zugewiesen.

Sq Stufenbreite

Repräsentativwerte

S Entscheidungsschwelle

Abbildung 4.6 : Quantisierungskennlinie

- 21 -

4.6

Entropiecodierung (VLC)

Nach der Quantisierung der DCT-Koeffizienten des Prädiktionsfehlerbildes wird noch eine Entropiecodierung mit variabler Codewortlänge (variable length coding, VLC) angefügt. Meist wird hier die Huffman-Codierung benutzt. Das Prinzip dieser Methode ist eine stochastische Auswertung des Codes vor der Codierung. Häufig vorkommenden quantisierten Koeffizienten wird ein kurzes, selten vorkommenden hingegen ein langes Codewort zugeordnet. Zunächst wird dazu die Häufigkeit jedes quantisierten Wertes gezählt und zusammen mit diesem in eine Liste eingetragen. Aus dieser Liste wird im folgenden ein binärer Baum aus Kanten und Knoten aufgebaut, wobei die Startknoten die Häufigkeiten der einzelnen quantisierten DCT-Koeffizienten enthalten. Nun werden zwei Knoten mit der niedrigsten Häufigkeit gesucht, zu denen noch keine Kante führt. Diese beiden bilden einen neuen Knoten, dessen Inhalt die Summe aus den Häufigkeiten der vorigen Knoten ist. Die eine Kante wird mit 0 und die andere mit 1 markiert. Dies wird solange wiederholt, bis kein Knoten mehr existiert, zu dem keine Kante führt. Die binären Markierungen der Kanten von der Wurzel zu den Blättern sind die Codeworte des Huffman-Codes. Jeder DCT-Koeffizient wird nun auf eines dieser Codeworte abgebildet. Folglich haben die Codewörter, die am häufigsten vorkommen, einen kürzeren Huffmancode als Wörter, die nicht so häufig vorhanden sind. Der Codierungsbaum muss in Form einer Abbildungstabelle den komprimierten Daten mitgegeben werden, damit sie wieder decodiert werden können. Im Anhang C ist der gesamte Vorgang an an einem Beispiel verdeutlicht.

4.7

Decodierung

Bei der Decodierung wird der gleiche Vorgang umgekehrt ausgeführt. Zunächst werden aus den huffmancodierten Werten die quantisierten DCT-Werte berechnet. Dazu wird die im Datenstrom enthaltene Huffmantabelle benutzt. Die DCT-Werte werden aus dem Frequenzraum durch die DCT-1-Funktion wieder in den Farbraum abgebildet. Handelt es sich bei dem so gewonnen Bild um ein I-Bild, so bedarf es keiner weiteren Behandlung. Ist es allerdings ein P-Bild, so muss aufgrund der Informationen (Prädiktionsdaten) das Bild erst aus dem vorhergehenden Bild berechnet werden. Zusammengesetzt ergeben die Bilder dann wieder das Ursprungsvideo mit einem je nach Quantisierungseinstellung mehr oder weniger starken Verlust.

- 22 -

4.8

Vergleich verschiedener Standards

Standard

Bandbreite Bildformate

Frametypen

Medium, Einsatz

H.261

N x 64

QCIF, CIF

P- und I-Bilder

ISDN,

(1993)

kBit/s

30 Hz

Keine Regelung der

Bildtelefonie,

Abfolge

Videokonferenz

P-, I- und B-Bilder

Analog,

H.263

24-64 kBit/s QCIF, CIF

(1996)

Sub-QCIF

B-Bilder zusammen mit P- Bildtelefonie,

4CIF, 16CIF Bildern (z.B.: I-P-B-P-B-...) Videokonferenz MPEG-1

1,5 Mbit/s

(1992)

SIF

P-, I- und B-Bilder

Videosequenzen

25Hz

B-Bilder zwischen I- und P- auf CD-Rom Bildern. I-Bilder in festen Abständen

MPEG-2

4-6 Mbit/s

PAL, HDTV Kein Unterschied zu 50 Halb-

Fernsehen

MPEG-1

bilder /s Tabelle 4.4 : Vergleich der Kompressionstandards Unterschiedliche

Anforderungen

haben

es

notwendig

gemacht,

verschiedene

internationale Standards zu verabschieden (Tabelle 4.4), die alle auf dem gleichen oben vorgestellten Prinzip beruhen. Dabei stehen die Standards H.261 bis H.263+ für Videosignale mit niedrigen Bitraten, wie sie auch bei Bildtelefoniesystemen verwendet werden, und die MPEG-Reihe für die Komprimierung mit höheren Bitraten, wie sie im Heimvideobereich erforderlich sind. Zu erwähnen wäre noch der Unterschied in der Prädiktion. Hier unterscheiden sich H.261 und H.263 erheblich. Während die Bewegungsschätzung bei H.261 auf Ein-Pel (Bildpunkt) Genauigkeit mit einem Suchbereich von jeweils 15 Pixeln horizontal und vertikal arbeitet, ist die Genauigkeit der Bewegungssuche von H.263 ein Halb-Pel. Dies funktioniert, indem der Makroblock aus dem vorherigen Bild und der Suchbereich vor der Suche auf die doppelte Größe interpoliert wird. Dadurch wird die Genauigkeit der Bewegungsschätzung erhöht.

- 23 -

5 Segmentselektive Videokompression In diesem Kapitel geht es darum, die Gesichtsdetektion mit der Videokompression so zu verbinden, dass die Bereiche, die Gesichter enthalten (Region of Interest, ROI) mit einer besseren Qualität komprimiert werden als die restliche Umgebung [8].

5.1

Prinzip der segmentabhängigen Videokompression

Eine Möglichkeit, die Bitrate des vorgestellten Videocodierers zu beeinflussen, ist die Variierung des Quantisierungsparameters QP der einzelnen DCT-Blöcke. Dabei erhalten ROIs einen niedrigeren QP als der uninteressante Hintergrund. Der H.263-Standard erlaubt jedoch nur eine Änderung des Quantisierungsparameters von ∆QP = ±2 eines DCT-Blockes innerhalb eines Bildes In, um kompatibel zu bleiben (Abbildung 5.1).

ROI-Maske auf DCT-Blockebene

Gesichtsdetektion

∆QPi H.263-Codierer mit veränderbarer Quantisierung

In

Abbildung 5.1 : H.263-kompatible ROI-Codierung mit veränderbarem Quantisierungparameter der DCT-Blöcke Dieser Änderungsbereich ist jedoch oft viel zu klein, um einen wirklich ausreichenden Effekt zu erzielen. Außerdem unterstützen H.263-Implementierungen kaum die Möglichkeit, die Quantisierungsparameter auf DCT-Blockebene extern zu verändern. Es existieren Erweiterungen von H.263 (H.26x), die es ermöglichen, die Quantisierungsparameter des DCT-Blockes beliebig zu wählen. Außer, dass diese Erweiterungen nicht mehr der Spezifikation entsprechen, treten zusätzlich noch Kanteneffekte an den Stellen im Bild auf, wo DCT-Blöcke mit stark unterschiedlichen Quantisierungsparametern aneinander angrenzen. Der hierbei verfolgte Ansatz basiert auf der bereichsabhängigen Tiefpassfilterung als

- 24 -

Vorverarbeitungsschritt (Abbildung 5.2). Dabei durchlaufen die Bereiche eines Bildes In, in denen sich keine Gesichter befinden, eine Tiefpassfilterung, bevor das gefilterte Bild În der H.263-Codierung übergeben wird. Durch diese Filterung werden hohe Frequenzen abgeschwächt, deren Koeffizienten bei der Quantisierung des Codierers zu Null werden. Da der Wert Null einer der häufigsten Koeffizientenwerte ist, erhält dieser bei der Entropiecodierung VLC das kürzeste Codewort. Folglich sinkt die Bitrate des Videos bei gleichbleibender Quantisierungseinstellung im Vergleich zum Verfahren ohne Filterung.

Gesichtsdetektion

In

În

ROI-abhängige Tiefpassfilterung

H.263-Codierer

Abbildung 5.2 : H.263-Codierung mit vorgeschalteter ROI-basierter Tiefpassfilterung Ein Vorteil dieses Verfahrens besteht darin, dass es kompatibel zu jedem nach dem Prinzip des H.263 aufgebauten Videocodierer ist, da die Filterung einfach dem Codierer vorgeschaltet wird. Außerdem bedarf es keines direkten Eingriffes in dessen Aufbau.

5.2

Tiefpassfilter

Im Gegensatz zum Hochpassfilter Sobel (vgl. Kapitel 3.1) lässt der Tiefpassfilter die niederen Frequenzen passieren und schwächt die höheren ab. Besonders gute Ergebnisse werden dabei mit der Gaußfunktion erzielt (Formel 5.1).

g ( x) =

x2 exp( 2 ) 2σ 2π σ 1

Formel 5.1 : Eindimensionale Gaußfunktion

- 25 -

Abbildung 5.3 : Gaußkurve Die Filterung kann in X- und Y-Richtung getrennt durchgeführt werden [9] oder durch Produktbildung zweier eindimensionaler Gaußfunktionen in eine zweidimensionale Form gebracht werden (Formel 5.2).

g ( x, y ) =

x2 + y2 1 exp( ) 2πσ 2 2σ 2

Formel 5.2 : Zweidimensionale Gaußfunktion In der Praxis ist die Berechnung der Faltung mit der kontinuierlichen Gaußfunktion zu aufwendig. Deshalb wird alternativ eine wesentlich schnellere Methode verwendet. Der sogenannte Binomialfilter approximiert den Gaußfilter im diskreten Bereich. N

C

Dreieck

σ2

0

1

1

0

1

1/2

1 1

1/4

2

1/4

1 2 1

1/2

3

1/8

1 3 3 1

3/4

4

1/16

1 4 6 4 1

5

1/32

1 5 10 10 5 1

5/4

6

1/64

1 6 15 20 15 6 1

3/2

7

1/128

1 7 21 35 35 21 7 1

7/4

8

1/256

1 8 28 56 70 56 28 8 1 Tabelle 5.1 : Pascalsches Dreieck

- 26 -

1

2

Dieser Binomialfilter hat seine Bezeichnung durch seine Gewichte, deren Werte denen aus dem Pascalschen Dreieck entsprechen (Tabelle 5.1). Um aus den Werten im Pascalschen Dreieck einen zweidimensionalen Faltungsoperator B2 zu generieren, werden die Werte aus der entsprechenden Zeile im Dreieck herangezogen, wobei die Spalte N+1 die Größe des Operators in X- und Y-Richtung angibt. Aus diesen Binomialwerten wird durch Produktbildung eine zweidimensionale Matrix erzeugt, die mit der Gewichtung multipliziert wird. Die Gewichtung C ist der Kehrwert der Summe der einzelnen Binomialwerte. Eine Beispielrechnung zur Erzeugung eines solchen Operators für N=2 ist in Formel 5.3 dargestellt.

1  1 2 1  1 1 1 B 2 = 2 * [1 2 1] = 2 16 2 4 4 16 1  1 2 1  Formel 5.3 : Generierung eines Binomialfaltungsoperators für N=2 Mit diesem Operator B2 wird die Faltung durchgeführt. Dazu wird er pixelweise über das Bild geschoben. Die Farbwerte, die unter ihm liegen, werden mit den darüber liegenden Werten aus der Matrix multipliziert. Danach werden alle Ergebnisse zusammen addiert und mit C2 multipliziert. Dieser Wert wird dann wieder als Farbwert in ein neues Bild an der gleichen Position gesetzt (Beispiel in Abbildung 5.3). Das Prinzip der Faltung ist in Anhang A dargestellt.

Abbildung 5.3 : Anwendung des Binomialfilters mit N=7

- 27 -

Es macht keinen Sinn, einen Binomialfilter mit N>11 zu verwenden, da es bei der Berechnung dieser Faltung mit Hilfe der heutigen Computersysteme zu Überläufen der Rechenregister und somit zu Rechenungenauigkeiten führen kann. Ein weiteres Problem ist der Rand des Filters. Dieser ist der ganzzahlige Anteil von N/2. Da nur die Mittelpunktswerte des Filters ins Ausgangsbild gelangen, fällt der Rand des Originalbildes weg. Dies würde bedeuten, dass die Ausgangsgröße um N in X- und YRichtung kleiner ist als das Originalbild. Damit diese Information aber erhalten bleibt, wird der Rand des Originals an die gleiche Stelle im gefilterte Ausgangsbild kopiert.

5.3

Segmentierung

Abbildung 5.4 : Kopie der ungefilterten ROI in das tiefpassgefilterte Bild

- 28 -

Im letzten Schritt wird mit Hilfe der Koordinaten der ROI, die der Gesichtsdetektor liefert, das Rechteck mit dem Gesicht aus dem ungefilterten Bild ausgeschnitten und an die gleiche Position in des gefilterte Bild kopiert (Abbildung 5.4). Ist das gefilterte Bild sehr verschwommen, so ensteht ein starker Übergang zu dem hineinkopierten Gesicht. Dies kann umgangen werden, indem zunächst ein etwas grösserer Ausschnitt des Gesichtes ausgeschnitten, unter Beibehaltung eines breiteren Spektrums gefiltert und in das Ausgangsbild kopiert wird. Danach wird wie oben die ungefilterte ROI eingesetzt. Dies schafft einen fließenden Übergang zwischen der ROI und der Umgebung. Nun kann das Bild der Videokompression übergeben werden.

- 29 -

6 Experimente und Ergebnisse Um eine etwas genauere Vorhersage zu machen, inwieweit die Daten reduziert und damit die Bandbreite verringert werden kann, wurden einige Experimente durchgeführt, die im folgenden geschildert werden. Weiterhin ist aufgeführt, wie sich diese Reduzierung auf die Bildqualiät auswirkt.

6.1

Experimentierumgebung

Für die Versuche wird ein H.263-Videocodierer der Fraunhofer Gesellschaft benutzt, der auf einer Erweiterung des Open-Source-Projektes Telenor 2.0 [10] basiert. Er liegt als C++-Source-Code vor und lässt sich sowohl unter Microsoft Windows als auch unter Linux kompilieren. Die für die modellbasierte Gesichtsdetektion notwendigen Routinen sind in der Abteilung ILB des Fraunhofer Institutes in C++ unter Linux entwickelt worden und liegen ebenfalls als Source-Code vor. Sie lassen sich auch unter MS Windows mit MS Visual C++ übersetzen. Zur Durchführung der Experimente muss der Videocodierer um die Segmentierung der Eingangsbilder erweitert werden, die wiederum zum Erhalt der notwendigen Information für die ROI mit der Gesichtsdetektion verbunden ist. Diese Verbindung ist im Rahmen der Diplomarbeit in C++ unter Linux entwickelt worden. Als Versuchsdaten liegen zwei unkomprimierte Videos im CIF-Format vor. Das erste Video enthält eine Nachrichtensendung aus dem Bayerischen Fernsehen (Abbildung 6.1 rechts) und zeigt die Nachrichtenprecherin Karina vor einem gleichbleibenden

Abbildung 6.1 : Testvideos, links Akiyo, rechts Karina

- 30 -

homogenen Hintergrund. Im zweite Video wird die japanische Nachrichtensprecherin Akiyo (Abbildung 6.1 links) vor einem bewegten Hintergrund gezeigt. Die Erweiterung zerlegt zunächst das Video in die einzelnen Y-, U- und V-Bilder, wobei die Y-Komponente an den Gesichtsdetekor übertragen wird. Dort wird der Gesichtsbereich (ROI) festgelegt. Diese Information fließt dem Tiefpassfilter zu, der daraufhin die einzelnen YUV-Bildkomponenten mit Ausnahme des Gesichtes mit einem vorher festgelegten Filterparameter verschwimmen lässt. Anschließend werden die Bildkomponenten wieder zusammengesetzt und von der H.263-Videocodierung weiter verarbeitet. Das Ergebnis ist ein H.263-komprimierter Datenstrom. Optional kann auch gleichzeitig das rekonstruierte Videosignal abgespeichert werden, das zur späteren Qualitätsanalyse herangezogen wird. Dieses rekonstruierte Video entspricht dem gleichen Videosignal, das ein H263-Videodecoder liefern würde. Ein weiterer Parameter für den Videocodierer ist die Einstellung eines festen Quantisierungsparameters QP. Bei dieser Einstellung kann keine Vorhersage über die endgültige Dateigöße getroffen werden. Ist eine feste Bandbreite vorgegeben, so kann diese Bitrate eingestellt werden, die die Quantisierungseinstellung von Bild zu Bild so bestimmt, dass die vorgegebene Bandbreite eingehalten wird. Dies kann aber zu Qualitätsschwankungen innerhalb des Videostromes führen.

6.2

Messung der Bildqualität

Es gibt mehrere Faktoren, die sich auf die Bildqualität des codierten Ausgangsmaterials negativ auswirken. Typische Fehler sind Blockkanteneffekte und Moskito-Noise [7]. Der Blockkanteneffekt entsteht durch die blockweise Verarbeitung des Bildes und tritt an den Rändern der Blöcke auf. Die Ursache dafür liegt in der unterschiedlichen Quantisierung des Gleichstromanteiles der DCT-Koeffizienten. Werden diese Werte benachbarter Blöcke unterschiedlichen Quantisierungsstufen zugeordnet, so kann es zu Schwankungen der Grundhelligkeit führen. Je höher diese Stufen sind, das heißt je gröber der Quantisierer eingestellt ist, desto deutlicher wird der Helligkeitsunterschied. Das Codierungsartefakt Moskito-Noise tritt in schnell bewegten Objekten im Bild auf. An diesen Stellen findet die Bewegungsschätzung keinen optimal geeigneten Makroblock, da der neu auftauchende Bildinhalt von diesem Objekt bisher verdeckt wurde. Folglich weist das Fehlerbild sehr viele Unterschiede auf, die sich in den hohen

- 31 -

Frequenzen der DCT-Koeffizienten widerspiegeln. Bei einer groben Quantisierung fallen diese heraus. Dies äußert sich als ein ungleichmäßiges Rauschen, das von Bild zu Bild in Richtung der Objektbewegung springen kann. Einen weiteren Einfluss auf die Ausgangsqualität des Videos hat das Bildmaterial selbst. Dabei spielen örtliche ebenso wie zeitliche Eigenschaften eine Rolle. Zu den örtlichen Eigenschaften gehören gleichfarbige Flächen, einzelne Kanten und feine Strukturen. Zu den zeitlichen gehören Kameraschwenks, Zoom und bewegter Hintergrund. Diese qualitative Verschlechterung des komprimierten Ausgangsbildmaterials kann objektiv gemessen werden. Dazu wird der Unterschied zwischen dem Ergebnisbild nach der Codierung und Decodierung (rekonstruiertes Bild) und dem Original gemessen. Für die Messung wird der Signal-Rausch-Abstand (peak signal to noise ratio, PSNR) herangezogen. Der PSNR oder Signal-Rausch-Abstand basiert auf dem mittleren quadratischen Fehler (Formel 6.1), wird aber in logarithmischer Skala berechnet, und die Ergebnisse werden dementprechend in Dezibel (dB) angegeben. Der Wert Po(k,l) ist der Farbwert des Originalbildes und Pr(k,l) der des codierten Bildes. 1  N M 2  ∑∑ (Po (k , l ) − Pr (k , l ))  N ⋅ M  k =1 l =1   1  N M  255 2  PSNR = 10 ⋅ log⋅ ∑∑ 2 N ⋅ M  k =1 l =1  (Po (k , l ) − Pr (k , l ))  

MSE =

Formel 6.1 : Mittlerer quadratischer Fehler MSE und Signal-Rausch-Abstand PSNR Für den Signal-Rausch-Abstand gilt: Je höher der Wert, desto besser ist die Bildqualität des rekonstruierten Bildes. Sind sie identisch, so wird der PSNR-Wert unendlich. Für den Vergleich von Videos wird ein Mittelwert der einzelnen PSNR-Werte pro Bild ermittelt. Dieses objektive Messverfahren gibt aber nicht die subjektive Bildqualität wieder, die ein Beobachter des Ausgangsmaterials empfinden würde. Dabei kann der Signal-Rausch-Abstand Fehler liefern, die der Beobachter subjektiv nicht wahrnimmt; andererseits können jedoch auch Fehler wahrgenommen werden, die der PSNR-Wert nicht wiedergibt.

- 32 -

6.3

Ergebnisse

Für die Messungen wird jedes Video mit verschiedenen Tiefpassfiltereinstellungen codiert. Diese variieren von N=0 (ungefiltert) bis zur Stufe N=11 (stark verschwommen). Dabei wird der Quantisierungsparameter QP=10 fest vorgegeben. In Abbildung 6.2 befinden sich zur Verdeutlichung die rekonstruierten Bilder des Videos „Karina“ mit unterschiedlichen Tiefpasswerten, in Abbildung 6.3 die des Videos „Akiyo“. Die erhaltene Dateigröße des codierten Videostroms ist in einer Grafik (Abbildung 6.4 und Abbildung 6.5) aufgetragen. Ferner wird der PSNR des Gesichtsbreiches, der Umgebung und des gesamten Bildes im Vergleich zum uncodierten Original und zum codierten Orginal ohne Filterung berechnet. Diese Werte sind ebenfalls in einer Grafik aufgeführt (Abbildung 6.6 und Abbildung 6.7). In Abbildung 6.4 ist die komprimierte Videostromgröße den einzelnen BinomialfilterWerten zugeordnet. Die Dateigröße des Originalvideos beträgt 60.521.472 Bytes (3,8 Mbit/s), und das Video besteht aus 398 Bildern. Schon bei einem kleinen Wert von N=1 sinkt die Dateigröße um 50% (~12,8 Kbit/s). Bei noch größerem N wird eine Datenreduktion auf 30% (~8 Kbit/s) erreicht.

Dateigröße (Bytes)

300000 250000 200000 150000 100000 50000 0

1

2

3

4

5

6

7

8

9

Binomialfilter-Wert (N)

Abbildung 6.4 : Dateigröße des Videos „Karina“ bei unterschiedlichen Binomialfilter-Werten N

- 33 -

10

11

N=0

N=1

N=2

N=3

N=4

N=5

N=6

N=7

N=8

N=9

N=10

N=11

Abbildung 6.2 : Rekonstruiertes Video „Karina“ mit Binomialfilter-Einstellung von N=0 bis N=11 und Quantisierungsparameter QP=10

- 34 -

N=0

N=1

N=2

N=3

N=4

N=5

N=6

N=7

N=8

N=9

N=10

N=11

Abbildung 6.3 : Rekonstruiertes Video „Akiyo“ mit Binomialfiltereinstellung von N=0 bis N=11 und Quantisierungsparameter QP=10

- 35 -

Diese starke Reduzierbarkeit ist darauf zurückzuführen, dass das Video „Karina“ aus einem sehr homogenen Hintergrund mit großen gleichfarbigen Flächen besteht. Da aber immer noch leichte Farbübergänge im Original enthalten sind, werden sie durch die Filterung verringert und damit auch die Dateigröße. Die Filterung macht sich aber subjektiv im Bild kaum bemerkbar, da der Hintergrund beim Video „Karina“ für den Anwender eines Videotelefoniesystems aus weniger interessanten Informationen besteht. Eine weitere Erhöhung des Filterparameters über N>3 würde kaum etwas zur Datenreduktion beitragen und nur unnütz die subjektive Bildqualität verschlechtern. Anders als bei dem Video von Karina verhält es sich mit der Kompressionsrate bei dem Video von Akiyo. Dieses Video besteht aus 300 Bildern, und das unkomprimierte Original hat eine Dateigröße von 45.619.200 Bytes (3,8 Mbit/s). Wie der Abbildung 6.5 zu entnehmen ist, sinkt die Dateigröße bei zunehmendem Binomialfilter-Wert N des codierten Videos nicht so schnell wie vergleichsweise beim Video „Karina“. Die Größe reduziert sich bei N=2 gerade um 30% (~53 Kbit/s) und bei N=5 um 40% (~35 KBit/s). 800000

Dateigröße (Bytes)

700000 600000 500000 400000 300000 200000 0

1

2

3

4

5

6

7

8

9

10

11

Binomialfilter-Wert (N)

Abbildung 6.5 : Dateigröße des Videos „Akiyo“ bei unterschiedlichen Binomialfilter-Werten N Die schlechtere Komprimierbarkeit des Videos „Akiyo“ gegenüber dem Video „Karina“ liegt an dem bewegten und objektreichen Hintergrund. Durch die Bewegungen der Menschen im Hintergrund entstehen verstärkt höhere Frequenzen im transformierten Fehlerbild. Diese lassen sich erst durch einen höheren Filterwert abschwächen. Ist der

- 36 -

Hintergrund allerdings zu stark verschwommen, so ist der Übergang zum Gesichtsrechteck sehr abrupt. Ideal wäre es, den Hintergrund komplett auszublenden, allerdings würde das Bild dann sehr unnatürlich wirken. Im nächsten Schritt werden die objektiven Qualitätsunterschiede ermittelt. Dazu wird zu jedem unterschiedlich stark gefilterten komprimierten Video und dem ungefilterten unkomprimierten Originalvideo der PSNR-Wert berechnet. Diese Werte zeigen, wie schnell die Bildqualität mit zunehmender Filterstärke abnimmt (Abbildung 6.6a). Zusätzlich werden noch die PSNR-Werte der gefilterten komprimierten Bilder mit dem ungefilterten komprimierten Original verglichen (Abbildung 6.6b). In der Grafik sind jeweils die PSNR-Werte von Gesicht, Hintergrund und Gesamtbild extra aufgeführt. Wie nicht anders zu erwarten ist, sinkt die Bildqualität im Hintergrund und im Gesamtbild. Die Qualität im Gesichtsbereich bleibt aber nahezu konstant. Diese Schlussfolgerung gilt sowohl für Abbildung 6.6 als auch für Abbildung 6.7.

Gesamtbild

Gesichtsbereich

Hintergrund

20 PSNR (dB)

18 16 14 12 10 1

2

3

4

5

6

7

8

9

10

Binomialfilter-Wert (N)

Abbildung 6.6a : Objektive Qualitätsunterschiede des Videos „Karina“ bei QP=10; Vergleich des ungefilterten unkomprimierten Videos mit dem komprimierten Video bei unterschiedlichem Filtergrad N

- 37 -

11

PSNR (dB)

20

15

10 1

2

3

4

5 6 7 Binomialfilter-Wert (N)

8

9

10

11

Abbildung 6.6b : Objektive Qualitätsunterschiede des Videos „Karina“ bei QP=10; Vergleich des ungefilterten komprimierten Videos mit dem komprimierten Video bei unterschiedlichem Filtergrad N

19 18 17 PSNR (dB)

16 15 14 13 12 11 10 9 1

2

3

4

5

6

7

8

9

10

11

12

Binomialfilter-Wert (N)

Abbildung 6.7a : Objektive Qualitätsunterschiede des Videos „Akiyo“ bei QP=10; Vergleich des ungefilterten unkomprimierten Videos mit dem komprimierten Video bei unterschiedlichem Filtergrad N

- 38 -

18 17

PSNR (dB)

16 15 14 13 12 11 10 1

2

3

4

5

6

7

8

9

10

11

Binomialfilter-Wert (N)

Abbildung 6.7b : Objektive Qualitätsunterschiede des Videos „Akiyo“ bei QP=10; Vergleich des ungefilterten unkomprimierten Videos mit dem komprimierten Video bei unterschiedlichem Filtergrad N In der nächsten Versuchsreihe soll gezeigt werden, wie sich die Qualität im Gesichtsbereich verbessert, wenn das Originalvideo und das gefilterte Video die gleiche Dateigröße und somit die gleiche Bandbreite für die Übertragung besitzen. Dazu werden beide Videos mit einem festen Filter-Wert N=4 vorverarbeitet und mit ihren Originalen bei unterschiedlichem Quantisierungsparameter QP verglichen. In Abbildung 6.8a ist die Dateigröße das Originalvideos „Karina“ der Dateigröße des gefilterten Videos bei verschiedenen Quantisierungsparametern gegenübergestellt. Die Abbildung 6.8b zeigt die Qualitätsunterschiede des Videos. Dabei ist nur eine PSNR-Reihe des Gesichtsfeldes von Karina aufgetragen, da sich dieses im gefilterten Video nur unwesentlich vom ungefilterten unterscheidet. Um die Qualität der Videos vergleichen zu können, werden bei etwa gleicher Dateigrösse die PSNR-Werte gegenübergestellt. Aus dem Beispiel in Tabelle 6.1 ist ersichtlich, dass sich die Qualität des Gesichtes beim gefilterten Video verbessert hat, da der PSNR-Wert für das Gesicht des gefilterten Bildes größer ist als für das des ungefilterten. PSNR (dB)

PSNR (dB)

Gesamtbild

Gesicht

Dateigrösse (kByte)

Original, QP=13

37,96

25,1

167

Gefiltert, QP=7,N=4

36,46

27,3

169

Tabelle 6.1 : Qualtätsvergleich für das Video „Karina“

- 39 -

Dateigröße (Bytes)

Originalvideo

Gefiltertes Video

1000000 900000 800000 700000 600000 500000 400000 300000 200000 100000 0 1

3

5

7

9

11

13

15

17

19

21

23

25

27

Quantisierungsparameter (QP)

Abbildung 6.8a : Vergleich der Dateigröße des Originalvideos „Karina“ und des gefilterten Videos „Karina“ bei konstantem Filterparameter N=4 Originalbild Gesamtbereich

Gesichtsbereich

Gefiltertes Bild Gesamtbereich

60 55

PSNR (dB)

50 45 40 35 30 25 20 1

3

5

7

9

11 13 15 17 19 21 23 25 27 29 31 Quantisierungsparameter (QP)

Abbildung 6.8b : Vergleich der PSNR-Werte des Originalvideos und des gefilterten Videos „Karina“ bei konstantem Filterparameter N=4

- 40 -

Originalvideo

Gefiltertes Video

Datengröße (Bytes)

3000000 2500000 2000000 1500000 1000000 500000 0 1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

Quantisierungsparameter (QP)

Abbildung 6.9a : Vergleich der Dateigröße des Originalvideos „Akiyo“ und des gefilterten Videos „Karina“ bei konstantem Filterparameter N=4

Originalbild Gesamtbereich

Gesichtsbereich

Gefiltertes Bild Gesamtbereich

55 50 PSNR (dB)

45 40 35 30 25 20 1

3

5

7

9

11 13 15 17 19 21 23 25 27 29 31 Quantisierungsparameter (QP)

Abbildung 6.9b : Vergleich der Dateigröße des Originalvideos „Akiyo“ und des gefilterten Videos „Karina“ bei konstantem Filterparameter N=4

- 41 -

Die gleiche Qualitätsverbesserung des Gesichtsbereiches ist auch in dem Video von Akiyo zu beobachten. Die Daten für die Dateigröße und der PSNR-Werte sind Abbildung 6.9a und Abbildung 6.9b entnommen. Ein Beispiel dafür ist in Tabelle 6.2 aufgeführt. PSNR (dB)

PSNR (dB)

Gesamtbild

Gesicht

Dateigrösse (kByte)

Original, QP=17

34,1

28,8

386

Gefiltert, QP=13, N=4

36,46

27,3

385

Tabelle 6.2 : Qualtätsvergleich für das Video „Akiyo“ Abschließend kann gesagt werden, dass schon kleine Filtereinstellungen, die subjektiv kaum wahrnembar sind, eine deutliche Reduzierung der Dateigröße erzielen können.

- 42 -

7 Implementierung eines Videokonferenzsystems Im Rahmen der Diplomarbeit ist auch ein kleines Videokonferenzsystem implementiert worden (Abbildung 7.1). Dieses basiert auf der oben geschilderten Erweiterung für die Videokompression. Das System läuft auf Microsoft Windows-Rechnern, die DirectX ab Version 8.0 installiert haben. Es wurde in Visual C++ programmiert und benutzt die Windows-API-Funktionen sowie die Advanced Template Library (ATL). Die Videoanwendung (Abbildung 7.2) ist in einen Server und einen Client aufgeteilt, deren Kommunikation über ein TCP/IP-Netzwerk läuft. Der Server erhält sein Bildmaterial von einer Framegrabber-Karte, über die eine Kamera angeschlossen ist. Anschließend wird das Video entsprechend komprimiert und an einen angemeldeten Client übertragen, der es anschließend anzeigt. Wenn sich zwei Teilnehmer oder mehr gegenseitig sehen wollen, dann muss jeder von ihnen einen Server starten und zu jeder teilnehmenden Person eine Verbindung über den Client aufbauen. Server

Client

Abbildung 7.1 : Bildschirmfotos des Programms Die einzelnen Verarbeitungsstufen sind mit DirectX-Show-Filtern programmiert, die wiederum aus COM-Komponenten bestehen. Zur Optimierung einzelner Filterelemente sind diese in MMX-Assembler-Befehle umgesetzt worden. Zur H.263-Komprimierung kommt der in Windows mitgelieferte Codec (Compressor/Decompressor) zum Einsatz, wobei dieser in einem Auswahldialog sehr einfach durch einen MPEG4-, DivX- oder H.261-Codec ersetzt werden kann. - 43 -

Videoquelle Framegrabber mit Kamera

Modell- und segmentbasierte Videokomprimierung

TCP/IP-Server

IP-Netzwerk

TCP/IP-Client und Dekomprimierung

Bildausgabe

Abbildung 7.2 : Aufbau des Videosystems

7.1

DirectX-Show-Filter

Alle Bildverarbeitungsschritte sind aus Komponenten aufgebaut, die nach dem COMPrinzip implementiert sind. Diese Komponenten kapseln die Filterfunktionen als DirectShow-Filter [11]. Sie werden kettenförmig in einen Filtergrafen aneinandergehängt. Diese Filter sind als Klassen implementiert, die von dem Direct-Show-Objekt CtransInPlaceFilter abgeleitet sind. Dieses Objekt ermöglicht den Algorithmen, das Video bilderweise für die Verarbeitung zu erhalten. Jedes Filterelement muss die abgeleiteten Methoden Transform und CheckInputType besitzen. In der Methode CheckInputType werden Informationen wie Bildauflösung und Farbtiefe übermittelt. Diese Methode wird bei der Initialisierung des Filters durch die Filterkette aufgerufen. In der Methode Transform wird der Datenstrom erhalten. Hier findet die eigentliche Bildverarbeitung statt. Damit weitere Einstellungen an den FilterKomponenten vorgenommen werden können, gibt es im COM-Modell die Möglichkeit, sogenannte Schnittstellen (Interfaces) einzubauen. Über sie können zum Beispiel der Binomialfilterwert, Einstellungen für den Gesichtsdetektor oder die Quantisierungsstufe übergeben werden.

- 44 -

Capturefilter

TCP-Client

Gesichtsdetektor

Dekompression

Binomialfilter Videoanzeige H.263-Kompression

TCP-Server Server-Filterkette

Client-Filterkette

Abbildung 7.2 : Filtergraf für Server und Client Um diese Filterobjekte in die Filterkette einzubinden, muss eine Instanz von ihnen angelegt

werden.

Dies

geschieht

beim

COM-Modell

über

die

Funktion

CoCreateInstance. Sie liefert einen Zeiger auf das jeweilige Objekt zurück. Dieser Zeiger muss vom Typ CcomPtr sein. Mit der Funktion AddFilter der Klasse IFChain wird dieser Zeiger der Filterkette übergeben. Anschließend können sie über die Schnittstellen initialisiert werden.

7.2

Video-Codec

Die Videokompression ist als eigenständiger Direct-Show-Filter implementiert. Er erhält den Videodatenstrom über die überladene Funktion Transform. Um die Videokompressions-Codecs von Microsoft nutzen zu können, werden die Funktionen ICCompressGetFormat, ICCompressorChoose, ICCompressorFree, ICSeqCompressFrame und ICSeqCompressFrameStart benötigt, die sich in der Bibliothek Vfw32.lib befinden und in der Header-Datei vfw.h definiert sind. Die nötigen Einstellungen werden in der Struktur COMPVARS vorgenommen. Bevor die Kompression gestartet werden kann, muss erst ein Codec ausgewählt werden. Dies geschieht mit der Funktion ICCompressorChoose. Sie öffnet einen Dialog, in dem verschiedene Videocodierer dem System zur Verfügung stehen und ausgewählt werden können (Abbildung 7.3).

- 45 -

Abbildung 7.3 : Dialog zur Auswahl eines Videocodecs Darüber hinaus können die Komprimierungsqualität und eine feste Periode der Schlüsselbilder eingestellt werden. Zusätzlich bietet der Dialog noch die Möglichkeit, eine bestimmte Datenrate einzustellen. Codecs mit weiterführenden Einstellungen, die von Codec zu Codec unterschiedlich sind, können über den Knopf „Konfigurieren“ aufgerufen werden. Die ausgewählten Optionen werden in der Struktur COMPVARS abgelegt, deren Instanz der Funktion ICCompressorChoose als Zeiger übergeben wird. Die Struktur COMPVARS muss vorher noch mit der Funktion ICCompressGetFormat initialisiert werden. Als Parameter werden ihr zwei BITMAPINFO-Strukturen übergeben, in denen die Eingabe- und Ausgabebilddaten festgelegt sind. Ihre Speicheradressen müssen anschließend in der Struktur COMPVARS abgelegt werden. Nun kann die Komprimierung mit der Funktion ICSeqCompressFrameStart beginnen. Sie erwartet als Übergabeparameter Referenzen auf die Struktur COMPVARS und die Struktur BITMAPINFO der Eingabebilddaten. Mit ICSeqCompressFrame wird anschließend jedes Bild einzeln nacheinander codiert. Dazu verlangt die Funktion eine Referenz auf die Struktur COMPVARS, einen Zeiger auf das zu komprimierende Bild und eine Referenz auf eine Variable des Types Long, indem die resultierende Größe des komprimierten Bildes zurückgegeben wird. Als Ergebnis der Funktion wird ein Zeiger auf die komprimierten Bilddaten geliefert. Diese Daten werden über das TCP/IP-Netz verschickt.

Am

Ende

der

Videokomprimierung

werden

die

Funktionen

ICSeqCompressFrameEnd und ICCompressorFree aufgerufen, die jeweils als Übergabe einen Zeiger auf die Struktur COMPVARS erfordern. Der Client erhält den komprimierten Datenstrom über das TCP/IP-Netz und muss ihn wieder dekomprimieren, bevor er ihn anzeigen kann. Dazu bedient er sich der Funktion

- 46 -

ICImageDecompress. Sie kann ohne vorherige Initialisierung aufgerufen werden. Als Funktionsparameter benötigt sie einen Zeiger auf das komprimierte Bild und einen Zeiger auf die Struktur BITMAPINFO, die die Informationen der Ausgabebilddaten beinhaltet. Die Funktion liefert einen Zeiger auf ein Bitmap zurück, dessen Bilddaten nach der darin enthaltenen BITMAPINFOHEADER-Struktur stehen. Aus den Informationen im BITMAPINFOHEADER und den Bilddaten kann das Bild wieder hergestellt und angezeigt werden.

7.3

TCP/IP-Kommunikation

Die Kommunikation zwischen dem Server und dem Client läuft über das TCP-Protokoll im IP-Netzwerk. Dieses ist durch eine sogenannte Server-Client-Architektur geprägt. Der Server nimmt dabei die Verbindungsanfrage des Clients entgegen. Diese Anfrage wird vom Client an die Adresse des Servers geschickt, die aus einer Internet- und einer Portnummer besteht. Alternativ zur Internetnummer kann auch ein Internetname eingegeben werden, der dann in eine Nummer umgesetzt wird. Die Funktionen für die Datenkommunikation werden Socket-Funktionen genannt, befinden sich bei Visual C++ in der wsock32.lib-Bibliothek und sind in der Header-Datei winsock.h definiert. Bevor diese Funktionen angesprochen werden können, muss unter MS Windows die entsprechende dynamische Bibliothek geladen werden. Dies geschieht mit der Funktion WSAStartup, die als Übergabeparameter die Struktur WSAData erwartet. Soll die Bibliothek wieder aus dem Speicher gelöscht werden, so wird das durch WSACleanUp erledigt. Um Daten senden beziehungsweise empfangen zu können, muss zunächst ein sogenannter Verbindungspunkt (Socket) eröffnet werden. Dies geschieht mit der Funktion socket. Als Parameter erwartet sie Einstellungen zum Transportprotokolltyp und liefert die Nummer des Verbindungsknotens (Socketnummer) zurück. Anschließend wird dieser Knoten mit der Funktion bind, die die Struktur sockaddr_in und die Socketnummer erwartet, initialisiert. In dieser Struktur werden vorher Internet- und Portnummer eingetragen. Handelt es sich um einen Server, so reicht die Nummer des Ports aus, auf dem der Serverdienst auf Anfragen warten soll. Damit der Server überhaupt auf eingehende Verbindungswünsche reagieren kann, muss die Funktion listen aufgerufen werden. Dazu wird wiederum die Socketnummer und die Anzahl der maximal gleichzeitig möglichen Anfragen übergeben. Mit der Funktion

- 47 -

select überprüft der Server, ob irgendwelche Clients eine Verbindung zu ihm aufbauen wollen. Ihr kann ein Zeitintervall übergeben werden, das angibt, wie lange diese Funktion maximal blockiert sein soll. Ist ein Client gefunden, der sich anmelden will, so wird die Verbindung mit der Funktion accept aufgebaut. Sie liefert in der Struktur sockaddr_in die notwendigen Informationen des Clients zurück. Der Client benötigt zum Verbindungsaufbau nur zwei Funktionen socket und connect. Zuerst wird, wie auch beim Server, die Funktion socket aufgerufen. Danach wird die eigentliche Verbindung mit der Funktion connect aufgebaut. Ihr werden die Socketnummer und die Struktur sockaddr_in übergeben, in der sich die Internet- und Portnummer des Servers befinden. Nachdem die Verbindung zwischen Client und Server aufgebaut ist, kann die eigentliche Datenübertragung beginnen. Zum Senden wird die Funktion send und zum Empfangen die Funktion recv benutzt. Der Server übergibt der Funktion send außer seiner Socketnummer einen Zeiger auf die Daten und die Länge der komprimierten Videodaten. Der Client empfängt daraufhin die Daten mit der Funktion recv, die ebenfalls als Parameter die Socketnummer des Clients, einen Zeiger auf den Datenpuffer und seine Länge benötigt. Als Rückgabe wird die eigentliche Länge des empfangenen Datenpaketes erhalten. Diese kann kleiner sein als die Größe der zu erwartenden Daten. Deshalb muss diese Funktion so lange wiederholt aufgerufen werden, bis alle Daten nacheinander angekommen sind. Aus diesem Grund ist es notwendig, vorher die zu sendende Datengröße zu übermitteln, damit festgestellt werden kann, ob alle Daten erhalten wurden. Um die Verbindung wieder abzubrechen, reicht es aus, die Funktion close mit der Socketnummer aufzurufen.

- 48 -

8 Zusammenfassung und Ausblick Das Ziel dieser Arbeit bestand darin, den Videocodierer H.263 so zu erweitern, dass er im Videotelefonieeinsatz die Bandbreite des Videos herabsetzt und er sich damit für den Einsatz in Netzwerke mit geringer Bandbreite oder für bandbreitenintensive Anwendungen, wie Videokonferenzsysteme eignet. Das Prinzip der Erweiterung beruht darauf, dass bei der Videotelefonie die Gesichter der Gesprächsteilnehmer die wichtigste Information darstellen und die Umgebung nur sekundär relevant ist. Deshalb wird der Gesichtsbereich mit Hilfe eines Gesichtsdetektors ermittelt und dessen Koordinaten zur Segmentierung des Videobildes übergeben. Im Segmentierer wird die Umgebung mit einem Tiefpassfilter verwaschen, bevor das Bild der Komprimierung übergeben wird. Das Resultat ist eine geringere Bandbreite des Videos bei gleichbleibender Qualität des Gesichtsbereiches. Ein Eingriff in die Quantisierung des H.263-Codierers kann vermieden werden, da es sich bei der Filterung um eine Bildvorverarbeitungsstufe handelt, die extern der H.263Komprimierung vorgeschaltet werden kann und deshalb unabhängig vom verwendeten Videocodierer ist und nicht die Spezifikation des H.263-Standards verletzt. Dabei hat sich herausgestellt, dass schon mit kleinen Filterwerten die Datenmengen um über 30% reduziert werden können, ohne dass die Bildqualität der Umgebung subjektiv schlechter wird. Allerdings hängt dies auch sehr von dem verwendeten Bildmaterial ab. Ein Nachteil bei diesem Verfahren ist die Rechenzeit, die zusätzlich zur Codierung anfällt. Da es sich bei einem Videotelefoniesystem um ein Echtzeitsystem handelt, muss auch die Verarbeitungsgeschwindigkeit sehr hoch sein. Hier summieren sich die Rechenzeiten von Gesichtsdetektor, Filter und Komprimierer. Der Gesichtsdetektor ist schon von vornherein für Echtzeitanwendungen ausgelegt worden. Die Filterung ist bei kleinen Werten fast zu vernachlässigen und der H.263-Codec von Microsoft ist bereits für Videotelefonie vorgesehen. Trotzdem ergeben die Einzelteile zusammengefasst auf einem

700MHz

Intel-Pentium-System

eine

hohe

Latenzzeit,

in

der

die

Videoverarbeitung nicht mehr in Echtzeit ablaufen kann und somit das Video nur noch ruckartig angezeigt wird. Erst auf einem 1GHz-Prozessor läuft das System einigermaßen zufriedenstellend. Die niedrigere Bandbreite wird mit einer höheren Rechenleistung auf der Serverseite erkauft. Beim Client bleibt der Rechenaufwand der Decodierung der

- 49 -

gleiche wie bei der standardmäßigen H.263-Decodierung. Für zukünftige Erweiterungen wäre es denkbar, das Gesicht exakt entlang seiner Kontur auszuschneiden und nicht, wie hier gezeigt wurde, einen ganzen Block, in dem sich zusätzlich nicht relevante Hintergrundinformation befindet. Weiterhin könnten noch andere Modelle außer dem Gesichtsmodell eingefügt werden, die speziell für andere Anwendungen zum Einsatz kämen. Sollen aber die Daten für die Videokomprimierung noch weiter reduziert werden, so wird es unumgänglich sein, ein komplexeres Modellkonzept zu entwickeln. Es bedarf dann nicht mehr allein der Gesichtsdetektion zur Lokalisation der Gesichter, sondern zur automatischen Generierung eines 3D-Modelles der Personen und deren Textur, die nur einmal mit dem Videostrom übertragen werden. Eine spezielle Gestikdetektion erkennt dann die Lage des Kopfes im Raum und die Gesichtszüge. Nur diese Informationen, die aus ein paar Bytes bestehen, werden dann bei der Decodierung benötigt. Sie verformen das 3D-Modell und projizieren die Textur darauf. Dieses Modell wird dann anstelle des Kopfes in das Bild kopiert. Doch bis solche Systeme einsatzbereit und erprobt sind, muss auf einfachere Konzepte zurückgegriffen werden, wie zum Beispiel auf das in dieser Arbeit vorgestellte.

- 50 -

Anhang A. Faltung Wie die Faltung eines Bildes genau funkioniert, soll hier an einem Beispiel erläutert werden. Das Ausgangsbild ist 5x5 Pixel groß, und die Maske umfasst 3x3 Einträge. Die Pixelwerte des Bildes (zum Beispiel Grauwerte von 0 bis 255) werden durch die Buchstaben a bis y symbolisiert (siehe Abbildung A.1)

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

*

-1

0

1

-2

0

2

-1

0

1

=

Faltungsoperator K

Ausgangsbild G

g’

h’

i’

l’

m’

n’

q’

r’

s’

Ergebnisbild I

Abbildung A.1 : Faltung des Bildes Die Maske des Faltungsoperators K wird über das Bild geschoben, beginnend an der oberen linken Ecke. Die neun Werte der Maske werden mit den darunterliegenden Werten multipliziert: -1·a, 0·b, 1·c, -2·f, 0·g, 2·h, -1·k, 0·l, 1·m. Die einzelnen Produkte werden anschließend aufsummiert: S = –a + c –2f +2h –k + m. Der Faltunksoperator K besteht aus einem Mittelpunkt und einem Rand. Dabei richtet sich das Augenmerk auf den Mittelpunkt. Die zuvor berechnete Summe wird dem Punkt zugewiesen, der sich im Ausgangsbild unter dem Mittelpunkt des Operators befindet: g’ = S. Anschließend wird die Maske um ein Pixel nach rechts verschoben und der nächste Faltungswert berechnet. Dies wird solange wiederholt, bis alle Mittelpunktswerte berechnet sind (Abbildung A.2).

- 51 -

-1

a

-2

f

-1

0

b

0

g

0

1

c

2

h

1

d

e

a

i

j

f

k

l

m

n

o

k

p

q

r

s

t

u

v

w

x

y

-1

0

b

c

f

g

h

k

l

m

n

p

q

r

u

v

w

-2 -1

d

b

f

g

k

l

p

q

r

u

v

w

-1

-2 -1

c

0

h

0

m

0

-2 g

-1 q

r

s

t

u

v

w

x

y

h’=(d+2i+n)-(b+2g+l)

1

-1 f

g

o

1

-2 k

l

s

t

-1 p

q

x

y

u

v

d

1

j

b

0 0 0

c

d

e

i

j

n

o

r

s

t

w

x

y

1

h

2

m

1

l’=(h+2m+r)-(f+2k+p)

e

a

b

c

d

j

f

g

-1 h

i

o

k

l

s

t

p

q

x

y

u

v

1

i

2

n

1

j

p

2

0

0

2

i

e

o

a

0

0

h

1

d

n

e

i

0

c

m

i’=(e+2j+o)-(c+2h+m)

a

b

l

g’=-a+c-2f+2h-k+m

a

-1

m’=(i+2n+s)-(g+2l+g)

-2 m

-1

0 0

n

0

1

j

2

o

1

r

s

t

w

x

y

n’=(j+2o+t)-(h+2m+r)

- 52 -

e

a

b

c

d

e

a

b

c

d

e

f

g

h

i

j

f

g

h

i

j

n

o

k

-1 l

0

s

t

p

-2

0

x

y

u

-1

0

-1

k

-2

p

-1

u

0

l

0

q

0

v

1

m

2

r

1

w

q’=(m+2r+w)-(k+2p+u)

a

b

c

d

e

f

g

h

i

j

k

l

p

q

u

v

-1 m

-2 r

-1 w

0

n

0

s

0

x

q v

m r

w

1

n

2

s

1

x

r’=(n+2s+x)-(l+2q+v)

1

o

2

t

1

y

s’=(o+2t+y)-(m+2r+w)

Abbildung A.2 : Faltungsvorgang in Einzelschritten

- 53 -

o t y

B. Kontrast- und Helligkeitsanpassung Eine Veränderung des Kontrastes und der Helligkeit tritt dadurch ein, dass die Grauwertskala linear skaliert oder gedehnt wird. Dies kann durch die Transformation A(x,y)=u·B(x,y)+v geschehen. Die Konstante u verändert den Kontrast und die Konstante v die Helligkeit. Eine Erhöhung der Konstante u>1 vergrößert den Kontrast, während eine Reduzierung u 255  A( x, y ) =  0, u ⋅ B( x, y ) + v < 0  u ⋅ B( x, y ) + v, sonst  Formel B.1 : Transformation des Grauwertebereiches In der Praxis besitzt ein Graubild meist einen minimalen Grauwert Bmin und einen maximalen Grauwert Bmax, die im Ausgabebild auf den Grauwertbereich zwischen Amin und Amax abgebildet werden sollen (Formel B.3).

A( x, y ) =

Amax − Amin ⋅ ( B( x, y ) − Bmin ) + Amin Bmax − Bmin

Formel B.2 : Transformation in der Praxis Die Umsetzung dieser Transformation erfolgt als Nachschlagetabelle der AbbildungsKennlinie. Dabei wird jeder Eingangsgrauwert Ge auf einen Ausgangsgrauwert Ga abgebildet. Ga Amax

Amin Bmin

Bmax

Abbildung B.1 : Abbildungs-Kennlinie

- 54 -

Ge

C. Huffmancodierung - DCT-Koeffizienten, wie sie in einem transformierten Bild vorkommen: 500, 1200, 1000, 1000, 500, 300, 1000, 1200, 500, 200 - Häufigkeiten der einzelnen DCT-Koeffizienten DCT-Koeffizienten:

200

300

1200

500

1

1

2

3

200

300

1200

500

1

1

2

3

Knoten mit Häufigkeiten:

1100 3

- Aufbau des Baumes 1)

0

1100 3

1 2

200

300

1200

500

1

1

2

3

2)

0

1100 3

1 1

2 0 4 200

300

1200

500

1

1

2

3

3)

0

1

1100 3

0

1

1

2

6

0 4

4)

200

300

1200

500

1

1

2

3

0

1

1100 3

0

1

1

2

6

0 1

4 0 - Umcodierung: aus wird

10

500, 1200, 1000, 1000, 500, 300, 1000, 1200, 500, 200 10, 01, 11, 11, 10, 001, 11, 01, 10, 000

- 55 -

Literaturverzeichnis [1]

http://www.umts-report.com/index.php4?seite=thema&thema=28

[2]

http://www.mathematik.uni-marburg.de/~dippel/rk2/rk08.pdf

[3]

http://www.openh323.org/

[4]

http://www.eu.microsoft.com/downloads/

[5]

Bernhard Fröba, Christian Küblbeck, „Real-Time Face Detection using Edge-Orientation

Matching“,

Visual

Communications

And

Image

Processing Volume 4310, 24.1.2001 [6]

Harald Fuchs, „Regelung der Bitrate und Bitverteilung prädikativer VideoHybrid-Codierer“, Diplomarbeit FHG-IIS, 1997

[7]

Gerd Eyding, „Qualitätsoptimierte örtliche Bitverteilung für die H.263 Videocodierung“, Diplomarbeit FHG-IIS, 1999

[8]

Bernd Menser, Mathias Wien, „Automatic Face detection and Tracking for H.263 Compatible Region-of-Interest Coding“, Technische Hochschule (RWTH) Aachen http://www.ient.rwth-aaden.de/forschung/bebi/facedetection/

[9]

Joachim Wagner, „Objekterkennung durch größenunabhängige Merkmale“, http://www.informatik.uni-frankfurt.de/asa/SemSS01

[10]

Telenor Research and Development Norwegen; http://www.nta.no/brukers/DVC

[11]

Andreas

Backhaus,

„Technische

Dokumentation

zum

Echtzeit

Gesichtsfinder Demonstrator“, Technischer Bericht FHG-IIS, 6.3.2002 [12]

http://www.iat.uni-bremen.de/mitarbeiter/nordbruch/research_projects/

- 56 -

Suggest Documents