Die vorliegende Erfindung betrifft ein Verfahren zum Maskieren von
Fehlern in einem Bildsignal, das in einer Makroblock-komprimierten Form übertragen
wird, wobei jeder Makroblock Pixelzeilen und -spalten umfasst, das Verfahren mindestens
die Schritte umfasst des:
- a) Decodierens des übertragenen Bildsignals;
- b) Erkennens eines fehlerhaften Makroblocks;
- c) Klassifizierens des fehlerhaften Makroblocks, um eine Klasse zu erhalten,
welcher der fehlerhafte Makroblock angehört;
- d) Korrigierens des fehlerhaften Makroblocks seiner Klasse entsprechend.
Die vorliegende Erfindung betrifft auch eine entsprechende Vorrichtung
zum Ausführen solch eines Maskierungsverfahrens.
Die vorliegende Erfindung ist besonders relevant für das Korrigieren
von MPEG-komprimierten Videosignalen.
STAND DER TECHNIK
Eines der Ziele einer Videosignalkomprimierung ist eine Übertragung
durch Netze wie z.B. Funkkanäle oder das Internet. Übertragungsfehler
können der optischen Qualität eines decodierten Stroms schaden, und deshalb
sind leistungsfähige Fehlermaskierungsverfahren erforderlich. Eine Fehlermaskierung
kann darin bestehen, fehlende Daten aus einer räumlichen Redundanz zu interpolieren,
die im decodierten Strom gefunden wird, das heisst, einen Makroblock aus einigen
Pixeln um diesen herum zu interpolieren. Mehrere räumliche Maskierungsalgorithmen
können vorhanden sein, die verschiedene Eigenschaften aufweisen. Wenn in einem
Decoder verschiedene Maskierungsalgorithmen verfügbar sind, scheint es angebracht
zu sein, einen Algorithmus zu haben, der in der Lage ist, die Kanteninformation
zu bewahren, und einen anderen, der auf die Wiederherstellung von glatten Variationen
spezialisiert ist. Das Europäische Patent EP
0782347 beschreibt ein Verfahren zum Klassifizieren eines fehlerhaften
Makroblocks in eine monotone Klasse, eine Kantenklasse oder eine Texturklasse, und
zum Korrigieren des fehlerhaften Makroblocks solch einer Klassifikation entsprechend.
Die Klassifizierung berücksichtigt eine vordefinierte Zahl von gültigen
umgebenden Makroblöcken, d.h. (von Makroblöcken), in denen keine Fehler
enthalten sind. Sie umfasst:
- – Das Klassifizieren jedes der gültigen umgebenden Makroblöcke
in eine monotone Klasse, einen Kantenklasse oder eine Texturklasse, wobei die monotone
Klasse einem Makroblock entspricht, in dem keine Kante enthalten ist, die Kantenklasse
einen Makroblock entspricht, in dem eine Kante enthalten ist, und die Texturklasse
einem Makroblock entspricht, in dem mehr als eine Kante enthalten ist;
- – das Klassifizieren des fehlerhaften Makroblocks als die Kantenklasse,
wenn nur ein Paar der gültigen umgebenden Makroblöcke, die einander in
Bezug auf den fehlerhaften Makroblock gegenüberliegen, der Kantenklasse angehört
und eine gleiche Kantenrichtung aufweist, und, andernfalls, entweder als die monotone
Klasse oder die Texturklasse, je nach Zahl der umgebenden Makroblöcke, die
entweder der monotonen Klasse oder die Texturklasse angehören.
Das vorgeschlagene Verfahren der Klassifizierung jedes der umgebenden
Makroblöcke umfasst viele Schritte, einschliesslich einer Varianzberechnung
und einer relativ grossen Zahl von Richtungsprojektionen. Deshalb ist dieses Verfahren
aufwendig und kann für Echtzeitanwendungen auf Prozessoren mit kleinen Ressourcen,
wie z.B. in einem Mobiltelefon, nicht implementiert werden. Darüber hinaus
geht das Verfahren der Klassifizierung des fehlerhaften Makroblocks nach den Klassen
der gültigen umgebenden Makroblöcke von der Annahme aus, dass ein fehlerhafter
Makroblock eine vordefinierte Zahl von umgebenden Makroblöcken hat, was nicht
der Fall sein kann, da zum einen Burstfehler mehrere Reihen von Makroblöcken
umspannen können, und zum anderen ein fehlerhafter Makroblock am Rand eines
Bildes liegen kann.
Eine Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines
wirtschaftlichen Fehlermaskierungsverfahrens und einer entsprechenden Vorrichtung.
Zu diesem Zweck ist ein erfindungsgemässes Fehlermaskierungsverfahren,
wie im einleitenden Absatz beschrieben, dadurch gekennzeichnet, dass:
- i) dieser fehlerhafte Makroblock mindestens einen gültigen umgebenden Makroblock
aufweist, der keinen Fehler enthält;
- ii) dieser Klassifizierungsschritt mindestens die folgenden Unterschritte umfasst:
- – das Berechnen eines Gradienten für jeden gültigen umgebenden
Makroblock, für jedes Pixel einer Zeile oder einer Spalte,
die an den fehlerhaften Makroblock angrenzt, durch Subtrahieren der Werte zweier
aufeinanderfolgender Pixel dieser Zeile oder Spalte;
- – das Auswerten einer Zahl Cdir von Richtungsänderungen
des Gradienten;
- iii) der fehlerhafte Makroblock als eine Kantenklasse klassifiziert wird, wenn
der Absolutwert mindestens eines Gradienten über einem ersten vordefinierten
Schwellenwert liegt, als eine Texturklasse, wenn Cdir völlig positiv
ist und die Zahl der Absolutwerte von Gradienten, die über einem zweiten vordefinierten
Schwellenwert liegen, grösser ist als &agr; multipliziert mit Cdir,
wobei &agr; eine programmierbare Menge ist, und, andernfalls, als ein Rauschen
oder eine monotone Klasse.
Erfindungsgemäss wird eine Klasse eines fehlerhaften Makroblocks
auf sehr wirtschaftliche Weise bestimmt. Tatsächlich werden für solch
eine Bestimmung nur die Pixel berücksichtigt, die zum fehlerhaften Makroblock
direkt benachbart sind. Das heisst, wenn wir die MPEG-4-Norm in Betracht ziehen,
die Makroblöcke aus 16 mal 16 Pixeln verwendet, müssen nur 60 Gradienten
berechnet und mit zwei Schwellenwerten verglichen werden, um die Klasse des fehlerhaften
Makroblocks zu bestimmen, in einem Fall, wo die vier Makroblöcke, die die fehlerhaften
Makroblöcke umgeben, gültig sind, das heisst, keine Fehler enthalten.
Zudem kann der Klassifizierungsschritt auf jeden fehlerhaften Makroblock angewandt
werden, ungeachtet der Zahl der gültigen umgebenden Makroblöcke, solange
dieser fehlerhafte Makroblock mindestens einen gültigen umgebenden Makroblock
aufweist. Deshalb können die anderen Makroblöcke mit diesem Maskierungsverfahren
auf rekursive Weise maskiert werden, solange in einem Bild ein gültiger Makroblock
vorhanden ist.
In einer bevorzugten Ausführungsform verwendet der Korrekturschritt
einen Algorithmus, der mit einer vorgegebenen Wahlfolge aus einem Satz Algorithmen
gewählt wird, wobei dieser Satz und/oder diese Wahlfolge je nach Klasse des
fehlerhaften Makroblocks unterschiedlich ist. Dieser bevorzugten Ausführungsform
entsprechend wird ein bester verfügbarer Algorithmus gewählt, um einen
Makroblock einer bestimmten Klasse zu korrigieren. Wenn dieser Algorithmus aus irgendeinem
Grund nicht fähig ist, den fehlerhaften Makroblock zu maskieren, wird ein anderer
Algorithmus versucht, und so weiter.
In einer anderen bevorzugten Ausführungsform ist der erste Algorithmus
in der Wahlfolge ein Algorithmus Medge, der in der Lage ist, die Kanteninformation
zu bewahren, wenn der fehlerhafte Makroblock der Kantenklasse oder der Texturklasse
angehört, und ein Algorithmus Msmooth, der auf die Wiederherstellung von glatten
Variationen spezialisiert ist, wenn der fehlerhafte Makroblock der Rauschklasse
oder der monotonen Klasse angehört.
In einer Ausführungsform ist Medge eine quadrilineare Interpolation.
In einer anderen Ausführungsform ist Msmooth eine möglichst
glatte Interpolation.
Die vorliegende Erfindung betrifft auch ein Computerprogramm, umfassend
einen Satz Anweisungen, die, wenn sie in einen Prozessor oder Computer geladen werden,
den Prozessor oder Computer veranlassen, das nachstehend beschriebene Maskierungsverfahren
auszuführen.
Diese und andere Aspekte der Erfindung gehen aus den Ausführungsformen
hervor, die im folgenden beschrieben werden.
Die Erfindung wird nun beispielhaft Bezug nehmend auf die beiliegenden
Zeichnungen ausführlich beschrieben, wobei:
1 ein Blockdiagramm eines erfindungsgemässen Verfahrens
zeigt;
2a eine Berechnung von Gradienten veranschaulicht;
2b eine Klassifikation auf der Basis von berechneten
Gradienten zeigt;
3a ein erfindungsgemässes Verfahren zeigt, das
auf einen Makroblock der Kantenklasse angewandt wird;
3b ein erfindungsgemässes Verfahren zeigt, das
auf einen Makroblock der Texturklasse angewandt wird;
4a ein erfindungsgemässes Verfahren zeigt, das
auf einen Makroblock der Rauschklasse angewandt wird;
4b ein erfindungsgemässes Verfahren zeigt, das
auf einen Makroblock der monotonen Klasse angewandt wird;
5 eine Tabelle ist, die einen Satz Algorithmen und
ein Wahlfolge für jede Klasse angibt.
Ein erfindungsgemässes Maskierungsverfahren wird in
1 dargestellt. Solch ein Verfahren umfasst mindestens
einen Decodierschritt 102, der auf ein übertragenes Bildsignal
101 angewandt wird, einen Erkennungsschritt 103, einen Gradientenberechnungsschritt
104, einen ersten Vergleichsschritt 105, einen zweiten Vergleichsschritt
106, einen Auswertungsschritt 107, einen Klassifizierungsschritt
108 und einen Korrekturschritt 109.
Im folgenden ist das übertragene Bildsignal 101 ein
MPEG-4-Videosignal, das mit 16·16 Makroblöcken codiert wurde, die jeweils
Pixel mit einem Chrominanz- oder einem Luminanzwert oder beides davon enthalten
(im folgenden bezeichnet der Begriff „Wert" entweder die Chrominanz oder
die Luminanz). Für den Fachmann ist zu ersehen, dass das erfindungsgemässe
Maskierungsverfahren dazu bestimmt ist, mit jeden Signal verwendet zu werden, das
durch eine blockbasierte Verarbeitung codiert wurde.
Im Erkennungsschritt 103 wird ein Makroblock analysiert,
um zu bestimmen, ob er fehlerhaft ist oder nicht. Solch eine Bestimmung ist einem
Fachmann wohlbekannt und ist zum Beispiel im US-Patent
5.455.629 zu finden, das am 12. Februar 1993 unter dem Titel „Apparatus
for concealing errors in a digital video processing system" angemeldet wurde. Wenn
dieser Makroblock fehlerhaft ist, werden Gradienten zwischen zwei aufeinanderfolgenden
Pixeln der angrenzenden Zeilen und Spalten aller gültigen umgebenden Makroblöcken
im Gradientenberechnungsschritt 104 berechnet. Solch eine Berechnung wird
in 2 ausführlich beschrieben. Im ersten Vergleichsschritt
105 werden Absolutwerte der berechneten Gradienten mit einem ersten Schwellenwert
verglichen, und die Zahl N1 von Gradienten im Absolutwert über dem ersten Schwellenwert
wird bestimmt. Im zweiten Vergleichsschritt 106 werden Absolutwerte der
berechneten Gradienten mit einem zweiten Schwellenwert verglichen, und die Zahl
N2 von Gradienten im Absolutwert über dem zweiten Schwellenwert wird bestimmt.
Im Auswertungsschritt 107 wird eine Zahl Cdir von Richtungsänderungen
des Gradienten bestimmt. Im Klassifizierungsschritt 108 wird eine Klasse
des fehlerhaften Makroblocks den Werten von N1, N2 und Cdir entsprechend
bestimmt. Im Korrekturschritt 109 wird der fehlerhafte Makroblock seiner
Klasse entsprechend korrigiert.
2a veranschaulicht eine Berechnung von Gradienten.
Dieses Diagramm zeigt einen fehlerhaften 8·8 Makroblock, der vier gültige
umgebende Makroblöcke aufweist. Die Pixel des fehlerhaften Makroblocks sind
durch unterbrochene Linien dargestellt. Nur die zwei angrenzenden Zeilen der oberen
und unteren umgebenden Makroblöcke und die zwei Spalten der linken und rechten
umgebenden Makroblöcke werden für die Berechnung des Gradienten berücksichtigt.
Die folgende Tabelle gibt an, wie ein Gradient berechnet wird, und wie eine Richtungsänderung
des Gradienten bestimmt wird. In diesem Beispiel werden vier Pixel 201
bis 204 in Betracht gezogen; die Berechnung ist für alle Pixel der
zwei angrenzenden Zeilen und Spalten die gleiche, insbesondere für die Pixel
205 bis 207.
- – Grad xxx gibt den Gradienten für ein Pixel xxx an
- – Val xxx gibt den Wert eines Pixels xxx an
Wenn eine Pixelposition durch eine Zeilennummer i und eine Spaltennummer
j dargestellt wird, (gilt):
- – Für ein Pixel einer angrenzenden Zeile an Position (i, j), Grad
(i, j) = Val(i, j + 1) – Val(i, j)
- – Für ein Pixel einer angrenzenden Spalte an Position (i, j), Grad
(i, j) = Val(0 + 1, j) – Val(i, j)
Grad 201
Grad 202
Grad 203
Cdir
Wert
Val 202 – Val 201
Val 203 – Val 202
Val 204 – Val 203
Vorzeichen
> 0
> 0
> 0
0
Vorzeichen
> 0
> 0
> 0
1
Vorzeichen
> 0
0
< 0
1
Vorzeichen
> 0
< 0
> 0
2
2b veranschaulicht eine Klassifikation auf der Basis
von berechneten Gradienten. In Schritt 208 bestimmt der Klassifizierungsschritt
108, ob N1 völlig positiv ist oder nicht. Da der erste Schwellenwert
relativ hoch ist, zeigt die Tatsache, dass N1 völlig positiv
ist, an, dass mindestens eine starke Kante in den gültigen umgebenden Makroblöcken
vorhanden ist. Wenn N1 völlig positiv ist, wird der fehlerhafte Makroblock
daher in Schritt 209 als Kantenklasse klassifiziert. Wenn N1 gleich null
ist, bestimmt der Klassifizierungsschritt 108, ob N2 grösser oder
gleich einer Menge &agr;·Cdir ist, wobei &agr; eine programmierbare
Menge ist. Da der zweite Schwellenwert relativ hoch, aber kleiner ist als der erste
Schwellenwert, zeigt ein Gradient über dem zweiten Schwellenwert eine signifikante
Kante an. Wenn für ein gegebenes Pixel eine Richtungsänderung eines Gradienten
ohne jede starke oder signifikante Kante auftritt, zeigt dies allgemein Rauschen
an. Wenn Cdir völlig positiv ist und N2 grösser oder gleich
der Menge &agr;·Cdir ist, wird der fehlerhafte Makroblock daher
in Schritt 211 als Texturklasse klassifiziert, was bedeutet, dass dieser
Makroblock eine strukturierte Textur ist, mit signifikanten Kanten, die optisch
zu erkennen sein können. Wenn Cdir gleich null ist oder N2 kleiner
als die Menge &agr;·Cdir ist, bedeutet dies, dass die Gradienten
um den fehlerhaften Makroblock herum monoton sind, oder dass im fehlerhaften Makroblock
viel mehr Rauschen als signifikante Kanten vorhanden ist, und der fehlerhafte Makroblock
wird in Schritt 212 als die monotone Klasse oder Rauschklasse klassifiziert.
In 3a bis 4b
sind fehlerhafte Makroblöcke dargestellt, mit ihren zwei angrenzenden Zeilen
und Spalten von gültigen umgebenden Makroblöcken. Luminanzwerte der umgebenden
Pixel sind angegeben, zwischen 0 und 255. In diesen Beispielen ist der erste Schwellenwert
gleich 40, der zweite Schwellenwert ist gleich 10, und die programmierbare Menge
&agr; ist gleich 1,2. Für den Fachmann ist zu ersehen, dass diese Werte leicht
modifiziert werden können, um die bestmöglichen Ergebnisse zu erhalten.
3a veranschaulicht ein erfindungsgemässes Verfahren,
das auf einen Makroblock der Kantenklasse angewandt wird. Die Berechnung der Gradienten
zeigt an, dass zwei Gradienten im Absolutwert über dem ersten Schwellenwert
vorhanden sind, was einer starken Kante entspricht. Daher wird dieser fehlerhafte
Makroblock als die Kantenklasse klassifiziert.
3b veranschaulicht ein erfindungsgemässes Verfahren,
das auf einen Makroblock der Texturklasse angewandt wird. Die Berechnung der Gradienten
zeigt an, dass:
- – N1 = 0 N2 = 28 Cdir = 21
Die Zahl N2 der signifikanten Kanten ist grösser als die programmierbare
Menge &agr; der Zahl der Richtungsänderungen Cdir, und der fehlerhafte
Makroblock wird daher als die Texturklasse klassifiziert.
4a veranschaulicht ein erfindungsgemässes Verfahren,
das auf einen Makroblock der Rauschklasse angewandt wird. Die Berechnung der Gradienten
zeigt an, dass:
- – N1 = 0 N2 = 1 Cdir = 25
Die Zahl N2 der signifikanten Kanten ist kleiner als die programmierbare
Menge &agr; der Zahl der Richtungsänderungen Cdir, und der fehlerhafte
Makroblock wird daher als die Rauschklasse klassifiziert.
4b veranschaulicht ein erfindungsgemässes Verfahren,
das auf einen Makroblock der monotonen Klasse angewandt wird. Die Berechnung der
Gradienten zeigt an, dass:
Der fehlerhafte Makroblock wird daher als die monotone Klasse klassifiziert.
5 ist eine Tabelle, die einen Satz Algorithmen und
eine Wahlfolge für jede Klasse angibt. In einem bestimmten System kann es sein,
dass ein bestimmter Algorithmus nicht verwendet werden kann, zum Beispiel weil:
- – der fehlerhafte Makroblock nicht ausreichend gültige umgebende
Makroblöcke hat; im System nicht genug Speicherressourcen vorhanden sind, um
einen bestimmten Algorithmus zu verwenden;
- – zeitliche Begrenzungen es unmöglich machen, einen bestimmten Algorithmus
zu verwenden.
Deshalb ist für jede Klasse von fehlerhaften Makroblöcken
ein Satz Algorithmen im System verfügbar, mit einer Wahlfolge. Zuerst versucht
das System, einen bestimmten fehlerhaften Makroblock mit Hilfe des ersten Algorithmus
in der Wahlfolge zu maskieren. Wenn dieser Algorithmus für diesen fehlerhaften
Makroblock nicht verwendet werden kann, versucht das System, den Makroblock mit
Hilfe des zweiten Algorithmus in der Wahlfolge zu maskieren, und so weiter. Selbst,
wenn eine Maskierungsqualität mit dem zweiten Algorithmus weniger gut sein
kann als mit dem ersten Algorithmus, ist ein Vorteil der Verwendung solch eines
Satzes Algorithmen darin, dass er fast immer die Maskierung eines fehlerhaften Makroblocks
erlaubt.
Bei einem fehlerhaften Makroblock der Kanten- oder der Texturklasse
ist der erste Algorithmus in der Wahlfolge eine quadrilineare Interpolation. Dieser
Algorithmus besteht darin, der Wert eines fehlerhaften Pixels aus den diesen umgebenden
nächstgelegenen gültigen oberen, linken, unteren und rechten Pixeln zu
interpolieren. Ein Beispiel einer quadrilinearen Interpolation wird im Dokument
mit dem Titel „Temporal and Spatial Error Concealment Techniques for Hierarchical
MPEG-2 Video Codec" von Susanna Aign und Khaled Fazel beschrieben, veröffentlicht
in Proc. Globelcom 95, SS. 1778–1783. Dieser Algorithmus ist dafür bekannt,
dass er gut darin ist, die Kanteninformation in einem fehlerhaften Makroblock zu
bewahren. Der zweite Algorithmus in der Wahlfolge ist eine möglichst glatte
Interpolation. Ein Beispiel einer möglichst glatten Interpolation wird im Dokument
mit dem Titel „Maximally Smooth Image Recovering in Transform Coding" von
Yao Wang, Qun-Fan Zhu und Leonard Shaw beschrieben, veröffentlicht in 'IEEE
Transanctions on Communications, Vol. 41, Nr. 10, Oktober 1993'. Dieser Algorithmus
ist dafür bekannt, dass er gut darin ist, glatte Variationen wiederherzustellen.
Ein dritter Algorithmus in der Wahlfolge ist eine einfache Interpolation, die zum
Beispiel darin besteht, einen fehlerhaften Makroblock durch einen Mittelwert von
gültigen umgebenden Makroblöcken zu ersetzen. Solch eine einfache Interpolation
soll in der Lage sein, die meisten der fehlerhaften Makroblöcke zu maskieren,
selbst wenn die Maskierungsqualität nicht die bestmögliche ist.
Bei einem fehlerhaften Makroblock der Rauschklasse oder der monotonen
Klasse ist der erste Algorithmus in der Wahlfolge eine möglichst glatte Interpolation,
der zweite Algorithmus ist eine quadrilineare Interpolation und der dritte Algorithmus
ist eine einfache Interpolation.
Die Zeichnungen und ihre vorstehende Beschreibung veranschaulichen
vielmehr die Erfindung, statt diese zu einzuschränken. Die folgenden abschließenden
Bemerkungen sind in diesem Sinne zu verstehen.
Es gibt diverse Methoden, um einen fehlerhaften Makroblock zu maskieren,
sobald er klassifiziert worden ist. 5 sieht für
jede Klasse einen Satz Algorithmen vor, der verwendet werden kann, um einen fehlerhaften
Makroblock dieser Klasse zu maskieren. Für den Fachmann ist zu ersehen, dass
andere Algorithmen angewandt werden können, ohne vom Umfang der Erfindung abzuweichen.
Das erfindungsgemässe Maskierungsverfahren kann in einer integrierten
Schaltung implementiert werden, die zum Einbau in eine Settop-Box oder in einen
Fernsehempfänger bestimmt ist. Ein Satz Anweisungen, der in einen Programmspeicher
geladen wird, veranlasst die integrierte Schaltung, das Maskierungsverfahren auszuführen.
Der Satz Anweisungen kann auf einem Datenträger wie z.B. einer Festplatte gespeichert
sein. Der Satz Anweisungen kann vom Datenträger gelesen werden, um in den Programmspeicher
der integrierten Schaltung geladen zu werden, der dann seine Aufgabe erfüllt.
Fig. 1
- 101
- Übertragenes Bildsignal
- 102
- Decodierung
- 103
- Fehlererkennung
- 104
- Gradient
- 105
- Schwellenwert 1
- 106
- Schwellenwert 2
- 107
- Richtungsänderung
- 108
- Klassifizierung
- 109
- Korrektur
Fig. 2b
- 209
- Kante
- 211
- Textur
- 212
- Rauschen oder monoton
5
KANTE
TEXTUR
RAUSCHEN-MONOTON
QUADRILINEAR
QUADRILINEAR
GLATT
GLATT
GLATT
QUADRILINEAR
EINFACH
EINFACH
EINFACH