DE69723019T2 - Arithmetische Bildkodierung - Google Patents

Arithmetische Bildkodierung Download PDF

Info

Publication number
DE69723019T2
DE69723019T2 DE69723019T DE69723019T DE69723019T2 DE 69723019 T2 DE69723019 T2 DE 69723019T2 DE 69723019 T DE69723019 T DE 69723019T DE 69723019 T DE69723019 T DE 69723019T DE 69723019 T2 DE69723019 T2 DE 69723019T2
Authority
DE
Germany
Prior art keywords
current
context model
line
column
data
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 - Fee Related
Application number
DE69723019T
Other languages
English (en)
Other versions
DE69723019D1 (de
Inventor
Robert A. Boise Rust
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69723019D1 publication Critical patent/DE69723019D1/de
Application granted granted Critical
Publication of DE69723019T2 publication Critical patent/DE69723019T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum arithmetischen Codieren eines Bildes ohne den Bedarf, eine ganze Zeile von Bilddaten zu puffern.
  • Hintergrund der Erfindung
  • Im Stand der Technik sind Datenkomprimierungssysteme bekannt, die einen Strom von Digitaldatensignalen in komprimierte Digitalcodesignale codieren und die komprimierten Digitalcodesignale zurück in die Originaldaten decodieren. Datenkomprimierung bezieht sich auf jeden Prozeß, der versucht, Daten in einem gegebenen Format in ein alternatives Format umzuwandeln, das weniger Raum erfordert als das Original. Die Zielsetzung von Datenkomprimierungssystemen ist es, Einsparungen in der Speichermenge, die erforderlich ist, um einen gegebenen Körper von digitalen Informationen zu halten, oder in der Menge von Zeit zu bewirken, die erforderlich ist, um denselben zu übertragen.
  • Um von praktischem Nutzen zu sein, sollte ein Allzweck-Digitaldatenkomprimierungssystem bestimmte Kriterien erfüllen. Das System sollte Reziprozität aufweisen. Damit ein Datenkomprimierungssystem die Eigenschaft der Reziprozität besitzt, muß es möglich sein, die komprimierten Daten ohne jegliche Änderung oder jeglichen Informationsverlust zurück in die Originalform derselben wieder zu vergrößern oder zu decodieren. Die decodierten und die Originaldaten müssen mit Bezug aufeinander identisch und ununterscheidbar sein. Die Eigenschaft der Reziprozität ist gleichbedeutend mit der strenger Geräuschlosigkeit, die in der Informationstheorie verwendet wird. Einige Anwendungen erfordern kein strenges Festhalten an der Eigenschaft der Reziprozität. Eine derartige Anwendung ist insbesondere, wenn mit graphischen Daten umgegangen wird. Weil das menschliche Auge nicht so geräuschempfindlich ist, ist eine gewisse Änderung oder ein Informationsverlust während dem Komprimierungs/Dekomprimierungsprozeß annehmbar.
  • Das System sollte mit Bezug auf die Datenraten, die durch die Vorrichtungen, mit denen die Datenkomprimierungs- und Dekomprimierungssysteme kommunizieren, bereitgestellt und angenommen werden, eine ausreichende Leistung liefern. Die Rate, mit der Daten komprimiert werden können, ist durch die Eingangsdatenverarbeitungsrate in das Komprimierungssystem bestimmt, typischerweise in Millionen Bytes pro Sekunde (Megabyte/s). Eine ausreichende Leistung ist notwendig, um die Datenraten aufrechtzuerhalten, die in heutigen Disketten-, Band- und Kommunikationssystemen erreicht werden, deren Raten typischerweise ein Megabyte/s überschreiten. Somit muß das Datenkomprimierungs- und Dekomprimierungssystem genügend Datenbandbreite aufweisen, um das Gesamtsystem nicht nachteilig zu beeinflussen. Die Leistung von Datenkomprimierungs- und Dekomprimierungssystemen ist typischerweise durch die Berechnungen, die notwendig sind, um zu komprimieren und zu dekomprimieren, und die Geschwindigkeit der Systemkomponenten, wie beispielsweise Direktzugriffsspeicher (RAM) und ähnliches, begrenzt, die verwendet werden, um statistische Daten zu speichern und den Komprimierungs- und Dekomprimierungsprozeß zu führen. Eine Leistung für eine Komprimierungsvorrichtung ist gekennzeichnet durch die Anzahl von Prozessorzyklen, die pro Eingangsschriftzeichen unter dem Komprimierer erforderlich sind. Je geringer die Anzahl von Zyklen, desto höher die Leistung.
  • Ein anderes wichtiges Kriterium bei dem Entwurf von Datenkomprimierungs- und Dekomprimierungssystemen ist Komprimierungseffektivität, die durch das Komprimierungsverhältnis gekennzeichnet ist. Das Komprimierungsverhältnis ist das Verhältnis von Datengröße in unkomprimierter Form geteilt durch die Größe in komprimierter Form. Damit Daten komprimierbar sind, müssen die Daten Redundanz enthalten. Komprimierungseffektivität ist dadurch bestimmt, wie effektiv die Komprimierungsprozedur die Redundanz in den Eingangsdaten nutzt. Bei typischen computergespeicherten Daten tritt Redundanz sowohl in der uneinheitlichen Verwendung individueller Symbologie, Beispielstellen, Bytes oder Schriftzeichen als auch in dem häufigen Wiederauftreten von Symbolsequenzen, wie beispielsweise häufigen Wörtern, Leeraufzeichnungsfeldern und ähnlichem auf.
  • Allzweck-Datenkomprimierungsprozeduren sind ebenso im Stand der Technik bekannt, wobei drei relevante Prozeduren das Huffman-Verfahren, das Tunstall-Verfahren und das Lempel-Ziv-Verfahren sind. Das Huffman-Verfahren ist weithin bekannt und verwendet, Bezug auf dasselbe ist in einem Artikel von D. A. Huffman mit dem Titel "A Method For Construction Of Minimum Redundancy Codes", Proceedings IRE, 40, 10, Seiten 1.098–1.100 (Sept. 1952). Bezug auf den Tunstall-Algorithmus ist in der Doktorarbeit von B. P. Tunstall zu finden, mit dem Titel "Synthesis of Noiseless Compression Codes", Georgia Institute of Technology (Sept. 1967). Bezug auf die Lempel-Ziv-Prozedur kann in einer von J. Ziv und A. Lempel verfaßten Abhandlung erhalten werden, mit dem Titel "A Universal Algorithm For Sequential Data Compression", IEEE Transactions on Information Theory, IT-23, 3, Seiten 337–343 (Mai 1977).
  • Eine der ersten Allzweck-Datenkomprimierungsprozeduren, die entwickelt wurden, ist das Huffman-Verfahren. Kurz beschrieben, bildet die Huffman-Prozedur Symbolsegmente einer vollen Länge in Wörter einer variablen Länge ab. Die Huffman-Datenkomprimierungsprozedur leidet unter zwei Einschränkungen. Erstens funktioniert die Huffman-Prozedur unter der Beschränkung, daß die Eingangsdaten, die komprimiert werden sollen, in Symbolsegmente einer festen Länge zerlegt werden. Obwohl die Huffman-Prozedur das beste Komprimierungsverhältnis liefert, das unter diesen Beschränkungen erhalten werden kann, ist es möglich, durch Verwenden anderer Prozeduren erheblich bessere Komprimierungsverhältnisse zu erhalten, wenn die Beschränkung gelockert wird. Zweitens erfordert die Huffman-Codierung umfassende Kenntnis der statistischen Charakteristik der Quellendaten. Die Huffman-Prozedur funktioniert unter der Annahme, daß die Wahrscheinlichkeit, mit der jedes Eingangssegment fester Länge auftritt, bekannt ist. Diese Anforderung der Huffman-Prozedur kann in der Praxis durch die Verwendung einer adaptiven Version der Prozedur erfüllt werden, die die notwendige Statistik während eines Verarbeitens der Daten sammelt. Dies ist jedoch hinderlich, benötigt beträchtlichen Arbeitsspeicherplatz und verhält sich während der Adaption suboptimal.
  • Der Tunstall-Algorithmus, der Segmente variabler Länge von Symbolen in binäre Wörter fester Länge abbildet, ist komplementär zu der Huffman-Prozedur, wobei die Beschränkungen fester Länge nun auf die Ausgangssegmente anstatt auf die Eingangssegmente angewandt werden. Ebenso wie die Huffman-Prozedur erfordert die Tunstall-Prozedur eine vorherige Kenntnis der Quellendatenwahrscheinlichkeiten. Wiederum kann diese Anforderung vorheriger Kenntnis bis zu einem gewissen Grad durch ein Verwenden einer adaptiven Version erfüllt werden, die die Statistik während einem Verarbeiten der Daten sammelt.
  • Die Lempel-Ziv-Prozedur bildet Segmente variabler Länge der Symbole in binäre Wörter variabler Länge ab. Dieselbe ist asymptotisch optimal, wenn es keine Beschränkungen für die Eingangs- oder Ausgangssegmente gibt. Bei dieser Prozedur wird die Eingangsdatenzeichenfolge in adaptiv gewachsene Segmente zerlegt, wobei jedes Segment eine exakte Kopie eines früheren Abschnitts der Eingangszeichenfolge umfaßt, an den ein neues Symbol aus den Eingangsdaten angehängt ist. Die Kopie, die hergestellt werden soll, ist die längstmögliche und steht nicht unter der Beschränkung, mit einem früher zerlegten Segment zusammenfallen zu müssen. Das Codewort, das das Segment in dem Ausgang ersetzt, enthält Informationen, die einen Zeiger auf die Stelle, wo der früher kopierte Abschnitt beginnt, die Länge der Kopie und das neue Symbol umfassen.
  • Es hatte den Anschein, daß Huffman- oder Shannon-Fano-Codierung die perfekte Datenkomprimierungseinrichtung ist. Dies ist jedoch nicht der Fall. Wie oben erwähnt, sind diese Codierungsverfahren optimal, wenn, und nur wenn, die Symbolwahrscheinlichkeiten ganzzahlige Potenzen von ½ sind, was gewöhnlich nicht der Fall ist.
  • Die Technik arithmetischer Codierung weist diese Einschränkung nicht auf: dieselbe erzielt den gleichen Effekt, als behandle sie die Nachricht als eine einzige Einheit (eine Technik, die bei Huffman-Codierung eine Aufzählung jeder einzelnen möglichen Nachricht erfordern würde), und erreicht so die theoretische Entropie, die an die Komprimierungseffizienz gebunden ist, für jegliche Quelle.
  • Bei arithmetischer Codierung wird eine Entscheidung nach der anderen codiert, um erfolgreich kleinere, weniger umfassende Intervalle entlang einer Zahlenlinie zu definieren. Zusätzliche Informationen zu arithmetischem Codieren können in "An Introduction To Arithmetic Encoding" von G. G. Langdon, Jr., IBM Journal of Research and Development, Bd. 28, Nr. 2, März 1984, 135–149; in "Arithmetic Compression Code Control Parameters Approximation" von D. R. Helman, G. G. Langdon, Jr., und J. J. Rissanen, Bd. 23, Nr. 11, April 1981, 5112–5114; und in dem U.S.-Patent Nr. 4, 905, 297, "Arithmetic Coding Encoder And Decoder System", Langdon, Jr., u. a., gefunden werden.
  • Wie es in den obigen Artikeln bemerkt ist, sieht eine arithmetische Codierung vor, daß jede Entscheidung eine Mehrzahl von möglichen, zwingenden Ergebnissen „oder Ereignissen" aufweist. Jedes Ergebnis oder Ereignis ist in den Daten durch ein Symbol dargestellt. In der Bilderzeugungsumgebung beispielsweise kann jede Entscheidung dem entsprechen, ob ein gegebenes Pixel schwarz ist oder nicht. Das Entscheidungsergebnis wird durch ein J- (oder JA-) Symbol dargestellt, wenn das Pixel schwarz ist, oder durch ein N- (oder NEIN-) Symbol, wenn das Pixel nicht schwarz ist. So kann dann eine Mehrzahl von Entscheidungen durch eine Sequenz von Symbolen dargestellt werden, z. B. JNNJ...
  • Gemäß älteren arithmetischen Codierungslehren weist eine Wahrscheinlichkeitszeile ein auf derselben definiertes aktuelles Intervall auf. Das erste aktuelle Intervall ist 0 bis 1. Das aktuelle Intervall ist in zwei Segmente geteilt, wobei ein Segment einem möglichen Ergebnis für die nächste Entscheidung entspricht. Wo es lediglich zwei mögliche Ergebnisse für jede Entscheidung gibt, ist das aktuelle Intervall in zwei Segmente geteilt. Die Länge jedes Segments basiert auf der jeweiligen zugeordneten Wahrscheinlichkeit desselben. Die jeweiligen Wahrscheinlichkeiten können fest bleiben oder können sich anpassen, wenn Entscheidungsdaten eingegeben werden.
  • Es ist das Korrelieren großer Segmente mit Symbolen, die mit größerer Häufigkeit auftreten, das zu der Komprimierungswirkung führt. In dem vorher zitierten Artikel ("An Introduction To Arithmetic Encoding") ist ein arithmetisches Codierungsbeispiel mit vier Symbolen dargelegt, bei dem jede Entscheidung in einem „a"-Ereignis (mit einer 50%igen Wahrscheinlichkeit), einem „b"-Ereignis (mit einer 25%igen Wahrscheinlichkeit), einem „c"-Ereignis (mit einer 12,5%igen Wahrscheinlichkeit) oder einem „d"-Ereignis (mit einer 12,5%igen Wahrscheinlichkeit) resultieren kann. Ein Darstellen der vier Ereignisse in binärer Form würde zwei Bits für jede Entscheidung erfordern, wobei die Ereignisse durch 00, 01, 10 bzw. 11 dargestellt würden. Für drei Entscheidungen, wie beispielsweise „aab", was sehr wahrscheinlich ist, wären die einfachen Codierungsdaten 00 00 01; was sechs Bits erfordert. Wie jedoch in dem Artikel auf Seite 137 bemerkt, erlaubt es der arithmetische Codierungsansatz, daß die Sequenz „aab" durch den Wert 0,001 dargestellt wird. Anstelle von sechs Bits können die Informationen in drei Bits dargestellt werden. Diese Ersparnis von Bits resultiert, wenn aufeinanderfolgende Ereignisse mit relativ hohen zugeordneten Wahrscheinlichkeiten auftreten.
  • Die Ersparnis verschlechtert sich, wenn zahlreiche Ereignisse auftreten, für die es geringe Wahrscheinlichkeiten und relativ kurze Zeilensegmente gibt. Bei den oben angemerkten Wahrscheinlichkeiten würde eine Sequenz von Ereignissen „dd" mit codierten Daten als 11 11 dargestellt, wohingegen durch ein arithmetisches Codieren die „dd"-Ereignisse durch 111111 dargestellt würden. Vorausgesetzt, daß die größeren Segmente tatsächlich Ereignissen entsprechen, die mit entsprechend größerer Häufigkeit auftreten, werden die zusätzlichen Bits, die für weniger wahrscheinliche Symbole benötigt werden, durch die Einsparung aufgewogen, die erzielt wird, wenn wahrscheinlichere Symbole auftreten.
  • Experimente haben gezeigt, daß die Daten der vorangehenden Zeile enorm helfen, wenn Text- und Strichzeichnungsdaten komprimiert werden. Zum Beispiel wird eine Strichzeichnung des Spaceshuttles, die viel weißen Raum und gerade Linien enthält, bei einem Einzelzeilenkontextmodell mit 18 : 1 komprimiert. Das gleiche Bild wird mit 43 : 1 komprimiert, wenn die Daten der vorangehenden Zeile verwendet werden.
  • Alle zweidimensionalen Kontextmodelle erfordern Daten der vorangehenden Zeile. Dieser Bedarf nach Daten der vorangehenden Zeile wird im allgemeinen durch ein Unterhalten eines Zeilenpuffers gelöst, um die vorangehende Zeile von Daten zu speichern. Eine derartige Lösung kann für hohe Auflösungen teuer sein. Beispielsweise benötigt ein Einzelzeilenspeicher für ein 11 Zoll breites Bild bei 1.200 dpi etwa 1,6 KB Speicher. Wenn ein 3 × 3-Kontextmodell verwendet wird, wird ein Zweizeilenpuffer benötigt, wodurch der Speicherbedarf verdoppelt wird.
  • Vor der vorliegenden Erfindung las die Komprimierungsmaschine die Daten Zeile für Zeile. Bevor die Daten komprimiert werden, wird die vorangehende Zeile aus dem Zeilenpuffer gelesen. Schließlich werden die komprimierten Daten zurück in den Speicher gespeichert. Einige Anwendungen greifen gleichzeitig auf die Zeilen zu. Gleichzeitiger Zugriff erfordert jedoch doppelte oder vielleicht sogar dreifache Bandbreite, um ein Wiedergewinnen der Daten der vorangehenden Zeile zu erlauben.
  • Die EP 0311265 A2 beschreibt ein Verfahren und eine Vorrichtung zur Verarbeitung von Bildelementsignalen eines Bilds eines Textdokuments. Insbesondere versucht die Verarbeitung, unnötige Redundanz zu vermeiden, wenn Textdaten in zwei unterschiedlichen Auflösungen komprimiert werden. Folglich ist die Verarbeitung der Bilddaten in Verarbeitungsstufen eingeteilt, wobei eine auf die Verarbeitung jeder zweiten Pixelelement-(PEL-) Position in dem Textdokument ausgerichtet ist und die andere auf die Komprimierung der anderen Pixel ausgerichtet ist. Die Fenster, die in den zwei Verarbeitungsstufen als Abtastfenster oder Schablonen verwendet werden, sind definiert und geben die Pixel an, die verwendet werden, um ein bestimmtes Pixel zu komprimieren, das als nächstes komprimiert werden soll. Das Fenster und die Pixel, die komprimiert werden sollen, werden entlang jeder Zeile verschoben, um die Pixelelemente einer aktuellen Zeile zu komprimieren, und werden dann vertikal verschoben, um die nächste Zeile zu verarbeiten. Die Verarbeitung wird implementiert, derart, daß die Bilddaten, die komprimiert werden sollen, zuerst in einem Eingangsbildpuffer gespeichert werden, und daß die benötigten Pixelelementsignale sequentiell von dem Puffer abgerufen werden.
  • In "Fundamentals of Digital Image Processing" von Anil K. Jain ist ein zweidimensionales voraussagendes Codierungsverfahren beschrieben, in dem vier nächste Nachbarn verwendet werden, um ein Bild Pixel für Pixel zu komprimieren. Informationen darüber, wie die Nächste-Nachbar-Maske bewegt werden soll, sind nicht gezeigt.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zum Codieren und Decodieren von Bilddaten und eine Vorrichtung zum Reduzieren von Speicherbedarf zum Speichern eines Bildes zu schaffen, so daß der Speicherbedarf während eines Codierens und Decodierens reduziert ist.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 5 und eine Vorrichtung gemäß Anspruch 7 gelöst.
  • Um die vorliegende Erfindung auszuführen, ist ein Verfahren zum Codieren von Bilddaten bereitgestellt. Zuerst wird ein Kontextmodell definiert. Als nächstes werden die Bilddaten logisch in eine Mehrzahl von Spalten unterteilt. Eine letzte, eine aktuelle und eine nächste Zeile für die vorliegende Spalte werden in einem Komprimierer gepuffert. Das Kontextmodell definiert Bits, die durch den Komprimierer verwendet werden, um ein gegebenes Bit zu komprimieren. Diese Bits und das Bit, das komprimiert werden soll, werden an den Komprimierer übertragen. Das Kontextmodell wird horizontal um eine einzige Bitposition verschoben, bis jedes Bit in der aktuellen Reihe der vorliegenden Spalte komprimiert wurde. Als nächstes bewegt sich das Kontextmodell vertikal in der vorliegenden Spalte, wodurch dasselbe dem Komprimierer die nächste Zeile zuführt. Die vertikale Bewegung wird am effizientesten durch ein Umbenennen der aktuellen Zeile in die letzte Zeile und der nächsten Zeile in die aktuelle Zeile in dem Puffer ausgeführt. Nach dem Umbenennen muß die neue nächste Zeile aus dem Speicher wiedergewonnen und in dem Puffer gespeichert werden.
  • Kurze Beschreibung der Zeichnungen
  • Ein besseres Verständnis der Erfindung kann aus der Betrachtung der folgenden detaillierten Beschreibung in Verbindung mit den zugehörigen Zeichnungen erhalten werden, in denen:
  • 1 die vertikale Progression durch ein Bild darstellt.
  • 2 ein Blockdiagramm auf hoher Ebene gemäß der vorliegenden Erfindung ist.
  • 3 die Wechselwirkung zwischen dem Speicherpuffer und den Schieberegistern zeigt.
  • 4 das Kontextmodell zeigt, das bei dem bevorzugten Ausführungsbeispiel verwendet wird.
  • 5 eine Bitfüllung am Ende einer Zeile darstellt.
  • 6 ein Flußdiagramm ist, das das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung zeigt.
  • Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele
  • Die vorliegende Erfindung erlaubt die Verwendung von Daten der vorangehenden Zeile, ohne Mehrfachzugriffe auf das Bild oder die Verwendung eines Zeilenpuffers zu erfordern. Nun wird Bezug auf 1 genommen, in der sich die vorliegende Erfindung vertikal durch das Bild bewegt, wobei dieselbe lediglich eine geringe Menge der Daten der vorangehenden Zeile speichert.
  • In 1 ist ein Bild 10, das komprimiert werden soll, in sechs Spalten 100105 unterteilt. Anstatt daß das Bild 10 horizontal überquert wird, wird dasselbe vertikal überquert, wie es durch die Pfeile dargestellt ist. So startet der Komprimierer in der oberen linken Ecke und fährt eine Spalte 100 hinunter. Ist die Spalte 100 komprimiert, fährt der Komprimierer am oberen Ende von Spalte 101 fort. Dieser Prozeß geht weiter, bis eine Spalte 105 komprimiert wurde. Durch ein vertikales Überqueren des Bildes sind die Informationen über die vorhergehende Zeile durch die Breite der Spalte begrenzt. Diese begrenzte Speicherung der vorangehenden Zeile erlaubt die Verwendung eines zweidimensionalen Kontextmodells, was das Komprimierungsverhältnis stark erhöht. Zusätzlich sind die begrenzten Daten der vorangehenden Zeile beträchtlich geringer als ein Erhalten der gesamten vorangehenden Zeile.
  • Dieser kurzen Beschreibung der vorliegenden Erfindung auf hohem Niveau folgt ein detaillierterer Blick auf das bevorzugte Ausführungsbeispiel. Nun wird Bezug auf 2 genommen, in der der Datenfluß für den Komprimierungsprozeß in einem vereinfachten Blockdiagramm gezeigt ist. Ein Hardwarekomprimierer 502 fordert Bilddaten von einem DRRM 500 unter der Steuerung einer DMA-Steuerung 512 an. Daten, die aus einem Speicher 500 wiedergewonnen wurden, werden in dem geeigneten Fach eines Speicherpuffers 40 gemäß der unten abgegebenen Beschreibung gespeichert.
  • Die aktuelle Zeile wird von dem Speicherpuffer 40 in ein Schieberegister 405 übertragen und die vorangehende Zeile wird zu einem Schieberegister 404 übertragen. Ein Bit 30 wird in 2 gerade komprimiert. Aufeinander bezogene Bits 508 bilden eine Adresse für einen Wahrscheinlichkeits-RAM 506 der arithmetischen Codierungshardware 503. Auf dem Ausgang des Wahrscheinlichkeits-RAM 506 und zusätzlichen arithmetischen Operationen basierend, die durch die arithmetische Codierungshardware 503 durchgeführt werden, wird ein MPS (most probable symbol = wahrscheinlichstes Symbol) für das Bit 30 erzeugt. Nachdem ein spezielles Bit 30 komprimiert wurde, werden Daten in den Schieberegistern 404 und 405 verschoben, so daß ein neues Bit komprimiert werden kann.
  • Die Arithmetische Codierungshardware 503 leitet komprimierte Daten an einen FIFO 504, wenn dieselben erzeugt werden. Unter der Steuerung einer DMA-Steuerung 505 werden Daten von einem FIFO 502 in einen DRRM 501 übertragen. Nachdem alle Daten in dem DRAM 500 komprimiert und an den DRAM 501 übertragen wurden, meldet der Hardwarekomprimierer 502 dem Bildprozessor 520, daß die Komprimierung vollständig ist.
  • Mit der Hilfe von 2 kann der Datenfluß für die Dekomprimierung beschrieben werden. Komprimierte Daten werden unter der Steuerung der DMA-Steuerung 505 von dem DRAM 501 in den FIFO 504 übertragen. Die arithmetische Codierungshardware 503 dekomprimiert die Daten und gibt immer ein einziges Bit 511 zu einer Zeit aus.
  • Das Bit 30 wird auf der Beziehung desselben mit Bits 508 basierend vorausgesagt. Die Bits 508 bilden eine Adresse für den Wahrscheinlichkeits-RAM 506. Auf der Ausgabe des Wahrscheinlichkeits-RAM 506 und zusätzlichen arithmetischen Operationen basierend, die durch die arithmetische Codierungshardware 503 durchgeführt werden, wird der Zustand des Bits 30 erzeugt. Als nächstes werden die Schieberegister 404 und 405 verschoben, so daß das nächste Bit dekomprimiert werden kann. Schließlich enthält das Schieberegister 405 ein gesamtes Byte von unkomprimierten Daten. Zuerst werden die Daten in dem Schieberegister 404 in den Speicherpuffer 40 übertragen. Als nächstes wird der Inhalt des Schieberegisters 404 in den Speicherpuffer 40 und auch in das Schieberegister 405 übertragen. Unter der Steuerung der DMA-Steuerung 512 werden die unkomprimierten Daten von dem Speicher 40 in das DRAM 500 übertragen.
  • Nun wird Bezug auf 3 genommen, in der der Speicher 40 in drei Abschnitte 401403 unterteilt ist, die einen Ringpuffer bilden. Die Breite des Speichers 40 ist gleich der Breite einer vertikalen Spalte, wie beispielsweise 100. Wie nun in 3 zu sehen ist, enthält ein RAM A 401 Daten für die vorangehende Zeile, enthält ein RAM B 402 Daten für die aktuelle Zeile und ist ein RAM C 403 mit Daten für die nächste Zeile aus dem DRAM geladen. Innerhalb des arithmetischen Komprimierers werden Daten für die aktuelle Zeile, hier RAM B 402, in das Register 405 übertragen. Daten für die vorangehende Zeile, hier RAM A 401, werden in das Register 404 übertragen. Der Komprimierer ist mit dem Komprimieren der Informationen in den Registern 404 und 405 beschäftigt, während neue Informationen aus dem Hauptspeicher in den RAM C 403 übertragen werden können.
  • Wie oben beschrieben, verwendet die arithmetische Komprimierung ein Kontextmodell, um den Zustand eines gegebenen Bits vorauszusagen. 4 zeigt das Kontextmodell, das bei dem bevorzugten Ausführungsbeispiel verwendet wird, im Detail. Dieses spezielle Kontextmodell verwendet Informationen aus der aktuellen Zeile wie auch aus der Zeile über dem Bit, das komprimiert wird. Zusätzlich ist anzumerken, daß das Kontextmodell in der Reihe darüber Bits zur Rechten des aktuellen Bits verwendet und in der aktuellen Reihe Bits zur Linken des aktuellen Bits.
  • Das Kontextmodell 20 bewegt sich horizontal über die aktuelle Zeile 405, während jedes Bit 30 komprimiert wird. Während einer Komprimierung der ersten Bits einer Zeile versucht das Kontextfenster 20, Bits zu nutzen, die nicht vorhanden sind. Dem Entwickler stehen mehrere Alternativen zur Verfügung. Das Kontextmodell könnte modifiziert werden, um diese Bits nicht zu erfordern. Ein derartiges Kontextmodell kann jedoch das Komprimierungsverhältnis für einige Datenarten ernstlich beeinflussen. Alternativ könnte das erste Bit in die fehlenden Positionen kopiert werden. Die Wirkung auf das Komprimierungsverhältnis gegen die Komplexität der Implementierung aufwiegend, setzt das bevorzugte Ausführungsbeispiel diese Bits auf Null (0|0). Null wurde ausgewählt, basierend auf dem Verständnis, daß weiße Räume (d. h. Nullen) vorherrschender sind. Daher ist es wahrscheinlicher, daß diese Bits Null wären. Das Einstellen dieser Bits auf Null beeinflußt das Komprimierungsverhältnis nachteilig. Ein Experimentieren hat jedoch gezeigt, daß die Abnahme etwa 2% beträgt. Auf eine ähnliche Weise wie in 5 gezeigt, versucht das Kontextmodell, wenn das Kontextfenster 20 das Ende erreicht, Informationen zu verwenden, die nicht zur Verfügung stehen. Dem Entwickler stehen die gleichen Alternativen zur Verfügung, wie oben beschrieben. Hier kopiert das bevorzugte Ausführungsbeispiel das letzte Bit oder das jeweilige Register in die fehlenden Bits.
  • Nachdem die aktuelle Zeile komprimiert wurde, werden die Zeiger auf den Speicher 40 eingestellt, derart, daß der RAM B 402 nun Daten für die vorangehende Zeile enthält, der RAM C 403 Daten für die aktuelle Zeile enthält und der RAM A mit Daten für die nächste Zeile geladen ist. Wiederum werden Daten für die aktuelle Zeile, jetzt RAM C 403, in das Register 405 übertragen. Daten für die vorangehende Zeile, jetzt RAM B 402, werden in das Register 404 übertragen. Der Komprimierer ist mit dem Komprimieren der Informationen in den Registern 404 und 405 beschäftigt, während neue Informationen aus dem Hauptspeicher in den RAM A 401 übertragen werden können.
  • Die Verwendung des Speicherpuffers 403 ist für die vorliegende Erfindung nicht notwendig. Jedoch erlaubt ein dreistufiger Puffer einen konstanten Fluß von Daten zu dem Komprimierer, wodurch der Durchsatz für das System verbessert wird.
  • Ein Erhöhen der Breite einer Spalte reduziert den Einfluß der Anfangs- und Endbitmanipulation auf das Komprimierungsverhältnis. Bei dem bevorzugten Ausführungsbeispiel ist jede Spalte 16 Wörter breit, wobei jedes Wort 32 Bit breit ist.
  • Das Komprimierungsverhältnis kann ferner durch die Diskontinuität beeinflußt werden, wenn die obere Zeile einer neuen Spalte komprimiert wird. Wenn zum Beispiel die obere Zeile der Spalte 103 komprimiert wird, enthält das Register 405 Daten von der oberen Zeile in Spalte 103, während das Register 404 Daten aus der unteren Zeile von Spalte 102 enthält. Bei dem bevorzugten Ausführungsbeispiel wurde befunden, daß diese Diskontinuität der Daten das Komprimierungsverhältnis lediglich minimal beeinflußt. Für eine gegebene Anwendung kann jedoch der Einfluß auf das Komprimierungsverhältnis durch ein Einstellen der vorangehenden Zeile auf einen bestimmten Wert, wie beispielsweise nur Nullen, oder eine Kopie der aktuellen Zeile reduziert werden.
  • Das Flußdiagramm von 6 zeigt den logischen Fluß für das bevorzugte Ausführungsbeispiel. Zuerst muß ein Kontextmodell definiert werden 601. Während dasselbe dynamisch in Echtzeit berechnet werden kann, wird dasselbe bei dem bevorzugten Ausführungsbeispiel während der Weiterbildung des Hardwarekomprimierers 503 bestimmt. Als nächstes wird das Bild in Spalten unterteilt 602. Bevor der Komprimierer starten kann, muß der Pufferspeicher 40 vorgeladen werden 603. Wenn der Pufferspeicher geladen ist, wird der Komprimierer 503 gestartet 603. Das Kontextmodell verschiebt sich horizontal 605 über die aktuelle Zeile, während der Komprimierer jedes Bit komprimiert. Ist die aktuelle Zeile komprimiert 606, überprüft der Komprimierer, ob die Spalte fertig ist 607. Wenn die Spalte fertig ist, wird die nächste Spalte adressiert 611. Wenn die Spalte nicht fertig ist, werden die Register wieder geladen 608 und 609, die nächste Zeile wird wiedergewonnen 610 und die Komprimierung geht weiter.

Claims (8)

  1. Ein Verfahren zum Codieren von Bilddaten (10), wobei das Verfahren folgende Schritte aufweist: a) Unterteilen (602) der Bilddaten (10) in eine Mehrzahl von Spalten (100105), wobei jede Spalte eine Breite aufweist; b) Definieren (601) eines Kontextmodells (20), wobei das Kontextmodell eine Mehrzahl von Bits einer vorangehenden Zeile einer vorliegenden Spalte der Bilddaten und eine Mehrzahl von Bits einer aktuellen Zeile der vorliegenden Spalte der Bilddaten verwendet; c) Wiedergewinnen (603, 610) der aktuellen Zeile der vorliegenden Spalte der Bilddaten; d) Verwenden des Kontextmodells (10), um die aktuelle Zeile (405, 404) zu komprimieren; und e) Bewegen des Kontextmodells (20) vertikal entlang der vorliegenden Spalte in den Bilddaten (10); und f) Wiederholen der Schritte c)–e) für die anderen Spalten.
  2. Das Verfahren gemäß Anspruch 1, bei dem das Kontextmodell ein Kontextfenster definiert und die Mehrzahl von Bits der vorangehenden und der aktuellen Zeile verwendet, die in dem Kontextfenster enthalten sind, und wobei der Schritt des Verwendens des Kontextmodells ferner folgenden Schritt aufweist: Einstellen fehlender Bits in dem Kontextfenster, die in der aktuellen und vorangehenden Zeile nicht vorhanden sind, auf einen Wert, der gleich dem nächsten Bit in der jeweiligen Zeile der aktuellen und vorangehenden Zeile bestimmt ist.
  3. Verfahren gemäß Anspruch 1 oder 2, bei dem der Schritt des Wiedergewinnens (603, 610) ferner folgende Schritte aufweist: erstes Puffern (40) der letzten Reihe (401) aus der vorliegenden Spalte, wobei die letzte Reihe (401) die Breite breit ist; zweites Puffern (40) der aktuellen Zeile (402) aus der vorliegenden Spalte, wobei die aktuelle Zeile (402) die Breite breit ist; und drittes Puffern (40) der nächsten Zeile (403) aus der vorliegenden Spalte, wobei die nächste Zeile (403) die Breite breit ist.
  4. Das Verfahren gemäß Anspruch 1, bei dem der Schritt des Verwendens des Kontextmodells ferner folgende Schritte aufweist: mit der Hilfe des Kontextmodells (20), Definieren einer Mehrzahl von Bits (508) der aktuellen Zeile; Übertragen der Mehrzahl von Bits (508) und eines Bits, das komprimiert (30) werden soll, zu einem Komprimierer (503); wobei der Komprimierer (503) ein Ergebnis erzeugt; Verschieben (605) des Kontextmodells (20) horizontal um eine einzelne Bitposition; und Wiederholen der Schritte des Definierens einer Mehrzahl von Bits (508), des Übertragens und Verschiebens (605), bis jedes Bit in einer einzelnen Zeile einer einzelnen Spalte der Mehrzahl von Spalten (100105) komprimiert wurde.
  5. Ein Verfahren zum Decodieren komprimierter Bilddaten (501), wobei das Verfahren folgende Schritte aufweist: a) Definieren (601) eines Kontextmodells, wobei das Kontextmodell eine Mehrzahl von Bits einer vorangehenden Zeile einer aktuellen Spalte der Bilddaten und eine Mehrzahl von Bits einer aktuellen Zeile der aktuellen Spalte der Bilddaten verwendet; b) Lesen eines Abschnitts der komprimierten Bilddaten (501); c) mit der Hilfe des Kontextmodells (20), Dekomprimieren des Abschnitts, der ein Bild (30) der Originalbilddaten erzeugt; d) Übertragen des Bits in eine Position wie definiert durch das Kontextmodell (20); e) Verschieben des Kontextmodells (20) horizontal um eine einzelne Bitposition; f) Wiederholen der Schritte des Dekomprimierens, Übertragens und Verschiebens, bis jedes Bit in einer der Mehrzahl der Spalten der Originaldaten (10) übertragen wurde, wobei jede Spalte eine Breite aufweist; g) Bewegen des Kontextmodells (20) zu einer nächsten Zeile in der einen der Mehrzahl von Spalten (100105); und h) Wiederholen der Schritte b)–g) für die anderen Spalten.
  6. Das Verfahren gemäß Anspruch 5, bei dem der Schritt des Übertragens ferner folgende Schritte aufweist: erstes Puffern (40) der vorangehenden Zeile (401), wobei die vorangehende Zeile (401) die Breite breit ist; und zweites Puffern (40) der aktuellen Zeile (402), wobei die aktuelle Zeile die Breite breit ist.
  7. Eine Vorrichtung zum Reduzieren der Speicheranforderung zum Speichern eines Bildes (10), wobei die Vorrichtung folgende Merkmale aufweist: einen Speicher (500, 501); und eine Komprimierereinrichtung (503, 502) zum Wiedergewinnen (603) eines ersten Abschnitts (402) einer aktuellen Spalte des Bildes (10) und einer aktuellen Zeile der aktuellen Spalte des Bildes aus dem Speicher (500), wobei die Komprimierereinrichtung (503, 502) einen ersten Abschnitt (402) der aktuellen Zeile der aktuellen Spalte gemäß einen Kontextmodell (20) komprimiert, wobei die Komprimierereinrichtung (503, 502) komprimierte Informationen erzeugt und die komprimierten Informationen in dem Speicher (501) speichert, wobei der Komprimierer (503, 502) eine nächste Zeile (403) des Bildes (10) aus dem Speicher (500) wiedergewinnt und die Wiedergewinnungen und die Komprimierung für die Mehrzahl von Spalten des Bildes wiederholt.
  8. Die Vorrichtung gemäß Anspruch 7, die ferner folgendes Merkmal aufweist: eine Bildprozessoreinrichtung (520), die mit der Komprimierereinrichtung (502, 503) und dem Speicher (500, 501) verbunden ist, wobei die Bildprozessoreinrichtung (520) zum Anweisen der Komprimierereinrichtung (502, 503) gedacht ist, wo das Bild (10) in dem Speicher (500, 501) gespeichert ist, wobei der Bildprozessor (520) zusätzlich die Komprimierereinrichtung (502, 503) anweist, wo in dem Speicher (500, 501) die komprimierten Informationen gespeichert werden sollen.
