DE69632644T2 - Bilderzeugung für seitendrucker - Google Patents

Bilderzeugung für seitendrucker Download PDF

Info

Publication number
DE69632644T2
DE69632644T2 DE69632644T DE69632644T DE69632644T2 DE 69632644 T2 DE69632644 T2 DE 69632644T2 DE 69632644 T DE69632644 T DE 69632644T DE 69632644 T DE69632644 T DE 69632644T DE 69632644 T2 DE69632644 T2 DE 69632644T2
Authority
DE
Germany
Prior art keywords
scan line
color
scan
raster data
rasterization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69632644T
Other languages
English (en)
Other versions
DE69632644D1 (de
Inventor
Trabb Luis PARDO
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.)
Electronics for Imaging Inc
Original Assignee
Electronics for Imaging 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
Application filed by Electronics for Imaging Inc filed Critical Electronics for Imaging Inc
Application granted granted Critical
Publication of DE69632644D1 publication Critical patent/DE69632644D1/de
Publication of DE69632644T2 publication Critical patent/DE69632644T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • G06K15/12Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers by photographic printing, e.g. by laser 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/0062Handling the output data combining generic and host data, e.g. filling a raster
    • G06K2215/0065Page or partial page composition
    • 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/0077Raster outputting to the print element(s)

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Bereich der Erfindung
  • Die vorliegende Erfindung betrifft das Rendern von Bildern zum Ausdrucken auf Druckern, insbesondere auf Seitendruckern wie Laserdruckern und spezifischer Farblaserdruckern.
  • 2. Stand der Technik
  • In den letzten Jahren ist die für Desktop-Computer zur Verfügung stehende Rechenleistung immer mehr gestiegen. Gleichzeitig ist auch die Hochwertigkeit der Druckfähigkeiten, die dem durchschnittlichen Computerbenutzer zur Verfügung stehen, gewachsen. Laserdrucker, die nahezu Schriftsatzqualität bieten, sind im Geschäftsbereich an der Tagesordnung. Farbdrucker mit mäßiger Auflösung, die eine brauchbare Farbleistung bieten, werden für eine große Klasse von Benutzern immer erschwinglicher.
  • Gemäß dem obigen Trend wird davon ausgegangen, dass die Nachfrage nach fotorealistischen und nahe fotorealistischen Farbdruckern ansteigen wird. Derzeit gibt es allgemein drei verschiedene Farbdruckertypen: Farbsublimations-, Tintenstrahl- und Laserdrucker. Farbsublimationsdrucker bieten gute Qualität, sind aber langsam und teuer. Kostenarme Tintenstrahldrucker sind langsam und erzeugen Produkte von niedriger Qualität. Kostspieligere Tintenstrahldrucker sind zwar immer noch langsam, erzeugen aber Produkte von guter Qualität für größere Bilder. Im Vergleich zu Farbtintenstrahldruckern (die den größten Teil der derzeit verkauften Farbdrucker ausmachen) sind jedoch Farblaserdrucker am vielversprechendsten zum Erzielen eines fotorealistischen Farbausgangs bei hoher Druckgeschwindigkeit und niedrigen Kosten pro Kopie.
  • Die Funktionsweise von Druckern (im Gegensatz zu Plottern) besteht darin, kleine Punkte (die auch als Pixel bezeichnet werden) zu einem Muster auf der Seite zu formen. Bei Laserdruckern werden diese kleinen Punkte durch Abtasten eines Laserstrahls in einer Abtastrichtung über eine fotoempfindliche Trommel gebildet. (Das Bild auf der fotoempfindlichen Trommel wird dann entwickelt, auf die tatsächliche Seite übertragen und dort fixiert.) Das Abtasten erfolgt typischerweise mit einem rotierenden polygonalen Spiegel, auf den der Laserstrahl gerichtet wird. Jede Facette des Spiegels bewirkt, dass der Laserstrahl einmal über die fotoempfindliche Trommel abgetastet wird. Bei einer Abtastung wird der Laserstrahl moduliert, d. h. ein- und ausgeschaltet, um entweder einen Punkt an einer bestimmten Stelle im Abtastbereich zu belichten oder einen Punkt nicht zu belichten. Die fotoempfindliche Trommel bewegt sich mit einer konstanten Geschwindigkeit während des Abtastens in einer Papiervorschubrichtung, um zu bewirken, dass aufeinander folgende Abtastungen verschoben werden. Der Betrag, um den aufeinander folgende Abtastzeilen verschoben wird, wird als Zeilenabstand bezeichnet.
  • Die Sammlung von Punkten in einer Abtastzeile wird als Rasterabtastzeile bezeichnet. Eine Gruppe von aufeinander folgenden Abtastzeilen wird als Band oder als Abtastzeilen-Bildstreifen bezeichnet. Die Sammlung aller Punkte in allen Abtastzeilen auf einer Seite wird als Rasterbild bezeichnet. Eine Sammlung von Punkten, die in einem bestimmten (gewöhnlich rechteckigen) Bereich der Seite abgedruckt werden sollen, wird als Pixel-Map bezeichnet. So könnte beispielsweise auf einer Farbbroschüre das Zeichen einer Firma als Pixel-Map definiert und über den oberen Rand der Seite ausgedruckt werden.
  • Im Gegensatz zum Tintenstrahldrucker, der ein Beispiel für ein Gerät mit Banden (Abtastzeilen-Bildstreifen) ist, ist ein Laserdrucker von seiner Natur her ein Seitengerät. Das heißt, sobald das Laserdrucken gestartet (d. h. das Laserabtasten der Trommel begonnen) hat, kann es nicht mehr gestoppt oder pausiert werden, sondern muss ohne Unterbrechung bis zum Ende fortgesetzt werden. Tintenstrahldrucker haben zwar bestimmte Echtzeitdatenanforderungen in Bezug auf ein einzelnes Band, aber der Laserdruckbetrieb hat höhere Echtzeitdatenanforderungen, die für die Erzeugung eines zufriedenstellenden Drucks erfüllt werden müssen, da Daten für die gesamte Seite zur Verfügung gestellt werden müssen.
  • Ein Laserdrucker besteht konventionell aus einem Drucker-Controller und einer Druckmaschine. Die Druckmaschine belichtet und entwickelt Punkte auf der physischen Seite. Der Drucker-Controller sendet Druckerbefehle und Druckdaten zur Druckmaschine, um zu bewirken, dass die gewünschte Seite ausgedruckt wird. Der Drucker-Controller empfängt eine Seitenbeschreibung von einem Anwendungsprogramm in einer Seitenbeschreibungssprache (PDL = Page Description Language) wie z. B. PostscriptTM von Adobe Systems.
  • Drucker-Controller empfangen gewöhnlich PDL-Statements von einem Anwendungsprogramm und interpretieren diese mit Hilfe eines PDL-Interpreters. PDL-Interpreter führen gewöhnlich eine Vorverarbeitung der PDL-Statements durch, indem sie die tatsächlichen Formen und Positionen für die Graphikobjekte in Verbindung mit dem Statement berechnen und dann diese Graphikobjekte mit Hilfe einer Markierungsschnittstelle auf das Seitenrasterbild anwenden. Diese Schnittstelle besteht aus einem im Allgemeinen proprietären, aber gewöhnlich hinlänglich verstandenen Satz von Operationen, die als Rasterisierungsanforderungen bezeichnet werden. Die Marking Interface (Markierungsschnittstelle) leitet die Rasterisierungsanforderungen zu einem nachfolgenden Rasterisierungsprozess. So könnte zum Beispiel ein PDL-Interpreter den folgenden Satz von Rasterisierungsanforderungen (als „RAST" bezeichnet) zum Beschreiben des Rasterbildes für eine Seite verwenden:
    RAST1: Anwenden einer rechteckigen Pixel-Array einer bestimmten Farbe (für eine Textanwendung);
    RAST2: Ausfüllen eines trapezförmigen Bereiches mit einer bestimmten Farbe (Flächengraphik);
    RAST3: Expandieren (Vergrößern, Rotieren, Skalieren, Schrägen usw.) eines Bildes und Anwenden des Bildes auf das Raster.
  • Die vorliegende Erfindung ist auch auf Graphikumgebungen wie Microsoft Windows, Apple Macintosch usw. anwendbar, von denen Graphikbefehle (im Gegensatz zu PDL-Statements) ausgegeben werden. Diese Graphikbefehle können auf ähnliche Weise von Graphikbefehlsprozessoren zu Rasterisierungsanforderungen verarbeitet werden. Und in einigen Fällen erzeugen diese Umgebungen direkt Rasterisierungsanforderungen eines hinlänglich bekannten und öffentlich verfügbaren Formats.
  • In konventionellen PDL-Interpretern sind Rasterisierungsanforderungen gewöhnlich auf eine von drei grundsätzlichen Weisen organisiert. Eine erste Weise des Organisierens von Rasterisierungsanforderungen beinhaltet das Sortieren von Anforderungen zu einer Display-Liste. Anforderungen werden üblicherweise in aufsteigender Reihenfolge der y-Koordinate sortiert. So könnten zum Beispiel die folgenden Anforderungen von einer PDL-Quelle empfangen und in der folgenden Reihenfolge aufgeführt werden:
    • 1. Dreieck beschreiben
    • 2. Dreieck auf (x3, y2) zeichnen
    • 3. Font 1 wählen
    • 4. String „AB" bei (x1, y1) setzen
    • 5. Font 2 wählen
    • 6. String „C" auf (x4, y3) setzen
  • Die entsprechende Seite, zusammen mit einer sortierten Display-Liste, ist in 1 dargestellt. Wie dann ersichtlich ist, wird die Display-Liste zunächst nach y-Koordinate und dann, zweitens, nach x-Koordinate sortiert.
  • Eine zweite Weise des Organisierens von Rasterisierungsanforderungen beinhaltet das Unterteilen der Seite in Bänder wie in 2 gezeigt. Für jedes Band wird eine separate Display-Liste erstellt. Diese Technik sowie die vorherige Technik sind sich dahingehend ähnlich, dass eine Seite als ein langes Band angesehen werden kann. Die Display-Listen für Banden können jedoch kollektiv größer sein als die Display-Liste für eine volle Seite (da dasselbe Druckelement Bänder überlappen kann, was es erfordert, dass es in jedem enthalten ist). Da die Größe der Display-Liste grundsätzlich unbegrenzt ist, kann stattdessen eine Folge von Display-Listen erzeugt werden, was mehrere Rasterisierungsdurchgänge über jedes Band erfordert. In jedem Fall ist das resultierende Raster dasselbe.
  • Eine dritte Weise des Organisierens von Rasterisierungsanforderungen beinhaltet einfach das Erstellen eines unsortierten Satzes von Anforderungen. Diese Organisationsweise (siehe 3) verlangt, dass das Rasterisierungssystem eine wachsende Liste von zufällig zugängigen Abtastzeilen führt. Es wurden verschiedene Möglichkeiten entwickelt, um Speicherplatz zu sparen, z. B. dadurch, dass nur diejenigen Abtastzeilen zugewiesen werden, die tatsächlich benutzt werden, und selbst rechteckige Patches des Rasters nach Bedarf zuzuweisen. Im Prinzip muss der Rasterisierer jedoch Zugang zu einer vollen Bitmap haben. Ein erheblicher Vorteil dieses Ansatzes besteht dann, dass keine Display-Liste erstellt zu werden braucht.
  • Die Speicherung eines einzelnen Vollfarbenbildes mit hoher Auflösung kann Hunderte von Megabytes an Speicherkapazität erfordern. Um ein solches Bild mit einem Farblaserdrucker auszudrucken, muss das gesamte Bild gerendert und gleichzeitig in einem Speicher gespeichert werden, um die Gefahr von Verzögerungen beim Zuführen von Bilddaten zur Druckmaschine (Unterlauf) zu vermeiden.
  • Diese Anforderung des Laserdruckens bedeutet extreme Speicherkapazitäts- und Speicherbandbreitenanforderungen für einen Vollfarblaserdrucker mit hoher Auflösung. Solche Drucker waren daher recht kostspielig. Im Stand der Technik wird das gesamte Bild oder wenigstens ein Bildband rasterisiert und gespeichert. Das gespeicherte, rasterisierte Bild oder Bildband wird dann abgerufen und komprimiert. Schließlich wird das komprimierte Bild oder Bildband zur späteren Expandierung und Ausgabe zur Druckmaschine gespeichert. Infolgedessen wird jedes Pixel des Bildes mehrere Male gehandhabt. Sowohl Speicherbedarf als auch Speicherbandbreitenbedarf sind groß.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung reduziert, allgemein ausgedrückt, Speicherkapazitäts- und Speicherbandbreitenanforderungen eines Farblaserdruckers (oder eines anderen Druckers mit Echtzeit-Druckbeschränkungen), indem Bildinformationen in einem komprimierten Format über den gesamten Rendering-Prozess dargestellt werden. Zu jedem Zeitpunkt während des Rendering-Prozesses wird vorzugsweise nur eine einzige Abtastzeile auf das volle, unkomprimierte Format expandiert, um schließlich ausgedruckt zu werden. Die gerenderte Abtastzeile wird dann erneut komprimiert und gespeichert. Wenn alle Abtastzeilen verarbeitet und im komprimierten Format gespeichert sind, wird das gesamte Bild, der Reihe nach, in Echtzeit expandiert und zum Drucker gesendet.
  • Die Erfindung hält die Bildinformationen vorzugsweise so lange wie möglich in komprimierter Form, expandiert jeweils immer nur einen möglichst kleinen Teil des Bildes (z. B. eine einzelne Abtastzeile) und lässt diesen Teil des Bildes so kurz wie möglich in expandierter Form, komprimiert ihn schnell neu und speichert ihn. So werden Speicherkapazitäts- und Speicherbandbreitenanforderungen stark verringert. Darüber hinaus kann, da die Speicheranforderungen für die unkomprimierten Raster so gering sind, ein extrem schnelles Speicherverfahren verwendet werden, wodurch der Gesamtprozess weiter beschleunigt wird, ohne dass dies die Kosten stark erhöhen würde.
  • Die US-A-5 367 383 beschreibt ein Verfahren zum Verarbeiten von Bilddaten in Fotokopiermaschinen. Die Bilddaten können in einem vollen Rasterseitenformat vorliegen und es ist somit notwendig, einen ausreichenden Speicher zum Handhaben einer vollen Rasterseite bereitzustellen.
  • Die US-A-5 150 454 und die EP-A-0 473 341 beschreiben Systeme, in denen eine gesamte Display-Liste gespeichert werden muss. Für die Seitendarstellung repräsentative Daten werden gemäß der EP-A-0 597 571 gespeichert, dann wird eine Mehrzahl von Algorithmen für die Kompression verwendet.
  • Die vorliegende Erfindung ist in den beiliegenden Ansprüchen dargelegt, die gegen die US-A-5 150 454 abgegrenzt sind.
  • Gemäß einem weiteren Aspekt der Erfindung werden alle Anforderungen auf einen äußerst einfachen Satz von Operationen reduziert, die mit sehr kostenarmer Hardware oder mit effizienten und leicht zu optimierenden Software-Prozeduren implementiert werden können.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird anhand der nachfolgenden Beschreibung in Zusammenhang mit den beiliegenden Zeichnungen besser verständlich. Dabei zeigt:
  • 1 eine Darstellung einer Seite und einer entsprechenden sortierten Display-Liste;
  • 2 eine Darstellung der Seite von 1, die in Banden unterteilt ist;
  • 3 eine Darstellung eines unsortierten Satzes von Rasterisierungsanforderungen;
  • 4 ein verallgemeinertes Blockdiagramm, das die Umgebung der vorliegenden Erfindung zeigt;
  • 5 ein Blockdiagramm einer Rendering-Vorrichtung, die in der vorliegenden Erfindung zum Einsatz kommen kann;
  • 6 ein Diagramm, das zwei Hauptspeicherbereiche im Speicher 308 von 5 illustriert;
  • 7 ein Diagramm, das eine Befehlswarteschlangenstruktur innerhalb des Speicherbereichs 321 von 6 illustriert;
  • 8 ein Diagramm, das die Konvertierung von Farbanwendungen in Abtastoperationen und die Einreihung von Abtastoperationen in die Warteschlange veranschaulicht;
  • 9 ein Blockdiagramm des Rasterisierers/Kompressors 306 von 5;
  • 10 ein Code-Segment, das zum Ausführen eines Repeat-Befehls während der Rasterisierungsphase im Rasterisierer/Kompressor 306 von 5 verwendet werden kann;
  • 11 ein Code-Segment, das zum Ausführen der Kompressionsphase im Rasterisierer/Kompressor 306 von 5 verwendet werden kann;
  • 12 ein Blockdiagramm des Expanders 307 von 5;
  • 13 ein Code-Segment, das zum Ausführen eines Repeat-Befehls im Expander 307 von 5 zum Einsatz kommen kann; und
  • 14 ein Blockdiagramm der zweiten Schnittstellenschaltung von 5.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSGESTALTUNGEN
  • Nunmehr Bezug nehmend auf 4, ein Computer 100 und eine Drucksteuervorrichtung 300 sind über eine erste Kommunikationsverbindung 180 miteinander verbunden. Die Kommunikationsverbindung 180 kann ein Kabel oder, allgemeiner, jede beliebige Art von Kommunikationsverbindung sein, die digitale Informationen übertragen kann, ob von serieller oder von paralleler Natur, wie zum Beispiel ein Netzwerk (verdrahtet oder drahtlos, Punkt zu Punkt usw.). Die erste Kommunikationsverbindung 180 ist mit einem externen Verbinder 101 des Computers 100 und mit einer ersten Schnittstelle 301 der Drucksteuervorrichtung 300 gekoppelt. Die Kommunikationsverbindung 180 führt Druckanweisungen zwischen dem Computer 100 und der Drucksteuervorrichtung 300 aus. Die Vorrichtung 300 ist über eine zweite Kommunikationsverbindung 190 auch mit einem Drucker 200 (zum Beispiel einem Farblaserdrucker eines bekannten Typs) verbunden. Die zweite Kommunikationsverbindung 190 ist mit einem zweiten Schnittstellenverbinder 302 der Vorrichtung 300 und mit einem Schnittstellenverbinder 201 des Druckers 200 gekoppelt. Die Kommunikationsverbindung 190 überträgt Bilddaten und Steuerbefehle von der Drucksteuervorrichtung 300 zum Drucker 200.
  • Der Aufbau der Drucksteuervorrichtung 300 wird nachfolgend ausführlicher mit Bezug auf 5 beschrieben. In 5 ist der erste Schnittstellenverbinder 301 zum Empfangen von Daten vom Computer 100 mit einer ersten Schnittstellenschaltung 303 verbunden, die die empfangenen Daten annimmt. Die erste Schnittstellenschaltung 303 ist von einem in der Technik hinlänglich bekannten Typ (z. B. RS 232 seriell, Centronics parallel usw.) und wird hier nicht weiter beschrieben.
  • Das andere Ende der ersten Schnittstellenschaltung ist mit einem Bus 313 gekoppelt, der einen Datenaustausch zwischen den Schnittstellenschaltungen und einer CPU 305 zulässt, die mit einem Programm und einem Datenspeicher 304 verbunden ist. Der Bus 313 ist auch mit einem Rasterisierer/Kompressor 306, einer Expander-Schaltung 307, einem Speicher 308 und einem DMAC (Direct Memory Access Controller) 314 verbunden. Der DMAC 314 bewirkt eine direkte Speicherübertragung zwischen den verschiedenen Geräten. Man beachte, dass anstatt Programm und Datenspeicher 304 separat bereitzustellen, auch der Speicher 308 für diesen Zweck verwendet werden kann.
  • Die zweite Schnittstellenschaltung 350 ist auf ihrer Eingangsseite über einen Bus 315 mit dem Expander 307 und auf ihrer Ausgangsseite mit dem Druckerschnittstellenverbinder 302 verbunden. Die zweite Schnittstellenschaltung 350 wird ausführlicher in Verbindung mit 14 beschrieben.
  • Der Rasterisierer/Kompressor 306 beinhaltet wenigstens einen, vorzugsweise zwei Puffer 309 und 311, die zum vorübergehenden Aufnehmen von expandierten Bilddaten verwendet werden. Die Puffer 309 und 311 sind der Deutlichkeit halber separat illustriert. Ebenso beinhaltet der Expander 307 wenigstens einen Puffer 310 und, bei Bedarf einen zusätzlichen Puffer 312, der zum Aufnehmen von expandierten Bilddaten dient, die zum Drucker ausgegeben werden sollen. Auch hier sind die Puffer 310 und 312 der Deutlichkeit halber wieder separat dargestellt.
  • Im Allgemeinen beinhaltet der durch die Drucksteuervorrichtung 300 durchgeführte Bildrendering-Prozess die folgende Reihe von Schritten:
    • 1. eine Seitenbeschreibung wird von einem Anwendungsprogramm (läuft auf dem Computer 100 in 4) in einer Seitenbeschreibungssprache (PDL) wie z. B. Postscript empfangen;
    • 2. von dem Anwendunsprogramm empfangene PDL-Befehle werden in Rasterisierungsanforderungen interpretiert, die wiederum in eine Reihe von Farbapplikationen gegliedert werden, die Graphikobjekte in einem komprimierten Format darstellen;
    • 3. diese Farbapplikationen werden nachfolgend in Abtastoperationen konvertiert, die an Datenstrukturen angehängt werden, die ihre entsprechende Abtastzeile repräsentieren;.
    • 4. jede Abtastzeile wird nacheinander gerendert, um Rasterdaten zu erzeugen, und wird dann komprimiert und gespeichert; und
    • 5. wenn die gesamte Seite gerendert und komprimiert ist, dann werden die komprimierten Rasterdaten expandiert und zum Drucker gesendet (z. B. dem Farblaserdrucker 200 von 4).
  • Schritt 1 oben (ein Programm, das eine Seitenbeschreibung ausgibt) ist hinlänglich bekannt. Jeder der nachfolgenden Schritte wird ausführlicher beschrieben.
  • Zur Erzielung von Kompatibilität in verschiedenen PDLs müssen von einer bestimmten PDL erzeugte Rasterisierungsanforderungen in einen gemeinsamen Satz von Befehlen umgesetzt werden, die über eine Reihe verschiedener PDLs verwendet werden können. Daher werden in dem derzeitigen Drucker-Controller Rasterisierungsanforderungen weiter in eine kleine Zahl von sehr einfachen Farbapplikationen gegliedert. So wird beispielsweise in einer bevorzugten Ausgestaltung eine Form von Farbapplikation für mehrfarbige Applikationen verwendet, und eine andere Form von Farbapplikation wird für einfarbige Applikationen verwendet. Für mehrfarbige Applikationen haben Farbapplikationsbefehle die folgende Form:
    At<x, y>: <Color 1, n1><Color 2, n2> ...
  • Es ist leicht verständlich, dass der obige Befehl vorgibt, dass, beginnend an einem Punkt, der durch die Koordinaten x und y ausgedrückt wird, eine Reihe von Pixeln n1 in der x-Richtung auf eine erste Farbe, Color 1, eingestellt wird, danach wird eine Reihe von Pixeln n2 auf eine zweite Farbe, Color 2, eingestellt usw.
  • Für einfarbige Applikationen bleibt die Farbe immer gleich. Daher haben Farbapplikationen die folgende Form:
    At<x, y>: Color<paint n1><skip n2><paint n3> ...
  • Es ist leicht verständlich, dass die obige Applikation vorgibt, dass, beginnend an einem Punkt, der durch die Koordinaten x und y ausgedrückt wird, eine Reihe von Pixeln n1 in der x-Richtung auf die vorgegebene Farbe eingestellt wird, danach wird eine Reihe von Pixeln n2 übersprungen (d. h. in dem Farbzustand gelassen, in dem sie waren), danach wird eine Reihe von Pixeln n3 in der x-Richtung auf die vorgegebene Farbe eingestellt, usw.
  • Rasterisierungsanforderungen (vom PDL-Interpreter erzeugt) werden verarbeitet und mit einem Satz von einfachen Routinen in Farbapplikationen gegliedert, während die Rasterisierungsanforderungen vom PDL-Interpreter empfangen werden. Die spezifischen Routinen, die zum Durchführen dieser Gliederung verwendet werden, liegen durchaus im Kompetenzbereich der Fachperson und werden daher hier nicht näher beschrieben.
  • Während des Erzeugens von Farbapplikationen werden diese in Abtastoperationen eines nachfolgend ausführlich beschriebenen Typs produziert und gemäß einem Organisationsschema, wie zum Beispiel einem der zuvor beschriebenen Organisationsschemata, in eine Warteschlange eingereiht. Das heißt, die derzeitige Rendering-Technik kann durch Einrichten der Abtastoperationen mit einem der verschiedenen konventionellen Verfahren des Einrichtens des Rasterisierungsprozesses angewendet werden, einschließlich der mit Bezug auf 1, 2 und 3 beschriebenen. Das Konvertieren von Farbapplikationen in Rasterisierungsbefehle erfolgt wiederum mit sehr einfachen Routinen, die durchaus im Kompetenzbereich jeder Fachperson liegen. Ein Beispiel für eine solche Konvertierung wird nachfolgend in Verbindung mit 8 beschrieben.
  • Abtastoperationen repräsentieren das Bild, das durch die PDL-Rasterisierungsanforderungen in einem komprimierten Format beschrieben wird. Ferner wird die komprimierte Darstellung des Bildes erzeugt, ohne zunächst das Bild zu expandieren oder einen Teil des Bildes zu rendern.
  • Bezug nehmend auf 6, in einer bevorzugten Ausgestaltung werden Abtastoperationen in einer Warteschlangenstruktur in einem Bereich 321 des Speichers 308 gespeichert. Ein separater Bereich des Speichers 323 wird zum Speichern von komprimierten Rasterdaten verwendet, die von dem nachfolgend beschriebenen Rasterisierer/Kompressor 306 erzeugt werden. Beide Arrays 321 und 323 können dynamisch im Speicher 308 zugewiesen werden (anstatt eine feste Zuweisung für jede einzelne zu führen). Ferner kann der Speicher 308 eine Warteschlange der komprimierten Rasterdaten für so viele Seiten enthalten, wie hinein passen.
  • Innerhalb des Speicherbereiches 321 werden Abtastoperationen auf eine in 7 illustrierte Weise organisiert. Ein Abtastzeilenindex 341 bildet den Kopf einer Reihe von verknüpften Listen oder Warteschlangen. Während Abtastoperationen erzeugt werden (als Reaktion auf Rasterisierungsanforderungen), werden die Abtastoperationen an den letzten Rasterisierungsblock für deren Abtastzeile erzeugt. Somit werden Abtastoperationen nach y-Koordinate sortiert, aber ansonsten in Rendering-Anforderungsreihenfolge gespeichert. Das Speichern der Abtastoperationen in Rendering-Anforderungsreihenfolge gewährleistet, dass die letztendlich ausgedruckte Seite dieselbe ist wie die von der PDL-Quelle beschriebene Seite.
  • Die Abtastoperationen-Warteschlangen werden zum Rendern und nachfolgenden Komprimieren jeder Abtastzeile nacheinander verwendet, um komprimierte Rasterdaten zu erzeugen, die im Bereich 323 im Speicher 308 gespeichert werden. Der Rasterisierungsprozess wird gestartet entweder 1) wenn eine Seite fertig ist oder 2) wenn keine Speicherkapazität mehr für Rasterisierungsblöcke vorhanden ist (im Bereich 321 im Speicher 308).
  • Der Einfachheit halber geht die vorliegende Beschreibung davon aus, dass im Bereich 323 des Speichers 308 genügend Speicherkapazität zum Speichern von komprimierten Rasterdaten für eine gesamte Seite zur Verfügung steht. Im Falle eines typisches Bildes wird eine signifikante Kompression des Bildes erzielt, so dass der Bereich 323 des Speichers 308 viel kleiner sein kann als eine Vollseiten-Bitmap. Im Extremfall wird jedoch (wo die Entropie des Quellbildes sehr hoch ist) wenig oder keine Kompression erzielt. Wenn der Speicherbereich 323 des Speichers 308 kleiner ist als eine Vollseiten-Bitmap, dann kann der Printer-Controller 300 die Seite möglicherweise nicht mit verlustfreien Kompressionstechniken rendern. Dieser Fall kann dadurch berücksichtigt werden, dass 1) Quellbilder mit ungewöhnlich hoher Entropie nicht gerendert werden, sondern dass stattdessen ein Fehlerzustand signalisiert wird; 2) eine Vollseiten-Bitmap erstellt wird, so dass die potenzielle Reduzierung der Speicheranforderungen zu Gunsten der Möglichkeit geopfert wird, ein willkürliches Bild zu rendern; oder 3) das Bild mit verlustbehafteten Kompressionstechniken (im Stand der Technik bekannt und beschrieben) auf eine Größe komprimiert wird, die in den Bereich 323 des Speichers 308 passt.
  • Der Rasterisierer/Kompressor 306 von 5 arbeitet in zwei Phasen, einer Rasterisierungsphase und einer Kompressionsphase. Während der Rasterisierungsphase werden für eine bestimmte Abtastzeile in der Warteschlange befindliche Abtastoperationen durch den Rasterisierer ausgeführt, um Rasterdaten zu erzeugen. Während einer Kompressionsphase werden die Rasterdaten zurück in dasselbe komprimierte Format komprimiert wie die Abtastoperationen und im Speicher gespeichert. Wenn die Rasterisierung für alle Abtastzeilen vollendet ist, dann werden die gespeicherten, komprimierten Rasterdaten Abtastzeile für Abtastzeile expandiert und zum Drucker ausgegeben.
  • Da die Rasterdaten zurück in dasselbe komprimierte Format komprimiert werden wie die ursprünglichen Abtastoperationen, können der Rasterisiererteil des Rasterisierers/Kompressors 306 und der Expander 307 größtenteils Abtastoperationen im selben Format verwenden und können beide auf ähnliche Weise implementiert werden. In einer beispielhaften Ausgestaltung beinhalten vom Rasterisierer 306 und vom Expander 307 verwendete Abtastoperationen Folgendes:
  • Figure 00090001
  • Es gibt ein paar wichtige Unterscheidungsmerkmale zwischen dem Betrieb des Rasterisierers und dem Betrieb des Expanders. Zunächst empfängt der Rasterisierer Abtastoperationen strikt in Abtastzeilenfolge aufgrund der vorherigen Operationen des Rasterisierers. Zweitens gibt der Expander die expandierten Rasterdaten direkt zu einer Ausgabe-Pipeline, von der die Daten von der Druckmaschine verbraucht werden. Der Rasterisierer berechnet andererseits eine Abtastzeile, aber anstatt die Abtastzeile zur Ausgabe-Pipeline auszugeben, komprimiert er die Abtastzeile erneut und speichert sie zur späteren Expansion. Ferner empfängt der Rasterisierer Abtastoperationen nicht in Abtastzeilenfolge, sondern in Rasterisierungsanforderungsfolge. Aufgabe des Rasterisierers ist es, Pixel zu unterschiedlichen Zeiten zu manipulieren, möglicherweise in der gesamten Abtastzeile, so dass eine Abtastzeilendarstellung entsteht, die der kumulative Effekt aller in der richtigen Reihenfolge ausgeführten Befehle ist.
  • So kann beispielsweise zum Bilden eines Schattenrandes eine Box aus einer ersten Farbe gezeichnet, aber dann zurück in eine Box mit einem Füllmuster einer zweiten Farbe gesetzt werden. In einer bestimmten Abtastzeile kann ein String von Pixeln infolgedessen zunächst auf die erste Farbe und danach auf die zweite Farbe gesetzt werden. Daher verwendet der Rasterisierer 306, zusätzlich zu den vorherigen Abtastoperationen, die folgenden Befehle, die nicht vom Expander 307 verwendet werden, um die Position in einer Abtastzeile zu ändern:
  • Figure 00100001
  • Man beachte jedoch, dass die tatsächlich verwendete Abtastoperationscodierung variieren kann. So könnte beispielsweise eine Huffman-Codierung oder eine Variante davon angewendet werden, um die obigen Operationen effizient zu codieren.
  • Der Prozess, mit dem Rasterisierungsanforderungen empfangen und in Farbapplikationen und wiederum in die vorherigen Abtastoperationen umgesetzt werden, die dann in eine Warteschlange eingereiht werden, wird mit Bezug auf 8 besser verständlich. Es wird angenommen, dass eine typische Rasterisierungsanforderung die Form At (x0, y0), COMMAND hat, wobei REQUEST eine der zuvor beschriebenen Anforderungen RAST1, RAST2 und RAST3 ist. Die Koordinate y0 wird benutzt, um zu ermitteln, wo die umgesetzten Abtastoperationen in die Warteschlange eingereiht werden sollen. Die umgesetzten Abtastoperationen beeinflussen die Abtastzeile y0, y0 + 1, ..., y0 + h – 1, wobei h die Höhe des mit der Rasterisierungsanforderung assoziierten Objekts ist. Eine die Abtastzeile y beeinflussende Abtastoperation wird in die Warteschlange zum letzten Rasterisierungsblock für Abtastzeile y eingereiht.
  • Es werden zwei mögliche Szenarios illustriert. Entweder erfordert der COMMAND die Applikation von nur einer einzigen Farbe, und in diesem Fall wird sie in eine Reihe von Single Color Farbapplikationen umgesetzt, oder sie verlangt die Applikation von mehreren Farben, und in diesem Fall wird sie in eine Reihe von Multi-Color Farbapplikationen umgesetzt. Diese Farbapplikationen werden dann in die vorherigen Abtastoperationen umgesetzt. In beiden Fällen ist die erste Abtastoperation eine Set x Abtastoperation, die zum Setzen der x-Koordinate auf den Wert x0 verwendet wird.
  • Man wird sich erinnern, dass für mehrfarbige Anwendungen Farbapplikationen die folgende Form haben:
    [Color 1, n1][Color 2, n2] ...
    wobei die eckigen Klammern dazu dienen, Farbapplikationen von Abtastoperationen zu unterscheiden. Wie in 8 ersichtlich ist, wird jede Multi-Color Applikation in eine Folge von Paaren von Abtastoperationen umgesetzt, wobei jedes Paar einer der obigen Klammern entspricht. Für jedes Feld [Color, n] wird eine Set Color Abtastoperation verwendet, um die Farbe auf die angeforderte Farbe einzustellen, und es wird eine zweite Repeat-Abtastoperation verwendet, um diese Farbe mit der geeigneten Häufigkeit zu wiederholen. Die Set Color Abtastoperation selbst bewirkt eine Applikation der Farbe auf einen Punkt. Die Repeat-Abtastoperation gibt somit einen Wert vor, der um eins geringer ist als der der entsprechenden Farbapplikation.
  • Single Color Befehle haben, wie zuvor bemerkt, die folgende Form:
    Color<paint n1><skip n2><paint n2> ...
  • Die Anwendung übersetzt zunächst in eine Set Color Abtastoperation, um die Farbe auf die angeforderte Farbe einzustellen. Als Nächstes wird mit Hilfe einer Repeat-Abtastoperation die Farbe mit der geeigneten Häufigkeit wiederholt. Skip-Felder werden in Skip-Abtastoperationen umgesetzt. Dann werden weitere Repeat- und Skip-Abtastoperationen verwendet, um die vorgegebene Farbe selektiv auf verschiedene Pixel und Pixelgruppen in der gesamten Abtastzeile zu applizieren.
  • 9 zeigt eine beispielhafte Implementation des Rasterisierers/Kompressors 306. Man beachte jedoch, dass auch andere Implementationen des Rasterisierers/Kompressors möglich sind, zum Beispiel solche, die auf einer lauflängencodierten Version der Abtastzeile anstatt auf der hier präsentierten Pixelarray-basierten Version basieren. In dem Rasterisierer/Kompressor 306 von 9 ist eine Steuerschaltung 501 mit dem Bus 313 verbunden und empfängt eine Folge von eine Abtastzeile beschreibenden Abtastoperationen von dem Bus 313, wobei jede Abtastoperation eine der vorherigen Abtastoperationen ist. Die Steuerschaltung 501 ist auch mit einem X-Register 503, einem Farbregister 505, einem StringFlag-Register 507, einem Längenregister 509 und einem Ausgaberegister 511 verbunden. Das X-Register 503 und das Farbregister 505 sind jeweils mit einem Speicher 400, einem Adresseingang und einem Dateneingang des Speichers 400 verbunden.
  • Der Speicher 400 dient zum Aufnehmen der in 5 gezeigten beiden Abtastzeilenanays 309 und 311. Jeder Ort in den Abtastzeilenanays enthält die Farbe für ein Pixel der Abtastzeile, und jede Array hat eine Reihe von Stellen, die der Zahl der Pixel in einer Abtastzeile n entspricht, wobei die Pixel durch den Wert von X indexiert werden. Eine der Abtastzeilenarrays enthält Daten für die aktuelle Abtastzeile, die andere Abtastzeilenarray enthält Daten für die vorherige Abtastzeile. Da Daten in der aktuellen Abtastzeile häufig Daten in der vorherigen Abtastzeile stark ähneln, erlaubt diese Anordnung die Erzielung eines hohen Grades an Kompression. In einer anderen Anordnung, in der Kompression keine Frage ist oder anders erzielt wird, ist möglicherweise nur eine Abtastzeilenarray erforderlich.
  • Am Ende der Verarbeitung jeder Abtastzeile werden die Rollen der Abtastzeilenarrays 309 und 311 vertauscht, so dass was die aktuelle Abtastzeilenarray C war, jetzt zur vorherigen Abtastzeilenarray wird, und was die vorherige Abtastzeilenarray P war, jetzt als die aktuelle Abtastzeilenarray verwendet wird.
  • Die oben allgemein beschriebenen vorherigen Abtastoperationen werden nun im Sinne ihrer Ausführungsschritte erläutert, und zwar wie folgt:
  • Figure 00120001
  • Die Repeat-Abtastoperation wird durch eine in 10 beschriebene Reihe von Schritten ausgeführt. Wenn die Repeat-Abtastoperation ausgeführt wird, dann wurde der StringFlag 507 zuvor auf falsch (false) gesetzt, wenn die nächstvorherige Abtastoperation eine Set Color Abtastoperation oder eine Copy Color Abtastoperation war, oder auf wahr (true), wenn die nächstvorherige Abtastoperation eine Copy String Abtastoperation war. Das Längenregister 509 wird auf die Repeat-Länge RepLg gesetzt und nach jedem Durchgang durch eine Code-Schleife dekrementiert. Bei jedem Durchgang wird, wenn StringFlag wahr ist, die Farbe an Stelle x in der vorherigen Abtastzeilenanay auf das Farbregister 505 kopiert, von dem es dann auf die Stelle x in der aktuellen Abtastzeilenanay kopiert wird. Dann wird der Wert von x inkrementiert und das Längenregister 509 dekrementiert. Wenn StringFlag 507 falsch ist, dann wird der Inhalt des Color Register einfach einmal für jede Repeat-Abtastoperation wiederholt.
  • Wenn eine End of Line Abtastoperation auftritt, dann ist die Rasterisierung der aktuellen Abtastzeile abgeschlossen und die Abtastzeile ist zur Rekompression bereit. Die bei der Kompression ausgeführten Schritte werden in 11 beschrieben. Der Ausgang der Kompressionsphase ist eine Reihe von Abtastoperationen, die die rasterisierte Abtastzeile beschreiben. Diese Abtastoperationen werden in einer jeweiligen Abtastzeilenwarteschlange im komprimierten Rasterdatenbereich 323 (6) des Speichers 308 gespeichert.
  • Mit Bezug auf 11, der Kompressor beginnt mit der Kompression am Anfang der Abtastzeile durch Einstellen des Indexwertes x auf null. Die Farbe der aktuellen Abtastzeile am Indexwert und die Farbe der vorherigen Abtastzeile am selben Indexwert werden dann in dem Bemühen verglichen, einen ersten Lauftyp zu identifizieren, in dem die Farbe von Pixel zu Pixel variiert, aber auf dieselbe Weise variiert wie eine in der vorherigen Abtastzeile. Wenn eine Identität gefunden wird, dann wird der StringFlag 507 auf wahr gesetzt; ansonsten wird die Set Color Abtastoperation ausgegeben. Die Farbe des aktuellen Pixels wird im Farbregister 505 gespeichert. Das Speichern der Farbe des aktuellen Pixels im Farbregister ermöglicht die Identifikation von Durchläufen eines zweiten Typs, in dem die Farbe von Pixel zu Pixel gleich bleibt.
  • Als Nächstes wird die Länge jedes Durchlaufs festgestellt. Für jede der Schleifen 14 in 11 wird jedes Mal, wenn die Farben in einem Durchlauf eine bestimmte Bedingung erfüllen, das Längenregister 509 (anfangs auf null gesetzt) inkrementiert. Das X-Register 503 wird ebenso inkrementiert.
  • Es gibt zwei Typen von Durchläufen. Das heißt, Pixel x bis x + n in der vorherigen Abtastzeile können alle von einer bestimmten Farbe sein, und Pixel x bis x + n in der aktuellen Abtastzeile können alle von derselben Farbe sein. Wenn Pixel x + n + 1 in der aktuellen Abtastzeile von einer anderen Farbe als sowohl Pixel x + n + 1 in der vorherigen Abtastzeile als auch Pixel x + n in der aktuellen Abtastzeile ist, dann ist es egal, welcher Durchlauf gewählt wird. In der Routine von 11 wurde willkürlich der erste Durchlauftyp gewählt (Schleife 1). Wenn jedoch Pixel x + n + 1 in der aktuellen Abtastzeile von derselben Farbe ist wie Pixel x + n + 1 in der vorherigen Abtastzeile, dann kann der erste Durchlauftyp erweitert werden und die Kompression wird erhöht, indem der längere erste Durchlauftyp anstatt des kürzeren zweiten Durchlauftyps (Schleife 2) gewählt wird. Ebenso kann, wenn Pixel x + n + 1 in der aktuellen Abtastzeile von derselben Farbe ist wie Pixel x + n in der aktuellen Abtastzeile, dann kann der zweite Durchlauftyp erweitert werden und die Kompression wird dadurch erhöht, dass der längere zweite Durchlauftyp anstatt des kürzeren ersten Durchlauftyps gewählt wird (Schleife 3). Wenn kein Durchlauf des ersten und zweiten Typs oder nur des ersten Typs gefunden wird, dann muss nur noch ermittelt werden, ob ein Durchlauf nur des zweiten Typs gefunden werden kann (Schleife 4).
  • Wenn also StringFlag wahr ist, was bedeutet, dass das aktuelle Pixel dieselbe Farbe hat wie das entsprechende Pixel in der vorherigen Abtastzeile, dann wird zuerst die Länge eines Durchlaufs beider Typen (dieselbe Farbe und auch gleich dem entsprechenden Durchlauf in der vorherigen Zeile) durch Schleife 1 festgestellt. Danach wird der Durchlauf erweitert, wenn dies möglich ist. Schleife 2 prüft, ob er zu einem längeren Durchlauf von Farben erweitert werden kann, die mit der vorherigen Abtastzeile identisch sind. Wenn Schleife 2 erfolgreich ist, dann wird eine Copy String Abtastoperation erzeugt. Schleife 3 versucht, ihn auf einen Lauf derselben Farbe zu erweitern. Wenn Schleife 3 erfolgreich ist, dann wird eine Copy Color Abtastoperation erzeugt.
  • Wenn StringFlag falsch ist, dann wird die Länge des zweiten Durchlauftyps (aber beginnend mit einer Farbe, die sich von der in der vorherigen Abtastzeile unterscheidet) durch Prüfen der Identität der Farben nachfolgender Pixel in der aktuellen Abtastzeile mit der im Farbregister 505 gespeicherten Farbe festgestellt. Dies erfolgt durch Schleife 4. Auch hier werden wieder immer dann, wenn die Farben gleich sind, das Längenregister 509 und das X-Register 503 beide inkrementiert.
  • Es wird eventuell kein Durchlauf von einem dieser Typen gefunden, und in diesem Fall bleibt die im Längenregister 509 gespeicherte Länge null. In diesem Fall wurde x bereits inkrementiert und die vorherigen Operationen werden wiederholt. Wurde ein Durchlauf gefunden, dann wird eine Repeat-Abtastoperation mit der Länge des Durchlaufs ausgegeben, und die vorherigen Operationen werden mit dem neuen x-Wert wiederholt. Nach dem Verarbeiten des letzten Pixels wird eine End of Line Abtastoperation ausgegeben, und die Register werden für die nächste Abtastzeile zurückgesetzt. Wenn alle Abtastzeilen rasterisiert und komprimiert sind, dann kann das komprimierte Bild vom Expander 307 expandiert und zur Druckmaschine ausgegeben werden.
  • Man beachte, dass, wenn eine Abtastzeile in der Abtastzeilenarray 400 platziert ist, es für Kompressionszwecke unerheblich ist, wo diese Abtastzeile herkommt oder wie sie gerendert wurde. Die identische Kompressionshardware oder -software kann daher in Verbindung mit jedem Rasterisierer verwendet werden. So ist zum Beispiel in einigen Fällen die Markierungsschnittstelle einer bestimmten proprietären PDL vielleicht nicht zugängig, aber das rasterisierte Bild kann zugängig sein, während es erzeugt wird. Das rasterisierte Bild kann nebenbei komprimiert werden, wodurch die Notwendigkeit entfällt, das gesamte Rasterbild zu speichern.
  • 12 zeigt eine beispielhafte Implementation des Expanders 307. Der Expander kann auf eine Weise implementiert werden, die dem Rasterisierer/Kompressor sehr ähnlich ist. Eine Steuerschaltung 701 ist mit dem Bus 313 verbunden und empfängt eine Folge von Abtastoperationen von dem Bus 313, die eine Abtastzeile beschreiben, wobei jede Abtastoperation eine aus den vorherigen Expansions-Abtastoperationen ist. Die Steuerschaltung 701 ist auch mit einem X-Register 703, einem Farbregister 705, einem StringFlag-Register 707, einem Längenregister 709 und einem Ausgaberegister 711 verbunden. Das X-Register 703 und das Farbregister 705 sind jeweils mit einem Speicher 500, mit einem Adresseingang und einem Dateneingang des Speichers 500 verbunden.
  • Der Speicher 500 dient zur Aufnahme von Daten für die aktuelle sowie die vorherige Abtastzeile. Dieser Speicher speichert insbesondere die aktuelle Abtastzeile bis zum Zugriff auf das aktuelle Pixel (X-Register 703) und den Inhalt der vorherigen Abtastzeile zwischen dem aktuellen Pixel und dem Ende der Abtastzeile. Die beiden Abtastzeilen könnten natürlich auch in ihrer Gesamtheit in zwei Puffern gespeichert werden, die in einer Pingpong-Weise verwendet werden.
  • Die oben allgemein beschriebenen vorangegangenen Expansions-Abtastoperationen können jetzt im Sinne ihrer Ausführungsschritte spezifiziert werden, und zwar wie folgt:
  • Figure 00140001
  • Die Ausführungsschritte für die Abtastoperationen im Expander sind größtenteils dieselben wie die Ausführungsschritte für die entsprechenden Operationen im Rasterisierer, mit geringfügigen Variationen. Die von dem Expander für die Repeat-Abtastoperation ausgeführten Ausführungsschritte sind in 13 beschrieben und sind größtenteils dieselben wie die Ausführungsschritte für die in 10 beschriebene entsprechende Rasterisierungs-Repeat-Abtastoperation, wiederum mit geringfügigen Variationen, die nicht näher beschrieben werden.
  • Wie zuvor erwähnt, gibt der Expander die expandierten Rasterdaten direkt zu einer Ausgangs-Pipeline aus, von der die Daten von der Druckmaschine verbraucht werden. In vielen Fällen stellt der Drucker selbst die Ausgabe-Pipeline dar und fordert vom Expander die aufeinander folgenden Pixelwerte gemäß Synchronisationssignalen an, die von der Ausgabe-Pipeline erzeugt werden. Alternativ kann sich die Ausgabedaten-Pipeline in der zweiten Schnittstellenschaltung 350 von 5 befinden und kann von einem in der Technik bekannten Typ sein, der in 14 ausführlicher dargestellt ist. Der Dateneingang eines FIFO-Speichers 351 ist mit dem Bus 313 verbunden. Über den Bus 313 erhält der Speicher 351 Daten von der CPU 305 oder vom DMAC 314. Der Datenausgang des FIFO-Speichers 351 ist mit einem Treiber 352 zum Ausgeben von Daten zum zweiten Schnittstellenverbinder 302 verbunden. Ein Empfänger 253 ist vorgesehen, um ein Bereitschaftssignal 358 vom zweiten Schnittstellenverbinder 302 weiter zu einer Steuerschaltung 354 zu leiten. Die Steuerschaltung 354 erzeugt ein Lesesignal 359, das zum FIFO-Speicher 351 geleitet wird, und ein Datentaktsignal 356, das durch den Treiber 352 zum zweiten Schnittstellenverbinder 302 übertragen wird. Die Synchronisierung der Steuerschaltung 354 wird mit einem Taktsignal 360 gesteuert, das von einer Takterzeugungsschaltung 355 generiert wird. Ein Leer-Flag-Signal 357 des FIFO-Speichers 351 wird in die Steuerschaltung 354 eingegeben.
  • Die Ausgabe-Pipeline von 14 kann auch modifiziert werden, um auf eine in der Technik bekannte Weise einen Rand zu erzeugen, um weißen Raum bis zum Erreichen des ganz linken Pixels der Abtastzeile in den Drucker zu speisen und um weißen Raum hinter dem ganz rechten Pixel der Abtastzeile in den Drucker zu speisen.
  • In der vorangegangenen Anordnung werden die eigentlichen Pixel des Bildes (während der Rasterisierung) von Abtastoperationen erzeugt, die nach Abtastzeile sortiert, aber nicht in der Abtastzeile geordnet sind, und dienen auch zum Erzeugen (während der Kompression) von Abtastoperationen, die sowohl nach Abtastzeile sortiert als auch in der Abtastzeile eingeordnet sind, wobei der Zustand jedes Pixels durch einen einzigen Befehl definiert wird. Die Darstellung der Pixel im komprimierten Format ist weitaus kompakter als die Pixel selbst, wodurch Speicheranforderungen reduziert werden. Ferner werden die eigentlichen Pixel selbst nur einmal gehandhabt, und zwar während des Expansionsprozesses. Infolgedessen werden Verarbeitungsbandbreitenanforderungen drastisch reduziert, und die Gesamtverarbeitungszeit kann durch die tatsächliche Breite der Abtastzeile (multipliziert mit einer geeigneten Konstante) begrenzt werden, wodurch die Anforderung erfüllt wird, die Abtastzeile schnell genug zu verarbeiten, um Pixel in Echtzeit zum Drucker zu übertragen.
  • Ebenso kann gemäß der obigen Anordnung, weil ein einzelner Kern von einfachen Operationen für Rasterisierung/Kompression und spätere Expansion verwendet werden kann, Hardware entwickelt werden, die die benötigten einfachen Operationen mit sehr hoher Geschwindigkeit durchführt, wodurch hohe Druckgeschwindigkeiten erzielt werden. Dieselbe Hardware kann nicht nur zum Beschleunigen der Rasterisierung und zum Ermöglichen eines gleichzeitigen Betriebs der CPU, sondern auch rein nur für Kompressionszwecke verwendet werden, wenn der Rasterisierungsprozess bereits fixiert ist. Wenn beispielsweise die Markierungsschnittstelle einer bestimmten PDL proprietär und nicht zugängig ist, aber das rasterisierte Bild zugängig ist, während es erzeugt wird, kann das rasterisierte Bild nebenbei komprimiert werden, so dass die Notwendigkeit entfällt, das gesamte Rasterbild zu speichern. Dieselben Vorzüge wie oben beschrieben werden auch in diesem Fall erzielt, mit der Ausnahme, dass die Rasterisierung langsamer sein kann, wodurch die Druckgeschwindigkeit begrenzt wird.
  • Die Fachperson wird verstehen, dass die vorliegende Erfindung auch in anderen spezifischen Formen ausgestaltet werden kann. Die derzeit offenbarten Ausgestaltungen werden daher in jeder Hinsicht als illustrativ und nicht einschränkend angesehen. Der Umfang der Erfindung wird durch die beiliegenden Ansprüche und nicht durch die vorangegangene Beschreibung definiert.

Claims (10)

  1. Verfahren zum Konstruieren von komprimierten Rasterdaten (323) für ein Raster, das einer Seite von einem oder mehreren Bildobjekten) entspricht, wobei das Verfahren mit einem Speicher (308) arbeitet und die folgenden Schritte umfasst: (a) Erzeugen eines Stroms von Rasterisierungsanforderungen, die in Folge vorgeben, wie und wo die Bildobjekte der Seite auf dem Raster rasterisiert werden sollen; (b) Zerlegen des genannten Stroms von Rasterisierungsanforderungen in eine Mehrzahl von Abtastoperationen, die jeweils vorgeben, wie und wo ein Abtastzeilensegment des Rasters gerendert werden soll; (c) Einreihen der Mehrzahl von Abtastoperationen (321) abtastzeilenweise in eine Warteschlange zum Bilden von Warteschlangen; (d) Verwalten der Warteschlangen in dem Speicher (308), wobei das Verfahren durch die folgenden Schritte gekennzeichnet ist: (e) unabhängiges Konvertieren, als Reaktion auf einen vorbestimmten Zustand, jeder Abtastzeile in komprimierte Rasterdaten (323) durch Rendern jeder Abtastzeile gemäß ihrer Warteschlange von Abtastoperationen und Komprimieren der Abtastzeile von Rasterdaten (323).
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt des Konvertierens jeder Abtastzeile in komprimierte Rasterdaten (323) Folgendes umfasst: (i) Halten eines existierenden Zustands der genannten komprimierten Rasterdaten (323) für das Raster in dem Speicher; (ii) Rendern der Rasterdaten für eine gegebene Abtastzeile in einem ersten Durchgang durch Dekomprimieren dazu gehöriger existierender komprimierter Rasterdaten (323); (iii) in einem zweiten Durchgang, Rendern der Rasterdaten von dem ersten Durchgang durch Dekomprimieren der genannten dazu gehörigen Warteschlange von Abtastoperationen in Folge; (iv) Rekomprimieren der Rasterdaten für die gegebene Abtastzeile aus dem zweiten Durchgang gemäß einem gegebenen Kompressionsschema; (v) Freimachen von Speicherkapazität in dem Speicher durch Verwerfen der Folge von Abtastoperationen in der genannten Warteschlange; (vi) Aktualisieren der existierenden komprimierten Rasterdaten (323) mit den rekomprimierten Rasterdaten für die gegebene Abtastzeile; und (vii) Wiederholen der Schritte (ii) bis (vi) für jede der anderen Abtastzeilen des Rasters.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Seite von einem oder mehreren Bildobjekten) mit einem Strom von PDL-(Page Description Language = Seitenbeschreibungssprache)Statements beschrieben werden kann und die genannte Serie von Rasterisierungsanforderungen durch Interpretieren des Stroms von PDL-Statements erzeugt wird.
  4. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Seite von einem oder mehreren Bildobjekten) mit einem Strom von Grafikbefehlen beschrieben werden kann und die genannte Serie von Rasterisierungsanforderungen durch Interpretieren des Stroms von Grafikbefehlen erzeugt wird.
  5. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass der vorbestimmte Zustand einen beinhaltet, bei dem alle PDL-Statements der Seite verarbeitet sind.
  6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass der vorbestimmte Zustand einen beinhaltet, bei dem die Speicherkapazität als unzureichend angesehen wird, um weitere Abtastoperationen an eine Warteschlange anzuhängen.
  7. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass das gegebene Kompressionsschema eines beinhaltet, das eine Dekompressionsrate hat, die für eine Druckmaschine geeignet ist.
  8. Verfahren nach Anspruch 2 oder 7, dadurch gekennzeichnet, dass das gegebene Kompressionsschema ein Lauflängencodierschema beinhaltet.
  9. Verfahren nach Anspruch 2 oder 7, dadurch gekennzeichnet, dass das gegebene Kompressionsschema ein Transformationscodierschema beinhaltet.
  10. Verfahren nach Anspruch 2 oder 7, dadurch gekennzeichnet, dass das gegebene Kompressionsschema eines beinhaltet, das verlustbehaftet ist.
DE69632644T 1995-07-03 1996-07-03 Bilderzeugung für seitendrucker Expired - Fee Related DE69632644T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US497477 1990-03-22
US49747795A 1995-07-03 1995-07-03
PCT/US1996/011443 WO1997002542A1 (en) 1995-07-03 1996-07-03 Image rendering for page printers

Publications (2)

Publication Number Publication Date
DE69632644D1 DE69632644D1 (de) 2004-07-08
DE69632644T2 true DE69632644T2 (de) 2005-05-25

Family

ID=23977046

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69632644T Expired - Fee Related DE69632644T2 (de) 1995-07-03 1996-07-03 Bilderzeugung für seitendrucker

Country Status (8)

Country Link
US (1) US6238105B1 (de)
EP (1) EP0870277B1 (de)
JP (1) JP3604152B2 (de)
AU (1) AU720541B2 (de)
CA (1) CA2226125A1 (de)
DE (1) DE69632644T2 (de)
HK (1) HK1015913A1 (de)
WO (1) WO1997002542A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6429949B1 (en) 1998-10-15 2002-08-06 Electronics For Imaging, Inc. Low memory printer controller
US6832187B1 (en) * 1999-05-10 2004-12-14 Hewlett-Packard Development Company, L.P. Methods of providing page protection in a digital printing system having multiple output devices
JP2001053620A (ja) * 1999-08-13 2001-02-23 Canon Inc 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体
JP3406557B2 (ja) 2000-02-18 2003-05-12 パナソニック コミュニケーションズ株式会社 複合機
US7324228B2 (en) * 2000-02-25 2008-01-29 Hewlett-Packard Development Company, L.P. System and method for downloading and for printing data from an external content source
US6564305B1 (en) * 2000-09-20 2003-05-13 Hewlett-Packard Development Company Lp Compressing memory management in a device
US7113302B2 (en) * 2001-10-16 2006-09-26 Texas Instruments Incorporated Printer with unified display list and banded display lists
JP4706237B2 (ja) * 2004-11-19 2011-06-22 ブラザー工業株式会社 データ処理装置、データ処理方法、およびデータ処理プログラム
JP4701685B2 (ja) * 2004-11-26 2011-06-15 ブラザー工業株式会社 データ処理装置、データ処理方法、およびデータ処理プログラム
US7978196B2 (en) * 2006-03-02 2011-07-12 Canon Kabushiki Kaisha Efficient rendering of page descriptions
JP5482888B2 (ja) * 2010-03-08 2014-05-07 コニカミノルタ株式会社 画像形成システム、コントローラ及びラスタライズアクセラレータ
JP6270597B2 (ja) * 2014-04-04 2018-01-31 キヤノン株式会社 画像形成装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170445A (en) * 1987-08-04 1992-12-08 Brooktree Corporation Document decompressing system
DE69117112T2 (de) * 1990-08-08 1996-06-27 Peerless Group Verfahren und Vorrichtung zur Bildwiedergabe
US5329616A (en) * 1990-08-16 1994-07-12 Canon Kabushiki Kaisha Compressed image stores for high resolution computer graphics
US5150454A (en) * 1991-10-16 1992-09-22 Patrick Wood Printing system and method
US5539865A (en) * 1992-11-10 1996-07-23 Adobe Systems, Inc. Method and apparatus for processing data for a visual-output device with reduced buffer memory requirements
US5367383A (en) * 1992-11-27 1994-11-22 Eastman Kodak Company Method and apparatus for maximizing data storage in a processor of image data
US5553200A (en) * 1995-03-03 1996-09-03 Electronics For Imaging, Inc. Method and apparatus for providing bit-rate reduction and reconstruction of image data using dither arrays

Also Published As

Publication number Publication date
JPH11509346A (ja) 1999-08-17
WO1997002542A1 (en) 1997-01-23
EP0870277A1 (de) 1998-10-14
AU6456296A (en) 1997-02-05
US6238105B1 (en) 2001-05-29
CA2226125A1 (en) 1997-01-23
HK1015913A1 (en) 1999-10-22
DE69632644D1 (de) 2004-07-08
AU720541B2 (en) 2000-06-01
EP0870277B1 (de) 2004-06-02
JP3604152B2 (ja) 2004-12-22

Similar Documents

Publication Publication Date Title
DE69817029T2 (de) Mischung von komprimierten rasterbildern in einem drucksystem
DE69734540T2 (de) Drucksystem und Datenverarbeitungsverfahren dafür
EP0764310B1 (de) Verfahren zur generierung einer contone-map
DE69730892T2 (de) Verarbeitung von Rückzugspunkten zur Blatterstellung mit Techniken zur Speicherreduktion
DE69831133T2 (de) Konfiguriation einer Datenverarbeitungspipeline
DE69837237T2 (de) Druckersteuerungssystem und -verfahren zur Vorbereitung eines Seitenlayouts
DE69632644T2 (de) Bilderzeugung für seitendrucker
DE19713654B4 (de) Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben
DE69737717T2 (de) Bildprozessor
DE2825321B2 (de) Rasterdrucker
DE69709695T3 (de) Verfahren zur seitenzusammensetzung
DE60035092T2 (de) Bildumwandlungsvorrichtung, Speichermedium, und Bildumwandlungsverfahren
EP2092465B1 (de) Verfahren und system zum automatischen aufbereiten von druckdaten für einen druckvorgang
EP1013070B1 (de) Verfahren und gerät zur elektronischen archivierung eines computer-datenstroms
DE19816895A1 (de) Druckerspeicher-Verstärkung
DE69729752T2 (de) Adaptive bildblockkompression
DE69825680T2 (de) Drucker mit prozedur zur muster-feldeinteilung und -skalierung
DE102008012329A1 (de) Verfahren, Drucksystem und Computerprogramm zum Erzeugen und Verarbeiten von Dokumentendatenströmen
DE69630907T2 (de) Drucker mit komprimierter Architektur bei grosser Bandbreite
WO1999028864A1 (de) Verfahren zur umsetzung digitaler daten im raster einer ersten auflösung in digitale zieldaten einer zweiten auflösung
EP0766856B1 (de) Verfahren zur montage von druckbögen
DE69932065T2 (de) Druckverfahren und gerät, das mehrere rasterbildprozessoren hat
EP0978091A1 (de) Verfahren zur bearbeitung von objekten auf druckseiten
DE3621046A1 (de) Verfahren und vorrichtung zur speicherung und verarbeitung von bildinformation
DE19549499B4 (de) Zeichenfontmustersteuerverfahren in einer Druckvorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee