-
Die
Erfindung betrifft ein Verfahren zur Reduktion von Blockartefakten
an Blockgrenzen digitaler Bildblöcke,
die aus einem Feld von Pels bestehen, wobei eine Mehrzahl von Bildblöcken ein
Bild (Frame) oder Teilbild (Field) bilden, durch Ausführen von Filteroperationen
für jeden
Bildblock des Bildes (Frame) oder Teilbildes (Field), indem auf
eine Filterung einer vertikalen Blockgrenzenspalte des jeweiligen Bildblocks
unmittelbar eine Filterung von horizontalen Blockgrenzen eines Bildblocks
folgt und die Blockgrenzen gleichzeitig sowohl für einen aktuellen Bildblock
als auch für
den an die zu filternde Blockgrenze angrenzenden Bildblock gefiltert
werden.
-
Die
Erfindung betrifft weiterhin eine Einrichtung zur Durchführung eines
solchen Verfahrens.
-
Bei
der digitalen Bildverarbeitung insbesondere nach dem Video-Codierungs-Standard H.264/AVC
ist eine Reduktion von Blockartefakten an Blockgrenzen digi taler
Bildblöcke
vorgesehen. Der H.264/AVC-Standard ist in der ISO/IEC-Norm 14496-10
AVC beschrieben.
-
Eine übersichtliche
Beschreibung des H.264/AVC-Standards findet sich in Th. Wiegand
et al.: Overview of the H.264/AVC Video Coding Standard, in IEEE
Transactions on Circuits and Systems for Video Technology, July
2003, Seiten 1 bis 19. Es wird erläutert, dass ein blockbasiertes
Codieren von Videos Blockartefakte produziert. Diese können sowohl
von der Vorhersage, als auch von den restlichen unterschiedlichen
Codierungsstufen des Decoding Prozesses herrühren. Durch einen adaptiven
Entblockungsfilter in der Decoderschleife zur bewegungskompensierten
Vorhersage kann die Bildqualität
verbessert werden.
-
Die
Bildblöcke
sind im H.264/AVC-Standard als Blöcke mit 4 × 4 Pels definiert. Ein Bild
besteht dabei aus zugeordneten Teilbildern mit Luminanz und Chrominanz-Farbrepräsentationen.
Die Chrominanzkomponente hat eine Anzahl von einem viertel der Anzahl
von Abtastpunkten der Luminanzkomponente. Die Auflösung eines
Abtastwertes beträgt
8 Bit.
-
Bei
dem adaptiven Entblockungsfilter zur Reduktion der Blockartefakte
wird die Filterstärke durch
die Werte verschiedener Syntaxelemente gesteuert und ist im wesentlichen
abhängig
von der Differenz der Pels einer Blockgrenze zwischen einem aktuellen
Bildblock und dem angrenzenden Bildblock sowie der Differenz der
Pels des aktuellen Bildblocks an der Blockgrenze und der Pels des
angrenzenden Bildblocks an der Blockgrenze. Diese Differenzen werden
jeweils mit Schwellwerten verglichen, um Bedarfsweise eine Filterung
durchzuführen.
-
Aus
P. List et al. Adaptive Deblocking Filter, in: IEEE Transactions
on Circuits and Systems for Video Technology, Vol. 13, No. 7, July
2003, Seiten 614 bis 619 ist ein adaptives Entblockungsfilter zur
Reduktion von Blockartefakten an Blockgrenzen digitaler Bildblöcke für den H.264/MPEG-4
AVC-Videostandard beschrieben. Es wird ein Verfahren zur Bestimmung
von Schwellwerten und Filterung von Pels angegeben.
-
Die
Implementierung des definierten Entblockungsfilteres erfolgt herkömmlicherweise
sequentiell entsprechend des H.264-Standards mit den Schritten:
- a) Berechnen der Blockgrenzenstärke für jede Blockgrenze
zwischen 4 × 4
Pel-Blöcken eines Makroblocks
einschließlich
der Blockgrenzen mit benachbarten Makroblöcken zur linken Seite und oberhalb.
- b) Berechnen der Filterschwellwerte α und β für jede Blockgrenze eines Makroblocks;
- c) Filtern der vier vertikalen Blockgrenzen eines Makroblocks
einschließlich
der Blockgrenzen mit seinem benachbarten Makroblock zur Linken. Dieser
Schritt umfasst das Lesen von vier Pels zur Linken der Blockgrenze
und vier Pels zur Rechten der Blockgrenze aus dem Bild-Hauptspeicher,
das Berechnen aktualisierter Pel-Werte entsprechend der in den Kapiteln
8.7.2.3 oder 8.7.2.4 des H.264/Standards (ISO/IEC 14496-10 AVC)
definierten Regeln und Speichern der aktualisierten Pel-Werte in
dem Bild-Hauptspeicher;
- d) Filtern der vier horizontalen Blockgrenzen eines Makroblocks
einschließlich
der Blockgrenzen mit seinem oberen Nachbar. Dieser Schritt umfasst
das Lesen von vier Pels oberhalb der Blockgrenze und vier Pels unterhalb
der Blockgrenzen aus dem Bild-Hauptspeicher, das Berechnen aktualisierter
Pel-Werte entsprechend
der in den Kapiteln 8.7.2.3 oder 8.7.2.4 des H.264-Standards definierten
Regeln und Speichern der aktualisierten Pel-Werte in dem Bild-Hauptspeicher.
Die in diesem Schritt gelesenen Pel-Werte sollten vorher durch Schritt
c) aktualisiert worden sein;
- e) Iteration durch Wiederholung der Schritte a) bis d) für alle Makroblocks
eines Bilds in Raster-Scan-Reihenfolge.
-
Es
werden also herkömmlicherweise,
wie im H.264-Standard vorgeschlagen, zunächst die vertikalen Blockgrenzen
aller Bildblöcke
eines Makroblocks und dann die horizontalen Blockgrenzen aller Bildblöcke eines
Makroblocks gefiltert.
-
Diese
Vorgehensweise ist für
eine direkte Implementierung in einen Hardware-Datenpfad nicht optimal, da Zugriffe
auf den Bild-Hauptspeicher erforderlich sind, die eine geeignete
Zwischenspeicherung in Hardware-Register oder zugeordnete Speicherblöcke erfordert,
die für
eine Softwareimplementierung nicht verfügbar sind. Zudem werden individuelle
Pels mit 8 Bit verarbeitet, obwohl herkömmliche digitale Signalverarbeitungsprozessoren
32 Bit oder mindestens 16 Bit in Echtzeit bearbeiten könnten. Zudem
wird bei den herkömmlichen
Verfahren das Potential der Parallelverarbeitung nicht genutzt.
-
In
Yu-Wen Huang et al.: Architecture Design for Deblocking filter in
H.264/JVT/AVC, in: Proceedings IEEE International Conference on
Multimedia & Expo
(ICME), Baltimore, MD 2003, Seiten I-693-696 ist ein in Hardware
realisiertes Entblockungsfilter mit zwei lokalen Speicherblöcken, zwei
4 × 4 × 8 Bit
Feldregistern zur Zwischenspeicherung und einem Parallelfilter zur
parallelen Filterung von 8 Pel pro Taktzyklus beschrieben. Die Anzahl
von Taktzyklen zur Entblockung eines Makroblocks beträgt je nach
gewählter
Datenpfadvariante 614 bis 878, wobei das Minimum bei den gegebenen
Filterressourcen 128 sein würde
(4 horizontale und 4 vertikale Blockgrenzen pro Makroblock mit jeweils
16 Pels, d. h. (4 + 4) × 16 =
128 Filteroperationen).
-
Der
Unterschied zwischen der gesamten und der minimalen Anzahl von Taktzyklen
liegt zwischen 614 – 128
= 468 und 878 – 128
= 750. Während
dieser Taktzyklen tritt nur ein Datentransfer zwischen Bild-Hauptspeicher,
lokalem Speicher und den Feld registern auf. Diese Übertragungen
erfordern unnötige
Zeit (Taktzyklen) und Energie. Die Nutzung der Ressourcen der Parallelfilter
liegt zwischen 128:614 = 20,8% bis 128:878 = 14,6%. In der verbleibenden, gemeinsam
genutzten Zeit sind die Rechenkapazitäten ungenutzt. Die geringen
Nutzungsgrade zeigen eine ineffiziente Nutzung der Ressourcen.
-
In
der
EP 1 439 711 A2 ist
ein Verfahren zur Reduktion von Blockartefakten in einer pipelineartigen
Organisation mit hintereinander geschalteten vertikalem Blockgrenzenprozessor
und horizontalem Blockgrenzenprozessor beschrieben.
-
Die
US 2004/0184549 A1 offenbart ein Verfahren zur Reduzierung des Berechnungsaufwandes innerhalb
eines Parallelfilters zur Reduktion von Blockartefakten.
-
In
SIMA, M.; ZHOU, Y.; ZHANG, W.: An efficient architecture for adaptive
deblocking filter of H.264/AVC video coding. IEEE Trans. On Consumer Electronics,
Vol. 50, No. 1, Februar 2004, Seiten 292 bis 296, ist ein Verfahren
und eine Vorrichtung zur Reduktion von Blockartefakten beschrieben,
die einen Parallelfilter, einen Pufferspeicher sowie zwei Bildblockspeicher
zur Umsortierung der Bilddaten jeweils eines Bildblocks einsetzen.
-
Die
WO 01/54414 A1 beschreibt ein Verfahren zur Filterung von Blockgrenzen
digitaler Bilder derart, dass abwechselnd vertikale Blockgrenzen und
horizontale Blockgrenzen gefiltert werden.
-
In
der
DE 196 04 050
A1 ist ein Verfahren zur Bearbeitung von decodierten Bildblöcken beschrieben,
bei dem die an den Kanten liegenden Kantenpixel eines Bildblocks
mit einem Kantenglättungsfilter gefiltert
werden. Ein gemeinsames Kantenglättungsfilter
kann auch für
Kanten zweier direkt aneinandergrenzende Bildblöcke eingesetzt werden.
-
Aufgabe
der Erfindung ist es, ein verbessertes Verfahren zur Reduktion von
Blockartefakten an Blockgrenzen digitaler Bildblöcke zu schaffen, die aus einem
Feld von Pels bestehen, wobei eine Mehrzahl von Bildblöcken ein
Bild oder ein Teilbild bilden.
-
Aufgabe
der Erfindung ist es weiterhin, eine verbesserte Einrichtung zur
Durchführung
des Verfahrens zu schaffen.
-
Die
Aufgabe wird mit dem Verfahren erfindungsgemäß gelöst durch die Merkmale des Anspruchs
1.
-
Im
Unterschied zu den bekannten Verfahren, bei denen zunächst sämtliche
vertikalen und dann sämtliche
horizontalen Blockgrenzen eines Makroblocks gefiltert werden, werden
abwechselnd vertikale und horizontale Blockgrenzen desselben oder
eines anderen Bildblocks gefiltert. Dabei wird gleichzeitig der
an die Blockgrenze angrenzende Bildblock für die jeweils betrachtete vertikale
oder horizontale Blockgrenze mitbearbeitet und aktualisiert, d.
h. gefiltert abgespeichert.
-
Es
erfolgt ein Einlesen jeweils einer gesamten Zeile eines aktuellen
Bildblocks und einer gesamten Zeile eines angrenzenden Bildblocks
aus Bildblockspeicher zur gleichzeitigen Filterung der vertikalen
Blockgrenzen des aktuellen und des angrenzenden Bildblocks. Dabei
werden die Zeilen der Bildblöcke
nacheinander eingelesen und gefiltert. Anschließend erfolgt ein Einlesen einer
gesamten Spalte desselben oder vorzugsweise des links oberhalb vor dem
früheren
aktuellen Bildblock angeordneten Bildblocks sowie einer gesamten
Spalte eines daran angrenzenden Bildblocks aus Bildblockspeicher
oder Pufferspeicher zur gleichzeitigen Filterung der horizontalen
Blockgrenzen des aktuellen und des angrenzenden Bildblocks. Wiederum
werden nunmehr die Spalten der Bildblöcke nacheinander eingelesen und
gefiltert.
-
Die
Filterergebnisse werden jeweils nach der Filterung einer Spalte
oder Zeile in einen Bildblockspeicher zur Umsortierung spaltenweise
organisierter Bilddaten in zeilenweise organisierte Bilddaten durch
zeilenweises Schreiben einer gefilterten Spalte des Bildblocks in
eine Zeile des Bildblockspeichers zum späteren spaltenweisen Auslesen
zurückgeschrieben.
-
Durch
diese Maßnahme
wird erreicht, dass das Filtern der Blockgrenzen für einen
Makroblock nur 128 Taktzyklen erfordert und für Datenübertragungen keine Taktzyklen
exklusiv reserviert werden müssen.
Die Anzahl der Datentransferzyklen beträgt 128 pro Makroblock. Dies
ist erheblich geringer als die Anzahl von 468 bis 750 Datentransferzyklen
der oben erwähnten
bekannten Hardware-Implementierung.
Die Datenübertragungen
erfolgen parallel zusammen mit den Filtern. Die Nutzung der Ressourcen
des Parallelfilters beträgt
100%.
-
Der
Bildblockspeicher sollte hierfür
ein Schieberegister für
jeweils einen Bildblock sein, mit dem die Bildblockzeilen beziehungsweise
Bildblockspalten wahlweise spalten- oder zeilenweise verschoben
werden können,
wenn eine Bildblockzeile oder Bildblockspalte beispielsweise von
unten oder links in das blockweise organisierte Bildblockregister, beispielsweise
ein zweidimensionales Schieberegister, eingeschrieben wird.
-
Die
Reduktion von Blockartefakten wird vorzugsweise mit den Schritten
durchgeführt
von:
- a) Ermitteln von Filterparametern für jeden
Bildblock;
- b) Filtern der vertikalen Blockgrenzen des aktuell zu filternden
Bildblocks durch zeilenweises
b1) Auslesen der Pels jeweils
einer Zeile des aktuell zu filternden Bildblocks aus einem Hauptspeicher;
b2)
Auslesen der Pels jeweils einer Zeile an den aktuellen Bildblock
im Bild oder Teilbild links angrenzenden Bildblocks aus einem ersten
Blockzwischenspeicher
b3) Filtern der ausgelesenen Pels sowohl
des aktuellen Bildblocks, als auch des angrenzenden Bildblocks an
den Blockgrenzen mit den Filterparametern; und
b4) Schreiben
des gefilterten aktuellen Bildblocks in einen zweiten Blockzwischenspeicher
und des gefilterten angrenzenden Bildblocks in einen ersten Blockzwischenspeicher.
-
Weiterhin
erfolgt vorzugsweise ein Filtern der horizontalen Blockgrenzen desselben
oder eines anderen aktuell zu filternden Bildblocks durch die Schritte:
- c0) Ermitteln der Filterparameter (BS, α, β) für jeden
Bildblock;
- c1) Auslesen der Pels jeweils einer Spalte des aktuell zu filternden
Bildblocks aus dem ersten Blockzwischenspeicher;
- c2) Auslesen der Pels jeweils einer Spalte des an den aktuellen
Bildblock im Bild oder Teilbild oberhalb angrenzenden Bildblocks
aus einem Pufferspeicher für
eine gesamte Bildzeile von Bildblöcken;
- c3) Filtern der ausgelesenen Pels sowohl des aktuellen Bildblocks
als auch des angrenzenden Bildblocks an den Blockgrenzen mit den
Filterparametern;
- c4) Schreiben des gefilterten aktuellen Bildblocks in den ersten
Blockzwischenspeicher und den Pufferspeicher und Schreiben des gefilterten
Bildblocks in den zweiten Blockzwischenspeicher.
-
Die
gefilterten Bilddaten werden aus dem zweiten Blockzwischenspeicher
in den Hauptspeicher zurückgeschrieben.
-
Dabei
erfolgt alternierend das Filtern der vertikalen Blockgrenzen eines
aktuell zu filternden Bildblocks und anschließend das Filtern der horizontalen Blockgrenzen
desselben oder eines anderen aktuell zu filternden Bildblocks. Der
gefilterte angrenzende Bildblock wird vorzugsweise nach dem Filtern
der horizontalen Blockgrenzen aus dem zweiten Blockzwischenspeicher
in den Hauptspeicher übertragen. Dies
erfolgt insbesondere dann, wenn die Bildblöcke eines Bildes oder Teilbildes
(Frame) in einer Raster-Scan-Reihenfolge gefiltert werden, bei der
ein aktueller Bildblock für
die Filterung der horizontalen Blockgrenzen in der Bildblockzeile
unmittelbar oberhalb der Bildblockzeile des vorhergehenden vertikal gefilterten
Bildblocks und in der Bildblockspalte unmittelbar links neben der
Bildblockspalte des vorhergehenden vertikal gefilterten Bildblocks
liegt und die Bildblöcke
jeweils einer Zeile hintereinander mit den vertikalen Blockgrenzen
und alternierend die Bildblöcke
jeweils einer darüber
liegenden Zeile um einen Bildblock versetzt mit den horizontalen
Blockgrenzen gefiltert werden.
-
Die
Filterung eines Bildes oder Teilbildes erfolgt somit zeilenweise
alternierend, wobei die Bildblöcke
einer Zeile eines Bildes oder Teilbildes zur Filterung der vertikalen
Blockgrenzen für
die Bildblöcke einer
darüber
liegenden Zeile hintereinander zur Filterung der horizontalen Blockgrenzen
bearbeitet werden. Für
die Festlegung des aktuellen Bildblocks zur Filterung der vertikalen
und horizontalen Blockgrenzen wird somit zwischen zwei Zeilen gesprungen, wobei
der Bildblock zur Filterung der horizontalen Blockgrenzen eine Zeile
oberhalb und links neben dem Bildblock der für die vorhergehende Filterung der
vertikalen Blockgrenzen liegt.
-
Die
Aufgabe wird weiterhin erfindungsgemäß gelöst durch eine Einrichtung zur
Reduktion von Blockartefakten an Blockgrenzen digitaler Bildblöcke mit
einem Hauptspeicher für
mindestens ein Bild, einen ersten und einen zweiten Blockzwischenspeicher
zum Ablegen der Daten für
jeweils mindestens einen Bildblock, wobei der erste Blockzwischenspeicher
zur Zwischenspeicherung eines Bildblocks mit gerader und eines Bildblocks
mit ungerader Spaltennummer ausgebildet ist, einen Pufferspeicher
für mindestens
eine gesamte Bildzeile von Bildblöcken und ein in ein Horizontal-Parallelfilter
zur Filterung horizontaler Blockgrenzen und ein Vertikal-Parallelfilter zur
Filterung vertikaler Blockgrenzen aufgeteiltes Parallelfilter zur
gleichzeitigen Filterung der Blockgrenzen für einen aktuellen und einen
an die zu filternde Blockgrenze des aktuellen Bildblocks angrenzenden
Bildblock. Eine Steuerungseinheit ist hierbei zur Durchführung des
oben beschriebenen Verfahrens vorgesehen.
-
Die
Vertikal- und Horizontal-Parallelfilter sind so verschaltet, dass
- – ein
erster Eingang des Vertikal-Parallelfilters mit dem zweiten Blockzwischenspeicher
für den
aktuellen Bildblock und ein zweiter Eingang des Vertikal-Parallelfilters
zum Lesen von Bildblöcken
mit dem Hauptspeicher verbunden ist;
- – ein
erster Ausgang des Vertikal-Parallelfilters mit dem ersten Blockzwischenspeicher
und ein zweiter Ausgang des Vertikal-Parallelfilters mit dem zweiten
Blockzwischenspeicher verbunden ist;
- – ein
erster Eingang des Horizontal-Parallelfilters mit dem ersten Blockzwischenspeicher
und ein zweiter Eingang des Horizontal-Parallelfilters mit dem Pufferspeicher
verbunden ist,
- – ein
erster Ausgang des Horizontal-Parallelfilters mit dem Pufferspeicher
und ein zweiter Ausgang des Parallelfilters mit dem ersten Blockzwischenspeicher
rückgekoppelt
ist, und
- – ein
Ausgang des ersten Blockzwischenspeichers zum Schreiben gefilterter
Bildblöcke
mit dem Hauptspeicher verbunden ist.
-
Mit
dieser Ausführungsform
kann die Verarbeitungszeit pro Makroblock auf 64 Taktzyklen durch Verdopplung
der Ressourcen und Nutzung einer Pipeline reduziert werden. Der
erste Blockzwischenspeicher ist dabei dupliziert und wird als doppelter Puffer
alternierend für
geradzahlige und ungeradzahlige Blöcke betrieben, wenn die Blöcke einer
Bildzeile mit aufeinanderfolgenden ganzzahligen Werten nummeriert
werden. Bei dieser Ausführungsform
sind Lese- und Schreibzugriffe auf den externen Bild-Hauptspeicher
in jedem Taktzyklus möglich.
-
Der
erste und zweite Blockzwischenspeicher sind vorzugsweise Schieberegister-Feldspeicher zum
wahlweisen Verschieben von Spalten oder Zeilen mit mehreren Pels
in einem dem Bildblock entsprechenden Datenfeld. Damit ist eine
Umorientierung der Bildblöcke
von zeilen- in spaltenweiser Darstellung zur Anpassung an die Speicherreihenfolge im
Hauptspeicher möglich.
-
Weiterhin
hat die Einrichtung vorzugsweise eine mit den Parallelfiltern verbundene
Einheit zur Berechnung der Filterparameter für jeden Bildblock.
-
Die
Erfindung wird nachfolgend anhand der beigefügten Zeichnungen beispielhaft
näher erläutert. Es
zeigen:
-
1 – eine schematische
Darstellung eines aus Bildblöcken
bestehenden Bildes mit alternierender vertikaler und horizontaler
Filterung von Bildblöcken
zeilenweise über
das gesamte Bild;
-
2 – ein Blockdiagramm
einer ersten Ausführungsform
einer Einrichtung zur Reduktion von Blockartefakten an Blockgrenzen
digitaler Bildblöcke;
-
3 – eine tabellarische
Darstellung der Schreib- und Lesezyklen und Filteroperationen für die Einrichtung
aus 2;
-
4 – Skizze
eines Bildes mit Makroblöcken
und der Reihenfolge bei makroblockweiser Verarbeitung;
-
5 – ein Blockdiagramm
einer zweiten Ausführungsform
einer Einrichtung zur Reduktion von Blockartefakten an Blockgrenzen
digitaler Bildblöcke;
-
6 – ein Blockdiagramm
eines ersten Blockzwischenspeichers als doppelter Puffer für gerade
und ungerade Bildblöcke;
-
7 – eine tabellarische
Darstellung der Schreib- und Lesezyklen und Filteroperationen der Einrichtung
aus 4.
-
Die 1 lässt eine
schematische Darstellung eines Bildes bestehend aus einer Vielzahl
in Zeilen und Spalten angeordneter Bildblöcken 1, 2,... erkennen. Eine
Filteroperation jeweils einer Blockgrenze für einen Bildblock und gleichzeitig
des an die Blockgrenze angrenzenden Bildblocks wird in Raster-Scan-Reihenfolge
zick-zack-artig durchgeführt, indem
die Bildblöcke
einer Zeile hintereinander weg vertikal zur Reduk tion der Blockartefakte
an den vertikalen linken Blockgrenzen des aktuellen Bildblocks abgearbeitet
werden. Die Filterung der horizontalen oberen Blockgrenzen erfolgt
für die
Bildblöcke
der gleichen Zeile bzw. der unteren Blockgrenzen für die Bildblöcke der
darüber
liegenden Zeile. Nach dem Filtern der linken vertikalen Blockgrenzen
eines Bildblocks erfolgt das Filtern der oberen Blockgrenze des links
in derselben Zeile liegenden Bildblocks sowie der unteren Blockgrenze
des darüber
liegenden Bildblocks. Nach Abarbeitung einer Zeile wird die nächstfolgende
Zeile alternierend vertikal und horizontal gefiltert.
-
Der
aktuell zu filternde Block wird dabei aus dem Bild- Hauptspeicher
MM ausgelesen und nach dem Filtern in dem zweiten Blockzwischenspeicher BM2
abgelegt. Der zur vertikalen Filterung an der linken Blockgrenze
angrenzende, d. h. links benachbarte Bildblock befindet sich in
dem ersten Blockzwischenspeicher BM1.
-
Die
Zeile der Bildblöcke
bis einschließlich zum
angrenzenden, links benachbarten Bildblock liegt in einem Pufferspeicher,
der als SRAM für
eine Bildzeile von 4 × 4 – Bildblöcken mit
zwei Ports oder doppelter Lese-/Schreibgeschwindigkeit ausgebildet sein
kann. In dem Pufferspeicher P befinden sich weiterhin bis auf die
untere Blockgrenze bereits gefilterte Bildblöcke der darüber liegenden Zeile von der Spalte
des aktuellen Bildblocks ausgehend bis zur letzten Spalte. Bei der
horizontalen Filterung wird dann der aktuelle Bildblock, der ursprünglich in
dem zweiten Blockzwischenspeicher BM2 abgelegt wurde, in den Pufferspeicher
PM übertragen,
und der links oberhalb von dem aktuellen Bildblock liegende Bildblock
in den Bild-Hauptspeicher als fertig gefilterten Bildblock überführt. Durch
einen Transfer von gefilterten Bilddaten aus dem zweiten Blockzwischenspeicher
BM2 in den ersten Bildspeicher BM1 liegt der fertig gefilterte Bildblock
zwischendurch auch in dem ersten Bildspeicher BM1.
-
Die 2 lässt ein
Blockdiagramm einer ersten Ausführungsform
einer erfindungsgemäßen Einrichtung
zur Reduktion von Blockartefakten an Blockgrenzen digitaler Bildblöcke bestehend
aus 4 × 4 × 8 Bit-Pels
erkennen.
-
Die
Einrichtung hat den ersten Blockzwischenspeicher BM1, dessen Inhalt
wahlweise über einen
ersten Multiplexer MUX1 spaltenweise oder zeilenweise in einen 8
Pel-Parallelfilter
F geladen werden kann. Ein Ausgang des Parallelfilters F ist mit dem
Zeileneingang des ersten Blockzwischenspeichers BM1 verbunden. Dieser
arbeitet als Schieberegister-Feldspeicher, um beim Einschreiben
einer Bildblockzeile von unten die restlichen gespeicherten Bildblockzeilen
nach oben zu schieben oder beim Einschreiben von Bildblockspalten
diese von rechts nach links zu schieben.
-
Der
erste Ausgang des Parallelfilters F ist weiterhin mit dem Pufferspeicher
PM verbunden, dessen Ausgang an einen zweiten Multiplexer MUX2 gelegt
ist. Der Ausgang des zweiten Multiplexers MUX2 ist mit dem zweiten
Eingang des Parallelfilters F verbunden. Ein weiterer Eingang des
zweiten Multiplexers MUX2 ist zum Einlesen von vier Bytes pro Taktzyklus,
d. h. von vier Pels, mit dem Bild-Hauptspeicher MM verbunden.
-
Der
zweite Ausgang des Parallelfilters F ist mit dem Zeileneingang und
dem Spalteneingang des zweiten Blockzwischenspeichers BM2 verbunden. Der
Spaltenausgang des zweiten Blockzwischenspeichers BM2 ist mit dem
Spalteneingang des ersten Blockzwischenspeichers BM1 verbunden und
der Zeilenausgang des zweiten Blockzwischenspeichers BM2 ist mit
dem Hauptspeicher MM zum Einschreiben von vier Bytes, d. h. von
vier Pels per Taktzyklus verbunden.
-
Die
Filterparameter in Form der Schwellwerte α, β und der Blockgrenzstärke BS (Boundary Strength)
werden über
eine Einheit basiert auf Parametern bestimmt, die pro 4 × 4 Bildblock
festgelegt und von der Einrichtung eingelesen werden.
-
Eine
Steuerungseinheit CTRL ist zur Durchführung des nachfolgend beschriebenen
Verfahrens beispielsweise durch geeignete Programmierung eines Signalverarbeitungsprozessors
ausgebildet.
-
Dabei
erfolgt die Filterung der Blockgrenzen für die oberen, d. h. horizontalen
Blockgrenzen und der rechten, vertikalen Blockgrenzen eines aktuellen Bildblocks,
der in den ersten Blockzwischenspeicher BM1 abgelegt ist.
-
Zunächst erfolgt
in einem Schritt a) das Einlesen der notwendigen Filterparameter,
beispielsweise aus einem Makroblock-Definitionspeicher. Die für das bekannte
Filterverfahren erforderlichen Filterparameter von Blockgrenzenstärke BS und
Schwellwertvariablen α, β werden in
bekannter Weise berechnet, wobei der Schritt a) parallel zur Filterung
eines vorhergehenden Blocks z. B. mit einem Pufferspeicher erfolgen
kann.
-
In
einem Schritt b) erfolgt dann die vertikale Filterung der vertikalen
Blockgrenzen des in dem ersten Blockzwischenspeicher abgelegten
Bildblocks bx–1,y.
Ein aktueller Bildblock bx,y wird aus dem
Bild- Hauptspeicher MM ausgelesen. Die Pels für den 4 × 4 Block zur linken des aktuellen
4 × 4
Blocks werden entsprechend aus dem ersten Blockzwischenspeicher
BM1 ausgelesen (bx–1,y). Beide Leseoperationen lesen
vier Pels mit einer Zeile jeweils in einem 4 × 4 Block pro Taktzyklus. Die
vier Pels werden in das Parallelfilter F eingelesen, das 8 Pels
parallel bearbeitet. Das Ergebnis wird von unten nach oben in den
ersten Blockzwischenspeicher BM1 für den zu filternden Block bx–1,y und
in den zweiten Blockzwischenspeicher BM2 für den aktuellen Bildblock bx,y geschrieben. Für die Filterung der vertikalen
Blockgrenzen sind vier Taktzyklen erforderlich.
-
In
einem Schritt c) werden zur Filterung der horizontalen Blockgrenzen
die Pels von rechts nach links aus dem ersten Blockzwischenspeicher
BM1 geshiftet. Die Daten für
den darüber
liegenden 4 × 4 Block
bx–1,y–1 werden
aus dem Pufferspeicher PM zur Abspeicherung einer gesamten Bildblockzeile
ausgelesen. Nach dem Filtern werden die Pels in den Pufferspeicher
PM eingeschrieben, wobei die in diesem Schritt ausgelesenen Daten überschrieben
werden. Zudem werden die resultierenden Pels aus dem Parallelfilter
F in den zweiten Blockzwischenspeicher BM2 von rechts eingeschrieben
und nach links geshiftet. Gleichzeitig werden die Pels aus dem zweiten
Blockzwischenspeicher BM2 in den ersten Blockzwischenspeicher BM1 übertragen
und dort von rechts nach links geshiftet. Damit eine Spalte von
vier Pels aus dem Pufferspeicher PM in einem Taktzyklus gelesen
werden kann, müssen
diese Pels in einem 32 Bitspeicherwort organisiert sein. Die Zeit
zur Durchführung
der Filterung der horizontalen Blockgrenzen beträgt vier Taktzyklen.
-
Die
Pels in dem Blockzwischenspeicher BM2 werden in den Hauptspeicher
MM zurück
geschrieben. Bei diesem Schritt erfolgt ein Shiften von unten nach
oben. Damit dient der zweite Blockzwischenspeicher BM2 als Permutationseinheit,
die die Bilddaten von der spaltenweisen Datenorganisation des Pufferspeichers
PM zur einer zeilenweisen Datenorganisation des Hauptspeichers MM übersetzt.
Der Schritt kann mit der Filterung der vertikalen Blockgrenze für den nächsten Bildblock
(bx+1,y) parallel durchgeführt werden,
so dass keine zusätzlichen Taktzyklen
notwendig sind.
-
Die
Schritte a) bis c) werden in Raster-Scan-Reihenfolge für alle 4 × 4 Luminanzbildblocks
eines Teilbildes (Frame) und dann mit geringfügiger Änderung blockweise für die Chrominanz Cb-Ebene
und schließlich
für die
Chrominanz-Cr-Ebene durchgeführt.
-
Ggf.
sind an den Bildgrenzen (oben, rechts) geringfügige Modifikationen des Verfahrens
notwendig, wenn dort eine Filterung erfolgen soll, da dort die obere
bzw. rechte Kante eines Bildblocks mangels angrenzender Bildblöcke nicht
gefiltert wird.
-
Die 3 zeigt
eine Tabelle der Schreib- und Lesezyklen und der Filteroperation.
-
Mit
bx,y wird ein 4 × 4 Bildblock an einer Bildblockspalte
X und einer Bildblockzeile Y im Bild oder Teilbild bezeichnet. Der
Zusatz ci bezeichnet den Zugriff auf die i-te Spalte von 4 Pels
innerhalb eines Blocks bx,y. Der Zusatz
rj bezeichnet den Zusatz auf die j-te Spalte von 4 Pels innerhalb
eines Blocks bx,y. Bei der Filterung ist
mit ci bzw. ri das Filtern der i-ten Spalte bzw. j-ten Zeile von
zwei angrenzenden 4 × 4 Blocks,
d. h. von 8 Pels bezeichnet.
-
Es
ist deutlich, dass in den Taktzyklen c von 1 bis 4 jeweils eine
Zeile r, r1, r2 und r3 eines aktuellen Bildblocks bx,y aus
dem Hauptspeicher MM ausgelesen wird. Zudem wird auf den links neben
dem aktuellen Bildblock angeordneten Bildblock bx–1,y zugegriffen,
der in dem ersten Blockzwischenspeicher BM1 abgelegt ist. Es erfolgt
ein Filtern jeweils der Zeilen r0, r1, r2 und r3 des aktuellen Bildblocks
bx,y und des links daran angrenzenden Bildblocks
bx–1,y. Der
aktuelle Bildblock bx,y wird in den zweiten
Blockzwischenspeicher und der links daran angrenzende Bildblock
bx–1,y in
den ersten Blockzwischenspeicher BM1 geschrieben.
-
In
den Taktzyklen c von 5 bis 8 erfolgt dann die horizontale Filterung
des links an den aktuellen Bildblock bx,y angrenzenden
Bildblocks bx–1,y und
des darüber
liegenden Bildblocks bx–1,y–1, der aus dem Pufferspeicher
PM ausgelesen wird. Nach der horizontalen Filterung, die in die
Zyklen 5 bis 8 spaltenweise für
die Spalten c0, c1, c2 und c3 hintereinander abgearbeitet wird,
erfolgt ein Schreiben des aktuellen Bildblocks in den ersten Blockzwischenspeicher
BM1 und des Pufferspeichers PM an die Stelle des aus dem Pufferspeicher
vorher ausgelesenen Bildblocks bx–1,y–1.
Der horizontal an seiner unteren Blockgrenze gefilterte Bildblock
bx–1,y–1 wird
in den zweiten Blockzwischenspeicher geschrieben und in den Taktzyklen c
von 9 bis 12 zeilenweise in den Hauptspeicher MM übertragen.
Gleichzeitig können
in den Zyklen 9 bis 12 die Zyklen 1 bis 4 für den nächsten Block bx+1,y rechts
neben dem aktuellen Bildblock bx,y erfolgen. Weiterhin
werden die Bilddaten spaltenweise aus dem zweiten Blockzwischenspeicher
BM2 in den ersten Blockzwischenspeicher BM1 übertragen.
-
Damit
werden zum Entblocken der linken und oberen Blockgrenzen eines 4 × 4 Blocks,
der jeweils 4 Pels lang ist, 8 Zyklen insgesamt benötigt. Pro Makroblock
sind damit 16 × 8
= 128 Taktzyklen C erforderlich. Bei der Nutzung eines 8 Pel-Parallelfilters F
sind die Lese- Schreibzyklen mit 128 Zyklen pro Makroblock optimal.
Die Anzahl von Datenübertragungen
beträgt
nur 128 und das Filtern ist vollständig mit dem Datentransfer
parallelisiert.
-
Zum
Füllen
und Leeren der Pipeline sind 12 oder weniger Zyklen erforderlich.
Im Vergleich zu den Taktzyklen C zur Entblockung eines kompletten
Teilbildes (Frame), zum Beispiel VGA mit 1200 Makroblocks und jeweils
16 4 × 4-Bildblöcken und
8 Taktzyklen pro Bildblock: 1200 × 16 × 8 = 153.600 Taktzyklen, ist
dies vernachlässigbar.
-
Für den Fall,
dass der Pufferspeicher PM mit Taktzyklen verspätet schreibt, ist ein Einzelport-Pufferspeicher
PM ausreichend. Hierfür
ist allerdings ein 4 × 4 × 8 Bit
Puffer erforderlich. Für
den Fall, dass der Hauptspeicher MM durch 4 Taktzyklen verzögert schreibt,
ist ein Einzelport bzw. Einzelbus ausreichend. Dies erfordert allerdings
ein 4 × 4 × 8 Bit
Zwischenspeicher.
-
Ein
Mikroprozessor, der 4 × 4
Blöcke
in vier 32-Bit Register speichert und einen zeilenweisen Zugriff
(4 Bits pro Register) und einen spaltenweisen Zugriff (1 Bit) aus
jedem der 4 Register ermöglicht, kann
das Verfahren direkt implementiert werden.
-
Optional
kann das Entblocken auch makroblockweise an Stelle der in der 1 gezeigten
zeilenweisen Reihenfolge erfolgen. Hierzu ist allerdings ein zusätzlicher
Speicher für
einen 4 × 4
Block zur Linken eines Makroblocks und verschachteltes Bearbeiten
der Luminanz y- und Chrominanz Cb und Cr-Bildblöcke erforderlich. Ein solches
Filter kann in die Decoderpipeline zur Decodierung des Hauptprofil-H.264
Videostroms integriert werden. Die Reihenfolge der makroblockweisen
Verarbeitung ist in der 4 dargestellt.
-
Die 5 lässt eine
zweite Ausführungsform der
erfindungsgemäßen Einrichtung
zur Reduktion von Blockartefakten an Blockgrenzen digitaler Bildblöcke erkennen.
Dabei wird eine Reduktion der Bearbeitungszeit pro Makroblock auf
64 Zyklen durch Verdopplung der Ressourcen und pipelineartige Organisation
erreicht.
-
Das
Parallelfilter F ist in ein erstes Parallelfilter FH zur Filterung
der horizontalen Blockgrenzen und ein zweites Parallelfilter FV
zur Filterung der vertikalen Blockgrenzen aufgeteilt. Weiterhin
ist der erste Blockzwischenspeicher BM1 doppelt zur Zwi schenspeicherung
von geradzahligen und ungeradzahligen Bildblöcken ausgeführt. Der erste Blockzwischenspeicher
BM1 ist in der 6 dargestellt. Hierdurch wird
eine Permutationsfunktionalität
bereitgestellt. Der zweite Blockzwischenspeicher BM2 ist wie in
der ersten Ausführungsform
ein einfacher Zwischenspeicher.
-
Die
Einrichtung ist wie folgt verschaltet:
Ein erster Eingang des
Vertikal-Parallelfilters FV ist mit dem zweiten Blockzwischenspeicher
BM2 für
den aktuellen, zu filternden Bildblock und ein zweiter Eingang des
Vertikal-Parallelfilters FV zum Lesen von Bildblöcken mit dem Hauptspeicher
MM verbunden.
-
Ein
erster Ausgang des Vertikal-Parallelfilters FV ist mit dem ersten
Blockzwischenspeicher BM1 und ein zweiter Ausgang des Vertikal-Parallelfilters
FV mit dem zweiten Blockzwischenspeicher BM2 verbunden.
-
Ein
erster Eingang des Horizontal-Parallelfilters FH ist mit dem ersten
Blockzwischenspeicher BM1 und ein zweiter Eingang des Horizontal-Parallelfilters
FH mit dem Pufferspeicher PM verbunden.
-
Ein
erster Ausgang des Horizontal-Parallelfilters FH ist mit dem Pufferspeicher
PM und ein zweiter Ausgang des Horizontal-Parallelfilters FH mit
dem ersten Blockzwischenspeicher BM1 rückgekoppelt.
-
Ein
Ausgang des ersten Blockzwischenspeichers BM1 ist zum Schreiben
gefilterter Bildblöcke mit
dem Hauptspeicher MM verbunden.
-
Die 6 lässt eine
Tabelle mit den Taktzyklen C für
das Schreiben und Lesen in und aus dem Hauptspeicher MM, dem Pufferspeicher
PM und dem ersten und zweiten Bildspeicher BM1 und BM2 sowie der
Filteroperation F erkennen.
-
Die
Operation für
einen Block mit gerader Spaltenposition x sind ohne Schattierung
und die Operation für
einen Block B mit ungerader Spaltenposition x + 1 schattiert dargestellt.
Es ist erkennbar, dass bei Überlappung
der Taktzyklen 9 bis 16 mit den Taktzyklen 1 bis 8 keine Ressourcenkonflikte
auftreten, auch wenn die Datenpipeline kontinuierlich mit weiteren
Bildblöcken
B beschickt wird.
-
In
dieser Ausführungsform
werden Lese- und Schreibzyklen zum externen Bild-Hauptspeicher MM in jedem Taktzyklus
durchgeführt.
-
Ein
aktueller Bildblock bx,y wird in den Taktzyklen
C von 1 bis 4 zeilenweise aus dem Hauptspeicher MM ausgelesen und
zusammen mit dem aus dem zweiten Blockzwischenspeicher BM2 abgelegten,
links angrenzenden Bildblock bx–1,y vertikal
gefiltert. Der gefilterte aktuelle Bildblock bx,y wird
in den zweiten Blockzwischenspeicher BM2 und der links angrenzende
gefilterte Bildblock bx–1,y in den Bereich für ungerade
Spalten des ersten Blockzwischenspeichers BM1 eingeschrieben.
-
In
den Taktzyklen 5 bis 8 erfolgt sowohl eine Filterung der vertikalen
Blockgrenzen, als auch der horizontalen Blockgrenzen. Für die Filterung
der vertikalen Blockgrenzen werden die Zeilen r0 bis r3 des rechts
neben dem aktuellen Block bx,y gelegenen Blocks
bx+1,y aus dem Hauptspeicher MM ausgelesen.
Für die
Filterung der horizontalen Blockgrenzen werden die Spalten c0 bis
c3 des Blocks bx–1,y–1 aus dem Pufferspeicher
PM und des Blocks bx–1,y aus dem Bereich
für ungerade
Blöcke
(odd) des ersten Blockzwischenspeichers BM1 ausgelesen. Das Ergebnis
der vertikalen Filterung wird für
den aktuellen Block bx,y in den Bereich
für die
geraden Bildblöcke (even)
des ersten Blockzwischenspeichers BM1 und für den Bildblock bx–1,y–1 in
den zweiten Blockzwischenspeicher BM2 geschrieben. Das Ergebnis
der horizontalen Filterung wird für den Bildblock bx–1,y–1 in den
Bereich für
die ungeraden Bildblöcke
(odd) des ersten Blockzwischenspeichers BM1 und für den Bildblock
bx–1,y in
den Pufferspeicher geschrieben.
-
In
den Taktzyklen 9 bis 12, die den Zyklen 1 bis 4 des in der Zeile
folgenden Bildblocks bx+2,y entsprechen
können,
wird der Bildblock bx,y–1 aus dem Pufferspeicher
spaltenweise für
die Spalten c0, c 1, c2 und c3 ausgelesen. Weiterhin wird der aktuelle Bildblock
bx,y spaltenweise aus dem Bereich für die geraden
Bildblöcke
(even) des ersten Blockzwischenspeichers BM1 ausgelesen. Damit erfolgt
dann die Filterung der horizontalen Blockgrenzen für diese beiden
Bildblöcke.
Das Ergebnis wird in den Bereich für die geraden Bildblöcke (even)
des ersten Blockzwischenspeichers BM1 und den Pufferspeicher PM eingeschrieben.
Weiterhin wird aus dem ungeraden Bereich des ersten Blockzwischenspeichers
BM1 der vollständig
gefilterte Block bx–1,y–1 zeilenweise ausgelesen
und in den Hauptspeicher MM übertragen.
-
In
den Taktzyklen 13 bis 16, die den Taktzyklen 5 bis 8 für den Block
bx+2,y sowie den Taktzyklen 1 bis 4 für den Block
bx+3,y entsprechen können, wird aus dem Bereich
für die
geraden Blöcke
(even) des ersten Blockzwischenspeichers BM1 der vollständig gefilterte
Block bx,y–1 zeilenweise
ausgelesen und in den Hauptspeicher MM übertragen.