DE69723019T 1996-08-26 1997-01-28 Arithmetische Bildkodierung Expired - Fee Related DE69723019T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/703,613 US5745603A (en) 1996-08-26 1996-08-26 Two dimensional context model obtained without a line buffer for arithmetic coding
US703613 1996-08-26

Publications (2)

Publication Number Publication Date
DE69723019D1 DE69723019D1 (de) 2003-07-31
DE69723019T2 true DE69723019T2 (de) 2004-05-19

Family

ID=24826083

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69723019T Expired - Fee Related DE69723019T2 (de) 1996-08-26 1997-01-28 Arithmetische Bildkodierung

Country Status (4)

Country Link
US (1) US5745603A (de)
EP (1) EP0834832B1 (de)
JP (1) JPH1093967A (de)
DE (1) DE69723019T2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW366669B (en) 1996-10-30 1999-08-11 Matsushita Electric Ind Co Ltd Picture encoding device and picture encoding method, picture decoding device and picture decoding method, and data recording media
KR100238889B1 (ko) * 1997-09-26 2000-01-15 전주범 형태 부호화를 위한 보더 화소 예측 장치 및 방법
JP4245139B2 (ja) * 2003-03-31 2009-03-25 株式会社メガチップス 画像処理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463380A (en) * 1981-09-25 1984-07-31 Vought Corporation Image processing system
JPS6229372A (ja) * 1985-07-31 1987-02-07 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 2値デ−タの圧縮方法
US4905297A (en) 1986-09-15 1990-02-27 International Business Machines Corporation Arithmetic coding encoder and decoder system
US4785349A (en) * 1987-10-05 1988-11-15 Technology Inc. 64 Digital video decompression system
JP2534276B2 (ja) * 1987-10-09 1996-09-11 インターナショナル・ビジネス・マシーンズ・コーポレーション オリジナル・イメ−ジのペル信号の処理方法
JP3108479B2 (ja) * 1991-08-28 2000-11-13 株式会社リコー 符号化復号化方法およびその装置
US5442458A (en) * 1991-12-18 1995-08-15 Eastman Kodak Company Method and associated apparatus for encoding bitplanes for improved coding efficiency
US5299197A (en) * 1992-02-11 1994-03-29 Roger Schlafly Communications packet server protocol
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
JP2836467B2 (ja) * 1993-12-16 1998-12-14 日本電気株式会社 2値シンボルの符号化・復号化回路

Also Published As

Publication number Publication date
JPH1093967A (ja) 1998-04-10
DE69723019D1 (de) 2003-07-31
EP0834832A2 (de) 1998-04-08
US5745603A (en) 1998-04-28
EP0834832A3 (de) 1999-08-04
EP0834832B1 (de) 2003-06-25

Similar Documents

Publication Publication Date Title
DE69633730T2 (de) Verfahren zur kompression/dekompression von bilddateien
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE19506164C2 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
DE19635251C2 (de) Verfahren und Apparat zur Komprimierung beliebiger Daten
DE102015114973B4 (de) Datenkomprimierung
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE69725215T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen
DE69631999T2 (de) Bildverarbeitungsgerät und Verfahren
DE102015114978B4 (de) Datenkomprimierung
EP1487113B1 (de) Kodierung und Dekodierung von Transformationskoeffizienten in Bild- oder Videokodierern
DE4217009C1 (de) Hochgeschwindigkeitsdekodierer für Codes veränderlicher Länge
EP1797536B1 (de) Codierschema für einen ein zeitlich veraenderliches graphikmodell darstellenden datenstrom
DE19534943B4 (de) Vorrichtung zur Komprimierung unter Verwendung von eingebetteten Kleinwellen
DE2706080C2 (de) Verfahren zur adaptiven Quantisierung von Transformationskoeffizienten eines Bildes und Anordnung zum Durchführen des Verfahrens
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE60032689T2 (de) Verfahren und Vorrichtung zur Bildkompression
DE69834695T2 (de) Verfahren und Vorrichtung zur Datenkompression
DE2264090A1 (de) Datenverdichtungssystem
DE19742417A1 (de) Vorrichtung und Verfahren zur Durchführung von M-fachem Maschinenendzustands-Entropiekodieren bzw. Entropiekodieren mit einer Maschine mit finitem Zustand
DE4217008C2 (de) HDTV-Dekodierer
DE19534730A1 (de) Verfahren zum Codieren und Decodieren von Daten
EP1571755A2 (de) Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Initialisierung eines Wahrscheinlichkeitsmodelles
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
DE3038953C2 (de) Verfahren zur Bandkompression
DE69725280T2 (de) Kompressionsgerät mit arithmetischer Kodierung unter Verwendung eines kontextualen Models, das zu variablen Musterlängen in binären Bilddaten adaptiv ist

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee