DE602004011213T2 - Intraframe-komprimierung und dekomprimierung von videosignalen mit fester bitrate - Google Patents

Intraframe-komprimierung und dekomprimierung von videosignalen mit fester bitrate Download PDF

Info

Publication number
DE602004011213T2
DE602004011213T2 DE602004011213T DE602004011213T DE602004011213T2 DE 602004011213 T2 DE602004011213 T2 DE 602004011213T2 DE 602004011213 T DE602004011213 T DE 602004011213T DE 602004011213 T DE602004011213 T DE 602004011213T DE 602004011213 T2 DE602004011213 T2 DE 602004011213T2
Authority
DE
Germany
Prior art keywords
data
value
image
index
codeword
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE602004011213T
Other languages
English (en)
Other versions
DE602004011213D1 (de
Inventor
Dane P. Windham KOTTKE
Katherine H. Newburyport CORNOG
Michel Brighton RYNDERMAN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avid Technology Inc
Original Assignee
Avid Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Avid Technology Inc filed Critical Avid Technology Inc
Publication of DE602004011213D1 publication Critical patent/DE602004011213D1/de
Application granted granted Critical
Publication of DE602004011213T2 publication Critical patent/DE602004011213T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Auxiliary Devices For And Details Of Packaging Control (AREA)
  • Television Systems (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
  • Error Detection And Correction (AREA)
  • Color Television Systems (AREA)

Description

  • HINTERGRUND
  • Computer-Systeme, die Bewegtbild-Video erfassen, bearbeiten und wiedergeben, verarbeiten die Bewegtbild-Videodaten typischerweise als digitale Daten, die eine Folge digitaler Bilder repräsentieren. Derartige Daten sind typischerweise in Computer-Datendateien in einem computerlesbaren Schreib-Lese-Medium gespeichert. Ein Bild kann einen einzigen Rahmen, d. h. zwei Halbbilder, oder ein einziges Halbbild der Bewegtbild-Videodaten repräsentieren. Derartige Systeme erlauben im Allgemeinen, dass auf irgendein spezielles Bild in der Folge der Standbilder für das Bearbeiten und für die Wiedergabe wahlfrei zugegriffen wird.
  • Weil die digitalen Daten, die das Bewegtbild-Video repräsentieren, große Mengen des Computerspeichers verbrauchen können, insbesondere für Bewegtbild-Video in Fernsehqualität (z. B. sechzig Halbbilder pro Sekunde für NTSC und fünfzig Halbbilder pro Sekunde für PAL), werden die digitalen Daten typischerweise komprimiert, um die Speicheranforderungen zu verringern. Es gibt mehrere Arten der Kompression für Bewegtbild-Videoinformationen. Eine Art der Kompression wird als "rahmeninterne" Kompression bezeichnet, die das Komprimieren der Daten, die jedes Bild repräsentieren, unabhängig von anderen Bildern umfasst. Im Allgemeinen verwendete rahmeninterne Kompressionstechniken verwenden eine Transformation aus dem Ortsbereich in den Frequenzbereich, z. B. unter Verwendung diskreter Kosinustransformationen, um eine Menge von Koeffizienten im Frequenzbereich zu erzeugen, die das Bild oder Teile des Bildes repräsentiert. Diese Koeffizienten werden im Allgemeinen quantisiert, in einer spezifischen Reihenfolge (die im Allgemeinen als Zickzack-Ordnung bezeichnet wird) angeordnet und dann entropie-codiert.
  • Die Entropie-Codierung ist ein verlustloser Prozess, der typischerweise das Erzeugen von Codewörtern, die die Koeffizienten repräsentieren, unter Verwendung eines Huffmann-Codierungsschemas umfasst. Die Bildqualität der komprimierten Bilder wird in erster Linie durch den Verlust von Informationen durch die Quantisierung beeinflusst.
  • Einige Kompressionstechniken umfassen zusätzliche Operationen, die die Bildqualität weiter beeinflussen. Einige Kompressionstechniken verringern z. B. die Größe eines Bildes, bevor es transformiert und quantisiert wird. Einige andere Kompressionstechniken verringern die Bittiefe, indem z. B. von 10 Bits auf 8 Bits gerundet wird.
  • Für die Bewegtbild-Videofolgen kann noch mehr Kompression erhalten werden, indem etwas verwendet wird, was im Allgemeinen als "Zwischenrahmen"-Kompression bezeichnet wird. Die Zwischenrahmen-Kompression umfasst das Vorhersagen eines Bildes unter Verwendung eines weiteren. Diese Art der Kompression wird oft in Kombination mit der rahmeninternen Kompression verwendet. Ein erstes Bild kann z. B. unter Verwendung der rahmeninternen Kompression komprimiert werden, wobei es typischerweise als ein Schlüsselrahmen bezeichnet wird. Die nachfolgenden Bilder können komprimiert werden, indem Vorhersageinformationen erzeugt werden, die, wenn sie mit den anderen Bildern kombiniert werden, zum gewünschten Bild führen. Die rahmenintern komprimierten Bilder können gelegentlich überall in der Folge auftreten. Für die zwischenrahmen-komprimierten Bildfolgen kann auf die zwischenrahmen-komprimierten Bilder in der Folge nur unter Bezugnahme auf andere Bilder in der Folge zugegriffen werden und können die zwischenrahmen-komprimierten Bilder in der Folge nur unter Bezugnahme auf andere Bilder in der Folge dekomprimiert werden.
  • Die Kompressionstechniken für Video können außerdem eine variable Bitrate pro Bild oder eine feste Bitrate pro Bild bereitstellen. Beide Typen der Technik verwenden im Allgemeinen eine Soll-Bitrate in einer Steuerschleife, um die Parameter des Kompressionsalgorithmus, typischerweise die Parameter für die Quantisierung, so einzustellen, dass die Soll-Bitrate erfüllt ist. Für die Kompression mit fester Bitrate muss die Soll-Bitrate durch jedes komprimierte Bild oder durch die komprimierten Daten für jede Teilmenge jedes Bildes erfüllt sein. Für die Kompression mit variabler Bitrate ist die Soll-Bitrate im Allgemeinen die durchschnittliche Bitrate (hinsichtlich der Bits pro Bild), die gesucht ist.
  • Die komprimierten Bilddaten sind im Allgemeinen in einem Format gespeichert, das den effizienten Zugriff auf jeden Teil der komprimierten Bilddaten und auf die Parameter zum Dekomprimieren jedes Teils der komprimierten Bilddaten erlaubt. Es gibt mehrere Standards, die für Bitstrom-Formate für verschiedene Arten der komprimierten Daten definiert worden sind. Es gibt z. B. ein durch den MPEG-2-Standard definiertes Bitstrom-Format. Typischerweise enthält ein derartiges Bitstrom-Format die Bildkopf-Informationen und die Bildinformationen. Die Kopfinformationen enthalten typischerweise Informationen darüber, wie auf die komprimierten Bilddaten und die zugeordneten Parameter für jeden Block des Bildes zuzugreifen ist. Derartige Bitstrom-Formate sind im Allgemeinen so konstruiert, um den effizienten Zugriff auf den Bitstrom als einen einzigen seriellen Datenstrom zu ermöglichen. Der MPEG-2 definiert "Scheiben" komprimierter Daten, indem "Scheibenmarkierungen" im Datenstrom angeordnet werden; auf eine Scheibe kann jedoch nur zugegriffen werden, indem der Datenstrom nach den Scheibenmarkierungen abgetastet wird.
  • WO 98/35500 offenbart ein Verfahren zum Optimieren der Quantisiererwerte in einem Bildcodierer. Das Verfahren verwendet eine Quantisierer-Steuereinheit, die die optimalen Werte für die Quantisierungsparameter für eine begrenzte Gesamtzahl der Bits, die für das Codieren eines Bildrahmens verfügbar ist, auswählt.
  • EP 0500077 offenbart eine Bewegtbilddaten-Kompressionscodierungsvorrichtung, in der die Quantisierungsschrittgröße durch das Vergleichen einer tatsächlichen Codemenge mit einer Ziel-Codemenge dynamisch gesteuert wird.
  • US 5724097 bezieht sich auf ein Verfahren zum Auswählen einer Quantisierungsschrittgröße anhand der im Videosignal detektierten Muster.
  • ZUSAMMENFASSUNG
  • Gemäß den beigefügten Ansprüchen kann eine alleinige rahmeninterne Kompression mit fester Bitrate in hoher Qualität eines Videosignals unter Verwendung der Ratenverzerrungs-Optimierung erreicht werden. Der Kompressionsprozess umfasst das Transformieren von Abschnitten des Bildes, um Frequenzbereichskoeffizienten für jeden Abschnitt zu erzeugen. In Übereinstimmung mit einer Soll-Bitrate wird aus mehreren Quantisierungsmatrizen, die jede für eine entsprechende von mehreren Bitraten definiert sind, eine Quantisierungsmatrix ausgewählt. Es wird eine Bitrate für jeden unter Verwendung mehrerer Skalierungsfaktoren transformierten Abschnitt bestimmt. Die Verzerrung für jeden Abschnitt wird entsprechend der mehreren Skalierungsfaktoren geschätzt. Es wird ein Skalierungsfaktor für jeden Abschnitt ausgewählt, um die Gesamtverzerrung des Bildes minimal zu machen, während eine Soll-Bitrate erzielt wird. Die Frequenzbereichskoeffizienten für jeden Abschnitt werden unter Verwendung der ausgewählten Quantisierungsmatrix mit Skalierung durch den ausgewählten Skalierungsfaktor für den Abschnitt quantisiert. Die quantisierten Frequenzbereichskoeffizienten werden unter Verwendung einer Codierung mit variabler Länge codiert, um die komprimierten Daten für jeden der definierten Abschnitte zu schaffen. Die komprimierten Daten werden für jeden der definierten Abschnitte ausgegeben, um einen komprimierten Bitstrom mit der Soll-Bitrate zu schaffen.
  • Die Ratenverzerrungs-Optimierung kann ausgeführt werden, indem eine Bitrate für jeden von mehreren Skalierungsfaktoren erhalten wird, von denen jeder eine Zweierpotenz ist. Der ausgewählte Skalierungsfaktor kann außerdem auf einen Skalierungsfaktor eingeschränkt sein, der eine Zweierpotenz ist. Die Abschnitte der Ratenverzerrungskurve, die sich über die verfügbaren Daten hinaus erstrecken, können außerdem geschätzt werden. Insbesondere gibt es für jeden Abschnitt eines Bildes und eine Quantisierungsmatrix einen Skalierungsfaktor, der als der maximale Skalierungsfaktor bezeichnet wird. Ein derartiger Skalierungsfaktor bewirkt, dass alle Quantisierer so sind, dass alle Koeffizienten auf Null quantisiert werden. Der maximale Skalierungsfaktor schafft die minimale Bitrate. Die Bitraten, die den Skalierungsfaktoren zwischen dem maximalen Skalierungsfaktor und einem weiteren Skalierungsfaktor, für den eine berechnete Bitrate verfügbar ist, entsprechen, können durch Interpolation geschätzt werden.
  • Es kann ein Gewichtungsfaktor verwendet werden, um die Werte in der ausgewählten Quantisierungsmatrix für die Bittiefe der Bilddaten zu skalieren. Folglich kann die numerische Genauigkeit der nachfolgenden Operationen für Daten mit mehreren Bittiefen, wie z. B. sowohl 8-Bit- als auch 10-Bit-Daten, gesteuert werden.
  • Die Entropiecodierung für die Wechselstrom-Koeffizienten kann in der folgenden Weise ausgeführt werden. Der Bereich der potentiellen Amplituden für die quantisierten Koeffizienten wird in zwei Teile aufgeteilt. Der erste Teil ist ein Basisbereich für die Amplituden zwischen 1 und einem zweckmäßigen Wert AB. Der zweite Teil ist ein Indexbereich für die verbleibenden Amplituden [AB + 1, ..., Amax], wobei AB die maximale Amplitude eines quantisierten Koeffizienten ist. Die Amplituden im Basisbereich werden mit einem Huffmann-Codewort codiert, das die Amplitude repräsentiert. Der Indexbereich wird weiter in eine Anzahl von Segmenten unterteilt, von denen jedes einen Wertebereich besitzt, der AB entspricht. Die Amplituden im Indexbereich werden mit einem Huffmann-Codewort, das die Amplitude repräsentiert, und einem Indexwert, der das Segment angibt, aus dem sie herrühren, codiert. Falls es einen oder mehrere vorhergehende Koeffizienten mit dem Wert Null gibt, wird die Amplitude durch ein Huffmann-Codewort und, falls die Amplitude im Indexbereich liegt, gefolgt von einem Indexwert, gefolgt von einem weiteren Huffmann-Codewort, das die Länge der vorhergehenden Serie von Nullen repräsentiert, codiert. Diese Codierung kann auf Formen von Daten anwendbar sein, die von quantisierten Koeffizientendaten verschieden sind.
  • Es ist außerdem erwünscht, ein Bitstromformat für komprimierte Daten zu schaffen, das es mehreren Prozessoren erlauben würde, auf verschiedene Teile der Daten parallel zuzugreifen und verschiedene Teile der Daten parallel zur dekomprimierten, ohne Zeit für das Abtasten durch alle komprimierten Bilddaten zu verwenden. Die komprimierten Bilder sind normalerweise durch Makroblöcke definiert, die eine Breite besitzen, die kleiner als die Bildbreite ist, und die eine Höhe besitzen, die kleiner als die Bildhöhe ist. Folglich ist ein Bild in mehrere Bänder aus mehreren Zeilen unterteilt, wobei jedes Band aus mehreren Zeilen in Makroblöcke unterteilt ist. Die Menge der Makroblöcke, die ein Band definieren, wird hierin als eine Makroblock-Rasterabtastung bezeichnet.
  • Das Bitstromformat enthält für jedes Bild einen Bildkopf, gefolgt von den Bildabtastdaten. Der Bitstrom kann außerdem eine Bild-Fußzeile oder einen Bild-Nachsatz enthalten. Die Bildabtastdaten enthalten Daten, die mehreren Makroblock-Rasterabtastungen entsprechen. Die Daten für jede Makroblock-Rasterabtastung enthalten die Daten für mehrere Makroblöcke für ein Band von Zeilen im Bild, gefolgt von Füllung. Die Füllung stellt sicher, dass die Daten für jede Makroblock-Rasterabtastung an einer Datengrenze enden. Diese Datengrenze hängt von der Datenmenge ab, die einen effizienten Zugriff durch einen Prozessor erlaubt, z. B. 4096 Bytes (4 kbyte), ist aber nicht darauf eingeschränkt.
  • Der Bildkopf verweist auf einen Bildabtastindex, der die Anzahl der Makroblock-Rasterabtastungen in den Bildabtastdaten und eine Anzahl von Zeilen pro Makroblock-Rasterabtastung, gefolgt von den Einträgen des Index, angibt. Jeder Eintrag in dem Index enthält einen Versatz der Makroblock-Rasterabtastung in der Bildabtastung. Der Bildkopf kann einen Verweis auf einen Bildkopftyp enthalten, der auf einen I_frame_image_descriptor verweist, der auf den Bildabtastindex verweist.
  • Unter Verwendung des Bildabtastindex kann auf jede Makroblock-Rasterabtastung wahlfrei und direkt zugegriffen werden, wobei folglich erlaubt wird, dass verschiedene Makroblock-Rasterabtastungen durch verschiedene Prozessoren parallel verarbeitet werden. Folglich können mehrere parallel arbeitende Prozessoren ein Bild effizient decodieren.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • 1 ist ein Ablaufplan eines Beispiel-Codierers für die Kompression einer Folge von Bildern.
  • 2 ist ein Ablaufplan eines Beispiel-Decodierers für die Dekompression einer Folge von Bildern.
  • 3 ist eine Tabelle, die darstellt, wie die Entropie-Codierung der Koeffizientenwerte ausgeführt werden kann.
  • 4 ist eine graphische Darstellung eines Beispielformats der Code-Wörter für die Entropie-Codierung.
  • 5 ist eine graphische Darstellung einer Beispiel-Nachschlagetabelle zum Umsetzen eines Koeffizienten in ein Codewort.
  • 6 ist eine graphische Darstellung einer Beispiel-Nachschlagtabelle zum Umsetzen eines Lauflängenwertes in ein Codewort.
  • 7 ist eine graphische Darstellung einer Beispiel-Nachschlagtabelle zum Umsetzen eines Codeworts in einen Koeffizientenwert.
  • 8 ist eine graphische Darstellung einer Beispiel-Nachschlagtabelle zum Umsetzen eines Codeworts in einen Lauflängenwert.
  • 9 ist eine graphische Darstellung des Datenflusses eines Beispiel-Bildverarbeitungssystems, das einen Codierer und einen Decodierer, wie z. B. in 1 und 2, verwendet.
  • 10 ist ein Blockschaltplan eines Beispiel-Codierers mit Ratensteuerung.
  • 11 ist eine graphische Darstellung einer Beispiel-Datenstruktur für komprimierte Bilddaten.
  • 12 ist eine graphische Darstellung einer Beispiel-Datenstruktur für die Bildabtastdaten in 11.
  • 13 ist eine graphische Darstellung einer Beispiel-Datenstruktur für die Rasterabtastdaten in 12.
  • 14 ist eine Tabelle, die eine Beispiel-Datenstruktur für die Bildkopfinformationen beschreibt.
  • 15 ist eine Tabelle, die eine Beispiel-Datenstruktur für einen Bild-Deskriptor in 14 beschreibt.
  • 16 ist eine Tabelle, die eine Beispiel-Datenstruktur für einen Bildabtastindex in 15 beschreibt.
  • 17 ist eine graphische Darstellung des Datenflusses eines Beispiel-Bildverarbeitungssystems unter Verwendung eines Bitstromformats.
  • 18 ist ein Ablaufplan, der beschreibt, wie ein Bitstrom gelesen werden kann.
  • 19 ist ein Ablaufplan, der beschreibt, wie ein Bitstrom geschrieben werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 veranschaulicht ein System zum Komprimieren von Bilddaten. Die Bilddaten 100 werden (durch die Transformation 102) transformiert, um die Koeffizienten 104 für verschiedene Frequenzen zu erzeugen. Diese Darstellung im Frequenzbereich eines Bildes kann in vielen Arten erzeugt werden. Das Bild kann z. B. in Blöcke von Bildelementen (Bildpunkten) unterteilt werden. Jeder Block wird aus seiner Farbdarstellung im Ortsbereich in eine Farbdarstellung im Frequenzbereich, typischerweise unter Verwendung einer diskreten Kosinustransformation (DCT), transformiert. Das Ergebnis der Transformation ist eine Matrix der Frequenzkoeffizienten, ein Koeffizient für jede Frequenz. Eine Gruppe derartiger Blöcke wird als ein Makroblock bezeichnet.
  • Dann werden die Koeffizienten (durch den Quantisierer 106) unter Verwendung einer Gruppe von Quantisieren, ein Quantisierer für jede Frequenz, quantisiert, um einen quantisierten Koeffizienten 108 für jede Frequenz zu schaffen. Die Gruppe der Quantisierer wird typischerweise als eine Quantisierungstabelle oder eine Quantisierungsmatrix bezeichnet. Die Quantisierungsmatrizen, die für eine spezielle Bitrate, z. B. 220 MBits pro Rahmen und 140 MBits pro Rahmen, geeignet sind, können experimentell unter Verwendung von Probebildern und einer Prozedur, die in: "RD-OPT: An Efficient Algorithm for Optimizing DCT Quatization Tables" von Viresh Ratnakar und Miron Livny in 1995 Data Compression Conference, S. 332–341, ("Ratnakar") beschrieben ist, definiert werden. Ratnakar lehrt, wie eine Quantisierungstabelle für ein einzelnes Bild zu optimieren ist; diese Prozedur kann jedoch erweitert werden, um eine Quantisierungstabelle unter Verwendung von Statistiken für mehrere Beispielbilder, die als "typische" Bilder ausgewählt worden sind, zu optimieren. Eine derartige Quantisierungstabelle kann für jede aus einer Menge verschiedener Soll-Ausgangsbitraten entwickelt werden.
  • Die Quantisierungstabelle quantisiert die Frequenzdaten, indem jeder Koeffizient durch seinen entsprechenden Quantisierer geteilt und gerundet wird. Es kann z. B. die folgende Formel verwendet werden: round[S(u, v)/Q(u, v)];wobei S(u, v) der Wert in der Position u, v in der Matrix der Frequenzkoeffizienten ist, während Q(u, v) der Quantisierer in der Position u, v in der Quantisierungsmatrix ist.
  • Die Werte Q(u, v) in der Quantisierungsmatrix können eine Funktion einer festen Quantisierungsmatrix, eines Skalierungsfaktors und eines Gewichtungsfaktors sein. Der Gewichtungsfaktor skaliert die Werte in der Quantisierungsmatrix, so dass sie für die Bittiefe der Bilddaten geeignet sind, so dass die Variabilität in den Dynamikbereichen für Daten mit mehreren Bittiefen, wie z. B. sowohl 8-Bit- als auch 10-Bit-Daten, berücksichtigt wird.
  • Die Quantisierung kann außerdem ausgeführt werden, um eine "Totzone" mit variabler Breite zu schaffen. Die Totzone ist der Bereich um Null, der zu Null quantisiert wird. In der obigen Gleichung besitzt unter Verwendung des Rundens die Totzone eine Breite des Quantisiererwertes Q(u, v). Das Rauschen kann verringert werden, indem die Totzone als eine Funktion des Quantisiererwertes vergrößert wird, z. B. unter Verwendung der folgenden Gleichungen:
    Der quantisierte Koeffizient c ist als:
    Figure 00110001
    definiert.
  • Der dequantisierte Wert x ^ würde sein:
    Figure 00110002
    wobei δ typischerweise ein halb ist.
  • Dann ist die Breite der Totzone gleich 2(1 – k)Q(u, v).
  • Mit diesen Gleichungen sind, falls k = 0,5 und δ = 0,5 gilt, die Quantisierung/Dequantisierung mit einer Totzone der Breite Q(u, v) üblich. Für von Null verschiedenes k kann die Totzone variabel gemacht werden. Falls k im Intervall (0, 0,5) liegt, ist die Totzone schmaler, falls k im Intervall (–1, 0,5) liegt, ist die Totzone größer. Um das Rauschen zu verringern, könnte ein Wert von k ∊ (–0,5, 0,25) verwendet werden, um eine Totzone zwischen 1,5Q(u, v) und 3,0Q(u, v) zu erzeugen.
  • Der Skalierungsfaktor kann durch eine Ratensteuereinheit 114 gesteuert werden, die im Folgenden ausführlicher beschrieben wird. In einer Ausführungsform kann eine Menge von Skalierungsfaktoren, die Zweierpotenzen sind, z. B. 1, 2, 4, 8, 16, ..., verwendet werden.
  • Ein Entropie-Codierer 110 codiert die quantisierten Werte unter Verwendung der Entropie-Codierung, um Codewörter zu erzeugen, die so formatiert sind, dass sie die komprimierten Daten 112 bereitstellen. Vor der Entropy-Codierung wird ein vorgegebener Koeffizientenordnungsprozess auf die Matrix der quantisierten Koeffizienten angewendet, um eine eindimensionale Folge von Koeffizienten zu schaffen. Eine Menge von Mustern, die als Symbole bezeichnet werden, wird aus der Folge der Koeffizienten identifiziert. Die Symbole werden wiederum auf die Codewörter abgebildet. Die Symbole können z. B. unter Verwendung einer Form der Lauflängencodierung definiert werden. Die Huffmann-Codierung wird im Allgemeinen verwendet, um die Folge der Symbole in Codes mit variabler Länge zu codieren. Die komprimierten Daten 112 enthalten die entropie-codierten Daten und irgendwelche weiteren Daten für jeden Block, jeden Makroblock oder jedes Bild, die verwendet werden können, um sie zu decodieren, wie z. B. Skalierungsfaktoren. Eine Form der Entropie-Codierung wird im Folgenden in Verbindung mit den 38 ausführlicher beschrieben.
  • Die Kompressionsparameter können geändert werden, um sowohl die Bitrate als auch die Bildqualität der dekomprimierten Daten zu beeinflussen. In der DCT-basierten Bildkompression enthalten die Kompressionsparameter, die geändert werden können, die Quantisierer, entweder in einem Bild zwischen den Abschnitten eines Bildes oder von einem Bild zum nächsten. Typischerweise ist ein Abschnitt eines Bildes eine Gruppe von DCT-Blöcken, die als ein Makroblock bezeichnet wird. Eine Änderung der Quantisierer beeinflusst die komprimierte Bitrate und die Bildqualität bei der Dekompression. Eine Vergrößerung eines Quantisiererwerts verringert typischerweise die Bitrate, verringert aber außerdem die Bildqualität. Umgekehrt vergrößert eine Verkleinerung eines Quantisiererwerts typischerweise die Bitrate, verbessert aber außerdem die Bildqualität. Die Quantisierer können einzeln angepasst werden, oder die Menge der Quantisierer kann gleichmäßig mit einem Skalierungsfaktor skaliert werden. In einer Ausführungsform wird der Skalierungsfaktor für jeden Makroblock eingestellt, um sicherzustellen, dass jeder Rahmen eine Menge von Daten besitzt, die einer festen Soll-Bitrate entspricht.
  • Eine Ratensteuereinheit 114 empfängt im Allgemeinen die Bitrate 122 der durch das Komprimieren eines Bildes erzeugten komprimierten Daten, irgendwelche Beschränkungen 116 für die Kompression (wie z. B. die Puffergröße, die Bitrate usw.) und eine Verzerrungsmetrik 120. Die Bitrate und die Verzerrung werden für jeden Makroblock für eine Anzahl von Skalierungsfaktoren in einem Statistikerfassungsdurchlauf an dem Bild bestimmt. Die Ratensteuereinheit bestimmt dann für jeden Makroblock einen geeigneten Skalierungsfaktor 118, um ihn auf die Quantisierungsmatrix anzuwenden. Die Ratensteuereinheit 114 versucht, die Verzerrungsmetrik 120 über das Bild entsprechend den Beschränkungen 116 unter Verwendung einer Technik zu minimieren, die als "Ratenverzerrungs-Optimierung" bezeichnet wird, wie sie z. B. in "Ratedistortion optimized mode selection for very low bit rate video coding and the emerging H.263 standard" von T. Wiegand, M. Lightstone, D. Mukherjee, T. G. Campbell und S. K. Mitra in IEEE Trans. Circuits Syst. Video Tech., Bd. 6, Nr. 2, S. 182–190, April 1996, und in "Optimal bit allocation under multiple rate constraints" von Antonio Ortega in Proc. of the Data Compression Conference (DCC 1996), April 1996, beschrieben ist. Insbesondere wird die Gesamtverzerrung über alle Makroblöcke im Bild über das Bild optimiert, um der Soll-Bitrate zu entsprechen und folglich einen Skalierungsfaktor für jeden Makroblock auszuwählen.
  • Es gibt mehrere Arten, um eine Verzerrungsmetrik zu berechnen. Die Verzerrungsmetrik 120 (d) kann z. B. durch das Quadrat der Skalierungsfaktors (q), d. h. d = q2, geschätzt werden, ist aber nicht auf dieses Beispiel eingeschränkt. Folglich ist die Verzerrungsmetrik für jeden Skalierungsfaktor bekannt, ohne die komprimierten Bilddaten zu analysieren.
  • Die Bitrate und die Verzerrungsmetrik, die einem Skalierungsfaktor entsprechen, für den die Quantisierung nicht ausgeführt wird, können durch das Interpolieren der gemessenen Rate und der Verzerrungswerte, die von anderen Skalierungsfaktoren erhalten werden, geschätzt werden. Eine derartige Technik ist in "Bit-rate control using piecewise approximated ratedistortion characteristics" von L-J. Lin und A. Ortega in IEEE Trans. Circuits Syst. Video Tech., Bd. 8, Nr. 4, S. 446–459, August 1998, und in "Cubic Spline Approximation of Rate and Distortion Functions for MPEC Video" von L-J. Lin, A. Ortega und C. C. Jay Kuo in Proceedings of IST/SPIE, Digital Video Compression: Algorithms and Technologies 1996, Bd. 2668, S. 169–180, und in "Video Bit-Rate Control with Spline Approximated Rate-Distortion Characteristics" von Liang-Jin Lin, PhD Thesis, University of Southern California, 1997, beschrieben. Die Bitraten können z. B. für zwei Skalierungsfaktoren, einen kleinen und einen großen, wie z. B. 2 und 128, berechnet werden. Die Interpolation zwischen diesen zwei Punkten kann verwendet werden, um einen geeigneten Skalierungsfaktor mit einer entsprechenden Soll-Bitrate zu erhalten. Falls die resultierenden komprimierten Bilddaten die Soll-Bitrate überschreiten, können die Bilddaten unter Verwendung eines anderen Skalierungsfaktors abermals komprimiert werden.
  • Die Abschnitte der Ratenverzerrungskurve, die sich über die verfügbaren Daten hinaus erstrecken, können außerdem geschätzt werden. Insbesondere gibt es für jeden Abschnitt eines Bildes und eine Quantisierungsmatrix einen Skalierungsfaktor, der als der maximale Skalierungsfaktor bezeichnet wird. Ein derartiger Skalierungsfaktor bewirkt, dass alle Quantisierer so sind, dass alle Koeffizienten zu Null quantisiert werden. Der maximale Skalierungsfaktor schafft die minimale Bitrate. Die Bitraten, die den Skalierungsfaktoren zwischen dem maximalen Skalierungsfaktor und einem Skalierungsfaktor, für den eine tatsächliche Bitrate verfügbar ist, entsprechen, können durch Interpolation, wie z. B. lineare Interpolation, geschätzt werden.
  • Ein spezifischeres Beispiel für eine Ratensteuereinheit wird im Folgenden in Verbindung mit 10 ausführlicher beschrieben.
  • Unter Bezugnahme auf 2 wird nun ein System zum Dekomprimieren oder Decodieren von Bilddaten beschrieben. Die komprimierten Bilddaten 200 werden empfangen, wobei die Codewörter durch einen Entropie-Decodierer 202 verarbeitet werden. Der Entropie-Decodierer führt das Inverse der in 1 ausgeführten Entropie-Codierung aus. Ein Beispiel-Entropie-Decodierer wird im Folgenden ausführlicher beschrieben. Der Entropie-Decodierer 202 erzeugt die quantisierten Koeffizientendaten 204. Ein inverser Quantisierer 206 kehrt die Quantisierung um, um die Koeffizienten 208 zu erzeugen. An den Koeffizienten 208 wird eine inverse Transformation 210 ausgeführt, um die Bilddaten 212 zu erzeugen.
  • 9 ist eine graphische Darstellung des Datenflusses eines Beispiel-Bildverarbeitungssystems, das einen derartigen Codierer und Decodierer verwendet. Das Bildverarbeitungssystem 900 enthält einen Datenspeicher 901, der ein computerlesbares Medium enthält, das die komprimierten Bilddaten speichert. Die komprimierten Bilddaten können z. B. in einer Datendatei gespeichert sein, oder es kann durch Metadaten in einem Dateiformat, wie z. B. MXF oder AAF, auf sie verwiesen werden. Derartige komprimierte Bilddaten können außerdem in einem Speicher, wie z. B. einem Cache, gespeichert sein. Diese komprimierten Bilddaten können außerdem für die Übertragung von Daten verwendet werden, wobei in diesem Fall 901 ein Übertragungsmedium repräsentiert, über das die komprimierten Bilddaten als computerlesbare Signale übertragen werden. Die Daten 902, die die komprimierten Bilddaten enthalten, werden durch einen Decodierer 903 gelesen und dekomprimiert. Der Decodierer entspricht 2. Die Daten, die die komprimierten Bilddaten enthalten, die bei 904 gezeigt sind, werden durch einen Codierer 905 komprimiert und geschrieben. Der Decodierer 903 kann ein oder mehrere Bilder aus den komprimierten Bilddaten lesen. Der Decodierer 903 dekomprimiert die gelesenen Daten und stellt die dekomprimierten Daten 906 einer Bildverarbeitungsanwendung 907 bereit.
  • Die Bildverarbeitungsanwendung 907 führt Operationen an den Bilddaten aus, um die unkomprimierten Bilddaten 908 zu erzeugen. Derartige Bildverarbeitungsoperationen enthalten z. B. Operationen zum Kombinieren von Bildern, wie z. B. Zusammensetzen, Mischen und Einblenden, oder Operationen in einem Bild, wie z. B. Größenänderung, Filterung und Farbkorrektur, oder Operationen zwischen zwei Bildern, wie z. B. Bewegungsschätzung, sind aber nicht darauf eingeschränkt. Die Bildverarbeitungsanwendung kann außerdem eine Anwendung sein, die digitale Bilddaten ohne die Verwendung irgendwelcher Eingangsbilddaten 906 erfasst und/oder erzeugt. Die Bildverarbeitungsanwendung kann außerdem Metadaten über die Bilddaten manipulieren, um z. B. eine Folge von Szenen der Bewegtbild-Videoinformationen zu definieren. Die Bildverarbeitungsanwendung kann außerdem die Bilddaten in einem oder mehreren Formaten wiedergeben, ohne irgendwelche Ausgangsdaten 908 bereitzustellen.
  • Obwohl 9 nur eine Bildverarbeitungsanwendung zeigt, kann es mehrere Bildverarbeitungsoperationen geben, die parallel auf die Daten wirken können oder die als eine Folge von Operationen arbeiten können. Es gibt verschiedene Arten, in denen eine Bildverarbeitungsoperation die Bilddaten verarbeiten kann, wobei die Erfindung dadurch nicht eingeschränkt ist. Als ein Beispiel kann der Decodierer und/oder die Bildverarbeitungsanwendung und/oder der Codierer Teil einer größeren Anwendung zum Bearbeiten von Videoinformationen sein. Als ein weiteres Beispiel kann der Codierer und/oder die Bildverarbeitungsanwendung und/oder der Decodierer ein "Plug-in" für eine Bearbeitungsanwendung sein, das den Zugriff auf die Bilddaten im Speicher durch eine Anwendungsprogrammierschnittstelle (API) erlaubt. Der Codierer und der Decodierer können in Hardware implementiert sein, auf die durch eine Bildverarbeitungsanwendung zugegriffen wird.
  • Nun werden die Entropie-Codierung und -Decodierung in Verbindung mit den 3 und 8 beschrieben. Die Gleichstrom-Koeffizienten können in einer Anzahl von Arten codiert und decodiert werden, z. B. mit einem im MPEG-2-Standard verwendeten Verfahren, sie sind aber nicht auf dieses eingeschränkt. Die Entropie-Codierung der Wechselstrom-Koeffizienten verwendet den Bereich der potentiellen von Null verschiedenen Amplituden für die quantisierten Koeffizienten und spaltet diesen Bereich in zwei Teile auf: [1, ..., AB] und [AB + 1, ..., Amax]. Der erste Teil ist ein Basisbereich für die Amplituden zwischen 1 und einer zweckmäßigen Amplitude, z. B. 64. Der zweite Teil ist ein Indexbereich für die Amplituden, die größer als AB sind, bis zu einschließlich der maximalen Amplitude Amax, z. B. 65 bis 4096. Die Amplituden im Basisbereich werden mit einem Huffmann-Codewort codiert, das die Amplitude repräsentiert. Der Indexbereich wird weiter in eine Anzahl von Segmenten unterteilt, von denen jedes einen Wertebereich besitzt, der AB entspricht. Die Amplituden im Indexbereich werden mit einem Huffmann-Codewort, das die Amplitude repräsentiert, und einem Indexwert, der das Segment angibt, aus dem sie herrühren, codiert. Falls es einen oder mehrere vorhergehende Koeffizienten mit dem Wert Null gibt, wird die Amplitude durch ein Huffmann-Codewort und, falls die Amplitude im Indexbereich liegt, gefolgt von einem Indexwert, gefolgt von einem weiteren Huffmann-Codewort, das die Länge der vorhergehenden Serie von Nullen repräsentiert, codiert. Die längste Serie von Nullen ist die Anzahl der zu codierenden Koeffizienten minus eins.
  • Deshalb gibt es für die Wechselstrom-Koeffizienten sechs Typen von Symbolgruppen: vier für die Amplitudensymbole, eine für die Lauflängen und eine für das Blockende, wie im Folgenden folgt. In diesem Beispiel gilt AB = 64 und AMAX = 4096, dies kann aber auf andere Paritionierungen des Amplitudenbereichs der quantisierten Koeffizienten leicht verallgemeinert werden.
    • 1. Anrb = {A nrb / 1, A nrb / 2, ..., A nrb / 64}: Die von Null verschiedenen Amplitudenkoeffizienten im Basisbereich ohne vorhergehende Serie von Koeffizienten mit dem Wert Null. Die Amplituden variieren von A nrb / 1 = 1 bis A nrb / 64 = 64.
    • 2. Awrb = {A wrb / 1, A wrb / 2, ..., A wrb / 64}: Die von Null verschiedenen Amplitudenkoeffizienten im Basisbereich mit vorhergehender Serie von Koeffizienten mit dem Wert Null. Die Amplituden variieren von A wrb / 1 = 1 bis A wrb / 64 = 64.
    • 3. Anri = {A nri / 1, A nri / 2, ... A nri / 64}: Die von Null verschiedenen Amplitudenkoeffizienten im Indexbereich ohne vorhergehende Serie von Koeffizienten mit dem Wert Null. Die Amplituden variieren von 65 bis 4096.
    • 4. Awri = {A wri / 1, A wri / 2, ..., A wri / 64}: Die von Null verschiedenen Amplitudenkoeffizienten im Indexbereich mit vorhergehender Serie von Koeffizienten mit dem Wert Null. Die Amplituden variieren von 65 bis 4096.
    • 5. R = {R1, R2, ..., Rmax}: Eine Serie von 1 oder mehreren Koeffizienten mit dem Wert Null. R1 = 1 und Rmax = 62.
    • 6. E = {EOB}: Das Blockendesymbol.
  • 3 zeigt, wie ein Koeffizient der Länge der Serie von Nullen und die Amplitudenkoeffizienten auf die Gruppen Anrb, Anri, Awrb, Awri und R abgebildet werden. Die Abbildung 300 nach 3 gibt an, dass es für die Amplituden (die längs der Achse 302 dargestellt sind) 1 bis 64 zwei mögliche Symbolgruppen Anrb (304), falls die vorhergehende Serie von Nullen Null ist, und Awrb (306), falls die vorhergehende Serie von Nullen von Null verschieden ist, gibt. Für die Amplituden 65 bis 4096 besitzt jeder Bereich von 64 Werten, z. B. 308, einen eindeutigen Index i und zwei Symbolgruppen Anri (310), falls die vorhergehende Serie von Nullen Null ist, und Awri (312), falls die vorhergehende Serie von Nullen von Null verschieden ist. Für jede Lauflänge wird ein Codewort R bereitgestellt, wie bei 314 angegeben ist; Awrb und Awri werden jedoch durch die tatsächliche Länge der Serie von Nullen nicht beeinflusst.
  • Falls die Amplitude eines Koeffizienten auf einen der Indexbereiche, entweder Anri 310 oder Awri 312, abgebildet wird, wird sie durch ein Codewort mit variabler Länge und einen Indexwert codiert. Der Indexwert P wird aus der Amplitude A durch: P = ((A – 1) >> 6), 65 ≤ A ≤ 4096berechnet. Der Wert, der verwendet wird, um das Codewort V mit variabler Länge zu bestimmen, wird entsprechend: A ^ = A – P(<< 6), 1 ≤ A ^ ≤ 64; V = VLCLUT(A ^)berechnet. Unter Verwendung dieser Techniken wird eine Gruppe von Huffmann-Codewörtern für die Symbole in den fünf Gruppen Anrb, Anri, Awrb, Awri, E erzeugt, was zu einer Gruppe von Amplituden-Codewörtern VA = {Vnrb, Vnri Vwrb, Vwri, VE} führt. Es gibt 4·64 + 1 = 129 Codewörter in VA. Eine weitere Gruppe von Huffmann-Codewörtern wird für die 62 Symbole in R erzeugt, was zu einer Gruppe von Codewörtern VR einer Null-Serie führt. Die Gruppe der Codewörter und wie sie auf die Amplitudenwerte oder die Lauflängenwerte abgebildet wird, kann unter Verwendung von Statistiken aus den Probendaten entsprechend den Huffmann-Codierungsprinzipien definiert werden.
  • Nun wird das Format derartiger Codewörter in Verbindung mit 4 beschrieben. Falls die Amplitude eines Koeffizienten auf die Symbolgruppe Anrb 304 abgebildet wird, wird ein einziges Codewort in den codierten Symbol-Bitstrom eingefügt. Das Format für dieses Codewort ist oben in 4 bei 400 gezeigt und enthält das Codewort Vnrb 402 und ein Vorzeichenbit 404. Falls die Amplitude eines Koeffizienten sind Bereich [1, ..., AB] liegt, aber ihr eine Serie von Nullen vorangeht, wird sie auf die Symbolgruppe Awrb abgebildet. In diesem Fall werden zwei Codewörter 406 in den codierten Symbol-Bitstrom eingefügt: eines für das Codewort Vwrb 408 mit einem Vorzeichenbit 410 und das zweite für die Anzahl, die die vorhergehende Serie von Nullen repräsentiert, VR 412. Falls ein Koeffizient keine vorhergehende Serie von Nullen besitzt und seine Amplitude im Bereich [AB + 1, ..., AMAX] liegt, wird er auf die Symbolgruppe Anri abgebildet; wird ein einziges Codewort 414 in den codierten Symbol-Bitstrom eingefügt, das das Codewort Vnri 416, ein Vorzeichenbit 418 und einen 6-Bit-Indexwert P 420 enthält. Falls die Amplitude eines Koeffizienten im Indexbereich [AB + 1, ..., AMAX] liegt und ihr eine Serie von Nullen vorangeht, wird sie auf die Symbolgruppe Awri abgebildet. In diesem Fall werden zwei Codewörter 422 in den codierten Symbol-Bitstrom eingefügt. Diese Codewörter enthalten ein Codewort Vwri 424 mit dem Vorzeichenbit 426 und einen 6-Bit-Index P 428, um die Amplitude darzustellen, und ein Codewort VR 430, um die Anzahl darzustellen, die die vorhergehende Serie von Nullen darstellt. Schließlich ist ein Blockende-Codewort 432 ein einziges Codewort, z. B. ein 4-Bit-Symbol, wobei es am Ende eines Blocks in den codierten Bitstrom eingefügt wird.
  • Eine derartige Codierung mit variabler Länge kann unter Verwendung von zwei Nachschlagtabellen ausgeführt werden, von denen in den 5 und 6 Beispiele gezeigt sind. Das Format für die Amplitudensymbole in der Gruppe VA ist in 5 gezeigt. Das Format für die Lauflängensymbole in der Gruppe VR ist in 6 gezeigt.
  • Jeder Eintrag, z. B. 502, in der Amplitudentabelle 500 verwendet sechzehn Bits für das Codewort 504 und fünf Bits, die die Länge 506 des Codeworts repräsentieren. Die maximale Speicheranforderung für einen Eintrag, z. B. 502, beträgt einundzwanzig Bits. Folglich kann jeder Eintrag in drei aufeinanderfolgenden Bytes gespeichert sein. In einigen Fällen kann es nützlich sein, den Wert als ein 32-Bit-Wort zu speichern. Die Gesamtzahl der für die Amplituden-Codierungstabelle erforderlichen Bytes beträgt
    Figure 00210001
    . Bei einer gegebenen Amplitude kann sie in einen Wert zwischen 1 und 64 und eine Angabe, ob ihr eine Serie vorangeht, und eine Angabe, ob sie im Basisbereich oder im Indexbereich liegt, und den Indexwert P umgesetzt werden. Diese Informationen werden auf die Nachschlagtabelle 500 angewendet, um das Codewort Vnrb, Vnri, Vwrb oder Vwri wiederzugewinnen, das mit einem Vorzeichenbit, dem Indexwert P und, falls es geeignet ist, mit dem nachfolgenden Codewort für die Lauflänge VR kombiniert werden kann.
  • Die Lauflängentabelle 600 besitzt Einträge, z. B. 602, die ein Maximum von 14 Bits erfordern, einschließlich 10 Bits für das Codewort 604 und 4 Bits für die Länge 606 des Codeworts, was in zwei Bytes gespeichert sein kann. Es gibt eine Gesamtmenge von 62 Einträgen, was bedeutet, dass die Tabelle
    Figure 00210002
    erfordert. Bei einer gegebenen Lauflänge wird das Codewort, das dieser Lauflänge entspricht, einfach aus der Tabelle wiedergewonnen.
  • Ein Beispielformat für die Decodierungstabellen ist in den 78 gezeigt. Um Speicher zu sparen, kann jede Decodierungstabelle, eine für die Amplituden-Codewörter und die andere für die Lauflängen-Codewörter, in zwei Tabellen unterteilt sein. Auf Grund der Art der Huffmann-Codes kann jedes Codewort eindeutig in einem Bitstrom lokalisiert werden. Für jedes Codewort wird er auf die geeignete Decodierungstabelle angewendet.
  • Für die Lauflängenwerte empfängt entweder die Tabelle 700 oder 702 ein Lauflängen-Codewort als eine Eingabe 704, wobei sie den entsprechenden Wert als eine Ausgabe bereitstellt. Der entsprechende Wert enthält eine Zahl 706 oder 710, die die Länge der Serie repräsentiert, und eine Länge 708 oder 712, die die Länge in Bits der Zahl 706 oder 710 repräsentiert.
  • Für die Amplitudenwerte empfängt entweder die Tabelle 800 oder 802 den Amplitudencode als eine Eingabe 804, wobei sie die entsprechenden Werte, die eine Zahl 806 oder 814, die die Länge in Bits des auszugebenden Wertes repräsentiert, eine Zahl 808 oder 816, die die Amplitude repräsentiert, einen Serienmerker 810 oder 818, der angibt, ob ein Seriencode folgt, und einen Indexmerker 812 oder 820, der angibt, ob ein Indexcode folgt, enthalten, als eine Ausgabe bereitstellt.
  • Unter Verwendung dieser Codierungsprinzipien ist das erste Codewort für die Wechselstrom-Koeffizienten eines Blocks ein Amplituden-Codewort. Der Serienmerker und der Indexmerker geben an, ob das nachfolgende Codewort ein weiteres Amplituden-Codewort, ein Indexwert oder ein Lauflängen-Codewort ist. Falls sowohl der Serienmerker als auch der Indexmerker gesetzt sind, folgt dem Amplituden-Codewort ein Index-Codewort, dann ein Lauflängen-Codewort, dem dann ein weiteres Amplituden-Codewort folgt.
  • Eine Beispielimplementierung einer Ratensteuereinheit wird nun in Verbindung mit 10 beschrieben. In dieser Implementierung führt die Ratensteuereinheit einen Statistiksammlungsdurchlauf an dem Bild aus, um die Bitraten für jeden Makroblock in dem Bild für jede Anzahl von Skalierungsfaktoren zu bestimmen. Jeder Skalierungsfaktor ist eine Zweierpotenz. Die Verzerrung, die jedem Skalierungsfaktor für jeden Makroblock entspricht, ist durch das Quadrat des Skalierungsfaktors bestimmt. Wie oben angegeben worden ist, ist die Gesamtverzerrung über alle Makroblöcke in dem Bild über das Bild minimiert, während einer Soll-Bitrate entsprochen wird. Folglich wählt die Ratensteuereinheit einen Skalierungsfaktor für jeden Makroblock aus, um die Gesamtverzerrung über das Bild zu minimieren, während einer Soll-Bitrate entsprochen wird. Der ausgewählte Skalierungsfaktor für jeden Makroblock wird dann verwendet, um die Frequenzkoeffizienten dieses Makroblocks zu quantisieren.
  • Insbesondere werden in 10 die Koeffizienten 1000 für jeden Makroblock unter Verwendung der Koeffizientengewichtung 1002 durch die feste Quantisierungsmatrix 1006 und irgendeinen Vorskalierungsfaktor 1004 gewichtet. Die gewichteten Koeffizienten 1008 werden dann durch die Quantisierer 1010 durch mehrere Skalierungsfaktoren quantisiert. In einer Hardware-Implementierung kann jeder Quantisierer parallel arbeiten und kann einem Skalierungsfaktor entsprechen, der eine Zweierpotenz ist, um nur eine Bitverschiebungsoperation auszuführen. In diesem Beispiel gibt es acht derartige Quantisierer. Es könnten so wenig wie zwei Quantisierer, die zwei Skalierungsfaktoren entsprechen, verwendet werden, falls die Ratensteuereinheit die Interpolation verwendet, um die Bitraten zu schätzen, die den anderen Skalierungsfaktoren entsprechen. Die resultierenden quantisierten Werte 1012 können an eine Codelängen-Berechnungseinrichtung 1014 angelegt werden. Die Codelängen-Berechnungseinrichtung summiert die Länge der Codewörter, die für die quantisierten Werte in jedem Block in jedem Makroblock erzeugt werden würden, um eine Bitrate 1016 für jeden Makroblock für jeden der Skalierungsfaktoren bereitzustellen. Die Amplitude 1018 des maximalen gewichteten Koeffizienten aus den gewichteten Koeffizienten 1012 wird außerdem ausgegeben. Dieser Wert 1018 bestimmt den maximalen Skalierungsfaktor, der zur völligen Quantisierung der Bilddaten führen würde. Die Ratensteuereinheit 1020 empfängt die Bitraten 1016 für jeden Skalierungsfaktor für jeden Makroblock im Bild und die maximale gewichtete Makroblock-Amplitude 1018 für jeden Makroblock im Bild und eine Soll-Bitrate 1022 für das Bild. Unter Verwendung der Ratenverzerrungs-Optimierung über das Bild minimiert die Ratensteuereinheit 1020 die Gesamtverzerrung über alle Makroblöcke in dem Bild, um der Soll-Bitrate zu entsprechen, indem sie einen Skalierungsfaktor 1024 für jeden Makroblock auswählt. Der Skalierungsfaktor 1024 für jeden Makroblock wird dann verwendet, um die Koeffizienten für den Makroblock zu quantisieren, die dann entropie-codiert werden.
  • Eine derartige Codierung und Decodierung kann z. B. für hochauflösendes Video verwendet werden, bei dem die Bilder 720 bis 1080 Zeilen und 1280 bis 1920 Bildpunkte pro Zeile besitzen, ist aber nicht darauf eingeschränkt. Die Rahmenraten variieren im Allgemeinen von 23,976 bis 60, wobei höhere Rahmenraten typischerweise eine Halbbild-Rate eines verschachtelten Rahmens repräsentieren. Jeder Bildpunkt kann unter Verwendung einer Anzahl von Komponenten dargestellt werden, z. B. durch die Helligkeit und den Farbwert (Y, Cr, Cb) oder durch Rot, Grün und Blau, wobei jede Komponente unter Verwendung einer Anzahl von Bits (die als die Bittiefe bezeichnet wird) dargestellt ist, ist aber nicht darauf eingeschränkt. Die Bittiefe beträgt typischerweise 8 oder 10 Bits, sie könnte aber 12 oder 16 Bits betragen. Derartige Daten besitzen eine signifikant höhere Bandbreite als Video mit Standardauflösung. Indem ein Vorskalierungsfaktor vorgesehen wird, wie oben beschrieben worden ist, kann der gleiche Codierer verwendet werden, um sowohl 8-Bit- als auch 10-Bit-Daten zu codieren. Eine feste Quantisierungsmatrix kann für jede von einer Anzahl verschiedener Soll-Bitraten vorgesehen sein.
  • Unter Bezugnahme auf 11 wird nun eine Beispiel-Datenstruktur für komprimierte Bilddaten beschrieben. Diese Datenstruktur enthält einen Bildkopf 10 und die Bildabtastdaten 12. Es kann außerdem ein Bild-Nachsatz 14 verwendet werden. Der Bildkopf speichert die Informationen über die Bildabtastdaten, wobei eine Beispiel-Datenstruktur für ihn im Folgenden in Verbindung mit den 1416 ausführlicher beschrieben wird. Die Bildabtastdaten 12 sind eine Datenstruktur, die die codierten Bilddaten für ein Bild speichert. Eine Beispiel-Datenstruktur für die Bildabtastdaten wird im Folgenden in Verbindung mit den 1213 ausführlicher beschrieben. Die Bild-Nachsatz-Daten beenden die Datenstruktur für ein Bild.
  • Nun wird unter Bezugnahme auf 12 eine Beispiel-Datenstruktur für die Bildabtastdaten beschrieben. Die Bildabtastdaten sind durch einen Bildabtast-Kopf 20, der auf die Rasterabtastdaten verweist, wie bei 22, 24, 26 und 28 gezeigt ist, definiert. Ein Bild ist in mehrere Bänder aus mehreren Zeilen unterteilt, wobei jedes Band aus mehreren Zeilen in Makroblöcke unterteilt ist. Die Gruppe der Makroblöcke, die ein Band definieren, wird hierin als eine Makroblock-Rasterabtastung bezeichnet. Die Rasterabtastdaten, z. B. 22, sind eine Datenstruktur, die die codierten Bilddaten für eine Makroblock-Rasterabtastung speichert. Eine Beispiel-Datenstruktur für die Rasterabtastdaten wird im Folgenden in Verbindung mit 13 ausführlicher beschrieben.
  • Unter Bezugnahme auf 13 wird nun eine Beispiel-Datenstruktur für die Rasterabtastdaten beschrieben. Die Rasterabtastdaten sind durch einen Kopf 30 der Rasterabtastung definiert, der auf die codierten Daten für die Makroblöcke, wie durch 32, 34, 36 und 38 gezeigt ist, für ein Band von Zeilen im Bild verweist. Den codierten Daten für die Makroblöcke folgt die Füllung 39. Die Füllung stellt sicher, dass die Daten für jede Makroblock-Rasterabtastung an einer Datengrenze enden. Diese Datengrenze hängt von der Menge der Daten ab, die einen effizienten Zugriff durch einen Prozessor erlaubt, z. B. 4096 Bytes (4 kbyte), ist aber nicht darauf eingeschränkt. Die codierten Daten für einen Makroblock besitzen eine Datenstruktur, die zu einer Makroblock-Datenstruktur ähnlich ist, die im MPEG-2-Standard gefunden wird.
  • Nun wird unter Bezugnahme auf 14 eine Beispiel-Datenstruktur für die Bildkopf-Informationen beschrieben. Der Bildkopf verweist auf Daten, die den Zugriff auf einen Bildabtastindex erlauben, der ein Index der Stellen jeder Makroblock-Rasterabtastung in den Bildabtastdaten und der Stellen der Makroblockdaten in jeder Makroblock-Rasterabtastung ist. Eine Beispiel-Datenstruktur für den Bildabtastindex wird im Folgenden in Verbindung mit 16 beschrieben. Die Bildkopf-Datenstruktur 40 kann z. B. allgemeine Informationen 42 über das Bild enthalten, die zu den Informationen ähnlich sind, die durch eine Bildkopf-Datenstruktur bereitgestellt werden, wie sie durch den MPEG-2-Standard definiert ist. Der Bildkopf 40 kann außerdem einen Verweis auf den Bildkopftyp 44 enthalten. Wenn der Typ in diesem Feld einem vorgegebenen Wert entspricht (der in 14 als I-Rahmen-Bild-ID bezeichnet ist), dann ist der folgende Wert 46 ein Verweis auf einen Bild-Deskriptor (der in 14 als ein "I_frame_image_descriptor" bezeichnet ist), der das Bild beschreibt und auf den Bildabtastindex verweist. Eine Beispiel-Datenstruktur für den I_frame_image_descriptor ist in 5 gezeigt.
  • Nun wird unter Bezugnahme auf 15 eine Beispiel-Datenstruktur für einen Bild-Deskriptor beschrieben. Durch den Bildkopf wird auf einen Bild-Deskriptor 50 verwiesen, wobei der Bild-Deskriptor 50 auf einen Bildabtastindex verweist. Der Bild-Deskriptor 50 enthält allgemeine Informationen über das Bild, wie bei 52 angegeben ist. Diese allgemeinen Informationen sind zu den Datenstrukturen im MPEG-2-Standard zum Beschreiben der I-Rahmen ähnlich. Der Bild-Deskriptor kann einen Anfangscode 54 für einen Bildabtastindex enthalten (der in 15 als "imagescan_index_start_code" bezeichnet ist), dem, wenn er vorhanden ist, ein Wert 56, der die Größe des Bildabtastindex angibt, und ein Verweis 58 auf die Datenstruktur für den Bildabtastindex folgt. Eine Beispiel-Datenstruktur für den Bildabtastindex ist in 16 gezeigt.
  • Nun wird unter Bezugnahme auf 16 eine Beispiel-Datenstruktur für einen Bildabtastindex beschrieben. Der Bildabtastindex 60 enthält einen Wert 62, der eine Anzahl der Einträge im Index angibt, die der Anzahl der Makroblock-Rasterabtastungen in den Bildabtastdaten entspricht. Ein Wert 64 gibt eine Anzahl von Zeilen pro Makroblock-Rasterabtastung an. Diesen Daten folgen die Einträge 66 des Index, deren Anzahl der durch den Wert 62 angegebenen Anzahl entspricht. Jeder Eintrag im Index gibt einen Versatz der Makroblock-Rasterabtastung in der Bildabtastung an.
  • Unter Verwendung des Bildabtastindex kann auf jede Makroblock-Rasterabtastung wahlfrei und direkt zugegriffen werden, was folglich erlaubt, dass verschiedene Makroblock-Rasterabtastungen durch verschiedene Prozessoren parallel verarbeitet werden. Folglich können mehrere parallel arbeitende Prozessoren ein Bild effizient decodieren.
  • 17 ist eine graphische Darstellung des Datenflusses eines Beispiel-Bildverarbeitungssystems, das dieses Bitstrom-Format verwendet. Das Bildverarbeitungssystem 70 enthält einen Datenspeicher 71, der den Bitstrom z. B. in einer Datendatei speichert, wobei alternativ auf den Bitstrom durch Metadaten in einem Dateiformat, wie z. B. MXF oder AAF, Bezug genommen werden kann. Ein derartiger Bitstrom kann außerdem in einem Speicher, wie z. B. einem Cache, gespeichert sein. Dieses Bitstrom-Format kann außerdem als ein Format für die Übertragung der Daten verwendet werden, wobei in diesem Fall 71 ein Übertragungsmedium repräsentiert, über das die komprimierten Bilddaten als computerlesbare Signale übertragen werden. Die Daten 72, die den Bitstrom enthalten, werden durch den Decodierer 73 gelesen und dekomprimiert. Die Daten, die den Bitstrom enthalten, die bei 74 gezeigt sind, werden durch einen Codierer 75 in einem derartigen Format geschrieben. Der Decodierer 73 kann einen oder mehrere Makroblock-Rasterabtastungen aus dem Bitstrom lesen. Der Decodierer 73 dekomprimiert die gelesenen Daten und stellt die dekomprimierten Daten 76 einer Bildverarbeitungsanwendung 77 bereit.
  • Die Bildverarbeitungsanwendung 77 führt Operationen an den Bilddaten aus, um die unkomprimierten Bilddaten 78 zu erzeugen. Derartige Bildverarbeitungsoperationen können z. B. Operationen zum Kombinieren von Bildern, wie z. B. Zusammensetzen, Mischen und Einblenden, oder Operationen in einem Bild, wie z. B. Größenänderung, Filterung und Farbkorrektur, oder Operationen zwischen zwei Bildern, wie z. B. Bewegungsschätzung, enthalten, sind aber nicht darauf eingeschränkt. Die Bildverarbeitungsanwendung kann außerdem eine Anwendung sein, die digitale Bilddaten ohne die Verwendung irgendwelcher Eingangsbilddaten erfasst und/oder erzeugt. Die Bildverarbeitungsanwendung kann außerdem Metadaten über die Bilddaten manipulieren, um z. B. eine Folge von Szenen der Bewegtbild-Videoinformationen zu definieren. Die Bildverarbeitungsanwendung kann außerdem die Bilddaten in einem oder mehreren Formaten wiedergeben, ohne irgendwelche Ausgangsdaten bereitzustellen.
  • Obwohl 17 nur eine Bildverarbeitungsanwendung zeigt, kann es mehrere Bildverarbeitungsoperationen geben, die parallel auf die Daten wirken können oder die als eine Folge von Operationen arbeiten können. Es gibt verschiedene Arten, in denen eine Bildverarbeitungsoperation die Bilddaten verarbeiten kann, wobei die Erfindung dadurch nicht eingeschränkt ist. Als ein Beispiel kann der Decodierer und/oder die Bildverarbeitungsanwendung und/oder der Codierer Teil einer größeren Anwendung zum Bearbeiten von Videoinformationen sein, wobei er auf die Bilddaten im selben Puffer im Speicher zugreifen kann. Als ein weiteres Beispiel kann der Decodierer und/oder die Bildverarbeitungsanwendung und/oder der Codierer ein "Plug-in" für eine Bearbeitungsanwendung sein, das den Zugriff auf die Bilddaten im Speicher durch eine Anwendungsprogrammierschnittstelle (API) erlaubt. Der Codierer und der Decodierer können in Hardware implementiert sein, auf die durch die Bildverarbeitungsanwendung zugegriffen wird.
  • Unter Bezugnahme auf 18 wird nun ein Beispielprozess für das Lesen eines derartigen Bitstroms für ein Bild unter Verwendung der Beispiel-Datenstrukturen nach den 1116 beschrieben. Auf den Bildkopf (14) wird zugegriffen (80), um den i_frame_image_descriptor zu lokalisieren. Auf den i_frame_image_descriptor (15) wird zugegriffen (82), um den Bildabtastindex zu lokalisieren. Dann wird auf den Bildabtastindex (16) zugegriffen (84), um für jede Makroblock-Rasterabtastung den Versatz der Makroblock-Rasterabtastung (z. B. 24) in den Bildabtastdaten (12 in 11) zu lokalisieren. Unter Verwendung der wiedergewonnenen Versätze kann jede der Makroblock-Rasterabtastungen aus den Bildabtastdaten wiedergewonnenen (86) und decodiert werden. Weil auf jede Makroblock-Rasterabtastung wahlfrei und direkt zugegriffen werden kann, können verschiedene Makroblock-Rasterabtastungen durch verschiedene Prozessoren parallel verarbeitet werden.
  • Falls jede Makroblock-Rasterabtastung einen Blockende-Code besitzt, der das Ende der Daten für die Makroblock-Rasterabtastung angibt, und falls die Menge der Füllung bekannt ist, kann in einer Ausführungsform der Prozess nach 18 modifiziert werden, um die Daten ohne den Index zu lesen. Bei diesem Prozess können die Daten der Makroblock-Rasterabtastungen nach dem Blockende-Code abgetastet werden. Wenn die Füllung so ist, dass sie an einer bestimmbaren Datengrenze (wie z. B. einer Datengrenze, die durch 4096 Bytes teilbar ist) endet, dann ist das Ende der Makroblock-Rasterabtastung bekannt. Das Lesen kann direkt zum Ende der Makroblock-Rasterabtastung springen.
  • Nun wird unter Bezugnahme auf 19 ein Beispielprozess zum Schreiben eines derartigen Bitstroms für ein Bild unter Verwendung der Beispiel- Datenstrukturen nach den 1116 beschrieben. In diesem Beispiel wird angenommen, dass die Daten durch die Makroblock-Rasterabtastung der Reihe nach komprimiert und decodiert werden. Das heißt, jeder Makroblock wird der Reihe nach codiert, wie sie längs einer Makroblock-Rasterabtastung auftreten, wobei die Makroblock-Rasterabtastungen der Reihe nach codiert werden, wie sie im Bild auftreten. Der Schreibprozess umfasst für jedes Bild das Initialisieren (90) der Datenstrukturen für den Bildkopf, den Bildrahmen-Deskriptor und den Bildabtastindex. Die Zahl der Einträge, die Anzahl der Zeilen pro Makroblock-Rasterabtastung und die Größe des Bildabtastindex können bekannt sein und in diesen Datenstrukturen gesetzt werden, bevor die Kompression des Bilds beginnt. Da jeder Makroblock komprimiert und in den Bildabtast-Bitstrom geschrieben wird, wird der Versatz des ersten Makroblocks der ersten Makroblock-Rasterabtastung als ein Eintrag im Bildabtastindex gespeichert (92). Die Größen der Makroblöcke werden für alle Makroblöcke in der Makroblock-Rasterabtastung akkumuliert (94). Nachdem alle Makroblöcke in der Makroblock-Rasterabtastung geschrieben worden sind, wird die akkumulierte Größe auf die nächste Datengrenze (z. B. ein Vielfaches von 4096 oder 4 kbyte) aufgerundet (96). Der Unterschied zwischen der akkumulierten Größe und der gerundeten Größe ist eine zum Ende der Daten für die Makroblock-Rasterabtastung hinzugefügte (98) Menge der Füllung, die in den Bitstrom der Bildabtastung geschrieben wird. Die Schritte 92 bis 98 werden für jede Makroblock-Rasterabtastung in dem Bild wiederholt, wie bei 99 angegeben ist. Die Daten für jede Makroblock-Rasterabtastung können außerdem parallel codiert werden.
  • Die verschiedenen Komponenten des hierin beschriebenen Systems können als ein Computerprogramm unter Verwendung eines universellen Computersystems implementiert sein. Ein derartiges Computersystem enthält typischerweise eine Haupteinheit, die sowohl mit einer Ausgabevorrichtung, die die Informationen einem Anwender anzeigt, als auch mit einer Eingabevorrichtung, die die Eingabe von einem Anwender empfängt, verbunden ist. Die Haupteinheit enthält im Allgemeinen einen Prozessor, der über einen Verbindungsmechanismus mit einem Speichersystem verbunden ist. Die Eingabevorrichtung und die Ausgabevorrichtung sind außerdem über den Verbindungsmechanismus mit dem Prozessor und dem Speichersystem verbunden.
  • Mit dem Computersystem können eine oder mehrere Ausgabevorrichtungen verbunden sein. Beispiel-Ausgabevorrichtungen enthalten eine Katodenstrahlröhren-Anzeige (CRT-Anzeige), Flüssigkristallanzeigen (LCD) und andere Videoausgabevorrichtungen, Drucker, Kommunikationsvorrichtungen, wie z. B. ein Modem, und Speichervorrichtungen, wie z. B. eine Platte oder ein Band, sind aber nicht darauf eingeschränkt. Mit dem Computersystem können eine oder mehrere Eingabevorrichtungen verbunden sein. Beispiel-Eingabevorrichtungen enthalten eine Tastatur, eine Kleintastatur, eine Rollkugel, eine Maus, Stift und Tablett, eine Kommunikationsvorrichtung und Dateneingabevorrichtungen, sind aber nicht darauf eingeschränkt. Die Erfindung ist nicht auf die speziellen Eingabe- oder Ausgabevorrichtungen, die in Kombination mit dem Computersystem verwendet werden, oder auf jene, die hierin beschrieben sind, eingeschränkt.
  • Das Computersystem kann ein universelles Computersystem sein, das unter Verwendung einer Computer-Programmiersprache programmierbar ist. Das Computersystem kann außerdem eine speziell programmierte spezielle Hardware sein. In einem universellen Computersystem ist der Prozessor typischerweise ein kommerziell verfügbarer Prozessor. Der universelle Computer besitzt außerdem typischerweise ein Betriebssystem, das die Ausführung der anderen Computerprogramme steuert und die Ablaufsteuerung, das Austesten, die Eingabe-/Ausgabesteuerung, die Abrechnung, die Kompilierung, die Speicherzuordnung, das Datenmanagement und das Speichermanagement und die Kommunikationssteuerung und verwandte Dienste steuert.
  • Ein Speichersystem enthält typischerweise ein computerlesbares Medium. Das Medium kann flüchtig oder nicht flüchtig, beschreibbar oder nicht beschreibbar und/oder wiederbeschreibbar oder nicht wiederbeschreibbar sein. Das Speichersystem speichert die Daten typischerweise in binärer Form. Derartige Daten können ein Anwendungsprogramm, das durch den Mikroprozessor auszuführen ist, oder Informationen, die auf der Platte gespeichert sind, um durch das Anwendungsprogramm verarbeitet zu werden, definieren. Die Erfindung ist nicht auf ein spezielles Speichersystem eingeschränkt.
  • Ein System, wie es hierin beschrieben ist, kann in Software oder Hardware oder Firmware oder in einer Kombination aus den drei implementiert sein. Die verschiedenen Elemente des Systems können entweder einzeln oder in Kombination als ein oder mehrere Computerprogrammprodukte implementiert sein, in denen Computerprogrammbefehle in einem computerlesbaren Medium für die Ausführung durch einen Computer gespeichert sind. Verschiedene Schritte eines Prozesses können durch einen Computer ausgeführt werden, der derartige Computerprogrammbefehle ausführt. Das Computersystem kann ein Mehrprozessor-Computersystem sein oder kann mehrere Computer enthalten, die über ein Computernetz verbunden sind. Die Komponenten des Systems können separate Module eines Computerprogramms sein, oder sie können separate Computerprogramme sein, die in separaten Computern betriebsfähig sein können. Die durch diese Komponenten erzeugten Daten können in einem Speichersystem gespeichert werden oder zwischen Computersystemen übertragen werden.

Claims (10)

  1. Verfahren für die rahmeninterne Kompression (oder Intrarahmen-Kompression) mit fester Bitrate von eine Folge von Bildern enthaltenden Videosignalen, das für jedes Bild umfasst: Transformieren von Abschnitten des Bildes (100), um Frequenzbereichskoeffizienten (104, 1000) für jeden Abschnitt zu erzeugen; Auswählen einer Quantisierungsmatrix (1006) aus mehreren Quantisierungsmatrizen, wovon jede für eine Entsprechende von mehreren Bitraten definiert ist, in Übereinstimmung mit einer Soll-Bitrate (1022); Bestimmen einer Bitrate (1016) für jeden transformierten Abschnitt des Bildes durch Anwenden der ausgewählten Quantisierungsmatrix mit jedem von mehreren Skalierungsfaktoren auf den transformierten Abschnitt; Schätzen einer Verzerrung jedes Abschnitts in Übereinstimmung mit den mehreren Skalierungsfaktoren; Auswählen eines Skalierungsfaktors (1024) für jeden Abschnitt, um die Gesamtverzerrung in dem Bild minimal zu machen, während eine Soll-Bitrate erzielt wird; Quantisieren der Frequenzbereichskoeffizienten für jeden Abschnitt unter Verwendung der ausgewählten Quantisierungsmatrix mit Skalierung durch den ausgewählten Skalierungsfaktor für den Abschnitt; Ausführen einer Entropie-Codierung der quantisierten Frequenzbereichskoeffizienten (108) unter Verwendung einer Codierung mit variabler Länge, um für jeden der definierten Abschnitte komprimierte Daten (112) zu schaffen; und Ausgeben der komprimierten Daten für jeden der definierten Abschnitte, um einen komprimierten Bitstrom mit der Soll-Bitrate zu schaffen.
  2. Verfahren nach Anspruch 1, wobei die Verzerrung in Übereinstimmung mit einem Quadrat des Skalierungsfaktors geschätzt wird.
  3. Verfahren nach Anspruch 1, wobei die Quantisierung der Frequenzbereichskoeffizienten (1000) ferner das Skalieren unter Verwendung eines Gewichtungsfaktors (1002), der aus mehreren Gewichtungsfaktoren in Übereinstimmung mit der Bittiefe der Bilddaten ausgewählt wird, umfasst.
  4. Verfahren nach Anspruch 1, wobei jeder der mehreren Skalierungsfaktor eine Zweierpotenz ist.
  5. Verfahren nach Anspruch 4, wobei der ausgewählte Skalierungsfaktor eine Zweierpotenz ist.
  6. Verfahren nach Anspruch 1, wobei das Bestimmen der Bitrate umfasst: Bestimmen eines maximalen Skalierungsfaktors, der bewirkt, dass die Bilddaten vollständig quantisiert werden; und Interpolieren, um eine geschätzte Bitrate für einen oder mehrere Skalierungsfaktoren zwischen dem maximalen Skalierungsfaktor und einem größten Skalierungsfaktor, für den eine Bitrate bestimmt worden ist, zu schaffen.
  7. Verfahren nach Anspruch 1, wobei die Entropie-Codierung umfasst: für jeden von Null verschiedenen Wert, dem kein Nullwert vorhergeht, Bestimmen, ob der von Null verschiedene Wert in einem Basisbereich oder in einem Indexbereich liegt; für jeden von Null verschiedenen Wert, dem kein Nullwert vorhergeht und der im Basisbereich liegt, Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer ersten Gruppe von Codewörtern; für jeden von Null verschiedenen Wert, dem kein Nullwert vorhergeht und der im Indexbereich liegt, Bestimmen eines Indexes und Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer zweiten Gruppe von Codewörtern, dem der Index folgt; für jeden von Null verschiedenen Wert, dem ein Nullwert vorhergeht, Bestimmen, ob der von Null verschiedene Wert in einem Basisbereich oder einem Indexbereich liegt; für jeden von Null verschiedenen Wert, dem ein Nullwert vorhergeht und der im Basisbereich liegt, Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer dritten Gruppe von Codewörtern und Codieren des Nullwertes unter Verwendung eines Codewortes aus einer fünften Gruppe von Codewörtern und nach dem Codewort für den von Null verschiedenen Wert; und für jeden von Null verschiedenen Wert, dem ein Nullwert vorhergeht und der im Indexbereich liegt, Bestimmen eines Indexes und Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer vierten Menge von Codewörtern, dem der Index folgt, und Codieren des Nullwertes unter Verwendung eines Codewortes aus der fünften Gruppe von Codewörtern und nach dem Codewort für den von Null verschiedenen Wert.
  8. Verfahren nach Anspruch 1, wobei die Quantisierungsmatrix mehrere Quantisierer enthält, wobei jeder Quantisierer einem Frequenzkoeffizienten entspricht und wobei das Quantisieren der Frequenzkoeffizienten das Quantisieren jedes Frequenzkoeffizienten unter Verwendung des entsprechenden Quantisierers enthält, um so eine Totzone zu schaffen, deren Breite größer als ein Wert des Quantisierers ist.
  9. Verfahren zum Entropiecodieren einer Reihe von Werten, das umfasst: für jeden von Null verschiedenen Wert, dem kein Nullwert vorhergeht, Bestimmen, ob der von Null verschiedene Wert in einem Basisbereich oder einem Indexbereich liegt; für jeden von Null verschiedenen Wert, dem kein Nullwert vorhergeht und der im Basisbereich liegt, Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer ersten Gruppe von Codewörtern; für jeden von Null verschiedenen Wert, dem kein Nullwert vorhergeht und der im Indexbereich liegt, Bestimmen eines Indexes und Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer zweiten Gruppe von Codewörtern, dem der Index folgt; für jeden von Null verschiedenen Wert, dem ein Nullwert vorhergeht, Bestimmen, ob der von Null verschiedene Wert in einem Basisbereich oder einem Indexbereich liegt; für jeden von Null verschiedenen Wert, dem ein Nullwert vorhergeht und der im Basisbereich liegt, Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer dritten Gruppe von Codewörtern und Codieren des Nullwertes unter Verwendung eines Codewortes aus einer fünften Gruppe von Codewörtern und nach dem Codewort für den von Null verschiedenen Wert; und für jeden von Null verschiedenen Wert, dem ein Nullwert vorhergeht und der im Indexbereich liegt, Bestimmen eines Indexes und Codieren des von Null verschiedenen Wertes unter Verwendung eines Codewortes aus einer vierten Gruppe von Codewörtern, dem der Index folgt, und Codieren des Nullwertes unter Verwendung eines Codewortes von einer fünften Gruppe von Codewörtern und nach dem Codewort für den von Null verschiedenen Wert.
  10. Verfahren zum Optimieren der Bitrate und der Verzerrung bei der Kompression von Daten, das umfasst: Bestimmen einer Bitrate (1016) für jeden Abschnitt der Daten, der komprimiert wird, unter Verwendung mehrerer Skalierungsfaktoren, umfassend: Bestimmen eines maximalen Skalierungsfaktors, der eine vollständige Verzerrung des Abschnitts der Daten bewirkt; und Interpolieren zwischen dem maximalen Skalierungsfaktor und dem größten Skalierungsfaktor, für den eine Bitrate bestimmt worden ist, um eine Bitrate zu schätzen, die einem Skalierungsfaktor zwischen dem größten Skalierungsfaktor und dem maximalen Skalierungsfaktor entspricht; Schätzen einer Verzerrung für jeden Abschnitt der Daten, der komprimiert wird, in Übereinstimmung mit den mehreren Skalierungsfaktoren; und Auswählen von Skalierungsfaktoren (1024) für jeden Abschnitt, um die gesamte Verzerrung der Daten minimal zu machen, um eine Soll-Bitrate (1022) zu erzielen.
DE602004011213T 2003-04-04 2004-04-01 Intraframe-komprimierung und dekomprimierung von videosignalen mit fester bitrate Expired - Lifetime DE602004011213T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US46051703P 2003-04-04 2003-04-04
US46054703P 2003-04-04 2003-04-04
US460547P 2003-04-04
US460517P 2003-04-04
PCT/US2004/010243 WO2004091221A2 (en) 2003-04-04 2004-04-01 Fixed bit rate, intraframe compression and decompression of video

Publications (2)

Publication Number Publication Date
DE602004011213D1 DE602004011213D1 (de) 2008-02-21
DE602004011213T2 true DE602004011213T2 (de) 2009-01-08

Family

ID=33162234

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004011213T Expired - Lifetime DE602004011213T2 (de) 2003-04-04 2004-04-01 Intraframe-komprimierung und dekomprimierung von videosignalen mit fester bitrate

Country Status (8)

Country Link
EP (1) EP1629675B1 (de)
AT (1) ATE383716T1 (de)
CA (3) CA2521467C (de)
DE (1) DE602004011213T2 (de)
DK (1) DK1629675T3 (de)
ES (1) ES2299847T3 (de)
PT (1) PT1629675E (de)
WO (1) WO2004091221A2 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7403561B2 (en) 2003-04-04 2008-07-22 Avid Technology, Inc. Fixed bit rate, intraframe compression and decompression of video
US7433519B2 (en) * 2003-04-04 2008-10-07 Avid Technology, Inc. Bitstream format for compressed image data
GB2492392B (en) * 2011-06-30 2014-09-03 Canon Kk Method for encoding and decoding an image, and corresponding devices
GB2575121B (en) * 2018-06-29 2022-12-28 Imagination Tech Ltd Guaranteed data compression
CN116438794B (zh) * 2022-05-31 2023-12-12 上海玄戒技术有限公司 图像压缩方法、装置、电子设备、芯片及储存介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69222332T2 (de) * 1991-02-21 1998-01-29 Nec Corp Kodierungsgerät zur Kompression von bewegten Bilddaten
DE69424591T2 (de) * 1993-03-29 2001-01-18 Canon Kk Verfahren zur Kontrolle der Datenmenge und Kodierer zur Durchführung desselben.
US5724097A (en) * 1993-10-18 1998-03-03 Mitsubishi Denki Kabushiki Kaisha Adaptive quantization of video based on edge detection
US6160846A (en) * 1995-10-25 2000-12-12 Sarnoff Corporation Apparatus and method for optimizing the rate control in a coding system
US5821887A (en) * 1996-11-12 1998-10-13 Intel Corporation Method and apparatus for decoding variable length codes
WO1998035500A1 (en) * 1997-02-11 1998-08-13 Sharp Kabushiki Kaisha Method and apparatus for optimizing quantizer values in an image encoder
US6118822A (en) * 1997-12-01 2000-09-12 Conexant Systems, Inc. Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes
US6408026B1 (en) * 1999-08-06 2002-06-18 Sony Corporation Deadzone quantization method and apparatus for image compression

Also Published As

Publication number Publication date
WO2004091221A3 (en) 2005-04-21
CA2639643A1 (en) 2004-10-21
EP1629675B1 (de) 2008-01-09
PT1629675E (pt) 2008-04-18
EP1629675A2 (de) 2006-03-01
CA2640597A1 (en) 2004-10-21
DK1629675T3 (da) 2008-05-19
CA2521467A1 (en) 2004-10-21
ES2299847T3 (es) 2008-06-01
ATE383716T1 (de) 2008-01-15
CA2639643C (en) 2010-11-09
DE602004011213D1 (de) 2008-02-21
CA2521467C (en) 2008-12-16
CA2640597C (en) 2010-06-22
WO2004091221A2 (en) 2004-10-21

Similar Documents

Publication Publication Date Title
DE60305325T2 (de) System und verfahren zur ratenverzerrungsoptimierten datenpartitionierung zur videocodierung unter verwendung von rückwärtsadaption
DE60125301T2 (de) Videosignaltranskodierung
DE69116869T2 (de) Digitale bildkodierung mit einer zufallsabtastung der bilder
DE69434668T2 (de) Adaptives Codierungs- und Decodierungsverfahren mit variabler Länge für Bilddaten
DE3751416T2 (de) Bildcodiersystem zum Ueberwachen einer Informationsmenge durch Bildung eines Histogramms.
CA2249259C (en) Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US7729423B2 (en) Fixed bit rate, intraframe compression and decompression of video
DE60308255T2 (de) 2D-Transformationen zur Bild- und Videokodierung
EP0349847B1 (de) Verfahren und Vorrichtung für die Bilddatenkomprimierung
DE112010004109B4 (de) Verfahren zum Dekodieren eines Bitstroms
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
EP1995971A1 (de) Verfahren und vorrichtung zur realisierung von quantisierung beim codieren/decodieren
WO2003061292A1 (en) Coder matched layer separation and interpolation for compression of compound documents
DE10253418A1 (de) Verfahren zum Codieren/Decodieren eines Bildsignals
DE102005040026A1 (de) Vorrichtung und Verfahren zur Verarbeitung von Video-/Bilddaten
DE60211171T2 (de) Verarbeitung von einem komprimierten mediensignal
DE102007020292A1 (de) Verfahren zur Komprimierung von Daten unter Verwendung einer Lauflängen-Kodierung insbesondere für medizinische Bilddaten
DE112008003626T5 (de) Kodierung mit geringer Komplexität in Datenkomprimierungssystemen
DE60300591T2 (de) Verfahren und Vorrichtung zur Dekomprimierung von Bildern durch Transkodierung in komprimierte Bewegtbilder
DE69724440T2 (de) Mpeg-2-videodatendekodierer für codes variabler länge und dekodiererarchitektur mit zwei geschwindigkeiten
DE69126525T2 (de) Digitale bildverarbeitung mit filterung der blockkanten
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
DE10196431B4 (de) Alternative Blockreihenfolgen zur besseren Vorhersage
DE10296787T5 (de) Selektive Prädikation für ein Intra-Codieren eines Videodatenblocks
DE602004011213T2 (de) Intraframe-komprimierung und dekomprimierung von videosignalen mit fester bitrate

Legal Events

Date Code Title Description
8364 No opposition during term of opposition