DE69328325T2 - Kodierungs- und Dekodierungsvorrichtung - Google Patents

Kodierungs- und Dekodierungsvorrichtung

Info

Publication number
DE69328325T2
DE69328325T2 DE69328325T DE69328325T DE69328325T2 DE 69328325 T2 DE69328325 T2 DE 69328325T2 DE 69328325 T DE69328325 T DE 69328325T DE 69328325 T DE69328325 T DE 69328325T DE 69328325 T2 DE69328325 T2 DE 69328325T2
Authority
DE
Germany
Prior art keywords
line
code
edge
pattern
dot
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 - Lifetime
Application number
DE69328325T
Other languages
English (en)
Other versions
DE69328325D1 (de
Inventor
Hisashi Koike
Tetsuo Kurita
Satoshi Nagata
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP4125132A external-priority patent/JP2737863B2/ja
Priority claimed from JP10823293A external-priority patent/JPH06319048A/ja
Application filed by Canon Inc filed Critical Canon Inc
Application granted granted Critical
Publication of DE69328325D1 publication Critical patent/DE69328325D1/de
Publication of DE69328325T2 publication Critical patent/DE69328325T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/417Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
    • H04N1/4175Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding involving the encoding of tone transitions with respect to tone transitions in a reference line
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/002Generic data access
    • G06K2215/0028Generic data access characterised by the format per se
    • G06K2215/0031Compressed bit maps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/004Generic data transformation
    • G06K2215/0042Rasterisation
    • G06K2215/0045Converting outline to bitmap
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/004Generic data transformation
    • G06K2215/0042Rasterisation
    • G06K2215/0051Rasterisation from compressed bitmap, e.g. run length

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Record Information Processing For Printing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

    HINTERGRUND DER ERFINDUNG Gebiet der Erfindung
  • Die Erfindung betrifft ein Kodierverfahren zum Kodieren und Komprimieren von Musterdaten, wie beispielsweise ein Zeichen, sowie ein Dekodierverfahren zum Dekodieren kodierter Musterdaten.
  • Verwandter Stand der Technik
  • Eine Bilderzeugungsvorrichtung, die Musterdaten in Entsprechung zu Zeichenkodes speichert, speichert normalerweise Zeichenmusterdaten in Form entwickelter Zeichenmuster. Wenn jedoch entwickelte Zeichenmuster in dieser Weise gespeichert werden, ist eine große Speicherkapazität zum Speichern dieser Muster erforderlich, welches in hohen Kosten resultiert. Insbesondere wird, da die Auflösung neuerer Drucker und die Anzahl der Punkte jedes zu druckenden Zeichenmusters zugenommen haben, die Speicherkapazität zum Speichern der Muster beachtlich groß. Folglich wurde eine Bilderzeugungsvorrichtung entwickelt, die solche Zeichenmuster in Form komprimierter Kodes speichert, welche durch Kodieren der Zeichenmuster durch ein Kodierverfahren wie beispielsweise ein Lauflängenverfahren erhalten wurden.
  • Die Druckschrift US-A-4 121 258 offenbart ein Verfahren zum Kodieren eines Punktmusters, bei dem Kanten- bzw. Randpositionen in einer Abtastzeile durch Berechnen von Entfernungen zwischen Randpositionen in der Abtastzeile und Positionen in einer vorangehend abgetasteten Referenzzeile kodiert werden, und Auswählen eines von einer Anzahl von Randpunkten in der Referenzzeile, der als Grundlage für eine relative Positionsinformation dient.
  • Die Druckschrift EP-A-0 309 655 beschreibt eine Bildverarbeitungsvorrichtung, die eine Lauflängenkodierung für eine zweite Richtung aus Lauflängenkodes von in einer ersten Richtung abgetasteten Bilddaten erzeugt.
  • Da jedoch das vorstehend erwähnte bekannte Kodierverfahren ein Kompressionsverfahren für allgemeine Musterdaten ist, kann das Kompressionsverhältnis in Abhängigkeit von den Punktformaten von Zeichenmustern nicht sehr stark erhöht werden. Manche Kodierverfahren erfordern eine lange Expansionszeit, und auch dann, wenn ein Zeichenkode eingegeben wird, dauert die Entwicklung des entsprechenden Musters lange, welches in der Zunahme der Druckzeit für einen Drucker resultiert.
  • Zusammenfassung der Erfindung
  • Die Erfindung wurde in Anbetracht der bekannten Probleme getätigt und hat zum Ziel, eine Kodiervorrichtung und ein Kodierverfahren bereitzustellen, die eine für Punktmuster, wie beispielsweise Zeichen, Symbole und der gleichen, geeignete Kodierung durchführen, um die zur Dekodierung erforderliche Zeit zu verkürzen und ein hohes Kompressionsverhältnis zu erhalten.
  • Um das vorstehende Ziel zu erreichen, wird gemäß einem Gesichtspunkt der Erfindung eine Informationskodiervorrichtung bereitgestellt, umfassend:
  • eine erste Speichereinrichtung zum Speichern von Musterdaten, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet;
  • eine Einrichtung zum Ermitteln der Kanten des Musters, die durch den Wechsel des Bitzustands repräsentiert werden; und
  • eine Kodeerzeugungseinrichtung zum Erzeugen, aus einem Vergleich von Mustern für eine bestimmte Zeile und eine der bestimmten Zeile unmittelbar vorangehende Zeile, gespeichert in der ersten Speichereinrichtung, von Kompressionskodes, ge speichert in einem zweiten Speicher, dadurch gekennzeichnet, dass die Kodeerzeugungseinrichtung zum Erzeugen eines ersten Kodes (LINEEQ, LINEDIF), der ein Inkrement oder Dekrement der Anzahl von Kanten auf der bestimmten Zeile von der auf der vorangehenden Zeile angibt, eines zweiten Kodes (ADV 0), der angibt, dass kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, eines dritten Kodes (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG), der die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und eines vierten Kodes (OPEN), der die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, ausgelegt ist.
  • Gemäß einem zweiten Gesichtspunkt der Erfindung wird ein Informationskodierverfahren bereitgestellt, umfassend die Schritte des:
  • Speicherns von Musterdaten, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet, in einem ersten Speicher;
  • Erzeugens von Kompressionskodes aus einem Vergleich von Mustern in einer bestimmten Zeile und einer der bestimmten Zeile unmittelbar vorangehenden Zeile, und Speicherns der Kompressionskodes in einem zweiten Speicher, wobei ein erster Kode (LINEEQ, LINEDIF) eine Zunahme oder Abnahme der Anzahl von Kanten auf der bestimmten Zeile im Vergleich zu der vorangehenden Zeile angibt, ein zweiter Kode (ADV 0) angibt, dass kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, ein dritter Kode (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG) die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und ein vierter Kode (OPEN) die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, und Speicherns der ersten bis vierten Kodes in dem zweiten Speicher.
  • Ein dritter Gesichtspunkt der Erfindung stellt eine Informationsdekodiervorrichtung bereit, umfassend:
  • eine Speichereinrichtung zum Speichern von Kompressionskodes, die aus Musterdaten generiert wurden, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet, wobei die Kompressionskodes einen ersten Kode (LINEEQ, LINEDIF), der ein Inkrement oder Dekrement der Anzahl von Kanten auf einer bestimmten Zeile von der auf einer der bestimmten Zeile unmittelbar vorangehenden Zeile angibt, einen zweiten Kode (ADV 0), der angibt, dass kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, einen dritten Kode (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG), der die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und einen vierten Kode (OPEN), der die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, beinhalten;
  • eine Ableitungseinrichtung zum Lesen der Kodes für jede Zeile aus der Speichereinrichtung und Ableiten einer oder mehrerer Kantenpositionen auf jeder Zeile; und
  • eine Mustererzeugungseinrichtung zum Erzeugen eines Punktmusters auf der Grundlage der einen oder mehreren Kantenpositionen auf jeder durch die Ableitungseinrichtung abgeleiteten Zeile.
  • Ein vierter Gesichtspunkt der Erfindung stellt ein Informationsdekodierverfahren bereit, umfassend die Schritte des:
  • Speicherns, in einer Speichereinrichtung, von Kompressionskodes, die aus Musterdaten generiert wurden, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet, wobei die Kompressionskodes einen ersten Kode (LINEEQ, LINEDIF), der ein Inkrement oder Dekrement der Anzahl von Kanten auf einer bestimmten Zeile von der auf einer der bestimmten Zeile unmittelbar vorangehenden Zeile angibt, einen zweiten Kode (ADV 0), der angibt, dass kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, einen dritten Kode (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG), der die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und einen vierten Kode (OPEN), der die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, beinhalten;
  • Lesens der Kodes für jede Zeile und Ableitens daraus einer oder mehrerer Kantenpositionen auf jeder Zeile; und
  • Erzeugens eines Punktmusters auf der Grundlage der einen oder mehreren Kantenpositionen auf jeder durch die Ableitungseinrichtung abgeleiteten Zeile.
  • Nachstehend werden Ausführungsbeispiele der Erfindung im einzelnen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in welchen:
  • Fig. 1 ein Blockdiagramm ist, das eine vereinfachte Anordnung einer Informationsverarbeitungsvorrichtung zeigt;
  • Fig. 2 eine Ansicht zum Erklären des Prinzips der Kodierung ist;
  • Fig. 3 eine weitere Ansicht zum Erklären des Prinzips der Kodierung ist;
  • Fig. 4 und 5 eine Tabelle zum Erklären von Kodierungskodenamen und deren Bedeutungen bilden;
  • Fig. 6 ein Blockdiagramm ist, das eine ausführliche Anordnung der Informationsverarbeitungsvorrichtung zeigt;
  • Fig. 7, 8A und 8B zusammen ein Ablaufdiagramm bilden, das einen ersten Kodierprozess zeigt;
  • Fig. 9 eine Ansicht zum Erklären der Kontinuität eines Punktrahmens ist;
  • Fig. 10 eine weitere Ansicht zum Erklären der Kontinuität eines Punktrahmens ist;
  • Fig. 11 eine Ansicht ist, die ein Beispiel eines zu kodierenden Punktmusters zeigt;
  • Fig. 12 eine Konfiguration einer Zeilentabelle zeigt;
  • Fig. 13 ein Blockdiagramm ist, das eine vereinfachte Anordnung einer Bilderzeugungsvorrichtung zeigt;
  • Fig. 14 ein Blockdiagramm ist, das eine ausführliche Anordnung der Bilderzeugungsvorrichtung zeigt;
  • Fig. 15 und 16 ein Ablaufdiagramm bilden, das den Dekodierprozeß zeigt;
  • Fig. 17A und 17B zusammen mit Fig. 18 bis 22 ein Ablaufdiagramm umfassen, das den Kodierprozess gemäß dem ersten Ausführungsbeispiel zeigt;
  • Fig. 23 ein Blockdiagramm ist, das eine vereinfachte Anordnung einer Bilderzeugungsvorrichtung zum Durchführen des Kodier- und des Dekodierprozesses gemäß einem zweiten Ausführungsbeispiel der Erfindung zeigt;
  • Fig. 24 ein Blockdiagramm ist, das eine ausführliche Anordnung der Bilderzeugungsvorrichtung zeigt;
  • Fig. 25 eine Querschnittsansicht ist, die die interne Struktur eines Laserstrahldruckers zeigt;
  • Fig. 26 eine Querschnittsansicht ist, die die interne Struktur eines Tintenstrahldruckers zeigt; und
  • Fig. 27 ein Blockdiagramm ist, das eine Steuerschaltung des in Fig. 26 gezeigten Tintenstrahldruckers zeigt.
  • Ausführungsbeispiele der Erfindung werden nachstehend im einzelnen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • Vor der Beschreibung der erfindungsgemäßen Anordnung wird unter Bezugnahme auf Fig. 25 die Anordnung eines Laserstrahldruckers beschrieben, auf den die Ausführungsform der Erfin dung angewandt wird.
  • In Fig. 25 empfängt und speichert ein Hauptkörper 1500 eines Laserstrahldruckers (LBP) Zeicheninformationen (Zeichenkodes und der gleichen), Forminformationen, Makrobefehle und der gleichen, die von einer externen Vorrichtung, wie beispielsweise einem extern verbundenen Hostcomputer, zugeführt werden, erzeugt entsprechende Zeichenmuster, Formmuster und der gleichen in Übereinstimmung mit den empfangenen Informationen, und bildet Abbilder auf Aufzeichnungspapier als Aufzeichnungsmaterial ab. Ein Bedienfeld 1501 ist auf der oberen Oberfläche des LBP-Hauptkörpers 1500 angeordnet und mit verschiedenen Schaltern, LED-Anzeigen und der gleichen versehen, die bei der Bedienung des LBPs verwendet werden. Eine Drucker-Steuereinheit 1 (vgl. Fig. 14) steuert den gesamten Drucker 1500 und analysiert Zeicheninformationen und der gleichen, die von dem Hostcomputer geliefert werden. Die Drucker-Steuereinheit 1 wandelt hauptsächlich Zeicheninformationen in ein Videosignal eines Zeichenmusters um und gibt das Videosignal an einen Lasertreiber 1502 aus.
  • Der Lasertreiber 1502 ist eine Schaltung zum Ansteuern eines Halbleiterlasers 1503 und steuert den Halbleiterlaser in Übereinstimmung mit dem zugeführten Videosignal an, um einen Laserstrahl 1504 ein und aus zu schalten. Der Laserstrahl 1504 wird durch einen sich drehenden polygonalen Spiegel 1505 abtastend in Rechts- und Linksrichtung geführt, um die Oberfläche einer elektrostatischen Trommel 1506 zu belichten und abzutasten. Folglich wird ein elektrostatisches latentes Bild eines Zeichenmusters auf der elektrostatischen Trommel 1506 gebildet. Das latente Bild wird durch eine um die elektrostatische Trommel 1506 angeordnete Entwicklungseinheit 1507 entwickelt und dann auf Aufzeichnungspapier übertragen. Als Aufzeichnungspapier werden geschnittene Blätter verwendet, und geschnittene Aufzeichnungsblätter werden in einer Papierkassette 1508 bevorratet, die in den LBP 1500 eingelegt ist. Das Aufzeichnungsblatt wird durch eine Papiervorschubwalze 1509 und Transportwalzen 1510 und 1511 in den LBP geholt und der elektrostatischen Trommel 1506 zugeführt. Fig. 1 ist ein Blockdiagramm, das eine vereinfachte Anordnung einer Kodiervorrichtung gemäß dem ersten Ausführungsbeispiel der Erfindung zeigt. Es wird angemerkt, dass die in Fig. 1 gezeigte Kodiervorrichtung eine Informationsverarbeitungsvorrichtung, wie beispielsweise ein Hostcomputer, ist.
  • In Fig. 1 beinhaltet die Kodiervorrichtung eine Eingabeeinrichtung 101, wie beispielsweise eine Tastatur, zum Angeben eines zu kodierenden Zeichenkodes und Anweisen eines Kodierprozesses des erforderlichen Zeichenkodes, eine externe Vorrichtung 102, wie beispielsweise ein Hostcomputer, die als Kodierverarbeitungsvorrichtung dient, und einen Zeichenmustergenerator 103 zum Speichern von Zeichenmusterdaten und einer Gesamtanzahl von Zeilen des Zeichenmusters in Entsprechung zu einem durch die Tastatur 101 angegebenen Zeichenkode. Der Zeichenmustergenerator 103 ist nicht auf einen internen solchen der externen Vorrichtung 102 beschränkt, sondern kann ein von der externen Vorrichtung 102 lösbares externes Speichermedium oder eine weitere externe Vorrichtung, wie beispielsweise ein Hostcomputer zum Erzeugen eines Zeichenmusters, sein. Die Kodiervorrichtung beinhaltet darüber hinaus eine Leseeinheit 104 zum Ausgeben eines durch die Tastatur 101 angegebenen Zeichenkodes an den Zeichenmustergenerator 103 und Lesen von Zeichenmusterdaten und der Gesamtanzahl von Zeilen des Zeichenmusters entsprechend dem ausgegebenen Zeichenkode sowie einen Speicher 105 zum Speichern der Zeichenmusterdaten und der Gesamtanzahl von Zeilen des durch die Leseeinheit 104 ausgelesenen Zeichenmusters. Der Speicher 105 umfasst beispielsweise ein RAM.
  • Die Kodiervorrichtung beinhaltet weiter einen Kodierer 106 zum Kodieren der in dem Speicher 105 gespeicherten Zeichenmusterdaten auf der Grundlage einer Anweisung von der Tastatur 101, einen Kodespeicher 107 zum Speichern eines komprimierten Kodes und der Gesamtanzahl von Zeilen des erforderlichen Musters, das von dem Kodierer 106 kodiert wurde, und eine Anzeige 108 zum Anzeigen des in dem Speicher 105 gespeicherten Zeichenmusters, verschiedener Mitteilungen an einen Bediener und der gleichen. Der Kodespeicher 107 kann in der externen Vorrichtung 102 integriert sein, oder kann ein von der externen Vorrichtung 102 lösbares externes Speichermedium oder eine externe Speichereinrichtung, wie beispielsweise eine Festplatte, sein.
  • Zeichenmusterdaten und eine Gesamtanzahl von Zeilen des Zeichenmusters entsprechend einem durch die Tastatur 101 angegebenen Zeichenkode werden vorübergehend in dem Speicher 105 gespeichert. Die Zeichenmusterdaten und die Gesamtanzahl von Zeilen des Zeichenmusters, die in dem Speicher 105 gespeichert sind, werden auf der Grundlage einer Kodieranweisung von der Tastatur 101 zeichenweise an den Kodierer 106 ausgelesen und auf einander folgend kodiert.
  • Nachstehend wird ein Kodierprozess in dem Kodierer 106 dieses Ausführungsbeispiels beschrieben.
  • Der Kodierprozess des ersten Ausführungsbeispiels wird nachstehend vor der Beschreibung des Kodierprozesses in dem Kodierer 106 kurz beschrieben. Fig. 2 zeigt ein Bitmap-Muster 201 eines Buchstabens "P". Ein solches ein Bitmap-Muster wird als ein überlappendes Muster einer Vielzahl von Rahmen verarbeitet. Der Rahmen ist ein Satz fortlaufender Punkte in der selben Farbe, und es wird angenommen, dass er von einer einzelnen fortlaufenden Begrenzungs- bzw. Randlinie umgeben ist. Daher wird das Muster 201 des Buchstabens "P" als ein überlappendes Muster eines Rahmens 202 aus schwarzen Punkten und eines Rahmens 203 aus weißen Punkten auf einer aus weißen Punkten bestehenden Bitmap interpretiert.
  • Die Randlinie jedes dieser Rahmen wird durch einen oberen horizontalen Abschnitt "OPEN", einen unteren horizontalen Abschnitt "CLOSE" und linke und rechte Randabschnitte von Punkten ausgedrückt, die erhalten werden, wenn das Muster horizontal von links nach rechts abgetastet wird.
  • Die Anzahl solcher Abschnitte "OPEN" oder "CLOSE" ist nicht auf einen pro Rahmen beschränkt. Beispielsweise beinhaltet eine Randlinie von Musterdaten eines in Fig. 3 gezeigten Buchstabens "H" zwei obere Abschnitte "OPEN".
  • Fig. 4 und 5 zeigen Arten von Kodierkodes in dem Kodierer 106 dieses Ausführungsbeispiels. Nachstehend werden Kodenamen erklärt. In Musterdaten, beispielsweise in dem Fall des in Fig. 2 gezeigten Musters, ist die Abtastzeile in der horizontalen Richtung fest gelegt, und werden Randabschnitte von Punkten, eine Beziehung zu einer vorangehenden Zeile und der gleichen überprüft, während Musterdaten für alle der Zeilen (die Anzahl der Zeilen = 12) von dem linken Ende der Abtastzeile ausgehend nach rechts abgetastet werden. In der ersten Abtastung werden die folgenden Zeilenkodes erzeugt, und in der nächsten Abtastung werden Rahmenkodes erzeugt.
  • (a) LINEEQ (Line Equal)
  • Dieser Kode zeigt an, dass die Anzahl von Kanten bzw. Rändern eines Musters in einer interessierenden aktuellen Abtastzeile (aktuelle Zeile) gleich dem der unmittelbar vorangehenden Abtastzeile ist. Beispielsweise wird, da jede von Zeilen 22 bis 25 und Zeilen 27 bis 31 die selbe Anzahl von Rändern wie die der unmittelbar vorangehenden Zeile in dem in Fig. 2 gezeigten Muster hat, der LINEEQ-Kode (Kodedaten "0") als Zeilenkode am Anfang jeder dieser Zeilen erzeugt.
  • (b) LINEDIF (Line Difference) < i>
  • Dieser Kode zeigt einen Unterschied (Variable i) zwischen der Anzahl von Rändern eines Musters in der aktuellen Zeile und der Anzahl von Rändern in der unmittelbar vorangehenden Abtastzeile (vorangehende Linie) an. Da die Variable i nur einen geradzahligen Wert annehmen kann, werden Kodes nur positiven und negativen geradzahligen Werten zugewiesen, wie in Fig. 4 gezeigt. Zum Beispiel wird in Fig. 2, da die Anzahl von Rändern in Zeile 20 "2" ist, in Linie 20 "LINEDIF< +2> " (Kodedaten "10010") fest gelegt.
  • Andererseits wird, da die Anzahl von Rändern in Zeile 21 im Vergleich zu der der vorangehenden Zeile 20 um "2" erhöht ist, ein Kode "LINEDIF< +2> " (Kodedaten "10010") auch in Zeile 21 erzeugt. Ferner wird, da die Anzahl von Rändern in Zeile 26 verglichen zu der vorangehenden Zeile 25 um "2" verringert ist, ein Zeilenkode "LINEDIF< -2> " (Kodedaten "0011") am Anfang von Zeile 26 erzeugt.
  • (c) ADV0 (Advance 0)
  • Dieser Rahmenkode ADV0 (Kodedaten "0") zeigt an, dass die Randposition der aktuellen Zeile die selbe ist wie die der vorangehenden Zeile. Beispielsweise entsprechen in Fig. 2 linke Ränder in Zeilen 21 bis 30 diesem Kode.
  • (d) ADV1 (Advance 1)
  • Dieser Rahmenkode ADV1 (Kodedaten "10") zeigt an, dass die Randposition in der aktuellen Zeile verglichen zu der in der vorangehenden Zeile um eins in einer Vorwärtsrichtung fortschreitet. Was die Richtung einer Kante bzw. eines Rands anbelangt, hat ein linksseitiger Rand eines Rahmens eine linksgerichtete Richtung als seine Vorwärtsrichtung, und hat ein rechtsseitiger Rand eines Rahmens eine rechtsgerichtete Richtung als seine Vorwärtsrichtung. Darüber hinaus ist dann, wenn die Schieberichtung der Randposition in der aktuellen Zeile die selbe ist wie die der Randposition in der vorangehenden Zeile, diese Schieberichtung als Vorwärtsrichtung fest gelegt. Diese Vorwärtsrichtung wird beibehalten, wenn die Randposition unverändert bleibt. Das selbe gilt für Verbindungskodes. Beispielsweise entsprechen in Fig. 2 der rechtsseitige Rand 33 in Zeile 21 und der linksseitige Rand 32 in Zeile 31 diesem Kode.
  • (e) ADV2 (Advance 2)
  • Dieser Rahmenkode ADV2 (Kodedaten "110") zeigt an, dass die Randposition in der aktuellen Zeile verglichen zu der Randposition in der vorangehenden Zeile (rechtsseitiger Rand 36 in Zeile 31 von Fig. 2) um zwei in ihrer Vorwärtsrichtung fortschreitet.
  • (f) SW1 (Switch 1)
  • Dieser Rahmenkode SW1 (Rodedaten "1110") zeigt an, dass die Randposition in der aktuellen Zeile verglichen zu der Randpo sition in der vorangehenden Zeile um eins in einer Richtung fortschreitet, die ihrer Vorwärtsrichtung entgegengesetzt ist (entgegengesetzte Richtung). Beispielsweise entsprechen in Fig. 2 ein Rand 34 in Zeile 25 (der der linksseitige Rand des Rahmens 203 ist) und der rechtsseitige Rand 35 des Rahmens 202 in Zeile 26 diesem Kode.
  • (g) ADVLONG< j> (Advance Long < j> )
  • Dieser Rahmenkode ADVLONG< j> zeigt an, dass die Randposition in den aktuellen Zeile verglichen zu der Randposition in den vorangehenden Zeilen um j in der Vorwärtsrichtung fortschreitet. Da der Wert j "3" oder größer ist, wird "0000" "3" zugewiesen, und werden die nachfolgenden numerischen Werte wie in Fig. 5 gezeigt fest gelegt.
  • (h) SWLONG< k> (Switch Long < k> )
  • Dieser Rahmenkode SWLONG< k> zeigt an, dass die Randposition in den aktuellen Zeile verglichen zu der Randposition in der vorangehenden Zeile um k in der zu der Vorwärtsrichtung entgegengesetzten Richtung fortschreitet. Da der Wert k "2" oder größer ist, wird "0000" "2" zugewiesen, und werden die nachfolgenden numerischen Werte wie in Fig. 5 gezeigt fest gelegt. Zeile 27 in Fig. 2 entspricht diesem Kode, und diese Zeile wird als "SWLONG< 7> " (Kodedaten "1111010101") kodiert.
  • (i) OPEN< m,n>
  • Dieser Rahmenkode OPEN< m,n> zeigt an, dass ein neuer Rahmen mit einer Breite n aus einer relativen Position m in der aktuellen Zeile erzeugt wird. Falls ein linker Rand in der aktuellen Zeile vorhanden ist, wird die relative Position m durch einen Wert ausgedrückt, der durch Subtrahieren von 1 von der Entfernung von dem Rand erhalten wird. Beispielsweise wird in der Zeile 21 in Fig. 2 ein Kode "OPEN< 2,5> " (Kodedaten "11111000100101") erzeugt. Andererseits wird dann, wenn kein linker Rand in der aktuellen Zeile vorhanden ist, die relative Position m bezogen auf eine Randposition 0 ausgedrückt. Beispielsweise wird in Zeile 20 in Fig. 2 ein Kode "OPEN< 5,10> " (Kodedaten "11111001011010") erzeugt. Auf diese Art und Weise können, da Zeilen fallabhängig selektiv kodiert werden, diese auf eine kleine Datenmenge komprimiert werden.
  • (j) CLOSE
  • Dieser Rahmenkode (Kodedaten "111111") zeigt an, dass ein Rahmen in der unmittelbar vorangehenden Zeile geschlossen ist (ein Paar von Rändern verschwindet in der aktuellen Zeile). In Fig. 2 beispielsweise wird dieser Kode am Ende des aus weißen Punkten bestehenden Rahmens 203 in Zeile 26 oder in der letzten Zeile des aus schwarzen Punkten bestehenden Rahmens in Zeile 31 erzeugt. Wie in dem in Fig. 2 gezeigten Zeichenmuster kann dann, wenn schwarze Punkte in der letzten Zeile eines extrahierten Musters vorhanden sind, der Kode "CLOSE" weg gelassen werden.
  • Daher wird das in Fig. 2 gezeigte Muster des Buchstabens "P" wie folgt kodiert:
  • Zeile 20: LINEDIF< +2> , OPEN< 5,10>
  • Zeile 21: LINEDIF< +2> , ADV0, OPEN< 2,5> , ADV1
  • Zeile 22: LINEEQ, ADV0, ADV0, ADV1, ADV0
  • Zeile 23: LINEEQ, ADV0, ADV0, ADV0, ADV0
  • Zeile 24: LINEEQ, ADV0, ADV0, ADV0, ADV0
  • Zeile 25: LINEEQ, ADV0, ADV0, SW1, ADV0
  • Zeile 26: LINEDIF< -2> , ADV0, CLOSE, SW1
  • Zeile 27: LINEEQ, ADV0, SWLONG< 7>
  • Zeile 28: LINEEQ, ADV0, ADV0
  • Zeile 29: LINEEQ, ADV0, ADV0
  • Zeile 30: LINEEQ, ADV0, ADV0
  • Zeile 31: LINEEQ, ADV1, ADV2
  • Diese kodierten Kodes werden in Wirklichkeit durch die in Fig. 4 und 5 gezeigten Kodedaten ausgedrückt, und die Kodedaten werden als Kodes, die in der Abtastreihenfolge (beispielsweise von links nach rechts in der Abtastzeile) erforderlicher Musterdaten komprimiert wurden, zusammen mit der Gesamtanzahl von Zeilen in dem Kodespeicher 107 gespeichert. In diesen Kodes sind die vorstehend erwähnten Variablen i, j, k, m, n und der gleichen durch Huffman-Kodes ausgedrückt. Folglich sind die vorstehend erwähnten Zeilen 20 bis 31 wie folgt kodiert:
  • Zeile 20: 1001011111001011010
  • Zeile 21: 1001001111100010010110
  • Zeile 22: 000100
  • Zeile 23: 00000
  • Zeile 24: 00000
  • Zeile 25: 00011100
  • Zeile 26: 1001101111111110
  • Zeile 27: 001111010101
  • Zeile 28: 000
  • Zeile 29: 000
  • Zeile 30: 000
  • Zeile 31: 010110
  • Fig. 6 zeigt die detaillierte Anordnung der Kodiervorrichtung des ersten Ausführungsbeispiels. ·
  • In Fig. 6 beinhaltet die Kodiervorrichtung eine Eingabeschnittstelle 501 zum Empfangen von Anweisungsinformationen von der Tastatur 101 und eine CPU 502, wie beispielsweise ein Mikroprozessor, zum Steuern des gesamten Dekodierers 106, eines Lesevorgangs eines Zeichenmusters und der Gesamtanzahl von Zeilen aus dem Zeichenmustergenerator 103, eines Anzeigevorgangs auf der Anzeige 108, eines Schreibvorgangs von Kodedaten und der Gesamtanzahl von Zeilen in den Kodespeicher 107 und der gleichen gemäß einem (in beispielsweise den Ablaufdiagrammen von Fig. 7, 8A und 8B gezeigten) Steuerprogramm und verschiedener in einem (noch zu beschreibenden) ROM 503 gespeicherten Daten. Die Kodiervorrichtung beinhaltet darüber hinaus auch das ROM 503 zum Speichern eines Programms der CPU 502 selbst, des in beispielsweise den Ablaufdiagrammen von Fig. 7, 8A und 8B gezeigten, durch die CPU 502 auszuführenden Steuerprogramms, verschiedener Daten und der gleichen, und ein als Arbeitsbereich der CPU 502 verwendetes RAM 504 zum vorübergehenden Speichern verschiedener Daten. Im einzelnen speichert das RAM 504 die Gesamtanzahl von Zeilen, Daten der vorangehenden Zeile(n), Daten der aktuellen Zeile, die Anzahlen der Ränder der aktuellen und der vorangehenden Zeile(n), die Bewegungsrichtungen der Ränder und der gleichen, wie noch zu beschreiben ist. Das RAM 504 wird als Tabelle, wie in Fig. 12 gezeigt, und darüber hinaus auch als der Speicher 105 zum Speichern ausgelesener Zeichenmusterdaten und der Gesamtanzahl von Zeilen des Zeichenmusters verwendet. Es wird angemerkt, dass diese Daten vorübergehend in dem Kodierprozess erzeugt werden. Die Kodiervorrichtung beinhaltet ferner eine Ausgabeschnittstelle 505 zum Ausgeben kodierter Kodedaten und der Gesamtanzahl von Zeilen an den Kodespeicher 107. Diese Komponenten sind mit einem Systembus 506 verbunden. Es wird angemerkt, dass dieser Kodierprozess in diesem Ausführungsbeispiel durch Software ausgeführt wird. Die Erfindung ist jedoch nicht hierauf beschränkt. Beispielsweise kann der Kodierprozess durch eine eine speziellen Zwecken dienende Hardware-Anordnung umfassende Kodierschaltung realisiert werden.
  • Nachstehend wird der Kodierprozess des ersten Ausführungsbeispiels in dem Kodierer 106 durch die CPU 502 unter Bezugnahme auf die Ablaufdiagramme der Fig. 7, 8A und 8B beschrieben. Dieser Prozess wird aus einem Zustand heraus begonnen, in dem die Leseeinheit 104 ein Zeichenmuster und dessen Gesamtanzahl von Zeilen entsprechend einem erforderlichen Zeichenkode von dem Zeichenmustergenerator 103 auf der Grundlage einer Anweisung von der Tastatur 101 ausliest und das ausgelesene Zeichenmuster in dem Speicher 105 entwickelt.
  • In Schritt S1 wird ein zu komprimierender Bereich von Musterdaten (beispielsweise das Zeichenmuster 201 in Fig. 2) ausgelesen. Der Ablauf schreitet zu Schritt S2 fort, in dem eine Tabelle in dem RAM 504 zum Speichern vorangehender Zeilendaten auf "0" gelöscht wird. Der Ablauf schreitet zu Schritt S3 fort, und zu kodierende Daten einer Zeile (anfangs Punktdaten der ersten Zeile) werden aus dem Speicher 105 (einem vorbestimmten Bereich des RAM 504) ausgelesen und in dem Arbeitsbereich des RAM 504 gespeichert. In Schritt S4 werden Punktdaten in der aktuellen Zeile überprüft, um zu ermitteln, ob ein schwarzer Punkt in der aktuellen Zeile vorhanden ist.
  • Falls kein schwarzer Punkt vorhanden ist, schreitet der Ablauf zu Schritt S5 fort, um zu prüfen, ob ein schwarzer Punkt in der vorangehenden Zeile vorhanden ist. Falls auch in der vorangehenden Zeile kein schwarzer Punkt vorhanden ist, da die aktuelle Zeile gleich der vorangehenden Zeile ist, wird in Schritt S6 ein Kode "LINEEQ" erzeugt. Der Ablauf springt dann zu Schritt S25, um die Daten der aktuellen Zeile zu übertragen und in dem Speicherbereich für die Daten der vorangehenden Zeile zu speichern.
  • Falls in Schritt S5 ermittelt wird, dass ein schwarzer Punkt in der vorangehenden Zeile vorhanden ist, schreitet der Ablauf zu Schritt S7 fort, um die Anzahl verringerter Ränder zu berechnen und einen Kode "LINEDIF< -i> " zu erzeugen. Der Ablauf schreitet zu Schritt S8 fort, um einen Kode "CLOSE" gemäß der Position des schwarzen Punkts in der vorangehenden Zeile zu erzeugen.
  • Falls in Schritt S4 ermittelt wird, dass ein schwarzer Punkt in der aktuellen Zeile vorhanden ist, schreitet der Ablauf zu Schritt S9 fort, um die Änderungspositionen von Punkten in diesem Punktmuster, d. h. die Randpositionen und die Anzahl von Rändern in der Tabelle in dem RAM 504 zu speichern. Der Ablauf schreitet zu Schritt S10 fort, um zu prüfen, ob die Anzahl von Rändern in der vorangehenden Zeile gleich der in der aktuellen Zeile ist. Falls JA in Schritt S10, schreitet der Ablauf zu Schritt S11 fort, um einen Kode "LINEEQ" zu erzeugen; dann schreitet der Ablauf zu Schritt S13 fort.
  • Falls in Schritt S10 ermittelt wird, dass die Anzahl von Rändern in der vorangehenden Zeile nicht gleich der in der aktuellen Zeile ist, schreitet der Ablauf zu Schritt S12 fort, um einen Kode "LINEDIF< ±i> " zu erzeugen; dann schreitet der Ablauf zu Schritt S13 fort. In Schritt S13 werden Punktdaten in der aktuellen Zeile auf einander folgend abgetastet, bis der erste Rand gefunden wird, und wird überprüft, ob ein den ersten Rand einschließender interessierender Punkt ein weißer oder ein schwarzer Punkt ist. Falls der interessierende Punkt ein schwarzer Punkt ist, schreitet der Ablauf zu Schritt S14 fort, um zu prüfen, ob die vorangehende Zeile einen schwarzen Punkt einschließt, der mit dem interessierenden schwarzen Punkt in der aktuellen Zeile kontinuierlich ist.
  • Andererseits schreitet, falls der interessierende Punkt ein weißer Punkt ist, der Ablauf zu Schritt S20 fort, um zu prüfen, ob die vorangehende Zeile einen weißen Punkt einschließt, der mit dem weißen Punkt in der aktuellen Zeile kontinuierlich ist. Falls in Schritt S14 ermittelt wird, dass die vorangehende Zeile keinen mit dem schwarzen Punkt in der aktuellen Zeile kontinuierlichen schwarzen Punkt einschließt, oder falls in Schritt S20 ermittelt wird, dass die vorangehende Zeile keinen mit dem weißen Punkt in der aktuellen Zeile kontinuierlichen weißen Punkt einschließt, schreitet der Ablauf zu Schritt S15 fort, um einen Kode "OPEN" für den interessierenden schwarzen oder weißen Punkt in der aktuellen Zeile zu erzeugen. In Schritt S19 werden Punktdaten in der aktuellen Zeile abgetastet, bis der nächste Rand gefunden wird. In Schritt S24 wird geprüft, ob die Abtastung der aktuellen Zeile abgeschlossen ist. Falls NEIN in Schritt S24, werden die vorstehend erwähnten Prozesse ab Schritt S13 wiederholt.
  • Andererseits schreitet bei JA in Schritt S24 der Ablauf zu Schritt S25 fort. In Schritt S25 werden die Daten der aktuellen Zeile als die Daten der vorangehenden Zeile gespeichert, und in Schritt S26 wird unter Bezugnahme auf die Gesamtanzahl von Zeilen geprüft, ob die Prozesse für die gesamten, in Schritt S1 ausgelesenen Musterdaten abgeschlossen sind. Falls NEIN in Schritt S26, schreitet der Ablauf zu Schritt S27 fort, um die Daten der nächsten Zeile auszulesen, und werden die ausgelesenen Zeilendaten als aktuelle Zeile fest gelegt. Der Ablauf kehrt dann zu Schritt S3 zurück, um die Prozesse ab Schritt S3 zu wiederholen.
  • Falls in Schritt S14 ermittelt wird, dass die vorangehende Zeile einen schwarzen Punkt einschließt, der mit dem schwarzen Punkt in der aktuellen Zeile kontinuierlich ist, wird in Schritt S16 ein Kode "ADV" oder "SW" erzeugt, und schreitet der Ablauf zu Schritt S17 fort. In Schritt S17 wird geprüft, ob die vorangehende Zeile einen weißen Punkt einschließt, der nicht mit der aktuellen Zeile kontinuierlich ist. Falls JA in Schritt S17, schreitet der Ablauf zu Schritt S18 fort, um einen Kode "CLOSE" für den weißen Punkt zu erzeugen, und kehrt der Ablauf zu Schritt S17 zurück.
  • Andererseits schreitet bei NEIN in Schritt S17 der Ablauf zu Schritt S19 fort, und werden die vorstehend erwähnten Prozesse in Schritt S19 und den nachfolgenden Schritten ausgeführt.
  • Falls in Schritt S20 ermittelt wird, dass die vorangehende Zeile einen weißen Punkt einschließt, der mit dem weißen Punkt in der aktuellen Zeile kontinuierlich ist, wird in Schritt S21 ein Kode "ADV" oder "SW" erzeugt, und schreitet der Ablauf zu Schritt S22 fort. Falls in Sehritt S22 ermittelt wird, dass die vorangehende Zeile einen schwarzen Punkt einschließt, der nicht mit der aktuellen Zeile kontinuierlich ist, schreitet der Ablauf zu Schritt S23 fort, um einen Kode "CLOSE" für den schwarzen Punkt zu erzeugen, und kehrt der Ablauf dann zu Schritt S22 zurück.
  • Andererseits schreitet dann, wenn in Schritt S22 ermittelt wird, dass die vorangehende Zeile keinen schwarzen Punkt einschließt, der nicht mit der aktuellen Zeile kontinuierlich ist, der Ablauf zu Schritt S19 fort, und werden die vorstehend erwähnten Prozesse in Schritt S19 und den nachfolgenden Schritten ausgeführt.
  • Eine Bedingung zum Unterscheiden, ob ein Punkt in der aktuellen Zeile mit einem Punkt in der vorangehenden Zeile kontinuierlich ist oder nicht, wird nachstehend unter Bezugnahme auf die in Fig. 7, 8A und 8B gezeigten Ablaufdiagramme und in Fig. 9 und 10 gezeigte Punktmuster beschrieben.
  • In Fig. 9 werden dann, wenn die Größe jedes schwarzen Punkts als ein Punkt definiert ist, schwarze Punkte 802a bis 802c in einem Punktmuster 801 als kontinuierliche Punkte und ein schwarzer Punkt 803 als ein unabhängiger Punkt verarbeitet. Im einzelnen wird in Schritt S14 überprüft, ob die vorange hende Zeile einen schwarzen Punkt einschließt, der mit einem schwarzen Punkt in der aktuellen Zeile kontinuierlich ist. Falls ein solcher schwarzer Punkt in der unmittelbar vorangehenden Zeile nicht vorhanden ist, schreitet der Ablauf zu Schritt S15 fort, und wird der oberste Abschnitt des schwarzen Punkts 802a als ein Kode "OPEN" kodiert. Daher wird die erste Zeile als "LINEDIF< +2> , OPEN< 2,1> " kodiert. Ein schwarzer Punktabschnitt 802b in der zweiten Zeile wird als ein mit dem schwarzen Punkt 802a in der vorangehenden Zeile kontinuierlicher schwarzer Punkt erkannt, und in Schritt S16 als "ADV1" und in Schritt S21 als "SW1" kodiert. Der schwarze Punkt 803 wird in Schritt S15 als "OPEN< 0,1> " kodiert. Daher wird die zweite Zeile als "LINEDIF< +2> , ADV1, SW1, OPEN < 0,1> " kodiert. Auf vergleichbare Art und Weise wird der schwarze Punkt 802c als ein mit dem schwarzen Punkt 802b kontinuierlicher schwarzer Punkt betrachtet, und in Schritt S16 als "SW1" und in Schritt S21 als "ADV1" kodiert. In Schritt S23 wird der schwarze Punkt 803 in der zweiten Zeile als "CLOSE" kodiert. Auf diese Art und Weise wird die dritte Zeile in dem in Fig. 9 gezeigten Muster 801 als "LINEDIF< -2> , SW1, ADV1, CLOSE" kodiert. In Schritt S8 wird ein Kode "CLOSE" für den schwarzen Punkt 802c in der dritten Zeile erzeugt, so dass daher die vierte Zeile als "LINEDIF< -2> , CLOSE" kodiert wird.
  • Das vorstehend erwähnte Kodierungsergebnis ist wie folgt:
  • Zeile 1: LINEDIF< +2> , OPEN< 2,1>
  • Zeile 2: LINEDIF< +2> , ADV1, SW1, OPEN< 0,1>
  • Zeile 3: LINEDIF< -2> , SW1, ADV1, CLOSE
  • Zeile 4: LINEDIF< -2> , CLOSE
  • Die vorstehend beschriebenen kodierten Kodes werden in Wirklichkeit durch die in Fig. 4 und 5 gezeigten Kodedaten wie folgt ausgedrückt und in dem Kodespeicher 107 zusammen mit der Gesamtanzahl von Zeilen (die Anzahl von Zeilen = 4) in Entsprechung mit Identifikationsinformationen (beispielsweise ein Zeichenkode) zum Identifizieren des erforderlichen Musters gespeichert:
  • Zeile 1: 1001011111000100001
  • Zeile 2: 1001010111011111000000001
  • Zeile 3: 10011111010111111
  • Zeile 4: 10011111111
  • Auf vergleichbare Art und Weise werden in dem Fall eines in Fig. 10 gezeigten Punktmusters schwarze Punkte 902a und 902b als kontinuierliche Punkte verarbeitet. Im einzelnen wird in Schritt S14 geprüft, ob die vorangehende Zeile einen mit einem schwarzen Punkt in der aktuellen Zeile kontinuierlichen schwarzen Punkt einschließt. Falls ein solcher schwarzer Punkt in der unmittelbar vorangehenden Zeile nicht vorhanden ist, schreitet der Ablauf zu Schritt S15 fort, und der oberste Abschnitt des schwarzen Punkts 902a wird als ein Kode "OPEN" kodiert. Daher wird die erste Zeile als "LINEDIF< +2> , OPEN< 1,2> " kodiert. Ein schwarzer Punktabschnitt 902a in der zweiten Zeile wird als ein mit dem schwarzen Punkt 902a in der vorangehenden Zeile kontinuierlicher schwarzer Punkt erkannt, und in Schritt S16 als "ADV0" und in Schritt S21 als "SW1" kodiert. Ein schwarzer Punktabschnitt 902b wird in Schritt S15 als "OPEN< 0,1> " kodiert. Daher wird die zweite Zeile als "LINEDIF< +2> , ADV0, SW1, OPEN< 0,1> " kodiert. In der nächsten Zeile wird der schwarze Punkt 902b als ein mit dem schwarzen Punkt 902a kontinuierlicher schwarzer Punkt erkannt und in Schritt S16 als "SW1" kodiert. In Schritt S18 wird ein Kode "CLOSE" für einen weißen Punkt 903 in der zweiten Zeile erzeugt.
  • Schließlich wird in Schritt S21 der schwarze Punkt 902b als "ADV0" kodiert. Auf diese Art und Weise wird die dritte Zeile in dem in Fig. 10 gezeigten Muster als "LINEDIF< -2> , SW1, CLOSE, ADV0" kodiert. In Schritt S8 werden ein Kode "CLOSE" für die schwarzen Punkte 902b in der dritten Zeile erzeugt und die vierte Zeile als "LINEDIF< -2> , CLOSE" kodiert.
  • Die vorstehend beschriebenen kodierten Kodes werden in Wirklichkeit durch die in Fig. 4 und 5 gezeigten Kodedaten ausgedrückt und in dem Kodespeicher 107 zusammen mit der Gesamtanzahl von Zeilen des erforderlichen Musters in Entsprechung mit Identifikationsinformationen (beispielsweise ein Zeichenkode) zum Identifizieren des erforderlichen Musters gespeichert.
  • Nachstehend wird ein Kodierprozess eines in Fig. 11 gezeigten Punktmusters auf der Grundlage der in den Ablaufdiagrammen von Fig. 7, 8A und 8B gezeigten Prozessfolge beschrieben.
  • In Fig. 11 schreitet, da die Zeile 1 keinen schwarzen Punkt einschließt, der Ablauf von Schritt S4 zu den Schritten S5 und S6 fort, und wird ein Kode "LINEEQ" (Kodedaten "0") allein in Zeile 1 erzeugt. Da die Zeile 2 schwarze Punkte einschließt, schreitet der Ablauf von Schritt S4 zu Schritt S9 fort, in dem die Randpositionen (6) und (9) als Änderungspositionen von Punkten und die Zahl "2" von Rändern in einer Tabelle (Fig. 12) in dem RAM 504 gespeichert werden. Da die Anzahl von Rändern verglichen zu der Anzahl (0) von Rändern in der vorangehenden Zeile um "2" erhöht ist, wird in Schritt S12 ein Kode "LINEDIF< +2> " (Kodedaten "10010") erzeugt, und da in Schritt S14 ermittelt wird, dass der schwarze Punkt in der aktuellen Zeile nicht mit einem schwarzen Punkt in der vorangehenden Zeile kontinuierlich ist, wird in Schritt S15 ein Kode "OPEN< 6,3 (= 9 - 6)> " (Kodedaten "11111001100011") erzeugt. Es wird angemerkt, dass Punktdaten in der aktuellen Zeile auf einander folgend von links abgetastet werden, bis der erste Rand gefunden wird, und die Prozessfolge in Schritt S13 und den nachfolgenden Schritten in Abhängigkeit davon variiert, ob ein Punkt neben dem gefundenen Rand ein schwarzer oder ein weißer Punkt ist.
  • Da die Zeile 3 die selbe Anzahl von Rändern wie die in der vorangehenden Zeile hat, wird in Schritt S11 ein Kode "LINEEQ" erzeugt. Da in Schritt S14 ermittelt wird, dass der schwarze Punkt in der aktuellen Zeile mit dem in der vorangehenden Zeile kontinuierlich ist, wird die Randposition der aktuellen Zeile in Schritt S16 geprüft. Da die Randposition mit derjenigen in Zeile 2 übereinstimmt, werden in Schritt S21 ein Kode "ADV0" (Kodedaten "0") für einen linken Rand und ein Kode "ADV0" für einen rechten Rand erzeugt.
  • Da die Zeile 4 die selbe Anzahl von Rändern wie die in der vorangehenden Zeile hat, wird in Schritt S11 ein Kode "LINEEQ" erzeugt. Ein Kode "ADV0" für einen linken Rand wird in Schritt S16 erzeugt, und da die Position eines rechten Randes um eins nach rechts verschoben ist, wird in Schritt S21 ein Kode "ADV1" für den rechten Rand erzeugt.
  • In Zeile 5 wird, da die Anzahl von Rändern um "2" erhöht ist, in Schritt S12 ein Kode "LINEDIF< +2> erzeugt. In kontinuierlichen schwarzen Punkten wird in Schritt S16 ein Kode "ADV1" (Kodedaten "10") für einen linken Rand erzeugt, und wird in Schritt S21 ein Kode "SW1" (Kodedaten "1110") für einen rechten Rand erzeugt.
  • Danach schreitet, da sich ein schwarzer Punkt 1001 in Fig. 11 an einer durch eine Randposition (12) angegebenen Position befindet, der Ablauf von Schritt S14 zu Schritt S15 fort, und wird ein Kode "OPEN< 2 ( = 12 - 9 - 1), 1> " (Kodedaten "11111000100001") für diesen schwarzen Punkt erzeugt.
  • In Zeile 6 wird, da die Anzahl von Rändern verglichen zu der in Zeile 5 um "2" erhöht ist, in Schritt S12 ein Kode "LINEDIF< +2> erzeugt. Da der linke Rand von linken kontinuierlichen schwarzen Punkten um zwei Punkte in der Vorwärtsrichtung verschoben ist, wird in Schritt S16 ein Kode "ADV2" erzeugt. Da in Schritt S20 ermittelt wird, dass die vorangehende Zeile (Zeile 5) keinen weißen Punkt einschließt, der mit einem interessierenden weißen Punkt (Punkt 6) auf der aktuellen Zeile (Zeile 6) kontinuierlich ist, schreitet der Ablauf von Schritt S20 zu Schritt S15 fort, und wird ein Kode "OPEN< 2,2> für diesen weißen Punkt erzeugt.
  • In Schritt S21 wird ein Kode "ADV0" erzeugt. Schließlich wird in Schritt S16 ein Kode "ADV0" für den linken Rand des nicht kontinuierlichen schwarzen Punkts in Spalte 12 erzeugt, und wird in Schritt S21 ein Kode "ADV0" für seinen rechten Rand erzeugt.
  • Auf vergleichbare Art und Weise werden in Zeile 7 ein Kode "LINEEQ" in Schritt S11; ein Kode "SW2" in Schritt S16; ein Kode "ADV0" in Schritt S21; ein Kode "ADV0" in Schritt S16; ein Kode "ADV0" in Schritt S21; ein Kode "ADV0" in Schritt S16; und ein Kode "ADV0" in Schritt S21 erzeugt.
  • Auf vergleichbare Art und Weise werden in Zeile 8 ein Kode "LINEEQ" in Schritt S11; ein Kode "ADV1" in Schritt S16; ein Kode "ADV0" in Schritt S21; ein Kode "ADV0" in Schritt S16; ein Kode "ADV1" in Schritt S21; ein Kode "ADV0" in Schritt S16; und ein Kode "ADV0" in Schritt S21 erzeugt.
  • In Zeile 9 wird, da die Anzahl von Rändern verglichen zu der in Zeile 8 um "4" verringert ist, in Schritt S12 ein Kode "LINEDIF< -4> " erzeugt, und wird in kontinuierlichen schwarzen Punkten in Schritt S16 ein Kode "ADV0" für einen linken Rand erzeugt. Da die vorangehende Zeile (Zeile 8) einen weißen Punkt (weißer Punkt 1002 in Fig. 11) einschließt, der nicht kontinuierlich mit der aktuellen Zeile (Zeile 9) ist, wird in Schritt S18 ein Kode "CLOSE" (Kodedaten "111111") erzeugt. Da die vorangehende Zeile einen weiteren solchen weißen Punkt (weißer Punkt 1003 in Fig. 11) einschließt, wird in Schritt S18 ein Kode "CLOSE" (Kodedaten "111111") für diesen Abschnitt erzeugt. Schließlich wird in Schritt S21 ein Kode "ADV0" erzeugt.
  • In Zeile 10 wird in Schritt S7 ein Kode "LINEDIF< -2> " erzeugt, und wird in Schritt S8 ein Kode "CLOSE" erzeugt, wodurch der Prozess endet.
  • Das vorstehend erwähnte Kodierungsergebnis ist wie folgt:
  • Zeile 1: LINEEQ
  • Zeile 2: LINEDIF< +2> , OPEN< 6,3>
  • Zeile 3: LINEEQ, ADV0, ADV0
  • Zeile 4: LINEEQ, ADV0, ADV1
  • Zeile 5: LINEDIF< +2> , ADV1, SW1, OPEN< 2,1>
  • Zeile 6: LINEDIF< +2> , ADV2, OPEN< 2,2> , ADV0, ADV0, ADV0
  • Zeile 7: LINEEQ, SW2, ADV0, ADV0, ADV0, ADV0, ADV0
  • Zeile 8: LINEEQ, ADV1, ADV0, ADV0, ADV1, ADV0, ADV0
  • Zeile 9: LINEDIF< -4> , ADV0, CLOSE, CLOSE, ADV0
  • Zeile 10: LINEDIF< -2> , CLOSE
  • Diese kodierten Kodes werden in Wirklichkeit durch die in Fig. 4 und 5 gezeigten Kodedaten ausgedrückt und als Kodes, die in der Abtastreihenfolge (von links nach rechts der Abtastzeile) von Musterdaten komprimiert sind, zusammen mit der Gesamtanzahl von Zeilen in Entsprechung zu Identifikationsinformationen (beispielsweise ein Zeichenkode) zum Identifizieren des erforderlichen Musters in dem Kodespeicher 107 gespeichert. Im einzelnen speichert der Kodespeicher 107 Kodedaten so, dass ein durch die gespeicherten Kodedaten ausgedrücktes Muster identifiziert werden kann. Beispielsweise werden die Kodedaten in Entsprechung zu einem Zeichenkode gespeichert.
  • [Dekodiervorrichtung]
  • Nachstehend wird ein Prozess zum Dekodieren der vorstehend erwähnten kodierten Daten gemäß dem ersten Ausführungsbeispiel beschrieben. Das erste Ausführungsbeispiel beschreibt beispielhaft einen Laserstrahldrucker als eine Bilderzeugungsvorrichtung zum Durchführen eines Dekodierprozesses.
  • Fig. 13 ist eine Ansicht, die eine vereinfachte Anordnung eines Laserstrahldruckers zum Durchführen eines Dekodierprozesses des ersten Ausführungsbeispiels zeigt, und die zum Erklären des Ablaufs von Prozessen in der vorstehend erwähnten Drucker-Steuereinheit 1 verwendet wird.
  • In Fig. 13 gibt eine externe Vorrichtung 1201, wie beispielsweise ein Hostcomputer, als eine Druckdaten-Erzeugungsquelle beispielsweise Zeicheninformationen, die aus Zeichenkodes bestehen, Positionsinformationen und der gleichen unter Verwendung einer (nicht gezeigten) Tastatur aus. Eine Eingabeeinheit 1202 führt eine Kommunikationssteuerung mit der externen Vorrichtung 1201 durch und speichert eingegebene Zeicheninformationen in einem Eingabepuffer 1203. Der Eingabepuffer 1203 hat eine Kapazität zum Speichern von Zeicheninformationen für wenigstens eine Seite. Der Kodespeicher 107 speichert wie vorstehend beschrieben kodierte Kodedaten erforderlicher Zeichenmuster und ihre Gesamtanzahl von Zeilen in Einheiten von Mustern. Der Kodespeicher 107 ist nicht auf einen solchen beschränkt, der in einer Bilderzeugungsvorrichtung wie beispielsweise dem LBP 1500 integriert ist, sondern kann ein von der Bilderzeugungsvorrichtung lösbares, externes Speichermedium oder ein externes Gerät wie beispielsweise ein Hostcomputer zum Ausgeben von Kodedaten sein. Eine Anzeige 1204 zeigt ein musterentwickeltes Bild, Mitteilungen an einen Bediener und der gleichen an. Ein Dekodierer 1205 empfängt einen Zeichenkode und dessen Positionsinformationen für ein Zeichen von dem Eingabepuffer 1203, wenn eine vorherbestimmte Menge von Zeichenkodes in den Eingabepuffer 1203 eingegeben werden, liest Kodedaten und die Gesamtanzahl von Zeilen entsprechend einem durch den empfangenen Zeichenkode ausgedrückten Muster aus, und führt einen Dekodierprozeß der ausgelesenen Kodedaten aus. Der Dekodierer 1205 speichert in einem internen Speicher (nicht gezeigt; ein Arbeitsbereich in einem RAM 1304) dekodierte Zeichenmusterdaten in einem (noch zu beschreibenden) Seitenspeicher 1206 auf der Grundlage ihrer Positionsinformationen und der gleichen, wenn ein Seitenendebefehl zugeführt wird oder wenn der (nicht gezeigte) interne Speicher mit Daten gefüllt ist. Der Seitenspeicher 1206 speichert Musterdaten für wenigstens eine Seite. Eine Ausgabeeinheit 1207 führt eine EIN/AUS-Steuerung eines Laserstrahls eines Ausgabemechanismus 1208 durch, wodurch Ausgabeinformationen auf ein Aufzeichnungsmaterial 1209, wie beispielsweise ein Papierblatt, ausgegeben werden.
  • Fig. 14 zeigt die detaillierte Anordnung der Drucker-Steuereinheit 1 in dem Dekodierprozeß des ersten Ausführungsbeispiels. In Fig. 14 ist die Drucker-Steuereinheit 1 mit der externen Vorrichtung 1201 zum Ausgeben von Zeichenkodes, Positionsinformationen und der gleichen verbunden. Die Einheit 1 beinhaltet eine Eingabeschnittstelle 1301 zum Empfangen von Zeichenkodes, Positionsinformationen und der gleichen von der externen Vorrichtung 1201, und eine CPU 1302 zum Steuern der gesamten Drucker-Steuereinheit 1 einschließlich des Dekodierprozesses.
  • Die Einheit 1 beinhaltet darüber hinaus ein ROM 1303 zum Speichern eines Steuerprogramms der CPU 1302 selbst, eines in den Ablaufdiagrammen von Fig. 15 und 16 gezeigten, durch die CPU 1302 auszuführenden Steuerprogramms, verschiedener Daten und der gleichen, und das RAM 1304, das als Arbeitsbereich der CPU 1302 zum vorübergehenden Speichern verschiedener Daten verwendet wird. Im einzelnen wird das RAM 1304 als der Eingabepuffer 1203 zum Speichern von der externen Vorrichtung 1201 empfangenen Zeichenkodes und der gleichen, der vorstehend erwähnte (nicht gezeigte) Speicher, in dem Kodedaten durch den Dekodierer 1205 dekodiert werden, der Seitenspeicher 1206 zum Speichern von dekodierten Zeichenmusterdaten für wenigstens eine Seite, und eine Tabelle zum Speichern der Gesamtanzahl von Zeilen, Daten der vorangehenden Zeile(n), Daten der aktuellen Zeile, der Anzahlen von Rändern der aktuellen und der vorangehenden Zeile, der Bewegungsrichtungen von Rändern, und der gleichen verwendet. Es wird angemerkt, dass diese Tabelle in dem Dekodierprozeß temporär erzeugt wird. Die Einheit 1 beinhaltet ferner eine Ausgabeschnittstelle 1305 zum Ausgeben eines Ausgabebilds als Videosignal an den Ausgabemechanismus 1208 zum eigentlichen Durchführen eines Druckvorgangs, und an den vorstehend erwähnten Kodespeicher 107. Die Anzeige 1204 zeigt ein Ausgabebild, Mitteilungen an einen Bediener und der gleichen an. Diese Komponenten sind mit einem Systembus 1306 verbunden.
  • In dem ersten Ausführungsbeispiel wird der Dekodierprozeß durch das Steuerprogramm der CPU 1302 ausgeführt, kann aber durch Hardware mittels einer speziellen Zwecken dienenden Dekodierschaltung verarbeitet werden.
  • Ein Prozess zum Dekodieren von durch Kodieren des in Fig. 11 gezeigten Musters erhaltenen Kodedaten wird nachstehend unter Bezugnahme auf die in Fig. 15 und 16 gezeigten Ablaufdiagramme beschrieben. Dieser Prozess wird aus einem Zustand heraus begonnen, in dem der Dekodierer 1205 alle Kodedaten und die Gesamtanzahl von Zeilen entsprechend einem Muster eines Zeichenkodes, die aus dem Eingabepuffer 1203 gelesen wurden, aus dem Kodespeicher 107 in den Arbeitsbereich in dem RAM 1304 ausliest.
  • In Schritt S31 wird eine Tabelle vorangehender Zeilen einer Tabelle in dem Arbeitsbereich in dem RAM 1304 gelöscht. In Schritt S32 wird ein Zeilenkode (LINEDIF< ±1> oder LINEEQ) als obere Daten in Zeile 1 ausgelesen, und wird ein Inkrement/Dekrement von Rändern in der Tabelle in dem RAM 1304 gespeichert, wie in der Reihe von "Zeile 1" in Fig. 12 gezeigt. In dem Fall des in Fig. 11 gezeigten Musters wird der Kode "LINEEQ" von Zeile 1 zuerst ausgelesen, und schreitet, da in Schritt S33 ermittelt wird, dass alle Randprozesse für die aktuelle Zeile abgeschlossen sind, der Ablauf von Schritt S33 zu Schritt S34 fort. Da in Schritt S34 ermittelt wird, dass nicht alle Dekodierprozesse abgeschlossen sind, kehrt der Ablauf von Schritt S34 zu Schritt S32 zurück, um den Dekodierprozeß der nächsten Zeile (Zeile 2) zu beginnen. In Zeile 2 wird in Schritt S32 ein Zeilenkode "LINEDIF< +2> " ausgelesen, wie in Zeile 1, und werden Daten, die anzeigen, dass die Anzahl von Rändern um zwei erhöht ist, in der Tabelle gespeichert. In Schritt S36 wird ein Rahmenkode "OPEN< 6,3> " als der nächste Kode ausgelesen. Zu dieser Zeit schreitet der Ablauf von Schritt S37 zu Schritt S38 fort, um zu prüfen, ob der Kode "OPEN" ist ein Anfangskode eines schwarzen Punktes oder ein Anfangskode eines weißen Punktes ist.
  • In diesem Fall wird, da die Anzahl von so weit verarbeiteten Rändern eine gerade Zahl ist, ermittelt, dass der Kode "OPEN" ein Anfangskode eines schwarzen Punktes ist, und schreitet der Ablauf zu Schritt S39 fort, um Randpositionen in der Tabelle zu speichern, wie in der Reihe von "Zeile 2" in Fig. 12 gezeigt. Andererseits wird, falls die so weit verarbeitete Anzahl von Rändern eine ungerade Zahl ist, dieser Kode "OPEN" als ein Anfangskode eines weißen Punktes bestimmt.
  • In Zeile 3 wird in Schritt S32 ein Zeilenkode "LINEEQ" ausgelesen, und werden Daten, die anzeigen, dass die Anzahl von Rändern die selbe ist wie die in der vorangehenden Zeile, in der Tabelle gespeichert. In Schritt S36 wird ein Rahmenkode "ADV0" als der nächste Kode ausgelesen, und wird, da dieser Kode anzeigt, dass die Randposition unverändert bleibt, der Inhalt der in Schritt S42 aktualisierten Tabelle gleich dem der Zeile 2. Auf vergleichbare Art und Weise wird, da der nächste Rahmenkode ebenfalls "ADV0" ist, der Inhalt der in Schritt S42 aktualisierten Tabelle gleich dem der Zeile 2.
  • In Zeile 4 wird in Schritt S32 ein Zeilenkode "LINEEQ" ausgelesen, und werden Daten, die anzeigen, dass die Anzahl von Rändern die selbe ist wie die in der vorangehenden Zeile, in der Tabelle gespeichert. Ein Rahmenkode "ADV0" als der nächste Kode wird dann ausgelesen, und die entsprechende Randposition wird in Schritt S42 in der Tabelle gespeichert, wie in der Reihe von "Zeile 4" in Fig. 12 gezeigt. In Schritt S36 wird erneut der nächste Rahmenkode " ADV1" ausgelesen. Da diese Kodes anzeigen, dass die linke Randposition gleich bleibt und die rechte Randposition um eins nach rechts bewegt ist, wird die entsprechende Randposition in Schritt S42 in der Tabelle gespeichert, wie in der Reihe von "Zeile 4" in Fig. 12 gezeigt.
  • In Zeile 5 wird in Schritt S32 ein Zeilenkode "LINEDIF< +2> " ausgelesen, und werden Daten, die anzeigen, dass die Anzahl von Rändern um zwei erhöht ist, in der Tabelle gespeichert. Ein Rahmenkode "ADV1" als der nächste Kode wird dann ausgelesen, und in Schritt S42 wird ermittelt, dass die linke Randposition um eins nach links verschoben ist. In Schritt S44 wird darüber hinaus auf der Grundlage des nächsten Rahmenkodes "SW1" ermittelt, dass die rechte Randposition um eins nach links verschoben ist. Wie in der Reihe von "Zeile 5" in der Tabelle von Fig. 12 gezeigt, wird die zweite Randposition als ein Änderungspunkt wieder auf (9) fest gelegt. Ferner wird der nächste Kode "OPEN< 2,1> " ausgelesen, und da in Schritt S38 ermittelt wird, dass die Anzahl von so weit verarbeiteten Rändern eine gerade Zahl ist, wird dieser Kode "OPEN" als ein Anfangskode eines schwarzen Punktes bestimmt, und schreitet der Ablauf zu Schritt S39 fort. In Schritt S39 werden, da ein weiterer schwarzer Punkt mit der Breite eines Punktes an einer Position vorhanden ist, die durch drei Punkte von dem vorangehenden schwarzen Punkt nach rechts getrennt ist, neue Randänderungspunkte (12, 13) in der Tabelle gespeichert, wie in der Reihe von "Zeile 5" in Fig. 12 gezeigt.
  • Wenn Kodes "LINEDIF< +2> , ADV2, OPEN< 2,2> , ADV0, ADV0, ADV0" von Zeile 6 ausgelesen werden, wird die Anzahl von Rändern auf der Grundlage des Zeilenkodes "LINEDIF< +2> " um zwei auf 6 geändert, und wird die Änderungsposition der ersten Änderung auf der Grundlage des Rahmenkodes "ADV2" (3). Dann wird auf der Grundlage des Rahmenkodes "OPEN< 2,2> " ermittelt, dass weiße Punkte, die eine Randänderung von einem schwarzen Punkt auf einen weißen Punkt einschließen und die Breite von 2 Punkten haben, an einer Position beginnen, die um 3 größer als die Änderungsposition (3) des vorangehenden Rands ist. Zu dieser Zeit schreitet der Ablauf von Schritt S38 zu Schritt S40 fort, und werden ein Anfangspunkt (6) des in Fig. 11 gezeigten weißen Punkts 1002 und eine Randposition (8), die sich von einem weißen Punkt auf einen schwarzen Punkt ändert, fest gelegt.
  • Es wird auf der Grundlage der nachfolgenden Kodes "ADV0" ermittelt, dass die Positionen der drei anderen Ränder in Zeile 6 nicht verschoben sind. Die wie vorstehend beschrieben erhaltenen Randpositionen von Zeile 6 werden in der Tabelle gespeichert, wie in der Reihe von "Zeile 6" in Fig. 12 gezeigt.
  • Wenn Kodes "LINEEQ, SW2, ADV0, ADV0, ADV0, ADV0, ADV0" in Zeile 7 ausgelesen werden, wird auf der Grundlage des Zeilenkodes "LINEEQ" ermittelt, dass die Anzahl von Rändern die selbe ist wie die in der vorangehenden Zeile, und wird der linke Randänderungspunkt auf der Grundlage des Rahmenkodes "SW2" um zwei nach rechts bewegt. Darüber hinaus werden, da die Randpositionen des nachfolgenden schwarzen Punktes einschließlich der beiden Ränder des in Fig. 11 gezeigten weißen Punkts nicht verschoben sind, die Randpositionen in der Tabelle gespeichert, wie in der Reihe von "Zeile 7" in Fig. 12 gezeigt.
  • Wenn Kodes "LINEEQ, ADV1, ADV0, ADV0, ADV1, ADV0, ADV0" in Zeile 8 ausgelesen werden, wird auf der Grundlage des Zeilen kodes "LINEEQ" ermittelt, dass die Anzahl von Rändern die selbe ist wie die in der vorangehenden Zeile, und wird der linke Randänderungspunkt auf der Grundlage des Rahmenkodes "ADV1" so um eins nach links verschoben, dass er (4) wird. Der rechtsseitige Randänderungspunkt wird auf der Grundlage des nächsten Kodes "ADV1" von (9) auf (10) geändert. Dann werden alle Kodes in der Tabelle gespeichert, wie in der Reihe von "Zeile 8" in Fig. 12 gezeigt.
  • Wenn Kodes "LINEDIF< -4> , ADV0, CLOSE, CLOSE, ADV0" in Zeile 9 ausgelesen werden, wird auf der Grundlage des Zeilenkodes "LINEDIF< -4> " ermittelt, dass die Anzahl von Rändern um vier verringert ist und (2) wird, wird auf der Grundlage des Rahmenkodes "ADV0" ermittelt, dass die linke Randposition unverändert bleibt, und wird darüber hinaus auf der Grundlage des nächsten Rahmenkodes "CLOSE" ermittelt, das der weiße Punkt beendet ist. Bei Erfassung dieses Kodes "CLOSE" schreitet der Ablauf von Schritt S45 zu Schritt S46 fort, und werden die Randpositionen der vorangehenden Zeile entsprechend dem Kode "CLOSE" nicht zu der Reihe der nächsten Zeile in der Tabelle bewegt. Im einzelnen werden in Fig. 12, da Änderungspunkte (6) und (8) in Zeile 8 den Randpositionen dieses weißen Punkts 1002 entsprechen, diese Punkte nicht zu der Reihe von "Zeile 9" in der Tabelle bewegt. Wenn der nächste Kode "CLOSE" ausgelesen wird, werden die Koordinaten der Randpositionen entsprechend diesem Kode "CLOSE" nicht in der Reihe der nächsten Zeile in der Tabelle gespeichert. In diesem Fall entsprechen die Randpositionen entsprechend dem zweiten Kode "CLOSE" (10) und (12) in der Reihe von "Zeile 8" in der Tabelle von Fig. 12. Auf der Grundlage des letzten Kodes "ADV0" wird die Koordinate (13) der letzten Randposition in der Reihe von "Zeile 9" in der Tabelle gespeichert.
  • Schließlich wird, wenn Kodes "LINEDIF< -2> , CLOSE" in Zeile 10 ausgelesen werden, auf der Grundlage des Zeilenkodes "LINEDIF< -2> " ermittelt, dass die Anzahl von Rändern um 2 verringert ist und (0) wird, und werden auf der Grundlage des Rahmenkodes "CLOSE" die diesem Kode "CLOSE" entsprechenden Randpositionen nicht in der Reihe von "Zeile 10" in der Ta belle gespeichert.
  • Da die Anzahl von Zeilen in der in Fig. 12 gezeigten Tabelle 10 erreicht hat, sind die Dekodierprozesse aller Zeilen abgeschlossen, und schreitet der Ablauf von Schritt S34 zu Schritt S35 fort. In Schritt S35 wird ein Punktmuster auf dem Arbeitsbereich in dem RAM 1304 gemäß den in der in Fig. 12 gezeigten Tabelle gespeicherten Informationen erzeugt. Beispielsweise wird, wie in Fig. 11 gezeigt, die Musterentwicklung derart durchgeführt, dass weiße Punkte an allen Punktpositionen in Zeile 1 gebildet werden; schwarze Punkte an den sechsten bis achten Punktpositionen in jeder der Zeilen 2 und 3 gebildet werden; schwarze Punkte an den sechsten bis neunten Punktpositionen in Zeile 4 gebildet werden; und schwarze Punkte an den fünften bis achten Punktpositionen gebildet werden, weiße Punkte an den neunten bis 11-ten Punktpositionen gebildet werden, ein schwarzer Punkt an der 12-ten Punktposition gebildet wird, und ein weißer Punkt an der 13-ten Punktposition in Zeile 5 gebildet wird. In Zeile 6 werden schwarze Punkte an den dritten bis fünften Punktpositionen gebildet, werden weiße Punkte an den sechsten und siebten Punktpositionen gebildet, wird ein schwarzer Punkt an der achten Punktposition gebildet, werden weiße Punkte an den neunten bis 11-ten Punktpositionen gebildet, wird ein schwarzer Punkt an der 12-ten Punktposition gebildet, und werden weiße Punkte an den 13-ten und nachfolgenden Punktpositionen gebildet. Die folgenden Zeilen werden ebenfalls musterentwickelt, wie in Fig. 11 gezeigt, obwohl dies nicht näher beschrieben wird.
  • Auf diese Art und Weise werden die auf dem Arbeitsbereich des RAM 1304 entwickelten Musterdaten auf einander folgend in dem Seitenspeicher 1206 zum Speichern von Musterdaten für wenigstens eine Seite auf der Grundlage ihrer Positionsinformationen gespeichert, wenn ein Seitenendebefehl zugeführt wird oder wenn der Arbeitsbereich des RAM 1304 mit Daten gefüllt ist. Jedes Mal, wenn Musterdaten für eine Seite in dem Seitenspeicher 1206 gespeichert sind, werden sie als Videosignal über die Ausgabeeinheit 1207 an den Ausgabemechanismus 1208 ausgegeben und auf das Aufzeichnungsmaterial 1209 gedruckt oder auf der Anzeige 1204 angezeigt.
  • In dem ersten Ausführungsbeispiel wurde der erfindungsgemäße Kodierprozess unter Bezugnahme auf die Ablaufdiagramme von Fig. 7, 8A und 8B beschrieben. Der erfindungsgemäße Kodierprozess wird nachstehend unter Bezugnahme auf die in Fig. 17A und 17B bis 22 gezeigten Ablaufdiagramme näher beschrieben.
  • Der durch die CPU 502 in dem Kodierer 106 des ersten Ausführungsbeispiels auszuführende Kodierprozess wird nachstehend unter Bezugnahme auf die in Fig. 17A und 17B bis 22 gezeigten Ablaufdiagramme näher beschrieben. Dieser Prozess wird aus einem Zustand heraus begonnen, in dem die Leseeinheit 104 ein Zeichenmuster und dessen Gesamtanzahl von Zeilen entsprechend einem erforderlichen Zeichenkode aus dem Zeichenmustergenerator 103 auf der Grundlage einer Anweisung von der Tastatur 101 ausliest und das Zeichenmuster in dem Speicher 105 entwickelt und speichert.
  • In Schritt S2001 wird ein zu komprimierender Bereich von Musterdaten (beispielsweise das Zeichenmuster 201 in Fig. 2) ausgelesen. Der Ablauf schreitet zu Schritt S2002 fort, und die Tabelle in dem RAM 504 zum Speichern vorangehender Zeilendaten wird auf "0" gelöscht. In Schritt S2003 wird die Anzahl verarbeiteter Zeilen geprüft. Falls die Prozesse für alle Zeilen abgeschlossen sind, werden die Prozesse beendet.
  • Andererseits schreitet, falls die Prozesse für alle Zeilen nicht abgeschlossen sind, der Ablauf zu Schritt S2004 fort, und werden zu kodierende Daten einer Zeile (Punktdaten in der ersten Zeile) aus dem Speicher 105 ausgelesen und in dem Arbeitsbereich des RAM 504 gespeichert. Der Ablauf schreitet dann zu Schritt S2005 fort, und die Änderungspositionen von Punkten in diesem Punktmuster, d. h. die Randpositionen und die Anzahl von Rändern, werden in der Tabelle des RAM 504 gespeichert. Der Ablauf schreitet zu Schritt S2006 fort, und ein Prozessflag der vorangehenden Zeile wird auf EIN gesetzt. Wenn dieses Flag EIN ist, bedeutet dies, dass die Verarbei tung von Rändern in der vorangehenden Zeile eines interessierenden Punkts, d. h. die Kodeerzeugung, noch nicht abgeschlossen ist. Der Ablauf schreitet zu Schritt S2007 fort, und ein Prozessflag der aktuellen Zeile wird auf vergleichbare Art und Weise auf EIN gesetzt. Wenn dieses Flag EIN ist, bedeutet dies, dass die Verarbeitung von Rändern in der aktuellen Zeile des interessierenden Punkts, d. h. die Kodeerzeugung, noch nicht abgeschlossen ist. In Schritt S2008 wird die Anzahl von Rändern in der vorangehenden Zeile mit der Anzahl von Rändern in der aktuellen Zeile verglichen. Falls diese Anzahlen von Rändern zu einander gleich sind, schreitet der Ablauf zu Schritt S2009 fort, und wird ein Kode "LINEEQ" erzeugt. Falls diese Anzahlen von Rändern nicht zu einander gleich sind, schreitet der Ablauf zu Schritt S2010 fort, und wird die erhöhte oder verringerte Anzahl von Rändern berechnet, um einen Kode "LINEDIF< i> " zu erzeugen. In Schritt S2011 wird die Anzahl verarbeiteter Ränder geprüft. Falls ermittelt wird, dass die Prozesse aller Ränder abgeschlossen sind, schreitet der Ablauf zu Schritt S2012 fort, um die aktuelle Zeile als die vorangehende Zeile und die nächste Zeile als die aktuelle Zeile festzulegen. Danach kehrt der Ablauf zu Schritt S2003 zurück.
  • Andererseits schreitet, falls in Schritt S2011 ermittelt wird, dass die Randprozesse für eine Zeile nicht abgeschlossen sind, der Ablauf zu Schritt S2013 fort, und werden die Farben von Punkten in der vorangehenden und der aktuellen Zeile auf der linken Seite einer interessierenden aktuellen Randposition sowie die Farben von Punkten in der vorangehenden und der aktuellen Zeile auf der rechten Seite der interessierenden aktuellen Randposition geprüft. Es wird angemerkt, dass der Inhalt in Schritt S2013 bedeutet, dass die Farbe eines Punkts in der vorangehenden Zeile, die einer interessierenden aktuellen Position entspricht, weiß ist (oben links), und die Farbe eines Punkts in der interessierenden Position in der aktuellen Zeile ebenfalls weiß ist. Der Inhalt in Schritt S2013 bedeutet darüber hinaus, dass dann, wenn Punkte auf der rechten Seite der interessierenden Posi tion geprüft werden, der nächste Rand zuerst in der vorangehenden Zeile gefunden wird, die Farbe eines Punkts in der vorangehenden Zeile entsprechend dieser Position schwarz ist (oben rechts), und die Farbe eines Punkts in der aktuellen Zeile noch immer weiß ist (unten rechts). Dasselbe gilt für die Schritte S2014 bis S2024. Falls in Schritt S2013 ermittelt wird, dass die Farben der Punkte in beiden Zeilen auf der linken Seite der interessierenden Randposition weiß sind und die Farbe des Punkts in nur der vorangehenden Zeile auf der rechten Seite der interessierenden Randposition weiß ist, schreitet der Ablauf zu Schritt S2025 fort; andernfalls schreitet der Ablauf zu Schritt S2014 fort. In Schritt S2025 werden Punkte in der aktuellen und der vorangehenden Zeilen auf der rechten Seite der interessierenden Randposition geprüft, um den interessierenden Punkt auf die nächste Randposition in entweder der aktuellen oder der vorangehenden Zeile fortzuschalten. Der Ablauf schreitet zu Schritt S2026 fort, um das Prozessflag der aktuellen Zeile auf AUS zu setzen, und der Ablauf kehrt zu Schritt S2011 zurück.
  • Falls in Schritt S2014 ermittelt wird, dass die Farben der Punkte in beiden Zeilen auf der linken Seite der interessierenden Randposition weiß sind und die Farben der Punkte in beiden Zeilen auf der rechten Seite der interessierenden Randposition schwarz sind, schreitet der Ablauf zu Schritt S2037 fort; andernfalls schreitet der Ablauf zu Schritt S2015 fort.
  • Falls in Schritt S2015 ermittelt wird, dass die Farben der Punkte in beiden Zeilen auf der linken Seite der interessierenden Randposition weiß sind und die Farbe des Punkts in nur der vorangehenden Zeile auf der rechten Seite der interessierenden Randposition weiß ist, schreitet der Ablauf zu Schritt S2027 fort; andernfalls schreitet der Ablauf zu Schritt S2016 fort. In Schritt S2027 werden Punkte in der aktuellen und der vorangehenden Zeile auf der rechten Seite der interessierenden Randposition geprüft, um den interessierenden Punkt zu der nächsten Randposition in entweder der aktuellen oder der vorangehenden Zeile fortzuschalten. Der Ablauf schreitet dann zu Schritt S2028 fort, um das Prozessflag der vorangehenden Zeile auf AUS zu setzen, und der Ablauf kehrt zu Schritt S2011 zurück.
  • Falls in Schritt S2016 ermittelt wird, dass die Farbe des Punkts in nur der aktuellen Zeile auf der linken Seite der interessierenden Randposition weiß ist und die Farben der Punkte in beiden Zeilen auf der rechten Seite der interessierenden Randposition weiß sind, schreitet der Ablauf zu Schritt S2029 fort; andernfalls schreitet der Ablauf zu Schritt S2017 fort. In Schritt S2029 wird das Prozessflag der aktuellen Zeile geprüft. Falls in Schritt S2029 ermittelt wird, dass das Prozessflag der aktuellen Zeile AUS ist, schreitet der Ablauf zu Schritt S2057 fort; andernfalls schreitet der Ablauf zu Schritt S2037 fort.
  • Falls in Schritt S2017 ermittelt wird, dass die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der linken Seite der interessierenden Randposition schwarz bzw. weiß sind und die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der rechten Seite der interessierenden Randposition weiß bzw. schwarz sind, schreitet der Ablauf zu Schritt S2040 fort; andernfalls schreitet der Ablauf zu Schritt S2018 fort. Wenn in Schritt S2018 ermittelt wird, dass die Farbe des Punkts in nur der vorangehenden Zeile auf der linken Seite der interessierenden Randposition schwarz ist und die Farben von Punkten in beiden Zeilen auf der rechten Seite der interessierenden Randposition schwarz sind, schreitet der Ablauf zu Schritt S2030 fort; andernfalls schreitet der Ablauf zu Schritt S2019 fort. In Schritt S2030 wird das Prozessflag der vorangehenden Zeile geprüft. Falls in Schritt S2030 ermittelt wird, dass das Prozessflag der vorangehenden AUS Zeile ist, schreitet der Ablauf zu Schritt S2053 fort; andernfalls schreitet der Ablauf zu Schritt S2037 fort.
  • Falls in Schritt S2019 ermittelt wird, dass die Farbe des Punkts in nur der vorangehenden Zeile auf der linken Seite der interessierenden Randposition weiß ist und die Farben von Punkten in beiden Zeilen auf der rechten Seite der interessierenden Randposition schwarz sind, schreitet der Ablauf zu Schritt S2031 fort; andernfalls schreitet der Ablauf zu Schritt S2020 fort. In Schritt S2031 wird das Prozessflag der aktuellen Zeile geprüft. Falls in Schritt S2031 ermittelt wird, dass das Prozessflag der aktuellen Zeile AUS ist, schreitet der Ablauf zu Schritt S2057 fort; andernfalls schreitet der Ablauf zu Schritt S2037 fort.
  • Falls in Schritt S2020 ermittelt wird, dass die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der linken Seite der interessierenden Randposition weiß bzw. schwarz sind und die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der rechten Seite der interessierenden Randposition schwarz bzw. weiß sind, schreitet der Ablauf zu Schritt S2040 fort; andernfalls schreitet der Ablauf zu Schritt S2021 fort.
  • Falls in Schritt S2021 ermittelt wird, dass die Farbe des Punkts in nur der vorangehenden Zeile auf der linken Seite der interessierenden Randposition weiß ist und die Farben der Punkte in beiden Zeilen auf der rechten Seite der interessierenden Randposition weiß sind, schreitet der Ablauf zu Schritt S2032 fort; andernfalls schreitet der Ablauf zu Schritt S2022 fort. In Schritt S2032 wird das Prozessflag der vorangehenden Zeile geprüft. Falls in Schritt S2032 ermittelt wird, dass das Prozessflag der vorangehenden Zeile AUS ist, schreitet der Ablauf zu Schritt S2053 fort; andernfalls schreitet der Ablauf zu Schritt S2037 fort.
  • Falls in Schritt S2022 ermittelt wird, dass die Farben von Punkten in beiden Zeilen auf der linken Seite der interessierenden Randposition schwarz sind und die Farbe des Punkts in nur der vorangehenden Zeile auf der rechten Seite der interessierenden Randposition weiß ist, schreitet der Ablauf zu Schritt S2033 fort; andernfalls schreitet der Ablauf zu Schritt S2023 fort. In Schritt S2033 werden Punkte in der aktuellen und der vorangehenden Zeile auf der rechten Seite der interessierenden Randposition geprüft, um den interessieren den Punkt auf die nächste Randposition in entweder der aktuellen oder der vorangehenden Zeile fortzuschalten. Der Ablauf schreitet zu Schritt S2034 fort, um das Prozessflag der aktuellen Zeile auf AUS zu setzen, und der Ablauf kehrt zu Schritt S2011 zurück.
  • Falls in Schritt S2023 ermittelt wird, dass die Farben der Punkte in beiden Zeilen auf der linken Seite der interessierenden Randposition schwarz sind und die Farben der Punkte in beiden Zeilen auf der rechten Seite der interessierenden Randposition weiß sind, schreitet der Ablauf zu Schritt S2037 fort; andernfalls schreitet der Ablauf zu Schritt S2024 fort.
  • Falls in Schritt S2024 ermittelt wird, dass die Farben der Punkte in beiden Zeilen auf der linken Seite der interessierenden Randposition schwarz sind und die Farbe des Punkts in nur der aktuellen Zeile auf der rechten Seite der interessierenden Randposition weiß ist, schreitet der Ablauf zu Schritt S2035 fort; andernfalls kehrt der Ablauf zu Schritt S2011 zurück. In Schritt S2035 werden Punkte in der aktuellen und der vorangehenden Zeilen auf der rechten Seite der interessierenden Randposition geprüft, um den interessierenden Punkt auf die nächste Randposition in entweder der aktuellen oder der vorangehenden Zeile fortzuschalten. Der Ablauf schreitet zu Schritt S2036 fort, um das Prozessflag der vorangehenden Zeile auf AUS zu setzen, und der Ablauf kehrt zu Schritt S2011 zurück.
  • In Schritt S2037 werden Punkte in der aktuellen und der vorangehenden Zeilen auf der rechten Seite der interessierenden Randposition geprüft, um den interessierenden Punkt auf die nächste Randposition in entweder der aktuellen oder der vorangehenden Zeile fortzuschalten. Der Ablauf schreitet zu Schritt S2038 fort, um das Prozessflag der vorangehenden Zeile auf EIN zu setzen. Der Ablauf schreitet dann zu Schritt S2039 fort, um das Prozessflag der aktuellen Zeile auf EIN zu setzen, und schreitet dann zu Schritt S2044 fort.
  • In Schritt S2040 wird das Prozessflag der vorangehenden Zeile geprüft. Falls in Schritt S2040 ermittelt wird, dass das Prozessflag der vorangehenden Zeile EIN ist, schreitet der Ablauf zu Schritt S2041 fort; andernfalls schreitet der Ablauf zu Schritt S2042 fort. In Schritt S2041 wird ermittelt, dass die Farbe des Punkts auf der linken Seite des interessierenden Punkts die selbe ist wie die auf der rechten Seite des interessierenden Punkts in der vorangehenden Zeile, und wird der Prozess fortgesetzt. Beispielsweise wird dann, wenn die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der linken Seite des interessierenden Punkts weiß bzw. schwarz sind und die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der rechten Seite des interessierenden Punkts schwarz bzw. weiß sind, in einer Verarbeitung des nächsten Rands ebenfalls ermittelt, dass die Farbe des Punkts in der vorangehenden Zeile auf der linken Seite des interessierenden Punkts schwarz ist. Der Ablauf schreitet dann zu Schritt S2044 fort.
  • In Schritt S2042 wird das Prozessflag der aktuellen Zeile geprüft. Falls in Schritt S2042 ermittelt wird, dass das Prozessflag der aktuellen Zeile EIN ist, schreitet der Ablauf zu Schritt S2043 fort; andernfalls kehrt der Ablauf zu Schritt S2011 zurück. In diesem Fall wird dann, wenn Prozesse normal durchgeführt werden, das Flag der aktuellen Zeile niemals auf AUS gesetzt. In Schritt S2043 wird ermittelt, dass die Farbe des Punkts auf der linken Seite des interessierenden Punkts die selbe ist wie die auf der rechten Seite des interessierenden Punkts in der aktuellen Zeile, und wird der Prozess fortgesetzt. Beispielsweise wird dann, wenn die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der linken Seite des interessierenden Punkts schwarz bzw. weiß sind und die Farben der Punkte in der vorangehenden und der aktuellen Zeile auf der rechten Seite des interessierenden Punkts weiß bzw. schwarz sind, in einer Verarbeitung des nächsten Rands ebenfalls ermittelt, dass die Farbe des Punkts in der vorangehenden Zeile auf der linken Seite des interessierenden Punkts weiß ist. Der Ablauf schreitet dann zu Schritt S2044 fort.
  • In Schritt S2044 werden die Zustände der vorangehenden und der aktuellen Zeile an der vorangehenden Randposition vor dem interessierenden Punkt bevor der interessierende Punkt nach rechts fortgeschaltet wurde erneut geprüft, und schreitet der Ablauf dann, wenn ermittelt wird, dass Ränder in der vorangehenden und der aktuellen Zeile an der selben Position vorhanden sind, zu Schritt S2045 fort. In Schritt S2045 wird ein Kode "ADV0" erzeugt, und kehrt der Ablauf zu Schritt S2011 zurück. Andererseits schreitet dann, wenn Ränder in der vorangehenden und der aktuellen Zeile an der selben Position nicht vorhanden sind, der Ablauf zu Schritt S2046 fort.
  • In Schritt S2046 werden die Zustände der vorangehenden und der aktuellen Zeile an der vorangehenden Randposition bevor der interessierende Punkt nach rechts fortgeschaltet wurde erneut geprüft, und schreitet der Ablauf dann, wenn ermittelt wird, dass die Randposition in der aktuellen Zeile auf der linken Seite der Randposition in der vorangehenden Zeile vorhanden ist, zu Schritt S2047 fort. Die Richtung des Randes wird geprüft, und falls ermittelt wird, dass der Rand ein linksseitiger Rand ist, wird in Schritt S2048 ein Unterschied zwischen den Randpositionen berechnet, um einen Kode "ADV(i)" S2048 zu erzeugen. Danach schreitet der Ablauf zu Schritt S2011 fort. Andererseits wird dann, wenn in Schritt S2047 ermittelt wird, dass der Rand ein rechtsseitiger Rand ist, in Schritt S2049 ein Unterschied zwischen den Randpositionen berechnet, um einen Kode "SW(i) zu erzeugen. Danach schreitet der Ablauf zu Schritt S2011 fort.
  • Falls in dem vorstehend beschriebenen Schritt S2046 ermittelt wird, dass die Randposition in der aktuellen Zeile auf der rechten Seite der Randposition der vorangehenden Zeile vorhanden ist, schreitet der Ablauf zu Schritt S2050 fort. Die 'Richtung' des Randes wird geprüft. Falls ermittelt wird, dass sich der Rand nach rechts bewegt, d. h. der Rand ein rechtsseitiger Rand eines Rahmens ist, dann wird in Schritt S2051 ein Unterschied (i) zwischen den Randpositionen berech net, um einen Kode "ADV(i)" zu erzeugen. Danach schreitet der Ablauf zu Schritt S2011 fort. Andererseits wird dann, wenn in Schritt S2050 ermittelt wird, dass der Rand ein linksseitiger Rand ist, in Schritt S2052 ein Unterschied (i) zwischen den Randpositionen berechnet, um einen Kode "SW(i)" zu erzeugen. Danach schreitet der Ablauf zu Schritt S2011 fort.
  • In Schritt S2053 wird die Entfernung zwischen der unmittelbar vorangehenden Randposition in der aktuellen Zeile und der aktuellen interessierenden Randposition berechnet, und schreitet der Ablauf zu Schritt S2054 fort, um einen Kode "OPEN(i)" gemäß der berechneten Entfernung zu erzeugen. In Schritt S2055 wird das Prozessflag der vorangehenden Zeile auf EIN gesetzt. In Schritt S2056 werden Punkte in der aktuellen und der vorangehenden Zeile auf der rechten Seite der interessierenden Randposition geprüft, um den interessierenden Punkt auf die nächste Randposition in entweder der aktuellen oder der vorangehenden Zeile fortzuschalten, und kehrt der Ablauf zu Schritt S2011 zurück.
  • In Schritt S2057 wird ein Kode "CLOSE" erzeugt. In Schritt S2058 wird das Prozessflag der aktuellen Zeile auf EIN gesetzt. In Schritt S2059 werden Punkte in der aktuellen und der vorangehenden Zeile auf der rechten Seite der interessierenden Randposition geprüft, um den interessierenden Punkt auf die nächste Randposition in entweder der aktuellen oder der vorangehenden Zeile fortzuschalten, und kehrt der Ablauf zu Schritt S2011 zurück.
  • Nachstehend werden Bedingungen zum Beurteilen, ob ein Punkt in der aktuellen Zeile mit einem Punkt in der vorangehenden Zeile kontinuierlich ist oder nicht, unter Bezugnahme auf die in Fig. 17A und 17B bis 22 gezeigten Ablaufdiagramme und in Fig. 9 und 10 gezeigte Punktmuster beschrieben.
  • In Fig. 9 werden dann, wenn die Größe jedes schwarzen Punkts als ein Punkt definiert ist, die schwarzen Punkte 802a bis 802c als kontinuierliche Punkte verarbeitet, und wird der schwarze Punkt 803 als ein unabhängiger Punkt verarbeitet. Im einzelnen wird in Schritt S2015 oder S2017 geprüft, ob die vorangehende Zeile einen schwarzen Punkt einschließt, der mit einem schwarzen Punkt in der aktuellen Zeile kontinuierlich ist. Falls ein solcher schwarzer Punkt in der unmittelbar vorangehenden Zeile nicht eingeschlossen ist, schreitet der Ablauf in dem nächsten Randprozess von Schritt S2032 zu Schritt S2053 fort, und wird der oberste Abschnitt des schwarzen Punkts 802a als ein Kode "OPEN" kodiert. Daher wird die erste Zeile als "LINEDIF< +2> , OPEN< 2,1> " kodiert. Ein schwarzer Punktabschnitt 802b in der zweiten Zeile wird als ein mit dem schwarzen Punkt 802a in der vorangehenden Zeile kontinuierlicher schwarzer Punkt ermittelt. Folglich wird in Schritt S2048 ein Kode "ADV1" erzeugt, und wird in Schritt S2049 ein Kode "SW1" erzeugt. In Schritt S2059 wird der schwarze Punkt 803 als ein Kode "OPEN< 0,1> " kodiert. Daher wird die zweite Zeile als "LINEDIF< +2> , ADV1, SW1, OPEN< 0,1> " kodiert. Auf vergleichbare Art und Weise wird der schwarze Punkt 802c als ein mit dem schwarzen Punkt 802b kontinuierlicher schwarzer Punkt ermittelt. Folglich wird in Schritt S2052 ein Kode "SW1" erzeugt, und wird in Schritt S2051 ein Kode "ADV1" erzeugt. In Schritt S2057 wird der schwarze Punkt 803 in der zweiten Zeile als ein Kode "CLOSE" kodiert. Auf diese Art und Weise wird die dritte Zeile des in Fig. 9 gezeigten Musters 801 als "LINEDIF< -2> ", SW1, ADV1 CLOSE" kodiert. In Schritt S2057 wird ein Kode "CLOSE" gemäß dem schwarzen Punkt 802c in der dritten Zeile erzeugt, und wird die vierte Zeile als "LINEDIF< -2> , CLOSE" kodiert.
  • Auf diese Art und Weise ist das kodierte Ergebnis wie folgt.
  • Zeile 1: LINEDIF< +2> , OPEN< 2,1>
  • Zeile 2: LINEDIF< +2> , ADV1, SW1, OPEN< 0,1>
  • Zeile 3: LINEDIF< -2> , SW1, ADV1, CLOSE
  • Zeile 4: LINEDIF< -2> , CLOSE
  • Die vorstehend erwähnten kodierten Kodes werden in der Praxis durch die in Fig. 4 und 5 gezeigten Kodedaten wie folgt ausgedrückt und zusammen mit der Gesamtanzahl von Zeilen (= 4) in Übereinstimmung mit Identifikationsinformationen (bei spielsweise ein Zeichenkode) zum Identifizieren eines erforderlichen Musters in dem Kodespeicher 107 gespeichert:
  • Zeile 1: 1001011111000100001
  • Zeile 2: 1001010111011111000000001
  • Zeile 3: 10011111010111111
  • Zeile 4: 10011111111
  • Auf vergleichbare Art und Weise werden ebenso in dem Fall des in Fig. 10 gezeigten Punktmusters die schwarzen Punkte 902a und 902b als kontinuierliche Punkte verarbeitet. Im einzelnen wird in Schritt S2017 geprüft, ob die vorangehende Zeile einen schwarzen Punkt einschließt, der mit einem schwarzen Punkt in der aktuellen Zeile kontinuierlich ist. Falls die unmittelbar vorangehende Zeile keinen solchen schwarzen Punkt einschließt, schreitet der Ablauf in der nächsten Randverarbeitung von Schritt S2032 zu Schritt S2053 fort und wird der oberste Teil des schwarzen Punkts 902a als ein Kode "OPEN" kodiert. Daher wird die erste Zeile als "LINEDIF< +2> , OPEN< 1,2> " kodiert. Ein schwarzer Punktabschnitt 902a in der zweiten Zeile wird als ein mit dem schwarzen Punkt 902a in der vorangehenden Zeile kontinuierlicher schwarzer Punkt ermittelt. Folglich wird in Schritt S2045, ein Kode "ADV0" erzeugt, und wird in Schritt S2049 ein Kode "SW1" erzeugt. Ein schwarzer Punktabschnitt 902b wird in Schritt S2054 als ein Kode "OPEN< 0,1> " kodiert. Daher wird die zweite Zeile als "LINEDIF< +2> , ADV0, SW1, OPEN< 0,1> " kodiert. In der nächsten Zeile wird der schwarze Punkt 902b als ein mit dem schwarzen Punkt 902a kontinuierlicher schwarzer Punkt ermittelt und in Schritt S2052 als ein Kode "SW1" kodiert. In Schritt S2057 wird der weiße Punkt 903 in der zweiten Zeile als ein Kode "CLOSE" kodiert.
  • Schließlich wird in Schritt S2057 ein Kode "ADV0" erzeugt. Folglich wird die dritte Zeile des in Fig. 10 gezeigten Musters als "LINEDIF< -2> , SW1, CLOSE, ADV0" kodiert. In Schritt S2057 wird ein Kode "CLOSE" gemäß dem schwarzen Punkt 902b in der dritten Zeile erzeugt, und wird die vierte Zeile als "LINEDIF< -2> , CLOSE" kodiert.
  • Die vorstehend erwähnten kodierten Kodes werden in der Praxis durch die in Fig. 4 und 5 gezeigten Kodedaten ausgedrückt und zusammen mit der Gesamtanzahl von Zeilen in Übereinstimmung mit Identifikationsinformationen (beispielsweise ein Zeichenkode) zum Identifizieren eines erforderlichen Musters in dem Kodespeicher 107 gespeichert.
  • Nachstehend wird ein Prozess zum Kodieren des in Fig. 11 gezeigten Punktmusters unter Bezugnahme auf die in den vorstehend erwähnten Ablaufdiagrammen von Fig. 17A und 17B bis 22 gezeigte Prozessfolge beschrieben.
  • In Fig. 11 schreitet, da die Zeile 1 keinen schwarzen Punkt einschließt, der Ablauf von Schritt S2004 zu Schritt S2009 fort, und wird in Zeile 1 ein Kode "LINEEQ" (Kodedaten "0") allein erzeugt. Da die Zeile 2 schwarze Punkte einschließt, schreitet der Ablauf von Schritt S2004 zu Schritt S2005 fort und werden Randpositionen (6) und (9) als Punktänderungspositionen sowie die Anzahl "2" von Rändern in der Tabelle (Fig. 12) in dem RAM 504 gespeichert. Da die Anzahl von Rändern verglichen zu der Anzahl (0) von Rändern in der vorangehenden Zeile um zwei erhöht ist, wird in Schritt S2010 ein Kode "LINEDIF< +2> " (Kodedaten "10010") erzeugt. Ferner schreitet, da in Schritt S2015 ermittelt wird, dass Punkte in sowohl der vorangehenden als auch der aktuellen Zeile auf der linken Seite des Randes weiße Punkte sind und Punkte in der vorangehenden und der aktuellen Zeile auf der rechten Seite des Randes jeweils ein weißer Punkt und ein schwarzer Punkt sind, der Ablauf in dem nächsten Randprozess von Schritt S2021 zu Schritten S2032 und S2053 fort und wird in Schritt S2054 ein Kode "OPEN< 6,3 (= 9 - 6)> " (Kodedaten "11111001100011") erzeugt.
  • Da die Zeile 3 die selbe Anzahl von Rändern hat wie die der vorangehenden Zeile, wird in Schritt S2009 ein Kode "LINEEQ" erzeugt. Da in Schritt S2014 ermittelt wird, dass der schwarze Punkt in der aktuellen Zeile mit einem schwarzen Punkt in der vorangehenden Zeile kontinuierlich ist, werden die Randpositionen in Schritt S2044 geprüft. Da die Randpositionen mit denen in Zeile 2 zusammenfallen, werden in Schritt S2045 ein Kode "ADV0" (Kodedaten "0") für den linken Rand und ein Kode "ADV0" für den rechten Rand erzeugt.
  • Da die Zeile 4 die selbe Anzahl von Rändern hat wie die in der vorangehenden Zeile, wird in Schritt S2009 ein Kode "LINEEQ" erzeugt, und wird in Schritt S2045 ein Kode "ADV0" für den linken Rand erzeugt. Da die rechte Randposition um eins nach rechts verschoben ist, wird in Schritt S2051 ein Kode "ADV1" für den rechten Rand S2051 erzeugt.
  • In Zeile 5 werden, da die Anzahl von Rändern um zwei erhöht ist, in Schritt S2010 ein Kode "LINEDIF< +2> erzeugt, in Schritt S2048 ein Kode "ADV1" (Kodedaten "10") für den linken Rand von kontinuierlichen Punkten erzeugt, und in Schritt S2049 ein Kode "SW1" (Kodedaten "1110") für den rechten Rand erzeugt.
  • Danach schreitet, da sich der schwarze Punkt 1001 in Fig. 11 an der Randposition (12) befindet, der Ablauf zu Schritt S2054 fort, und wird für diesen schwarzen Punkt ein Kode "OPEN< 2 (= 12 - 9 - 1), 1> " (Kodedaten "11111000100001") erzeugt.
  • In Zeile 6 wird, da die Anzahl von Rändern verglichen zu der in Zeile 5 um zwei erhöht ist, in Schritt S2010 ein Kode "LINEDIF< +2> " erzeugt. Da der linke Rand von linken kontinuierlichen schwarzen Punkten um zwei Punkte in der Vorwärtsrichtung verschoben ist, wird er in Schritt S2048 als ein Kode "ADV2" kodiert. Da in Schritt S2020 ermittelt wird, dass die vorangehende Zeile (Zeile 5) keinen mit einem interessierenden weißen Punkt kontinuierlichen weißen Punkt auf der aktuellen Zeile (Zeile 6) einschließt, schreitet der Ablauf zu Schritt S2054 fort und wird für diesen weißen Punkt ein Kode "OPEN< 2,2> " erzeugt.
  • In Schritt S2045 wird ein Kode "ADV0" erzeugt. Schließlich wird in Schritt S2045 ein Kode "ADV0" für den linken Rand des schwarzen Punkts unterhalb Punkt 1001 erzeugt, und wird in Schritt S2045 ein Kode "ADV0" für den rechten Rand des selben erzeugt.
  • Auf vergleichbare Art und Weise werden in Zeile 7 ein Kode "LINEEQ" in Schritt S2009; ein Kode "SW2" in Schritt S2052; ein Kode "ADV0" in Schritt S2045; ein Kode "ADV0" in Schritt S2045; ein Kode "ADV0" in Schritt S2045; ein Kode "ADV0" in Schritt S2045; und ein Kode "ADV0" in Schritt S2045 erzeugt.
  • Auf vergleichbare Art und Weise werden in Zeile 8 ein Kode "LINEEQ" in Schritt S2009; ein Kode "ADV1" in Schritt S2048; ein Kode "ADV0" in Schritt S2045; ein Kode "ADV0" in Schritt S2045; ein Kode "ADV1" in Schritt S2051; ein Kode "ADV0" in Schritt S2045; und ein Kode "ADV0" in Schritt S2045 erzeugt.
  • In Zeile 9 wird, da die Anzahl von Rändern verglichen zu der in Zeile 8 um vier verringert ist, in Schritt S2010 ein Kode "LINEDIF< -4> erzeugt, und wird in kontinuierlichen schwarzen Punkten in Schritt S2045 ein Kode "ADV0" für einen linken Rand erzeugt. Da die vorangehenden Zeile (Zeile 8) einen weißen Punkt (weißer Punkt 1002 in Fig. 11) einschließt, der nicht mit der aktuellen Zeile (Zeile 9) kontinuierlich ist, wird in Schritt S2057 ein Kode "CLOSE" (Kodedaten "111111") erzeugt. Ferner wird, da die vorangehende Zeile einen weiteren weißen Punkt (weißer Punkt 1003 in Fig. 11) einschließt, der nicht mit der aktuellen Zeile kontinuierlich ist, in Schritt S2057 ein Kode "CLOSE" (Kodedaten "111111") für diesen Abschnitt erzeugt. Schließlich wird in Schritt S2045 ein Kode "ADV0" erzeugt.
  • In Zeile 10 werden in Schritt S2010 ein Kode "LINEDIF< -2> " und in Schritt S2057 ein Kode "CLOSE" erzeugt, wodurch der Prozess beendet wird.
  • Das vorstehend erwähnte Kodierungsergebnis ist wie folgt:
  • Zeile 1: LINEEQ
  • Zeile 2: LINEDIF< +2> , OPEN< 6,3>
  • Zeile 3: LINEEQ, ADV0, ADV0
  • Zeile 4: LINEEQ, ADV0, ADV1
  • Zeile 5: LINEDIF< +2> , ADV1, SW1, OPEN< 2,1>
  • Zeile 6: LINEDIF< +2> , ADV2, OPEN< 2,2> , ADV0, ADV0, ADV0
  • Zeile 7: LINEEQ, SW2, ADV0, ADV0, ADV0, ADV0, ADV0
  • Zeile 8: LINEEQ, ADV1, ADV0, ADV0, ADV1, ADV0, ADV0
  • Zeile 9: LINEDIF< -4> , ADV0, CLOSE, CLOSE, ADV0
  • Zeile 10: LINEDIF< -2> , CLOSE
  • Diese kodierten Kodes werden in Wirklichkeit durch die in Fig. 4 und 5 gezeigten Kodedaten ausgedrückt und in dem Kodespeicher 107 als in der Abtastreihenfolge (von links nach rechts der Abtastzeile) von Musterdaten komprimierte Kodes zusammen mit der Gesamtanzahl von Zeilen in Übereinstimmung mit Identifikationsinformationen (beispielsweise ein Zeichenkode) zum Identifizieren des erforderlichen Musters gespeichert. Im einzelnen speichert der Kodespeicher 107 Kodedaten so, dass ein durch die gespeicherten Kodedaten ausgedrücktes Muster identifiziert werden kann. Beispielsweise werden die Kodedaten in Entsprechung zu einem Zeichenkode gespeichert.
  • Nachstehend wird eine Bilderzeugungsvorrichtung des zweiten Ausführungsbeispiels, welche die vorstehend erwähnten Kodier- und Dekodier-Prozesse durchführt, beschrieben.
  • [Bilderzeugungsvorrichtung]
  • In dem zweiten Ausführungsbeispiel wird ein Laserstrahldrucker beispielhaft als eine Bilderzeugungsvorrichtung zum Ausführen der Kodier- und Dekodier-Prozesse beschrieben.
  • Fig. 23 ist ein Blockdiagramm, das eine vereinfachte Anordnung eines Laserstrahldruckers zum Ausführen von Kodier- und Dekodier-Prozessen gemäß dem zweiten Ausführungsbeispiel zeigt, um den Ablauf von Prozessen einer Drucker-Steuereinheit 3001 zu erklären.
  • In Fig. 23 gibt eine externe Vorrichtung 3101, wie beispielsweise ein Hostcomputer, der als eine Druckdaten-Erzeugungsquelle dient, z. B. Zeicheninformationen, die aus Zeichenmusterdaten, einem Zeichenkode, Positionsinformationen und der gleichen bestehen, unter Verwendung einer (nicht gezeigten) Tastatur oder der gleichen aus. Eine Eingabeeinheit 3102 führt eine Kommunikationssteuerung mit der externen Vorrichtung 3101 durch und speichert eingegebene Zeicheninformationen und der gleichen in einem Eingabepuffer 3103. Der Eingabepuffer 3103 hat eine Kapazität zum Speichern von Zeicheninformationen für wenigstens eine Seite. Eine Anzeige 3104 zeigt ein musterentwickeltes Bild, Mitteilungen an einen Bediener und der gleichen an. Ein Kodierer 3105 liest Zeichenmusterdaten von aus dem Eingabepuffer 3103 aus und führt Kodierprozesse durch. Der Kodierer 3105 speichert kodierte Zeichenmusterdaten und die Gesamtanzahl von Zeilen eines Zeichenmusters in einem Kodespeicher 3107. Der Kodespeicher 3107 speichert kodierte Kodedaten und eine Gesamtanzahl von Zeilen eines erforderlichen Zeichenmusters. Der Kodespeicher 3107 ist nicht auf einen solchen beschränkt, der in der Bilderzeugungsvorrichtung, wie beispielsweise einem Laserstrahldrucker 1500, integriert ist, sondern kann ein von der Bilderzeugungseinrichtung lösbares, externes Speichermedium, eine Festplatte oder der gleichen sein. Ein Dekodierer 3106 empfängt einen Zeichenkode für ein Zeichen und dessen Positionsinformationen von dem Eingabepuffer 3103, liest Kodedaten und die Gesamtanzahl von Zeilen entsprechend dem empfangenen Zeichenkode aus und führt Dekodierprozesse aus. Der Dekodierer 3106 speichert dekodierte Zeichenmusterdaten in einem (noch zu beschreibenden) Seitenspeicher 3108 auf der Grundlage ihrer Positionsinformationen. Der Seitenspeicher 3108 speichert Musterdaten für wenigstens eine Seite. Eine Ausgabeeinheit 3109 führt eine EIN/AUS-Steuerung eines Laserstrahls durch, um einen Ausgabemechanismus 3110 zu veranlassen, ein Druckergebnis auf einem Aufzeichnungsmaterial 3111, wie beispielsweise ein Papierblatt, aufzuzeichnen.
  • Fig. 24 zeigt die detaillierte Anordnung der Drucker-Steuereinheit 3001 in dem zweiten Ausführungsbeispiel. In Fig. 24 ist die Drucker-Steuereinheit 3001 mit der externen Vorrichtung 3101 zum Ausgeben von Zeichenmusterdaten, einem Zeichenkode, Positionsinformationen und der gleichen verbunden. Eine Eingabeschnittstelle 3301 empfängt Zeichenmusterdaten, einen Zeichenkode, Positionsinformationen und der gleichen von der externen Vorrichtung 3101. Eine CPU 3302 steuert die gesamte Drucker-Steuereinheit einschließlich der Kodier- und Dekodier-Prozesse. Im einzelnen steuert die CPU 3302 eine Anzeige auf der Anzeige 3104. Darüber hinaus steuert die CPU 3302 einen Lesezugriff auf ein Zeichenmuster und die Gesamtanzahl von Zeilen von dem Kodierer 3105 sowie einen Schreibzugriff von Kodedaten und der Gesamtanzahl von Zeilen in dem Kodespeicher 3107 in Übereinstimmung mit dem vorstehend erwähnten Kodiersteuerprogramm (gezeigt in den Ablaufdiagrammen von Fig. 7, 8A und 8B oder Fig. 17A und 17B bis 22) und verschiedenen, in einem ROM 3303 gespeicherten Daten. Ferner steuert die CPU 3302 einen Lesezugriff von Kodedaten und der Gesamtanzahl von Zeilen von dem vorstehend erwähnten Kodespeicher 3107, einen Lesezugriff von dem Dekodierer 3106 und der gleichen in Übereinstimmung mit dem vorstehend erwähnten Dekodiersteuerprogramm (gezeigt in den Ablaufdiagrammen von Fig. 15 und 16) und verschiedenen, in dem ROM 3303 gespeicherten Daten. Das ROM 3303 speichert die Steuerprogramme, verschiedene Daten und der gleichen für die CPU 3302. Ein RAM 3304 wird als Arbeitsbereich der CPU 3302 verwendet und speichert vorübergehend verschiedene Daten. Im einzelnen wird das RAM 3304 als Eingabepuffer zum Speichern eines von der externen Vorrichtung empfangenen Zeichenkodes und darüber hinaus als Seitenspeicher 3108 zum Speichern wenigstens einer Seite von durch den Dekodierer 3106 dekodierten Zeichenmusterdaten verwendet. Weiterhin wird das RAM 3304 als Tabelle zum Speichern der Gesamtanzahl von Zeilen, Daten vorangehender Zeilen, Daten der aktuellen Zeile, der Anzahlen von Rändern der aktuellen und der vorangehenden Zeilen, der Bewegungsrichtungen von Rändern und der gleichen verwendet, wie noch zu beschreiben ist. Es wird angemerkt, dass diese Tabelle in Kodier- und Dekodier-Prozessen vorübergehend erzeugt wird. Eine Ausgabeschnittstelle 3305 gibt ein Ausgabebild als Videosignal an den Ausgabemechanismus 3110 zum Durchführen eines tatsächlichen Druckvorgangs aus. Die Druckersteuereinheit 3001 schließt den vorstehend erwähnten Kodespeicher 3107 ein. Die Anzeige 3104 zeigt ein Ausgabebild, Mitteilungen an einen Be diener und der gleichen an. Diese Komponenten sind mit einem Systembus 3306 verbunden.
  • In dem zweiten Ausführungsbeispiel wird der Kodierprozess durch das Steuerprogramm der CPU 3302 ausgeführt, kann jedoch durch Hardware unter Verwendung einer speziellen Zwecken dienenden Kodierschaltung ausgeführt werden.
  • In dem zweiten Ausführungsbeispiel wird der Dekodierprozeß durch das Steuerprogramm der CPU 3302 ausgeführt, kann jedoch durch Hardware unter Verwendung einer speziellen Zwecken dienenden Dekodierschaltung ausgeführt werden. Nachstehend wird der Betriebsablauf der CPU 3302 beschrieben.
  • Wenn die CPU 3302 Zeicheninformationen empfängt, die aus von der externen Vorrichtung 3101 ausgegebenen Zeichenmusterdaten, einem Zeichenkode, Positionsinformationen und der gleichen bestehen, speichert sie die empfangenen Informationen in dem Arbeitsbereich in dem RAM 3304. Beispielsweise führt, wenn eine vorherbestimmte Menge von Zeichenmusterdaten in dem Arbeitsbereich gespeichert sind oder wenn die CPU 3302 einen durch beispielsweise eine (nicht gezeigte) Tastatur der externen Vorrichtung 3101 angewiesenen Kodierungsbefehl empfängt, die CPU 3302 das vorstehend erwähnte, in dem ROM 3303 gespeicherte Kodiersteuerprogramm aus, um die in dem Arbeitsbereich in dem RAM 3303 gespeicherten Zeichenmusterdaten zu kodieren. Dann speichert die CPU 3302 kodierte Kodedaten von Zeichenmusterdaten, die Gesamtanzahl von Zeilen eines Zeichenmusters und der gleichen in dem Kodespeicher 3107 in Entsprechung zu Identifikationsinformationen (beispielsweise ein Zeichenkode) zum Identifizieren des Zeichenmusters.
  • Wenn die CPU 3302 aus einem Zeichenkode, Positionsinformationen und der gleichen bestehende Zeicheninformationen empfängt, speichert sie die empfangenen Informationen in dem Arbeitsbereich in dem vorstehend erwähnten RAM 3304. Beispielsweise führt, wenn eine vorherbestimmte Menge von Zeichenkodes in dem Arbeitsbereich gespeichert sind, die CPU 3302 das vorstehend erwähnte, in dem ROM 3303 gespeicherte Dekodiersteu erprogramm aus, um Kodedaten, die Gesamtanzahl von Zeilen und der gleichen entsprechend einem Zeichenkode für ein Zeichen aus dem Kodespeicher 3107 in den Arbeitsbereich auszulesen und den Dekodierprozeß in dem Arbeitsbereich auszuführen.
  • Ferner speichert, wenn eine Seitenendebefehl von der externen Vorrichtung 3101 zugeführt wird oder wenn der Arbeitsbereich mit Daten gefüllt ist, die CPU 3302 in dem Arbeitsbereich in der Seitenspeicher 3108 in dem RAM 3304 vorhandene dekodierte Zeichenmusterdaten für wenigstens eine Seite auf der Grundlage der Positionsinformationen und der gleichen und steuert einen Laserstrahl in Übereinstimmung mit den gespeicherten Daten EIN/AUS, um den Ausgabemechanismus 3110 zu veranlassen, ein Bild auf ein Aufzeichnungsmaterial, wie beispielsweise ein Papierblatt, auszugeben.
  • Wie vorstehend beschrieben wurde, kann gemäß diesem Ausführungsbeispiel ein Kodierverfahren bereitgestellt werden, das ein Zeichenmuster und der gleichen mit einem hohen Kompressionsverhältnis komprimieren kann.
  • Dieses Kompressionsverfahren ist insbesondere für ein großes Zeichen oder hoch feine Punktdaten wirkungsvoll, da es von der Größe einer Bitmap nicht leicht beeinflusst wird.
  • Auch dann, wenn ein Punktmuster in einem x2-Maßstab in der vertikalen und der horizontalen Richtung (x4 in einer Bitmap) erhöht wird, kann, da die Datenmenge eines komprimierten Musters etwa x2 kleiner ist, eine große Menge von Musterdaten in einer begrenzten Speicherkapazität gespeichert werden.
  • Da durch dieses Kodierverfahren kodierte Kodes eine kurze Expansionszeit erfordern, kann die zur Musterentwicklung erforderliche Zeit verkürzt werden.
  • Die Erfindung kann auf entweder auf ein aus einer Vielzahl von Einrichtungen bestehendes System oder auf eine aus einer einzigen Einrichtung bestehende Vorrichtung angewandt werden. Darüber hinaus kann die Erfindung natürlich auf einen Fall angewandt werden, in dem die Erfindung durch Bereitstellen eines Programms zum Ausüben der Erfindung für ein System oder eine Vorrichtung bereitgestellt wird.
  • In diesem Ausführungsbeispiel wurde beispielhaft ein Fall beschrieben, in dem ein Punktmuster ein Zeichenmuster ist. Die Erfindung ist jedoch nicht hierauf beschränkt, sondern kann auf beispielsweise ein Bildmuster, ein grafisches Muster und der gleichen angewandt werden. Ferner kann die Erfindung auf ein durch einen Bildleser gelesenes Bildmuster und der gleichen angewandt werden.
  • Als ein Bilderzeugungsvorrichtung zur praktischen Umsetzung dieses Ausführungsbeispiels wurde der Laserstrahldrucker beispielhaft beschrieben. Wie jedoch der nachfolgenden Beschreibung entnehmbar ist, kann die Erfindung auf andere Druckersysteme, wie beispielsweise ein Tintenstrahlsystem, ein Thermotransfersystem, ein Drahtpunktanschlagsystem bzw. Nadeldrucksystem und der gleichen angewandt werden. Daher ist die Erfindung nicht auf solche Druckersysteme beschränkt.
  • Fig. 26 ist eine vereinfachte Ansicht, die eine Tintenstrahl- Aufzeichnungsvorrichtung zeigt, auf die Erfindung angewandt werden kann.
  • In Fig. 26 befindet sich ein Wagen HC im Eingriff mit einer spiralförmigen Nut 5004 einer Führungsschraube 5005, die über ein Antriebskraft-Übertragungsräderwerk 5011 und 5009 in Zusammenwirkung mit einer Vorwärts/Rückwärtsrotation eines Antriebsmotors 5013 in Drehung versetzt wird. Der Wagen HC weist einen (nicht gezeigten) Stift auf und wird in Pfeilrichtungen a und b hin und her bewegt. Der Wagen HC trägt eine Tintenstrahlpatrone IJC. Eine Papierandruckplatte 5002 drückt entlang der Bewegungsrichtung des Wagens ein Papierblatt gegen eine Schreibwalze 5000. Fotokoppler 5007 und 5008 dienen als Endposition-Erfassungseinrichtungen zum Bestätigen des Vorhandenseins eines Hebels 5006 des Wagens in einem entsprechenden Bereich und Umschalten der Drehrichtung des Motors 5013. Ein Element 5016 trägt ein Abdeckelement 5022 zum Verschließen der Stirnfläche eines Aufzeichnungskopfes. Eine Saugeinrichtung 5015 zieht das Innere des Abdeckelements 5022 durch Saugen an und führt eine Saugwiederherstellung des Aufzeichnungskopfes über eine Öffnung 5023 in der Abdeckung aus. Eine Reinigungsklinge 5017 und ein Element 5019 zum Ermöglichen, dass die Klinge in der Rückwärts- und Vorwärtsrichtung beweglich ist, sind auf einer Hauptkörper-Tragplatte 5018 angebracht. Die Klinge ist nicht auf diese Form beschränkt. Alternativ kann in diesem Ausführungsbeispiel natürlich eine bekannte Reinigungsklinge eingesetzt werden. Ein Hebel 5021 wird zum in Gang setzen eines Saugvorgangs in einem Saugwiederherstellprozeß verwendet und wird bei Bewegung eines mit dem Wagen in Eingriff stehenden Nockens 5020 bewegt. Die Bewegungssteuerung des Hebels wird durch die Antriebskraft des Antriebsmotors über eine bekannte Übertragungseinrichtung (beispielsweise durch Schalten einer Kupplung) durchgeführt.
  • Diese Verschluss-, Reinigungs- und Saugwiederherstell- Prozesse werden an ihren entsprechenden Positionen bei Betätigung der Führungsschraube 5005 ausgeführt, wenn der Wagen einen Bereich auf der Ruhelageseite erreicht. Die Erfindung ist jedoch nicht hierauf beschränkt, so lange erforderliche Betriebsabläufe zu bekannten Zeiten durchgeführt werden.
  • < Steueranordnung>
  • Nachstehend wird eine Steueranordnung zum Ausführen einer Aufzeichnungssteuerung der vorstehend erwähnten Vorrichtungsanordnung unter Bezugnahme auf das in Fig. 27 gezeigte Blockdiagramm beschrieben. Eine in Fig. 27 gezeigte Steuerschaltung schließt eine Schnittstelle zum Empfangen eines Aufzeichnungssignals, eine MPU 1701, ein Programm-ROM 1702 zum Speichern eines durch die MPU 1701 ausgeführten Steuerprogramms und ein dynamisches RAM 1703 zum Speichern verschiedener Daten (beispielsweise des Aufzeichnungssignals, dem Kopf zuzuführender Aufzeichnungsdaten und der gleichen) ein. Die Steuerschaltung schließt darüber hinaus auch ein Gatterfeld bzw. Gate Array 1704 zum Durchführen einer Zufuhrsteuerung von Aufzeichnungsdaten zu einem Aufzeichnungskopf 1708 sowie Durchführen einer Datenübertragungssteuerung zwischen der Schnittstelle 1700, der MPU 1701 und dem RAM 1703 ein. Die Steuerschaltung schließt ferner einen Wagenmotor 1710 zum Verfahren des Aufzeichnungskopfs 1708, einen Papiervorschubmotor 1709 zum Transportieren eines Aufzeichnungsblatts, einen Kopftreiber 1705 zum Ansteuern des Kopfes, und Motortreiber 1706 und 1707 zum jeweiligen Ansteuern des Papiervorschubmotors 1709 und des Wagenmotors 1710 ein.
  • Nachstehend wird der Betriebsablauf der Steueranordnung beschrieben. Wenn ein Aufzeichnungssignal der Schnittstelle 1700 zugeführt wird, wird das Aufzeichnungssignal zwischen dem Gate Array 1704 und der MPU 1701 in Druckaufzeichnungsdaten umgewandelt. Die Motortreiber 1706 und 1707 werden angesteuert, und der Aufzeichnungskopf wird in Übereinstimmung mit den dem Kopftreiber 1705 zugeführten Aufzeichnungsdaten angesteuert, wodurch ein Druckvorgang ausgeführt wird.
  • Wie vorstehend beschrieben wurde, kann die Erfindung dadurch praktisch ausgeführt werden, dass die Steuerprogramme (Programme zum Ausführen der vorstehend erwähnten Kodier- und Dekodier-Prozesse) zur praktischen Umsetzung der Erfindung zumindest zu dem ROM 1702 in der Steueranordnung des Tintenstrahldruckers hinzugefügt werden. Daher ist, wie aus der vorstehenden Beschreibung hervorgeht, eine Bilderzeugungsvorrichtung zur Ausführung der Erfindung nicht auf den Laserstrahldrucker beschränkt, sondern kann auf beispielsweise den vorstehend erwähnten Tintenstrahldrucker angewandt werden.
  • Wie vorstehend beschrieben wurde, kann erfindungsgemäß ein Kodierprozess, der für ein Punktmuster wie beispielsweise ein Zeichen, ein Symbol oder der gleichen geeignet ist, durchgeführt werden, um ein hohes Kompressionsverhältnis zu erhalten.
  • Darüber hinaus kann ein Kodierprozess verwirklicht werden, der die zur Expansion erforderliche Zeit verkürzen kann.
  • Ferner können kodierte Daten mit hoher Geschwindigkeit dekodiert werden.

Claims (14)

1. Informationskodiervorrichtung, umfassend:
eine erste Speichereinrichtung (105) zum Speichern von Musterdaten, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet;
eine Einrichtung zum Ermitteln der Kanten des Musters, die durch den Wechsel des Bitzustands repräsentiert werden; und
eine Kodeerzeugungseinrichtung (106) zum Erzeugen, aus einem Vergleich von Mustern für eine bestimmte Zeile und eine der bestimmten Zeile unmittelbar vorangehende Zeile, gespeichert in der ersten Speichereinrichtung, von Kompressionskodes, gespeichert in einem zweiten Speicher (107), dadurch gekennzeichnet, daß die Kodeerzeugungseinrichtung zum Erzeugen eines ersten Kodes (LINEEQ, LINEDIF), der ein Inkrement oder Dekrement der Anzahl von Kanten auf der bestimmten Zeile von der auf der vorangehenden Zeile angibt, eines zweiten Kodes (ADV 0), der angibt, daß kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, eines dritten Kodes (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG), der die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und eines vierten Kodes (OPEN), der die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, ausgelegt ist.
2. Vorrichtung nach Anspruch 1, bei der die Kodeerzeugungseinrichtung (106) zum Erzeugen eines fünften Kodes (CLOSE), der angibt, daß sich ein in der vorangehenden Zeile erscheinendes Muster in der gegenwärtigen Zeile nicht fortsetzt, ausgelegt ist und die zweite Speichereinrichtung (107) zum Speichern des fünften Kodes beinhaltet.
3. Vorrichtung nach Anspruch 1, bei der die erste Speichereinrichtung (105) zum Speichern von Zeichenmusterdaten ausgelegt ist.
4. Informationsdekodiervorrichtung, umfassend:
eine Speichereinrichtung (107) zum Speichern von Kompressionskodes, die aus Musterdaten generiert wurden, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet, wobei die Kompressionskodes einen ersten Kode (LINEEQ, LINEDIF), der ein Inkrement oder Dekrement der Anzahl von Kanten auf einer bestimmten Zeile von der auf einer der bestimmten Zeile unmittelbar vorangehenden Zeile angibt, einen zweiten Kode (ADV 0), der angibt, daß kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, einen dritten Kode (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG), der die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und einen vierten Kode (OPEN), der die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, beinhalten;
eine Ableitungseinrichtung (1205) zum Lesen der Kodes für jede Zeile aus der Speichereinrichtung (107) und Ableiten einer oder mehrerer Kantenpositionen auf jeder Zeile; und
eine Mustererzeugungseinrichtung (1205) zum Erzeugen eines Punktmusters auf der Grundlage der einen oder mehreren Kantenpositionen auf jeder durch die Ableitungseinrichtung abgeleiteten Zeile.
5. Vorrichtung nach Anspruch 4, bei der die Speichereinrichtung (107) dazu ausgelegt ist, auch fünfte Kodes (CLOSE) zu speichern, die angeben, daß sich ein in der vorangehenden Zeile erscheinendes Muster nicht in die gegenwärtige Zeile fortsetzt.
6. Vorrichtung nach Anspruch 4 oder 5, ferner umfassend eine Einrichtung (1208) zum Ausgeben des erzeugten Punktmusters.
7. Vorrichtung nach Anspruch 6, bei der die Ausgabeeinrichtung einen Drucker umfaßt.
8. Vorrichtung nach einem der Ansprüche 4 bis 7, bei der die Ableitungseinrichtung (1205) zum Lesen des Kodes für einen von einer externen Vorrichtung empfangenen Zeichenkode aus der Speichereinrichtung (107) und zum Ableiten einer oder mehrerer Kantenpositionen auf jeder Zeile ausgelegt ist.
9. Vorrichtung nach einem der Ansprüche 4 bis 8, bei der die Ableitungseinrichtung (1205) zum Ableiten einer Kantenposition, an welcher ein schwarzer Punkt beginnt, falls eine geradzahlige Anzahl von Kanten verarbeitet wurde, und einer Kantenposition, an welcher ein weißer Punkt beginnt, falls ein ungeradzahlige Anzahl von Kanten verarbeitet wurde (S38, S39, S40) ausgelegt ist.
10. Informationskodierverfahren, umfassend die Schritte des:
Speicherns von Musterdaten, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet, in einem ersten Speicher (105);
Erzeugens von Kompressionskodes aus einem Vergleich von Mustern in einer bestimmten Zeile und einer der bestimmten Zeile unmittelbar vorangehenden Zeile, und Speicherns der Kompressionskodes in einem zweiten Speicher (107), wobei ein erster Kode (LINEEQ, LINEDIF) eine Zunahme oder Abnahme der Anzahl von Kanten auf der bestimmten Zeile im Vergleich zu der vorangehenden Zeile angibt, ein zweiter Kode (ADV 0) angibt, daß kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, ein dritter Kode (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG) die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und ein vierter Kode (OPEN) die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, und Speicherns der ersten bis vierten Kodes in dem zweiten Speicher (107).
11. Verfahren nach Anspruch 10, ferner beinhaltend die Schritte des Erzeugens und Speicherns fünfter Kodes (CLOSE), die angeben, daß sich ein in der vorangehenden Zeile erscheinendes Muster in der gegenwärtigen Zeile nicht fortsetzt.
12. Informationsdekodierverfahren, umfassend die Schritte des:
Speicherns, in einer Speichereinrichtung (107), von Kompressionskodes, die aus Musterdaten generiert wurden, die eine Vielzahl von Zeilen umfassen, deren jede ein Bitmuster bildet, wobei die Kompressionskodes einen ersten Kode (LINEEQ, LINEDIF), der ein Inkrement oder Dekrement der Anzahl von Kanten auf einer bestimmten Zeile von der auf einer der bestimmten Zeile unmittelbar vorangehenden Zeile angibt, einen zweiten Kode (ADV 0), der angibt, daß kein Positionswechsel zwischen einer Kante auf der bestimmten Zeile und einer entsprechenden Kante auf der vorangehenden Zeile vorhanden ist, einen dritten Kode (ADV 1, ADV 2, SW 1, ADVLONG, SWLONG), der die relative Position einer Kante auf der bestimmten Zeile in Bezug auf eine entsprechende Kante auf der vorangehenden Zeile angibt, und einen vierten Kode (OPEN), der die Position von Kantenpositionen und die Breite eines neu auf der bestimmten Zeile erscheinenden Musters angibt, beinhalten;
Lesens der Kodes für jede Zeile und Ableitens daraus einer oder mehrerer Kantenpositionen auf jeder Zeile; und
Erzeugens eines Punktmusters auf der Grundlage der einen oder mehreren Kantenpositionen auf jeder durch die Ableitungseinrichtung abgeleiteten Zeile.
13. Verfahren nach Anspruch 11, ferner beinhaltend den Schritt des Speicherns fünfter Kodes (CLOSE) in der Speichereinrichtung (107), um anzuzeigen, daß sich ein in der vorangehenden Zeile erscheinendes Muster in der gegenwärtigen Zeile nicht fortsetzt.
14. Trägermedium, tragend prozessorimplementierbare Anweisungen zum Steuern eines Prozessors zum Durchführen des Verfahrens nach einem der Ansprüche 10 bis 13.
DE69328325T 1992-05-18 1993-05-17 Kodierungs- und Dekodierungsvorrichtung Expired - Lifetime DE69328325T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP4125132A JP2737863B2 (ja) 1992-05-18 1992-05-18 情報処理方法及びその装置と出力方法及びその装置
JP10823293A JPH06319048A (ja) 1993-05-10 1993-05-10 出力装置及びその方法

Publications (2)

Publication Number Publication Date
DE69328325D1 DE69328325D1 (de) 2000-05-18
DE69328325T2 true DE69328325T2 (de) 2000-08-24

Family

ID=26448168

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69328325T Expired - Lifetime DE69328325T2 (de) 1992-05-18 1993-05-17 Kodierungs- und Dekodierungsvorrichtung

Country Status (3)

Country Link
US (1) US5574886A (de)
EP (1) EP0571170B1 (de)
DE (1) DE69328325T2 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3100304B2 (ja) * 1995-03-08 2000-10-16 キヤノン株式会社 ドットパターン発生装置およびドットパターン発生方法
JP3554175B2 (ja) * 1997-03-14 2004-08-18 キヤノン株式会社 インクジェット記録装置およびインクジェット記録方法
US6381365B2 (en) * 1997-08-22 2002-04-30 Minolta Co., Ltd. Image data processing apparatus and image data processing method
US6661266B1 (en) 2000-11-08 2003-12-09 Texas Instruments Incorporated All digital built-in self-test circuit for phase-locked loops
US7903822B1 (en) 2000-11-10 2011-03-08 DMT Licensing, LLC. Method and system for establishing a trusted and decentralized peer-to-peer network
US6591358B2 (en) * 2001-01-26 2003-07-08 Syed Kamal H. Jaffrey Computer system with operating system functions distributed among plural microcontrollers for managing device resources and CPU
US20060208928A1 (en) * 2004-12-14 2006-09-21 Paul Mackerras Encoding scheme to resist code injection attacks

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5818824B2 (ja) * 1975-11-07 1983-04-14 ケイディディ株式会社 フアクシミリシンゴウノ フゴウカホウシキ
JPS6043703B2 (ja) * 1976-02-27 1985-09-30 富士ゼロックス株式会社 2値信号フアクシミリデ−タ圧縮方式
DE3016738C2 (de) * 1980-04-30 1988-06-16 Siemens AG, 1000 Berlin und 8000 München Verfahren zur Übertragung eines Bitmusterfeldes in einen Speicher und Schaltungsanordnung zur Ausübung des Verfahrens
KR850001657B1 (ko) * 1981-03-06 1985-11-06 야마모도 다꾸마 영상(影像) 데이터 변환법 및 문자 코우드와 문자패턴 변환장치
US4628534A (en) * 1984-07-06 1986-12-09 Honeywell Information Systems Inc. Method for changing the resolution of compressed image data
US4633505A (en) * 1984-11-23 1986-12-30 Xerox Corporation Character compression technique
US4631521A (en) * 1984-12-31 1986-12-23 Wang Laboratories, Inc. Method and apparatus for differential run-length coding
US4943869A (en) * 1987-05-06 1990-07-24 Fuji Photo Film Co., Ltd. Compression method for dot image data
JP2670273B2 (ja) * 1987-09-30 1997-10-29 株式会社東芝 画像処理装置
US5020121A (en) * 1990-08-16 1991-05-28 Hewlett-Packard Company Neighborhood block prediction bit compression

Also Published As

Publication number Publication date
EP0571170A3 (de) 1993-12-15
EP0571170A2 (de) 1993-11-24
US5574886A (en) 1996-11-12
EP0571170B1 (de) 2000-04-12
DE69328325D1 (de) 2000-05-18

Similar Documents

Publication Publication Date Title
DE69832223T2 (de) Verfahren und Vorrichtung zur Komprimierung von scheibenorientierten Bitmaps
DE2940897C2 (de) Digitales Setzgerät
DE2823965C3 (de) Anordnung in kraftgetriebenen, speichergesteuerten Schreibmaschinen mit proportionalem Zeichenabstand z ur Verbesserung der Lesbarkeit des Schriftbildes
DE3707112C3 (de) Zeichenbilderzeugungsschaltung
DE3440377A1 (de) Verfahren zum verkleinern eines zeichenschriftsatzes
DE2640814A1 (de) Schaltung zur erzeugung eines zeichens durch in einem matrixmuster vorliegende bildelemente
DE3338385A1 (de) Beleg-dateianordnung
DE2919013A1 (de) Verfahren zum kodieren von schriftzeichen und nach diesem verfahren arbeitende speichereinrichtung in einem setzgeraet
DE2825321C3 (de) Rasterdrucker
DE19610759A1 (de) Verfahren zum Codieren eines Dokumentes und Verfahren zum Senden eines Dokumentes von einem Sendecomputersystem zu einem Empfangscomputersystem
DE2548145A1 (de) Drucker mit pufferspeicher
DE69633170T2 (de) Softwareverfahren zur Umwandlung einer skalierten Bitmap in eine die Grautöne darstellende Bitmap für einen Buchstabentypensatz
DE68927008T2 (de) Verfahren zum komprimieren und dekomprimieren von punktmatrixzeichen
DE69328325T2 (de) Kodierungs- und Dekodierungsvorrichtung
DE19630633C2 (de) Verfahren und Vorrichtung zur Erzeugung von Abbildungen
DE69430605T2 (de) Verfahren und Druckvorrichtung für kodierte Daten
DE69429972T2 (de) Druckgerät und -verfahren
DE69627266T2 (de) Vorrichtung und Verfahren zum Drucken von sich teilweise wiederholenden Daten
DE69131563T2 (de) Textinformationsverarbeitungsvorrichtung
DE4124554C2 (de) Datenumwandlungseinrichtung und Zeichenausgabeeinrichtung
DE68910096T2 (de) Verfahren und Gerät zur Bildung von Buchstabenumrisslinien.
DE69011393T2 (de) Druckvorrichtung.
DE3132842C2 (de) Verfahren zur Reduzierung der Redundanz von binären Zeichenfolgen für Matrixdruckverfahren
DE69521178T2 (de) Drucker für schmale Bahnen
DE69127173T2 (de) Abbildungsaufzeichnungsvorrichtung für Bilder hoher Qualität

Legal Events

Date Code Title Description
8364 No opposition during term of opposition