DE69009713T2 - Verfahren zur Bilddatenkompression durch Laufvorhersage. - Google Patents

Verfahren zur Bilddatenkompression durch Laufvorhersage.

Info

Publication number
DE69009713T2
DE69009713T2 DE69009713T DE69009713T DE69009713T2 DE 69009713 T2 DE69009713 T2 DE 69009713T2 DE 69009713 T DE69009713 T DE 69009713T DE 69009713 T DE69009713 T DE 69009713T DE 69009713 T2 DE69009713 T2 DE 69009713T2
Authority
DE
Germany
Prior art keywords
run
value
type
prediction
predicted
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
DE69009713T
Other languages
English (en)
Other versions
DE69009713D1 (de
Inventor
Hiroyuki Katata
Yoji Noguchi
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Publication of DE69009713D1 publication Critical patent/DE69009713D1/de
Application granted granted Critical
Publication of DE69009713T2 publication Critical patent/DE69009713T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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/93Run-length coding
    • 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)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Die Erfindung betrifft allgemein ein Bilddatenkompressionsverfahren, das auf Bildcodierungsvorrichtungen anwendbar ist, um n-Bit-Bilder mit Zeichen, Graphikmustern oder dergleichen (die nachfolgend als Zeichenbilder bezeichnet werden) mit hohem Wirkungsgrad reversibel zu codieren.
  • Allgemein gesagt, ist es zum Erzielen eines guten Zeichenbildes mit relativ feiner Auflösung erforderlich, Bildpixel in mehreren Graustufen darzustellen. Ein Zeichenbild weist im allgemeinen Zeichenabschnitte, weißen Hintergrund und Kantenabschnitte auf, die an der Grenze zwischen den Zeichenabschnitten und dem weißen Hintergrund liegen. Um Pixel eines Zeichenbildes in mehreren Graustuf en darzustellen, werden den Bildpixeln jeweilige Werte zugeordnet, z.B. 0 für die Zeichenabschnitte, (2n-1) für den weißen Hintergrund, 1 für (2n-2) für die Kantenabschnitte, mit n> 2. Derartige n- Bit-Bilddaten werden dann codiert.
  • Derartige Pixelwerte werden dadurch erhalten, daß von einem Scanner, einer Kamera oder dergleichen gelesene Bilddaten vorverarbeitet werden.
  • Fig. 10 zeigt ein bekanntes Bilddaten-Kompressionsverfahren, wie es zum Codieren von Pixelwerten verwendet wird. Beim bekannten Verfahren werden n-Bit-Bilddaten in n Bitebenen unterteilt und jede Bitebene wird durch ein Lauflängen-Codierverfahren codiert. Gemäß dem Lauflängen-Codierverfahren kann ein langer Laufso komprimiert werden, daß statt des Wiederholens derselben Daten im Lauf ein die Lauflänge anzeigender Code und ein den Typ oder den Wert der wiederholten datenanzeigender Code eingesetzt werden, so daß Datenkompression erzielt wird.
  • Gemäß dem bekannten Datenkompressionsverfahren unter Verwendung des in Fig. 10 dargestellten Verfahrens zum Unterteilen in Bitebenen sind die Binärdaten an Pixelpositionen, die einen Zeichenabschnitt repräsentieren Nullen (0) für alle Bitebenen und die Binärdaten an Pixelpositionen, die weißen Hintergrund repräsentieren sind Einsen (1) für alle Bitebenen. D.h., daß jedes Bit in den Bitebenen denselben binären Datenwert an Pixelpositionen von Bildabschnitten aufweist, die keine Kantenabschnitte sind. Da jedoch die Kantenabschnitte eine sehr begrenzte Fläche im Bild einnehmen, weisen die Bitebenen einander sehr ähnliche Muster auf. Daher ist es ineffizient, diese Bitebenen getrennt unter Verwendung der Lauflängencodierung zu codieren, da zuviel Redundanz erforderlich ist.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der Erfindung, ein Datenkompressionsverfahren zu schaffen, durch das die Redundanz beim obigen Datenkompressionsverfahren beseitigt wird, und durch das wirkungsvolle Codierung ausgeführt werden kann.
  • Erfindungsgemäß wird bei einem Bilddaten-Kompressionsverfahren, das beim Codieren digitaler Bilddaten verwendbar ist, deren Pixel durch n Bits repräsentiert wird, und die 2n verschiedene Lauftypen aufweisen, ein Wert, während die Lauflänge des aktuellen Laufs gezählt wird, vorhergesagt, der den Lauftyp des aktuellen Laufs repräsentiert, welche Vorhersage wiederholt wird, bis der vorhergesagte Wert mit dem tatsächlichen Wert des Lauftyps des aktuellen Laufs übereinstimmt; dann, wenn der vorhergesagte Wert nicht mit dem tatsächlichen Wert des Lauftyps des aktuellen Laufs übereinstimmt, die Lauflänge für einen imaginären Lauf mit dem vorhergesagten Wert als Null angesehen wird und diese Lauflänge des imaginären Laufs statistisch codiert wird; andererseits dann, wenn der vorhergesagte Wert mit dem tatsächlichen Wert übereinstimmt, die tatsächliche Lauflänge des aktuellen Laufs statistisch codiert wird.
  • Beim erfindungsgemäßen Verfahren ist es, da die Lauftypen repräsentierenden Werte durch Vorhersage erhalten werden, abweichend vom üblichen Lauflängencodieren nicht erforderlich, jeweiligen Lauflängendaten n-Bit-Information hinzuzufügen, die Lauftypen repräsentiert. Daher kann, wenn die Vorhersage mit hoher Genauigkeit ausgeführt wird, die Gesamtdatenmenge verringert werden. Darüber hinaus kann selbst dann, wenn viele fehlerhaft vorausgesagte Werte vorliegen daß viele Lauflängendaten den Wert Null haben), die Gesamtdatenmenge auch in diesem Fall verringert werden, da diese Werte statistisch oder entropiecodiert sind, (d.h., daß dann, wenn viele Lauflängen vom Wert 0 vorliegen, ein Code kurzer Länge solchen Lauflängendaten zugeordnet ist).
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung wird aus der nachfolgenden Beschreibung und den Zeichnungen, die nur zur Veranschaulichung dienen und demgemäß für die Erfindung nicht beschränkend sind, deutlicher verständlich werden. In den Zeichnungen ist folgendes dargestellt:
  • Fig. 1 ist ein Blockdiagramm, das einen Codierer zeigt, der ein erfindungsgemäßes Bilddaten-Kompressionsverfahren ausführt;
  • Fig. 1B ist ein Blockdiagramm eines Codierers, der ein erfindungsgemäßes Bilddaten-Kompressionsverfahren ausführt;
  • Fig. 2 ist ein Beispiel für Laufdaten in einer Zeile eines Vorlagenbildes;
  • Fig. 3 ist ein Diagramm, das ein Verfahren zum Vorhersagen von Lauftypen veranschaulicht;
  • Fig. 4 ist ein Diagramm, das die Beziehung zwischen Lauflängendaten und vorausgesagten Werten zeigt;
  • Fig. 5 ist ein Format komprimierter Daten;
  • Fig. 6 ist ein Flußdiagramm zum Codieren der Daten einer Zeile gemäß einem Ausführungsbeispiel der Erfindung;
  • Fig. 7 ist ein Flußdiagramm zum Decodieren der Daten einer Zeile gemäß einem Ausführungsbeispiel der Erfindung;
  • 20 Fig. 8 ist ein Flußdiagramm, das die Verarbeitung in Schritten veranschaulicht, die in den Fig. 6 und 7 mit "Laufvorhersage" bezeichnet sind;
  • Fig. 9 ist ein Diagramm, das ein Verfahren zum Vorhersagen von Lauftypen veranschaulicht; und
  • Fig. 10 ist ein bekanntes Codiersystem, bei dem n-Bit-Bilddaten in n-Bildebenen unterteilt werden.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Fig. 1A zeigt ein Blockdiagramm eines Codierers zum Umwandeln von n-Bit-Bilddaten in komprimierte Daten, und Fig. 1B zeigt ein Blockdiagramm für einen Decodierer zum Rückwandeln der komprimierten Daten zurück in die n-Bit-Bilddaten. Der allgemein durch die Bezugszahl 10 gekennzeichnete Codierer weist eine Lauflängen-Zählerschaltung 11, eine Laufvorhersageschaltung 12 zum Vorhersagen des Lauftyps, eine Entropiecodierungsschaltung 13 zur statistischen Codierung von Lauflängendaten sowie eine Steuerschaltung 14 auf. Der Decodierer 20 verfügt über eine Decodierschaltung 21 zum Lesen codierter Daten, eine Laufvorhersageschaltung 22, eine Bildwiederherstellschaltung 23 und eine Steuerschaltung 24.
  • Fig. 2 zeigt ein Beispiel für Pixelwertdaten in einer Zeile eines ursprünglichen 2-Bit-Zeichenbildes. Die folgende Beschreibung erfolgt unter Bezugnahme auf die Daten von Fig. 2.
  • Die 2-Bit-Bilddaten werden in horizontaler Richtung ausgehend von einer oberen linken Ecke sequentiell abgetastet. Bilddaten, die durch den Abtastvorgang erhalten werden, werden in die Lauflängen-Zählerschaltung 11 eingegeben, in der Lauflängen von Läufen vier verschiedener Typen gezählt werden. Die Lauftypen sind gemäß den Werten der Läufe wie folgt klassifiziert: 0, 1, 2 und 3.
  • Zeilendaten werden auf die folgende Weise codiert.
  • Der Typ und die Länge des ersten Laufs in jeder Zeile werden abgespeichert. Der Typ jedes auf den ersten Lauf folgenden Laufs in jeder Zeile wird vorhergesagt, bis ein vorhergesagter Wert mit dem tatsächlichen Typwert übereinstimmt. Wenn der vorhergesagte Wert sich vom tatsächlichen Wert eines Lauftyps unterscheidet, wird der vorhergesagte Wert so behandelt, als wäre es ein imaginärer Lauf vom Typ mit dem vorhergesagten Wert, jedoch mit der Lauflänge Null. Daher wird der Lauflängendatenwert "0" für den vorhergesagten Wert aufgezeichnet, der nicht mit dem tatsächlichen Wert übereinstimmt. Ein derartiger Vorhersageprozeß wird wiederholt, bis ein vorhergesagter Wert mit dem tatsächlichen Wert übereinstimmt. Wenn ein vorhergesagter Wert mit dem Lauftyp übereinstimmt, werden die tatsächlichen Lauflängendaten des von der Lauflängen-Zählerschaltung 11 ermittelten Laufs aufgezeichnet. Dann startet die Vorhersage für einen nächsten Lauf. Wenn z.B., wie dies in den Fig. 2 und 4 dargestellt ist, der vorhergesagte Wert 2 für den zweiten Lauf ist, dessen tatsächlicher Wert 1 ist, wird der Wert 0 aufgezeichnet oder als Lauflänge für den Lauftyp 2 abgespeichert. Da jedoch der nächste vorhergesagte Wert 1 mit dem tatsächlichen Wert 1 übereinstimmt, wird die Lauflänge "b" des aktuellen Laufs gezählt und aufgezeichnet. Im vorliegenden Fall existieren vier verschiedene Lauftypen, wie oben angegeben. Demgemäß ist die Anzahl von Vorhersagen drei oder weniger.
  • Im folgenden wird ein Verfahren zum Vorhersagen der Lauftypen im einzelnen unter Bezugnahme auf die Fig. 3 und 4 beschrieben.
  • Allgemein gesagt, weist ein Zeichenbild einen Aufbau auf, bei dem ein Kantenabschnitt an der Grenze zwischen einem Zeichen und einem weißen Hintergrund vorliegt. Daher kann angenommen werden, daß dann, wenn ein Zeichenbild abgetastet wird, Pixeln für den weißen Hintergrund Pixel für den Kantenabschnitt und dann Pixel für den Zeichenabschnitt, dann wieder Pixel für einen Kantenabschnitt und dann Pixel für den weißen Hintergrund usw. folgen. Unter Verwendung einer solchen Eigenart eines Zeichenbildes wird vorhergesagt, daß die vier Lauftypen in jeder Zeile in der Reihenfolge 3, 2, 1, 0, 1, 2, ... auftreten. Jedoch ändert sich der erste vorhergesagte Wert abhängig vom allerersten Lauf in jeder Zeile, wie in Fig. 3 dargestellt.
  • Es ist zu beachten, daß Fig. 3 Fälle zeigt, bei denen der vorhergesagte Wert durch eine einzige Vorhersage mit dem tatsächlichen Laufwert übereinstimmt. Wenn mehr als zwei Vorhersagen für denselben Lauf ausgeführt werden müssen, sollte derselbe Vorhersagewert nicht wiederholt werden und der vorhergesagte Wert sollte sich vom Wert des direkt vorangehenden Laufs unterscheiden. Z.B. sind im Fall der in Fig. 2 dargestellten Zeilendaten die vorhergesagten Werte und die zu codierenden Lauflängendaten solche, wie sie in Fig. 4 dargestellt sind.
  • In Fig. 4 erscheinen vorhergesagte Werte in der Reihenfolge 1, 2, 3, 0, nicht in der Reihenfolge 1, 2, 3, 2, 1, 0 zwischen "d" und "e", jeweils einschließlich. Dies, da die vorstehend genannten Vorhersageregeln, daß derselbe Wert, 2 in diesem Fall, nicht doppelt vorhergesagt werden sollte und daß ein Wert, der mit dem eines direkt vorangehenden vorhandenen Laufs übereinstimmt, 1 in diesem Fall, nicht als Vorhersagewert verwendet wird.
  • Die Lauflängendaten werden unter Verwendung z.B. eines Huffman-Codes statistisch codiert. Wenn die statistische Codierung ausgeführt wird, kann ein zuvor auf Grundlage von Abtastdaten von Zeichenbildern erstellte Codetabelle oder eine Codetabelle verwendet werden, die als geeignetste für ein zu verarbeitendes Bild unter allen Codetabellen angesehen wird, die für verschiedene Bildtypen dadurch vorbereitet wurden, daß statistische Werte für die Lauflängen jedes Bildes gesammelt wurden. Darüber hinaus steht statistische Codierung mit Universalcodes zur Verfügung. Das Format codierter Daten kann ein solches sein, wie es in Fig. 5 dargestellt ist, in der das Symbol "A" zwei Bits repräsentiert, die den Typ des allerersten Laufs anzeigen, und ein Symbol "H" Entropiecodes repräsentiert, die durch das Codieren von Lauflängen erhalten werden.
  • Die obige statistische Codierung von Lauflängen für die Daten einer Zeile eines Bildes wird nun detaillierter unter Bezugnahme auf das Flußdiagramm von Fig. 6 beschrieben. Fig. 7 ist ein Flußdiagramm betreffend das Decodieren der codierten Lauflängendaten.
  • In den Flußdiagrammen der Fig. 6 und 7 repräsentiert (i,j) Koordinaten einer Pixelposition, Iij repräsentiert den Wert eines Pixels an der Position (i,j), "dx" repräsentiert die Anzahl von Pixeln in einer Zeile, "l" repräsentiert die Lauflänge, "r" repräsentiert den Typ eines Laufs, der gerade verarbeitet wird, "rr" repräsentiert den Typ des direkt vorangehenden Laufs, "pr" repräsentiert den für einen Lauf vorhergesagten Wert und "ppr" repräsentiert den ersten für einen Lauf vorhergesagten Wert.
  • Fig. 8 zeigt den Inhalt eines Schritts, der in den Fig. 6 und 7 mit "Laufvorhersage" bezeichnet ist. In Fig. 8 ist p[k] (k=0, 1, 2, 3, 4, 5) eine Anordnung vorausgesagter Werte, wobei die sechs Elemente die folgenden sind: 0, 1, 2, 3, 2 und l. Die sechs Elemente werden durch ihre jeweiligen Elementnummern k (k=0, 1, 2, 3, 4 und 5) repräsentiert. Wie es leicht ersichtlich ist, kann dann, wenn der Wert, der den Typ des allerersten Laufs einer Zeile anzeigt, zunächst durch "k" ersetzt wird, der Wert "pr" der Reihe nach mit der in Fig. 3 dargestellten Reihenfolge im Schritt der "Laufvorhersage" erhalten werden.
  • Die Flußdiagramme der Fig. 6 und 7 werden nun beschrieben, wobei die in Fig. 2 dargestellten Daten als Beispiel verwendet werden. In diesem Fall gilt i=0 und dx=a+b+c+d+e.
  • Es wird zunächst auf Fig. 6 Bezug genommen, gemäß der "j" und "l" in einem Schritt S1 auf j=l=0 gesetzt werden. Dann werden in einem Schritt S2 "r" (der Typ des aktuellen Laufs) und "k" auf r=k=I&sub0;&sub0; (=3) gesetzt und der Wert 3 (r=3) wird in einem Schritt S3 als Typ des allerersten Laufs einer Zeile aufgezeichnet. Dann werden in einem Schritt S14 "j" und "l" jeweils auf 1 gesetzt (j=0+1=1, l=0+1=1) und das Programm geht zu einem Schritt S15 weiter. In diesem Fall ist das Beurteilungsergebnis im Schritt S15 j< dx, so daß das Programm zum Schritt S4 übergeht. Im Schritt S4 wird entschieden, ob r=Iij ist. Im vorliegenden Fall sind r=3 und I&sub0;&sub1;=3 und daher geht das Programm erneut zum Schritt S14 über. Ab nun werden die Schritte S15, S4 und S14 wiederholt, bis "j" im Schritt S14 den Wert "a" einnimmt und "l" den Wert "a" einnimmt. Wenn im Schritt S14 j=a und l=a gelten, geht das Programm über den Schritt S15 zum Schritt S4 weiter. Im Schritt S4 werden r=3 und 10a=1 erhalten, so daß das Programm zu einem Schritt S5 weitergeht, in dem 1=a abgespeichert wird. Danach wird in einem Schritt S6 "rr" (der Typ des vorangehenden Laufs) auf rr=r=3 gesetzt und "r" und "l" werden auf r=I0a=1 bzw. l=0 gesetzt. Die folgenden Schritte S7 bis S13 sind Schritte zum Vorhersagen von Lauftypen.
  • Im Schritt S7 ist der erste vorausgesagte Wert "pr" 2, wie in Fig. 3 dargestellt. In diesem Fall geht das Programm, da im Schritt S8 pr=2 und r=1 sind, zum Schritt S9 über und "ppr" (der erste vorhergesagte Wert eines Laufs) wird im Schritt S9 auf 2 (ppr=pr=2) gesetzt und dann wird der Wert 0 als Lauflänge im Schritt S10 abgespeichert. Danach wird im Schritt S11 zum Erhalten von "pr" 1 als vorhergesagter Wert eingestellt, wie in Fig. 3 dargestellt. In diesem Fall wird, da pr=1, ppr=2 und rr=3 sind, im Schritt S12 erkannt, daß pr&ne;ppr und pr&ne;rr sind, so daß das Programm zum Schritt S13 weitergeht. Da pr=1 und r=1 sind, wird im Schritt S13 erkannt, daß "pr" dem Wert "r" entspricht, und das Programm geht zum Schritt S14 weiter.
  • Nun werden die Schritte S14, S15 und S4 wiederholt, bis im Schritt S14 "j" den Wert "a+b" einnimmt und "l" den Wert "b" einnimmt. Wenn im Schritt S14 j=a+b und l=b sind, wird "r" 1 (r=1) und I0,a+b wird 0 (I0,a+b=0) und daher wird im Schritt S4 entschieden, daß "r" nicht mit Iij übereinstimmt. Dann geht das Programm zum Schritt S5 weiter, in dem "b" als Lauflänge l (l=b) abgespeichert wird. Im Schritt S6 werden "rr", "r" und "l" auf 1, 0 bzw. 0 gesetzt (rr=1, r=0, 1=0). Im nächsten Schritt S7 zum Erhalten von "pr" wird diesmal der vorhergesagte Wert "pr" 0, wie in Fig. 3 dargestellt. Daher geht das Programm über den Schritt S8 zum Schritt S14 weiter.
  • Die Schritte S14, S15 und S4 werden erneut wiederholt, bis "j" im Schritt S14 den Wert (a+b+c) einnimmt und "l" den Wert c (j=a+b+c, l=c) einnimmt. Wenn im Schritt S14 j=a+b+c, l=c sind, sind r=0 und I0,a+b+c=1 Daher geht das Programm vom Schritt S4 zum Schritt S15 über, in dem "c" als Lauflänge "l" für den Lauftypen 0 abgespeichert wird. Dann werden im Schritt S6 "rr", "r" und "l" auf 0, 1 bzw. 0 gesetzt (rr=0, r=1, l=0). Da zu diesem Zeitpunkt im Schritt S7 pr=1 erhalten wird, wie in Fig. 3 dargestellt, geht das Programm über S8 zu S14 weiter.
  • Die Schritte S14, S15 und S4 werden wiederholt, bis "j" im Schritt S14 den Wert (a+b+c+d) einnimmt und l den Wert d (j=a+b+c+d, l=d) einnimmt. Wenn im Schritt S14 j=a+b+c+d, l=d sind, sind r=1 und I0,a+b+c+d=0 Daher geht das Programm vom Schritt S4 zum Schritt S5 über, in dem "d" als Lauflänge "l" für den Lauftyp 1 abgespeichert wird. Danach werden im Schritt S6 "rr", "r" und "l" auf 1, 0 bzw. 0 (rr=1, r=0, 1=0) gesetzt. Da der im Schritt S7 zu diesem Zeitpunkt vorausgesagte Wert 2 (pr=2) ist, geht das Programm zum Schritt S8 weiter. Da in diesem Fall pr=2 und r=0 sind, wird im Schritt S8 erkannt, daß "pr" nicht mit "r" übereinstimmt, und das Programm geht zum Schritt S9 weiter. Nachdem im Schritt S9 "pr" (pr=2) in "ppr" (ppr=pr=2) eingesetzt wurde, wird im Schritt S10 0 als Lauflänge aufgezeichnet. Danach wird im Schritt S11, der ein Vorhersageschritt ist, der Vorhersagewert pr=3 erhalten, wie in Fig. 3 dargestellt. Da pr=3, ppr=2 und rr=1 sind, wird im Schritt S12 entschieden, daß "pr" nicht mit "ppr" übereinstimmt und daß "pr" nicht mit "rr" übereinstimmt. Infolgedessen geht das Programm zum Schritt S13 weiter, in dem "pr" (pr=3) als nicht mit "r" (r=0) übereinstimmend beurteilt wird. Der Wert 0 wird im Schritt S10 als Lauflänge abgespeichert.
  • Das Programm kehrt wieder zum Schritt S11 zurück, in dem "pr" den Wert 2 repräsentiert. Da jedoch pr=2, ppr=2 und rr=1 sind und daher ppr=pr ist, kehrt das Programm zum Schritt S11 zurück, in dem der neue Vorhersagewert 1 erhalten wird. Da jedoch pr=1, ppr=2 und rr=1 sind und daher pr=rr ist, kehrt das Programm erneut zum Schritt S11 zurück. Nun wird der Vorhersagewert "pr" auf 0 gesetzt. In diesem Fall geht das Programm über den Schritt S12 zum Schritt S13 weiter, da pr=0, ppr=2 und rr=1 sind. Im Schritt S13 wird entschieden, daß "pr" (pr=0) mit "r" (r=0) übereinstimmt, so daß das Programm zum Schritt S14 weitergeht.
  • Die Schritte S14, S15 und S4 werden erneut wiederholt, bis "j" den Wert (a+b+c+d+e) einnimmt und "l" den Wert "e" einnimmt. Wenn im Schritt j=a+b+c+d+e und l=e sind, wird "j" im nächsten Schritt S15 dx (j=dx), wodurch das Programm zum Schritt S16 übergeht, in dem "e" als Lauflänge (l=e) aufgezeichnet wird. Auf diese Weise wird der Codierprozeß abgeschlossen.
  • Gemäß nachfolgender Bezugnahme auf Fig. 7 werden, nachdem "j" im Schritt S1 auf 0 (j=0) gesetzt wurde, im Schritt S2 r=3 und l=a aus den codierten Daten erhalten. Im nächsten Schritt S3 wird "r" für "k" und "pr" verwendet (k=r=3, pr=r=3). Dann geht das Programm zum Schritt S12 weiter, in dem "pr" für "rr" verwendet wird (rr=pr=3). Die Schritte S13, S14 und S15 sind Schritte zum Expandieren codierter Lauflängen. Pixel mit der Nummer "a" werden in den Schritten S13-S15 zunächst wiederhergestellt. Danach geht das Programm zum Schritt S16 weiter. Da j=a< dx gilt (mit dx=a+b+c+d+e), kehrt das Programm zur Laufvorhersage zum Schritt S4 zurück, in dem pr=2 erhalten wird. Da die aus den codierten Daten im nächsten Schritt S5 erhaltene Lauflänge l 0 ist (1=0), geht das Programm über den Schritt S6 zum Schritt S7 weiter. Im Schritt S7 wird der Wert 2 für "pr" für "ppr" verwendet (ppr=pr=2). Nachdem im Schritt S8 der Wert 1 für "pr" (pr=1) erhalten wurde, geht das Programm über den Schritt S9 zum Schritt S10 weiter, da pr=1, ppr=2, rr=3 sind und daher pr&ne;ppr und pr&ne;rr sind. Im Schritt S10 wird die Lauflänge "b" erhalten, die nicht Null ist. Da "l" nicht 0 ist (l&ne;0), geht das Programm zum Schritt S12 weiter, in dem "rr" durch pr ersetzt wird, so daß es 1 ist (rr=pr=1). Danach werden die Pixel b durch Verarbeitung in den Schritten S13-S15 wiederhergestellt und danach kehrt das Programm über den Schritt S16 erneut zum Schritt S4 zur Laufvorhersage zurück.
  • Diesmal wird im Schritt S4 pr=0 erhalten. In diesem Fall wird im Schritt S5 l=c&ne;0 erhalten. Daher geht das Programm erneut über S6 zum Schritt S12 weiter. Nachdem im Schritt S12 rr durch den Wert 0 von "pr" ersetzt wurde (rr=pr=0) werden in den Schritten S13-S15 die Pixel c wiederhergestellt.
  • Auf ähnliche Weise geht das Programm zum Schritt S4 über und in diesem Schritt wird 1 als Vorhersagewert (pr=1) erhalten. In diesem Fall ist die im Schritt S5 erhaltene Lauflänge "d", die nicht Null ist (1=d&ne;0). Demgemäß geht das Programm über den Schritt S6 zum Schritt S12 weiter. Die Pixel d werden in den Schritten S13-S15 wiederhergestellt, nachdem im Schritt S12 "rr" durch den Wert 1 von "pr" ersetzt wurde (rr=pr=1).
  • Das Programm kehrt erneut über den Schritt S16 zum Schritt S4 zurück. Zu diesem Zeitpunkt ist der im Schritt S4 erhaltene Vorhersagewert 2 (pr=2) und die im Schritt S5 erhaltene Lauflänge l ist Null (l=0). Daher geht das Programm vom Schritt S6 zum Schritt S7 weiter, in dem der Wert 2 von "pr" als Wert von "ppr" eingesetzt wird (ppr=pr=2). Im Schritt S8 wird der Lauftyp als 3 vorhergesagt (pr=3). Da zu diesem Zeitpunkt pr=3, ppr=2 und rr=1 sind, geht das Programm von S9 auf S10 weiter, wo der Wert 0 als Lauflänge l vom Lauftyp 3 eingesetzt wird. Das nächste Vorhersageergebnis im Schritt S8 ist 2 (pr=2). In diesem Fall ist jedoch, da pr=ppr=2 und rr=1 sind, das Entscheidungsergebnis im Schritt S9 NEIN und daher kehrt das Programm zur Laufvorhersage zum Schritt S8 zurück. Danach wird im Schritt S8 1 als Vorhersagewert "pr" erhalten. In diesem Fall ist, da pr=rr=1 ist, das Entscheidungsergebnis im Schritt S9 NEIN und daher kehrt das Programm wieder zum Schritt S8 zurück. Danach wird im Schritt S8 pr=0 erhalten. In diesem Fall kehrt das Programm, da pr=0, ppr=2 und rr=1 sind, vom Schritt S9 zum Schritt S10 zurück, in dem 1,e" als Lauflänge für einen Lauf vom Typ 0 erhalten wird (l=e). Demgemäß ist das Entscheidungsergebnis im Schritt S11 NEIN und das Programm geht über die Schritte S12-S14 zum Schritt S15 weiter. Die Pixel e werden durch die Verarbeitung im Schritt S12-S15 wiederhergestellt. Nachdem die Datenwiederherstellung abgeschlossen ist, geht das Programm zum Schritt S16 weiter. Zu diesem Zeitpunkt entspricht "j" dx (dx=a+b+c+d+e). So wird der obige Decodierprozeß abgeschlossen.
  • Vorstehend wurde unter Bezugnahme auf Fig. 6 und Fig. 7 ein Beispiel für die Erfindung beschrieben. Bei der obigen Beschreibung wurde nur ein Verfahren als Verfahren zum Vorhersagen von Lauftypen dargestellt. Jedoch stehen andere Verfahren zur Verfügung.
  • Wenn z.B. keine geeignete Vorverarbeitung an den Bilddaten vorgenommen wird, so daß ein Zeichenabschnitt und/oder ein weißer Hintergrund Pixel mit Werten enthalten, die denen von Pixeln gleich sind, die in einem Kantenabschnitt vorhanden sind, oder wenn nicht nur Zeichenbilder sondern auch natürliche Bilder behandelt werden sollen, ändert sich der Lauftyp nicht notwendigerweise in der Reihenfolge 3, 2, 1, 0, 1, 2, ... . Es kann aber angenommen werden, daß kleine Änderungen wie "3, 2", "1, 0" oder "1, 2" häufiger auftreten als relativ große Änderungen wie "3, 0", "2, 0" oder "3, 1". Demgemäß wird die Laufvorhersage in den vorstehenden Fällen gemäß einer Vorhersageregel ausgeführt, wie sie in Fig. 9 dargestellt ist.
  • Wie es aus Fig. 9 erkennbar ist, werden gemäß der Vorhersageregel drei Werte, die dem Wert am nächsten liegen, der den Typ des vorangehenden Laufs repräsentiert, als erster, zweiter und dritter Vorhersagewert gekennzeichnet. Z.B. wird dann, wenn der vorangehende Lauftyp 0 ist, der Wert 1 zunächst als erster Vorhersagewert gekennzeichnet. Die Werte 2 und 3 folgen dem Wert 1 in dieser ansteigenden Reihenfolge. Wenn der vorangehende Lauftyp 3 ist, wird zunächst der Wert 2 als erster Vorhersagewert gekennzeichnet. Die Werte 1 und 0 folgen dem Wert 3 in dieser absteigenden Reihenfolge. Wenn der vorangehende Lauftyp "rr" 1 oder 2 ist, bestehen zwei mögliche Werte als dichteste. Wenn z.B. der vorangehende Lauftyp "rr" 1 ist, sind die dichtesten Werte 2 und 0. In diesem Fall wird die Priorität unter Berücksichtigung des Lauftyps vor dem vorangehenden Lauftyp entschieden. Wenn der Lauftyp vor dem vorangehenden Lauftyp "rrr" 0 ist, wird dem Wert 2 Priorität gegenüber dem Wert 0 eingeräumt, und zwar aufgrund der Überlegung, daß die Werte der verarbeiteten Lauftypen ansteigen könnten. Wenn dagegen der Lauftyp "rrr" vor dem vorangehenden Lauftyp 1 den Wert 3 oder 2 hat, wird dem Wert 0 Priorität gegenüber dem Wert 2 eingeräumt, und zwar aufgrund der Überlegung, daß die Werte der verarbeiteten Lauftypen fallen könnten.
  • In jedem Fall werden dann, wenn der erste vorhergesagte Wert nicht mit dem tatsächlichen Lauftyp übereinstimmt, die zwei anderen Werte jeder für sich abhängig von der Priorität als zweiter und dritter Vorhersagewert bereitgestellt.
  • Die vorstehende Beschreibung erfolgte unter Bezug auf ein 2-Bit-Zeichenbild. Die Erfindung kann jedoch auf umkehrbare Codierung für beliebige n-Bit-Bilder angewandt werden. In diesem Fall ist die Anzahl vorherzusagender Lauftypen 2n.

Claims (7)

1. Bilddaten-Kompressionsverfahren, das beim Codieren digitaler Bilddaten verwendbar ist, deren Pixel durch n Bits repräsentiert wird, und die 2n verschiedene Lauftypen aufweisen, bei dem, während die Lauflänge (l) des aktuellen Laufs gezählt wird, ein Wert, der den Lauftyp des aktuellen Laufs repräsentiert, vorhergesagt wird, welche Vorhersage wiederholt wird, bis der vorhergesagte Wert (pr) mit dem tatsächlichen Wert (r) des Lauftyps des aktuellen Laufs übereinstimmt; dann, wenn der vorhergesagte Wert (pr) nicht mit dem tatsächlichen Wert (r) des Lauftyps des aktuellen Laufs übereinstimmt, die Lauflänge für einen imaginären Lauf mit dem vorhergesagten Wert (pr) als Null angesehen wird und diese Lauflänge des imaginären Laufs statistisch codiert wird; andererseits dann, wenn der vorhergesagte Wert (pr) mit dem tatsächlichen Wert (r) übereinstimmt, die tatsächliche Lauflänge des aktuellen Laufs statistisch codiert wird.
2. Verfahren nach Anspruch 1, bei dem nur der Lauftyp des allerersten Laufs in jeder Zeile von Bilddaten ohne Vorhersage erhalten wird, und n-Bit-Daten, die den Lauftyp jedes allerersten Laufs repräsentieren, den statistisch codierten Lauflängendaten der Läufe hinzugefügt werden, die auf den allerersten Lauf folgen.
3. Verfahren nach Anspruch 2, bei dem eine spezielle Formel vorab so erstellt wird, daß Vorhersagewerte in einer vorgegebenen Reihenfolge unter Berücksichtigung des Lauftyps des allerersten Laufs erhalten werden.
4. Verfahren nach Anspruch 3, bei dem dann, wenn zwei oder mehr Vorhersagen in einem aktuellen Lauf folgen, derselbe Vorhersagewert nicht wiederholt erhalten wird, und ein Wert, der den tatsächlichen Typ des direkt vorangehenden Laufs repräsentiert, nicht als Vorhersagewert für den aktuellen Lauf verwendet wird.
5. Verfahren nach Anspruch 3, bei dem dann, wenn die digitalen Bilddaten 2-Bit-Bilddaten sind, die Vorhersagewerte in der Reihenfolge 1, 2, 3, 2, 1, 0 erhalten werden, wobei jedoch der anfängliche Vorhersagewert für Läufe in jeder Zeile der Bilddaten auf Grundlage des Lauftyps des allerersten Laufs jeder Zeile festgelegt wird.
6. Verfahren nach Anspruch 1, bei dem Vorhersagewerte für einen aktuellen Lauf bezogen auf den vorangehenden Lauf und den vorletzten Lauf aufgelistet werden.
7. Verfahren nach Anspruch 6, bei dem eine vorgegebene Anzahl von Werten, die am dichtesten bei einem den Lauftyp des vorangehenden Laufs repräsentierenden Wert liegen, als Vorhersagewerte verwendet werden.
DE69009713T 1989-12-19 1990-12-18 Verfahren zur Bilddatenkompression durch Laufvorhersage. Expired - Fee Related DE69009713T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1329316A JP2511158B2 (ja) 1989-12-19 1989-12-19 画像圧縮装置

Publications (2)

Publication Number Publication Date
DE69009713D1 DE69009713D1 (de) 1994-07-14
DE69009713T2 true DE69009713T2 (de) 1995-01-12

Family

ID=18220103

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69009713T Expired - Fee Related DE69009713T2 (de) 1989-12-19 1990-12-18 Verfahren zur Bilddatenkompression durch Laufvorhersage.

Country Status (4)

Country Link
US (1) US5091977A (de)
EP (1) EP0434005B1 (de)
JP (1) JP2511158B2 (de)
DE (1) DE69009713T2 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3327650B2 (ja) * 1993-04-15 2002-09-24 キヤノン株式会社 記録装置
JP3106021B2 (ja) * 1992-11-30 2000-11-06 キヤノン株式会社 パターンデータの圧縮方法及び装置と出力方法及び装置
WO1996025010A2 (en) * 1995-02-03 1996-08-15 Philips Electronics N.V. Video image colour encoding
JP3364074B2 (ja) * 1995-06-05 2003-01-08 株式会社リコー ビットプレーン符号化装置
US6055273A (en) * 1996-09-02 2000-04-25 Seiko Epson Corporation Data encoding and decoding method and device of a multiple-valued information source
US6094453A (en) * 1996-10-11 2000-07-25 Digital Accelerator Corporation Digital data compression with quad-tree coding of header file
US7212677B2 (en) * 2000-01-11 2007-05-01 Minolta Co., Ltd. Coder, coding method, program, and image forming apparatus for improving image data compression ratio
US7424163B1 (en) 2004-07-13 2008-09-09 Itt Manufacturing Enterprises, Inc. System and method for lossless image compression
DE102007020292A1 (de) * 2007-04-30 2008-11-13 Siemens Ag Verfahren zur Komprimierung von Daten unter Verwendung einer Lauflängen-Kodierung insbesondere für medizinische Bilddaten

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5816665B2 (ja) * 1975-10-30 1983-04-01 ケイディディ株式会社 フアクシミリシンゴウノフゴウカホウシキ
US4344086A (en) * 1979-11-20 1982-08-10 Nippon Electric Co., Ltd. Encoder for encoding a multilevel pel signal sequence with probability representative mode codes allotted to prediction error codes for each pel signal and a decoder therefor
JPS56128070A (en) * 1980-03-13 1981-10-07 Fuji Photo Film Co Ltd Band compressing equipment of variable density picture
US4360840A (en) * 1980-05-13 1982-11-23 Am International, Inc. Real time data compression/decompression scheme for facsimile transmission system
JPS57164662A (en) * 1981-04-03 1982-10-09 Hitachi Ltd Compression system for multilevel signal
US4701803A (en) * 1984-06-05 1987-10-20 Canon Kabushiki Kaisha Image data compression apparatus
US4725885A (en) * 1986-12-22 1988-02-16 International Business Machines Corporation Adaptive graylevel image compression system

