-
DARSTELLUNG
DES ALLGEMEINEN TECHNISCHEN GEBIETS UND DES STANDS DER TECHNIK
-
Die
vorliegende Erfindung betrifft ein Verfahren zum Codieren von Bildern.
-
Sie
ist besonders vorteilhaft zum Codieren von Bildern mit einer beschränkten Größe anwendbar (Breite
und Höhe
in der Größenordnung
von oder kleiner als beispielsweise 400 Pixel) und insbesondere
zum Codieren und Komprimieren einfacher Bilder, die auf Bildschirmen
geringer Größe dargestellt
werden (Bildschirme von Mobiltelefonen oder jedem anderen tragbaren
Endgerät),
wie etwa Werbebilder, die Logos oder alphanumerische Zeichen mit
einem besonderen Schriftbild umfassen oder auch stilisierte Darstellungen (kommerzielle
Grafiken, Bilder der Art, wie sie unter der Bezeichnung "Clipart" bekannt sind).
-
Es
ist tatsächlich
gewünscht,
insbesondere für
die Anwendungen, die im unter der Nummer FR-00 683 gestellten französischen
Patentantrag des Antragstellers beschriebenen sind, Bilder vom zuvor
genannten Typ übertragen
zu können
und auf Bildschirmen von tragbaren Endgeräten darstellen zu können, wie
etwa Mobiltelefonen oder auch PDAs vom Typ, wie sie von der Firma
3COM unter der Bezeichnung "Palm" vermarktet werden,
oder vom Typ, wie diejenigen, die das Betriebssystem Windows CE
verwenden und von den Firmen CASIO und COMPAQ unter den Bezeichnungen "Cassiopeia" beziehungsweise "Aero" vermarktet werden.
-
Ein
Ziel der Erfindung ist es daher ein Verfahren zum Codieren und Komprimieren
von Bildern vorzuschlagen, das eine hohe grafische Wiedergabetreue
und insbesondere eine gute Wiedergabe von Logos und Grafiken von
Werbeauftraggebern gestattet und das außerdem eine Übertragung
gestatten, die pro Bild eine begrenzte Anzahl von Bytes verwendet
(beispielsweise 400/500 verwendete Bytes pro Bild).
-
Es
sind bereits zahlreiche Techniken zur Codierung und Komprimierung
bekannt.
-
Ein
System zur Codierung und Komprimierung, das den genannten Anforderungen
nahekommt, ist das "Bitmap
Compuserve GIF",
das insbesondere im Internet viel eingesetzt wird.
-
Man
kann sich hierfür
auf das Patent
US 4 558 302 der
Unisys Corporation "LZW
(Lempel-Zev-Welch) compression and decompression methods" beziehen. Dieses
System codiert die Bilder mit 2, 3, 4, 8 Bit pro Pixel, entsprechend
der Art des Bildes.
-
Es
ist jedoch nicht leistungsfähiger,
als ein herkömmlicher
statistischer Code, und es ist insbesondere für einfache Bilder wenig effektiv,
für die
unter Berücksichtigung
der gewünschten
Wiedergabequalität
eine vektorielle Behandlung notwendig ist.
-
DARSTELLUNG
DER ERFINDUNG
-
Die
von der Erfindung vorgeschlagene Lösung, die sich als deutlich
leistungsfähiger
herausstellt, ist ein Verfahren zum Codieren eines digitalisierten
Bildes, das mehrere Pixelzeilen umfaßt, gemäß dem eine Zeile durch eine
Folge von Untercodes codiert wird, die für die Länge der aufeinanderfolgenden
Abschnitte und deren Farbe kennzeichnenden ist,
dadurch gekennzeichnet,
daß
- – wenn
das Bild mehrere aufeinanderfolgende identische Zeilen enthält, die
erste dieser Zeilen codiert und dieser Code durch einen Untercode
vervollständigt
wird, der für
die Wiederholung der Zeile und die Anzahl der auf diese erste Zeile
folgenden Wiederholungen der Zeile kennzeichnend ist,
- – wenn
das Bild mehrere Zeilen enthält,
die dieselbe Farbfolge aufweisen, die erste dieser Zeilen codiert wird
und dieser Code durch eine Folge von Untercodes vervollständigt wird,
die für
die Wiederholung der Farbfolge und die Länge der verschiedenen Abschnitte
der verschiedenen Linien kennzeichnend sind.
-
Ein
solches Verfahren wird vorteilhafterweise durch die folgenden verschiedenen
Eigenschaften vervollständigt,
die einzeln oder in all ihren möglichen
Kombinationen angewendet werden können:
- – der Code
einer Zeile, die nicht identisch mit der vorhergehenden Zeile ist
oder die nicht dieselbe Farbfolge aufweist, umfaßt aufeinanderfolgend für jeden
Farbabschnitt einen Untercode, der für die Farbe des Abschnitts
kennzeichnend ist, und einen Untercode, der für die Länge des Abschnitts kennzeichnend
ist;
- – eine
Farbe ist mit fünfzehn
Werten codiert;
- – wenn
die Länge
des Abschnitts unter 15 Pixel liegt, wird der Abschnitt mit einem
Byte XY codiert, wobei X die Hexadezimalzahl der Farbe und Y ebenso
in Hexadezimalform die Länge
des Abschnitts ist, und wenn die Länge des Abschnitts über 15 Pixel
liegt, wird der Abschnitt mit zwei Bytes X0, ZY codiert, wobei X
die Farbnummer des Abschnitts und ZY die Länge des Abschnitts ist;
- – wenn
das Bild mehrere aufeinanderfolgende identische Zeilen enthält und wenn
die Anzahl der zu wiederholenden Zeilen, die identisch zur letzten
codierten Zeile sind, kleiner als 15 ist, ist der Wiederholungscode
mit einem Byte codiert; und wenn diese Anzahl größer als 15 ist, gliedert der
Wiederholungscode sich in zwei Bytes auf, wobei das eine kennzeichnend
für die
Wiederholungsfunktion ist und das andere die Anzahl der zu wiederholenden
Zeilen codiert;
- – wenn
eine Zeile dieselbe Abschnittstruktur wie die vorhergehende aufweist,
wird die Länge
dieser Abschnitte in folgender Weise codiert: wenn die Länge eines
Abschnitts unter 15 Pixel liegt, wird seine Länge mit einem Halbbyte codiert,
und wenn die Länge
eines Abschnitts über
15 Pixel liegt, wird seine Länge
mit drei Halbbytes 0, ZY codiert, wobei ZY die Länge des Abschnitts ist;
- – auf
das codierte Bild wird eine Behandlung durch eine statistische Komprimierung
angewendet;
- – die
Bilder haben Breiten- und Höhenabmessungen
in der Größenordnung
von oder kleiner als 400 Pixel und werden mit einer Anzahl von Bytes
in der Größenordnung
von oder kleiner als 500 codiert.
-
Die
Erfindung betrifft ebenfalls ein Verfahren, das dadurch gekennzeichnet
ist, daß das
Codierverfahren vom zuvor genannten Typ auf mehrere Bildern angewendet
wird und daß die
so codierten Bilder in einer Schleife an wenigstens ein tragbares
Endgerät überfragen
werden, das die von ihm empfangenen codierten Bilder decodiert,
um sie auf seinem Bildschirm darzustellen.
-
Sie
betrifft außerdem
ein System zur Übertragung
von Daten in einer Schleife, das Mittel zur Funkübertragung von Datenblöcken in
einer gegebenen Zone, mehrere tragbare Endgeräte, die geeignet sind die so ausgestrahlten
Datenblöcke
zu empfangen und Mittel zum Bearbeiten, die die Übertragung der Daten verwalten,
umfaßt,
das dadurch gekennzeichnet ist, daß die Bearbeitungsmittel und
die tragbaren Endgeräte
ein Verfahren vom zuvor genannten Typ einsetzen.
-
Weitere
Eigenschaften und Vorteile der Erfindung gehen noch aus der folgenden
Beschreibung hervor, die rein zur Veranschaulichung und nicht einschränkend ist.
-
BESCHREIBUNG
WENIGSTENS EINER AUSFÜHRUNGSFORM
DER ERFINDUNG
-
Eine
erste Phase einer möglichen
Ausführungsform
der Erfindung besteht in einer Vorverarbeitung des Bildes, die darauf
abzielt, die bei der Digitalisierung eines analogen Bildes den Pixeln
zugeordneten Zwischenfarben zu beseitigen und die Anzahl der zu übertragenden
Farben zu begrenzen, wobei gleichzeitig das Aussehen des Bildes
verbessert wird. Sie kann durch eine auf einige Pixel beschränkte manuelle Überarbeitung
ergänzt
werden.
-
Anschließend wird
eine Codierung der aktuellen Zeilen des Bildes durchgeführt, unter
Ausnutzung der Korrelation zwischen aufeinanderfolgenden Linien
zur Verringerung der Größe des Codes.
-
Schließlich wird
eine abschließende
statistische Komprimierung durchgeführt, die es gestattet, die
statistische Struktur des Bildes auszunutzen.
-
BESCHREIBUNG DER CODIERUNG
-
Die
Codierung wird mit fünfzehn
Werten ausgeführt.
-
Der
zur Beschreibung eines Bildes verwendete Code umfaßt zwei
Teile, die in der fertigen Datei, das heißt nach der Komprimierung,
aneinandergereiht sind:
- – der Dateikopf, der die allgemeinen
Eigenschaften des codierten Bildes beschreibt (Typ der statistischen Komprimierung,
Größe des Dateikopfs,
Größe des Bildes,
Farbpalette),
- – der
eigentliche Bildcode, der es gestattet, die Farbe jedes Pixels zu
rekonstruieren, wenn der Dateikopf bekannt ist.
-
DER DATEIKOPF
-
Der
Dateikopf umfaßt
eine variable Anzahl von Bytes, die von der Anzahl der Farben abhängt, die
das zu codierende Bild enthält
(maximal 15).
-
Genauer
ist diese Anzahl von Bytes gleich 3 mal der Anzahl der zu codierenden
Farben plus vier.
-
Die
Bedeutung der verschiedenen Bytes des Dateikopfs ist in Tabelle
3.1 wiedergegeben, wobei Bi das i'te Byte bezeichnet.
-
-
*R,
G und B sind die mit einem Byte codierten Farbkoordinaten Rot, Grün und Blau
der Farbe des Abschnitts, entsprechend den gängigen informationstechnischen
Standards VGA, SVGA, XVGA und weiteren.
-
EIGENTLICHE CODIERUNG
DES BILDES
-
Die
Codierung des Bildes wird Zeile für Zeile oder in Paketen von
identischen Zeilen durchgeführt,
wobei oben links im Bild begonnen und unten rechts geendet wird.
-
Es
werden drei Codierungstypen für
die Zeilen verwendet, je nachdem ob:
- – die aktuelle
Zeile identisch zur vorhergehenden ist (Codierung sich wiederholender
Zeilen),
- – die
aktuelle Zeile ist der vorhergehenden darin ähnlich, daß sie dieselbe Abfolge von
Farbabschnitten umfaßt,
jedoch mit abweichenden Längen
der Abschnitte (Codierung von Zeilen mit derselben Struktur),
- – die
aktuelle Zeile ist neu, in dem Sinn, daß sie zu keinem der beiden
vorhergehenden Fälle
gehört
(Standardcodierung einer Zeile).
-
Die
erste Zeile eines Bilds wird immer im Standardmodus codiert.
-
STANDARDCODIERUNG EINER
ZEILE
-
Der
Code gibt aufeinanderfolgend für
jeden Farbabschnitt der Zeile die Nummer der codierten Farbe von
0 bis 14 (der Wert 15 ist für
die "Flags" reserviert, die
bestimmte Funktionalitäten
anzeigen) und die Länge des
Abschnitts.
- – wenn die Länge des
Abschnitts kleiner als 15 Pixel ist (für den Wert 15 gilt dieselbe
Anmerkung wie oben), wird der Abschnitt in einem Byte mit XY hex.
codiert, wobei X die hexadezimale Nummer der Farbe und Y die Länge, ebenfalls
hexadezimal, des Abschnitts ist (X≤E,
1≤Y≤E), wobei
E die Zahl 14 in hexadezimal bezeichnet (E hex. = 14 dez.) und ebenso
F hex. = 15 dez.;
- – wenn
die Länge
des Abschnitts größer als
15 Pixel ist, wird der Abschnitt mit zwei Bytes X0, ZY codiert, wobei
X die Nummer der Farbe des Abschnitts (X≤E) und ZY die Länge des
Abschnitts ist.
-
CODIERUNG SICH WIEDERHOLENDER
ZEILEN
-
Wenn
der Codierer festgestellt hat, daß eine Zeile identisch zur
vorhergehenden ist oder daß eine
Folge von Zeilen identisch mit der letzten codierten Zeile ist,
beschreibt er nicht die Abschnitte dieser Zeilen, sondern beschränkt sich
darauf, einen Wiederholungscode zu senden.
- – wenn die
Anzahl der zu wiederholenden Zeilen, die mit der letzten codierten
Zeile identisch sind, kleiner als 15 ist, ist der Wiederholungscode
ein Byte der Form FW, wobei W≤E
die Anzahl der Zeilen ist, die identisch mit der vorhergehenden
sind und die der Decoder reproduzieren muß, wobei FW der mit W verbundene
Wiederholungscode ist;
- – wenn
diese Anzahl größer als
15 ist, wird dasselbe Ausweichverfahren wie für die Codierung der Abschnitte
verwendet; das Wiederholungs-"Flag" nimmt die Form F0
an und wird von einem Byte gefolgt, das die Anzahl der zu wiederholenden
Zeilen codiert TW (01≤TW≤FE).
-
CODIERUNG DER ZEILEN MIT
DERSELBEN STRUKTUR
-
Wenn
eine Zeile dieselbe Struktur der Abschnitte wie die vorhergehende
besitzt (dieselbe Anzahl, dieselben Farben in derselben Reihenfolge),
ist es nicht notwendig, erneut die Farben zu übertragen, da die Struktur
der vorhergehenden Zeile kopiert werden kann.
-
Die
Codierung einer Zeile dieser Art wird durch das "Flag" FF
angezeigt; die Längen
der Abschnitte werden in folgender Weise codiert:
- – wenn die
Länge des
Abschnitts kleiner als 15 Pixel ist, wird der Abschnitt in einem
Halbbyte mit Y codiert (Y≤E),
- – wenn
die Länge
des Abschnitts größer als
15 Pixel ist, wird der Abschnitt in drei Halbbytes 0, Z, Y codiert, wobei
ZY die Länge
des Abschnitts ist.
-
Die
Folge der Halbbytes wird dann wieder zu Bytes zusammengesetzt, wobei
am Ende der Zeile eventuell ein Füllhalbbyte angefügt wird,
wenn die Codierung zu einer ungeraden Anzahl an Halbbytes führt.
-
STATISTISCHE KOMPRIMIERUNG
-
Die
den verschiedenen Zeilen entsprechenden Codes werden fortlaufend
aneinandergefügt,
um den vollständigen
Bildcode zu ergeben.
-
Dieser
Code berücksichtigt
jedoch nicht die von der Bildstruktur vorgegebene Statistik. Das
Ziel des statistischen Komprimierers ist es, diese Verteilung in
Bedingungen, die an die beschränkte
Größe des Codes angepaßt sind,
bestmöglich
auszunutzen.
-
Im
ausgewählten
Prinzip teilt der Code die Bytes in zwei Klassen auf:
- – die
häufigsten
Bytes, die mit 2, 3 oder 4 Bit, denen ein auf 0 gesetztes Bit vorangeht,
codiert werden, was Wörter
von 3, 4 beziehungsweise 5 Bit ergibt,
- – die
seltensten Bytes werden vollständig übertragen
und ihnen wird ein auf 1 gesetztes Bit vorangestellt, was insgesamt
9 Bit bedeutet.
-
Die
zu treffende Auswahl zwischen den verschiedenen Komprimierungslösungen wird
vom Codierer durchgeführt,
nachdem er die Gesamtgröße des sich
ergebenden Codes berechnet hat. Dieser wählt unter den vier möglichen
Lösungen
den effizientesten Modus aus. Diese Auswahl wird in den Parameter
k geschrieben, auf den im ersten Byte des Dateikopfs zugegriffen
werden kann (Tabelle 3.2). Von vornherein wird die statistische
Komprimierung für
Größen des
Bildcodes vor der Komprimierung unterhalb einer einstellbaren Schwelle (20
Byte als typischer Wert) nicht eingesetzt.
-
-
Die
2k ersten Byte des komprimierten Bildcodes
bilden die Korrespondenztabelle zwischen dem auf k Bits verkleinerten
Code und den komprimierten Bytes. Das erste Byte wird dabei mit
0 codiert, das folgende mit 1, das letzte mit 2k-1
([11], [111] oder [1111] in Binärdarstellung).
-
Die
Folge des komprimierten Bildcodes wird wie folgt konstruiert:
- 1) es wird eine Folge von Wörtern mit k+1 oder 9 Bit gebildet,
von denen jedes eines der Bytes des Codes vor der Komprimierung
gemäß der folgenden
Regel darstellt:
– wenn
das Byte in der Tabelle der häufigsten
Bytes an der Position n steht, wird es durch das binäre Wort codiert,
das durch 0, gefolgt vom binären
Ausdruck für
n mit k Bit, gebildet wird, (als Beispiel wird das Byte an der Position
5 unter den 0, 1 . .. 7 Byte der Tabelle (k=3) mit [0101] codiert),
– wenn das
Byte nicht in der Tabelle steht, wird es durch das binäre Wort
codiert, das durch eine 1, gefolgt vom unveränderten binären Code des betreffenden Bytes,
gebildet wird, (als Beispiel wird das Byte 242, das nicht in der
Tabelle steht, als [111110010] codiert]).
- 2) danach wird die Folge der so gebildeten Worte in Bytes gepackt.
Wenn die Gesamtlänge
der Wortkette kein Vielfaches von 8 ist, wird am Ende der Kette
ein Füllwort
hinzugefügt,
um die Kette auf ein Vielfaches von 8 zu vervollständigen.
Dieses Füllwort
wird durch eine Folge von so vielen Nullen wie notwendig gebildet.
Da die Gesamtlänge
dieses Worts kleiner oder gleich 7 ist und es mit einer 1 beginnt,
die normalerweise ein Wort mit 9 Bit anzeigt, wird es vom Codierer
leicht erkannt und beseitigt.
-
Der
endgültige
Code wird damit durch das Aneinanderreihen der folgenden Komponenten
zusammengesetzt:
- 1) wenn k=8 (keine statistische
Kompression), Aneinanderreihen des Dateikopfs und des nicht komprimierten
Bildcodes,
- 2) wenn k=2, 3 oder 4, Aneinanderreihen des Dateikopf, der Folge
der häufigsten
Bytes und des komprimierten Bildcodes.
-
WEITERE EIGENSCHAFTEN
-
Beim
Auftreten von Fehlern, die dazu führen, daß das Bild nicht decodiert
werden kann, gibt der Decoder ein Ersatzbild zurück, das aus einem Rechteck
mit den Abmessungen des Bildes mit der Farbe "0" besteht,
insoweit er die ersten Bytes des Dateikopfs lesen kann.
-
Das
verwendete Verfahren gestattet auch die Ausführung von Transparenzen ("inlay"), indem der Bildhintergrund
transparent wiedergegeben wird. Zum Ausführen einer Transparenz ordnet
der Codierer den transparenten Abschnitten eine Farbnummer zu, die
direkt anschließend
oberhalb der letzten im Dateikopf beschriebenen Farbe steht. Dies
führt dazu,
daß die
Anzahl der wirklich für
das Bild zur Verfügung
stehenden Farben auf 14 verringert ist.
-
Es
wurde erkennbar, daß die
gerade beschriebene Codierung und die Decodierung unsymmetrisch sind,
die Codierung benötigt
mehr Rechenleistung als die Decodierung, was für die vorgesehenen Anwendungstypen
besonders interessant ist.
-
Die
von den Bearbeitungsmitteln der tragbaren Endgeräte eingesetzte Decodierung
ist entgegengesetzt zur Codierung und gestattet eine Wiederherstellung
des Bildes auf einem Endgerät,
das mit der Windows CE Software ausgestattet ist, für Bildabmessungen
von der Art, wie zuvor angegeben (Bilder mit beispielsweise 255 × 255 Pixel
oder auch mit 240 × 320
Pixel).
-
Die
vorgeschlagene Verarbeitung gestattet nicht nur die Codierung von
Bildern mit Logos oder alphanumerischen Zeichen mit einem bestimmten
Schriftbild oder auch von stilisierten Darstellungen (kommerzielle Grafiken,
Bilder der Art, wie sie unter der Bezeichnung "Clipart" bekannt sind).
-
Für komplexere
Bilder und insbesondere für
fotografische Bilder werden herkömmliche
Lösungen
verwendet ("JPEG"-Verarbeitung), mit
einer Aufspaltung des Bildes in Teile, deren Codierung weniger als
500 Byte benötigt.
-
Das
vorgeschlagene Codierungsverfahren findet vorteilhaft in den Fällen Anwendung,
in denen Bilder, gegebenenfalls mit anderen Elementen, in Schleifen
zu wenigstens einem tragbaren Endgerät übertragen werden, das die von
ihm empfangenen codierten Bilder decodiert, um sie auf seinem Bildschirm
anzuzeigen.
-
Insbesondere
wird dieses Codierverfahren vorteilhaft von den Verarbeitungsmitteln
eines Systems zur Übertragung
von Daten in Schleifen zu tragbaren Endgeräten eingesetzt.
-
Ein
solches System ist beispielsweise dasjenige, das im Patentantrag
FR-00.683 beschrieben
ist.
-
Es
umfaßt
insbesondere Mittel zur Funkübertragung
von Datenblöcken
in einer gegebenen Zone, mehrere tragbare Endgeräte, die dazu geeignet sind,
die so übertragenen
Datenblöcke
zu empfangen und Verarbeitungsmittel, die die Übertragung dieser Daten verwalten.
-
Die
tragbaren Endgeräte
sind dabei Träger
eines Programms, das es ihnen gestattet, die von ihnen empfangenen
codierten Bilder zu decodieren, um sie (im gegebenen Fall) auf ihren
Bildschirmen anzuzeigen.