-
Bereich der Erfindung
-
Die
vorliegende Erfindung betrifft ein Verfahren zum Codieren von digitalen
Informationen, die von einem ersten Gerät zu einem zweiten Gerät übertragen
werden sollen, wobei die digitalen Informationen als eine Abbildung
von Reihen und Spalten abgebildet werden, die mehrere Zellen definieren, wobei
jede der genannten Zellen einen Pixelwert hat.
-
Die
vorliegende Erfindung betrifft insbesondere ein Verfahren zum Komprimieren
von Bitmap-Bildern, um sie von einem schnellen Rechengerät (Server)
zu einem relativ langsamen Rechengerät (Client) zu übertragen.
-
Hintergrund der Erfindung
-
Das
Codieren einer Reihe von Pixelwerten mit dem RLE-(Lauflängencodier)-Verfahren ist bekannt.
-
Das
RLE-Verfahren nimmt Rohdaten, z. B. eine Reihe von Pixelwerten,
und codiert sie als eine Serie von (Zählwert-)Paaren, so dass lange
Sequenzen desselben Wertes durch eine relativ geringe Datenmenge
dargestellt werden können.
So könnte
beispielsweise die Wertereihe: 12 12 12 100 100 100 100 100 30 30
4 4 4 4 4 4 4 4 4 4 4 4 4 4 wie folgt lauflängencodiert werden:
(3,12)
(5,100) (2,30) (14,4)
-
Dieses
RLE-Verfahren ist eine Standardtechnik, die in den 50er Jahren entwickelt
und in vielen verschiedenen Bereichen wie z. B. in Faxmaschinen
eingesetzt wurde.
-
Es
ist aus Hintergrundforschungsarbeiten (bei denen das World Wide
Web sowie traditionelle Journals und Lehrbücher benutzt wurden) auch bekannt,
dass viele Ideen mit den Bezeichnungen „Bereichscodierung" und „zweidimensionale
Lauflängencodierung" vorgelegt wurden.
Leider stehen von den konsultierten Quellen keine speziellen Ausführungsdetails
oder akademischen Nachschlagewerke zur Verfügung. Ferner zeigen die Quellen
an, dass andere Arbeiten in diesem Bereich komplexe rekursive Algorithmen
verwenden, bei denen optimale Lösungen auf
Kosten von langen Laufzeiten erreicht werden, und dass diese anderen
Bemühungen
auch nicht für die Übertragung
von Bildern für
ein Echtzeit-Rendering mit relativ langsamen Computern geeignet
sind.
-
Die
vorliegende Erfindung löst
das Problem des Übertragens
von Bitmap-Bildern von einem relativ schnellen Rechengerät (dem Server)
zu einem relativ langsamen Rechengerät (dem Client) so, dass diese
Bilder auf dem Client schnell gerendert werden können.
-
Es
ist daher eine Hauptaufgabe der vorliegenden Erfindung, ein Verfahren
zum Codieren von Bitmap-Informationen
bereitzustellen, mit dem relativ langsame Computer zweidimensionale
Bilder einfach, effektiv und nützlich
darstellen können.
-
Pracht
B. R. et al. offenbaren in „Adaptations of
RUN-Length Encoding
for Image Data";
CONFERENCE PROCEEDINGS IEEE SOUTHEASTCON '87, Bd. 1, auf den Seiten 6–10 ein
Bilddatenkompressionssystem durch Definieren des Bildes als Rechtecke,
die Pixel desselben Wertes enthalten.
-
Masayoshi
A. offenbart in „Rectangular
region coding for image data compression"; PATTERN RECOGNITION, Bd. 11, Nr. 5/6,
auf den Seiten 297–312
einen Datenkompressionsalgorithmus, der ein Bild als einen Satz
von gleichförmigen
Rechtecken definiert.
-
Mohamed
S. A. et al. offenbaren in „Binary image
compression using efficient partitioning into rectangular regions"; IEEE Transactions
an Communications, Bd. 43, Nr. 5, 5. Mai 1995, auf den Seiten 1888–1893 eine
binäre
Bildcodierungstechnik, die ein Bild in Rechtecke unterteilt, wobei
nur schwarze Pixel verarbeitet werden.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Gemäß der bevorzugten
Ausgestaltung der Erfindung wird ein Verfahren zum Codieren von
digitalen Informationen bereitgestellt, wobei die genannten digitalen
Informationen als eine Abbildung von Reihen und Spalten abgebildet
werden, die mehrere Zellen definieren, und wobei jede der genannten
Zellen einen Pixelwert hat, wobei das genannte Verfahren durch die
folgenden Schritte gekennzeichnet ist:
- a) Ermitteln,
anhand einer vorbestimmten ersten Zelle mit einem bestimmten Pixelwert,
des größten Bereichs
von Zellen mit einer vorbestimmten Form neben der genannten ersten
Zelle, die denselben Pixelwert wie die genannte erste Zelle haben;
- b) Erzeugen eines Codes, der die Reihe/Spalte-Position der genannten
ersten Zelle anzeigt, mit den Abmessungen des genannten größten Bereichs
und mit dem genannten, allen Zellen des genannten Bereichs gemeinsamen
Pixelwert;
- c) Markieren der codierten Zellen als benutzt;
- d) Weitergehen von der genannten Zelle, bis eine unbenutzte
Zelle angetroffen wird, wobei die genannte unbenutzte Zelle eine
zweite Zelle ist;
- e) Ermitteln, anhand der genannten zweiten Zelle, eines anderen
größten Bereichs
von Zellen neben der genannten zweiten Zelle, die denselben Pixelwert
haben wie die genannte zweite Zelle;
- f) Erzeugen eines Codes, der die Reihe/Spalte-Position der genannten
zweiten Zelle anzeigt, mit den Abmessungen des genannten größten Bereichs
und mit dem genannten, allen Zellen des genannten Bereichs gemeinsamen
Pixelwert;
- g) Wiederholen der genannten Schritte, bis alle genannten Zellen
codiert sind,
gekennzeichnet durch den Schritt des Ermittelns
eines am häufigsten
vorkommenden Pixelwertes anhand der digitalen Informationen der
Zellen und nachfolgend Ignorieren von Zellen mit diesem Wert.
-
In
einer bevorzugten Ausgestaltung der vorliegenden Erfindung wird
der am häufigsten
vorkommende Pixelwert entweder genau durch vollständiges Nummerieren
aller Pixelwerte oder wahrscheinlichkeitstheoretisch durch Nummerieren
einer zufällig ausgewählten Teilmenge
der Pixelwerte ermittelt. Alle Zellen mit dem Pixelwert V werden
dann im Grundcodierungsprozess ignoriert und der Ausgang wird um
den Wert V und die Gesamtdimensionen des Eingangs erhöht.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Diese
und andere Eigenschaften der vorliegenden Erfindung werden offensichtlich,
wenn die nachfolgende Beschreibung einer bevorzugten Ausgestaltung,
die als nicht erschöpfendes
Beispiel gegeben wird, in Verbindung mit den Begleitzeichnungen
betrachtet wird. Dabei zeigt:
-
1 ein
Bitmap-Rechteck von Informationen, die gemäß der vorliegenden Erfindung
codiert werden sollen;
-
2 Unterrechtecke
des Rechtecks von 1.
-
BEVORZUGTE ART DER AUSFÜHRUNG DER
ERFINDUNG
-
Das
erfindungsgemäße Verfahren
(Algorithmus) nimmt als Eingang ein(e) Bitmap-Rechteck oder Information
R der Breite W und der Höhe
H. Jede der W × H
Zellen des Rechtecks enthält
ein Pixel mit einer Größe von P
Bits.
-
1 zeigt
ein solches Rechteck R mit der Breite W 20 und Höhe H 16. Die Pixel P in der
Figur haben eine Größe von 8
Bits, sind dezimal dargestellt und können von 0 bis 255 variieren.
-
Die
Reihen des Rechtecks mit den Y-Indexen sind von 0 bis 15, die Spalten
mit den X-Indexen von 0 bis 19 bezeichnet (das Rechteck von 1 repräsentiert,
wie seine Form zeigt, das Bild eines X, das mit einer Farbe vor
einem Hintergrund einer anderen Farbe umrissen ist).
-
Die
Erfindung wurde im Hinblick auf ein spezielles Client/Server-Paar
entwickelt, wobei der Server ein speziell modifizierter X-Server
ist, der auf einem schnellen Unix-Computer läuft, und der Client ein Java-Applet ist, das in
einem Web-Browser auf einem anderen Computer läuft. Das fragliche Applet nimmt
Bitmap-Rechtecke R von dem speziell modifizierten X-Server und rendert
sie in einem Java-AWT-Feld.
-
Die
Rechtecke R repräsentieren
geänderte Bereiche
des Displays des X-Servers und somit erlaubt es das Applet (der
auch Maus- und Tastatur-Events zum X-Server zurücksendet) dem Benutzer, mit
seinen X-Server-Applikationen in einem beliebigen Java-fähigen Browser
zu interagieren.
-
Die
erfinderische Idee besteht darin, von dem Rechteck R einen Satz
von Unterrechtecken S (1 und 2) zu erzeugen,
von denen das ursprüngliche
Rechteck R rekonstruiert werden kann.
-
Jedes
Unterrechteck S besteht aus Zellen eines einzelnen Pixelwertes und
wird durch einen Zahlenblock (Tupel) (P1, XI, Y1, W1, H1) vorgegeben, wobei
(P1) der Pixelwert ist, (XI, YI) die Indexe der Spalte und Reihe
des ursprünglichen
Rechtecks darstellt, wo die linke obere Ecke des Unterrechtecks
S erscheint, und (W1, H1) die Breite und Höhe des Unterrechtecks S repräsentiert.
-
Der
Ausgang des Algorithmus ist ein Satz solcher Tupel. Der Grundalgorithmus
verläuft
wie folgt:
- 1. Markieren aller Zellen des Rechtecks
R als frei und Bezeichnen der linken oberen Zelle von R als die
neue aktuelle Zelle C.
- 2. Ermitteln des größten Unterrechtecks
S des Rechtecks R, dessen linke obere Ecke die aktuelle Zelle C
ist und die gänzlich
aus Zellen besteht, deren Pixelwerte dieselben sind wie der Wert
der aktuellen Zelle C.
- 3. Ausgeben des Tupels (P1, X1, Y1, W1, H1), wobei P1 der Pixelwert
der aktuellen Zelle C ist, (XI, YI) die Spalte-Reihe-Position der
aktuellen Zelle C im Rechteck R ist und (W1, H1) Breite und Höhe des Unterrechtecks
S angibt.
- 4. Markieren aller Zellen des Unterrechtecks S als benutzt (d.
h. nicht mehr frei).
- 5. Weitergehen von links nach rechts und von oben nach unten
von der aktuellen Zelle C, bis eine freie Zelle F gefunden wird
(wenn keine freie Zelle F verbleibt, dann ist der Algorithmus beendet).
- 6. Bezeichnen der freien Zelle F als die aktuelle Zelle C und
Springen zu Schritt 2.
-
Der
Ausgang des Algorithmus ist die in Schritt 3 erzeugte Liste von
Tupeln und das ursprüngliche
Rechteck R kann durch Zeichnen aller von diesen Tupeln vorgegebenen
einfarbigen Unterrechtecken S rekonstruiert werden.
-
So
wären z.
B. die ersten paar für
das in den 1 und 2 gezeigte
Rechteck R ausgebenen Tupel wie folgt:
(240, 0, 0,2, 16)
(255,2,
0, 1, 4)
(255, 3, 0,3, 1).
-
Alternativ
kann der Algorithmus an irgendeiner Ecke oder an irgendeinem Punkt
des Rechtecks R beginnen. So ist es beispielsweise möglich, indem von
der rechten oberen Ecke des Rechtecks R begonnen wird, von rechts
nach links und von oben nach unten zu gehen, um das Bild zu codieren
und die einfarbigen Unterrechtecke S zu erzeugen.
-
Es
ist auch klar, dass die zu codierenden Bitmap-Informationen anstatt rechteckig, wie
oben beschrieben, eine beliebige andere Form haben können, z.
B. kreisförmig
oder dreieckig, und dass es möglich
ist, Bitmap-Informationen
jeder Form mittels Unterbereichen zu codieren, die nicht unbedingt rechteckig
sind.
-
Als
zweites Beispiel, wenn Bitmap-Rechtecke Änderungen an einer grafischen
Benutzeroberfläche
(GUI-Display) repräsentieren,
d. h. ein Schirm von Fenstern, Bildern und Text, wie er auf einer
PC- oder Unix-Workstation erscheinen würde, dann ist klar, dass solche
Rechtecke häufig
durch einen Pixelwert dominiert werden; diese Beobachtung führt zu einer
Variante des Algorithmus, in dem der am häufigsten vorkommende Pixelwert
V in einem Anfangsdurchgang ermittelt wird, entweder genau durch
vollständiges
Nummerieren aller Pixelwerte, oder wahrscheinlichkeitstheoretisch
durch Nummerieren einer zufällig
ausgewählten
Teilmenge der Pixelwerte.
-
In
diesem Fall werden alle Zellen mit dem Pixelwert V (dem Hintergrundwert)
als benutzt markiert, bevor das Grundverfahren der Erfindung ausgeführt wird,
und der Ausgang wird an den Anfang der Hintergrundrechteckparameter
(V, O, O, W, H) gesetzt.
-
Die
Rekonstruktion kann wie für
das Grundverfahren der Erfindung erfolgen, solange das spezielle
Hintergrundrechteck zuerst gezeichnet wird und dann die Unterrechtecke
im Überlagerungsmodus gezeichnet
werden.
-
In
diesem Fall ist es möglich,
die Zahl der Unterrechtecke auf Kosten eines klein wenig komplizierteren
Algorithmus zu reduzieren.
-
Wie
oben angedeutet, ist die Hauptanwendung der vorliegenden Erfindung
die Übertragung von
Bitmap-Rechtecken
von Informationen von einem modifizierten X- Server auf ein Java-Applet für ein Echtzeit-Rendering.
In der Tat wurde das Beispiel zum Erzielen einer weitaus besseren
Leistung als andere Ansätze
gegeben, wie z. B. standardmäßige Lauflängencodierung
(RLE) in der Übertragung
von Bitmap-Bildern von einem Server zu einem relativ langsamen Computer
oder Client.
-
Im
Vergleich zu RLE ergibt das Codierungsverfahren der Erfindung ähnliche
Rohkompressionsniveaus, aber eine weitaus bessere Kompression im Hinblick
auf die Zahl der Zeichnungsgrundstrukturen, die zum Wiedergeben
des Ausgangs nötig
sind, es lässt
sich besonders einfach ausführen,
viel einfacher als die meisten für
Bilder verwendeten Kompressionsansätze.
-
Im
Allgemeinen ist die Kompression von Bildern zu Sätzen von einfachen Zeichnungsgrundstrukturen
sinnvoll, wenn die Bilder zu einem Client gesendet werden sollen,
der die Bilder in Echtzeit rendern soll, aber nicht die Fähigkeit
besitzt, komplexe Entkomprimierungen in Echtzeit durchzuführen.
-
Es
gibt fast mit Sicherheit andere Fälle als dieses besondere Beispiel,
wo dies der Fall ist und wo sich die vorliegende Erfindung daher
als nützlich erweisen
würde.
-
Zusätzlich kann
es sehr gut andere Klassen von zweidimensionalen Informationen oder
Daten als Bitmap-Bilder
geben, die von der vorliegenden Erfindung profitieren würden, sowohl
zur Kompression als auch zur Nachverarbeitung nach der Übertragung oder
Speicherung.
-
Daher
könnte
das erfindungsgemäße Codierungsverfahren
auch für
andere Dinge eingesetzt werden.
-
Zudem
könnte
die Erfindung, leicht auf 3 oder mehr Dimensionen erweitert werden,
z. B. zum Komprimieren von 3D-Volumen.