-
Die vorliegende Erfindung betrifft
ein Verfahren und eine Vorrichtung zum Komprimieren von Datenfeldern
in der Form von digitalen elektrischen Signalen und ist insbesondere,
obwohl nicht notwendigerweise, auf die Kompression von digital codierten Bildsequenzen
anwendbar.
-
Vor kurzem sind eine Anzahl von Techniken zum
Komprimieren von Datenfeldern und insbesondere von zweidimensionalen
Bildern, die z. B. individuelle Bilder oder Rahmen einer Videosequenz
sein können,
vorgeschlagen worden. Einige der Bildkompressionstechniken verwenden
eine so genannte "Vektorquantisierung", bei der ein Codebuch
von Referenzstücken
(z. B. relativ kleine Abschnitte, die aus ein oder mehreren "Bibliotheks"-Bildern genommen sind)
konstruiert wird. Ein zu komprimierendes Bild wird in eine Anzahl
von Bildstücken
aufgeteilt und ein übereinstimmendes
(d. h. ähnliches)
Referenzstück wird
für jedes
Bildstück
aus dem Codebuch gewählt. Der
Codebuchindex für
jedes gewählte
Referenzstück
in dem Codebuch wird gespeichert, zusammen mit den entsprechenden
Positionsvektoren der Bildstücke
(d. h. deren Position in dem ursprünglichen Bild), um eine komprimierte
Darstellung des Bilds bereitzustellen. Diese Komprimierung für jedes
Stück wird
als eine "komprimierte
Codierung" bezeichnet. Vorausgesetzt,
dass eine Kopie des Codebuchs verfügbar ist, kann eine Approximation
des ursprünglichen
Bilds durch Verwenden der gespeicherten Codebuchindizes konstruiert
werden, um den erforderlichen Satz von Referenzstücken wiederherzustellen und
diese in einen Bildrahmen unter Verwendung der jeweiligen gespeicherten
Bildstück-Positionsvektoren
einzufügen.
Der erreichbare Kompressionsgrad ist eine Funktion der Größe der Bildstücke, in
die das Bild aufgeteilt wird, wobei größere Stücke eine höhere Kompression erlauben.
-
Es ist erkannt worden, dass für die meisten Bilder
bestimmte Bereiche eines Bilds mehr Einzelheiten enthalten werden,
als dies andere tun, und dass dann, wenn die Stücke, in die das Bild aufgeteilt ist,
von einer Größe sind,
die dafür
vorgesehen ist, um eine hohe Kompression zu erreichen, die Bereiche
mit Details des Bilds in der komprimierten Darstellung nicht ausreichend
dargestellt werden können.
Es ist deshalb vorgeschlagen worden, dass Gebiete eines Bilds, die
starke Einzelheiten enthalten, durch relativ kleine Stücke dargestellt
werden sollten, während
Gebiete, die relativ wenig oder keine Einzelheiten enthalten, durch
größere Stücke dargestellt werden
sollten. Dieser Prozess beinhaltet das vorübergehende Rekonstruieren eines
Bilds unter Verwendung von großen
Stücken
einer ersten Ebene, die aus dem Codebuch identifiziert werden. Dies stellt
ein Referenzbild bereit, welches in einer schrittweisen Weise verbessert
werden kann. Es sei darauf hingewiesen, dass dieses vorübergehende
Bild eine dekomprimierte Version des 'komprimierten' Bilds darstellt. Um Gebiete mit Einzelheiten
zu identifizieren, die eine Darstellung mit kleineren Stücken erfordern,
wird das entsprechende vorübergehende
Bild, nachdem jedes neue große
Referenzstück
zu dem komprimierten Bild hinzugefügt ist, mit dem ursprünglichen
Bild verglichen, um den Bereich des ursprünglichen Bilds zu identifizieren,
welcher sich maximal von dem vorübergehenden
Bild unterscheidet. Das Bildstück,
das diesen Bereich enthält,
wird dann in kleinere Bildstücke
weiter unterteilt und Referenzstücke
werden aus dem Codebuch für
diese neu erzeugten Bildstücke
identifiziert. Codebuchindizes und Positionsvektoren für die identifizierten
Referenzstücke
werden dann zu der komprimierten Darstellung hinzugefügt. Der
Prozess wird rekursiv wiederholt, bis entweder das vorübergehende
Bild einen gewünschten
Qualitätsgrad
erreicht oder die Datengröße der komprimierten
Darstellung irgendeinen maximalen Schwellenpegel erreicht.
-
Ein Problem mit diesem Ansatz der
maximalen Differenz besteht darin, dass deshalb, weil das Codebuch
notwendigerweise eine endliche Größe aufweist, es in bestimmten
Umständen
extrem schwierig sein kann, eine enge Übereinstimmung für bestimmte
Bereiche eines Bilds aufzufinden. Ein beträchtlicher Verarbeitungszeitbetrag
und Speicherplatz in dem komprimierten Bild kann einer Darstellung
von Bereichen des ursprünglichen
Bilds zugewiesen werden, welches, obwohl es als durch das komprimierte
Bild schlecht dargestellt identifiziert wird, als Folge der Beschränkungen
des Codebuchs niemals in zufrieden stellender Weise dargestellt
werden kann.
-
In der US-A-5457495 ist auch vorgeschlagen worden,
ein vorwärts-adaptives
Codebuchverfahren zu implementieren, bei dem das Codebuch regelmäßig aktualisiert
wird, um die Charakteristiken des Bilds oder eines Bildsatzes, das/der
gerade komprimiert wird, zu enthalten.
-
Es ist eine Aufgabe der vorliegenden
Endung, wenigstens einige der Nachteile von derartigen bekannten
Datenkomprimierungsprozessen zu umgehen oder zu lindern.
-
Es ist eine andere Aufgabe der Erfindung, ein
Datenkompressionsverfahren und eine Vorrichtung bereitzustellen,
die die Qualität
der komprimierten Daten optimiert.
-
In Übereinstimmung mit einem ersten
Aspekt der vorliegenden Erfindung ist ein Verfahren zum Komprimieren
von Datenfeldeinträgen
in der Form von digitalen elektrischen Signalen vorgesehen, wobei
das Verfahren die folgenden Schritte umfasst:
- (a)
Bereitstellen eines Referenzdatenfelds als eine erste Approximation
für das
ursprüngliche Datenfeld,
welches komprimiert werden soll;
- (b) Aufteilen des ursprünglichen
Datenfelds in eine Vielzahl von Blöcken von ein oder mehreren Größen;
- (c) für
jeden Datenblock, Bestimmen, in Übereinstimmung
mit einem vorgegebenen Codierungsprozess, einer komprimierten Codierung
der Daten, die darin enthalten sind, wobei die komprimierte Codierung
dekomprimiert werden kann, um eine Approximation für den Datenblock
bereitzustellen, wodurch eine Vielzahl von komprimierten Codierungen
bestimmt wird;
- (d) Wählen,
aus der Vielzahl von komprimierten Codierungen, derjenigen der komprimierten
Codierungen, die dann, wenn dekomprimiert und zu dem Referenzdatenfeld
hinzugefügt,
die größte Fehlerverringerung
zwischen dem Referenzdatenfeld relativ zu dem ursprünglichen
Datenfeld ergibt;
- (e) Hinzufügen
der gewählten
komprimierten Codierung in dekomprimierter Form zu dem Referenzdatenfeld,
um dadurch eine zweite Approximation für das ursprüngliche Datenfeld bereitzustellen,
und Speichern der gewählten
komprimierten Codierung in komprimierter Form, um eine komprimierte
Darstellung des ursprünglichen
Datenfelds einzurichten; und
- (f) rekursives Wiederholen der Schritte (d) und (e) für die verbleibenden
komprimierten Codierungen sukzessive, um weitere komprimierte Codierungen
zu wählen
und zu speichern, um sukzessive Approximationen für das ursprüngliche
Datenfeld bereitzustellen, bis entweder ein gewünschter Qualitätsgrad der
Approximation erreicht wird oder eine maximale Datengröße der komprimierten
Darstellung erreicht wird.
-
Die vorliegende Erfindung 'konzentriert sich' auf die Verbesserung
von denjenigen Gebieten des Referenzdatenfelds, für die eine
Verbesserung möglich
und am vorteilhaftesten ist. Dies ist im Gegensatz zu bekannten
Komprimierungsprozessen, die sich oft auf Gebiete konzentrieren,
für die
eine Verbesserung nicht möglich
ist oder nur zu einem marginalen Ausmaß erreicht werden kann.
-
Der Schritt (c) zum Bestimmen einer
komprimierten Codierung jedes Datenblocks kann das Durchsuchen eines
Codebuchs von Referenzdatenblöcken
umfassen, wobei jedem Referenzblock ein einzigartiger Codebuchindex
zugewiesen ist, um den am besten übereinstimmenden Referenzblock
aufzufinden. Alternativ kann dieser Schritt das Bestimmen irgendeiner
anderen geeigneten Darstellung, beispielsweise einer diskreten Cosinus-Transformation (DCT)
oder einer diskreten Fourier-Transformation (DFT) für jeden
Block umfassen.
-
Die komprimierte Codierung, die im
Schritt (d) gewählt
wird und die, wenn sie in nicht komprimierter Form ist, zu der größten Fehlerverringerung führt, kann
folgendermaßen
identifiziert werden: Zuerst Bestimmen des Fehlers ε1 zwischen
jedem der Datenblöcke
und der jeweiligen komprimierten Codierungen in dekomprimierter
Form; Bestimmen des Fehlers ε2 zwischen jedem der Datenblöcke und
den jeweiligen Blöcken
des Referenzdatenfelds; und Wählen
derjenigen komprimierten Darstellung, die ε1 – ε2 maximiert.
In einem Beispiel können
die Fehler ε1 – ε2 als
die gesamten quadrierten Differenzen zwischen jeweiligen Einträgen der
verglichenen Datenblöcke
ausgewertet werden.
-
Während
die Erfindung auf die Komprimierung von irgendwelchen digitalen
Daten angewendet werden kann, die z. B. Audiosignale oder 3D-Druckveränderungen
innerhalb der Atmosphäre
darstellen, ist sie besonders anwendbar auf die Kompression von
zweidimensionalen Bildern, die ein Feld von Pixeln umfassen, die
jeweils einen Pixelintensitätswert oder
-werte aufweisen. Typischerweise umfassen die Datenblöcke Abschnitte
bzw. Stücke
von benachbarten Pixeln. Während
die Abschnitte durch gleichförmiges
Aufteilen des Bilds auf einer einzelnen Ebene erzeugt werden können, kann
als Alternative das Bild beliebig auf zwei oder mehreren Ebenen
aufgeteilt werden, um mehrere Sätze
von überlappenden
Abschnitten und/oder Abschnitten mit unterschiedlicher Größe oder
Abschnitte mit unterschiedlicher Form zu erzeugen. In der Tat kann
die Erzeugung von überlappenden
Abschnitten (Stücken)
besonders vorteilhaft sein, da dies Kantenartefakte reduziert oder
beseitigt, die ansonsten einen "Kachel"-Effekt auf ein dekomprimiertes
Bild ausüben
werden. Die komprimerten Darstellungen oder Referenzabschnitte,
die für überlappende
Abschnitte abgeleitet werden, werden in dem Referenzbild unter Verwendung
eines vorgegebenen Kriteriums kombiniert. Z. B. können die überlappenden
Abschnitte aus einer gewichteten Kombination der überlappenden
Pixelintensitäten
abgeleitet werden. Alternativ kann eine Regel zum Wählen bereitgestellt
werden, welche Pixel aus welchem Abschnitt zu wählen sind, so dass die Pixel
in einer nicht-überlappenden
Weise kombiniert werden können.
-
Wenn ein Bild in unterschiedlich
große
Abschnitte auf zwei oder mehreren Ebenen unterteilt wird, ist es
möglich,
dass ein Referenzabschnitt für eine
Hinzufügung
zu dem Referenzbild gewählt
wird, wobei dieser Abschnitt vollständig oder teilweise einen vorher
gewählten
Abschnitt verdeckt. Wenn die Verdeckung vollständig ist, kann der vorher gewählte Abschnitt
von dem Referenzbild entfernt werden. Wenn die Verdeckung jedoch
teilweise ist, kann es geeignet sein, zu bestimmen, ob der teilweise
verdeckte Abschnitt durch einen alternativen Abschnitt ersetzt (oder
in einer anderen Weise transformiert) werden sollte, um denjenigen
Abschnitt, der nicht verdeckt ist, besser zu approximieren. Alternativ kann
der teilweise verdeckte Abschnitt vollständig von dem Referenzbild entfernt
werden, wenn durch diese Vorgehensweise die Qualität des Bilds
verbessert werden kann oder die Verringerung in der Qualität durch
einen Anstieg in der Qualität
mehr als kompensiert wird, die durch Einfügung irgendeines Referenzabschnitts
in das Referenzbild in einem anderen Bereich des Bildrahmens erhalten
wird.
-
Diese Anwendung der Erfindung kann
auf die Kompression und Übertragung
von Videobildern (z. B. unter Verwendung einer CD oder von Videobandmedien)
und insbesondere auf die Kompression und Übertragung von Videobildern
zwischen Videotelefonen erweitert werden. In einer Ausführungsform der
Endung ist das Referenzdatenfeld, welches im Schritt (a) bereitgestellt
wird, ein beliebiges Bild, beispielsweise ein gleichförmiges schwarzes
Bild. Das Referenzbild wird in einem Speicher des sendenden Videotelefons
und in einem Speicher des empfangenden Videotelefons gespeichert.
Komprimierte Codierungen von Bildabschnitten, die von dem ersten Bildrahmen
erhalten werden, der von der Kamera des Telefons eingefangen werden
soll, werden rekursiv zu einem Pufferspeicher und gleichzeitig in
nicht komprimierter Form zu dem Referenzbild in dem Speicher des
sendenden Telefons hinzugefügt,
bis eine vorgegebene Datenmenge in dem Pufferspeicher gehalten wird.
Die in dem Puffer gespeicherten Daten werden dann an das empfangende
Videotelefon übertragen.
-
Zu irgendeinem Zeitintervall (der
Videokamera-'Wiederauffrischungsrate' oder einem Vielfachen
davon) nach Einfangen des ersten Bildrahmens wird das sendende Videotelefon
einen zweiten Bildrahmen einfangen. Wenn dieses Zeitintervall relativ kurz
ist, z. B. 0,1 Sekunden, ist es wahrscheinlich, dass der nachfolgende
Bildrahmen ähnlich
zu dem ersten Bildrahmen sein wird und dass nur marginale Änderungen
deshalb benötigt
werden, um die Anzeige des empfangenden Videotelefons zu aktualisieren.
Es würde
extrem ineffizient sein, die Bilddaten, die bereits an das empfangende
Videotelefon übertragen
worden sind, vollständig
zu löschen
und den Kompressionsprozess wieder zu starten. Anstelle davon kann
der anfängliche
Referenzbildrahmen, der während
einer Kompression des ersten Bildrahmens durch eine wiederholte
Anwendung des Schritts (d) modifiziert wird, einen neuen Referenzbildrahmen
für den
zweiten Bildrahmen bilden. Nach einer Ausführung der Schritte (b) und
(c) identifiziert die wiederholte Anwendung des Schritts (d) diejenigen
komprimierten Codierungen, die in dekomprimierter Form den Fehler
zwischen dem neuen Referenzbildrahmen und dem zweiten Bildrahmen
verringern. Diese komprimierten Codierungen werden in dem Pufferspeicher
gespeichert, bis der benötigte
Datengrad erreicht wird, woraufhin sie an das empfangende Videotelefon übertragen
werden, um den Bildrahmen, der darauf angezeigt wird, zu aktualisieren.
Es sei darauf hingewiesen, dass diejenigen Gebiete des eingefangenen
Bildrahmens, die sich verändert
haben, gegenüber
einer Verbesserung am empfänglichsten sein
werden und dass die komprimierten Codierungen, die im Schritt (d)
identifiziert werden, eine Tendenz aufweisen werden, diesen Gebieten
zu entsprechen.
-
Für
den Fall, bei dem die komprimierten Codierungen durch Durchsuchen
eines Codebuchs von Referenzabschnitten erhalten werden, kann das
Codebuch unter Verwendung von einer einer Anzahl von bekannten Techniken
konstruiert sein. Das Codebuch umfasst vorzugsweise eine Anzahl
von Sätzen
von unterschiedlich großen
Abschnitten. Z. B. kann das Codebuch einen Satz von großen Stücken bzw.
Abschnitten (z. B. 64 mal 64 Pixel), einen Satz von mittleren Abschnitten
(z. B. 16 mal 16 Pixel), und einen Satz von kleinen Abschnitten
(z. B. 8 mal 8 Pixel) umfassen, um mit ähnlich großen Abschnitten übereinzustimmen,
in die das Bild, welches komprimiert werden soll, aufgeteilt ist.
-
Um die Qualität der komprimierten Darstellung
zu verbessern, kann eine Identifikation von übereinstimmenden Abschnitten
von dem Codebuch, das transformierende Referenzabschnitte oder der Bildabschnitte,
z. B. unter Verwendung einer Drehung oder Reflexion, beinhalten.
Die benötigte Transformation
zum Verbessern des Abschnitts wird mit den Bildabschnitts-Positionsvektoren
und den Codebuchindizes als Teil der komprimierten Darstellung gespeichert
werden. In ähnlicher
Weise können die
Bild- und Referenzabschnitte hinsichtlich einer Helligkeit und eines
Kontrasts mit den sich ergebenden Normalisierungskonstanten, die
einen Teil der komprimierten Darstellung bilden, normalisiert werden.
-
Wenn das zu komprimierende Bild eine
Sequenz von Videobildrahmen ist, und wenn Szenenkomponenten zwischen
aufeinander folgenden Rahmen in einer Bewegung sind, kann es sein,
dass eine gute Approximation für
einen Bildabschnitt, der die sich bewegende Komponente oder einen
Abschnitt davon enthält,
durch Extrahieren eines Abschnitts von einem benachbarten Abschnitt
der komprimierten Darstellung (in dekomprimierter Form) des vorangehenden
Rahmens ermittelt wird. Das Kompressionsverfahren kann deshalb das
vorübergehende Hinzufügen von
Abschnitten, die aus der komprimierten Darstellung des vorangehenden
Rahmens extrahiert werden, zu dem Codebuch oder zu einem Zusatzcodebuch
vor der Ausführung
einer Durchsuchung des Codebuchs (der Codebücher) umfassen. Um die Suchzeit
zu verringern, kann die Suche auf Abschnitte beschränkt werden,
die aus Gebieten der komprimierten Darstellung des vorangehenden
Rahmens extrahiert werden, die benachbart zu dem Bildabschnitt sind,
für den
die Suche gerade durchgeführt
wird.
-
Es sei darauf hingewiesen, dass ein
Objekt, z. B. eine Person, die sich vor einem stationären oder nahezu
stationären
Hintergrund umherbewegt, kontinuierlich Abschnitte des Hintergrunds
verdecken und freigeben kann. Es kann somit geeignet sein, in dem Zusatzcodebuch
Abschnitte zu speichern, die aus einer Anzahl von Rahmen erhalten
werden, die dem zu komprimierenden Rahmen direkt vorausgehen. Dieses
Prinzip kann weiter erweitert werden, so dass ein Codebuch für ein Hilfsbild
vor dem Beginn einer Videotelefon-'Konversation' geschaffen wird. Dieses Hilfsbild würde typischerweise
der Hintergrund sein, vor dem der Anrufer angeordnet sein soll.
Natürlich können mehrere
Hilfsbilder verwendet werden, wenn geeignet.
-
Eine weitere Entwicklung besteht
darin, Abschnitte zu kennzeichnen (mit einem Flag zu versehen),
die von dem Hilfsbild (den Hilfsbildern) genommen werden, so dass
sie an sich durch das empfangende Videotelefon erkannt werden können. Diese Kennzeichnung
(dieses Flag) könnte
dem Dekompressionsalgorithmus erlauben, den Codebuch-Nachschlagbetrieb
auf ein 'Ersatz'-Hintergrundcodebuch umzuleiten, was
ermöglichen
würde,
dass der Anrufer vor irgendeinem alternativen Hintergrund erscheint,
z. B. vor einem Palmenstrand, anstelle vor der Konferenzraumwand,
vor der er oder sie tatsächlich
angeordnet ist.
-
In Übereinstimmung mit einem zweiten
Aspekt der vorliegenden Erfindung ist eine Vorrichtung zum Komprimieren
eines Felds von Dateneinträgen in
der Form von digitalen elektrischen Signalen vorgesehen, wobei die
Vorrichtung einen digitalen Computer, z. B. des bekannten Typs,
umfasst, der eingerichtet ist, um ein Programm ablaufen zu lassen,
das das Verfahren verkörpert,
welches in Übereinstimmung
mit dem obigen ersten Aspekt aufgeführt ist.
-
Für
ein besseres Verständnis
der vorliegenden Erfindung und um zu zeigen, wie diese in der Praxis
umgesetzt werden kann, wird eine Ausführungsform der Erfindung beispielhaft
unter Bezugnahme auf die beiliegende Zeichnung beschrieben, die
eine Aufteilung eines Teils eines Bildrahmens, der komprimiert werden
soll, in Mehrschicht-Bildabschnitte zeigt.
-
Es sei zunächst ein zweidimensionaler
Bildrahmen betrachtet, der aus einem regelmäßigen Feld von Pixeln besteht,
wobei zu jedem eine Pixelintensität gehört. Die erste Stufe in dem
Kompressionsprozess besteht darin, ein Codebuch zu schaffen, indem Referenzabschnitte
aus ein oder mehreren Bibliotheksbildrahmen extrahiert werden. Diese
Bibliotheksbildrahmen enthalten vorzugsweise Merkmale, die wahrscheinlich
in dem Bildrahmen enthalten sind, der komprimiert werden soll. Ein
typisches Codebuch würde
mehrere hundert Referenzmuster mit unterschiedlichen Größen enthalten,
z. B. einen Satz mit 32 × 32
Pixelabschnitten, einen Satz mit 16 × 16 Pixelabschnitten und einen
Satz mit 8 × 8
Pixelabschnitten, wobei jeder der Abschnitte durch einen einzigartigen
Codebuchindex identifiziert wird. Jeder der Referenzabschnitte wird
hinsichtlich der Helligkeit durch Bestimmen der durchschnittlichen
Intensität
der Pixel innerhalb des Abschnitts und durch Subtrahieren dieses
Durchschnittswerts von dem Intensitätswert für jedes Pixel normalisiert.
In ähnlicher
Weise werden die Abschnitte hinsichtlich eines Kontrastes durch
Teilen des Intensitätswerts
jedes Pixels innerhalb eines Abschnitts durch den maximalen absoluten
Intensitätswert
innerhalb dieses Abschnitts, gefolgt von einer Normalisierung hinsichtlich
der Helligkeit, normalisiert. Somit wird der Pixelintensitätswert für jeden
Abschnitt zwischen –1
und +1 liegen.
-
Ein zu komprimierender Bildrahmen
wird in ein Feld von aneinander angrenzenden Datenblöcken oder
Bildabschnitten (wobei jeder einen einzigartigen Positionsvektor)
auf einer ersten Ebene aufgeteilt. Für ein Bild, welches 512 × 512 Pixel
umfasst, werden diese Abschnitte in der Größe 32 × 32 Pixel sein, so dass der
Bildrahmen in 256 große Bildabschnitte
unterteilt wird. Das Bild wird dann zweimal weiter unterteilt, auf
unterschiedlichen Ebenen, um einen Satz von 16 × 16 Pixelabschnitten und einen
Satz von 8 × 8
Pixelabschnitten bereitzustellen. Die Unterteilung ist derart, dass
8 × 8
Abschnitte auf die Kanten der 16 × 16 Abschnitte überlappen
und die 16 × 16
Abschnitte auf die 32 × 32
Abschnitte überlappen.
Diese überlappende
Anordnung ist in der beiliegenden Zeichnung dargestellt, obwohl
eine der Ebenen einer Aufteilung zur Übersichtlichkeit weggelassen
ist. Jedem Bildabschnitt wird ein Positionsvektor zugewiesen, der
in zweckdienlicher Weise die Position in dem Bild der Mitte des
Abschnitts sein kann.
-
Sämtliche
Bildabschnitte werden sowohl hinsichtlich der Helligkeit als auch
des Kontrasts, wie voranstehend beschrieben, normalisiert, so dass
die Pixelintensitäten
zwischen –1
und +1 liegen. Für
jeden normalisierten Bildabschnitt werden die Einträge mit entsprechender
Größe in dem
Codebuch gesucht, um denjenigen zu identifizieren, der mit dem Bildabschnitt
am besten übereinstimmt.
Für ein schwarzes
und weißes
Bild kann die Suche dadurch ausgeführt werden, dass jedes Pixel
des gewählten Bildabschnitts
mit dem entsprechenden Pixel jedes Referenzabschnitts verglichen
wird, z. B. durch Verwendung eines Ansatzes mit einer mittleren
quadrierten Differenz (für
Farbbilder werden die Intensitäten für jede der
Farben verglichen). Alternativ, und um den benötigten Berechnungsaufwand zu
minimieren, können
eine bestimmte "globale" Charakteristik oder Charakteristiken
für jeden
der Referenz- und Bildabschnitte berechnet und die Suche durch Vergleichen
von diesen globalen Charakteristiken ausgeführt werden. Ein Beispiel dieses
Typs von Suchstrategie ist in WO 95/20296 beschrieben.
-
Der Codebuchindex von jedem der passenden
Referenzabschnitte wird, zusammen mit dem Positionsvektor und den
Helligkeits- und Kontrast-Normalisierungsfaktoren für den übereinstimmenden
Bildabschnitt, als eine komprimierte Codierung gespeichert. Für jedes
Paar eines Codebuch-Referenzabschnitts
und eines Bildabschnitts, die zusammenpassen, wird der Fehler zwischen
den zwei Abschnitten ausgewertet, um einen Satz von Fehlern ε1 bereitzustellen.
Ein geeignetes Maß eines Fehlers
ist die gesamte quadrierte Differenz zwischen den jeweiligen Pixelfeldern.
Dies erfordert, dass die Intensitäten der entsprechenden Pixel
voneinander abgezogen werden und die sich ergebenden Differenzen
quadriert und aufsummiert werden.
-
Das Kompressionsverfahren beinhaltet
die Bereitstellung von irgendeinem beliebigen Referenzbildrahmen,
der als eine erste, trotzdem extrem schlechte, Approximation für den Bildrahmen,
der komprimiert werden soll, genommen werden kann. Der obige Fehlerberechnungsbetrieb
wird für
die Bildabschnitte und jeweilige Gebiete entsprechender Größe, die
aus dem Referenzbildrahmen extrahiert werden, ausgeführt, so
dass ein Satz von tatsächlichen
Fehlern ε2 zwischen dem Referenz-Bildrahmen und dem
Rahmen, der komprimiert werden soll, erhalten wird. Dieser Satz
von Fehlern wird dann mit dem Satz von Fehlern verglichen, die für die Referenzabschnitte
erhalten werden.
-
Für
den Vergleich wird derjenige Codebuch-Referenzabschnitt identifiziert,
der zu der größten Fehlerverringerung
führen
würde,
d. h. zu der größten Verbesserung
in der Bildqualität,
wenn zu dem Referenzbild hinzugefügt. Die entsprechende komprimierte
Codierung wird in einer komprimierten Bilddarstellung gespeichert.
Zusätzlich
wird das Referenzbild durch Hinzufügen des gewählten Referenzabschnitts dazu
hinzugefügt.
-
Dieser Prozess wird rekursiv wiederholt,
so dass Referenzabschnitte kontinuierlich zu dem Referenzbildrahmen
hinzugefügt
werden, was zu einer schrittweisen Verbesserung der Qualität des Referenzbildrahmens
führt.
Parallel werden die komprimierten Codierungen zu der komprimierten
Darstellung hinzugefügt.
Es sei darauf hingewiesen, dass eine Verwendung des gesamten codierten
Fehlers zum Messen einer Verbesserung eine Tendenz aufweisen wird,
größere Referenzabschnitte
vor kleineren hinzuzufügen,
obwohl dies nicht immer der Fall sein wird. Typischerweise wird
die Rekursion fortgesetzt werden, bis die Qualität des Referenzbildrahmens irgendeinen
akzeptablen Schwellenpegel erreicht, z. B. dadurch, dass sichergestellt
wird, dass der Fehler zwischen dem Referenzbildrahmen und dem ursprünglichen
Bildrahmen an irgendeinem Punkt einen Schwellenpegel nicht übersteigt.
Alternativ kann der Prozess fortgesetzt werden, bis die Datenmenge,
die in der komprimierten Bilddarstellung enthalten ist, irgendeinen
Schwellenpegel erreicht.
-
Es wird erwogen, dass das Bildkompressionsverfahren,
welches voranstehend beschrieben wurde, verwendet werden könnte, um
zweidimensionale 'Standbild'-Rahmen zu komprimieren
oder um einen Satz von Bildrahmen zu komprimieren, die eine Videosequenz
bilden. Eine Anwendung, für
die das Verfahren besonders anwendbar ist, besteht in der Übertragung
von Videobildern zwischen Videotelefonen. Während das Konzept von Videotelefonen
seit einigen Jahren bekannt gewesen ist, ist der kommerzielle Erfolg
von Videotelefonen in der Praxis durch die schlechte Qualität der Bilder
beschränkt
worden, die in den Videotelefonen angezeigt werden. Diese schlechte
Qualität
ist das Ergebnis der geringen Signalbandbreite, die über den Übertragungskanälen verfügbar ist,
kombiniert mit ungeeigneten Qualitäten, Verzögerungen und Rahmenraten, die
bei den gegenwärtigen Übertragungstechniken
verfügbar sind.
-
Eine Verbesserung der existierenden Übertragungssysteme
würde darin
bestehen, jeden zu übertragenden
Rahmen unter Verwendung des voranstehend detailliert angegebenen
Kompressionsverfahrens zu komprimieren. Eine noch größere Verbesserung
könnte
jedoch dadurch erreicht werden, dass erkannt wird, dass es wahrscheinlich
ist, dass Änderungen
zwischen sukzessiven Bildern der Videosequenz extrem gering sind.
Typischerweise wird der Hintergrund für den Videotelefon-Betreiber
stationär
bleiben, während
der Kopf und Gesichtsmerkmale des Betreibers sich zu irgendeinem
geringen Ausmaß zwischen
Rahmen verändern
können.
-
Das obige Verfahren ist auf eine
Videotelefon-Signalübertragung
wie folgt angewendet. Der erste Rahmen, der von dem sendenden Videotelefon eingefangen
wird, wird wie voranstehend beschrieben, unter Verwendung irgendeines
anfänglichen
beliebigen Referenzbildrahmens komprimiert, der in dem Speicher
gespeichert ist. Der gleiche Referenzbildrahmen wird auch in einem
Pufferspeicher des empfangenden Videotelefons gespeichert. Ein Satz von
komprimierten Codierungen wird wie voranstehend beschrieben erhalten
und wird in dem Pufferspeicher bis zu einer voreingestellten Datengrenze gespeichert,
die durch die Signalbandbreite des Übertragungskanals und die gewünschte Rahmenrate
der Bildsequenz bestimmt ist. Diese Daten werden dann von dem Pufferspeicher
an das empfangende Videotelefon übertragen,
wo sie decodiert und zu dem Referenzbildrahmen für eine Anzeige hinzugefügt werden.
Die Daten werden auch zu dem Referenzbild hinzugefügt, das
in dem Speicher des sendenden Videotelefons gespeichert ist.
-
Während
das sendende Videotelefon gerade den ersten eingefangenen Bildrahmen
komprimiert, fängt
dessen Kamera einen zweiten Bildrahmen ein. Einer Übertragung
des ersten Satzes von Abschnittsdaten folgend wird der Kompressionsprozess
wiederholt, sucht dieses Mal aber nach Abschnitten, die die beste
Verbesserung des 'neuen' Bildrahmens relativ zu
dem zweiten eingefangenen Bildrahmen ergeben. Die komprimierten
Codierungen von diesen Abschnitten werden wiederum in dem Pufferspeicher vor
einer Übertragung
an das empfangende Videotelefon gespeichert. Der Prozess wird für jeden
neu eingefangenen Rahmen wiederholt, so dass der Referenzbildrahmen
kontinuierlich Änderungen
in den eingefangenen Bildrahmen verfolgt.
-
Es sei darauf hingewiesen, dass Modifikationen
an den voranstehend beschriebenen Ausführungsformen ohne Abweichen
von dem Umfang der vorliegenden Endung durchgeführt werden können.
-
Eine derartige Modifikation, die
an der Videotelefonimplementierung durchgeführt werden kann, beinhaltet
die Extraktion von Abschnitten an ein oder mehreren Ebenen von jedem
Referenzbildrahmen und eine Hinzufügung von diesen Abschnitten
vorübergehend
zu einem Zusatzcodebuch, das nach der Übertragung jeder Bildaktualisierung
aktualisiert wird. Dieser Prozess würde an beiden Enden der Übertragungsleitung
durchgeführt
werden. Wenn eine Bewegung von Szenenkomponenten zwischen Rahmen
einer Sequenz auftritt, ist es wahrscheinlich, dass der Referenzabschnitt,
der den gegenwärtigen Referenzrahmen
am besten verbessert, ein Abschnitt sein wird, der von einem benachbarten
Bereich des vorangehenden Bildrahmens extrahiert wird, und diese
werden deshalb aus dem Zusatzcodebuch genommen. Die Einträge des Zusatzcodebuchs,
die für
einen gegebenen Bildabschnitt durchsucht werden, können auf
diejenigen Einträge
beschränkt
werden, die aus Bereichen des Referenzbilds angrenzend zu dem Bildabschnitt
genommen werden, für
den die Suche gerade durchgeführt
wird.
-
Eine weitere Modifikation beinhaltet
die Extraktion von Referenzabschnitten von einem Hilfsbild und eine
Hinzufügung
von diesen zu dem Codebuch oder zu einem Zusatzcodebuch. Ein derartiges
Hilfsbild kann eingefangen werden, wenn das Videotelefon zunächst eingeschaltet
wird und der Telefonanrufer noch nicht vor dem betrachteten Hintergrund
positioniert ist. Diese zusätzlichen
Referenzabschnitte werden an das empfangende Videotelefon vor Beginn
der Telefonkonversation übertragen.
Es sei darauf hingewiesen, dass während einer Konversation eine
Bewegung des Anrufers kontinuierlich den Hintergrund abdecken und
nicht abdecken wird und dass der Kompressionsalgorithmus in der
Lage sein wird, übereinstimmende
Referenzabschnitte mit hoher Qualität aus dem Hilfsbild für Gebiete,
die danach nicht verdeckt sind, zu finden. Das Hilfsbild kann während der
Konversation aktualisiert werden, z. B. wenn 'neue' stationäre Objekte
hinzugefügt
werden. Durch Markieren von Referenzabschnitten mit einem Flag (Marke)
ist es möglich,
den tatsächlichen
Hintergrund durch einen Ersatzhintergrund an dem empfangenden Videotelefon
zu ersetzen. Eine Erfassung einer Bewegung in dem Hintergrund kann
auch verwendet werden, um die eingefangenen Rahmen hinsichtlich
eines Kamera-Jitters zu kompensieren.