-
Allgemeiner Stand der Technik
-
Sowohl Schwarzweiß- als auch Farbdrucker werden weithin geschäftlich und privat verwendet. Zu solchen Druckern gehören Laserdrucker, Tintenstrahldrucker und andere Drucktechniken. Zusätzlich zu Einzeldruckern werden Drucker auch weitgehend in andere Produkte eingebracht, die ein Druckteilsystem verwenden, wie etwa Kopiergeräte, Faxgeräte und Multifunktionsgeräte (z.B. eine Kombination aus mindestens zwei von einem Drucker, einem Scanner, einem Kopiergerät und einem Faxgerät), um nur einige zu erwähnen. Im Allgemeinen empfangen die Drucker Bilddaten und konvertieren die Bilddaten in Druckdaten, die verwendet werden, um das Bild auf einem Druckmedium zu drucken.
-
US7839424 B1 bezieht sich auf 2D horizontales streifenweises Skalieren. Ein digitales Bildverarbeitungssystem umfasst einen Scanner, Drucker, Kopierer oder ein anderes Bildverarbeitungsgerät. Ein Pixel-Array eines digitalen Bildes umfasst eine Anordnung von Pixeln in horizontalen Reihenmit einer Anzahl von Pixeln in jeder Reihe. Die Bild-Daten werden in einem ungerasterten Muster gelesen und verarbeitet. Das Pixel-Array wird in eine Vielzahl von horizontalen überlappenden Streifen aufgeteilt. Die Pixel-Werte werden innerhalb des horizontalen Pixel-Streifens gelesen und verarbeitet. Ein horizontaler PixelStreifen überlappt partiell mit einem benachbarten PixelStreifen so dass Reihen des Pixel-Array in diesen Streifen umfasst sind. Innerhalb jedes horizontalen Pixel-Streifens werden Pixel-Werte in einem ungerasterten Muster gelesen und skaliert. Anstatt die Pixel-Werte horizontale zeilenweise zu lesen werden die Pixel-Werte von oben nach unten und von links nach rechts gelesen.
-
Figurenliste
-
Es zeigen:
- 1 ein Blockschaltbild eines Druckers gemäß einer Ausführungsform der vorliegenden Offenbarung.
- 2 eine schematische Darstellung von Halbtonbilddaten, die unter Verwendung des Druckers aus 1 druckbar sind, gemäß einer Ausführungsform der vorliegenden Offenbarung.
- 3 eine schematische Darstellung eines Bildkompressors des Druckers aus 1 und seines Betriebs gemäß einer Ausführungsform der vorliegenden Offenbarung.
- 4 ein Blockschaltbild-Darstellung einer Bild-Pipeline des Druckers aus 1 gemäß einer Ausführungsform der vorliegenden Offenbarung.
- 5 eine schematische Darstellung der Verarbeitung von sich überlappenden Spaltenbereichen eines Streifens von Bilddaten, um zugeschnittene Spaltenbereiche von Druckdaten unter Verwendung des Druckers aus 1 zu bilden, gemäß einer Ausführungsform der vorliegenden Offenbarung.
- 6 eine schematische Darstellung der sequenziellen Verarbeitung der Spaltenbereiche eines Streifens von Bilddaten durch die Bild-Pipeline aus 5 gemäß einer Ausführungsform der vorliegenden Offenbarung.
- 7 eine schematische Darstellung eines beispielhaften Anweisungsflusses und seiner Ausführung durch einen Controller 52 des Druckers aus 1, gemäß einer Ausführungsform der vorliegenden Offenbarung.
- 8 ein Ablaufschema gemäß einer Ausführungsform der vorliegenden Offenbarung eines Verfahrens zum Konfigurieren eines Druckers für eine gewünschte Mediengröße und Druckauflösung.
- 9A und B Ablaufschemata gemäß einer Ausführungsform der vorliegenden Offenbarung eines Verfahrens, um mit einem Drucker, der mindestens ein Farbwerk aufweist, Halbtondaten zu drucken, die Pixel eines Bildes in einem Zeilen- und Spaltenformat darstellen.
-
Ausführliche Beschreibung
-
Wie im Abschnitt über den Stand der Technik erwähnt, werden Drucker weithin in vielen verschiedenen Produkten und Anwendungen verwendet. Viele Benutzer wünschen, dass diese Produkte bei einem bestimmten Leistungs- und Qualitätsniveau geringe Kosten aufweisen. Viele Benutzer wünschen auch, zu verschiedenen Zeitpunkten auf verschieden großen Druckmedien zu drucken. Beispielsweise kann der Benutzer manchmal wünschen, auf kleineren Medien im Format A4 zu drucken, während er andere Male auf größeren Medien im Format A3 drucken möchte. Ähnlich können die Benutzer wünschen, zu verschiedenen Zeitpunkten mit verschiedenen Druckauflösungen zu drucken; beispielsweise manchmal mit einer Auflösung von 300 Punkten pro Zoll (dpi) und ein anderes Mal mit 1200 dpi.
-
Die Druckmedien können eine beliebige Art von geeignetem Bogen- oder Rollenmaterial sein, wie etwa Papier, Pappe, Stoff oder anderes Gewebe, Folien, Mylar und dergleichen, doch der Einfachheit halber werden die abgebildeten Ausführungsformen beschrieben, wie sie Papier als Druckmedium verwenden.
-
Es wird ein Drucker ausgelegt, um die höchsten Anforderungen zu erfüllen, die er unterstützt. Bei dem obigen Beispiel würde der Drucker ausgelegt, um mit 1200 dpi auf A3-Medien zu drucken, könnte jedoch auch auf A4-Medien und mit 300 dpi verwendet werden. Höhere Anforderungen steigern die Kosten diverser Bauteile des Druckers. Beispielsweise verarbeiten viele Drucker die Daten für ein zu druckendes Bild in einer Reihe von bildbreiten Streifen. Das Verarbeiten und Speichern von Daten für einen A3-breiten Bildstreifen mit 1200 dpi verwendet Bauteile, die mehr Logik und Speicher aufweisen als ein A4-breites Bild mit 300 dpi. Ein derartiges Bauteil kann eine anwendungsspezifische integrierte Schaltung (ASIC) sein, die eine Bild-Pipeline umsetzt, um die Bilddaten in Druckdaten für ein Druckmodul zu konvertieren. In einem Fall sind diese Bauteile für die höchsten Anforderungen ausgelegt, und diese Kosten werden an alle Käufer weitergegeben, auch an diejenigen, die geringere Druckanforderungen haben. Alternativ werden unterschiedliche Bauteile für jeden Satz von Druckanforderungen ausgelegt, doch erhöhen sich dadurch Aufwand und Kosten für zahlreiche Aspekte des Betriebs eines Herstellers. Falls ferner eine neue Anforderung auftritt - beispielsweise das Drucken eines A3-breiten Streifens mit 2400 dpi -, wären die vorhandenen Bauteile wahrscheinlich nicht in der Lage, diese zu erfüllen. Nun mit Bezug auf die Zeichnungen ist dort ein Beispiel eines Druckers und von Druckverfahren, die Spaltenbereiche eines Bilddatenstreifens nacheinander verarbeiten, abgebildet. Der Drucker umfasst eine Bild-Pipeline, die dynamisch umprogrammiert wird, um jeden Bereich des Streifens zu verarbeiten. Die Anzahl von Spaltenbereichen, die für einen Streifen zu verarbeiten sind, wird basierend auf der Mediengröße, der Druckauflösung und einer vorbestimmten Breite der Spaltenbereiche konfiguriert. Durch Variieren der Anzahl von Spaltenbereichen, die für einen Streifen zu verarbeiten sind, können verschiedene Kombinationen von Mediengröße und Druckauflösung von der ASIC berücksichtigt werden. Diese Breite kann günstig ausgewählt werden, um vorteilhaft die Kosten des Druckers zu senken, indem das Ausmaß an Speicher und interner und externer Logik der ASIC bei geringer oder gar keiner Verringerung der Bildverarbeitungsrate reduziert wird. Die gleiche ASIC kann in vielen verschiedenen Druckern verwendet werden, die einen Bereich unterschiedlicher Anforderungen an Mediengröße und Druckauflösung aufweisen. Zusätzlich kann durch das Erhöhen der Anzahl von Spaltenbereichen in einem Streifen die ASIC verwendet werden, um auf neueren und größeren Mediengrößen und mit neueren und erhöhten Druckauflösungen zu drucken.
-
Wie es am besten mit Bezug auf 1 zu verstehen ist, weist ein Beispiel eines Druckers 10 ein Druckmodul 12 auf, um mindestens einen Farbstoff 14 auf einem Druckmedium 16 abzuscheiden. Wie der Begriff hier und in den beiliegenden Ansprüchen definiert ist, ist unter einem „Farbstoff“ im weitesten Sinne eine Substanz einer bestimmten Farbe zu verstehen, die auf ein Druckmedium abgeschieden wird, um mindestens einen Abschnitt eines gedruckten Bildes zu formen. Das Druckmodul 12 weist mindestens ein Farbwerk 18 auf. Wie der Begriff hier und in den beiliegenden Ansprüchen definiert ist, ist unter einem „Farbwerk“ im weitesten Sinne ein Druckmodul-Teilsystem zu verstehen, das direkt oder indirekt einen bestimmten Farbstoff auf ein Druckmedium abscheidet. Beispielsweise kann das Modul 12 vier Farbwerke 18 aufweisen, wobei jedes Farbwerk 18 konfiguriert ist, um einen anderen Farbstoff von Cyan (C), Magenta (M), Gelb (Y) und Schwarz (K) abzuscheiden. Solche Farbstoffe sind beispielsweise ein Farbstoffsatz, der es ermöglicht, dass ein Farbbild auf dem Druckmedium 16 gedruckt wird. Bei anderen Beispielen kann es statt eines einzigen Druckmoduls 12 mit mehreren Farbwerken 18 mehrere Druckmoduls 12 mit jeweils einem oder mehreren Farbwerken 18 geben.
-
Der Drucker 10 umfasst einen Kompressor 20. Der Kompressor 20 ist konfiguriert, um Halbtonbilddaten 22 in einem Zeilen- und Spaltenformat in komprimierte mehrzeilige Pixelstreifen 40 zu konvertieren. Wie der Begriff hier und in den beiliegenden Ansprüchen definiert ist, ist unter „Halbtonbilddaten“ im weitesten Sinne eine zweidimensionale Anordnung von Pixeln zu verstehen, die zusammen ein Bild darstellen, wobei die Pixel einen ausreichenden Wertebereich aufweisen, so dass das Bild für einen Betrachter im Wesentlichen ein Halbtonbild ist. Die Halbtonbilddaten können graustufig oder farbig sein. Die Halbtonbilddaten werden typischerweise in einem Farbraum dargestellt. Ein beispielhafter Farbraum ist RGB, wobei jeder Pixel einen roten Wert, einen grünen Wert und einen blauen Wert aufweist, die zusammen die Farbe des Pixels in einem dreidimensionalen Farbraum definieren. Ein RGB-Farbraum wird als „geräteunabhängig“ angesehen, indem die einzelnen R-, G- und B-Werte nicht einem bestimmten Bildwiedergabegerät entsprechen. Beispielsweise entsprechen diese Werte nicht den C-, M-, Y- und K-Werten für die Farbwerke 18 des Druckers 10.
-
Die Halbtonbilddaten 22 können externe Daten 28 sein, die von einer Quelle, die außerhalb des Druckers 10 liegt, wie beispielsweise von einem Computer, über eine Schnittstelle 24 empfangen werden. Bei einigen Beispielen können höhere Bilddaten, wie etwa Daten in einer Seitenbeschreibungssprache (PDL), an den Drucker 10 gesendet werden, und der Drucker 10 verarbeitet die PDL-Daten, um die Halbtonbilddaten 22 zu generieren. Die Halbtonbilddaten 22 können alternativ oder zusätzlich von einer Bildquelle 26, die innerhalb des Druckers 10 liegt, über die Schnittstelle 24 empfangen werden. Die Bildquelle kann beispielsweise ein optischer Scanner sein, der beispielsweise in einem Kopiergerät oder einem Multifunktions-Druckgerät enthalten ist. Verschiedene Formate von Halbtondaten 22 können in den Kompressor 20 eingegeben werden, und der Kompressor 20 kann konfiguriert sein, um viele verschiedene Halbtondatenformate zu komprimieren.
-
Wenn man nun die Halbtonbilddaten 22 genauer und weiter mit Bezug auf 2 betrachtet, sind die Daten 22 in einer Zeilen- und Spalten-Formataufstellung einzelner Pixel 34 angeordnet. Der Übersichtlichkeit halber wird eine geringe Anzahl dieser Pixel 34 abgebildet, obwohl es sich versteht, dass diese Pixel überall in den Daten 22 in einer zweidimensionalen Zeilen- und Spaltenanordnung vorhanden sind. Beispielsweise ist die Reihe 35 eine derartige Pixelreihe 34. Für die Datenkompression, die von dem Kompressor 20 ausgeführt wird, können die Bilddaten 22 in N unkomprimierte mehrzeilige Streifen 30 unterteilt werden, wie etwa in die Streifen, die mit 30A bis 30N bezeichnet sind. Jeder Streifen 30 schließt alle Pixel 34 einer gewissen Anzahl von Zeilen ein. Bei einigen Beispielen kann ein Streifen 30 alle Pixel 34 von 64 oder 128 Zeilen einschließen.
-
Wenn man nun den Betrieb des Kompressors 20 genauer und weiter mit Bezug auf 3 betrachtet, unterteilt der Kompressor 20 einen unkomprimierten Streifen 30 in eine Vielzahl von sich überlappenden mehrspaltigen Spaltenbereichen 32 zum Komprimieren. Jeder Bereich 32 umfasst eine Vielzahl von Spalten aus einzelnen Pixeln 34. 3 bildet linke 32A, mittlere 32B und rechte 32C sich überlappende Spaltenbereiche des Streifens 32 ab, die Grenzen aufweisen, die in geschwungenen Klammern (,,{“) angegeben werden. Der mittlere Bereich 32B stellt null bis N mittlere Bereiche dar; einige beispielhafte Streifen 30 weisen linke und rechte Spaltenbereiche 32A, 32C mit null mittleren Bereiche 32B auf, während andere beispielhafte Streifen 30 mehrere mittlere Bereiche 32B aufweisen. Die Pixel 34 in den Überlappungsbereichen 36 sind in den beiden sich überlappenden Bereichen 32 enthalten, die nachstehend mit Bezug auf 5 ausführlicher besprochen werden.
-
Nachdem ein sich überlappender Spaltenbereich 32 des unkomprimierten Streifens 32 identifiziert wurde, konvertiert der Kompressor 20 den Spaltenbereich 32 in einen komprimierten sich überlappenden Spaltenbereich 42 eines komprimierten mehrzeiligen Streifens 40. Der Kompressor 20 kann eine oder mehrere von vielen verschiedenen Kompressionstechniken, wie beispielsweise JPEG, JPEG 2000 und LZW, unter verschiedenen anderen verwenden. Bei einigen Beispielen kann ein komprimierter Spaltenbereich 42 eine einzige Eben umfassen, in der die komprimierten R-, G- und B-Werte der Pixel verschachtelt sind. Bei anderen Beispielen kann ein komprimierter Spaltenbereich 42 getrennte Ebenen für die R-, G- und B-Pixelwerte enthalten. Weiter mit Bezug auf 1 kann der komprimierte Streifen 40 in einem komprimierten Bilddatenspeicher 46 gespeichert werden. In manchen Fällen kann eine gewisse Anzahl von komprimierten Streifen 40 in dem Speicher 46 gespeichert werden, bevor die stromabwärtige Verarbeitung des komprimierten Streifens 40 beginnt. Beispielsweise kann eine gewisse Anzahl von komprimierten Streifen 40, die einem zu druckenden ganzseitigen Bild entsprechen, gespeichert werden, bevor die stromabwärtige Verarbeitung beginnt.
-
Der Drucker 10 umfasst eine Bild-Pipeline 50, die konfiguriert ist, um jeden komprimierten Spaltenbereich 42 eines ausgewählten der komprimierten Streifen 40 reihenweise zu verarbeiten, um Druckdaten 80 zu generieren, die dem Spaltenbereich 42 für ein ausgewähltes der Farbwerke 18 entsprechen, und die Druckdaten 80 in einem Druckdatenspeicher 90 zu speichern.
-
Wenn man nun die Bild-Pipeline 50 genauer und weiter mit Bezug auf 4 betrachtet, weist die Pipeline eine gewisse Anzahl von Stufen auf, die einen komprimierten überlappenden Spaltenbereich 42 verarbeiten. Wie der Begriff hier und in den beiliegenden Ansprüchen definiert ist, ist unter einer „Pipeline“ im weitesten Sinne ein Element zu verstehen, dessen Stufen (als Hardware, Software oder als Kombination davon) im Wesentlichen parallel an verschiedenen Umwandlungen von Daten ausführen, die reihenweise durch die Pipeline von Stufe zu Stufe weitergeleitet werden. Ein komprimierter Spaltenbereich 42 tritt in eine Dekompressor-Stufe 52 ein, die den Bereich 42 dekomprimiert, um dekomprimierte geräteunabhängige Halbtondaten 54 für den überlappenden Spaltenbereich zu generieren. Bei einigen Beispielen sind die geräteunabhängigen Daten 54 zu einer gewissen Anzahl I von Ebenen strukturiert. Wenn die geräteunabhängigen Daten 54 beispielsweise auf diese Art und Weise strukturiert sind, kann es drei getrennte Ebenen von R-, G- und B-Werten der Pixel 34 in den geräteunabhängigen Daten 54 geben. Die geräteunabhängigen Daten 54 treten dann in eine Farbraum-Konvertierungsstufe 56 ein, welche die Daten 54 in eine gewisse Anzahl J von Ebenen von farbwerkunabhängigen Daten 58 für den Spaltenbereich konvertiert. Beispielsweise kann es sich dabei um vier getrennte Ebenen von C-, M-, Y- und K-Werten der Pixel 34 in den dekomprimierten Spaltenbereichdaten 54 handeln. Die J Ebenen von farbwerkabhängigen Daten 58 werden einem Farbraum-Multiplexer 60 bereitgestellt. Der Multiplexer 60 wählt eine der J Ebenen zur Verarbeitung durch eine Druckgenerierungsstufe 70 aus. Aus den Pixeln der ausgewählten Ebene von farbwerkabhängigen Daten 58 generiert die Druckgenerierungsstufe 70 entsprechende Pixel von Druckdaten 80 für das bestimmte Farbwerk 18, das der ausgewählten der J Ebenen entspricht. Typischerweise weisen die Druckdaten 80 Steuersignale für das Farbwerk 18 auf, die bewirken, dass das Farbwerk 18, wenn die Steuersignale angelegt werden, auf dem Druckmedium 16 die geeigneten Mengen dieses Farbstoffs 14 abscheiden, die den Werten der diversen Pixel des Bildes entsprechen. Wie es nachstehend ausführlicher mit Bezug auf 5 besprochen wird, entsprechen die Druckdaten 80 den Pixeln 34 eines zugeschnittenen Abschnitts eines unkomprimierten Spaltenbereichs 32.
-
Die Druckgenerierungsstufe 70 kann eine gewisse Anzahl von Teilstufen umfassen. Eine Skalierungs-Teilstufe 72 kann die ausgewählte Ebene von farbwerkabhängigen Daten 58 in die Zeilen- und/oder Spaltenrichtungen skalieren. Beispielsweise kann die Skaliervorrichtung 72 300dpi-Daten in 600dpi-Daten konvertieren, indem sie eine 2X-Skalierungsoperation ausführt, oder kann sie zu 1200dpi-Daten konvertieren, indem sie eine 4X-Skalierungsoperation ausführt. Andere Skalierungsmengen können bei einigen Beispielen ausgeführt werden, einschließlich einer anderen Skalierungsmenge in die Zeilenrichtung aus der Spaltenrichtung. Eine Verstärkungs-Teilstufe 74 kann die farbwerkabhängigen Daten 58 verarbeiten, um die Qualität des gedruckten Bildes zu verbessern. Eine Rasterungs-Teilstufe 76 rastert die Daten auf eine Auflösung, die mit den Druckdaten für das Farbwerk 18 übereinstimmt, und kann ferner die Qualität des Bildes verbessern, das durch die Druckdaten erzeugt wird. Eine Puffermanager-Teilstufe 78 beendet die Formatierung der Druckdaten 80 und speichert sie in einem Druckdatenspeicher 90 (1).
-
Wenn man nun die Druckdaten 80 genauer und mit Bezug auf 5 betrachtet, wie zuvor besprochen, verarbeitet die Bild-Pipeline 50 sich überlappende Spaltenbereiche 42 von Halbtondaten und generiert zugeschnittene Spaltenbereiche 80 von Druckdaten für ein bestimmtes Farbwerk 18. Die Puffermanager-Teilstufe 78 der Bild-Pipeline 50 führt die Zuschneideoperationen aus, welche die Überlappung beseitigen. Beispielsweise werden die sich überlappenden Spaltenbereiche 42A bis C verarbeitet, um jeweils die zugeschnittenen Spaltenbereiche 80A bis C zu generieren. Die Spaltenbereiche 42A bis C sind definiert, um die Überlappung 36 zu umfassen, weil diverse Operationen, die durch den Druckdatengenerator 70 ausgeführt werden, wie beispielsweise diejenigen, die durch den Verstärker 74 und/oder den Rasterer 76 vorgenommen werden, an einem gleitenden Datenfenster vorgenommen werden können, durch das der Druckdatenwert eines Pixels mindestens teilweise durch die Werte seiner benachbarten Pixel bestimmt werden kann. Da jeder überlappende Spaltenbereich 42 von der Bild-Pipeline 50 reihenweise verarbeitet wird, um den entsprechenden zugeschnittenen Spaltenbereich 80 zu generieren, ist die Überlappung 36 breit genug, um diese Datenpixel von angrenzenden Spaltenbereichen 42 zu umfassen, welche die Druckdaten 80 für den Spaltenbereich 42, der verarbeitet wird, beeinflussen. Die linken 42A und rechten 42C überlappten Spaltenbereiche weisen eine Überlappungszone auf, während der oder die mittleren überlappten Spaltenbereiche 42B zwei Überlappungszonen aufweisen.
-
Die linke zugeschnittene Spalte 80A wird durch Zuschneiden der Zone 84A aus den Druckdaten generiert. Die mittlere(n) zugeschnittene(n) Spalte(n) 80B wird bzw. werden durch Zuschneiden der beiden Zonen 84B aus den Druckdaten generiert. Die rechte zugeschnittene Spalte 80C wird durch Zuschneiden der Zone 84C aus den Druckdaten generiert. Die sich ergebende Breite eines zugeschnittenen Spaltenbereichs von Druckdaten 80 ist die Breite des überlappten Spaltenbereichs 42 minus der oder den entsprechenden zugeschnittenen Zonen 84.
-
Bei einigen Beispielen können alle überlappten Spaltenbereiche 42A bis C, die durch die Pipeline verarbeitet werden, die gleiche Breite aufweisen. In diesem Fall sind die sich ergebenden mittleren zugeschnittenen Spaltenbereiche 80B schmaler als die linken 80A und rechten 80C zugeschnittenen Spaltenbereiche. Bei anderen Beispielen können die zugeschnittenen Spaltenbereiche 80A bis C, die von der Bild-Pipeline 50 ausgegeben werden, alle die gleiche Breite aufweisen. In diesem Fall sind die mittleren überlappten Spaltenbereiche 42B breiter als die linken 42A und rechten 42C überlappten Spaltenbereiche. Andere Variationen der Breite sind ebenfalls möglich.
-
Wenn man nun den Druckdaten-Pufferspeicher 90 genauer und mit Bezug auf 6 betrachtet, ist der Druckdatenspeicher 90 logisch als eine Ebene pro Farbwerk 18 von Druckdaten 80 in einem Zeilen- und Spaltenformat strukturiert. Die Bild-Pipeline 50 speichert die Druckdaten 80, die für ein bestimmtes Farbwerk 18 generiert werden, in die entsprechende Ebene des Speichers 90.
-
Der Speicher 90 weist typischerweise eine Tiefe auf, die ausreicht, um eine gewisse Anzahl von Streifen 88 der Druckdaten 80 zu speichern, wobei jeder Streifen 88 von Druckdaten einem Streifen 30 von Bilddaten 22 entspricht. Die Puffermanager-Teilstufe 78 der Bild-Pipeline 50 fügt die Druckdaten 80A bis C, die für jeden Spaltenbereich 42 generiert werden, in Stellen in einer entsprechenden Spalte 86A bis C der richtigen Ebene des Speichers 90 ein. Beispielsweise wird der linke Spaltenbereich 42A von der Bild-Pipeline 50 im 1. Durchgang verarbeitet, um die Druckdaten 80A zu generieren, die in den Speicherstellen der Spalte 86A eines bestimmten Streifens 88 gespeichert werden. Ähnlich wird bzw. werden der oder die mittleren Spaltenbereiche 42B von der Bild-Pipeline 50 in den Durchgängen 2 bis (N-1) verarbeitet, um Druckdaten 80B zu generieren, die in den Speicherstellen der Spalte(n) 86B des bestimmtes Streifens 88 gespeichert werden. Der rechte Spaltenbereich 42C wird von der Bild-Pipeline 50 in Durchgang N verarbeitet, um die Druckdaten 80C zu generieren, die in den Speicherstellen der Spalte 86c des bestimmten Streifens 88 gespeichert werden. Bei einigen Beispielen kann die Größe des Speichers 90 auf der Grundlage der Geschwindigkeit und der Breite des Druckmoduls 12 optimiert werden, um die Kosten des Druckers 10 zu reduzieren und zu minimieren.
-
Wenn alle Druckdaten 80 für einen bestimmten Streifen 88, der mit einem bestimmten Farbwerk 18 verknüpft ist, generiert wurden und in dem Speicher 90 gespeichert wurden, stehen sie zum Verbrauch durch das Farbwerk 18 des Druckmoduls 12 bereit, um den entsprechenden Farbstoff 14 auf dem Druckmedium 16 abzuscheiden.
-
Wenn nun die Verarbeitung eines komprimierten Streifens 40 genauer und weiter mit Bezug auf 6 betrachtet wird, werden die Operationen der Bild-Pipeline 50 durch einen Controller 52 organisiert. Der Controller 52 kann ein Mikrocontroller sein, der in einer ASIC 100 umgesetzt ist, die eine Bild-Pipeline 50 umfasst. Der Controller 52 ist konfiguriert, um mindestens einen Anweisungsfluss auszuführen, der in einem Anweisungsspeicher 54 gespeichert ist, der für den Controller 52 zugänglich ist, um die Pipeline 50 dynamisch umzuprogrammieren, um jeden der Spaltenbereiche 42 des ausgewählten Streifens reihenweise zu verarbeiten. Der Anweisungsspeicher 54 kann sich in der ASIC 100 befinden oder kann ein Bauteil außerhalb der ASIC 100 sein und kommunikationsmäßig mit der ASIC 100 gekoppelt sein. Der Controller 52 kann auch auf den SRAM-Speicher 56 in der ASIC 100 zugreifen. Der SRAM-Speicher 56 wird typischerweise zum Speichern von Zwischendaten verwendet, die von der Bild-Pipeline 50 generiert und verwendet werden. Bei einigen Beispielen kann die Menge des SRAM-Speichers 56 einer vorbestimmten maximalen Breite eines Spaltenbereichs 42 entsprechen, der von der Bild-Pipeline 50 verarbeitet werden kann.
-
Der Controller 52 programmiert die Bild-Pipeline 50 für jeden der Spaltenbereiche 42 dynamisch um, indem er in die Pipeline 50 zuvor gespeicherte Zustandsdaten, die mit dem Spaltenbereich 42 verknüpft sind, aus einem Zustandsspeicher 58 lädt, bevor der Spaltenbereich 42 verarbeitet wird, und indem er geänderte Zustandsdaten, die mit dem Spaltenbereich 42 verknüpft sind, in dem Zustandsspeicher 58 speichert, nachdem die Druckdaten 80 für den Spaltenbereich 42 generiert wurden. Der Zustandsspeicher 58 befindet sich typischerweise außerhalb der ASIC 100, kann sich jedoch alternativ innerhalb der ASIC 100 befinden. Für einen bestimmten Streifen 40 umfassen die Zustandsdaten, die aus dem Zustandsspeicher 58 für einen Spaltenbereich 42 geladen werden, typischerweise Daten, die mit einer oder mehreren Zeilen, neben dem bestimmten Streifen, des Spaltenbereichs für den zuvor verarbeiteten Streifen verknüpft sind. Diese Daten werden von dem Druckdatengenerator 70 in den gleitenden Fensteroperationen verwendet, die von den Zeilen des bestimmten Streifens ausgeführt werden, die neben dem zuvor verarbeiteten Streifen liegen, um die Wirkung auf die Pixel in diesen Zeilen des bestimmten Streifens von benachbarten Pixeln in dem zuvor verarbeiteten Streifen richtig zu berücksichtigen. Die Zustandsdaten können auch Informationen über den Zustand der diversen Teilsystem der Bild-Pipeline 50 umfassen, die ausreichen, um die Verarbeitung des bestimmten Spaltenbereichs 42 (d.h. links, Mitte, rechts) richtig zu ermöglichen.
-
Wenn man nun die Ausführung eines beispielhaften Anweisungsflusses 110 durch den Controller 52 und mit Bezug auf 7 betrachtet, ist der Anweisungsfluss 110 von der Anzahl von Spaltenbereichen 42 abhängig, die einen komprimierten Streifen 40 umfassen. Der beispielhafte Anweisungsfluss 110 ist konfiguriert, um zu bewirken, dass der Controller 52 und die Bild-Pipeline 50 drei Spaltenbereiche 42 - einen linken 42A, einen mittleren 42B und einen rechten 42C - für jeden komprimierten Streifen 40 verarbeiten. In Schritt 112 stellt der Controller 52 die Zustandsdaten für den linken Spaltenbereich 42A für die Bild-Pipeline 50 aus dem Zustandsspeicher 58 wieder her. In Schritt 114 ist die Bild-Pipeline 50 konfiguriert, um den linken Spaltenbereich 42A zu verarbeiten. Das Konfigurieren der Bild-Pipeline 50 umfasst typischerweise das Einrichten diverser Steuerregister und Tabellen der Bild-Pipeline 50 und das Initialisieren der diversen Bild-Pipeline-Teilstufen zur Verarbeitung des Bereichs. Anschließend an die Konfiguration verarbeitet die Bild-Pipeline 50 den Spaltenbereich 42A, generiert die Druckdaten 80A und speichert die Druckdaten 80A in dem Druckdatenspeicher 90 an der Spalte 86A für den geeigneten Streifen 88. Die Verarbeitung der Bild-Pipeline wird dadurch eingeleitet, dass der Controller 52 der Bild-Pipeline 50 mitteilt, den Spaltenbereich 42A zu verarbeiten 116. Während die Bild-Pipeline 50 den Spaltenbereich 42A verarbeitet, um die Druckdaten 80A zu generieren, wartet der Controller 52 auf ein Signal „Bereich beendet“ von der Bild-Pipeline 50. Bei einigen Beispielen kann der Controller 52 Verwaltungsaufgaben ausführen, während er auf dieses Signal von der Bild-Pipeline 50 wartet. Beispielsweise kann dazu das Bewerten mindestens eines von einer Verfügbarkeit der Ebenen des Speicherpuffers 90, die mit den diversen Farbwerken 18 verknüpft sind, um die Druckdaten 80 zu empfangen; einer Zeit, während der die diversen Farbwerke 18 auf Druckdaten 80 gewartet haben; und einem nächsten zu verarbeitenden Streifen für jedes der Farbwerke 18 gehören. Nachdem die Druckdaten 80A generiert und gespeichert wurden, sendet die Bild-Pipeline 50 das Signal „Bereich beendet“ an den Controller 52, das angibt, dass die Verarbeitung des Spaltenbereichs 42A beendet ist. Daraufhin speichert der Controller 52 in dem Zustandsspeicher 58 Zustandsdaten, die zur Verarbeitung des nächsten linken Spaltenbereichs 42A verwendbar sind.
-
Der mittlere Spaltenbereich 42B wird ähnlich durch die Anweisungen 120, 122 und 126 und die Operation 124 verarbeitet. Der rechte Spaltenbereich 42C wird ebenso ähnlich durch die Anweisungen 128, 130 und 134 und die Operation 132 verarbeitet. Nachdem alle Spaltenbereiche 42 eines Streifens 40 verarbeitet wurden und die entsprechenden Druckdaten 80 im Speicher 90 gespeichert wurden, kann der Controller 52 oder die Bild-Pipeline 50 ein Signal „Streifen beendet“ an das Druckmodul 12 senden, um das Modul 12 darüber zu informieren, dass ein Streifen von Druckdaten 80 für ein bestimmtes Farbwerk 18 zum Drucken zur Verfügung steht. Dann kann die Verfügbarkeit der Speicherebenen, die Farbwerkwartezeit und die Identifizierung des nächsten Streifens von dem Controller 52 verwendet werden, um den Streifen 40 und das Farbwerk 18 dynamisch auszuwählen, die für die Operation der Verarbeitung des nächsten Streifens von der Bild-Pipeline 50 zu verwenden sind. Die Sequenz von Streifen 40 und Farbwerken 18, die dynamisch von dem Controller 52 ausgewählt werden, generiert insgesamt Druckdaten 80 für alle Farbwerke 18 und für alle Streifen 40 der Bilddaten 22.
-
Wenn man nun die Konfiguration der Bild-Pipeline 50 zum Verarbeiten eines Streifens in N Spaltenbereiche 42 genauer und mit Rückbezug auf 1 betrachtet, umfasst der Drucker 10 eine Konfigurationsvorrichtung 140. Die Konfigurationsvorrichtung 140 konfiguriert per Programm die Pipeline 50, um einen Streifen 40 in N Spaltenbereiche 42 zu verarbeiten, indem sie einen entsprechenden Anweisungsfluss 110 generiert und in dem Anweisungsspeicher 54 speichert. Wie es zuvor beschrieben wurde, verarbeitet die Bild-Pipeline 50 die Spalten 42 einer vorbestimmten maximalen Breite, um das Ausmaß an Speicher und Logik in einer ASIC 100 für die Bild-Pipeline 50 zu reduzieren und um die Verwendung einer einzigen ASIC 100 in verschiedenen Druckern zu ermöglichen, die einen unterschiedlichen Bereich von Anforderungen an Mediengröße und Druckauflösung aufweisen. An der Stelle, wo ein Streifen 40 breiter als die maximale Breite der Bild-Pipeline 50 ist, wird der Streifen 40 in bis zu N Spaltenbereiche 42 zur Verarbeitung unterteilt. Die Konfigurationsvorrichtung 140 konfiguriert und generiert auch den Anweisungsfluss, der von dem Controller 52 durchgeführt wird, der die Bild-Pipeline 50 steuert.
-
Die Anzahl N von Spaltenbereichen 42, in die ein Streifen 40 unterteilt wird, wird basierend auf der maximalen Breite, einer vorgegebenen Größe des Druckmediums 16 und einer vorgegebenen Druckauflösung bestimmt, mit der die Druckdaten 80 zu drucken sind. Die Mediengröße und/oder die Druckauflösung können für einen bestimmten Drucker 10 vorbestimmt sein; sie können als Teil der Einschaltsequenz des Druckers 10 bestimmt werden; oder sie können vom Benutzer vorgegeben werden. Beispielsweise kann der Benutzer diese Paramater über eine Benutzerschnittstelle des Druckers eingeben. Der Drucker 10 kann eine Tastatur und ein Display (nicht gezeigt), die dazu verwendbar sind, oder andere Mechanismen aufweisen. Beispielsweise kann der Drucker die Mediengröße aus einer Einstellung bestimmen, die von dem Benutzer an dem Medienfach vorgenommen wird, um die gewünschten Medien in den Drucker einzulegen. Die Anzahl N von Spaltenbereichen 42, in welche ein Streifen 40 unterteilt wird, kann bestimmt werden, indem die Anzahl von einzeln druckbaren Elementen (z.B. „Punkten“) in eine Vollbreitenreihe der Druckdaten 80 durch die vorbestimmte maximale Breite der Bild-Pipeline 50 geteilt wird.
-
Sobald die Anzahl N sichergestellt wurde, kann die Konfigurationsvorrichtung 140 einen Anweisungsfluss 110 generieren, der N entspricht, und ihn in dem Anweisungsspeicher 54 speichern. Der Anweisungsspeicher 54 umfasst typischerweise einen anderen Anweisungsfluss 110 für jedes Farbwerk 18. Die unterschiedlichen Anweisungsflüsse 110 sind zum größten Teil ähnlich, doch aus Gründen der Bildqualität kann die Bild-Pipeline 50 einige unterschiedliche Steuerregister und/oder Tabelleneinstellungen aufweisen, die mit den verschiedenen Farbwerken 18 verknüpft sind. Wenn zwischen den Anweisungsflüssen 110, die mit den verschiedenen Farbwerken 18 verknüpft sind, keine Unterschiede bestehen, kann ein gemeinsamer Anweisungsfluss 110 von dem Controller 52 verwendet werden. Der Controller 52 verwendet den geeigneten Anweisungsfluss 110, der dem bestimmten Farbwerk 18 entspricht, für welches Druckdaten 80 für einen Streifen 40 von der Bild-Pipeline 50 generiert werden.
-
Bei einigen Beispielen umfasst die Konfigurationsvorrichtung 140 einen Prozessor 142, der mit einem Speicher 144 gekoppelt ist, der Firmware-Anweisungen enthält, die, wenn sie von dem Prozessor 142 durchgeführt werden, die Mediengröße und Druckauflösung bestimmen, die Anzahl N von Spaltenbereichen pro Streifen berechnen, den Anweisungsfluss 110 generieren und den Fluss 110 in dem Anweisungsspeicher 54 speichern.
-
Ein anderes Beispiel der vorliegenden Offenbarung, wie es am besten mit Bezug auf 8 verständlich ist, ist ein Verfahren 200 zum Konfigurieren eines Druckers 10 für eine gewünschte Mediengröße und Druckauflösung. In manchen Fällen kann das Ablaufschema aus 8 als Schritte in einem Verfahren angesehen werden, das in dem Drucker 10 umgesetzt wird, wie etwa durch einen oder mehrere des Controllers 52 und des Prozessors 142, die jeweils Anweisungen in dem Anweisungsspeicher 54 und dem Speicher 144 ausführen.
-
Das Verfahren 200 beginnt in Schritt 202 mit dem Bestimmen einer Anzahl M von Pixeln, die der Mediengröße und der Druckauflösung einer Zeile von Halbtonbilddaten 22 entsprechen. In Schritt 204 wird für eine Bild-Pipeline 50 des Druckers 10, die konfiguriert ist, um Bildzeilen einer vorbestimmten kleineren Anzahl m von Pixeln 34 zu verarbeiten, eine Anzahl N von sich überlappenden Spalten 32 basierend auf M und m berechnet. In Schritt 206 wird die Bild-Pipeline 50 konfiguriert, um einen Streifen 30 von mehreren Zeilen von M Pixeln 34 von Halbtonbilddaten 22 in Druckdaten 80 zu konvertieren, die dem Streifen 30 entsprechen. Die Bild-Pipeline 50 konvertiert den Streifen 30, indem sie eine komprimierte Version 40 des Streifens 30 reihenweise in N Spaltenabschnitten oder Spaltenbereichen 42 verarbeitet. Bei einigen Beispielen umfasst das Verfahren 200 in Schritt 208 das Generieren von Anweisungen 110 für einen Controller 52 der Bild-Pipeline 50. Die Anweisungen 110 sequenzieren die N Spaltenabschnitte 42 des Streifens durch die Pipeline 50. Bei einigen Beispielen umfasst das Verfahren 200 in Schritt 210 das Wiederholen der Bestimmung 202, der Berechnung 204 und der Konfiguration 206, um die Bild-Pipeline 50 umzukonfigurieren, um mindestens eine von einer anderen Mediengröße oder einer anderen Druckauflösung, die für den Drucker 10 eingestellt ist, zu berücksichtigen.
-
Noch ein anderes Beispiel der vorliegenden Offenbarung, wie es am besten mit Bezug auf 9 zu verstehen ist, ist ein Verfahren 300 zum Drucken, mit einem Drucker 10, der mindestens ein Farbwerk 18 aufweist, wobei Halbtondaten 22 die Pixel 34 eines Bildes in einem Zeilen- und Spaltenformat darstellen. In manchen Fällen kann man das Ablaufschema aus 9 als die Schritte in einem Verfahren ansehen, das in dem Drucker 10 umgesetzt wird, wie etwa durch einen oder mehrere von dem Controller 52 und dem Prozessor 142, die jeweils Anweisungen in dem Anweisungsspeicher 54 und dem Speicher 144 ausführen.
-
Das Verfahren 300 beginnt in Schritt 302 mit dem Komprimieren der Halbtondaten 22, die sich überlappenden mehrspaltigen Spaltenbereichen 32 eines mehrzeiligen Streifens 30 entsprechen, zu einem Satz komprimierter Spaltenblöcke 42 eines komprimierten Streifens 40. Bei einigen Beispielen können die Halbtondaten für alle Streifen einer Seite komprimiert werden, bevor ein Streifen in Schritt 306 dekomprimiert wird. In Schritt 304 wird ein Streifen der Halbtondaten identifiziert. In Schritt 306 wird jeder der komprimierten Spaltenblöcke 42, die dem identifizierten Streifen entsprechen, reihenweise in Halbtondaten 54 des entsprechenden Spaltenbereichs 32 dekomprimiert. In Schritt 308 werden die Halbtondaten 54 jedes Bereichs 32 des Streifens 30 reihenweise durch eine Bild-Pipeline 50 verarbeitet, um Druckdaten 80 zu generieren, die dem Streifen für ein einziges der Farbwerke 18 entsprechen, indem die Bild-Pipeline 50 für die Verarbeitung jedes Bereichs 32 dynamisch umprogrammiert wird. In Schritt 310 werden bei einigen Beispielen Zustandsdaten, die mit dem Spaltenbereich 32 verknüpft sind, geladen, bevor die Druckdaten 80 generiert werden, und Zustandsdaten, die mit dem Spaltenbereich 32 verknüpft sind, werden in Schritt 312 gespeichert, nachdem die Druckdaten 80 generiert wurden. In Schritt 314 werden die Druckdaten 80, die für den Spaltenbereich 32 des einzigen Farbwerks 18 generiert wurden, in eine entsprechende Spaltenposition 86 eines Speicherpuffers 90 für das Farbwerk 18 eingefügt, wobei der Speicherpuffer 90 in dem Zeilen- und Spaltenformat der Bilddaten 22 strukturiert ist. In Schritt 316 umfasst das Einfügen das Zuschneiden aus den Druckdaten 80 eines Spaltenabschnitts 84, der einen angrenzenden Spaltenbereich überlappt. In Schritt 318, nachdem die Druckdaten 80 für alle Spaltenbereiche 32 des Streifens in den Speicherpuffer 90 gesetzt wurden, wird mindestens ein Teil des Streifens auf ein Druckmedium 16 gedruckt, indem die generierten Druckdaten 80 aus dem Speicherpuffer 90 auf das Farbwerk 18 angewendet werden, um den Farbstoff 14 auf dem Druckmedium 16 abzuscheiden. Falls keine weiteren Streifen zu verarbeiten sind („Nein-“ Zweig von Schritt 320), dann ist das Verfahren 300 beendet. Falls weitere Streifen zu verarbeiten sind („Ja-“ Zweig von Schritt 320), dann wird in Schritt 322 mindestens einer der verschiedenen mehrzeiligen Streifen oder ein anderes der Farbwerke 18 ausgewählt, und die Verarbeitung wird durch Abzweigen zu Schritt 306 wiederholt. Bei einigen Beispielen umfasst diese Auswahl für mindestens ein bestimmtes Farbwerk das Bewerten mindestens eines von einer Verfügbarkeit des Speicherpuffers 90 des bestimmten Farbwerks 18 zum Empfangen von Druckdaten 80, einer Zeit, während der das bestimmte Farbwerk 18 auf die Druckdaten 80 gewartet hat, und einem zu verarbeitenden nächsten mehrzeiligen Streifen für das bestimmte Farbwerk 18.
-
Aus dem Vorstehenden geht hervor, dass der Drucker und die Verfahren, die von der vorliegenden Offenbarung bereitgestellt werden, einen erheblichen Fortschritt in der Technik darstellen. Begriffe zur Orientierung und relativen Position (wie etwa „oben“, „unten“, „seitlich“, „links“, „rechts“ und dergleichen) sind nicht dazu gedacht, eine bestimmte Orientierung eines beliebigen Elements oder einer beliebigen Baugruppe zu verlangen und werden aus praktischen Gründen der Erläuterung und Beschreibung verwendet. Obwohl mehrere spezifische Beispiele beschrieben und abgebildet wurden, ist die Offenbarung nicht auf die spezifischen Verfahren, Formen oder Anordnungen von derart beschriebenen und abgebildeten Teilen eingeschränkt. Beispielsweise sind die Beispiele der Offenbarung nicht auf eine bestimmte Drucktechnik eingeschränkt, sondern können Laserdrucker und Tintenstrahldrucker umfassen, um nur einige zu nennen. Es versteht sich, dass die vorliegende Beschreibung alle neuartigen und nicht offensichtlichen Kombinationen von hier beschriebenen Elementen umfasst, und dass in der vorliegenden oder einer späteren Anmeldung jede neuartige und nicht offensichtliche Kombination dieser Elemente in Anspruch genommen werden kann. Die vorstehenden Beispiele sind erläuternd, und kein einziges Merkmal oder Element ist für alle möglichen Kombinationen, die in der vorliegenden oder einer späteren Anwendung in Anspruch genommen werden können, wesentlich. Soweit nicht anders vorgegeben, müssen die Schritte eines Verfahrensanspruchs nicht in der vorgegebenen Reihenfolge ausgeführt werden.
-
Die Offenbarung ist nicht auf die zuvor beschriebenen Umsetzungen eingeschränkt, sondern ist vielmehr durch die beiliegenden Ansprüche im Hinblick auf ihren vollen Umfang von Äquivalenten definiert. Wenn die Ansprüche „ein“ oder „ein erstes“ Element seiner Äquivalente vortragen, sind diese Ansprüche als ein oder mehrere dieser Elemente umfassend zu verstehen, wobei sie zwei oder mehrere derartige Elemente weder benötigen noch ausschließen.