Also Published As

Publication number Publication date
JPH03188768A (ja) 1991-08-16
EP0434005A1 (de) 1991-06-26
DE69009713D1 (de) 1994-07-14
JP2511158B2 (ja) 1996-06-26
EP0434005B1 (de) 1994-06-08
US5091977A (en) 1992-02-25

Similar Documents

Publication Publication Date Title
DE2264090C3 (de) Datenverdichtung
DE3587107T2 (de) Drehungsverfahren und -geraet fuer binaere bilder.
DE69720559T2 (de) Methode zur Bildkodierung mit Kodes variabler Länge
DE68927082T2 (de) Verfahren und Vorrichtung für die Bilddatenkomprimierung
DE3877374T2 (de) Verfahren und vorrichtung zur herstellung transponierter bilddaten von einer &#34;run end&#34;- oder &#34;run length&#34;-bilddarstellung.
DE3850627T2 (de) Vorrichtung zum Codieren von digitalen Videosignalen und eine entsprechende Decodiervorrichtung.
DE69025033T2 (de) Vorrichtung zur Dekodierung von Kode variabler Länge und geeignetes Adresssteuerungsverfahren
DE68918605T2 (de) Verfahren zur Speicherung und Übertragung von Bilddaten als Bilddatengruppe, passend zur Bildsuche.
DE3851468T2 (de) Kodierungsverfahren von Bildsignalen.
DE2706080C2 (de) Verfahren zur adaptiven Quantisierung von Transformationskoeffizienten eines Bildes und Anordnung zum Durchführen des Verfahrens
DE2652459C2 (de) Umsetzvorrichtung für Binärsignale variabler Länge
DE2550928C2 (de) Einrichtung zur Komprimierung einer m·n-Matrix deltacodierter Punkte
DE19958553A1 (de) Verfahren zur Kompression von gescannten Farb- und/oder Graustufendokumenten
DE3940682C2 (de) Codiervorrichtung und System, bestehend aus einer Codiervorrichtung und einer Decodiervorrichtung für digitale Bilddaten
DE4309105A1 (de) Verfahren und Einrichtung zum Behandeln eines Teils eines verdichteten Bildes für ein Aufbereiten
DE2558264C3 (de) Verfahren zur Verdichtung binärer Bilddaten
DE2340230A1 (de) Verfahren und vorrichtung zur vorhersage des signalpegelwertes eines nachrichtenelementes
DE69024130T2 (de) Datenkompressionssystem
DE69009713T2 (de) Verfahren zur Bilddatenkompression durch Laufvorhersage.
DE69026634T2 (de) Verfahren und System zum Schreiben und Lesen von kodierten Daten
EP1104916B1 (de) Verfahren zur Kompression von gescannten Farb- und/oder Graustufendokumenten
DE68908941T2 (de) Verfahren zur Kodierung und Dekodierung von Blockinformationen und Vorrichtung dazu.
DE3247334C2 (de) Verfahren zum Kodieren eines n-stufig graduierten Bildelementes
EP0042981B1 (de) Verfahren zur Codierung von elektrischen Signalen, die bei der Abtastung eines grafischen Musters mit aus Text und Bildern gemischtem Inhalt gewonnen werden
DE1283870B (de) Verfahren zur digitalen Kodierung einer flaechenhaften Abbildung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: PATENTANWAELTE MUELLER & HOFFMANN, 81667 MUENCHEN

8339 Ceased/non-payment of the annual fee