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 DatensatzInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N11/00—Colour television systems
- H04N11/04—Colour television systems using pulse code modulation
- H04N11/042—Codec means
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/46—Colour picture communication systems
- H04N1/64—Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
- H04N1/644—Systems 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods 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
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
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
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
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
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)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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)
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)
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 |
-
1995
- 1995-02-21 US US08/391,679 patent/US5659631A/en not_active Expired - Lifetime
-
1996
- 1996-01-27 TW TW085101009A patent/TW303567B/zh not_active IP Right Cessation
- 1996-01-27 TW TW085112203A patent/TW345795B/zh not_active IP Right Cessation
- 1996-02-15 KR KR1019960003753A patent/KR100214055B1/ko not_active IP Right Cessation
- 1996-02-20 DE DE19606178A patent/DE19606178C2/de not_active Expired - Fee Related
- 1996-02-20 JP JP8032525A patent/JP2949066B2/ja not_active Expired - Fee Related
-
1997
- 1997-04-15 US US08/842,663 patent/US6285790B1/en not_active Expired - Fee Related
Patent Citations (1)
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)
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)
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 |