DE19606178A1 - Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz - Google Patents

Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz

Info

Publication number
DE19606178A1
DE19606178A1 DE19606178A DE19606178A DE19606178A1 DE 19606178 A1 DE19606178 A1 DE 19606178A1 DE 19606178 A DE19606178 A DE 19606178A DE 19606178 A DE19606178 A DE 19606178A DE 19606178 A1 DE19606178 A1 DE 19606178A1
Authority
DE
Germany
Prior art keywords
pixel
color
context
pixels
image
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.)
Granted
Application number
DE19606178A
Other languages
English (en)
Other versions
DE19606178C2 (de
Inventor
Michael J Gormish
Edward L Schwartz
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of DE19606178A1 publication Critical patent/DE19606178A1/de
Application granted granted Critical
Publication of DE19606178C2 publication Critical patent/DE19606178C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N11/00Colour television systems
    • H04N11/04Colour television systems using pulse code modulation
    • H04N11/042Codec means
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • H04N1/644Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor using a reduced set of representative colours, e.g. each representing a particular range in a colour space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Description

Die Erfindung betrifft das Gebiet der Datenkompression, insbe­ sondere einer Kompression von palettisierten Bilddaten, und be­ trifft insbesondere ein Verfahren zum Komprimieren einer Anord­ nung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz.
Meistens wird bei Bildkompression angenommen, daß eine konti­ nuierliche Grautonskala oder ein Farbbild komprimiert wird. Bei einem kontinuierlichen Grauton-Bild hat ein kleiner Fehler in dem Wert eines Pixels eine kleine Farbverschiebung dieses Pixels zur Folge. Palettisierte (oder "indexierte") Bilder unterschei­ den sich von kontinuierlichen Grautonbildern dadurch, daß ein kleiner Fehler in einem Pixelwert zu einer vollständig anderen Farbe führen kann, und zwar deswegen, da der Farbwert eines Pi­ xel ein Index in einer Farbentabelle (Palette) ist. In der Ko­ pierbranche werden palettisierte Bilder oft als "Spotfarben" Bilder bezeichnet. Offensichtlich sind also die Probleme, palet­ tisierte Bilder verlustfrei hoch zu komprimieren, auch ein Pro­ blem in der Kopierbranche.
In Verbindung mit palettisierten Bildern kann im allgemeinen keine Information über die eventuelle Farbe eines Pixels durch den Pixel-Farbwert ohne Bezugnahme auf die Farbentabelle be­ stimmt werden. Obwohl dies ein Nachteil zu sein scheint, ist es ganz brauchbar, wenn mehr als ein Bild in einem System verwen­ det wird, wobei der einzige Unterschied die Farbtabelle ist. Beispielsweise kann das negative (inverse) Bild eines paletti­ sierten Bildes dadurch erhalten werden, daß die Farben in der Farbentabelle durch ihre Umkehrwerte ersetzt werden.
Ein Nachteil bei palletisierten Bildern besteht darin, daß sie nicht mittels eines verlustbehafteten Kompressionsprozesses komprimiert werden können, sondern verlustfrei komprimiert wer­ den müssen. Verlustbehaftete Kompressionsprozesse sind im all­ gemeinen günstig für eine Bildkompression, da sie im allgemei­ nen eine hohe Kompression bei geringer Leistung schaffen. Ein palettisiertes Bild weist zwei Teile auf, die zweidimensionale Anordnung von Pixel-Farbwerten und die Farbentabelle, die ver­ wendet wird, um die Pixel-Farbwerte in Farben zu übertragen; da jedoch die Farbentabelle viel weniger Speicher als die Anord­ nung von Pixel-Farbwerten erfordert, wird Kompression oft nur bei der Anordnung von Pixel-Farbwerten in Verbindung mit der Farbentabelle angewendet, in der Nicht-Komprimiertes zusammen mit dem komprimierten Bild enthalten ist.
Die am 1. Dezember 1994 eingereichte US-Patentanmeldung S.N. 08/347 789 der Anmelderin geht auf eine Erfindung von Mi­ chael Gormish und Martin Boliek und hat den Titel "Datenkom­ pression für palettisierte Videobilder". (Diese Anmeldung wird nachstehend als die "Gormish/Boliek-Anmeldung" bezeichnet.) Die Gormish/Boliek-Anmeldung zeigt ein Verfahren, um wirksam palet­ tisierte Bilder mit hohen Kompressionsraten zu komprimieren. Hochkomprimierte palettisierte Bilder werden bei vielen Anwen­ dungen benötigt, wie bei Spielkassetten, welche eine Speiche­ rung für die Bilder erfordern, die in einem Spiel (Video-Spiel, einem in der Hand gehaltenen Spieler, einem Computer-Spiel, usw.) verwendet werden. Hochkomprimierte, palettisierte Bilder sind auch erwünscht in Verbindung mit Online-Diensten und dem "Informatifons-Superhighway". Das weltweite Netz (World Wide Web-WWW) wird immer beliebter, um Information über das Internet zu verbreiten. Zum Teil beruht die Beliebtheit des WWW auf der Tatsache, daß die Grundeinheiten des WWW HTML-(Hyper Text Mark Up Language-)Dokumente sind, welche eingebettete Grafiken mit Text enthalten können. Diese Dokumente enthalten oft Bilder, welche palettisiert werden. Viele Benutzer des weltweiten Net­ zes (WWW) haben Zugriff auf diese Dokumente mit Hilfe eines Personal-Computers, wobei sie über ein Modem über normale Fern­ sprechleitungen mit dem Internet verbunden sind. Bei dieser Konfiguration ist ein Benutzer auf Datenraten von 14 400 Bits/s oder 28 800 Bits/s beschränkt.
Somit ist für einen rechtzeitigen Empfang von komplexen palet­ tisierten Bildern die Fähigkeit, diese Bilder für eine Übertra­ gung hoch zu komprimieren, der Schlüssel für die zunehmende Popularität des WWW. Obwohl schnellere Modems entwickelt sind, gibt es bereits eine Forderung nach komplexeren Grafiken. Folg­ lich wird eine Kompression in absehbarer Zukunft notwendig.
Viele in dem WWW verwendeten Bilder werden als grafische Aus­ tauschformat-(GIF-)Dateien gespeichert und übertragen, bei wel­ chen eine Ziv-Lempel-Kompression benutzt wird. Die Ziv-Lempel- Kompression behandelt das Bild als eine eindimensionale Folge von Indexwerten, welche die zweidimensionale Art von Bilddaten ignoriert.
Was folglich benötigt wird, ist eine Kompressionseinrichtung und ein -Verfahren, welche der Art nach palettisierte Bilddaten benutzen, um die Bilddaten hoch zu komprimieren; ferner wird ein entsprechender Dekompressor benötigt.
Durch die Erfindung ist eine verbesserte Kompression von palet­ tisierten Bilddaten geschaffen, indem die Bilddaten bei Farbe (für zweidimensionale Bilder wird dies als ein "Codieren in der Farbebene" bezeichnet) komprimiert (codiert) werden. Eine Farb­ ebene für ein nicht-binäres Bild ist ein binäres Bild, in wel­ chem jeder Pixel-Farbwert des nicht-binären Bildes durch ein Bit ersetzt wird, das anzeigt, ob dieses Pixel "in" dieser Farbebene ist oder nicht. Ein Pixel ist in einer Farbebene, wenn der Pixel-Farbwert gleich einem Farbwert ist, welcher der Farbebene zugeordnet ist.
Gemäß der Erfindung codiert ein Kompressor eine erste Farbebe­ ne, codiert dann eine zweite Farbebene und fährt mit dem Codie­ ren für jede folgende Farbebene fort, bis alle Farbebenen, die Pixel in sich aufweisen, codiert sind, außer bei der "letzten" Farbebene. Beim Codieren jeder Farbebene werden Pixel, welche in vorherigen Farbebenen liegen, ignoriert, da ein Pixel nur in einer Farbebene sein kann. Da jede codierte Farbebene eine bi­ näre Anordnung ist, kann sie mittels eines binären Bildcodie­ rers codiert werden.
Beim Decodieren werden die Farbebenen in derselben Reihenfolge decodiert. Die erste Farbebene wird decodiert und zeigt an, welche Pixel sich in der ersten Farbebene befinden; dann wird die zweite Farbebene decodiert, um anzuzeigen, welche Pixel sich in der zweiten Farbebene befinden, und welche in den nach­ folgenden Farbebenen sind. (Die codierte zweite Farbebene gibt weder einen Hinweis darauf, welche Pixel sich in der ersten Farbebene befinden, noch braucht sie dies zu tun.) Sobald alle, aber zumindest eine codierte Farbebene decodiert worden ist, folgert der Dekompressor, daß irgendwelche Restpixel von der letzten Farbe sind.
Natürlich erfordert ein Farbebenen-Codieren von nicht-binären Bildern mehr Durchgänge als ein anderes Codieren, wie ein Bite­ benen-Codieren. Beispielsweise wird ein 8 Bit Farbbild in acht (8) Durchgängen mit Hilfe des Bitebenen-Codierens codiert, aber es können bis 255 Durchgänge für ein vorgegebenes Pixel bei einem Farbebenen-Codieren erforderlich sein. Um die Anzahl an geforderten Durchgängen zu minimieren, werden die Farbebenen nach Dichte geordnet, und die dichteste Farbebene wird zuerst codiert, wobei sich Dichte auf die Dichte von Pixel in einer Farbebene bezüglich der Gesamtanzahl an Pixel in dem Bild be­ zieht. Wie vorstehend erläutert, wird ein Pixel codiert, indem es durch eine binäre Anzeige dargestellt wird, ob das Pixel sich in der zu codierenden Farbebene befindet oder nicht. Nach­ dem die erste Farbebene codiert ist, werden Pixel, bei denen bekannt ist, daß sie Farben von vorherigen codierten Farbebenen haben, nicht mehr codiert. Dadurch daß die dichtesten Farbebe­ nen zuerst codiert werden, wird die Gesamtanzahl an Durchgängen verringert.
In einer weiteren Ausführungsform wird jeder Pixelfarbwert durch einen Vektor dargestellt, und die Komponenten der Vekto­ ren werden gesondert durch "Unterfarben"-Ebenen codiert, wobei jede Unterfarben-Ebene alle die Pixel enthält, welche einen Vektor-Komponentenwert haben, welcher gleich dem Wert für die Unterfarbenebene ist. Auf diese Weise kann ein Bild ohne weite­ res parallel komprimiert werden.
In einer weiteren Ausführungsform wird jede Farbebene codiert, bis eine Schwellenwertzahl von codierten Pixel erreicht ist, und dann werden die verbleibenden Pixel durch eine Bitebene co­ diert.
Ein Entropie-Codierer verwendet Kontext-Information, um eine Kompression eines Pixels zu verbessern, indem der verwendete Code optimiert wird, um das Pixel basierend auf der Wahrschein­ lichkeit dieses Pixels, zu codieren, das entsprechend dem Pi­ xel-Kontext vorkommt. Üblicherweise kann in einem Bild der Kon­ text eines Pixel zum Teil durch dessen benachbarte Pixel be­ stimmt werden. Wenn die Bilddaten eine Ansammlung von kleineren Bildern, wie Schemen (sprites), Zeichen oder ein grafisches Me­ nü sind, können einige benachbarte Pixel unabhängig von dem zu codierenden Pixel sein, so daß die Kontext-Information die Pi­ xel-Positions-Information enthält, um eine Kompression weiter zu verbessern.
Da ein Codierer mehr Durchgänge bei dem Farbebenen-Codieren als bei anderen Codierschemen erfordert, wird ein schneller Entro­ pie-Codierer verwendet. Ein solches schnelles Codiersystem be­ steht darin, daß gemäß den Ausführungen in dem US- Patent 5,272,478 der Anmelderin der vorliegenden Erfindung ein B-Codierer als der Bitgenerator für den vorerwähnten Kompres­ sionsprozeß verwendet wird. Eine Alternative hierzu ist der Q- Codierer, der von IBM, New York entwickelt worden ist oder der hochschnelle binäre Entropie-Codierer, der in dem US- Patent 5,381,145 der Anmelderin (Erfinder Allen et. al) offen­ bart ist.
Die Erfindung schafft auch eine neue Einrichtung zum Durchfüh­ ren von parallelem Codieren und Decodieren. In einer Ausfüh­ rungsform wird ein Bild in Bänder aufgeteilt, und zwar eines pro Codierer. Jeder Codierer arbeitet unabhängig von den ande­ ren. Erforderlichenfalls werden fest vorgegebene Kontext-Pixel substituiert, wobei Codierer sich sonst auf die Werte von Pixel außerhalb dieses Bandes beziehen. Die Bänder können dann unab­ hängig parallel decodiert werden.
In einer anderen Ausführungsform durchlaufen mehrere Codierer das gesamte Bildcodieren für spezielle Farbebenen. Erforderli­ chenfalls wird das Bild in einem Speicher gespeichert, welcher gleichzeitig auf leere Speicher Zugriff haben kann, um einen Verlust an Parallelverarbeitung zu vermeiden. In dieser Ausfüh­ rungsform durchlaufen Codierer das Bild mit variablen Daten in Abhängigkeit von den Daten, auf die sie treffen (Farbebenen niedriger Dichte werden schneller verarbeitet als Farbebenen hoher Dichte). Die Codierer pausieren erforderlichenfalls, um mehrfach Zugriff auf denselben Speicher zu vermeiden, oder wenn ein Pixel für eine vorgegebene Farbebene Kontext von Pixel er­ fordert, die noch nicht bereits codiert worden sind.
In noch einer weiteren Ausführungsform durchlaufen mehr Codie­ rer das ganze Bild, sind aber nicht frei, um mit irgendeiner Geschwindigkeit zu arbeiten. Beispielsweise können die Codierer bei einem fest vorgegebenen Versatz (Offset) oder in einem be­ grenzten Fenster gehalten werden, welches sicherstellt, daß zwei Codierer nicht gleichzeitig Zugriff auf dasselbe Pixel ha­ ben, und daß kein Codierer Zugriff auf ein Pixel hat, bei wel­ chem Kontext-Pixel nicht schon codiert worden sind.
Die Erfindung ist auch bei der Kompression von nicht-bildbezo­ gene Daten anwendbar, wobei ähnliche Charakteristika der zu verdichtenden Daten bestehen und entsprechende Notwendigkeiten für eine Kompression vorhanden sind.
Nachfolgend wird die Erfindung anhand von bevorzugten Ausfüh­ rungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen erläutert. Es zeigen:
Fig. 1 ein schematisches Diagramm, bei welchem die Aufteilung eines Bildes auf Farbebenen gezeigt ist;
Fig. 2 ein Blockdiagramm eines Kompressors und Dekompressors gemäß der Erfindung;
Fig. 3 ein schematisches Diagramm einer Kontext-Modellscha­ blone;
Fig. 4 ein schematisches Diagramm eines Kontext-Modells;
Fig. 5 ein Ablaufdiagramm eines Prozesses gemäß der Erfindung zum Codieren von Farbebenen in einem Kompressionssystem;
Fig. 6 ein Blockdiagramm eines Parallel-Codierers für ein Farb­ ebenen-Codieren;
Fig. 7 ein Blockdiagramm eines Parallel-Codier-Systems;
Fig. 8 ein detaillierteres Blockdiagramm des in Fig. 7 darge­ stellten Parallel-Codiersystems, bei welchem nur ein Co­ dierer dargestellt ist;
Fig. 9 ein Blockdiagramm eines Parallel-Codiersystems, in wel­ chem das Fortschreiten von Codierern mit dem Fortschrei­ ten anderer Codierer verbunden ist;
Fig. 10 eine Tabelle, die zeigt, wie die Codierer in dem Parallel-Codiersystem der Fig. 9 sich über die Pixel ei­ nes Bildes fortbewegen, bei welchem die Codierer gezwun­ gen sind, mit aufeinanderfolgen Pixeln zu arbeiten, und die Codierer sich nicht fortbewegen, bis das hintere Pi­ xel codiert ist;
Fig. 11 eine Tabelle, die zeigt, wie die Codierer in dem Parallel-Codiersystem der Fig. 11 sich über die Pixel ei­ nes Bildes fortbewegen, bei welchem Codierer gezwungen sind, so daß, sobald ein Codieren an einem Pixel be­ ginnt, ein Codieren beendet wird, bevor ein neues Pixel codiert wird, und
Fig. 12 eine Tabelle, die zeigt, wie die Codierer in dem Parallel-Codiersystem der Fig. 9 sich über Pixel eines Bildes fortbewegen können, bei welchem die Codierer ge­ zwungen sind, so daß ein Codieren an einem neuen Pixel begonnen wird, wenn ein vorderer Codierer verfügbar ist.
Fig. 1 ist ein schematisches Diagramm, das die Aufteilung eines Bildes auf Farbebenen anzeigt. Wie nachstehend noch erläutert wird, wird, obwohl ein Bild, das auf Farbebenen aufgeteilt ist, größer als ein nicht-aufgeteiltes Bild ist (für eine 8 Bit-Farbe ist der Unterschied 256 Bit/Pixel gegenüber 8 Bit/Pixel), das aufgeteilte Bild üblicherweise auf eine kleinere Größe kompri­ mierbar ist als das nicht aufgeteilte Bild.
Ein digitales Bild wird durch eine zweidimensionale Anordnung von Pixel dargestellt, wobei jedes Pixel eine Stelle in einem Bildgitter und jedes Pixel einen Farbwert hat. Zur Verdeutli­ chung zeigt Fig. 1 nur ein (3 × 3) Bild in 16 möglichen Pixelfar­ ben, während in der Praxis Bilder viel mehr Pixel in viel mehr möglichen Farben enthalten. Beispielsweise ist in einer speziel­ len Ausführungsform ein Bild durch eine Anordnung aus (1024 × 1024) Pixel gebildet, und jedes Pixel hat einen Farbwert, der aus einer Palette von 16,8 Millionen Farben (eine 24Bit Farbe) ausgewählt ist.
Fig. 1(A) zeigt jedes Pixel mit einer Bezeichnung, die dessen Position in dem Bild anzeigt, wobei die erste Ziffer die Zeile für das Pixel und die zweite Ziffer dessen Spalte anzeigt.
Fig. 1(B) gibt den Farbwert für jedes Pixel an. Der Farbwert ist ein ganzzahliger Wert von 0 bis 15, obwohl nicht alle Farbwerte sich eignen, um in dem Bild von Fig. 1 zu erscheinen. Die Farbe 7 ist der häufigste Farbwert, da fünf der Pixel die Farbe 7 haben.
Fig. 1(C) zeigt das Bild, das in gesonderten Farbebenen aufge­ teilt ist, und zeigt einen binären Bitstrom, welcher die aufge­ teilten Farbebenen darstellt. Jedes Pixel einer gesonderten Farbebene hat einen von drei Werten: "1" zeigt an, daß die Farbe des Pixels zu der Farbe der Farbebene paßt; "0" zeigt an, daß die Farbe des Pixels nicht zu der Farbe der Bildebene paßt und daß die Farbebene, zu der das Pixel paßt, nicht bereits codiert worden ist. "--" zeigt an, daß die Farbe des Pixels zu einer Farbe einer Farbebene paßt, welche bereits codiert worden ist. Die Farbe von Pixel, die mit "--" sind, ist bereits decodiert worden, wenn ein Decodierer auf sie trifft, so daß keine weitere Information über dieses Pixel benötigt wird. Daher braucht die­ ses Pixel nicht mehr codiert zu werden, und der sich ergebende binäre Strom enthält nur die Einsen ("1") und Nullen ("0") von den aufgeteilten Farbebenen. Wenn nicht die Reihenfolge der Farbebenen festgelegt ist, ist eine Tabelle der Reihenfolge von Farbebenen (die üblicherweise nach der Häufigkeit geordnet wer­ den, daher die Bezeichnung "FT" für die Häufigkeits-(frequen­ cy)Tabelle) in dem Datenstrom enthalten.
In einer typischen Ausführungsform ist das vorübergehende Spei­ chern begrenzt, so daß die Farbebenen-Aufteilung nicht eine phy­ sische Aufteilung, sondern ein logische ist. Folglich wird die Häufigkeitstabelle (FT) erzeugt und verwendet, um festzulegen, daß die Farbebene 7 zuerst codiert werden sollte. Da jedes Pixel aus dem Bild gelesen wird, wird "1" abgegeben, wenn es ein Pixel von Farbe 7 ist; anderenfalls wird "0" abgegeben. Für nachfol­ gende Farbebenen wird "1" für Pixel in dieser Farbebene abgege­ ben, eine "0" wird für Pixel in Farbebenen abgegeben, welche auf die aktuelle Farbebene in der Häufigkeitstabelle folgen, und es wird nichts abgegeben (was durch "--" in Fig. 1(C) bezeichnet ist), für Pixel in Farbebenen, welche vor der aktuellen Farbebe­ ne in der Häufigkeitstabelle kommen, wenn diese Pixel bereits voll codiert worden sind. Aufgrund einer willkürlichen Überein­ kunft werden Farbebenen mit derselben Dichte zuerst mit der nie­ drigsten Farbzahl eingeordnet. Folglich kommt in Fig. 1 die Farb­ ebene 3 vor einer (nicht dargestellten) Farbebene 4. Da die Farbebene 4 die letzte Farbebene ist, braucht sie nicht codiert zu werden. Die Farbebenen für nicht-benutzten Farben (z. B. Farb­ ebenen 0, 1, 2, 5, 6, 8, 9, 10, 11, 13, 14 und 15 in Fig. 1) brauchen daher auch nicht codiert zu werden.
Ein Dekompressor erhält den binären Bitstrom (nachdem er co­ diert ist) und muß das Bild aus der Information in dem Bitstrom wieder zusammensetzen. Wenn der Bitstrom von Fig. 1(C) in einem Codierer vorgesehen wird und der Codierer und der Decodierer sich verständigen, daß die Bildgröße (3 × 3) ist, legt der Deco­ dierer fest, daß die häufigste Farbebene die Farbebene 7 ist, und daß die ersten neun Bits in dem Bitstrom nach der Häufig­ keitstabelle (FT) zu dieser Bitebene gehören. Da die Bitebene 7 vier "0" Bits hat, bestimmt der Decodierer auch, daß die nächste Farbebene durch die nächsten vier Bits des Bitstroms codiert wird. Der Codierer kann dann aus der Häufigkeitstabelle (FT) festlegen, daß diese vier Bits für eine Farbebene 12 sind, daß die nächste Farbebene eine Farbebene 3 ist, daß die Farbebene 3 bei den nächsten zwei Bits des Farbstroms codiert wird (da die Farbe 12 zwei "0" Bits hat), und daß die letzte Farbebene die Farbebene 4 ist. Hieraus folgt dann, daß alle restlichen Farbe­ benen leer sind.
Selbstverständlich kann der vorstehend beschriebene Prozeß auch dazu verwendet werden, um Daten zu komprimieren, welche nicht Bilddaten sind oder welche nicht Farben einschließen, indem er­ kannt wird, daß jedes Element (wie beispielsweise ein Byte) ei­ nes zu komprimierenden Datenblocks analog einem Pixel-Farbwert ist, und eine "Element" -Ebene Elemente gruppiert, die Werte ha­ ben, welche gleich dem Wert sind, welcher der Element-Ebene in der Weise zugeordnet ist, daß Pixel gleicher Farbe in Farbebenen gruppiert werden.
Fig. 2 zeigt einen Kompressor 202 und einen Dekompressor 204, welche verwendet werden können, um den gerade beschriebenen Pro­ zeß durchzuführen. Der Kompressor 202 liest nicht-komprimierte Bilddaten (Pixel-Farbwerte) aus einer Datei 206 und setzt die Daten in komprimierte Bilddaten um, welche, wie dargestellt, als Datei 208 gespeichert werden. Diese Datei 208 wird von dem De­ kompressor 204 benutzt, um das Originalbild in rekonstruierte Bilddaten umzugestalten, die in einer Datei 210 gespeichert sind. Wenn eine verlustfreie Kompression verwendet wird, ist die Daten 210 eine exakte Kopie der Datei 206.
Der in Fig. 2 dargestellte Kompressor 202 weist einen Ebenen- Separator 212, eine Kontext-Modelleinheit 214 und einen Entro­ pie-Codierer 216 auf. Der in Fig. 2 dargestellte Dekompressor 204 weist einen Entropie-Decodierer 218, eine Kontext-Modelleinheit 220 und einen Ebenen-Akkumulator 222 auf. Die Dateien 206, 208, 210 sind Dateien auf einem Plattenspeicher oder sind Speicher­ blöcke in einem Computer-Speicher.
In dem Kompressor 202 hat der Ebenen-Separator 212 einen Ein­ gang, um Daten aus der Datei 206 zu lesen und einen Ausgang für separierte Bildebenen-Daten (Wert "1", "0" oder "--"; Pixel­ stelle, usw.). Eine Kontext-Modelleinheit 214 hat einen Eingang für separierte Bildebenen-Daten und zwei Ausgänge, von denen an einem ein Ergebnis und an dem anderen ein Kontext für dieses Er­ gebnis abgegeben werden. Der Entropie-Codierer 216 hat Eingänge für das Ergebnis und dessen Kontext und hat einen Ausgang für einen komprimierten Bitstrom, welcher in der Datei 208 gespei­ chert ist.
In dem Dekompressor 204 hat der Entropie-Decodierer 218 einen Eingang für den komprimierten Bitstrom, einen Eingang für einen Kontext und einen Ausgang zum Abgeben eines Ergebnisses. Die Kontext-Modelleinheit 220 hat einen Eingang, um das Ergebnis von dem Entropie-Decodierer 218 aufzunehmen, einen Ausgang, um einen Kontext an dem Entropie-Decodierer 218 zu schaffen und einen Ausgang, um einen Farbebenen-Bitstrom zu schaffen. Der Ebenen- Akkumulator 222 hat einen Eingang, um den Farbebenen-Bitstrom von der Kontext-Modelleinheit 220 anzunehmen und einen Ausgang zum Abgeben von Bildern an die Datei 210.
In der WWW-(World Wide Web)Umgebung wird die Datei 206 vorher in die Datei 208 komprimiert, und die Datei 208 ist mit einem WWW-Server versehen und wird folglich für Nutzer von WWW-Brow­ ser-Kunden verfügbar gemacht. Diese WWW-Kunden würden dann einen Dekompressor 204 haben. Einige Browser-Kunden speichern die nicht-komprimierten Bilddaten in einer Datei, wie beispielsweise der Datei 210, während andere Browser-Kunden das Bild für eine Anzeige dekomprimieren, ohne es jedoch ständig in einer Datei zu speichern, wenn nicht der Browser-Nutzer das sicherzustellende Bit anfordert.
Der Ebenen-Separator 212 setzt ein Bild in einen Bitstrom um, welcher ähnlich dem in Fig. 1(C) dargestellten Bitstrom ist. Die­ ser Bitstrom wird dann in die Kontext-Modelleinheit 214 eingege­ ben, welche zusammen mit dem Entropie-Codierer 216 den Bitstrom codiert. Die Kontext-Modelleinheit 214 schafft einen Kontext für jedes Ergebnis, das dem Entropie-Codierer 216 durchlaufen hat, und dieser Kontext ist entweder ein optimierter Gesamt-Kontext oder kann in Abhängigkeit von den Bildern variieren. Der Ebenen- Separator 212 gibt auch die Farb-Häufigkeitstabelle (FT) an die Datei 208 ab. Natürlich braucht, wenn die Reihenfolge von Farben im vorhinein festgelegt ist, die Häufigkeitstabelle (FT) nicht für jede Datei 208 von dem Kompressor 202 zu dem Dekompressor 204 durchlaufen. Erforderlichenfalls ist die Farbtabelle, welche die Pixel-Farbwerte in Farben abbildet, auch in der Datei 208 enthalten.
Da der Dekompressor 204 in der Lage sein muß, das Bild aus dem codierten (komprimierten) Bild zu rekonstruieren, können Pixel, welche vorher codiert wurden, als Kontext-Pixel für ein aktuel­ les Pixel verwendet werden. Bekanntlich schaffen Pixel in der Nähe des aktuellen Pixels einen brauchbaren Kontext, wenn das aktuelle Pixel codiert wird. Bei anderen Codier-Schemata, bei welchen ein Codierer nur einen Durchlauf über das Bild von oben nach unten und von links nach rechts macht, können die Pixel un­ ter und die Pixel rechts von dem aktuellen Pixel keinen Kontext für das aktuelle Pixel schaffen, da diese Pixel dem Dekompressor unbekannt sind, wenn das aktuelle Pixel zu decodieren ist. Gemäß der Erfindung hat jedoch nach der ersten Farbebene der Decodie­ rer Information über die Pixel darunter und die Pixel rechts da­ von, nämlich, ob diese Pixel auf den vorher decodierten Bildebe­ nen vorhanden waren oder nicht.
Fig. 3 und 4 veranschaulichen, wie ein Kontext gebildet wird. Fig. 3 zeigt eine Kontext-Modellschablone (template) 300. Eine Kontext-Modellschablone dient dazu, Beziehungen zwischen einem aktuellen Pixel und potentiellen Kontext-Pixel zu bezeichnen, die bei dem Codieren/Decodieren des aktuellen Pixel verwendet werden. In der Kontext-Modellschablone 300 ist eine Stelle des aktuellen Pixels mit "X" bezeichnet, und die umliegenden Pixel- Stellen sind mit T0 bis T23 bezeichnet. In der Praxis verwendet ein Kontextmodell üblicherweise weniger als alle die Kontextpi­ xel, die in einer Schablone mit der Größe der Schablone 300 ver­ fügbar sind. Beispielsweise kann ein nicht allzu komplexer Co­ dierer die Farbwerte der Kontextpixel T0 und T2 verwenden. Wenn die Farbwerte durch acht Bits dargestellt werden, dann sind 65 536 ((2k)²) verschiedene Kontexte für jeden von 256 möglichen aktuellen Pixel-Farbwerten möglich. Wenn nur ein Bit verwendet wird, das anzeigt, ob das Kontext-Pixel in der laufenden bzw. aktuellen Farbebene liegt, kann der Kontext durch mehr Pixel ge­ schaffen werden.
Fig. 4 zeigt ein Kontextmodell 400, welches den Kontext anzeigt, der für einen Codierer verwendet worden ist. Das Kontextmodell 400 basiert auf der Kontext-Modellschablone 300. Die Gormish/Bo­ liek-Anmeldung lehrt, wie ein Codiersystem auszulegen ist, wenn das Kontext-Modell eine sich dynamisch ändernde Funktion der Kontext-Modellschablone ist. Mit dem Kontextmodell 400 können neun Kontext-Pixel verwendet werden, da jedes Pixel nur ein Kon­ textbit erfordert, nämlich ein Bit, das anzeigt, ob das Kontext­ pixel in der laufenden Farbebene ist oder nicht. In Fig. 4 ist das laufende bzw. aktuelle Pixel, für welches ein Kontext benö­ tigt wird, mit "X" bezeichnet und seine Kontextpixel sind mit C0 mit C8 bezeichnet.
Als Alternative hierzu könnte der Kontext, welcher durch ein Kontextpixel geschaffen ist, ein Bit sein, das anzeigt, ob das Pixel codiert/decodiert worden ist oder nicht oder der Kontext könnte einer von drei Werten sein, der anzeigt, daß das Kontext­ pixel in einer vorher codierten Farbebene, der laufenden Farbe­ bene oder in einer noch nicht-codierten Farbebene liegt. Manches von dem Kontext kann auch durch Pixel rechts von dem laufenden Pixel oder unter dem laufenden Pixel geschaffen werden, wie bei­ spielsweise C9 bis C11. Für diese Pixel zeigt das Kontextbit an, ob diese Pixel in einer vorher codierten Farbebene liegen oder nicht. Für nicht-parallele Codiersysteme (und einige Parallel- Codiersysteme) sind die Kontextbits für Pixel C9 bis C11 bereits zu der Zeit bekannt, während welcher das laufende Pixel zu deco­ dieren ist.
In Abhängigkeit von den Bilddaten könnte eine Kontext-Modell­ maske, wie diejenige, die in der Gormish/Boliek-Anmeldung darge­ stellt ist, verwendet werden, um ein Kontextmodell 400 dynamisch zu modifizieren, um auszuwählen, welche Bits von dem Pixel in der Kontext-Modellschablone 300 den Kontext beeinflussen. Erfor­ derlichenfalls könnte Information darüber, wie das Kontextmodell 400 dynamisch modifiziert wird, als Teil in der Kartei 208 er­ halten sein. Ebenso könnte, wenn eine darunter liegende Struktur in den Bilddaten vorhanden ist, und das Bild aus unabhängigen Unterbildern gebildet ist, beispielsweise aus Blöcken von (8 × 8 ) Pixel, die Zeichen oder Schemen (sprites) festlegen, eine Pixel-Position in einem Zeichen oder einem Schemen als zu­ sätzliche Kontext-Information verwendet werden. Wenn beispiels­ weise ein Bit anzeigt, ob das laufende Pixel in der ersten Zeile eines Zeichens oder innen liegt oder nicht, könnte dieses Bit wertvolle Kontextinformation sein, wenn die Kontextpixel über einem Pixel in einer ersten Zeile Pixel von verschiedenen Zei­ chen oder Schemen sind und im Vergleich mit Pixel in dem Zeichen oder Schemen nicht mehr in Beziehung sein wollen.
In Fig. 2 wird ein Decodieren in einer Weise durchgeführt, die dem Decodierprozeß entgegengesetzt ist. Der Ebenen-Akkumulator 222 nimmt den Bitstrom von der Kontext-Modelleinheit 220 an und füllt einen internen Puffer auf, wobei mit den Pixel begonnen wird, welche die häufigste Farbe haben. Wenn alle Pixel erhalten und decodiert sind, enthält der interne Puffer das Bild, welches in die Datei 210 ausgelesen werden kann. Alternativ hierzu kön­ nen die Pixel abgegeben werden, da sie in der Datei 210 erhalten werden, was einfach durchzuführen ist, da die Datei 210 direkt zugänglich ist. Wenn ein interner Puffer verwendet wird, kann er vorher mit Pixel geladen werden, die alle auf den Farbwert der Pixelebene eingestellt sind, von der bekannt ist, daß sie die letzte auftretende Farbebene ist. Wenn der Puffer vorher mit der Farbe der zuletzt vorkommenden Farbebene geladen ist, würde dies als ein Hinweis/Flag dienen, durch das angezeigt wird, daß das Pixel noch nicht decodiert worden ist.
Fig. 5 ist ein Ablaufdiagramm eines Prozesses zum Codieren von Pixel gemäß der einen Ausführungsform der Erfindung. Wie aus der detaillierten Beschreibung zu ersehen ist, gelten die Arbeits­ weise und die Kenndaten für einen Codierer sowie auch für einen Decodierer. Ein Codierer setzt einen ersten Bitstrom basierend auf einem laufenden, zu codierenden Bit und basierend auf Infor­ mation über vorher codierte Bits in einen zweiten Bitstrom um, wobei der zweite Bitstrom vorzugsweise weniger Bits enthält als der erste Bitstrom. Ein Decodierer setzt den zweiten Bitstrom in den ersten Bitstrom um, indem er dieselben Aktionen wie der Co­ dierer durchführt, um so festzulegen, welches aktuelle Bit bzw. welche aktuellen Bits des ersten Stroms das aktuelle Bit bzw. die aktuellen Bits des zweiten Bitstroms erzeugt haben würden, wenn die Information über vorher codierte Bits vorgegeben ist, (welche der Codierer zur Verfügung hat, da der Decodierer diese Bits bereits decodiert hat). Daher ist ein Codierer äquivalent einem Codierer, solange der Codierer nicht auf Information war­ tet, welche nicht schon bereits codiert worden ist oder nicht bereits codiert worden sein kann, wenn das aktuelle Bit zu deco­ dieren ist. Folglich wird im Hinblick auf die Verständlichkeit der Begriff "Codierer" sowohl in Verbindung mit einem Codierer in einem Kompressor als auch in Verbindung mit einem Decodierer in einem Dekompressor verwendet.
In Fig. 5 beginnt der Codierprozeß durch Initialisieren eines Zeigers C an der ersten Bitebene (Schritt S1) durch Initialisie­ ren einer Archiv-(history)Anordnung derselben Größe wie das Bild. Die Archiv-Anordnung speichert ein Bit für jedes Pixel des Bildes und jedes Bit wird bei null initialisiert. Das Ordnen der Farbebenen kann vorher vorgenommen werden, so daß die erste Bit­ ebene die dichteste Bitebene ist; dieser Prozeß kann jedoch auch durchgeführt werden, ohne daß die Bitebenen überhaupt geordnet werden, obwohl ohne ein Ordnen mehr Codieroperationen erforder­ lich sein können. Als Alternative hierzu können die Farben umge­ ordnet werden, so daß die Farbwerte in der Häufigkeitsreihenfol­ ge vorliegen.
Die Farbebenen sind jedoch geordnet; das erste Pixel der Farbe­ bene C wird gelesen (Schritt S2) und der Ebenen-Separator 212 prüft die Archiv-Anordnung, um zu sehen, ob das Pixel bereits decodiert worden ist (Schritt S3). Wenn die Archiv-Anordnung ein "1" Bit für dieses Pixel hat, ist es bereits codiert worden, an­ dernfalls wird das Bit "0". Wenn das Pixel nicht bereits codiert worden ist, wird es codiert (S4) und das Archivbit für dieses Pixel wird "1" gesetzt (S5).
Nachdem das Pixel codiert ist oder nachdem herausgefunden ist, daß es bereits codiert ist, überprüft der Ebenen-Separator 212 mehr Pixel in der laufenden Farbebene (S6). Wenn es mehr Pixel gibt, wird das nächste Pixel erhalten (S7), und der Prozeß wird von dem Schritt S3 an wiederholt. Im übrigen prüft der Separator 212, um zu sehen, ob eine Schwellenwertzahl von Pixel oder Farb­ ebenen verarbeitet worden ist (S8). In diesem Fall werden die verbleibenden Pixel mit Hilfe einer Bitebenen-Trennung codiert (S9). Anderenfalls wird C inkrementiert, um die nächste Farbebene anzuzeigen (510). Der Ebenen-Separator 212 prüft dann, um zu se­ hen, ob es weniger als eine verbleibende Farbebene gibt [C<(MAX - 1)] (Schritt S11). Wenn dem nicht so ist, endet der Codierpro­ zeß; andernfalls kehrt er auf den Schritt S2 mit dem ersten Pi­ xel der nächsten Farbebene zurück. In einigen Ausführungsformen gibt es keinen zu erreichenden Schwellenwert, und das ganze Bit wird bei der Farbebenen-Trennung verarbeitet (d. h. Schritt S9 wird niemals erreicht). In anderen Ausführungsformen werden bei der Farbebenen-Trennung bzw. Aufteilung Pixel in Farbgruppen- Ebenen aufgeteilt, die mehr als eine Farbe pro Farbgruppe auf­ weisen. In diesen Ausführungsformen wird ein Schritt, restliches Codieren für eine Bitebene im Anschluß an den Schritt S11 vor Erreichen des Schrittes S2 (wahlweise Schritt 512) durchgeführt.
Da ein Bild mit einer großen Anzahl Farben (256 oder mehr) eine große Anzahl an Durchläufen für ein Codieren oder Decodieren er­ fordern kann, ist es zweckmäßig, wenn diese Operationen parallel in einer Parallel-Hardware durchgeführt werden können. Bei den vorstehend beschriebenen, hochschnellen binären Entropie-Codie­ rern kann ein Entropie-Codieren parallel erfolgen, während nur eine einzige komprimierte Ausgangsdatei erzeugt wird, welche die notwendige Ausgangsgröße für die meisten Systeme ist. Für paral­ lele Operationen, um einen Geschwindigkeitsvorteil zu schaffen, müssen die Kontext-Modelleinheiten und Codierer in der Lage sein, parallel zu arbeiten, d. h. Daten ohne Bezugnahme auf ande­ re Kontext-Modelleinheiten oder Codierer zu verarbeiten oder oh­ ne die Notwendigkeit hierauf zu warten. Natürlich kann ein Parallel-Codiersystem mit N parallelen Wegen nicht immer N-mal so schnell wie ein einziger Weg betrieben werden, da einige Wege auf andere Wege warten können, um benötigte Informationen zu er­ zeugen oder um einen Zugriff auf einen Speicher zu beenden, bei welchem ein Konkurrenzsituation vorliegt.
Wenn ein hochschneller binärer Entropie-Codierer bei einem Bit­ ebenen-Codierer verwendet wird, ist ein paralleles Kontext-Mo­ delliersystem, bei welchem jede Kontext-Modelleinheit auf einer Bitebene arbeitet, ein einfacher Weg für paralleles Verarbeiten, insbesondere wenn die Daten vorverarbeitet werden, so daß ein Aufspalten in die Bitebenen den Kompressionswirkungsgrad nicht nachteilig beeinflußt, wie in der am 23. Februar 1994 einge­ reichten US-Patentanmeldung S.N. 08/200,233 der Anmelderin der vorliegenden Anmeldung beschrieben ist, deren Erfinder Zandi et al sind und welche den Titel trägt "Compression of Palettized Images and Binarization for Bitwise Coding of M-ary Alphabets Therfor". (Auf diese Anmeldung wird nachstehend als "Zandi"-Pa­ tentanmeldung Bezug genommen) . Jedoch müssen bei dem Farbebenen- Codieren die Daten durch ein anderes Kriterium als durch den Pi­ xelwert getrennt werden.
Nachstehend werden mehrere Systeme für ein paralleles Codieren in Farbebenen mit Hilfe von Kontext-Modellen beschrieben. In einem dieser Systeme ist N die Anzahl von verfügbaren Parallel- Codierern. In einem System wird das Bild in N Pixelbändern oder andere Unterteilungen des Bildes aufgeteilt, und jedes Band oder jede Unterteilung wird mittels eines Codierers codiert. Die Un­ terteilung in Bändern ist herkömmlich und begrenzt den Verlust im Kompressionsverhältnis, da jeder Codierer weniger als die durch das volle Bild geschaffene Information hat.
Wenn das Bild in Bänder unterteilt ist, dann werden Kontext-Pi­ xel, welche sonst in einem anderen Band als dem zu codierenden Pixel liegen, durch bekannte Pixel ersetzt, wie beispielsweise Pixel, welche die häufigste oder erste Farbe haben, so daß ein Kontext für Pixel in einem Band nur durch Pixel in dem Band be­ stimmt wird.
Fig. 6 ist ein Blockdiagramm eines solchen Parallel-Codiersy­ stems 600. Ein Bildpuffer 602, welcher die Anordnung an Pixel- Farbwerten enthält, welcher das Bild darstellen, ist logisch in N Bänder von jeweils 180 Zeilen unterteilt. Dieser Bildpuffer ist entweder ein Speicher, der gesondert von der Eingangsdatei 206 betrieben wird, oder eine Bilddatei 206 wird direkt betrie­ ben, und ein Bildpuffer 206 ist lediglich eine andere logische Betrachtungsweise. Ein Band wird in eine Kontext-Modelleinheit 604 eingegeben, und die zwei Ausgangswerte der Kontext-Mo­ delleinheit werden in einen Codierer 605 eingegeben. Die Aus­ gangswerte des Codierers 605 (0)-(N-1) werden in eine Bitstrom- Kombiniereinheit 606 eingegeben, welche einen einzigen kompri­ mierten Datenstrom an die Datei 208 abgibt. Die Arbeitsweise der Bitstrom-Kombiniereinheit 606 ist ähnlich derjenigen, die in dem weiter oben angeführten US-Patent 5,381,145 dargestellt ist.
Eine Kontext-Modelleinheit 604 ist im einzelnen einschließlich einer Steuerlogik 608 und einem Puffer 610 zum Halten einer festen Kontextzeile dargestellt. Die Kontext-Modelleinheit 604 arbeitet wie eine herkömmliche Kontext-Modelleinheit, indem sie ein Kontextbit ID und ein Ergebnisbit an einem Codierer 605 vor­ sieht, außer wenn die Kontext-Modelleinheit 604 einen Kontext schafft, welcher sonst von Pixel außerhalb dieses Bandes abhän­ gen kann. In diesen Fällen benutzt die Steuerlogik 608 Pixelwer­ te von dem Puffer 610, um den Kontext statt dessen durch Verwen­ den von Pixel von außerhalb des Bandes zu bilden. Diese Substi­ tution macht das Codieren, folglich auch das Decodieren jedes Bandes unabhängig von den Pixel in den anderen Bändern.
Wenn Kontext durch Pixel links von und oberhalb des aktuellen Pixels vorgesehen ist, gibt die Kontext-Modelleinheit 604 diese Pixel entweder von einem internen Speicher oder von dem Bildpuf­ fer 602 aus ein. Beispielsweise kann eine Kontext-Modelleinheit 604 (1) normalerweise auf Zeile 127 Bezug nehmen, um Kontext für Pixel in Zeile 128 festzulegen. Jedoch benutzt sie den Puffer 610 als einen Ersatz für die Zeile 127. Wenn die ersetzte Zeile eine Zeile von Pixel ist, welche alle dieselbe Farbe beispiels­ weise die häufigste Farbe haben, braucht der Puffer 210 nur groß genug zu sein, um einen Farbenwert zu speichern. In anderen Aus­ führungsformen ist der Inhalt des Puffers 610 im vorhinein fest­ gelegt oder ist auf andere Weise ohne Bezugnahme auf andere Bän­ der bestimmbar.
Im Hinblick auf den Verlust an echter Kontext-Information in­ folge der Substitution wird der Kompressionswirkungsgrad etwas reduziert; jedoch ist er nur um eine von 128 Zeilen reduziert. Wenn die Bänder jeweils so dick wie 128 Zeilen sein können oder wenn Speicherraum für den Bildspeicher 602 nicht verfügbar oder unerschwinglich teuer ist, dann kann eine andere Einrichtung, um eine Paralleloperation durchzuführen, besser sein.
In einigen Übertragungssystemen, insbesondere in Verbindung mit WWW-Bildern ist die Latenz von Teilen eines Bildes ein solches Ergebnis. Beispielsweise ist es oft wünschenswert, Pixel anzu­ zeigen, wenn sie empfangen werden, selbst wenn das gesamte Bild noch nicht empfangen ist. Bei dem in Fig. 6 dargestellten System wird jedes Band codiert und daher mehr oder weniger gleichzeitig decodiert. Um eine Latenz zu reduzieren und um folglich das An­ zeigen der oberen Teile des Bildes zuerst zu ermöglichen, kann ein Parallelcodierer entsprechend konfiguriert werden, um das Bild in der Reihenfolge von oben nach unten zu verarbeiten.
Beispielsweise kann ein Codierer nur für die Farbebene 0 codie­ ren, indem mehrere Pixel vor einem anderen Codierer stehen blei­ ben, welcher für die Farbebene 1 codiert. Wenn weniger als N Co­ dierer vorgesehen sind, beendet der erste Codierer eine Zeile und codiert diese Zeile für eine Farbebene N, der nächste Codie­ rer codiert für eine Farbebene N+1, usw. Um hierfür eine Ge­ schwindigkeitszunahme zu schaffen, muß der Speicher, der verwen­ det ist, um das Bild zu erhalten, mehrfache gleichzeitige Leseo­ perationen zulassen oder muß in mehrere Bänke unterteilt werden, die jeweils unabhängig von verschiedenen Codierern zugänglich sind.
Fig. 7 und 8 zeigen ein derartiges alternatives Parallel-Codier­ system 700. Verglichen mit dem Parallel-Codiersystem 600 verwen­ det das Parallel-Codiersystem 700 genauere Kontext-Information auf Kosten einer möglicherweise langsameren Paralleloperation. In diesem System durchläuft jede Kontext-Modelleinheit das ge­ samte Bild und erzeugt Kontext für eine oder mehrere Farbebenen, während in dem System 600 jede Kontext-Modelleinheit Kontext von jedem Pixel in dessen Band für jede Farbebene schafft. Wenn es zu einem Zeitkonflikt kommt, (bei einem Versuch, bei mehr als einer Kontext-Modelleinheit, eine Speicherstelle zu lesen) wer­ den ein oder mehrere Kontext-Modelleinheiten für einen Verarbei­ tungszyklus verzögert, was dann der Grund ist, warum das Gesamt­ system langsamer sein kann als eine reine Paralleloperation. Um das Streitproblem Speicher zu mildern, wird das Bild in Spei­ cherbänke zergliedert, um den Speicherweg zu verbreitern. Solan­ ge jede Zeile vollständig codiert wird, bevor die nächste Zeile codiert ist, und Pixel von der zu codierenen Zeile dem Kontext eines zu codierenden Pixel nicht zugeteilt werden, kommt es zu keinen Kausalitätsproblemen.
Wie dargestellt, werden Pixelwerte aus einem eingegebenen Bild 206 durch eine Kontext-Modell-Steuereinheit 207 gelesen. Die Steuereinheit 207 zerlegt die Pixelwerte in M Speicherbänke 701 (1)-(M) und steuert die Auswahl-Zeilen von N(M-zu-1) Multiple­ xern 706(0)-(N-1), um einen breiteren Speicherweg zu einer An­ ordnung von Kontext-Modelleinheiten 708(0)-(N-1) zu schaffen. Jede Kontext-Modelleinheit 708 hat zwei Ausgänge, einen für ein Kontextfach ID und einen für ein Ergebnisbit. Diese Ausgänge führen zu einem parallelen Entropie-Codierer 710 (wie in Fig. 8 dargestellt ist).
Fig. 8 zeigt einen Kontext-Modelleinheit 708(i), einen Codierer 710 und eine Kontext-Modell-Steuereinheit 702 einschließlich ei­ nes einzigen Auswahl-Ausgangs und eines einzigen Pausenausgangs der Kontext-Modell-Steuereinheit 702 im einzelnen. Wie aus den Figuren zu ersehen ist, ist jeder Multiplexer 206 mit einem ent­ sprechenden Auswahl-Ausgang einer Kontext-Modell-Steuereinheit 702 verbunden, und jede Kontext-Modelleinheit 708 ist mit einem entsprechenden Pause-Ausgang einer Kontext-Modell-Steuereinheit 702 verbunden. Der Zweck des Auswahl-Ausgangs besteht darin, einen Multiplexer 706(i) zu steuern, so daß die Kontext-Mo­ delleinheit 708(i) Eingangspixel erforderlichenfalls von der richtigen Speicherbank 704 erhält. Wie aus der vorstehenden Be­ schreibung zu ersehen ist, könnte das Parallel-Codiersystem ohne die Anzahl Speicherbänke 704(1)-(M) und die Multiplexer 706(1)- (M) betrieben werden. Der Zweck der Pausierausgänge besteht dar­ in, daß die Kontext-Modelleinheit 708(i) pausiert, wenn diese Kontext-Modelleinheit im Begriff ist, ein Kontextmodell basie­ rend auf Pixelwerten von Pixeln zu bestimmen, welche nicht schon bereits codiert worden sind (und im Falle eines Decodierers, wenn die Kontext-Modelleinheit Pixelinformation anfordert, wel­ che noch nicht decodiert worden ist).
Eine parallele Codierinformation verläuft folgendermaßen. Eine Kontext-Modelleinheit-Steuereinheit 702 liest Pixelwerten aus einer Eingangsdatei 206 und speichert Zeilen des Bildes in Spei­ cherbänken 704(1)-(M). In diesem Beispiel hält jede Speicherbank acht Pixel und die Bänke werden wieder verwendet, sobald ihr In­ halt nicht mehr länger benötigt wird. Natürlich sollten, wenn ein Kontext bei mehr als zwei Reihen von Pixel vorgesehen ist, die Speicherbänke mehr als zwei Reihen versorgen. Der Multiple­ xer 706(i) sieht die Pixel der Kontext-Modelleinheit 708(i) vor. Da die Kontext-Modelleinheit-Steuereinheit 702 das Fortbewegen der Kontext-Modelleinheit 708(i) verfolgt, merkt sie, welche Pi­ xel für eine Kontext verwendet werden und welche Pixel bereits codiert worden sind. Wenn ein Pixel für einen Kontext benötigt wird, aber noch nicht codiert worden ist, läßt die Kontext-Mo­ dell-Steuereinheit 702 die Kontext-Modelleinheit 708(i) pausie­ ren, bis dieses Pixel codiert worden ist.
In dem Beispiel der Fig. 7 startet die Kontext-Modelleinheit 708(0) Bearbeitungspixel 0. .3 einer Zeile, codiert nur Pixel in der Farbebene 0, während die Kontext-Modelleinheit 708(1) nichts tut (da ihre Kontexte davon abhängen, ob Pixel 0. .3 in der Farb­ ebene 0 sind oder nicht). Wenn die Kontext-Modelleinheit 708(0) auf Pixel 4. .7 übergeht, startet die Kontext-Modelleinheit 708(1) bei Pixel 0. .3, die von einer Speicherbank 704(1) vorge­ sehen sind. Hierdurch wird ein Speicherkonflikt vermieden, da sich die Kontext-Modelleinheit 708(0) auf der Speicherbank 704(2) bewegt hat, wo Pixel 4. .7 gespeichert sind.
Wenn beide Kontext-Modelleinheiten 708(0) und 708(1) einen Satz von vier Pixel beendet haben, werden die Auswahl-Eingänge von Multiplexern 706(0) und 706(1) geändert, so daß die Speicherbank 704(3) mit der Kontext-Modelleinheit 704(0) und die Speicherbank 704(2) mit der Kontext-Modelleinheit 704(1) verbunden wird.
Folglich codiert die Kontext-Modelleinheit 708(0) Farbe 0 für Pixel 8. .11, während die Kontext-Modelleinheit 708(1) Farbe 1 für Pixel 4. .7 codiert. Da die Speicherbank 704(1) nunmehr frei ist, verarbeitet die Kontext-Modelleinheit 708(2) die Pixel in dieser Bank für die Farbebene 2. Wenn die Anzahl Farben größer ist als die Anzahl an Kontext-Modelleinheiten, dann verarbeitet die Kontext-Modelleinheit 708(0) Farbebenen 0, N, 2N, usw. wäh­ rend die Kontext-Modelleinheit 708(1) Farbebenen 1, N+1, 2N+1, usw. verarbeitet.
Für jedes Pixel, das nicht schon codiert worden ist, durchläuft eine Kontext-Modelleinheit eine Kontextinformation und ein Er­ gebnis zeigt an, ob das aktuelle Pixel in der laufenden Farbebe­ ne ist oder nicht. Diese Information durchläuft einen Codierer, welcher die Information so, wie oben erläutert, codiert. Sobald eine Zeile verarbeitet ist, wird eine andere Zeile aus der Ein­ gangsdatei in die Speicherbänke 704(1)-(M) gelesen. Wenn jede Zeile verarbeitet ist und die darin befindlichen Pixel codiert sind, werden die Pixel in der aktuellen Farbebene mit Flags ver­ sehen, um anzuzeigen, daß sie zu einer bereits verarbeiteten Farbebene gehören, so daß spätere Kontext-Modelleinheiten für spätere Farbebenen diese Pixel überspringen können. Wenn eine Kontext-Modelleinheit und ein Codierer eine Anzahl Pixel über­ springen können, können sie bereit sein, den nächsten Satz von vier Pixel zu verarbeiten, bevor die Kontext-Modelleinheit und der Codierer vor ihnen die vorderste Bank Pixel verarbeitet ha­ ben. Wenn dies vorkommt, gibt die Kontext-Modell-Steuereinheit 702 ein Pausiersignal an die folgende Kontext-Modelleinheit ab. Der Codierer braucht dann nicht zu pausieren, da das Tempo durch das Ausgangssignal der Kontext-Modelleinheit bestimmt wird.
Bei dem gerade beschriebenen Beispiel werden vier Pixel pro Bank M Speicherbänke und N Codierer verwendet; jedoch kann selbstverständlich auch eine andere Anzahl bei diesen Komponen­ ten verwendet werden. Mit Hilfe dieses Systems können eine Viel­ zahl von Kontext-Modelleinheiten parallel arbeiten, um einen Kontext für Pixel in einem Bild bei einer Farbebene zu schaffen, in dem eine Anzahl Speicherbänke verwendet werden und die Start­ zeitpunkte der Kontext-Modelleinheiten gestaffelt werden, so daß sie ein Verarbeiten einer Speicherbank annähernd zu demselben Zeitpunkt starten, an welchem sich die Kontext-Modelleinheit vor ihr zu der nächsten Speicherbank bewegt. Wenn eine Kontext-Mo­ delleinheit in der Lage ist, Pixel schneller zu bearbeiten, wenn sie beispielsweise viele Pixel antrifft, welche bereits verar­ beitet worden sind und wenn sie als nächstes ein Pixel aus einer Speicherbank unter Verwenden der Kontext-Modelleinheit vor ihr lesen will, wird diese Kontext-Modelleinheit pausieren, bis die Speicherbank frei ist.
In dem gerade beschriebenen Beispiel arbeiten die Codierer (oder genauer gesagt, die Kontext-Modelleinheiten und die Codie­ rer) mit unabhängigen Geschwindigkeiten, da Codierer Pixel über­ springen, welche in vorher codierten Farbebenen liegen. In noch einer weiteren Variation eines Parallel-Codiersystems werden die Codierer in entsprechender Weise miteinander verbunden. Obwohl dies die Parallelität etwas verringern kann, da einige Codierer auf andere warten, ist weniger Hardware erforderlich, da die Co­ dierer nicht "hineinlaufen" ("run into"). Wenn die Codierer mit­ einander verbunden sind, benötigt das Parallel-Codiersystem nicht die Speicherbänke und Multiplexer. Wenn die Multiplexer getränkt werden, so daß N Parallel-Codierer immer verschiedene Pixel in einem Pixelfenster bearbeiten, stellt die Speicher- Bandbreite kein Problem dar.
Fig. 9 ist ein Blockdiagramm eines solchen vereinfachten Parallel-Codierers 900. In dem Parallel-Codierer 900 liest eine Steuereinheit 902 Pixelwerte aus der Ausgangsdatei 206 und durchläuft Pixelwerte bei jedem Taktzyklus in einer ersten Kon­ text-Modelleinheit 904(0), und die Pixelwerte durchlaufen ihrer­ seits andere Kontext-Modelle 904. Logischerweise tasten die Kon­ text-Modelleinheiten das Bild ab, wobei die eine Kontext-Mo­ delleinheit 904(0) in Führung liegt und die anderen Kontext-Mo­ delleinheiten ihr folgen. Ein Router 909 ist vorgesehen, um die Kontext-Modelleinheiten 904 mit Codierern 910(0)-(N-1) zu ver­ binden.
Im einfachsten Fall verbindet der Router 909 einfach jede Kon­ text-Modelleinheit geradewegs mit dem entsprechenden Codierer. Um jedoch Speicher in den Codierern zu sparen, kann die Reihen­ folge der Codierer umgeordnet werden. Bei dem Speichersparen wird jede Farbe nur einem Codierer zugeordnet, da jeder Codierer einen Speicher für Kontextfächer enthalten muß, und ein Satz Kontext-Fächer für jede Pixelfarbe benötigt wird. Wenn folglich nur ein Codierer eine vorgegebene Farbe behandelt, müssen die Kontextfächer für diese Farbe nicht um mehr als einen verdoppelt werden. Wenn jeder Codierer auf bestimmte Farben beschränkt ist, können jedoch die Codierer an Pixel außerhalb der Reihenfolge arbeiten. Dies wird im einzelnen nachstehend in Verbindung mit Fig. 10 bis 12 erläutert. Wenn die Codierer 210 außerhalb der Reihenfolge sind, leitet der Router 909 die Kontextbits und das Ergebnisbit zu dem richtigen Codierer 910 weiter. Obwohl über den Router 901 verhindert werden könnte, daß bei den Kontext-Mo­ delleinheiten 904 deren Reihenfolge umgeordnet würde, um den Co­ dierern zu folgen, würde dadurch -Speicherplatz vergeudet, da jede Kontext-Modelleinheit mehr Kontextpixel verwalten müßte.
In dem dargestellten Beispiel erhält die Kontext-Modelleinheit 904(0) einen 9 Bit Kontext für ein aktuelles Pixel X von den neun, mit C0 bis C8 bezeichneten Pixels. Nur ein Kontextbit wird für jedes Pixel verwendet, nämlich ein Bit, das anzeigt, ob das Pixel in der aktuellen Farbebene liegt oder nicht. Von diesen neun Pixel sind vier Pixel in der Zeile über dem Pixel X, vier sind in der Zeile darunter und eines ist das Pixel links von dem Pixel X. Von dem Pixel über dem Pixel X sind zwei genau links davon und vier sind rechts davon. Die Abtastreihenfolge erfolgt natürlich von der oberen zu der unteren Zeile und von links nach rechts in einer Zeile. Alternativ hierzu können andere Bits ver­ wendet werden, wie in Fig. 3 und 4 dargestellt ist.
Die Kontext-Modelleinheit 904(0) ist im einzelnen genauer dar­ gestellt als die übrigen Kontext-Modelleinheiten 904(1)-(N-1). Jede Kontext-Modelleinheit 904 enthält einen Speicher für Kon­ textpixel, einen Speicher für die aktuelle Farbebene (CC), die von dieser Kontext-Modelleinheit zu verarbeiten ist, einen Ver­ gleicher 908 und zwei Ausgänge, nämlich für einen Kontext und einen für ein Ergebnis. Der Kontext für Pixel X ist nicht der gesamt Pixel-Kontext, sondern gerade ein Bit für jedes Pixel, das anzeigt, ob es in der aktuellen Farbebene liegt oder nicht. Der Vergleicher 908 wird verwendet, um den Kontext aus dem CC- Wert und die Kontext-Pixel C0 bis C8 zu erzeugen. Der Verglei­ cher 908 wird auch verwendet, um das Ergebnisbit zu erzeugen, welches ein Bit ist, das anzeigt, ob das Pixel X die Farbe CC hat oder nicht. Obwohl nur ein Bit für jedes Kontextpixel ver­ wendet wird, wird das ganze Pixel gespeichert, so daß es die Kontext-Modelleinheit 904(0) bis zu der Kontext-Modelleinheit 904(1) durchlaufen kann, welche das Pixel mit einem anderen CC- Wert vergleicht.
Wie in Fig. 9 dargestellt, passiert die Steuereinheit 902 das aktuelle Pixel X und zwei Kontext-Pixel (A, B) zu der Kontext- Modelleinheit 904(0), welche die Pixel als X, C4 bzw. C8 ein­ setzt. Nachdem die Kontext-Modelleinheit 904(0) das Codieren für das Pixel X beendet hat, nimmt es andere drei Pixel an, ver­ schiebt jedes dieser Kontextpixel und dessen aktuelles Pixel um eins nach links, während sie die Pixel C0, C7 und C3 an die Kon­ text-Modelleinheit 904(1) abgibt, welche ihrerseits diese Pixel in ihre Positionen X, C8 bzw. C4 verschiebt. Eine optionale Ver­ zögerung 609 wird in Fällen angewendet, in welchen ein Codierer eine gewisse Latenz, üblicherweise infolge von Pipelining auf­ weist. Wenn ein Decodierer Latenz hat, dann muß der Codierer eine entsprechende Latenz aufweisen, um auf diese Weise die Kau­ salität nicht zu verletzen. In diesen Fällen operieren die Kon­ text-Modelleinheiten 904(0) bis (N-1) nicht an aufeinanderfol­ genden Pixeln, sondern an Pixeln, die einen gewissen Abstand voneinander haben. Die optionale Verzögerung 906 wird verwendet, um die Zwischenpixel zu speichern, bis sie von der nächsten Kon­ text-Modelleinheit benötigt werden. Wenn N, die Anzahl an Kon­ text-Modelleinheiten 904 kleiner ist als die Anzahl an Farben, kann der Parallel-Codierer 900 eine Einrichtung enthalten, um die Pixel, die aus der Kontext-Modelleinheit 904(N-1) herausge­ schoben worden sind, in die Kontext-Modelleinheiten 904(0) zu­ rückzuführen.
Ein Parallel-Codierer 900 könnte durch einen entsprechend pro­ grammierten digitalen Signalprozessor implementiert werden. In einer derartigen Ausführungsform ist die Arbeitsweise des Parallel-Codierers 900 ähnlich; es können jedoch verschiedene Techniken angewendet werden, um die Ausführung des Parallel-Co­ dierers zu optimieren. Bei Hardware-Ausführungsformen des Parallel-Codierers 900 gibt es einen Geschwindigkeitsvorteil bei Pipelining- und Holdaten von den langsamsten Elementen aus bei größeren Bandbreiten. Bei den Software-Ausführungsformen wird der Geschwindigkeitsvorteil dadurch erhalten, daß Operationen identifiziert werden, die nicht getan werden müssen und daß die­ se Operationen nicht durchgeführt werden. Beispielsweise kann in der Hardware-Ausführungsform jeder Codierer gleichzeitig vier Pixel bedienen, um die Zeit zu minimieren, die ein Codierer ar­ beiten muß, um neue Pixelwerte wieder aufzufinden, wobei die Steuereinheit 902 verfolgt, welche Pixelwerte von welchem Codie­ rer benötigt werden.
Fig. 10 bis 12 sind Beispiele von Schemata für ein paralleles Verarbeiten von Pixel in einem Bild. Jede Figur zeigt das Wei­ terbewegen von vier Codierern über den Satz Pixel oder ein Bild, das einen unterschiedlichen Satz Regeln anwendet, wie ein Codie­ rer (genauer gesagt, eine Kontext-Modelleinheit/Codierer) über die Pixel fortschreitet. Jede dieser drei Figuren ist ein Git­ ter, das zeigt, welche Codierer an welchen Pixeln in welchen Taktzyklen arbeiten. Die oberste Zeile des Gitters zeigt die Pi­ xel-Farbwerte für zehn Pixel, nämlich einen pro Spalte. Die Pi­ xel-Farbwerte sind ausgewählte ganze Zahlen von 0 bis 15. Eine Gruppe von Zahlen der Form A:B an dem Schnittpunkt einer Pixel­ spalte und einer Taktperiodenzeile zeigt an, daß während dieses Taktzyklus Codierer A das Pixel überprüft, um zu sehen, ob es in der Farbebene B liegt. Die Schnittstellen, wo B zu dem Pixel- Wert paßt, ist mit einem "√" versehen, welcher den Zeitpunkt an­ zeigt, wenn der Wert des Pixels bestimmt worden ist und keine weiteren Operationen an diesem Pixel erforderlich sind. Ein Taktzyklus wird nicht benötigt, um die Farbe 15 zu codieren/ zu decodieren, da ein Pixel, das für die Farbe 14 zu prüfen ist, entweder Farbe 14 oder Farbe 15 ist, da alle übrigen Farben bereits geprüft worden sind und daher die Farbe nach dem Prüfen für Farbe 14 bestimmt werden muß.
Eine leere Schnittstelle zeigt an, daß das Pixel nicht von ir­ gendeinem Codierer geprüft wird, und eine Schnittstelle, an wel­ cher "leer" oder "warten" zu finden ist, zeigt an, daß ein Co­ dierer Pixel zugeordnet worden ist, aber er nichts mit ihm tut. Somit wird eine höhere Parallel-Codier-Durchführung erreicht, in dem die Anzahl an Taktzyklen erniedrigt wird, indem ein Codierer leerläuft oder wartet. In jeder dieser Figuren sind Codierer Farben zugeordnet, die in Tabelle 1 angezeigt sind. In Tabelle 1 ist die Farbe 15 keinem Codierer zugeordnet, da es die letzte Farbe ist, und da eine solche bei dem Farbebenen-Codieren nicht codiert wird.
Codierer
Farben
1
0, 4, 8, 12
2 1, 5, 9, 13
3 2, 6, 10, 14
4 3, 7, 11
Fig. 10 ergibt sich aus den Vorschriften, daß die vier Codierer an aufeinanderfolgenden Pixeln in einem Pixel-"Fenster" arbei­ ten, und die Codierer das Fenster nicht bewegen können, um ein neues Pixel abzudecken, bis das hintere Pixel in dem Fenster co­ diert/decodiert worden ist. Ein neues Pixel kann nur bei jedem Taktzyklus angenommen werden, da jedes neue Pixel mit einem Co­ dieren für die Farbebene 0 beginnen muß, und der Codierer 0 der einzige Codierer für die Farbe 0 ist. Wie Fig. 10 zeigt, werden mit Hilfe dieser Vorschriften 10 Pixel in 24 Taktzyklen codiert, und das Überprüfen eines Pixels kann unterbrochen werden, da der Codierer 0 sich unmittelbar mit dem neuen Pixel bewegt, das in dem Fenster hinzugefügt worden ist. Jedes dieser Schemata genügt der Anforderung, daß für den Kontext eines Pixels in einer Farb­ ebene, die in einer Decodierzeit verfügbar ist, in welcher das vorherige Pixel den Kontext beeinflußt, jedes Pixel vor dem ak­ tuellen Pixel zumindest bis zu der aktuellen Farbebene decodiert sein muß. Dies kann bestätigt werden, indem bemerkt wird, daß die erste Aktion für jedes Pixel eine Operation von dem Codierer 0 ist, und daß jedes Pixel links von einem vorgegebenen Pixel bereits bis zu der Farbebene decodiert worden ist, die augen­ blicklich bei dem vorgegebenen Pixel angewendet wird.
Fig. 11 ergibt sich aus den Vorschriften, daß das Fenster bewegt wird, um ein neues Pixel zu bedecken, wenn das hintere Pixel co­ diert/decodiert wird, jedoch die Codierer nicht umgeordnet wer­ den, so daß der Codierer 0 an dem vorderen Pixel arbeiten kann. Statt dessen wird mit dem Codieren des nächsten Pixels "gewar­ tet", bis Codierer 0 verfügbar ist. Sobald das Prüfen an einem Pixel beginnt, wird es auf diese Weise betrieben, bis es codiert ist. Mit Hilfe dieser Vorschriften werden die 10 Pixel in nur 21 Taktzyklen codiert.
Fig. 12 ergibt sich aus den Vorschriften, daß die Codierer nicht an aufeinanderfolgenden Pixeln arbeiten müssen, sondern daß nur der Codierer 0 an einem neuen Pixel starten kann. Mit Hilfe die­ ser Vorschriften werden dieselben 10 Pixel in 20 Taktzyklen co­ diert (und andere Pixel werden teilweise codiert werden). Da das Fenster breiter sein kann, erfordern diese Vorschriften mehr Speicherplatz, um fortlaufend Pixel zu speichern. Die Größe dem Fensters ist durch die Tatsache begrenzt, daß der Codierer 0 auch an den hinteren Pixels für Farben außer der Farbe 0 arbei­ tet.
In der vorstehenden Beschreibung wurde das zu codierende Bild in einzelne Bildebenen aufgeteilt. Obwohl die Vorteile des Auf­ teilens in Farbebenen aus der vorstehenden Beschreibung offen­ sichtlich sind, kann es Situationen geben, bei welchen die zu­ sätzliche Komplexibilität, viele Durchläufe über dem Bild durch­ zuführen, vermieden werden muß; in diesen Fällen kann ein Hybrid zwischen der Aufteilung in Bitebenen und der Aufteilung in Farb­ ebenen verwendet werden.
In einem solchen Hybrid wird das Bild nicht in eine Farbebene pro Farbe aufgeteilt, sondern es wird in eine Farbgruppen-Ebene für jede Gruppe von zwei Farben aufgeteilt, und die Farbgruppen- Ebene wird dann als eine Bitebene codiert. In einem anderen Hy­ brid enthält jede Farbgruppe vier Farben und die Farbgruppen- Ebene wird in der zwei Bitebenen aufgeteilt. In den in Fig. 1 dargestellten Beispiel kann jedes Pixel eine von sechzehn Farben haben. Bei einer geraden Farbaufteilung wird das Bild in sech­ zehn Farbebenen aufgeteilt, und ein Codierer macht bis zu fünf­ zehn Durchläufe über dem Bild (wobei die letzte Farbe als letzte codiert werden muß). Mit einer hybriden Farbaufteilung kann das Bild von Fig. 1 in acht Gruppen von zwei Farben oder in vier Gruppen von jeweils vier Farben aufgeteilt werden. Bei acht Farbgruppen macht der Codierer meistens sieben Durchläufe über dem Bild, um jede Pixel-Farbgruppe zu bestimmen, und dann noch einen Durchlauf mehr, um die Farbe jedes Pixel in der Pixel- Farbgruppe zu bestimmen, und macht somit insgesamt acht Durch­ läufe. Bei vier Farben pro Gruppe macht der Codierer bis zu drei Durchläufen, um die Farbgruppe zu bestimmen, macht dann zwei Durchläufe (bei der Bitebene), um die Farbe in der Gruppe zu be­ stimmen, macht also insgesamt noch vier Durchläufe. In einem an­ deren Extremfall, bei welchem keine Farbteilung vorgenommen wird, erfordert das Bitebenen-Codieren vier Durchläufe über dem Bild. Obwohl der Unterschied zwischen dem Bitebenen-Codieren und der Farbebenen-Aufteilung nur fünfzehn Durchläufe gegenüber vier Durchläufen ist, wird bei mehr Farben der Unterschied größer. Beispielsweise erfordert bei einer 8 Bit Farbe (256 Worte) eine volle Farbebenen-Aufteilung bis zu 255 Durchläufen; zwei Farben pro Gruppenaufteilung fordern nicht mehr als 128 Durchläufe (127 + 1); vier Farben pro Gruppenaufteilung erfor­ dern nicht mehr als 65 Durchläufe (63 + 2), während eine Bitebe­ nen-Aufteilung 8 Durchläufe erfordert. Folglich ist bei Bildern mit einer größeren Anzahl Farben ein Parallel-Codieren öfters erforderlich.
Bei noch einer weiteren Abhandlung werden Pixel-Farbwerte durch Vektoren dargestellt, und jede Vektorkomponente wird unabhängig bezüglich der Farbe aufgeteilt. Beispielsweise können bei 8 Bit Pixel-Farbwerten die Pixelwerte auf zwei 4 Bit-Werte verteilt werden, um einen zweidimensionalen Vektor für jedes Pixel zu bilden. Jeder dieser 4 Bit Unterfarben-Komponenten wird in eine von sechzehn Farbebenen aufgeteilt, die der entsprechenden Di­ mension des Vektors zugeordnet sind. Diese Variation ist für Parallel-Decodieren anwendbar. Dies erfordert ein Maximum von 30 Durchgängen oder 15 Durchgängen pro Komponente.
Bezugszeichenliste
Zu Fig. 1
7, 12, 3 Farbebene
Zu Fig. 2
206 Bilddatendatei
212 Ebenen-Separator
214 Kontext-Modelleinheit
215 Kontext
Ergebnis
216 Entropie-Codierer
217 Komprimierter Bitstrom
210 Dekomprimierter Bilddatendatei
222 Ebenen-Akkumulator
220 Kontext-Modelleinheit
218 Entropie-Decodierer
208 Komprimierte Bilddatei
Zu Fig. 5
S1 C=0 Initiieren; Historie initiieren;
S2 Erster Pixel von Ebene 10 erhalten
S3 Ist Pixel bereits codiert worden?
S4 Aktuelles Pixel codiert?
S5 Historie aktualisiert?
S6 Mehr Pixel in Ebene C?
S7 Nächstes Pixel erhalten
S8 Schwellenwert erreicht?
S9 Restliche Pixel durch Bitebene codieren
S10 C Inkrementieren
512 Bitebene (N) Codieren, wenn Ebene C mehr als eine Farbe enthält
Zu Fig. 6
604(1), (2), (3), (N) Kontext-Modelliereinheit 0, 1, 2 . . . N-1
605(1), (2), (3), . . . (N) Codierer 0, 1, 2 . . . N-1
606 Bitstrom-Kombiniereinheit
208 Komprimierte Bilddatei
610 Feste Kontextzeile
608 Steuerlogik
612 Kontextfach ID
Ergebnis
Zu Fig. 7
206 Eingegebenes Bild
702 Kontext-Modell-Steuereinheit
Auswählen Pause
708(1) . . . (N) Kontext-Modelleinheit 1 . . . N
Zu Fig. 8
701 Zwei Zeilen-Pixelpuffer
702 Kontext-Modell-Steuereinheit auswählen (i)
708(i) Kontext-Modelleinheit (i)
709 Kontextfach ID
Ergebnis
710(i) Codierer (i)
Zu Fig. 9
206 Eingabedatei
902 Steuereinheit
904(0) Kontext-Modelleinheit 0
906 Optionale Verzögerung
904(1), (2), . . . (N-1) Kontext-Modelleinheit 1, 2, . . . N-1
910(0), (1), (2) . . . (N-1) Codierer 0, 1, 2, . . . N-1.

Claims (33)

1. Verfahren zum Komprimieren einer Anordnung von Pixelwerten, bei welchem die Anordnung kollektiv ein Bild erzeugt, und jedes Pixel durch einen Farbwert und eine Stelle in dem Bild gekenn­ zeichnet ist, wobei das Verfahren die Schritte aufweist:
Pixel des Bildes in Farbebenen aufteilen, wobei eine Farbebene eine zweidimensionale Anordnung von binären Werten ist, die an­ zeigen, ob ein Farbwert für ein Pixel ein Farbwert ist, der einem Farbwert für diese Ebene entspricht;
eine erste Farbebene codieren;
Pixel einer zweiten Farbebene codieren, welche nicht in der er­ sten Farbebene gefunden werden, und
für eine spätere Farbebene Pixel wiederholt codieren, welche nicht eine Farbe haben, die einer vorher codierten Farbebene entspricht.
2. Verfahren nach Anspruch 1, bei welchem die Farbebenen nach der Farbhäufigkeit geordnet werden, wobei eine Farbebene mit einer Farbe, welche die häufigste Farbe in dem Bild ist, eine erste Farbe ist, und eine Farbebene, die der ersten Farbe ent­ spricht, die erste Farbebene ist, wodurch die Farbebenen in der Häufigkeitsreihenfolge codiert werden.
3. Verfahren nach Anspruch 1, bei welchem eine Farbebene, wel­ che Farben entspricht, die nicht in dem Bild vorhanden sind, und eine Farbebene, die einer Farbe entspricht, welche in dem Bild vorhanden ist, nicht codiert werden.
4. Verfahren nach Anspruch 1, bei welchem die Codierschritte Entropie-Codier-Schritte sind.
5. Verfahren nach Anspruch 4, bei welchem die Entropie-Codier- Schritte Codierschritte sind, bei welchen ein hochschneller bi­ närer Entropie-Codierer verwendet wird.
6. Verfahren nach Anspruch 4, bei welchem die Entropie-Codier­ schritte die Codier-Schritte mit Hilfe eines Q-Codierers sind.
7. Verfahren nach Anspruch 4, bei welchem die Entropie-Codier­ schritte Codier-Schritte mit Hilfe eines B-Codierers sind.
8. Verfahren nach Anspruch 4, bei welchem das Entropie-Codieren durchgeführt wird, wobei ein Kontext zumindest einen Wert eines Pixels nahe dem zu codierenden Pixel enthält.
9. Verfahren nach Anspruch 4, bei welchem ein Entropie-Codieren durchgeführt wird, wobei ein Kontext zumindest ein Wert einer Position des zu codierenden Pixels enthält.
10. Verfahren nach Anspruch 4, bei welchem ein Entropie-Codie­ ren zumindest einen Schritt aufweist, einen Kontext für ein ak­ tuelles Pixel zu bestimmen, und der Kontext ein Hinweis darauf ist, welche Nachbarpixel in der zu codierenden Farbebene sind.
11. Verfahren zum Komprimieren einer Anordnung von Pixelwerten, bei welchem die Anordnung kollektiv ein Bild erzeugt und jedes Pixel durch einen Farbwert und eine Stelle in dem Bild gekenn­ zeichnet ist, wobei das Verfahren die Schritte aufweist:
Ränder von Unterbildern identifizieren;
einen Kontext für jedes Pixel erzeugen, welcher Kontext auf einer Beziehung zwischen den Rändern und jeder Pixel-Stelle ba­ siert, und
einen Entropie-Codierer verwenden, um jedes Pixel mit dem Kon­ text für dieses Pixel zu codieren.
12. Verfahren nach Anspruch 11, bei welchem der Kontext ein bi­ närer Wert ist, welcher anzeigt, ob ein Pixel in einer ersten Zeile liegt oder nicht.
13. Verfahren nach Anspruch 12, bei welchem das Bild eine An­ zahl von Schemen und die Ränder aufweist, die jedes der Anzahl Schemen begrenzen.
14. Parallel-Kontext-Modelleinheit, welche Kontextinformation für Pixel in einem Bild entweder in einem Entropie-Codierer oder in einem Entropie-Decodierer schafft, aufweisend:
einen Bildpuffer, welcher das zu verarbeitende Bild hält, wobei das Bild eine Pixelwert-Anordnung in einem Speicher ist, wobei der Bildpuffer in N Unterbereiche unterteilt ist, und N größer als eins ist, und
N Kontext-Modelleinheiten, die jeweils einem der N-Unterberei­ che zugeordnet sind und die jeweils eine Einrichtung aufweisen, um Ersatz-Kontextpixel darzustellen, wobei die Ersatz-Kontext- Pixel Kontext-Pixel ersetzen, welche außerhalb eines Unterbe­ reichs liegen, aber Kontextpixel für Pixel in dem vorgegebenen Unterbereich sind.
15. Parallel-Kontext-Modelleinheit nach Anspruch 14, bei wel­ cher jede Farbebene von einer einzigen der Anzahl Kontext-Mo­ delleinheiten verarbeitet wird.
16. Parallel-Kontext-Modelleinheit, welche Kontextinformation für Pixel in einem Bild entweder in einem Entropie-Codierer oder in einem Entropie-Decodierer schafft, aufweisend:
eine Anzahl Speicherbänke, wobei jede Speicherbank eine Spei­ cherung für eine Anzahl Pixel und Kontext-Pixel für die Anzahl Pixel aufweist;
eine Anzahl Kontext-Modelleinheiten, von denen jede mit einer der Anzahl Speicherbänke verbindbar ist, und jede Speicherbank mit einer der Anzahl Kontext-Modelleinheiten verbindbar ist, wobei jede der Anzahl Kontext-Modelleinheiten einen Pausierein­ gang für ein Pausieren der Kontext-Modelleinheit aufweist, und eine Kontext-Modelleinheit-Steuereinheit, welche aufweist:
einen Bildeingang für Pixel eines Bildes;
einen Speicherbus, um die Pixel in Speicherbänke der Anzahl Speicherbänke zu laden;
eine Anzahl Leitsignalleitungen zum Steuern einer spezifischen Verbindung von Speicherbänken mit Kontext-Modelleinheiten, und Ausgänge, damit Kontext-Modelleinheiten pausieren.
17. Parallel-Kontext-Modelleinheit nach Anspruch 16, bei wel­ cher die Anzahl von Kontext-Modelleinheiten bis auf eine der Anzahl Speicherbänke durch eine Anzahl Multiplexer verbunden sind, welche von der Kontext-Modelleinheit-Steuereinheit ge­ steuert worden sind.
18. Parallel-Entropie-Codierer, aufweisend
einen Bildspeicher zum Speichern von Pixelwerten, die kollektiv ein zu komprimierendes Bild darstellen;
eine Codierer-Steuereinheit, die mit dem Bildspeicher verbunden ist, um aus ihm Pixelwerte zu lesen;
eine Anzahl Kontext-Modelleinheiten, die jeweils mit der Codie­ rer-Steuereinheit verbunden sind, um Pixelwerte für Kontext-Pi­ xel und ein aktuelles Pixel zu erhalten, wobei jede Kontext-Mo­ delleinheit ein Ausgangssignal eines Ergebnisses und einen Kon­ text für das Ergebnis schafft, wobei das Ergebnis das Resultat eines Tests des aktuellen Pixels gegenüber einem Farbebenen- Wert ist, welcher der Kontext-Modelleinheit, die das Ergebnis abgibt, zugeordnet ist, und der Kontext die Kontextpixel mit dem Farbebenen-Wert vergleicht, wobei die Codierer-Steuereinheit das Fortbewegen jedes der An­ zahl Kontext-Modelleinheiten über dem Bild steuert, um sicher­ zustellen, daß keine Kontext-Modelleinheit für einen Kontext ein Pixel benutzt, was nicht bereits zumindest teilweise co­ diert worden ist.
19. Verfahren zum Dekomprimieren einer Anzahl Pixelwerte aus einem komprimierten Datensatz, welches Verfahren die Schritte aufweist:
aus einer Apriori-Information und vorher dekomprimierten Pixel­ werten eine aktuelle Farbebene für ein aktuelles, zu decodie­ rendes Pixel zu identifizieren;
aus vorher decodierten Pixel in vorher decodierten Farbebenen eine Position in einer Anordnung des aktuellen, zu decodieren­ den Pixels zu bestimmen, wobei angenommen wird, daß die Posi­ tion des aktuellen Pixels eine Position, nicht eine Position der vorher decodierten Pixel in den vorher decodierten Farbebe­ nen ist, und
nachfolgende Pixel in nachfolgenden Farbebenen wiederholt deco­ dieren.
20. Verfahren nach Anspruch 19, bei welchem der Schritt, Deco­ dieren eines Pixels, gemäß einem adaptiven Entropie-Code vorge­ nommen wird, wobei der adaptive Entropie-Code durch Bezugnahme auf einen Kontext für die festgelegte Stelle für das aktuelle, zu decodierende Pixel bestimmt wird.
21. Verfahren nach Anspruch 19, bei welchem eine endgültige Farbebene nicht decodiert wird, und Pixelstellen, welche nicht einen Pixelwert enthalten, einem Pixelwert für die letzte Farb­ ebene zugeordnet werden.
22. Parallel-Entropie-Decodierer, mit einem Bildspeicher zum Speichern decodierter Pixelwerte an Pi­ xelstellen, wobei die Pixelwerte an den Pixelstellen kollektiv ein Bild darstellen;
einer Decodierer-Steuereinheit, die mit dem Bildspeicher ver­ bunden ist, um aus diesem Pixelwerte zu lesen und um in diesen Pixelwerte zu schreiben;
einer Anzahl Kontext-Modelleinheiten, die jeweils mit der Co­ dierer-Steuereinheit verbunden sind, um Kontext-Pixelwerte zu erhalten, wobei jede Kontext-Modelleinheit einen Kontext-Aus­ ganswert schafft, welcher Kontext-Ausgangswert den Kontext ei­ nes aktuellen, zu decodierenden Pixel anzeigt, und der Kontext ein Satz von Vergleichswerten der Kontextpixel mit einem ak­ tuellen Farbebenenwert ist;
eine Anzahl Codierer, die jeweils mit einer Kontext-Modellein­ heit der Anzahl Kontext-Modelleinheiten verbunden sind, wobei jeder Codierer einen Kontext für eine aktuelle Farbebene ver­ wendet, um ein Bit zu decodieren, das anzeigt, ob das aktuelle, zu decodierende Bit in der aktuellen Farbebene liegt oder nicht und
einer Einrichtung, damit die Bits mit der Codierer-Steuerein­ heit kommunizieren.
23. Verfahren zum Komprimieren einer Anordnung von Elementwer­ ten, wobei die Anordnung von Elementwerten kollektiv einen Da­ tensatz bildet, und jedes Element durch einen Elementwert und eine Stelle in der Anordnung gekennzeichnet ist, wobei das Ver­ fahren die Schritte aufweist:
die Elemente in dünne Anordnungen aufteilen, wobei eine dünne Anordnung die Elemente enthält, die Elementwerte haben, die gleich einem Anordnungswert sind, welcher der dünnen Anordnung zugeordnet ist, wobei eine dünne Anordnung eine Anordnung von Binärwerten mit einer Eins-zu-Eins-Entsprechung zu der Anord­ nung von Elementen ist;
eine erste dünne Anordnung codieren;
einen Teil einer zweiten Farbebene codieren; wobei der codierte Teil die Bits an Elementenstellen von noch nicht codierten Elementen sind, und
für nachfolgende dünne Anordnungen Elemente an Elementenstellen wiederholt codieren, welche nicht Elementenstellen für Elemente in vorher codierten dünnen Anordnungen sind.
24. Verfahren zum Dekomprimieren einer Elementanordnung aus einer komprimierten Datendatei, wobei die Elementanordnung kol­ lektiv einen Datensatz mit Elementen bildet, die jeweils durch einen Elementwert und eine Stelle in der Elementanordnung ge­ kennzeichnet sind, wobei das Verfahren die Schritte aufweist:
einen ersten Bereich der komprimierten Datendatei zu identifi­ zieren, wobei der erste Bereich einen verdichteten Informa­ tionsinhalt einer ersten dünnen Anordnung darstellt, und die erste dünne Anordnung eine Anordnung von binären Werten ist, die anzeigt, welche Elemente der Elementanordnung Elementwerte haben, die gleich einem ersten dünnen Anordnungs-Elementwert sind;
die erste dünne Anordnung von dem ersten Bereich aus decodie­ ren;
einen zweiten Bereich der komprimierten Datendatei identifizie­ ren, wobei der zweite Bereich einen komprimierten Informations­ inhalt einer zweiten dünnen Anordnung von Binärwerten dar­ stellt, die jeweils anzeigen, ob ein Element der Elementanord­ nung einen Elementwert hat, welcher gleich einem zweiten dünnen Anordnungs-Elementwert ist, oder einen Elementwert hat, welcher sich von dem ersten dünnen Anordnungs-Elementwert mit dem zwei­ ten dünnen Anordnungs-Elementwert unterscheidet, und wobei der zweite Bereich weniger als die gesamte Elementwert-Information für Elemente enthält, die in dem ersten dünnen Bereich gefunden worden sind;
die zweite dünne Anordnung aus dem zweiten Bereich dekodieren, und
die Schritte, Identifizieren eines Bereichs, Decodieren eines dünnen Bereichs, wiederholen, bis eine Schwellenwertzahl von dünnen Bereichen decodiert wird, wobei jede nachfolgende dünne Anordnung jedes noch nicht decodierte Element identifiziert, ob das Element einen Elementwert hat, welcher gleich dem dünnen Anordnungs-Elementwert ist.
25. Verfahren nach Anspruch 24, bei welchem die Schritte, Deco­ dieren, Anwenden von Bitebenen-Decodieren, die Elementwerte für dünne Anordnungen aufweisen, welche noch nicht decodiert worden sind, wenn die Schwellenwertzahl von dünnen Anordnungen deco­ diert wird.
26. Verfahren nach Anspruch 24, bei welchen die Schwellenwert­ anzahl von dünnen Anordnungen eins niedriger ist als die Anzahl verschiedener Elementwerte, wobei das Verfahren ferner den Schritt aufweist, einen fehlerhaften Elementwert Element zuzu­ ordnen, die in der Schwellenwertanzahl von Decodierungen von dünnen Anordnungen nicht decodiert worden sind.
27. Verfahren nach Anspruch 24, bei welchem jedes Element durch den Elementwert gekennzeichnet ist, der bei den Decodierschrit­ ten decodiert worden ist, und das Verfahren ferner die Schritte aufweist, Unterwerte für jedes Element mit Hilfe eines Bitebe­ nen-Decodierens zu decodieren, nachdem die Schwellenwertzahl von dünnen Anordnungen decodiert ist.
28. Bildkompressor zum Komprimieren eines Bildes, um einen kom­ primierten Datensatz zu erzeugen, mit
einem Bildspeicher zum Speichern von Bildwerten, die kollektiv das zu komprimierende Bild darstellen, wobei jedes Pixel des Bildes durch einen Pixelwert und eine Pixelstelle in dem Bild gekennzeichnet ist;
einem Pixelwert-Leser, der mit dem Bildspeicher verbunden ist und welcher Pixelwerte aus dem Bildspeicher liest und binäre Darstellungen von Pixels in der Farbebenen-Reihenfolge abgibt, wobei eine binäre Darstellung eines Pixels in einer aktuellen Farbebene anzeigt, ob sich das Pixel in der aktuellen Farbebene befindet oder nicht, wobei ein Pixel in einer Farbebene ist, wenn und nur wenn sein Pixelwert in einem Satz von Pixelwerten ist, die der Farbebene zugeordnet sind;
einem Farbebenen-Codierer, der mit dem Pixelwert-Leser verbun­ den ist, um noch nicht codierte Pixel in der aktuellen Farbebe­ ne zu codieren, wobei der Farbebenen-Codierer aufweist:
eine Kontext-Modelleinheit, welche aus vorher codierten Pixel, die zumindest aus der aktuellen Farbebene oder einer der vorher codierten Farbebenen abgezogen sind, einen Kontext für ein ak­ tuelles Pixel in einer aktuellen Farbebene identifiziert, wobei das Kontextmodell einen ersten Ausgangswert, welcher ein Ergeb­ nis eines Vergleichs des Pixelwerts des aktuellen Pixel und der Farbe der aktuellen Farbebene anzeigt, und einen zweiten Ausgangswert aufweist, welcher den Kontext für das aktuelle Pi­ xel anzeigt, und
einen binären Entropie-Codierer, der mit der Kontext-Modellein­ heit verbunden ist und der ein aktuelles Pixel in einem Bit­ strom codiert, welcher von dem binären Entropie-Codierer auf der Basis des Ergebnisses und des Kontexts abgegeben worden ist, der von der Kontext-Modelleinheit abgegeben worden ist, und
eine Bitstrom-Sammeleinrichtung, die mit dem binären Entropie- Codierer verbunden ist, um den Ausgangs des binären Entropie- Codierers in dem komprimierten Datensatz zu sammeln.
29. Bildkompressor nach Anspruch 28, bei welchem jeder Satz Pi­ xelwerte nur einen Pixelwert enthält, wodurch alles, was einen gemeinsamen Pixelwert hat, auf die jeweilige Farbebene hinaus­ läuft, die Pixel enthält.
30. Bildkompressor nach Anspruch 28, bei welchem zumindest ein Satz Pixelwerte eine Anzahl Pixelwerte aufweist, der Bildkom­ pressor ferner den Bitebenen-Codierer zum Codieren von Informa­ tion aufweist, die anzeigt, welche der Anzahl Pixelwerte der Pixelwert für Pixel in Farbebenen ist, die Sätze von mehreren Pixelwerten haben.
31. Bildkompressor nach Anspruch 28, bei welchem die Kontext- Modelleinheit einen Kontext schafft, der darauf basiert, ob be­ nachbarte Pixel um das aktuelle Pixel herum in der aktuellen Farbebene sind oder nicht.
32. Bilddekompressor, um ein Bild aus einem komprimierten Da­ tensatz zu dekomprimieren, um ein nicht-komprimiertes Bild zu erzeugen, wobei jedes Pixel des nicht-komprimierten Bildes durch einen Pixelwert und eine Pixelstelle in dem nicht-ver­ dichteten Bild charakterisiert ist, wobei der Bild-Dekompressor aufweist:
einen Speicher zum Speichern eines komprimierten Datensatzes; einen Farbebenen-Decodierer, um Pixel aus dem verdichteten Da­ tensatz in der Farbebenen-Reihenfolge zu decodieren, wobei der Farbebenen-Decodierer aufweist:
eine Kontext-Modelleinheit, welche aus vorher decodierten Pi­ xel, die zumindest aus einer aktuellen Farbebene oder zumindest aus einer der vorher decodierten Farbebenen abgezogen worden sind, einen Kontext für ein aktuelles Pixel in einer aktuellen, zu decodierenden Farbebene identifiziert, wobei der Kontext die Farbebenen für Pixel anzeigt, die dem aktuellen Pixel benach­ bart sind;
einen binären Entropie-Decodierer, der mit der Kontext-Mo­ delleinheit und dem komprimierten Datensatz verbunden ist, wel­ cher das aktuelle Pixel basierend auf dem Kontext für das ak­ tuelle Pixel decodiert, das durch die Kontext-Modelleinheit identifiziert worden ist, und
einen Farbebenen-Akkumulator, welcher Pixel, die durch den bi­ nären Entropie-Decodierer bezüglich der Farbebene decodiert worden sind, in einem Bildspeicher speichert, wodurch das nicht-komprimierte Bild in dem Bildspeicher erzeugt wird.
33. Bild-Dekompressor nach Anspruch 32, bei welchem der Kontext für das aktuelle Pixel ein Kontext ist, der anzeigt, ob die Pi­ xel, die dem aktuellen Pixel benachbart sind, in der aktuellen Farbebene sind oder nicht.
DE19606178A 1995-02-21 1996-02-20 Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz Expired - Fee Related DE19606178C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/391,679 US5659631A (en) 1995-02-21 1995-02-21 Data compression for indexed color image data

Publications (2)

Publication Number Publication Date
DE19606178A1 true DE19606178A1 (de) 1996-09-26
DE19606178C2 DE19606178C2 (de) 2002-06-13

Family

ID=23547535

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19606178A Expired - Fee Related DE19606178C2 (de) 1995-02-21 1996-02-20 Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz

Country Status (5)

Country Link
US (2) US5659631A (de)
JP (1) JP2949066B2 (de)
KR (1) KR100214055B1 (de)
DE (1) DE19606178C2 (de)
TW (2) TW303567B (de)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19706268A1 (de) * 1997-02-18 1998-08-20 Christian Wenz Dateiformatspezifisches Packverfahren
EP0875858A2 (de) * 1997-04-30 1998-11-04 Fujitsu Microelectronics, Inc. Verfahren zur Kompression/Dekompression von Bilddaten
WO1999001981A1 (en) * 1997-07-04 1999-01-14 The Secretary Of State For Defence Data encoding system
DE19944213C1 (de) * 1999-09-15 2001-05-23 Inst Telematik E V Verfahren zum Komprimieren eines digitalen Bildes mit mehreren Bit-Ebenen
DE10041037A1 (de) * 2000-08-22 2002-03-14 Ubicom Ges Fuer Telekommunikat Bildkodierungsverfahren und Bildkodierer
DE10120644B4 (de) * 2000-04-28 2009-10-01 Denso Corporation, Kariya-City Bilddatenverdichtungsverfahren und -vorrichtung, welche Bilddaten separat durch Modifizieren der Farbe verdichten

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3364074B2 (ja) * 1995-06-05 2003-01-08 株式会社リコー ビットプレーン符号化装置
JP3060902B2 (ja) * 1995-06-30 2000-07-10 オムロン株式会社 画像処理装置及び画像処理方法
US6888962B1 (en) 1995-06-30 2005-05-03 Omron Corporation Image processing device for detecting one-color marks of a number of colors and image processing method thereof
JPH0981445A (ja) * 1995-07-11 1997-03-28 Matsushita Electric Ind Co Ltd 情報管理装置
US6072909A (en) * 1995-12-13 2000-06-06 Fuji Xerox Co., Ltd. Image coding devise and image decoding devise using with image disassembly
US6037982A (en) * 1996-03-28 2000-03-14 Intel Corporation Multi-pass video compression
US6144771A (en) * 1996-06-28 2000-11-07 Competitive Technologies Of Pa, Inc. Method and apparatus for encoding and decoding images
ATE236490T1 (de) * 1996-07-31 2003-04-15 Matsushita Electric Ind Co Ltd Bilddekoder und bilddekodierungsverfahren
US6379251B1 (en) 1997-02-24 2002-04-30 Realtime Media System and method for increasing click through rates of internet banner advertisements
US6182122B1 (en) * 1997-03-26 2001-01-30 International Business Machines Corporation Precaching data at an intermediate server based on historical data requests by users of the intermediate server
US6259810B1 (en) * 1997-04-15 2001-07-10 Microsoft Corporation Method and system of decoding compressed image data
US5883633A (en) * 1997-04-15 1999-03-16 Microsoft Corporation Method and system of variable run length image encoding using sub-palette
KR100535632B1 (ko) * 1997-10-17 2006-04-12 주식회사 팬택앤큐리텔 적응적으로 보더링하는 모양정보 부호화/복호화 장치 및 방법
US6038346A (en) * 1998-01-29 2000-03-14 Seiko Espoo Corporation Runs of adaptive pixel patterns (RAPP) for lossless image compression
US6700588B1 (en) 1998-11-09 2004-03-02 Broadcom Corporation Apparatus and method for blending graphics and video surfaces
US6647649B2 (en) 1998-12-04 2003-11-18 Tracking Technologies, Inc. Microparticle taggant systems
US8416847B2 (en) * 1998-12-21 2013-04-09 Zin Stai Pte. In, Llc Separate plane compression using plurality of compression methods including ZLN and ZLD methods
US7075681B1 (en) * 1999-11-09 2006-07-11 Kodak Graphic Communications Canada Company System and method for reducing the data volume of images
US6522783B1 (en) 1999-11-23 2003-02-18 Sharp Laboratories Of America, Inc. Re-indexing for efficient compression of palettized images
AU2628301A (en) * 2000-01-06 2001-07-16 Zen Optical Technology Llc Pen-based handwritten character recognition and storage system
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
US20020067860A1 (en) * 2000-10-10 2002-06-06 Azam Syed Aamer System, method and computer program product for improved lossless compression for bitmap fonts
US6704449B1 (en) 2000-10-19 2004-03-09 The United States Of America As Represented By The National Security Agency Method of extracting text from graphical images
DE10123406A1 (de) * 2001-05-15 2002-11-21 Sick Ag Verfahren zum Erfassen von zweidimensionalen Codes
WO2003048726A2 (en) * 2001-11-30 2003-06-12 Tracking Technology Inc. Taggants for products and method of taggant identification
US7415154B2 (en) * 2002-02-01 2008-08-19 Koninklijke Philips Electronics N.V. Compression of palettized color images with variable length color codes
US9577667B2 (en) * 2002-04-23 2017-02-21 Ntt Docomo, Inc. System and method for arithmetic encoding and decoding
EP1504408B1 (de) * 2002-04-23 2015-10-28 NTT DoCoMo, Inc. System und verfahren zur arithmetischen codierung
JP3961870B2 (ja) * 2002-04-30 2007-08-22 株式会社リコー 画像処理方法、画像処理装置、及び画像処理プログラム
JP3920168B2 (ja) * 2002-08-02 2007-05-30 株式会社リコー 画像形成装置とその制御方法並びに画像形成システム及び記録媒体
JP3901644B2 (ja) * 2003-01-30 2007-04-04 株式会社東芝 テクスチャ画像圧縮装置及び方法、テクスチャ画像抽出装置及び方法、データ構造、記憶媒体
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7586924B2 (en) 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
US7292732B2 (en) * 2004-04-23 2007-11-06 Primax Electronics Ltd. Image compression/decompression apparatus and method
JP4652741B2 (ja) * 2004-08-02 2011-03-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 異常検出装置、異常検出方法、異常検出プログラム、及び記録媒体
JP4438062B2 (ja) * 2004-10-06 2010-03-24 キヤノン株式会社 符号化装置、符号化装置の制御方法
KR100639614B1 (ko) 2004-10-15 2006-10-30 주식회사 하이닉스반도체 뱅크 내 셀을 테스트하기 위한 데이터 출력 컴프레스 회로및 방법
US7450134B2 (en) * 2004-11-18 2008-11-11 Time Warner Cable Inc. Methods and apparatus for encoding and decoding images
JP4618676B2 (ja) 2005-04-28 2011-01-26 株式会社リコー 構造化文書符号の転送方法、画像処理システム、サーバ装置、プログラム及び情報記録媒体
KR100717002B1 (ko) * 2005-06-11 2007-05-10 삼성전자주식회사 영상 부호화 및 복호화 장치와, 그 방법, 및 이를 수행하기위한 프로그램이 기록된 기록 매체
JP4854309B2 (ja) * 2006-01-23 2012-01-18 シャープ株式会社 データ格納制御装置
EP2011008B1 (de) 2006-03-13 2020-11-18 SMI Holding, Inc. Dreidimensionale authentifizierung einer mikropartikelmarke
US8111259B1 (en) 2006-07-06 2012-02-07 Marvell International Ltd. Image processing apparatus having context memory controller
US7865025B2 (en) * 2006-08-01 2011-01-04 Ching-Wei Yeh Data processing method in embedded block coding with optimized truncation module
CN100423082C (zh) * 2006-11-03 2008-10-01 北京京东方光电科技有限公司 一种平板显示器系统内接口单元
JP4694462B2 (ja) * 2006-12-14 2011-06-08 シャープ株式会社 符号化装置、符号化方法、プログラムおよびその記録媒体
EP2096439A4 (de) * 2006-12-21 2011-01-05 Ajinomoto Kk Verfahren zur beurteilung von kolorektalkarzinom, kolorektalkarzinom-beurteilungsvorrichtung, -verfahren, -system, -programm und aufzeichnungsmedium
KR100906243B1 (ko) * 2007-06-04 2009-07-07 전자부품연구원 Rgb 색 공간 신호의 영상 부호화 방법
AU2007249106B2 (en) * 2007-12-18 2010-11-25 Canon Kabushiki Kaisha A lossless compressor for image data values
EP2318919B1 (de) 2008-08-19 2018-10-24 ContentArmor Ausbreitungskarte zur wasserzeichenmarkierung
CN102473314B (zh) * 2009-09-02 2014-01-29 索尼公司 矢量嵌入式图形编码
JP5870458B2 (ja) * 2009-09-09 2016-03-01 ソニー株式会社 無線hd1.1におけるグラフィック−モード圧縮のためのビットストリーム構文
CA2774940C (en) * 2009-10-14 2014-06-10 Sony Corporation Joint scalar embedded graphics coding for color images
JP2011091575A (ja) * 2009-10-21 2011-05-06 Sony Corp 符号化装置および方法
WO2011159849A1 (en) * 2010-06-15 2011-12-22 Softmd Medical imaging distribution system
US20140185928A1 (en) * 2012-12-28 2014-07-03 Shai Ben NUN Hardware-supported huffman coding of images
US9466090B2 (en) * 2013-06-20 2016-10-11 Intel Corporation Subset based compression and decompression of graphics data
CN105491379A (zh) * 2014-10-01 2016-04-13 财团法人工业技术研究院 解码器、编码器、解码方法、编码方法与编解码系统
TWI577177B (zh) * 2014-10-06 2017-04-01 財團法人工業技術研究院 調色板編碼方法與解碼方法以及電子裝置
US10387991B2 (en) 2016-07-01 2019-08-20 Intel Corporation Method and apparatus for frame buffer compression
JP2019091191A (ja) * 2017-11-14 2019-06-13 ルネサスエレクトロニクス株式会社 半導体装置、データ処理システム、データ読取り方法、及びデータ読取りプログラム
US10679320B1 (en) * 2018-07-23 2020-06-09 Ambarella International Lp High dynamic range sensor system with row increment operation
KR102185668B1 (ko) * 2019-01-30 2020-12-02 스노우 주식회사 이미지 파일의 픽셀 변환을 통한 압축율 향상 방법 및 시스템
KR102152346B1 (ko) 2019-01-30 2020-09-04 스노우 주식회사 이미지 파일의 블록 간 차이를 통한 압축율 향상 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3804175C2 (de) * 1988-02-11 1990-02-15 Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4319267A (en) * 1979-02-16 1982-03-09 Nippon Telegraph And Telephone Public Corporation Picture coding and/or decoding equipment
US4868773A (en) * 1985-03-15 1989-09-19 Purdue Research Foundation Digital filtering by threshold decomposition
JPS63245567A (ja) * 1987-03-31 1988-10-12 Toshiba Corp 画像処理装置
EP0523939B1 (de) * 1991-07-15 1998-10-07 Canon Kabushiki Kaisha Bildkodierung
US5442458A (en) * 1991-12-18 1995-08-15 Eastman Kodak Company Method and associated apparatus for encoding bitplanes for improved coding efficiency
US5463702A (en) * 1992-05-12 1995-10-31 Sony Electronics Inc. Perceptual based color-compression for raster image quantization
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
US5471207A (en) * 1994-02-23 1995-11-28 Ricoh Company Ltd. Compression of palettized images and binarization for bitwise coding of M-ary alphabets therefor
US5471320A (en) * 1994-05-11 1995-11-28 Xerox Corporation Stack filters for 1-to-N bit image processing in electronic printers
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
US5867602A (en) * 1994-09-21 1999-02-02 Ricoh Corporation Reversible wavelet transform and embedded codestream manipulation
US5689589A (en) * 1994-12-01 1997-11-18 Ricoh Company Ltd. Data compression for palettized video images

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3804175C2 (de) * 1988-02-11 1990-02-15 Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Englewood Cliffs, New Jersey, Prentice-Hall, Inc., 1989, S. 476-483 ISBN 0-13-332578-4 *
JAIN, Anil K.: Fundamentals of Digital Image Processing *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19706268A1 (de) * 1997-02-18 1998-08-20 Christian Wenz Dateiformatspezifisches Packverfahren
EP0875858A2 (de) * 1997-04-30 1998-11-04 Fujitsu Microelectronics, Inc. Verfahren zur Kompression/Dekompression von Bilddaten
EP0875858A3 (de) * 1997-04-30 2000-07-19 Fujitsu Microelectronics, Inc. Verfahren zur Kompression/Dekompression von Bilddaten
WO1999001981A1 (en) * 1997-07-04 1999-01-14 The Secretary Of State For Defence Data encoding system
GB2332330B (en) * 1997-07-04 2002-01-16 Secr Defence Data encoding system
US6477277B1 (en) 1997-07-04 2002-11-05 Qinetiq Limited Data encoding system
DE19944213C1 (de) * 1999-09-15 2001-05-23 Inst Telematik E V Verfahren zum Komprimieren eines digitalen Bildes mit mehreren Bit-Ebenen
DE10120644B4 (de) * 2000-04-28 2009-10-01 Denso Corporation, Kariya-City Bilddatenverdichtungsverfahren und -vorrichtung, welche Bilddaten separat durch Modifizieren der Farbe verdichten
DE10120644B8 (de) * 2000-04-28 2010-01-28 DENSO CORPORATION, Kariya-shi Bilddatenverdichtungsverfahren und -vorrichtung, welche Bilddaten separat durch Modifizieren der Farbe verdichten
DE10041037A1 (de) * 2000-08-22 2002-03-14 Ubicom Ges Fuer Telekommunikat Bildkodierungsverfahren und Bildkodierer

Also Published As

Publication number Publication date
DE19606178C2 (de) 2002-06-13
US5659631A (en) 1997-08-19
KR100214055B1 (ko) 1999-08-02
KR960032912A (ko) 1996-09-17
US6285790B1 (en) 2001-09-04
JPH08265800A (ja) 1996-10-11
JP2949066B2 (ja) 1999-09-13
TW303567B (de) 1997-04-21
TW345795B (en) 1998-11-21

Similar Documents

Publication Publication Date Title
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE69633730T2 (de) Verfahren zur kompression/dekompression von bilddateien
DE69725215T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen
DE69837017T2 (de) Zoomen mit vorbestimmten Grössen von Indexbildern
DE19534943B4 (de) Vorrichtung zur Komprimierung unter Verwendung von eingebetteten Kleinwellen
DE19635251C2 (de) Verfahren und Apparat zur Komprimierung beliebiger Daten
DE19626600C2 (de) Kodierer und Verfahren zum Kodieren
DE69738515T2 (de) Vorrichtung und verfahren für hybride kompression von rasterdaten
DE19544761C2 (de) Verfahren zum Komprimieren eines eingegebenen Symbols
EP1797536B1 (de) Codierschema für einen ein zeitlich veraenderliches graphikmodell darstellenden datenstrom
DE19626615C2 (de) Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet
DE19534730B4 (de) Verfahren zum Codieren und Decodieren von Daten
DE69814988T2 (de) Datenzusammenfügevorrichtung
DE69736329T2 (de) Verschachtelte verteilte kodierung von spärlich bestückten datensätzen
DE10120644B4 (de) Bilddatenverdichtungsverfahren und -vorrichtung, welche Bilddaten separat durch Modifizieren der Farbe verdichten
DE60107964T2 (de) Vorrichtung zur kodierung und dekodierung von strukturierten dokumenten
DE102006029326A1 (de) Adaptive Videokompression eines graphischen Nutzerinfaces unter Verwendung von Applikations-Metadaten
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE19506164A1 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
EP2109993B1 (de) Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes
DE19742417A1 (de) Vorrichtung und Verfahren zur Durchführung von M-fachem Maschinenendzustands-Entropiekodieren bzw. Entropiekodieren mit einer Maschine mit finitem Zustand
DE2264090A1 (de) Datenverdichtungssystem
DE69722085T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Botschaften
DE69936755T2 (de) Verfahren und Vorrichtung zur Analyse von Bilddaten um mehrere Umwandlungen für verbesserte Bilddatenübertragung durchzuführen
DE10295968T5 (de) Verbunddokumentbildkompression unter Verwendung eines Mehrfachregion-Zweischichtformats

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee