DE69210274T2 - Verfahren und Vorrichtung zur Kodierung von digitalen Bilddaten - Google Patents
Verfahren und Vorrichtung zur Kodierung von digitalen BilddatenInfo
- Publication number
- DE69210274T2 DE69210274T2 DE69210274T DE69210274T DE69210274T2 DE 69210274 T2 DE69210274 T2 DE 69210274T2 DE 69210274 T DE69210274 T DE 69210274T DE 69210274 T DE69210274 T DE 69210274T DE 69210274 T2 DE69210274 T2 DE 69210274T2
- Authority
- DE
- Germany
- Prior art keywords
- sequence
- block
- code
- data groups
- bytes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 104
- 238000012886 linear function Methods 0.000 claims description 24
- 238000012885 constant function Methods 0.000 claims description 8
- 239000013256 coordination polymer Substances 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 238000011156 evaluation Methods 0.000 description 7
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Classifications
-
- 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
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/93—Run-length coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
- Die Erfindung betrifft ein Verfahren zur Codierung von digitalen Bilddaten, die aufeinanderanderfolgende Blöcke von Datengruppen enthalten, deren Inhalte die Werte von Pixeln eines Bildes sind, und spezieller ein Verfahren, bei dem Folgen von zusammenhängenden Datengruppen innerhalb eines Blockes durch einen Code ersetzt werden, der die Anzahl von Datengruppen in der Folge enthält.
- Die Erfindung betrifft außerdem eine Vorrichtung zur Codierung von digitalen Bilddaten nach diesem Verfahren.
- Digitale Bilddaten bilden die digitale Darstellung eines physikalischen Bildes und werden beispielsweise erzeugt durch elektrooptische Abtastung des Bildes gemäß einem orthogonalen Raster aus Reihen und Spalten von Pixeln und Umwandeln der gemessenen optischen Dichte jedes Pixels in einen Digitalwert, der einen von zwei möglichen Werten (schwarz oder weiß) oder einen von mehreren möglichen Werten (Grauschattierungen) haben kann.
- Normalerweise haben die digitalen Daten die Form von Gruppen von Bits oder Bytes und sind in Blöcken in einem Speicher gespeichert. Ein solcher Block kann einer Reihe oder Zeile von Pixeln des Bildes entsprechen.
- Ein Verfahren der oben beschriebenen Art ist bekannt aus IBM Technical Disclosure Bulletin, Band 31, Nr.5 (Oktober 1988), Seiten 4 - 6. Gemäß diesen bekannten Verfahren werden Folgen von Datengruppen mit einem identischen Wert innerhalb einer Zeile (wobei eine Datengruppe ein Byte mit dem Grauwert eines Pixels ist) mit einem Code codiert, der (a) die Anzahl von Datengruppen in der Folge und (b) den Inhalt dieser Datengruppen enthält. Codierverfahren dieser Art werden allgemein als "Lauflängencodierung" bezeichnet. Die Lauflängencodierung wird auch häufig bei Datengruppen angewandt, die binäre Pixelwerte enthalten, wie beispielsweise aus US-A-4 748 512 hervorgeht.
- Wenn, etwa bei einer Textseite, die Pixelreihen viele Folgen mit identischem Wert enthalten, kann diese Codierung zu einer beträchtlichen Kompression der Bilddaten führen, und dies ist ein wünschenswertes Merkmal im Zusammenhang mit der Speicherung dieser Daten in einem Speicher oder im Zusammenhang mit ihrer Übermittlung, beispielsweise über ein Netzwerk.
- Wenn jedoch mit einem Scanner eine einheitlich graue Oberfläche in einem Bild aufgenommen wird, so werden infolge von Rauschen und Abweichungen im Scanner stets kleine Abweichungen in den gemessenen Pixelwerten vorhanden sein. Diese kleinen Abweichungen schränken die Codierbarkeit ein, wenn vollständige Übereinstimmung der entsprechenden Datengruppen verlangt wird.
- Es hat sich jedoch gezeigt, daß kleine Variationen in den Grauwerten häufig das Gesamtbild nicht sichtbar verändern. Indem kleine Variationen der Pixelwerte akzeptiert werden oder, mit anderen Worten, indem eine "näherungsweise" Gleichheit anstelle vollständiger Gleichheit akzeptiert wird, ist es deshalb nichtsdestoweniger möglich, eine Folge aus aufeinanderfolgenden Datengruppen, die "verrauschte" Grauwerte von Pixeln enthalten, codierbar zu machen. Als Ergebnis wird ein höheres Kompressionsverhältnis erreicht.
- Wenn eine Folge aufeinanderfolgender Datengruppen zu codieren ist und die Grauwerte in den Datengruppen eine "näherungsweise" lineare Funktion ihrer Position in der Folge bilden, so kann weiterhin diese gesamte Folge zu einem Code komprimiert werden, der diese lineare Funktion angibt. Dies führt zu einer weiteren Erhöhung des Verdichtungsverhältnisses. Verschiedene Arten der Codierung durch Verwendung linearer Näherungen werden beschrieben in P. E. Drapkin: "Video data compression", Supplement to IEEE Transactions on Aerospace and Electronic Systems, Band 2, Nr.4, Juli 1966, Seiten 392 - 400, in WO-A-87/04032 sowie in IBM Technical Disclosure Bulletin, Band 30, Nr.12 (Mai 1988), Seiten 71 - 73.
- Das Codierverfahren gemäß der Erfindung zieht auf eine noch weitere Erhöhung des mit bisher bekannten Codierverfahren erreichbaren Kompressionsverhältnisses. Allgemein wird dieses Ziel durch Ausnutzung der Tatsache erreicht, daß in vielen Bildern eine Korrelation der Pixelwerte nicht nur in der Richtung der Reihe (Zeile), sondern auch in Spaltenrichtung vorhanden ist. Spezieller vergleicht das erfindungsgemäße Verfahren für jede betreffende Datengruppe eines ersten Blockes den Inhalt dieser Datengruppe mit dem Inhalt der Datengruppe an derselben Position in dem Block, der dem ersten Block vorausgeht, und liefert ein Differenzsignal auf der Grundlage dieses Vergleichs. Die so gefundenen Differenzsignale werden dann durch lineare Näherung codiert, wobei der Code wenigstens die Anzahl von Datengruppen angibt.
- In der vorliegenden Erfindung umfaßt die Codierung durch lineare Näherung die folgenden Kriterien:
- - die Differenz zwischen den entsprechenden Datengruppen nimmt (näherungsweise linear) zu oder ab; dies gilt beispielsweise für einen Grauwert, der sich in Diagonalrichtung 2 ändert;
- - die entsprechenden Datengruppen unterscheiden sich stets um (näherungsweise) denselben Betrag; dies gilt für einen Grauwert, der sich in vertikaler Richtung ändert.
- Ein Spezialfall des zweiten Kriteriums ist eine Differenz gleich null; dieser Fall kann auch bei binären Pixelwerten angewandt werden, bei denen exakte Gleichheit gefordert ist. In solchen Fällen können die Datengruppen einen oder eine Anzahl von (z.B. acht) Pixelwerten enthalten. Diese spezielle Ausführungsform stellt eine sehr leistungsfähige Kompressionstechnik für binäre Bilddaten dar. Ein Datenverarbeitungsvorgang wird für beide Kriterien in den Ansprüchen und in der Beschreibung beschrieben.
- In bezug auf die Verwendung der Differenz zwischen entsprechenden Datengruppen in zwei aufeinanderfolgenden Bildzeilen als das zu codierende Element ist zu bemerken, daß das oben genannte US-Patent einen "vertikalen Wiederholungscode" verwendet. Dies geschieht jedoch nur in einem sehr beschränkten Ausmaß, nämlich durch Ersetzen von Zeilen, die mit der vorhergehenden Zeile vollständig identisch sind, durch einen Wiederholungscode. Dies ist ein verhältnismäßig ineffizientes Codierverfahren, da nur eine relativ kleine Wahrscheinlichkeit besteht, daß zwei aufeinanderfolgende Zeilen vollständig identisch sind.
- In einer weiteren Ausführungsform des erfindungsgemäßen Verfahrens wird die oben beschriebene Codierung mit bezug auf den vorausgegangenen Block mit einer Lauflängencodierung innerhalb eines Blockes kombiniert. Gemäß dieser Ausführungsform wird beginnend an einer Startposition in einem zu codierenden Block und jeweils für eine nachfolgende Position innerhalb des Blockes die Differenz zwischen dem Inhalt der Datengruppe an dieser Position und dem Inhalt der Datengruppe an derselben Position in dem vorausgehenden Block bestimmt und überprüft, ob die so bestimmte Abfolge der Differenzen näherungsweise eine lineare Funktion der Position im Block über alle Positionen von der Startposition an ist, und ein erster Code wird für die so gefundene Folge bestimmt. Ebenso wird beginnend mit derselben Startposition in dem zu codierenden Block und jeweils für eine nachfolgende Position in dem Block eine Überprüfung gemacht, ob die Abfolge der Inhalte der Datengruppen näherungsweise eine lineare Funktion der Position in dem Block über alle Positionen von der Startposition an ist, und ein zweiter Code wird für eine so gefundene Serie bestimmt, welcher zweite Code die Anzahl von Datengruppen in dieser Folge enthält. Schließlich wird diejenige der beiden Folgen, die den effizientesten Code liefert, ausgewählt und durch den für sie bestimmten Code ersetzt.
- Da das Codierverfahren gemäß der Erfindung stets auf die Datengruppen in dem Block zurückgreift, der dem zu codierenden Block vorausgeht, muß auch beim Decodieren stets von dem vorausgehenden Block Gebrauch gemacht werden. Beim Decodieren ist jedoch dieser vorausgehende Block das Ergebnis der Decodierung des Codes für diesen Block. Wenn dieses Ergebnis nicht genau identisch mit dem ursprünglichen Block ist, und dies ist bei der oben beschriebenen näherungsweisen Codierung zweifellos der Fall, so wird der decodierte Block Fehler enthalten, und infolge der Akkumulation von Decodierfehlern in aufeinanderfolgenden Blöcken treten zunehmend größere Abweichungen auf. Bei dem erfindungsgemäßen Verfahren wird dieses Problem dadurch gelöst, daß nach dem Codieren einer Folge der Originalinhalt der Datengruppe dieser Folge durch einen Inhalt ersetzt wird, der dem Ergebnis einer Codierung und anschließenden Decodierung der Datengruppen dieser Folge entspricht.
- Auf diese Weise werden die Decodierungsfehler niemals größer als die Ungenauigkeiten in dem Code innerhalb eines Blockes.
- Die Erfindung betrifft auch eine Vorrichtung zur Durchführung des erfindungsgemäßen Verfahrens, mit: Mitteln zum Vergleich des Inhalts einer Datengruppe, die in einem ersten Block liegt, mit dem Inhalt der Datengruppe an derselben Position in dem Block, der dem ersten Block vorausgeht, und zur Ausgabe eines Differenzsignals auf der Grundlage dieses Vergleichs, Mitteln zum Auffinden, innerhalb eines Blockes, einer Folge zusammenhängender Datengruppen, für die die genannten Differenzsignale näherungsweise eine lineare Funktion der Position in der Folge bilden, und einem Codegenerator zum Ersetzen einer so gefundenen Folge von zusammenhängenden Datengruppen durch einen Code, der die Anzahl von Datengruppen in der Folge enthält.
- Unter diesen Umständen kann die lineare Funktion, je nach der gewählten Art des Verfahrens, ihrerseits eine steigende oder fallende lineare Funktion oder eine konstante Funktion sein, möglicherweise mit dem Wert 0.
- Die Erfindung betrifft auch eine Vorrichtung zur Durchführung der oben beschriebenen Kombination aus Codierung anhand des vorausgegangenen Blockes und Lauflängencodierung innerhalb eines Blockes.
- Die Erfindung wird nunmehr anhand der beigefügten Zeichnungen erläutert, in denen zeigen:
- Fig. 1 ein Flußdiagramm der allgemeinen Form des erfindungsgemäßen Verfahrens;
- Fig. 2 ein Flußdiagramm einer Prozedur zum Auffinden einer Folge, die durch Lauflängencodierung codiert werden kann;
- Fig. 3 ein Flußdiagramm einer Prozedur zum Auffinden einer Folge, die durch Koinzidenzcodierung codiert werden kann;
- Fig. 4 ein Flußdiagramm einer Prozedur zur Auswahl und Kompilierung eines Lauflängencodes oder eines Koinzidenzcodes und zum Einschreiben dieses Codes in die Datei für das codierte Bild;
- Fig. 5 ein Flußdiagramm einer Prozedur zum Kompilieren eines Kopiercodes und zum Einschreiben dieses Codes in die Datei für das codierte Bild;
- Fig. 6A zusammen mit Figuren 6B und 6C ein Flußdiagramm einer Prozedur zum Auffinden einer Folge, die durch Lauflängencodierung codiert werden kann;
- Fig. 7 ein Flußdiagramm einer Prozedur zum Auffinden einer Folge, die durch Koinzidenzcodierung codiert werden kann;
- Fig. 8 ein Flußdiagramm einer Prozedur zum Auswählen und Kompilieren eines Lauflängencodes oder eines Koinzidenzcodes und zum Einschreiben dieses Codes in die Datei für das codierte Bild;
- Fig. 9 eine graphische Darstellung einer Anzahl von Datengruppen zur Erläuterung einer Näherungsprozedur gemäß der Erfindung;
- Fig. 10 ein Blockdiagramm einer erfindungsgemäßen Vorrichtung.
- In der nachfolgenden Beschreibung der Erfindung ist stets angenommen worden, daß die zu codierenden Daten in der Form von Bytes, die den Pixeln eines Bildes entsprechen und die - ebenso wie diese Pixel - in aufeinanderfolgenden Zeilen angeordnet sind, zugeführt werden oder in einem Speicher abgelegt sind. Die Bytes enthalten 8 Bits, die im Fall von binären Pixeln den Werten von acht benachbarten Pixeln und im Fall von mehrwertigen Pixeln (d.h. Pixeln mit einem Grauwert) einem Pixelwert entsprechen.
- Für die Codierung wird in jeder Zeile ein Suchlauf nach Serien von Bytes durchgeführt, die mit Hilfe eines einzigen Codes beschrieben werden können. Hierfür stehen drei Codierverfahren zur Verfügung, nämlich die Lauflängencodierung (Kombinieren einer Folge von identischen Bytes in einer Zeile), die Koinzidenzcodierung (in bezug auf Bytes, die sich an derselben Stelle in der vorausgehenden Zeile befinden) und die Kopiercodierung (Aufnahme der zu codierenden Bytes in den Code).
- Die hierbei in Betracht gezogenen Folgen von Bytes werden durch einen einzigen Code codiert, der aus zwei oder mehr Bytes besteht, die zeigen:
- - die Anzahl von Bytes in der Folge
- - das Codierverfahren
- - die weiterhin für die Decodierung benötigten Daten.
- Die Anzahl von Bytes und das Codierverfahren werden in dem ersten Codebyte kombiniert, indem die Werte, die dieses Byte annehmen kann, in drei Intervalle aufgeteilt werden, die jeweils einem Codierverfahren entsprechen, und indem die Anzahl von Bytes um einen festen Betrag erhöht wird, so daß ihr Wert in dem zugehörigen Intervall erscheint. Die 256 Werte, die mit 8 Bits dargestellt werden können, werden beispielsweise in die Intervalle 1 - 100, 101 - 200 und 200 - 256 aufgeteilt, die der Kopiercodierung, der Lauflängencodierung bzw. der Koinzidenzcodierung entsprechen. Die Anzahl von Bytes wird dann beispielsweise um den niedrigsten Wert des anwendbaren Intervalls minus 1 erhöht. Dieser Wert wird im folgenden als "OFF(CP)", "OFF(RL)" bzw. "OFF(CO)" bezeichnet. Die ersten Codebytes für eine Folge von 22 Bytes, die mit Lauflängencodierung codiert sind, enthalten dann den Wert 122, weil OFF(RL) in diesem Beispiel gleich 100 ist.
- Die weiterhin zum Decodieren benötigten Daten ändern sich je nach Codierverfahren und werden bei deren Beschreibung im einzelnen erörtert.
- Figur 1 ist ein Flußdiagramm der allgemeinen Form des erfindungsgemäßen Verfahrens. Es beruht auf einem Bild, das durch einen aus H Zeilen mit L Bytes gebildeten Datensatz beschrieben wird. In jedem Fall gibt k die Anzahl von noch zu codierenden Zeilen und j die Anzahl von noch zu codierenden Bytes innerhalb der Zeile an. Es werden drei Folgenzähler RL, CO und CP verwendet, die zu jeder Zeit die zu diesem Zeitpunkt bekannte Länge von codierbaren Bytefolgen enthalten. RL enthält die Länge der Lauflängen-Folge, CO diejenige der Koinzidenz-Folge und CP diejenige der Folge für Kopiercodierung.
- Am Beginn der Prozedur wird zunächst der Zähler CP auf null gesetzt (101) und k erhält den Wert H der Gesamtzahl der Zeilen von Bytes (102). Sämtliche Bytezeilen werden dann in einer Schleife verarbeitet.
- Wann immer die Codierung einer neuen Bytezeile beginnt (103), wird überprüft, ob das Ende des Bildes erreicht worden ist (104), in welch letzterem Fall die Codierung beendet wird. Anderfalls erhält j den Anfangswert L (105) und dann werden sämtliche Bytes in der Zeile nacheinander verarbeitet, indem j kontinuierlich um 1 vermindert wird (106). Während der Codierung einer Zeile wird stets ein Test durchgeführt, um zu überprüfen, ob das Ende der Zeile erreicht worden ist (107), und wenn dies tatsächlich der Fall ist, werden etwaige für die Kopiercodierung zurückgehaltene Bytes codiert und in der Datei für das codierte Bild abgelegt (108), wonach eine neue Zeile gestartet wird (103).
- Am Beginn einer neuen Zeile wird überprüft, ob das erste Byte Teil einer Folge ist, die durch Lauflängencodierung codiert werden kann, und wenn dies der Fall ist, wie viele Bytes diese Folge enthält (109). Dann wird überprüft, ob das erste Byte Teil einer Folge ist, die durch Koinzidenzcodierung codiert werden kann, und wenn dies der Fall ist, wieviele Bytes diese Folge enthält (110). Die Prozedur bei diesen Überprüfungen wird nachfolgend erläutert unter Bezugnahme auf Figuren 2 und 3, die sich auf den Fall von binären Pixeln beziehen, und auf Figuren 6 und 7, die den Fall mehrwertiger Pixel betreffen.
- Die gefundenen Folgenlängen werden mit einem Minimalwert (im folgenden als MIN(RL) für die Lauflängencodierung und MIN(CO) für die Koinzidenzcodierung bezeichnet) verglichen, um zu verhindern, daß sehr kurze Folgen mit der Lauflängencodierung oder Koinzidenzcodierung codiert werden (111, 112). Der Grund hierfür ist, daß die Kopiercodierung sehr kurzer Folgen weniger Bytes erfordert als eines der beiden anderen Codierverfahren, insbesondere, wenn mehrere sehr kurze Folgen aufeinanderfolgen; in diesem Fall können sie in einem Kopiercode kombiniert werden. Es ist zu bemerken, daß die Minimalwerte für die Lauflängencodierung und die Koinzidenzcodierung verschieden sind, weil die Längen dieser Codes selbst unterschiedlich sind.
- Wenn wenigstens eine der Folgen diese Minimalanforderungen erfüllt, so werden zunächst etwaige zurückgehaltene Bytes für die Kopiercodierung codiert und in der Datei für das codierte Bild abgelegt (113). Es wird dann das effizienteste Codierverfahren (Lauflänge oder Koinzidenz) bestimmt, wonach die Bytes codiert und in der Datei für das codierte Bild abgelegt werden (114).
- Wenn die Folgen keines ihrer Längenkriterien erfüllen, wird für das erste Byte die Kopiercodierung gewählt. Da noch nicht bekannt ist, ob das nächste Byte ebenfalls durch Kopiercodierung codiert werden muß, wird das erste Byte noch nicht codiert und abgelegt, sondern zurückgehalten (dies geschieht durch Erhöhen des Zählers CP um 1 (115)). Nur wenn eine Folge gefunden wurde, die mit Lauflängen- oder Koinzidencodierung codiert werden kann, oder wenn das Ende der Zeile erreicht ist, werden die zurückgehaltenen Bytes mit Kopiercodierung codiert und in der Datei für das codierte Bild abgelegt.
- Die gesamte Prozedur wird dann beginnend mit dem ersten noch nicht codierten Byte der aktuellen Zeile wiederholt (106).
- Figur 2 ist ein Flußdiagramm einer Prozedur zum Suchen einer Folge, die durch Lauflängencodierung codiert werden kann, für den Fall binärer Pixel, wobei die Bytes somit jeweils die Werte von 8 Pixeln enthalten. Diese Prozedur ist eine Ausfüllung des Blockes 109 in Figur 1.
- Diese Prozedur verwendet einen Zähler "Zeiger" zum fortlaufenden Anzeigen des zu verarbeitenden Bytes. Die Prozedur beginnt mit der Initialisierung des "Zeigers" an der Stelle des ersten noch nicht codierten Bytes (201). Der Folgenzähler RL wird dann auf 1 gesetzt (202). Die nachfolgenden Bytes werden dann nacheinander in einer Schleife verarbeitet. Die Schleife beginnt mit einer Überprüfung, ob die maximale Anzahl von nach einem Code zu codierenden Bytes schon erreicht worden ist (203), und einer Überprüfung, ob das Zeilenende erreicht worden ist (204). Wenn dies der Fall ist, wird der Test beendet, und es erfolgt ein Rücksprung zu der Hauptsequenz des Verfahrens in Figur 1. Andernfalls wird der Wert des nächsten Bytes (205) mit dem des Bytes an der Startposition (206) verglichen. Wenn diese Werte identisch sind, wird der Zähler RL um 1 erhöht (207), wonach das nächste Byte überprüft wird. Wenn die Werte nicht identisch sind, wird der Test beendet, und es erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1. Somit enthält RL stets die Anzahl von gefundenen Bytes, die durch Lauflängencodierung zu codieren sind.
- Figur 3 ist, wiederum, für den Fall binärer Pixel, ein Flußdiagramm einer Prozedur zum Suchen nach einer Folge, die durch Koinzidenzcodierung codiert werden kann. Diese Prozedur bildet eine Ausfüllung des Blockes 110 in Figur 1.
- Diese Prozedur verwendet einen Zähler "Zeiger" zum fortlaufenden Anzeigen des zu verarbeitenden Bytes.
- Die Prozedur beginnt mit der Initialisierung des Folgenzählers CO auf den Wert 0 (301), wonach eine Überprüfung (302) erfolgt, ob es eine vorausgegangene Zeile gibt, mit der die Bytes verglichen werden können. Wenn dies nicht der Fall ist (d.h. wenn die untersuchte Zeile die erste des Datensatzes ist), wird die Prozedur nicht gestartet, sondern es erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1. Der "Zeiger" wird dann auf die Position des ersten noch uncodierten Bytes initialisiert (303).
- Die nachfolgenden Bytes werden dann nacheinander in einer Schleife verarbeitet. Die Schleife beginnt mit einer Überprüfung, ob die maximale Anzahl von in einem Code zu codierenden Bytes schon erreicht worden ist (304), und einer Überprüfung, ob das Zeilenende erreicht worden ist (305). Wenn dies der Fall ist, wird die Überprüfung beendet, und es erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1.
- Andernfalls wird der Wert des nächsten Bytes (306) mit dem des Bytes an derselben Position in der vorausgehenden Zeile (307) verglichen. Wenn diese Werte identisch sind, wird der Zähler CO um 1 erhöht (308), wonach das nächste Byte überprüft werden kann. Wenn die Werte nicht identisch sind, wird der Test beendet, und es erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1. CO enthält somit stets die Anzahl von gefundenen Bytes, die mit Koinzidenzcodierung zu codieren sind.
- Figur 4 ist, wiederum für den Fall binärer Pixel, ein Flußdiagramm einer Prozedur zum Auswählen und Kompilieren eines Lauflängen- oder eines Koinzidenzcodes und zum Einschreiben dieses Codes in die Datei für das codierte Bild. Diese Prozedur, die eine Ausfüllung des Blockes 114 in Figur 1 ist, wird erreicht, nachdem festgestellt worden ist, daß wenigstens eine codierbare Folge von hinreichender Länge gefunden wurde.
- Zuerst wird eine Überprüfung gemacht, welches Codierverfahren am effizientesten ist, d.h. die wenigsten Codebytes im Verhältnis zur Anzahl der ursprünglichen Bytes ergibt. In diesem Beispiel ist dies implementiert als das Codierverfahren, mit dem die meisten Bytes codiert werden können, und somit bleibt die Länge der verschiedenen Codes selbst unbeachtet. Eine Erweiterung dieser Art liegt jedoch auf der Hand. Die Werte RL und CO werden für diese Auswahl verglichen (401). Es wird auch überprüft, ob die Folge für das ausgewählte Codierverfahren die zugehörigen minimalen Längenanforderungen erfüllt (402, 403). Wenn dies nicht der Fall ist, so wird letztlich das andere Codierverfahren gewählt.
- Wenn die Lauflängencodierung gewählt wird, wird der Code aus zwei Teilcodes zusammengesetzt (kompiliert), die jeweils ein Byte definieren. Der erste Teilcode, "Code(A)RL", enthält die Anzahl von Bytes der Folge minus die minimale Anzahl MIN(RL) (damit das für dieses Codierverfahren verfügbare Werteintervall maximal ausgenutzt werden kann) und plus den bereits erwähnten festen Betrag OFF(RL), der dafür sorgen soll, daß der Code in dem Intervall für die Lauflängencodierung erscheint (404). Der zweite Teilcode, "Code(B)RL", enthält den Wert der Bytes in der codierten Folge (405). Der kompilierte Code wird dann der Datei für das codierte Bild hinzugefügt (406). Nachdem der Zeiger j auf das zuletzt codierte Byte gesetzt worden ist (407), erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1.
- Beim Decodieren wird die Folge rekonstruiert, indem das zweite Byte so oft wiederholt wird, wie sich aus dem ersten Byte ergibt.
- Wenn die Koinzidenzcodierung gew:hlt wird, wird der Code durch ein Byte "CodeCO" gebildet, das (408) die Anzahl von Bytes der Folge minus die minimale Anzahl MIN(CO) und plus dem bereits erwähnten festen Betrag OFF(CO) enthält, der dafür sorgen soll, daß der Code in dem Intervall für die Koinzidenzcodierung erscheint. Dieser Code wird dann der Datei für das codierte Bild hinzugefügt (409). Nachdem der Zeiger j auf das letzte codierte Byte gesetzt worden ist (410), erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1.
- Beim Decodieren wird die Folge rekonstruiert, indem so oft, wie sich aus dem Codebyte ergibt, das entsprechende Byte aus der vorhergehenden Zeile übernommen wird.
- Figur 5 ist ein Flußdiagramm einer Prozedur zum Kompilieren eines Kopiercodes und zum Einschreiben dieses Codes in die Datei für das codierte Bild. Diese Prozedur bildet eine Ausfüllung der Blöcke 108 und 113 in Figur 1.
- Wegen der Art, in der die zu codierenden Bytes in dieser Weise gesammelt werden, ist es nicht ausgeschlossen, daß diese Prozedur aufgerufen wird, wenn keine zu codierenden Bytes vorhanden sind. Die Prozedur beginnt deshalb mit einer Überprüfung dieser Bedingung (501). Wenn tatsächlich keine zu codierenden Bytes vorhanden sind, erfolgt ein sofortiger Rücksprung zur Hauptsequenz des Verfahrens in Figur 1.
- Wenn die Anzahl von zurückgehaltenen Bytes größer ist als die maximale Anzahl MAX(CP), die in dem Code wiederzugeben ist (Test 502), so werden die zurückgehaltenen Bytes zunächst in Blöcken der maximalen Größe codiert und der Datei für das codierte Bild hinzugefügt, bis die Anzahl der noch zu codierenden zurückgehaltenen Bytes unter das Maximum abgenommen hat. Wenn die Anzahl von zu codierenden Bytes größer ist als MAX(CP), wird somit ein Block von MAX(CP) Bytes codiert.
- Der Code wird aus zwei Teilcodes zusammengesetzt (kompiliert), deren erster "Code(A)CP" ein Byte einnimmt (503). Dieser erste Teilcode enthält die Anzahl von Bytes der Folge minus die minimale Anzahl MIN(CP) (die in diesem Beispiel den Wert 1 hat) und plus den zuvor erwähnten festen Betrag OFF(CP), der dafür sorgen soll, daß der Code in dem Intervall für die Kopiercodierung erscheint, und der in diesem Beispiel den Wert 0 hat.
- Der zweite Teilcode "Code(B)CP" enthält die Werte sämtlicher Bytes in der codierten Folge und hat deshalb eine Länge gleich dieser Anzahl von Bytes, MAX(CP) (504). Nach der Kompilierung des Codes wird er in die Datei für das codierte Bild eingeschrieben (505), und der Zähler, der die Anzahl der durch Kopiercodierung zu codierenden Bytes enthält, wird um den Wert MAX(CP) vermindert (506). Die Prozedur wird dann mit dem Rest der zu codierenden Bytes wiederholt.
- Wenn die Anzahl CP der zu codierenden Bytes kleiner ist als die maximale Anzahl MAX(CP), wird eine ähnliche Prozedur mit der kleineren Anzahl von Bytes ausgeführt (507, 508, 509), und nachdem der Zähler CP auf null gesetzt worden ist (510), erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1.
- Beim Decodieren wird die Folge rekonstruiert, indem die auf das erste Codebyte folgenden Bytes wiedergegeben werden. Deren Anzahl folgt aus dem ersten Codebyte.
- Das obige Verfahren ist sehr geeignet zum Codieren eines Bildes mit binären Pixeln, denn wenn Pixel nur zwei Werte haben können, gibt es eine relativ große Chance, daß zwei Pixel denselben Wert haben. Das Verfahren ist darüber hinaus im Prinzip auch zum Codieren von mehrwertigen Pixeln (Pixeln mit Grauwerten) verwendbar. Im folgenden wird von der herkömmlichen praktischen Technik ausgegangen, wonach der Wert eines Pixels durch ein Byte (8 Bits) wiedergegeben wird. Es wird außerdem angenommen, daß die betreffenden Bytes in Zeilen entsprechend der physikalischen Anordnung der Pixel in dem Bild angeordnet sind.
- Wenn das zuvor verwendete Kriterium der Gleichheit von Pixelwerten wahllos übernommen wird, ist das Verfahren verhältnismäßig ineffizient. In dem oben beschriebenen Fall von einem Byte pro Pixel sind 256 Grauwerte möglich, und folglich gibt es nur eine geringe Chance, daß zwei Pixel genau denselben Wert haben. Kleine Unterschiede in den Pixelwerten können leicht auch schon in einer gleichmäßig grauen Oberfläche auftreten, beispielsweise aufgrund von Rauschen. Das auf Gleichheit von Bytes beruhende Codierverfahren würde in der Praxis nur eine geringe Kompression ergeben.
- Da sich gezeigt hat, daß sehr kleine Unterschiede in den Grauwerten in einem Druck kaum oder gar nicht sichtbar sind (das menschliche Auge ist für größere Sprünge in den Grauwerten wesentlich empfindlicher als für kleinere Sprünge), ist es nicht notwendig, vollständige Übereinstimmung zu verlangen. Es genügt, Übereinstimmung innerhalb gewisser Grenzen zu verlangen. Auf diese Weise wird es möglich, im Fall der Lauflängencodierung die Werte einer Folge aus aufeinanderfolgenden Pixeln mit Hilfe einer geometrischen Funktion zu codieren, die keine vollständige Übereinstimmung mit dieser Funktion, sondern Übereinstimmung innerhalb gewisser Grenzen erfordert.
- Andererseits ist es im Fall von mehrwertigen Pixeln möglich, das Konzept der Koinzidenzcodierung in der Form einer Codierung der Differenz zwischen den Werten entsprechender Pixel in der aktuellen Zeile und der vorausgehenden Zeile zu implementieren. Auf diese Weise wird aus der Koinzidenzcodierung für Grauwerte eine Lauflängencodierung für die genannte Differenz. Die Erfindung sieht eine Approximation für aufeinanderfolgende Pixelwerte (jeweils durch ein Byte repräsentiert) durch eine lineare Funktion vor. Im folgenden werden zwei Varianten hiervon beschrieben. In der ersten Vanante kann die Richtung der linearen Funktion an die zu approximierenden Werte angepaßt werden, während in der zweiten Variante die lineare Funktion eine konstante Funktion ist. Beide Varianten können sowohl für eine Lauflängencodierung von Pixelwerten in einer Zeile als auch für eine Lauflängencodierung der Differenz zwischen entsprechenden Bytes der aktuellen Zeile und der vorhergehenden Zeile (verallgemeinerte Koinzidenzcodierung) verwendet werden, doch in dem folgenden Beispiel wird jede für eine der beiden verwendet.
- Ausgehend von einem ersten Byte bilden die beiden Varianten ein Akzeptanzintervall, in dem das nächste Byte liegen muß, wenn die Approximation erfolgreich sein soll, sowie ein Approximationsintervall. Das Akzeptanzintervall konvergiert mit der Verarbeitung einer zunehmenden Anzahl von Bytes gegen eine vorgegebene Breite "err" und ist stets so gelegen, daß all die verarbeiteten Bytes darin enthalten sind. Das Approximationsintervall divergiert gleichzeitig gegen dieselbe Breite "err" und nimmt schließlich dieselbe Position wie das Akzeptanzintervall ein.
- In der ersten Variante wird die Richtung anfänglich bestimmt, indem die lineare Funktion durch die beiden ersten zu codierenden Bytes gelegt wird, doch sobald ein nachfolgendes Byte gefunden wird, das nicht mehr innerhalb des Akzeptanzintervalls liegt, wird die Approximation mit einer neuen Richtung wiederholt. Diese neue Richtung wird gefunden, indem die alte Richtung korrigiert wird mit der Differenz zwischen dem Wert des nicht mehr innerhalb des Akzeptanzintervalls liegenden Bytes und der nächstliegenden Grenze des Akzeptanzintervalls, dividiert durch die Anzahl von Bytes, die das nicht mehr im Akzeptanzintervall liegende Byte von dem Anfangsbyte entfernt ist. Wenn diese Richtungsänderung nicht dazu führt, daß irgendeines der bereits verarbeiteten Bytes aus dem Akzeptanzintervall herausfällt, so hat die Anzahl der durch diese neue Richtung approximierbaren Bytes um 1 zugenommen, weil das letzte Byte nunmehr ebenfalls innerhalb des Akzeptanzintervalls liegt. Anderfalls wird die Anzahl approximierbarer Bytes kleiner, und die neue Approximation ist deshalb weniger erfolgreich als die vorhergehende. In diesem Fall wird die vorhergehende Approximation für die Codierung verwendet.
- Die lineare Funktion mit der gefundenen Richtung, die durch die Mitte des Approximationsintervalls des zuletzt approximierten Bytes geht, wird nun als Approximation gewählt.
- Figur 9 gibt ein Beispiel für den Effekt der ersten Variante. Für eine Anzahl aufeinanderfolgender Pixel, die mit einer laufenden Nummer von 1 bis 7 bezeichnet sind, ist der Wert graphisch durch ein x dargestellt. Die maximalen und minimalen Grenzwerte sind jeweils durch einen kleinen Kreis bzw. ein kleines Quadrat angegeben. Sie definieren ein Approximationsintervall, dessen Anderung von einem Pixel zum anderen als eine durchgehende Linie eingezeichnet ist. Das Akzeptanzintervall, das einerseits durch den maximalen Grenzwert minus eine vorgegebene Spanne err und andererseits durch den minimalen Grenzwert plus dieselbe Spanne err definiert ist, ist durch zwei waagerechte Linien angegeben; ihr Verlauf für aufeinanderfolgende Pixel ist durch gestrichelte Linien dargestellt. Die Verbindungsrichtung vom Wert des ersten Pixels zu dem des zweiten Pixels wird als die Approximationsrichtung genommen.
- Man findet das Akzeptanzintervall für ein bestimmtes Pixel, indem man das Akzeptanzintervall des vorhergehenden Pixeis längs der Approximationsrichtung bewegt. Wenn der Wert des nächsten Pixels innerhalb seines Akzeptanzintervalls aber außerhalb des in Approximationsrichtung bewegten Approximationsintervalls liegt (d.h. oberhalb des maximalen Grenzwertes oder unterhalb des minimalen Grenzwertes), so wird der zugehörige Grenzwert gleich dem Wert dieses Pixels gemacht, so daß das Akzeptanzintervall ebenfalls geändert wird, weil es an die Grenzwerte gekoppelt ist. In dem Beispiel nach Figur 9 liegt der Wert des siebten Pixels nicht mehr in seinem Akzeptanzintervall, so daß die Approximation für die ersten sechs Pixel gilt. Die lineare Approximationsfunktion wird nun durch die gerade Linie gebildet, die durch die Mitte des Approximationsintervalls des sechsten Pixels geht und deren Richtung die Approximationsrichtung ist. In der Zeichnung ist diese Linie als eine strichpunktierte Linie (90) eingezeichnet.
- Es wird nunmehr überprüft, ob mit einer anderen Approximationsrichtung mehr Pixel beschrieben werden können. Dies ist in Figur 9 nicht mehr gezeigt, weil diese sonst undeutlich werden würde. Die neue Approximationsrichtung wird berechnet, indem die Differenz zwischen dem Wert des siebten Pixels und der oberen Grenze seines Akzeptanzintervalis durch 6 dividiert wird, das Divisionsergebnis zu dem Wert des zweiten Pixels addiert wird und die Verbindungslinie zwischen dem so gefundenen Punkt und dem ersten Pixel gezogen wird. Die neue Approximationsrichtung ist die Richtung dieser Verbindungslinie. Die gesamte Approximationsprozedur wird dann mit dieser neuen Approximationsrichtung wiederholt. Wenn es auf diese Weise möglich ist, mehr Pixel zu beschreiben, wird wieder eine neue Approxirnationsrichtung bestimmt, und die Approximationsprozedur wird wiederholt. Wenn mit einer neuen Approximationsrichtung eine gleiche Anzahl oder weniger Pixel beschrieben werden, wird die Approximation beendet, und die zuletzt gefundene Approximation wird als adäquat angenommen.
- Die zweite Variante der Approximation ist eine vereinfachte Form der Approximation gemäß der ersten Variante. Dabei ist die ausgewählte Approximationsfunktion die konstante Funktion, die durch die Mitte des Approximationsintervalls des letzten approximierten Bytes geht. Die Prozedur ist mit der nach der ersten Variante weitgehend identisch, mit der Ausnahme, daß keine Approximationsrichtung berechnet wird und deshalb keine Iteration mit verschiedenen Approximationsrichtungen stattfindet.
- Für den Fall mehrwertiger Pixel, wobei die Bytes jeweils den Wert eines Pixels haben, zeigen Figuren 6A, 6B und 6C zusammen ein Flußdiagramm einer Prozedur zum Suchen einer Folge, die mit Lauflängencodierung in dem erweiterten Sinn codiert werden kann (Approximation mit einer linearen Funktion, in diesem Fall nach der ersten Variante des Approximationsverfahrens). Das Diagramm nach Figuren 6A - 6C bildet die Ausfüllung des Blocks 109 in Figur 1.
- Nach Initialisierung des Zählers RL (auf den Wert 1; Schritt 601) und des Zeigers (auf die Position des ersten zu codierenden Bytes; Schritt 602) wird eine Variable "Offset" gebildet, deren Wert gleich der Wertedifferenz zwischen dem Byte an der Startposition und dem nächsten Byte ist (603). Dieser "Offset" bestimmt die Richtung der linearen Approximationsfunktion. Eine Variable "Startwert" erhält dann den Wert des Bytes an der Startposition (604). Dieser "Startwert" bestimmt die Position der linearen Approximationsfunktion.
- Die Werte von "Offset" und "Startwert" sind provisorische Werte, mit denen ein erster Approximationsversuch ausgeführt wird. Die Ergebnisse dieses ersten Approximationsversuchs, die als korrigierte Werte für "Offset" und "Startwert" ausgedrückt werden, werden wieder für einen Approximationsversuch wie oben beschrieben verwendet.
- Diese aufeinanderfolgenden Approximationsversuche werden in einer Schleife durchgeführt, die jetzt folgt. Die Schleife beginnt mit einer Initialisierung eines internen Zählers RLX, der angibt, wieviele Bytes mit dieser Approximation codiert werden können (605). Jede Approximationsschleife enthält wieder eine innere Schleife zum Zählen der Anzahl von codierbaren Bytes. In dieser inneren Schleife wird das zu verarbeitende Byte stets durch eine aktuelle Variable "Zeiger2" angegeben. Vor dem Eintritt in die Schleife wird "Zeiger2" zunächst auf die Position des ersten zu codierenden Bytes eingestellt (606), und ein maximaler Grenzwert "UL" und ein minimaler Grenzwert "LL" werden auf den Wert des Bytes an der Startposition plus den Wert "0ffset" gesetzt. Bei dem ersten Approximationsdurchgang entspricht dies dem Wert des ersten Bytes nach der Startposition selbst. Die maximalen und minimalen Grenzwerte werden zur Definition eines Approximationsintervalls verwendet, das später als Grundlage für die Approximationsfunktion dienen wird.
- Die innere Schleife beginnt mit einer Überprüfung, ob die maximale Anzahl von mit einem Code zu codierenden Bytes erreicht worden ist (608) und ob das Zeilenende erreicht worden ist (609), in welchen Fällen der Approximationsversuch beendet wird und die Prozedur zu dem nachfolgend beschriebenen Bewertungsschritt verzweigt.
- Für das nächste Byte (610) wird überprüft, ob der Wert dieses Byte innerhalb des Akzeptanzintervalls liegt, welches Akzeptanzintervall definiert ist durch "LL+err" und "UL-err", wobei "err" eine vorgegebene Spanne ist (611, 612). Wenn dies der Fall ist, wird ein Zähler RLX um 1 erhöht (613), andernfalls wird dieser Approximationsversuch beendet, und die Prozedur überspringt den zuvor erwähnten Bewertungsschritt.
- Wenn der Wert des angegebenen Bytes innerhalb des Akzeptanzintervalis liegt, wird dann überprüft, ob dieser Wert auch innerhalb des durch LL und UL definierten Approximationsintervalls liegt (614, 616). Wenn dies nicht der Fall ist, so wird der Wert von LL oder UL zunächst auf den Wert des Bytes verschoben (615, 617), so daß dieses Byte ebenfalls innerhalb des Approximationsintervalls zu Liegen kommt. Es versteht sich, daß sich auf diese Weise das Approximationsintervall und das Akzeptanzintervall letztlich einander annähern und auch die Breite von "err" annehmen. Wenn der Wert des angegebenen Bytes innerhalb des Approximationsintervalls liegt, wird die Behandlung des nächsten Bytes in der Zeile begonnen, nachdem die Werte von "LL" und "UL" zunächst angepaßt worden sind, indem sie um "Offset" erhöht worden sind (618).
- In dem Bewertungsschritt wird überprüft, ob es angemessen ist, einen neuen Approximationsversuch mit neuen Anfangswerten durchzuführen. Zu diesem Zweck wird die soeben gefundene Lauflänge RLX mit einer Lauflänge RL verglichen, die in einer etwaigen vorherigen Approximation gefunden wurde (619). Wenn das gefundene RLX größer ist als RL oder wenn es keine vorherige Approximation gibt (im letzteren Fall hat RL noch den Anfangswert 1), wird ein neuer Versuch mit angepaßten Anfangswerten gemacht. In den anderen Fällen wird angenommen, daß die vorherige Approximation die Beste war, und die Prozedur verzweigt zurück zur Hauptsequenz des Verfahrens in Figur 1, unter Übernahme der Werte von RL, "Offset" und "Startwert" aus der vorherigen Approximation. "Startwert", "Offset" und RL beschreiben die Approximationsfunktion vollständig.
- Wenn die abgeschlossene Approximation als besser erscheint als die vorherige, wird der Wert von RL gleich dem neu gefundenen Wert RLX gemacht (620), und die Approximationsfunktion wird so auiwärts verschoben, daß sie durch die Mitte des Approximationsintervalls des letzten durch die Approximation beschriebenen Bytes geht. Dies führt zu einem neuen Wert für "Starwert" (621).
- Bevor für einen neuen Approximationsversuch ein neuer Wert für "Offset" berechnet wird, wird nun zunächst überprüft, ob mit der gerade beendeten Approximation das Zeilenende oder die maximale Anzahl von mit einem Code zu codierenden Bytes erreicht worden ist (622). Wenn dies der Fall ist, so ist es nutzlos, einen besseren Approximationsversuch zu unternehmen, und es erfolgt ein Rücksprung zur Hauptsequenz des Verfahrens in Figur 1 mit den Ergebnissen der letzten Approximation.
- In den anderen Fällen wird die Approximationsfunktion so weit um den aktuellen Startwert gedreht, daß das erste Byte, das in dem gerade abgeschlossenen Approximationsversuch nicht mehr akzeptiert wurde, in das zugehörige Akzeptanzintervall zu Liegen kommt. Dies wird erreicht durch Korrigieren des Wertes von "Offset" mit der Differenz zwischen dem Wert dieses Bytes und der oberen Grenze seines Akzeptanzintervalls, normiert auf die Entfernung zwischen zwei aufeinanderfolgenden Pixeln (623, 624, 625). Dann wird ein neuer Approximationsversuch mit den neuen Werten von RL, "Startwert" und "Offset" durchgeführt.
- Figur 7 beschreibt für den Fall mehrwertiger Pixel die Suche nach einer Folge, die durch Koinzidenzcodierung im erweiterten Sinne codiert werden kann (Approximation der Differenz zwischen den Bytes und den entsprechenden Bytes in der vorherigen Zeile mit einer linearen Funktion, in diesem Fall nach der zweiten Variante des Approximationsverfahrens). Das Diagramm nach Figur 7 bildet eine Ausfüllung des Blockes 110 in Figur 1.
- Diese Prozedur beginnt mit der Initialisierung des Zählers "C0" auf den Wert 0 (701), mit nachfolgender Überprüfung, ob die Zeile aus zu codierenden Bytes die erste Zeile im Datensatz ist (702). Wenn dies der Fall ist, so daß es folglich nicht möglich ist, die Bytes dieser Zeile mit den Bytes einer vorherigen Zeile zu vergleichen, so wird die Prozedur sofort abgebrochen. Eine aktuelle Variable "Zeiger" wird dann auf die Position vor dem ersten zu codierenden Byte initialisiert (703). Für das erste zu approximierende Byte werden ein maximaler Grenzwert "UL" und ein minimaler Grenzwert "LL" bestimmt, in dem beide gleich der Differenz zwischen dem Wert dieses Bytes und dem Wert des Bytes an derselben Stelle in der vorhergehenden Zeile gemacht werden (704). Die maximalen und minimalen Grenzwerte schließen ein Approximationsintervall ein, das später als Grundlage für die Approximationsfunktion dienen wird.
- Für die fortlaufend folgenden Bytes wird dann in einer Schleife überprüft, ob die Differenz zwischen ihrem Wert und dem Wert des entsprechenden Bytes in der vorhergehenden Zeile mit einer konstanten Funktion approximiert werden kann. Die Schleife beginnt mit einer Überprüfung, ob die maximale Anzahl von mit einem Code zu codierenden Bytes noch nicht erreicht worden ist (705) und ob das Zeilenende noch nicht erreicht worden ist (706), in welchen Fällen der Approximationsversuch beendet wird.
- Der Wert des nächsten Bytes (707) wird dann mit dem des Bytes an derselben Stelle in der vorhergehenden Zeile verglichen (708). Wenn die Differenz "diff" im Akzeptanzintervall liegt, das definiert ist durch LL + err und UL - err (wobei err eine vorgegebene Spanne ist; 709, 710), so wird der Zähler CO um 1 erhöht (711), andernfalls wird der Approximationsversuch beendet.
- Wenn der Wert des angegebenen Bytes innerhalb des Akzeptanzintervalls liegt, wird dann überprüft, ob dieser Wert auch in dem Approximationsintervall liegt, das durch LL und UL definiert ist (712, 714). Wenn dies der Fall ist, schreitet die Prozedur zum nächsten Byte fort. Andernfalls wird der Wert von LL bzw. der Wert von UL zunächst auf den Wert des Bytes verschoben, so daß dieses Byte ebenfalls in das Approximationsintervall zu liegen kommt (713, 715). Es versteht sich, daß auf diese Weise das Approximationsintervall und das Akzeptanzintervall sich schließlich einander annähern und sich auch einer Breite gleich err nähern.
- Bei Beendigung des Approximationsversuchs wird der Approximationswert "Verschiebung" berechnet, indem der Mittelwert aus den maximalen und dem minimalen Grenzwerten des letzten durch die Approximation beschriebenen Bytes bestimmt wird (716). Die Prozedur kehrt dann zur Hauptsequenz des Verfahrens in Figur 1 zurück. "Verschiebung" und CO beschreiben die Approximationsfunktion vollständig, wobei der Wert der so codierten Bytes gefunden wird, indem der Wert "Verschiebung" zu dem Wert der entsprechenden Bytes in der vorhergehenden Zeile hinzuaddiert wird.
- Figur 8 beschreibt - wieder für den Fall mehrwertiger Pixel - die Auswahl und Kompilierung eines Lauflängen- oder eines Koinzidenzcodes und das Einschreiben dieses Codes in die Datei für das codierte Bild. Die Prozedur wird erreicht, nachdem festgestellt worden ist, daß wenigstens eine codierbare Folge mit geeigneter Länge gefunden wurde. Das Diagramm nach Figur 8 bildet die Ausfüllung des Blockes 114 in Figur 1.
- Zunächst wird überprüft, welches Codierverfahren zum Codieren der meisten Bytes verwendet werden kann, indem die Werte von RL und CO verglichen werden (801). Alternativ wäre es auch möglich, hier die Länge des Codes selbst zu berücksichtigen, so daß man die maximale Effizienz erhält.
- Sofern das Codierungsergebnis der Lauflängencodierung nach Figuren 6A - 6C gewählt wird, wird der Code aus drei Teilcodes zusammengesetzt, die jeweils ein Byte einnehmen. Der erste Teilcode "Code(A)RL", enthält die Anzahl von Bytes der Folge minus die minimale Anzahl MIN(RL) (um das für dieses Codierverfahren verfügbare Werteintervall maximal zu nutzen) plus den zuvor erwähnten festen Betrag OFF(RL), der dazu dient, den Code in dem Intervall für die Lauflängencodierung erscheinen zu lassen (802).
- Der zweite Teilcode "Code(B)RL", enthält den Startwert der gefundenen linearen Funktion, mit der die Bytes in der Folge approximiert werden (803). Der dritte Teilcode, "Code(C)RL" enthält die Richtung der Approximationsfunktion in Form des Wertes "Offset" (804). Der kompilierte Code wird dann zu der Datei für das codierte Bild hinzugefügt (805).
- Beim Decodieren wird die Folge rekonstruiert, indem für eine Anzahl von Bytes, die sich aus dem ersten Byte ergibt, der Wert in Übereinstimmung mit der linearen Funktion berechnet wird, die in dem zweiten und dem dritten Byte gekennzeichnet ist.
- Der Zeiger j wird dann zu dem letzten codierten Byte bewegt (806), und die Originalwerte der Bytes im Speicher werden durch die sich aus der Codierung ergebenden Werte ersetzt, so daß die letzteren Werte als eine Referenz für eine mögliche Koinzidenzcodierung von Bytes in der nächsten Zeile dienen können (807). Dadurch ist es nicht möglich, daß sich Fehler infolge der beim Codieren vorgenommenen Näherung akkumulieren.
- Sofern das Ergebnis der Koinzidenzcodierung nach Figur 7 gewählt wird, wird der Code aus zwei Teilcodes zusammengesetzt, die jeweils ein Byte einnehmen. Der erste Teilcode, "Code(A)CO", enthält die Anzahl von Bytes in der Folge minus die minimale Anzahl MIN(CO) plus den zuvor erwähnten festen Betrag OFF(CO), der dazu dient, den Code in dem Koinzidenzcodierungsintervall erscheinen zu lassen (808). Der zweite Teilcode, "Code(B)CO", enthält den bei der Approximation gefundenen Wert "Verschiebung" (809). Der kompilierte Code wird dann der Datei für das codierte Bild hinzugefügt (810).
- Beim Decodieren wird die Folge rekonstruiert, indem so oft, wie sich aus dem ersten Codebyte ergibt, das entsprechende Byte aus der vorherigen Zeile plus den durch das zweite Codebyte gegebenen Wert "Verschiebung" übernommen wird.
- Der Zeiger j wird dann zu dem letzten codierten Byte bewegt (811), und wiederum werden die Originalwerte der Bytes im Speicher durch die sich aus der Codierung ergebenden Werte ersetzt (812).
- Schließlich kehrt die Prozedur zur Hauptsequenz des Verfahrens in Figur 1 zurück.
- Das Kompilieren eines Kopiercodes und das Einschreiben dieses Codes in die Datei für das codierte Bild erfolgt genau in derselben Weise wie bei binären Bytes (siehe Figur 5) und wird deshalb nicht noch einmal beschrieben.
- Figur 10 ist ein Blockdiagramm einer Vorrichtung gemäß der Erfindung. Diese Vorrichtung hat eine Zufuhrleitung 1 zur Zufuhr von Bilddaten zu der Vorrichtung, z.B. von einem Scanner oder einem Massenspeicher (nicht gezeigt). Die Zufuhrleitung ist an einen Speicher 2 angeschlossen, zur Speicherung wenigstens einiger der Bilddaten, z.B. von zwei Zeilen von Datengruppen, wobei der Ausdruck "Datengruppen" beispielsweise Bytes bezeichnet, die Pixelwerte enthalten.
- Eine Zeigereinheit 3 ist an den Speicher 2 angeschlossen. Eine Zähleinheit 4 ist ebenfalls an den Speicher 2 angeschlossen. Die Zähleinheit 4 enthält eine Vergleichseinheit 5 und eine erste Aufklärungseinheit 6, die miteinander verbunden sind und beide an die Verbindung zwischen der Zähleinheit 4 und dem Speicher 2 angeschlossen sind. Die Zähleinheit enthält auch eine zweite Aufklärungseinheit 7, die ebenfalls an die Verbindung zwischen der Zähleinheit 4 und dem Speicher 2 angeschlossen ist. Innerhalb der Zähleinheit 4 sind die Aufklärungseinheiten 6 und 7 mit einer Bewertungseinheit 8 verbunden. Die Zähleinheit 4 ist mit einem Codegenerator 9 verbunden. Eine Steuereinheit 10 ist mit der Zeigereinheit 3, der Zähleinheit 4 und dem Codegenerator 9 verbunden. Der Codegenerator 9 hat auch eine Ausgangsleitung 11 zur Ausgabe von codierten Bilddaten beispielsweise an einen Massenspeicher (nicht gezeigt).
- Die Einheiten 3 bis 10 sind Programm-Module in einem Computer, könnten jedoch auch die Form von Hardware-Schaltungen haben.
- Die Vorrichtung arbeitet wie folgt: Die Bilddaten werden von außen in den Speicher 2 eingegeben und dort unter Speicheradressen entsprechend der Position abgelegt, die die Pixel, deren Werte sie enthalten, in dem Bild haben. Zum Codieren ist es nicht nötig, mehr als zwei Zeilen von Dateneinheiten zu speichern: Die die zu codierende Zeile und die dieser vorausgehende Zeile (wenn es eine solche gibt).
- Dann beginnt die Codierung. Sie wird nachfolgend unter der Annahme beschrieben, daß die Codierung bereits zu einem gewissen Grad fortgeschritten ist und ein Teil einer Zeile bereits codiert worden ist. Auf einen Befehl der Steuereinheit 10 gibt die Zeigereinheit 3 die erste noch uncodierte Datengruppe der zu codierenden Zeile an, und dann, wiederum auf einen Befehl der Steuereinheit 10, überprüft die Zähleinheit 4, ob die der von der Zeigereinheit 3 angegebenen Position folgenden Datengruppen zusammen mit der angegebenen Datengruppe eine codierbare Folge bilden, entweder eine lauflängencodierbare Folge, in welchem Fall die Operationen nach Figur 2 oder Fig. 6A - 6C von der zweiten Aufklärungseinheit 7 ausgeführt werden, oder eine koinzidencodierbare Folge, in welchem Fall die Operationen nach Figur 3 oder Figur 7 von der ersten Aufklärungseinheit 6 durchgeführt werden, die dabei von durch die Vergleichseinheit 5 berechneten Differenzen zwischen den entsprechenden Datengruppen in den beiden Zeilen Gebrauch macht.
- Die Endresultate der beiden Aufklärungseinheiten 6 und 7 werden an die Bewertungseinheit 8 weitergeleitet, die die Längen der gefundenen Folgen mit den vorgegebenen Minimallängen vergleicht. Wenn keine Folge dieses Kriterium erfüllt, meldet die Bewertungsschaltung 8 dies an die Steuereinheit 10, die einen Zähler für die durch Kopiercodierung zu codierenden Datengruppen um 1 erhöht und dann die Zeigereinheit 3 anweist, die nächste Datengruppe im Speicher 2 anzugeben.
- Wenn wenigstens eine der beiden gefundenen Folgen das zugehörige Minimallängenkriterium erfüllt, so übermittelt die Bewertungsschaltung 8 die gefundenen Längen an den Codegenerator 9 und meldet dies an die Steuereinheit 10. Die Letztere gibt dann dem Codegenerator 9 den Befehl, zunächst etwaige noch wartende und für die Kopiercodierung vorgesehene Datengruppen in einen Code umzuwandeln (nach der Prozedur gemäß Figur 5) und dann die Folge auszuwählen, die am effizientesten codiert werden kann, und diese in einen Code umzuwandeln (nach der Prozedur gemäß Figur 4 oder 8). Die Codes werden von der Vorrichtung über die Ausgangsleitung 11 ausgegeben.
- Wann immer der Codegenerator 9 eine Folge von Datengruppen in einen Code umgewandelt hat, erzeugt er eine Folge neuer Datengruppen aus dem Code und legt sie im Speicher 2 an der Stelle der gerade codierten Datengruppen ab, um sicherzustellen, daß die richtigen Vergleichswerte für das Codieren der nächsten Zeile von Datengruppen verwendet werden. Beim Decodieren sind selbstverständlich die ursprünglichen Datengruppen nicht mehr verfügbar, und es ist deshalb nur möglich, die decodierten Datengruppen zu verwenden.
- Wenn der Codegenerator 9 die Codierung beendet hat, meldet er dies an die Steuereinheit 10, die dann den Zeiger 3 auf die erste noch uncodierte Datengruppe setzt, wonach die gesamte oben beschriebene Prozedur wiederholt wird.
- Weitere Einzelheiten der Arbeitsweise der Vorrichtung ergeben sich unmittelbar aus der Beschreibung des Verfahrens und werden deshalb hier nicht näher beschrieben.
- Die obige Beschreibung ist nur ein Beispiel für eine Ausführungsform der Erfindung, wie sie in den Ansprüchen angegeben ist. Dem fachkundigen Leser ist klar, daß innerhalb des Rahmens der Ansprüche zahlreiche andere Ausführungsformen möglich sind.
Claims (10)
1. Verfahren zur Codierung von digitalen Bilddaten, die aufeinanderfolgende
Blöcke von Datengruppen enthalten, deren Inhalte die Werte von Pixeln eines
Bildes sind,
mit
für jede betreffende Datengruppe eines ersten Blockes: Vergleichen des
Inhalts dieser Datengruppe mit dem Inhalt der Datengruppe an derselben
Position in dem Block, der dem ersten Block vorausgeht, und Ausgeben eines
Differenzsignals auf der Grundlage dieses Vergleichs;
Suchen innerhalb des ersten Blockes nach einer Folge zusammenhängender
Datengruppen, deren Differenzsignale näherungsweise eine lineare Funktion
der Position in der Folge bilden; und
Ersetzen einer so gefundenen Folge zusammenhängender Datengruppen
durch einen Code, der die Anzahl von Datengruppen in der Folge enthält.
2. Verfahren zur Codierung von digitalen Bilddaten, die aufeinanderfolgende
Blöcke von Datengruppen enthalten, deren Inhalte die Werte von Pixeln eines
Bildes sind,
bei dem
beginnend bei einer Stariposition in einem zu codierenden Block und jeweils
für eine nachfolgende Position in dem Block, die Differenz bestimmt wird
zwischen dem Inhalt der Datengruppe an dieser Position und dem Inhalt der
Datengruppe an derselben Position in dem vorhergehenden Block und
überprüft wird, ob die so bestimmte Abfolge der Differenzen näherungsweise eine
lineare Funktion der Position in dem Block über alle Positionen von der
Startposition an ist, und für eine so gefundene Folge einer erster Code
bestimmt wird, welcher erste Code die Anzahl von Datengruppen in der Folge
enthält, und, beginnend von derselben Startposition in dem zu codierenden
Block und jeweils für eine folgende Position in dem Block, überprüft wird, ob
die Abfolge der Inhalte der Datengruppen näherungsweise eine lineare
Funktion der Position in dem Block über alle Positionen von der Starposition an
ist, und ein zweiter Code für eine so gefundene Folge bestimmt wird, welcher
zweite Code die Anzahl von Datengruppen in dieser Folge enthält;
und wobei diejenige der beiden Folgen, die den effizientesten Code ergibt,
ausgewählt und durch den für sie bestimmten Code ersetzt wird.
3. Verfahren nach Anspruch 1 oder 2, bei dem wenigstens eine genannte
lineare Funktion eine konstante Funktion ist.
4. Verfahren nach Anspruch 1, 2 oder 3,
bei dem, nachdem eine Folge von Datengruppen codiert worden ist, der
ursprüngliche Inhalt der Datengruppen dieser Folge durch einen Inhalt ersetzt
wird, der dem Ergebnis der Codierung und einer nachfolgende Decodierung
der Datengruppen dieser Folge entspricht.
5. Verfahren nach Anspruch 3, bei dem die konstante Funktion den Wert
null hat.
6. Vorrichtung zur Codierung digitaler Buddaten, die aufeinanderfolgende
Blöcke von Datengruppen enthalten, deren Inhalte die Werte von Pixeln eines
Bildes sind,
mit
Mitteln (5) zum Vergleich des Inhalts einer Datengruppe in einem ersten
Block mit dem Inhalt der Datengruppe an derselben Position in dem Block,
der dem ersten Block vorausgeht, und zum Ausgeben eines auf diesem Ver
gleich beruhenden Differenzsignals;
Mitteln (6) zum Finden innerhalb eines Blockes einer Folge von
zusammenhängenden Datengruppen, deren Differenzsignale näherungsweise eine
lineare Funktion der Position in der Folge bilden; und
einem Codegenerator (9) zum Ersetzen einer so gefundenen Folge
zusammenhängender Datengruppen durch einen Code, der die Anzahl von
Datengruppen in der Folge enthält.
7. Vorrichtung nach Anspruch 6, mit
- einem Speicher (2) zum Speichern wenigstens eines Teils der Bilddaten,
- einem mit dem Speicher (2) verbundenen Zeiger (3) zur Angabe einer
Position in einem zu codierenden Block,
- einem mit dem Speicher (2) verbundenen Zähler (4) zum Zählen,
beginnend mit der von dem Zeiger (3) angegebenen Position,
zusammenhängender Datengruppen innerhalb des Blockes, die zusammen eine
codierbare Folge bilden, welcher Zähler (4) versehen ist mit
einem Vergleicher (5) zum Vergleich des Inhalts einer Datengruppe
in dem zu codierenden Block mit dem Inhalt der Datengruppe an
derselben Position in dem vorausgegangenen Block und zur Ausgabe
eines auf diesem Vergleich beruhenden Differenzsignals und
einer mit dem Vergleicher (5) und dem Speicher (2) verbundenen
Aufklärungseinheit (6) zur Überprüfung, beginnend mit der durch
den Zeiger (3) angegebenen Position und jeweils für eine nachfol
gende Position innerhalb desselben Blockes, ob die Abfolge der
Differenzsignale vom Vergleicher (5) näherungsweise eine lineare
Funktion über alle Positionen von der vom Zeiger (3) angegebenen
Startposition an ist, und
- einem mit dem Zähler (4) und dem Speicher (2) verbundenen
Codegenerator (9) zur Ausgabe eines Codes zur Ersetzung von von dem Zähler (4)
gezählten Datengruppen
8. Vorrichtung nach Anspruch 7,
bei der der Zähler (4) dazu ausgebildet ist, zwei Folgen von Datengruppen zu
zählen die beide an derselben Startposition beginnen, und deshalb weiterhin
ausgestattet ist mit
einer mit dem Speicher (2) verbundenen zweiten Aufklärungseinheit
(7) zur Überprüfung, beginnend an der durch den Zeiger (3) angege
benen Position und jeweils für eine nachfolgende Position innerhalb
desselben Blockes, ob die Abfolge der Inhalte der Datengruppen
näherungsweise eine lineare Funktion über alle Positionen von der
durch den Zeiger (3) angegebenen Startposition an ist,
und bei der der Codegenerator (9) mit Mitteln zum Auswählen deijenigen
Folge, die den effizientesten Code ergibt, aus den beiden vom Zähler (4)
gezählten Folgen versehen ist.
9. Vorrichtung nach Anspruch 6, 7 oder 8, bei der wenigstens eine der
linearen Funktionen eine konstante Funktion ist.
10. Vorrichtung nach Anspruch 9, bei der die genannte konstante Funktion
den Wert null hat.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| NL9100225A NL9100225A (nl) | 1991-02-08 | 1991-02-08 | Werkwijze en inrichting voor het coderen van digitale beeldgegevens. |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69210274D1 DE69210274D1 (de) | 1996-06-05 |
| DE69210274T2 true DE69210274T2 (de) | 1996-12-19 |
Family
ID=19858850
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69210274T Expired - Fee Related DE69210274T2 (de) | 1991-02-08 | 1992-02-07 | Verfahren und Vorrichtung zur Kodierung von digitalen Bilddaten |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5319469A (de) |
| EP (1) | EP0498511B1 (de) |
| JP (1) | JP3113035B2 (de) |
| DE (1) | DE69210274T2 (de) |
| NL (1) | NL9100225A (de) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| NL9201415A (nl) * | 1992-08-06 | 1994-03-01 | Oce Nederland Bv | Werkwijze en inrichting voor het coderen en decoderen van digitale beeldgegevens. |
| JP2785641B2 (ja) * | 1993-04-14 | 1998-08-13 | 日本電気株式会社 | 画像符号化装置 |
| TW375570B (en) | 1997-04-22 | 1999-12-01 | Toray Industries | Hybrid type fiber reinforced plastic |
| US7120924B1 (en) | 2000-02-29 | 2006-10-10 | Goldpocket Interactive, Inc. | Method and apparatus for receiving a hyperlinked television broadcast |
| US7343617B1 (en) | 2000-02-29 | 2008-03-11 | Goldpocket Interactive, Inc. | Method and apparatus for interaction with hyperlinks in a television broadcast |
| US7367042B1 (en) | 2000-02-29 | 2008-04-29 | Goldpocket Interactive, Inc. | Method and apparatus for hyperlinking in a television broadcast |
| US6807309B1 (en) * | 2000-12-27 | 2004-10-19 | Canon Kabushiki Kaisha | Linear list compression |
| DE10205546B4 (de) * | 2002-02-11 | 2006-01-12 | Nexpress Solutions Llc | Verfahren zur Datenkomprimierung von Bildmaskendaten |
| GB2412215B (en) * | 2004-03-18 | 2008-08-13 | Hewlett Packard Development Co | Position identification pattern |
| JP5083170B2 (ja) * | 2008-10-23 | 2012-11-28 | 富士ゼロックス株式会社 | 符号化装置、復号装置、画像形成装置、及びプログラム。 |
| CN105737761B (zh) * | 2016-03-29 | 2018-05-29 | 四川大学 | 基于一维信息的专用投影机及其投影方法 |
| CN116032294B (zh) * | 2023-02-23 | 2023-06-20 | 山东安之捷科技有限公司 | 一种用于大气监测数据的智能处理方法 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1987004032A1 (en) * | 1985-12-24 | 1987-07-02 | British Broadcasting Corporation | Method of transmitting a video signal in sampled form |
| US4835607A (en) * | 1987-11-16 | 1989-05-30 | Technology, Inc. | Method and apparatus for expanding compressed video data |
-
1991
- 1991-02-08 NL NL9100225A patent/NL9100225A/nl not_active Application Discontinuation
-
1992
- 1992-02-06 JP JP04021339A patent/JP3113035B2/ja not_active Expired - Lifetime
- 1992-02-06 US US07/833,441 patent/US5319469A/en not_active Expired - Lifetime
- 1992-02-07 EP EP92200344A patent/EP0498511B1/de not_active Expired - Lifetime
- 1992-02-07 DE DE69210274T patent/DE69210274T2/de not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP0498511A1 (de) | 1992-08-12 |
| DE69210274D1 (de) | 1996-06-05 |
| JP3113035B2 (ja) | 2000-11-27 |
| US5319469A (en) | 1994-06-07 |
| NL9100225A (nl) | 1992-09-01 |
| EP0498511B1 (de) | 1996-05-01 |
| JPH0530365A (ja) | 1993-02-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE3587107T2 (de) | Drehungsverfahren und -geraet fuer binaere bilder. | |
| DE2264090C3 (de) | Datenverdichtung | |
| DE3214521C2 (de) | ||
| DE68923875T2 (de) | Entropie-Kodierer/Dekodierer mit einem Kontextextrahierer. | |
| DE69720559T2 (de) | Methode zur Bildkodierung mit Kodes variabler Länge | |
| DE69323020T2 (de) | Dekodierer für veränderliche Längenkodes | |
| DE68927082T2 (de) | Verfahren und Vorrichtung für die Bilddatenkomprimierung | |
| DE2432129C3 (de) | Verfahren zum maschinellen Lesen von Zeichen und Vorrichtung zur Durchführung des Verfahrens | |
| DE69210274T2 (de) | Verfahren und Vorrichtung zur Kodierung von digitalen Bilddaten | |
| DE2728889C3 (de) | Verfahren und Vorrichtung zum Übertragen eines Zweipegel-Faksimilesignals | |
| DE3854360T2 (de) | Bildinformationscodeverarbeitungssystem. | |
| DE68927477T2 (de) | Leistungsfähige Kodierung/Dekodierung in der Zerlegung und im Wiederaufbau eines Hochauflösungsbildes unter Verwendung seiner Kopie geringerer Auflösung | |
| DE2725395A1 (de) | Einrichtung zur echtzeittransformation einer n . n bitkonfiguration | |
| DE3416795C2 (de) | Bilddaten-Kompressionssystem | |
| DE2124754B2 (de) | Verfahren und Vorrichtung zur differentiellen Pulscodemodulation | |
| DE3711201C2 (de) | ||
| DE2558264B2 (de) | Verfahren zur Verdichtung binärer Bilddaten | |
| DE2946982C2 (de) | Verfahren zum Übertragen eines Faksimile-Signals | |
| DE2805294C2 (de) | Codierende Übertragungsanlage für Faksimile-Signale | |
| DE68923012T2 (de) | Kodierungs- und Dekodierungsverfahren variabler Länge, Kodierungs- und Dekodierungsvorrichtung zur Ausführung dieses Verfahrens. | |
| DE2340230A1 (de) | Verfahren und vorrichtung zur vorhersage des signalpegelwertes eines nachrichtenelementes | |
| EP0077089B1 (de) | Anordnung zum Speichern oder Übertragen von transformationskodierten Bildsignalen und zum Rückgewinnen dieser Bildsignale | |
| DE3811396C2 (de) | ||
| DE69319506T2 (de) | Verfahren und Gerät zum Kodieren und Dekodieren digitaler Bilddaten | |
| DE2919561C2 (de) | Faksimilegerät |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |