DE69323919T2 - Graphik-Koprozessor - Google Patents
Graphik-KoprozessorInfo
- Publication number
- DE69323919T2 DE69323919T2 DE69323919T DE69323919T DE69323919T2 DE 69323919 T2 DE69323919 T2 DE 69323919T2 DE 69323919 T DE69323919 T DE 69323919T DE 69323919 T DE69323919 T DE 69323919T DE 69323919 T2 DE69323919 T2 DE 69323919T2
- Authority
- DE
- Germany
- Prior art keywords
- pixels
- source image
- area
- image
- digital input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 105
- 238000009877 rendering Methods 0.000 claims description 56
- 239000011159 matrix material Substances 0.000 claims description 30
- 239000000872 buffer Substances 0.000 claims description 27
- 238000003860 storage Methods 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 8
- 239000007787 solid Substances 0.000 claims description 3
- 239000004065 semiconductor Substances 0.000 claims 1
- 238000012545 processing Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000012546 transfer Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000012216 screening Methods 0.000 description 9
- 238000003384 imaging method Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000007639 printing Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 239000011449 brick Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000010008 shearing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/40—Picture signal circuits
- H04N1/405—Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels
- H04N1/4055—Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a clustered dots or a size modulated halftone pattern
- H04N1/4058—Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a clustered dots or a size modulated halftone pattern with details for producing a halftone screen at an oblique angle
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Generation (AREA)
- Record Information Processing For Printing (AREA)
- Image Processing (AREA)
Description
- Die Erfindung bezieht sich auf ein System und Verfahren zum Erzeugen eines gerasterten graphischen Bildes mit den Merkmalen der Oberbegriffe der Ansprüche 1, 14 und 36.
- Das System dieser Erfindung ist verwendbar bei einer vorzugsweise auf einem Einzelchip integrierten Steuereinrichtung für Hochleistungs-Anzeigeeinrichtungen hoher Qualität, die bei Schriftsetzeinrichtungen, Bildsetzeinrichtungen, Farbdruckern und Druckern hohen Durchsatzes verwendet werden. Das System ist nützlich beim Interpretieren von Eingabecodes und beim Übersetzen von Eingabebefehlen zum Liefern graphischer Ausgaben, insbesondere in Form von Quellbildern, gefüllten Graphiken, Halbtonrastern und Zeichen, entweder in Schwarz-Weiß oder mit einem ausgewählten Grauhalbtonmuster gefüllt.
- Die vorliegende Erfindung ist bei vielen graphischen Co- Prozessoren verwendbar. Das System kann verwendet werden, um die Rasterbildgebung bei vielen Anwendungen zu verbessern, insbesondere dann, wenn die gewünschte Ausgabe zum Teil unter Verwendung geometrischer Grundformen beschrieben werden kann. Viele Druckeinrichtungen werden durch Seitenbeschreibungssprachen gesteuert, die die Sprache PostScript® von Adobe Systems, PCLTM von Hewlett Packard, Canon's LIPS, NEC's NPDL und andere Sprachen von Kyocera und Xerox umfassen.
- Bei einem bevorzugten Ausführungsbeispiel wird das System verwendet, um PostScript-Commandos von Adobe Systems zu implementieren. Auf Adobe Systems wurde die vorliegende Erfindung übertragen. Das PostScript-System wurde entwickelt, um graphische Informationen auf hohem Niveau an digitale La serdrucker zu übermitteln. Es ist eine flexible, kompakte und leistungsfähige Sprache sowohl zum Ausdrucken graphischer Bereiche als auch zum Durchführen allgemeiner Programmieraufgaben. Das bevorzugte Ausführungsbeispiel des Systems dieser Erfindung wird im Kontext eines Postscript-Druckers, -Schriftsetzgeräts oder -Bildsetzers beschrieben.
- Die PostScript-Sprache, deren Verwendung und Anwendungen sind in einer Reihe von Büchern eingehend beschrieben, die von Adobe Systems Inc. veröffentlicht wurden, einschließlich "PostScript Language Reference Manual" (Zweite Auflage) und "PostScript Language Programm Design". PostScript und verwandte Seitenbeschreibungssprachen sind bei Schriftsetzern, Bildsetzern, Farbdruckern und Druckern mit hohem Durchsatz ebenso wie bei hoch auflösenden Video- oder anderen Anzeigeeinrichtungen nützlich.
- Druck-, Videoanzeige- oder andere derartige Einrichtungen werden manchmal als Zeichenwiedergabeeinrichtungen oder Zeichenwiedergabemaschinen bezeichnet. Ein Rasterbildprozessor (RIP), der einer Zeichenwiedergabemaschine zugeordnet ist, konvertiert Eingabeinformationen und -kommandos in einen gerasterten (bit-mapped) Bereich, der zur Anzeige auf der zugehörigen Ausgabeeinrichtung geeignet ist. Im Handel erhältliche Einrichtungen umfassen den Apple LaserWriter® den Linotronic® 100 und 300, den Adobe Atlas RIP und den Emerald RIP. Eine Zeichenwiedergabemaschine kann vertikale oder horizontale Abtastzeilen verwenden, zur Vereinfachung werden hier aber nur horizontale Abtastzeilen beschrieben. Das gleiche oder ähnliche Verfahren oder Einrichtungen können für vertikale Abtastzeilen verwendet werden.
- Einige Rasterbildprozessoren verwenden ein Graphikbeschleunigerchip. Ein derartiges Chip ist das Hitachi ARCTC- Chip, welches ein einfaches Ausfüllen von Rechtecken und Kreisen, ein einfaches Linienzeichnen, Bit-Blitting und viele Boolsche Kombinationen dieser Funktionen implementieren kann. NEC'c 7220-Chip ist ebenfalls populär, kann aber nicht komplexe geometrische Merkmale wiedergeben. Hyphen hat ein graphisches Co-Prozessor-Chip angekündigt, aber dieses Bauelement ist noch nicht für eine Analyse öffentlich verfügbar.
- Beispiele bekannter Anordnungen von Gaphikanzeigesystemen sind in EP-A-0 425 180 (IBM) und in US-A-4 918 622 (Eastman Kodak Company) offenbart.
- Die Erfindung ist angegeben in den Ansprüchen 1, 14 und 36. Die abhängigen Ansprüche zeigen bevorzugte Ausführungsbeispiele.
- Das System der vorliegenden Erfindung enthält einen Eingabeabschnitt zum Empfangen digitaler Eingabekommandos, die Kommandos einschließen, welche einen Bereich des graphischen Bildes beschreiben oder einen Modus zum Ausfüllen des Bereichs spezifizieren. Ein Kommando-Interpreter ist mit dem Eingabeabschnitt gekoppelt zum Interpretieren der Eingabekommandos und zum Übersetzen der Kommandos in interne Kommandos zur Verwendung innerhalb des Systems. Ein mit dem Eingabeabschnitt und dem Kommando-Interpreter gekoppelter Rasterabschnitt rastert mehrere Pixel ab (erzeugt ein Rasterbild) eines ausgewählten Bereichs des graphischen Bildes mit einem Halbtonrastermuster während jeder Systemiteration. Ein mit dem Kommando-Interpreter und dem Rasterabschnitt gekoppelter Wiedergabeabschnitt erzeugt die Gerätepixeldaten für eine Rastereinrichtung und gibt diese aus. Das System kann dadurch weitergebildet werden, indem ein mit dem Rasterabschnitt gekoppelter Schwellenwertspeicher zum Speichern von Werten in einer Halbtonschwellenwertmatrix aufgenommen wird. Das System kann mehrere Gerätepixel während jeder Maschineniteration, typischerweise vier pro Taktzyklus, wiedergeben. Bei einigen Füllmodi kann das System 32 Gerätepixel pro Taktzyklus wiedergeben.
- Das Verfahren gemäß der vorliegenden Erfindung umfaßt das Erzeugen eines gerasterten graphischen Bildes, das zur Anzeige auf einer Rasteranzeigeeinrichtung oder einer Rasterzeichenwiedergabemaschine geeignet ist, indem ein erstes digitales Eingabekommando empfangen wird, welches einen Bereich eines graphischen Bildes beschreibt, ein zweites digitales Eingabekommando empfangen wird, welches einen Modus zum Ausfüllen des Bereichs mit einer speziellen Rastereinrichtung entsprechenden Gerätepixeldaten spezifiziert, und das erste und das zweite digitale Eingabekommando in wenigstens ein internes Kommando übersetzt werden, das parallel zu einem weiteren internen Kommando ausgeführt werden soll. Im wesentlich gleichzeitig und für jedes einer Mehrzahl von Rastergerätepixeln wird dann, wenn der Bereich mit einem ausgewählten Grauwert gefüllt werden soll, das jeweilige Rastergerätepixel mit einem zugehörigen Schwellenwert in einer Referenzmatrix von Schwellenwerten korreliert, wobei die Referenzmatrix von Schwellenwerten einer Matrix von Pixeln in einem Halbtonrastermuster entspricht, dann der ausgewählte Grauwert mit dem zugehörigen Schwellenwert verglichen und der Bereich wiedergegeben, indem die Gerätepixeldaten für die Rastergerätepixel entsprechend ihrem zugehörigen Schwellenwert, dem ausgewählten Grauwert und dem zweiten digitalen Eingabekommando eingestellt oder gesetzt werden, wodurch der Bereich mit Gerätepixeldaten gefüllt wird, um ein Halbtonrastermuster zu bilden. Alternativ wird dann, wenn der Bereich einfarbig gefüllt werden soll, der Bereich wiedergegeben, indem die Gerätepixeldaten für das jeweilige Rastergerätepixel so eingestellt werden, daß sie die Farbe (solid color) repräsentieren, und die Gerätepixeldaten in einer Form ausgegeben, die für eine Rasteranzeigeeinrichtung oder eine Rasterzeichenwiedergabemaschine geeignet ist.
- Das System dieser Erfindung kann gerasterte Bereiche bei einer gleichmäßigen Rate von 50 Mio. Pixel pro Sekunde und einer Burst-Rate von bis zu 80 Mio. Pixel pro Sekunde wiedergeben. Dies steht im Gegensatz zu Wiedergaberaten von ungefähr 500.000 Pixel pro Sekunde bei einem kommerziell erhältlichen Atlas RIP oder ungefähr 2,5 Mio. Pixel pro Sekunde bei einem Emerald RIP. Anders betrachtet, die Zeit zur Wiedergabe eines 8" · 10"-300dpi-Rasterquellbildes auf einem 1200dpi-Schriftsetzer-RIP mit Abrasterung war etwa 1,4 Sekunden, sofern das GCP verwendet wurde, was ungefähr eine zehnfache Verbesserung gegenüber bekannten Einrichtungen oder Systemen darstellt.
- Fig. 1 ist ein Blockschaltbild, das die Verbindungen des GCP-Systems dieser Erfindung mit anderen Komponenten eines graphischen Verarbeitungssystems veranschaulicht.
- Fig. 2 veranschaulicht die Hauptkomponenten eines bevorzugten Ausführungsbeispiels dieser Erfindung.
- Fig. 3 veranschaulicht einen willkürlichen Bereich, der in Trapezoide unterteilt ist.
- Fig. 4 veranschaulicht ein Ausführungsbeispiel von Halbtonrasterüberdeckelementen (halftone screen tiles), die zur Anzeige eines beliebigen Bereichs verwendet werden.
- Fig. 5 veranschaulicht ein winkelversetztes Quellbild und die Konvertierung von Quellpixeln in Gerätepixel.
- Das System der vorliegenden Erfindung wurde entworfen, um einen Co-Prozessor zur Verfügung zu stellen, um detaillierte Bilder hoher Qualität auf Rasterzeichenwiedergabemaschinen wiederzugeben, ohne eine Wirts-CPU zu erfordern, um sämtliche der Wiedergabefunktionen durchzuführen. Es kann sein, daß die Wiedergabe eines Bildes niedriger Auflösung nicht viel Zeit von einer Wirts-CPU oder von dem Co-Prozessor in dem System der Erfindung erfordern kann, aber die Wiedergabe eines hochauflösenden Bildes kann einen großen Anteil der Zeit beanspruchen. Die Verwendung des Systems und Verfahrens gemäß der vorliegenden Erfindung gestattet eine viel schnellere Wiedergabe hochauflösender Bilder.
- Das System dieser Erfindung ist zur Verwendung in einer Co-Prozessorarchitektur, insbesondere in Form eines einzelnen Chips, entworfen. Zur Vereinfachung wird das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung als graphischer Co-Prozessor oder "GCP" bezeichnet. Der GCP arbeitet an grundsätzlich in Form von Anzeigelistenbefehlen vorliegenden Eingabekommandos und weist verschiedene Wiedergabefunktionen den Einheiten innerhalb des GCP zu, welche parallel arbeiten können, um pro Taktzyklus mehrere Pixel eines Ausgabebildes wiederzugeben. Die Ausgabe kann in einem Puffer innerhalb des GCP, in einem zugeordneten oder in einem angeschlossenen Speicher gespeichert werden, oder sie kann zu einer Speichereinrichtung oder direkt an eine Zeichenwiedergabemaschine gesendet werden.
- Hochauflösende Zeichenwiedergabemaschinen, welche eine große Anzahl von Zeilen anzeigen, können gleichzeitig nur eine fest vorgegebene Anzahl von Zeilen wiedergeben. Dies liegt zum Teil daran, daß eine sehr große Anzahl von Pixeln in einem Speicher gleichzeitig gespeichert werden müssen, und daß Einschränkungen, einschließlich der Geschwindigkeit und des Preises des Speichers, die Menge des für irgendeinen Abschnitt der wiederzugebenden Figur zur Verfügung stehenden Speichers begrenzen. Für Geräte, die eine Auflösung von mehr als etwa 2.400 dpi aufweisen, ist ein typisches Band kleiner als die Höhe eines typischen Großbuchstabens. Die Zeichenwiedergabemaschine und die zugehörige Verarbeitungseinrich tung müssen folglich sogar eine einzelne Zeile von Zeichen als Serie von Bändern wiedergeben. Das aktuelle Band wird oftmals in einem Puffer gespeichert, welcher als Bandpuffer bezeichnet wird.
- Bei einem bevorzugten Ausführungsbeispiel besteht das System dieser Erfindung aus einer einzigen, relativ komplexen anwendungsspezifischen integrierten Schaltung (ASIC), die zur Vereinfachung hier als Graphik-Co-Prozessor (GCP) bezeichnet wird, und die mit bis zu vier Megabyte unterstützendem statischen Hochgeschwindigkeits-RAM verbunden ist, obwohl mehr oder weniger RAM verwendet werden können, sofern dies gewünscht ist. Alternativ kann der unterstützende RAM auf dem gleichen Chip wie der ASIC integriert sein. Die primäre Funktion des Systems besteht darin, gescannte oder synthetische Quellbilder in schwarzweiß, grau oder Farbe unter Verwendung eines schnellen Rasterverfahrens hoher Qualität in den Einzelbild- oder den Band-Puffer des RIP wiederzugeben.
- Das System und Verfahren dieser Erfindung ist insbesondere nützlich zur Verarbeitung und Ausgabe von Halbtonbildern, einschließlich synthetischer und natürlicher Bilder. Ein Halbtonrasterverfahren, welches unter Verwendung des Systems und Verfahrens dieser Erfindung implementiert werden kann, wird beschrieben und beansprucht in einer parallel anhängigen Anmeldung mit dem Titel "Method of Producing Halftone Images", EP-A-0427 380, angemeldet am 8. November 1989, von Stephen Schiller, die auf den Inhaber der vorliegenden Anmeldung übertragen worden ist. Diese Anmeldung beschreibt ein "Utah-Tile"-Halbtonrasterverfahren, welches gestattet, daß nahezu sämtliche Rasterwinkel und Frequenzen mit einem extrem hohen Genauigkeitsgrad dargestellt werden. Das Verfahren kann eine Schwellenwertmatrix ausgewählter Werte als Referenz für einen anzuzeigenden Bereich verwenden. Andere Halbtonrasterverfahren können ebenfalls durch das System und Verfahren dieser Erfindung implementiert werden, wie beispielsweise klassische Vier-Prozeßfarben-Rasterwinkel. Die sich ergebenden gedruckten Bereiche sind im wesentlichen frei von Moire-Mustern.
- Bei dem GCP werden sämtliche Kommandos und Argumente, welche für eine bestimmte graphische Operation spezifisch sind, einschließlich Einricht- und Konfigurationsinformationen, über Direktspeicherzugriff (DMA) weitergeleitet, während einige Initialisierungsdaten unter programmiertem I/O an Register innerhalb der GCP-Hardware, beispielsweise während des Einschaltens, geleitet werden können. Der Abschluß von DMA-Übertragungen kann über Abfragen (Polling) oder über ein Interrupt an die zentrale Verarbeitungseinheit (CPU) erfaßt werden.
- Es wird auf Fig. 1 Bezug genommen; das System dieser Erfindung, der GCP 10, kann als Co-Prozessor für die Wirts- CPU 11 in einem RIP verwendet werden, wobei es durch eine Anzeigelistenstruktur betrieben wird, welche in dem Hauptspeichersystem 13 gehalten werden kann. Der GCP 10 verwendet den Direktspeicherzugriff (DMA) auf das Hauptspeichersystem 13, um Daten zu gewinnen und zu speichern, wie es für verschiedene Operationen erforderlich ist, beispielsweise, um gescannte Quellbilder durch Halbtonrasterung wiederzugeben, um das Füllen graphischer Grundelementflächen durchzuführen und um Zeichenmasken zu einem beliebigen Einzelbild- oder Bandpuffer im Speicher zu übertragen, welcher sich im Hauptspeichersystem 13 befinden kann. Fig. 1 veranschaulicht die Verbindung herkömmlicher Elemente, einschließlich des Befehls-Cache 1 und Daten-Cache 2 mit der CPU 11 und dem Speicheradreßbus 4 und Speicherdatenbus 5. Das Hauptspeichersystem 13 ist mit dem Speicheradreßbus 4 und dem Speicherdatenbus 5 verbunden. Der GCP 10 ist mit dem Rasterspeicher mit wahlfreiem Zugriff (Raster-RAM) 12 über den Rasterdatenbus 14 und den Rasteradreßbus 15 verbunden. Der GCP 10 ist darüber hinaus mit der CPU 11, dem Speicherdatenbus 5 und über das Hauptspeicheradreß-Latch 3 mit dem Speicheradreßbus 4 verbunden. Der GCP 10 kann das Hauptspeichersystem 13 oder einen anderen Speicher (nicht gezeigt) als externen Speicher verwenden.
- Das System und Verfahren dieser Erfindung ist in der Lage, Trapezoide, Run-Arrays und Masken (einschließlich komprimierter Masken) wiederzugeben, wobei diese jeweils mit schwarzweiß oder einem ausgewählten Grauwert gefüllt werden können. Eine vollständige Anzeigeliste für eine typische Einzelbild- oder Band-Puffereinrichtung kann in einem einzigen Aufruf des GCP 10 wiedergegeben werden, während die Wirts-CPU andere Operationen parallel durchführt, wie beispielsweise das Heranholen der Anzeigeliste für das nächste Band von der Platte oder das Verarbeiten der nächsten Seite.
- Das System dieser Erfindung wird durch andere Hardware innerhalb des RIP unterstützt, einschließlich des Raster-RAM 12, welcher eine oder mehrere Schwellenwertmatrizen hält, die zum Durchführen einer oder mehrerer ausgewählter Rasterverfahren erforderlich sind. Bei einem Ausführungsbeispiel ist der Raster-RAM 12 als 256K · 32 Bits konfiguriert. Bei anderen Ausführungsbeispielen kann der Raster-RAM 12 als 64K · 32 Bits oder eine andere Konfiguration konfiguriert sein, was es dem Konstruktionsingenieur gestattet, einen Kompromiß zwischen den Entwurfs- und Herstellungskosten und der Rasterqualität zu finden.
- Unter Verwendung des PostScript-Systems wird ein gefüllter Bereich in graphische Grundelemente unterteilt, und diese Grundelemente werden als Ausgabe angezeigt. Fig. 3 veranschaulicht einen beliebigen Bereich 40, der durch die Außenlinien 41 und 42 begrenzt wird. Eine Außenlinie kann grundsätzlich als eine Serie von Linien oder Kurven beschrieben werden, die den Rand eines anzuzeigenden Bereichs definieren. Die Auflösung der Linien oder Kurven kann so gewählt werden, daß sie für eine Anzeige mit relativ geringer Auflösung geringer und zur Wiedergabe feinerer Details höher ist. Das Bild jedes wiederzugebenden gefüllten Bereichs kann in Segmente unterteilt werden, beispielsweise horizontale Segmente, die durch im wesentlichen gerade Kanten einer Außenlinie begrenzt werden, so daß sie Trapezoide, Run-Arrays oder andere geeignete geometrische Figuren bilden, um einen vollständigen Bereich aufzubauen.
- Die Verwendung von Trapezoiden als Basisgrundelement ist insbesondere nützlich bei einer Rasteranzeigeeinrichtung, welche einen Ausgabebereich aufbaut, indem sie horizontale Abtastzeilen verfolgt. Die Trapezoide sind vorzugsweise mit ihren parallelen Seiten in der Richtung der Abtastzeilen orientiert. Gemäß Fig. 3 können Abschnitte eines Bereichs als eine Mehrzahl von Trapezoiden wiedergegeben werden, beispielsweise als Trapezoide 43, 44, 45 und 47. Details können unter Verwendung einer oder mehrerer einzelner Abtastzeilen, beispielsweise der Abtastzeilen 46, 48, wiedergegeben werden. Eine Serie von Abtastzeilensegmenten kann als Run-Array für eine angenehmere Speicherung und Handhabung gespeichert werden. Ein Run-Array ist einfach eine Matrix (array) oder Ansammlung von Durchläufen (runs), die beispielsweise durch den Startpunkt und die Länge jedes eingeschlossenen Durchlaufs spezifiziert sind. Ein PostScript-Prozessor konvertiert Informationen über Trapezoide in einen Ausgabebereich auf oder für eine Rasterzeichenwiedergabemaschine üblicherweise in Form einer vollständigen Bit-Abbildung (bit map) des Ausgabebereichs. Ein typischer PostScript-Prozessor, der in Verbindung mit dem System und Verfahren dieser Erfindung verwendbar ist, bereitet jede Abtastzeile für die Ausgabe vor, bestimmt einen oder mehrere Bereiche von Pixeln auf dieser Abtastzeile, welche die Ausgabe umfassen sollte.
- Graphische Operationen bei dem bevorzugten Ausführungsbeispiel umfassen Trapezoid-Füllungen, Run-Array-Füllungen, Masken-Füllungen und Quellbildoperationen. Quellbildoperationen umfassen die Bildgebung mit Trapezoid- oder mit Run- Array-basierten Gerätebereichen. Bei einem bevorzugten Ausführungsbeispiel werden sämtliche zur Wiedergabe der Grundelemente erforderlichen Kommandos und Parameter in eine hauptspeicher-basierte Datenstruktur weitergeleitet, die Anzeigeliste genannt wird. Das Format dieser Anzeigeliste und eine Beschreibung der detaillierten Operation repräsentativer Kommandos wird unten beschrieben.
- Bei einem bevorzugten Ausführungsbeispiel enthält der GCP 10 eine Mehrzahl von Registern zum Speichern benötigter Werte. Diese Werte können Referenzpunkte umfassen, beispielsweise den Speicherplatz für den Start des Gerätekoordinatenraums, den ersten Speicherplatz in dem gegenwärtig wiedergegebenen Band, bestimmte Pixelkoordinaten, die gerade wiedergegebene Abtastzeile und andere Informationen. Der GCP 10 enthält darüber hinaus eine Mehrzahl von Zustandsmaschinen, die so konstruiert sind, daß sie in Abhängigkeit von den Eingaben in jede Zustandsmaschine spezielle Aufgaben ausführen.
- Bei einem bevorzugten Ausführungsbeispiel wird angenommen, daß die Daten oder Kommandos an einer 32-Bit-Grenze im Hauptspeicher beginnen. Datentypen umfassen Hauptspeicheradressen, ganze Zahlen, Gerätepixelkoordinaten, Zeiger, Zeichenmasken, komprimierte Zeichenmasken und Anzeigelistenoperatorbefehlscodes. Bestimmte Felder sind nicht definiert und sollten durch die Wirts-CPU auf Null gesetzt werden. Pixelkoordinaten können absolute Koordinaten im Gerätekoordinatenraum in Bezug auf die Startadresse des Gerätekoordinatenraums im Speicher sein. Diese Startadresse wird vor dem Beginn der Bildgebungsoperationen in ein Register geladen. Ganzzahlige Pixelkoordinaten beziehen sich auf die untere linke Ecke des jeweiligen idealisierten Gerätepixels, während Festkomma-Pixelkoordinaten sich auf irgendeinen Punkt innerhalb des Gerätepixels beziehen können. Festkomma-Pixelkoordinaten können in der üblichen Weise der 16 Bit Ganzplus 16 Bit Bruchteilkoordinaten repräsentiert sein. Ein Fachmann wird zusätzliche und alternative Datenstrukturen und -größen erkennen, welche bei dem System und Verfahren dieser Erfindung verwendet werden können.
- Die Basisadresse des Gerätekoordinatenraums ist in einem Gerätekoordinatenbasis(DCB)-Register gespeichert. Da die geeignete Zeichenwiedergabemaschine, die die Ausgabe der vorliegenden Einrichtung verwendet, üblicherweise eine hochauflösende Band-Einrichtung ist, bei der nicht der gesamte Gerätekoordinatenraumpuffer im Hauptspeicher gleichzeitig vorhanden sein wird, wird das DCB-Register häufig eine negative Zweierkomplementzahl enthalten, so daß die Pixeladreßberechnungen, welche ausgeführt werden, Adressen innerhalb des aktuellen Band-Puffers im Speicher erzeugen. Da viele Zeichenwiedergabemaschinen einen Gerätekoordinatenraum mit mehr als 2¹&sup6; Pixel entlang einer oder mehrerer Dimensionen aufweisen, kann außerdem das DCB-Register optional auf einen Punkt oder Ort gut innerhalb des Gerätekoordinatenraums versetzt sein. Die Verwendung versetzter Adressen innerhalb des PCB-Registers wird bei dem bevorzugten Ausführungsbeispiel unterstützt, um eine "erweiterte Adressierung" innerhalb des Gerätekoordinatenraums zu erreichen.
- Die vorliegende Erfindung ist insbesondere für vier Arten der Bildgebung und Graphikwiedergabearbeit in einer Hochleistungs-RIP-Umgebung nützlich:
- 1) bei der Abrasterung für eine "Halbtonrasterung" von eingescannten photographischen Bildern;
- 2) bei der Flächenfüllung mit Farb- oder Grauwerten, welche eine Abrasterung erfordert;
- 3) bei einer Flächenfüllung mit überall weißen oder überall schwarzen Werten (üblicherweise Linien); und
- 4) bei einer Wiedergabe unter einer Maske (typischerweise Zeichen-Bit-Maps).
- Obwohl die Wirts-CPU in der beabsichtigten Umgebung vorzugsweise ein schneller Prozessor ist, der in der Lage ist, das Ausfüllen von Flächen mit vollständig weiß oder vollständig schwarz bei nahezu der Hauptspeicherbandbreite auszuführen, kann es eine zusätzliche Leistungsverbesserung auf der RIP-Systemebene geben, indem es dem System und dem Verfahren dieser Erfindung gestattet wird, die Fülloperationen unabhängig von dem Wirt auszuführen. Die Co-Prozessorarchitektur gestattet es dem Wirt, die Anzeigenlistenverarbeitung, die PostScript-Sprachprogrammverarbeitung, die Diskettendatei-I/O-Verarbeitung oder andere Aufgaben durchzuführen, während die Anzeigeliste von dem System dieser Erfindung für einen gegebenen Band-Puffer wiedergegeben wird.
- Wenn Bereiche mit Grauwerten oder Farbpegeln gefüllt werden, die gerastert werden müssen, hat das System und Verfahren dieser Erfindung infolge der Komplexität der meisten Rasterverfahren einen entscheidenden Vorteil gegenüber wirts-basierten Ausfülloperationen. Traditionell können gefüllte Bereiche, welche einen einzigen Grauwert erfordern, schneller gefüllt werden, indem ein "Grau-Ziegelstein" (gray brick) oder ein kleines Muster von Pixeln zuvor berechnet wird, welches auf den aktuellen Graupegeleinstellungen basiert, die gegen den aktuellen Schirm gerastert ist. Beispielsweise könnte ein 50%-Grau aus abwechselnden weißen und blauen Pixeln bestehen, während ein 90%-Grau im Durchschnitt 1 weißes von 10 Pixeln (in zwei Dimensionen) haben würde. Der Ziegelstein (brick) wird verwendet, um den Geräteadreßraum mit einem einfachen, sich wiederholenden Muster von Bits mosaikartig zu überdecken (tile), welches die Gerätepixel darstellt, die bei einem fest vorgegebenen Graupe gelwert der Halbtonrasterung eingeschaltet sein müssen. Da der Graupegel fest ist, können die meisten der Schwellenwertberechnungen eliminiert werden, indem diese Funktion nur für eine oder eine geringe Anzahl von Halbtonzellen durchgeführt wird, dann das so gewonnene Bit-Map repliziert wird, wenn der jeweilige Bereich gefüllt wird. Bei modernen ausgeklügelten Halbton-Tile-Abrasterungsverfahren ist es im Unterschied zu primitiveren rationalen Abrasterungslösungen grundsätzlich nicht möglich, ein einfaches sich wiederholendes Muster von Nullen und Einsen einer begrenzten Größe (typischerweise 64K Bytes oder weniger) zu bestimmen. Dies beruht darauf, daß einige Raster um Winkel rotiert sind, welche bewirken, daß die Periodizität irgendwelcher Muster über eine gegebene Abtastzeile mehrere zehn oder Hunderte von Abtasteinheiten lang ist. Eine Abtasteinheit ist ein Computerwort, das einem oder mehreren Quellbild- oder Ausgabebereichsgerätepixeln entspricht, und ist üblicherweise von der Größe der ursprünglichen Wortgröße des Wirtsprozessors.
- Das Füllverfahren muß das Rasterschwellenwertvergleichsergebnis für jedes Gerätepixel einzeln bestimmen. Selbst wenn die Periodizität des Graumusters signifikant kleiner als die Bildfläche wäre, wäre die Berechnung eines "Grau- Ziegelsteins" ("gray brick") noch untragbar langsam im Vergleich zu der gewöhnlichen Abrasterlösung, wenn das System und Verfahren dieser Erfindung verwendet wird. Dies liegt daran, daß die Geschwindigkeit, bei welcher der Halbtonrasterprozeß unter Verwendung des GCP 10 abläuft, nur durch die Hauptspeicherbandbreite begrenzt ist.
- Die vorliegende Erfindung ist so konstruiert, daß sie eine maximale Leistung in einer ein wenig speziellen Steuereinrichtungsumgebung und für einen Bereich von hochauflösenden Arten von Zeichenwiedergabemaschinen bietet. Darüber hinaus ist die Zielkonstruktion der vorliegenden Erfindung für die häufigsten Arten von graphischen oder Bildgebungsoperationen und ihre üblichsten Parameter optimiert.
- In anderen Umgebungen bietet das System der Erfindung außerdem eine verbesserte Leistung gegenüber bekannten Einrichtungen, aber nicht so drastisch, wie die Leistung des GCP 10 unter idealen Bedingungen. Wenn beispielsweise ein rotiertes Bild präsentiert wird, müssen Quellbildproben gewonnen werden, was die Zeit und den Aufwand der Berechnung von Hauptspeicheradressen für jeden Block von drei oder vier wiederzugebenden Gerätepixeln erfordert, wenn man die typischen Quellen- und Zielauflösungen annimmt. Der zusätzliche Speichermehraufwand, der erforderlich ist, um die Befehlspipeline in dem GCP 10 für jede Berechnung anzuhalten, kann zu einer Reduktion der Bildgebungsleistung um einen Faktor von zwei oder mehr führen.
- Bei einem bevorzugten Ausführungsbeispiel ist der GCP 10 in die folgenden Hauptfunktionseinheiten unterteilt, von denen die meisten als unabhängige Zustandsmaschinen arbeiten, welche parallel funktionieren können, um verschiedene Abschnitte eines Bereiches wiederzugeben oder zu berechnen. Die meisten der Hauptfunktionseinheiten sind mit einem internen Bus verbunden. Diese Funktionseinheiten und Verbindungen sind in Fig. 2 veranschaulicht.
- STF 30 Rasterschwellenwertheranholer (Screen Threshold Fetcher)
- SF 29A Quellenheranholer (Source Fetcher)
- SI 29B Quelleingabe (Source Input)
- SFU 29 Quellheranholeinheit (Source Fetcher Unit)
- PIX 28 Pixel-Sammler (Pixel Assembler)
- MCS 20 Hauptsteuersequenzierer (Main Control Sequencer)
- MRH 26 Speicheranforderungsbehandler (Memory Request Handler)
- DL FIFO 23 Anzeigelisten-FIFO-Puffer (Display List FIFO)
- DI FIFO 24 Zieleingabe-FIFO (Destination Input FIFO)
- DO FIFO 25 Zielausgabe-FIFO (Destination Output FIFO)
- SI FIFO 27 Quelleingabe-FIFO (Source Input FIFO)
- Raster-RAM 12
- Jede der Funktionseinheiten dient dazu, einen zusätzlichen Grad der Parallelität bei dem Graphikwiedergabeprozeß zur Verfügung zu stellen ebenso wie die Adressierstruktur des von der jeweiligen Zustandsmaschine bedienten Puffer- oder Speicherbereichs zu isolieren. Funktionseinheiten arbeiten parallel, wobei sie einen Zustand pro Taktzyklus voranschreiten, wobei Kommunikationssignale zwischen den Einheiten verwendet werden, um die Operationen zu synchronisieren. Jede Funktionseinheit ist so konstruiert, daß ein Speicherpuffer für diese Einheit nur enthalten ist, wenn er erforderlich ist, und direkt dieser Funktionseinheit zugeordnet ist, was in den meisten Fällen eine einfachere Konstruktion für diese Einheit schafft.
- Der GCP 10 wurde als Einzelchip aufgebaut, wobei kommerziell erhältliche Standardzellenbibliotheken verwendet wurde, die ausgewählt und so miteinander verbunden wurden, daß sie die gewünschte Funktionalität ergeben. Das Chip wurde bei VLSI Technology in San Jose, Kalifornien, hergestellt. Die zum Herstellen des GCP 10 verwendeten Masken wurden gleichzeitig mit dem Einreichen dieser Anmeldung für einen Topologieschutz registriert. Ein Fachmann, der Zugriff auf Standardzellenbibliotheken hat, kann das System dieser Erfindung ohne Bezugnahme auf diese Masken implementieren.
- Der GCP 10 kann bei jedem Taktzyklus gleichzeitig vier Gerätepixel wiedergeben, wenn er ein Graufüllen oder eine Bildoperation durchführt. Bei einer Taktrate von 25 MHz wird somit eine Gesamtrate von bis zu 100 Mio. Pixel pro Sekunde in den Geräteeinzelbild- oder Band-Puffer im Hauptspeicher wiedergegeben. Mit optimalen Anzeigelistengrundelementen, die als große Objekte signifikanter Länge in der Abtastzeilenrichtung organisiert sind, wurde diese Wiedergaberate tatsächlich für ausreichende Zeitdauern erreicht, so daß die Gesamtwiedergaberate für typische Anzeigelisten 80 Mio. Pixel pro Sekunden erreichte.
- Um eine solche Leistung zur Verfügung zu stellen, führt der GCP 10 während jedes Taktzyklus viele Operationen parallel aus - ein Vorteil der Funktionseinheitenparallelität durch Pipelinekonstruktionstechniken. Während ein gegebenes Grundelement wiedergegeben wird, wird die tatsächliche pixelweise Verarbeitung in jeder Stufe der Pipeline durch eine Serie von "fest verdrahteten Zustandsmaschinen" gehandhabt, so daß eine Wiedergaberate von vier Pixeln pro Takt während des Hauptteils der Zeit erreicht wird.
- Bei einem bevorzugten Ausführungsbeispiel ist die primäre Eingabe an den GCP 10 eine Anzeigeliste, welche Informationen über Quellbilder, Bereiche, ausgewählte Füllcharakteristika und Zeichenformen, insbesondere Run-Arrays, Trapezoide und Masken enthält. Die Anzeigeliste ist vorzugsweise bereits für eine ausgewählte Zeichenwiedergabemaschine berechnet. Somit ist das System der Erfindung nur für das Konvertieren der Anzeigeliste in eine bitweise abgebildete Aus gabe in den Speicher bei einer gewählten Auflösung verantwortlich. Beispielsweise könnte eine bestimmte Anzeigeliste von der CPU 11 (Fig. 1) für eine Zielzeichenwiedergabemaschine, beispielsweise einen Videobildschirm mit einer Anzeige von 1024 · 1024 Pixeln bei 72 dpi, berechnet werden. Eine darauf bezogene, aber unterschiedliche Anzeigeliste könnte zum Ausgeben von im wesentlichen der gleichen Ausgabe an einen hochauflösenden Drucker nützlich sein, beispielsweise einen Drucker, der in der Lage ist, einen weißen Raum mit ausgewählten schwarzen Flecken (dots) bei einer ausgewählten Auflösung, beispielsweise 1200 dpi, zu füllen. Eine typische Anzeigeliste enthält eine Mehrzahl von Befehlscodes (op codes) und die für jeden Befehlscode erforderlichen relevanten Parameter.
- Bei einem bevorzugten Ausführungsbeispiel wird eine Anzeigeliste in Blöcken einer bestimmten Größe, beispielsweise 1 KByte, ggf. mit Verbindungen (links) zu nachfolgenden Blöcken vorbereitet. Die Anzeigeliste kann Subroutinen, z. B. zum Füllen von Mustern, mit Subroutinenrückkehrkommandos zurück zum Startpunkt in einer Elternanzeigeliste enthalten. Bei einem anderen bevorzugten Ausführungsbeispiel sind verschiedene Ebenen von Subroutinen implementiert.
- Ein nützlicher Befehlscode ist ein FillTrap-Befehl, welcher verwendet wird, um Trapezoide zu füllen. Ein Trapezoid wird geometrisch durch vier Punkte beschrieben, die entlang eines Umfangs verbunden sind. In der Praxis werden Trapezoide vorzugsweise mit zwei horizontalen Kanten und zwei abfallenden Kanten berechnet. Die Anzahl der wiederzugebenden horizontalen Abtastzeilen hängt von dem wiederzugebenden Trapezoid ab und kann zwischen einer sehr kleinen Anzahl (wenn beispielsweise ein Quellbild oder ein gefüllter Bereich sehr klein ist) zu einer sehr großen Anzahl (wenn beispielsweise eine große regelmäßige geometrische Figur bei einer hohen Auflösung angezeigt werden soll) variieren. Bei einem bevorzugten Ausführungsbeispiel enthält der FillTrap- Befehlscode Koordinaten einer unteren horizontalen Kante, einer oberen horizontalen Kante und Start- und Endpunkte entlang der unteren und oberen horizontalen Kanten. Der Befehl kann außerdem Informationen über den Anstieg jeder der angewinkelten Kanten enthalten, die vorzugsweise zuvor berechnet sind, um die Berechnung des Anstiegs zum Zeitpunkt der Wiedergabe zu vermeiden.
- Im GCP 10 werden das Innere und die Kanten des Trapezoids mit einem zuvor ausgewählten Weiß-, Schwarz- oder Grau- Pegel oder sogar mit einem gerasterten Quellbild, wie beispielsweise einem eingescannten Bild, gefüllt. Die Füllcharakteristika können in den dem Befehlscode zugeordneten Daten spezifiziert oder alternativ in einem Speicherplatz gehalten werden. Für die speziellen Fälle der Bildgebung von Parallelogrammen oder Trapezoiden mit einer oder mehreren vertikalen Kanten können zusätzliche Befehlscodes definiert werden, obwohl der Fachmann erkennt, daß es einen Kompromiß zwischen einem großen, leistungsfähigen Satz von Befehlen und einem kleinen, schnellen Satz von Befehlen, gibt.
- Ein weiterer Befehlscode ist der RunArrayFill-Befehl. Dieser Befehl enthält Informationen über die Dimensionen des Arrays, welche wiederum Informationen über mehrere horizontale Bereiche entlang ausgewählter Zeilen enthält, welche gefüllt werden sollen. Beispielsweise können die Informationen eine untere und obere Begrenzung der betroffenen Abtastzeilen gefolgt von Informationen für jede Abtastzeile enthalten, die die Anzahl der horizontalen Bereiche auf dieser zu füllenden Zeile und den Start- und Endpunkt jedes derartigen horizontalen Bereichs einschließen.
- Ein Fachmann erkennt, daß eine Anzahl weiterer Befehlscodes in der Anzeigeliste nützlich sein kann. Diese Befehlscodes können verschiedene Modi des Zugreifens auf ausge wählte Register, welcher der Konstrukteur zur Implementierung auswählt, Informationen über Aufgaben (Tasks) oder Bilder oder andere zum Anzeigen eines Bereichs erforderliche Informationen enthalten. Einige nützliche Befehlscodes umfassen Befehle zum Auswählen eines Bereichs aus einem gekennzeichneten Speicherplatz oder zum Erzeugen eines Bereichs unter Verwendung spezifizierter Koordinaten. Andere Befehlscodes umfassen Befehle zum: Ausfüllen eines Bereichs mit einem Halbtonraster mit einem spezifizierten Grauwert; Füllen eines Bereichs mit wenigstens einem Halbtonraster mit einer spezifizierten Farbe; Füllen eines Bereichs unter Verwendung schwarzer Pixel; Füllen eines Bereichs unter Verwendung weißer Pixel; Füllen eines Bereichs unter Verwendung undurchsichtiger, abdeckender Pixel; und Füllen eines Bereichs unter Verwendung einer Maske, wobei die Maske an einem gekennzeichneten Platz im Speicher gefunden oder unter Verwendung vorgegebener Informationen erzeugt werden kann. Noch weitere Befehlscodes sind nützlich zum Bearbeiten oder Verwenden von Quellbildern und umfassen Befehle zum: Definieren eines Quellbildes; Skalieren eines Quellbildes; Rotieren eines Quellbildes; Scheren eines Quellbildes; Umdrehen eines Quellbildes; Beschneiden eines Quellbildes; Definieren einer Bildmaske; und Füllen eines Bereichs mit einem Bild.
- Gemäß Fig. 2 ist der MCS 20 eine zentrale Steuereinheit für das gesamte System und koordiniert die Chipfunktionen, weist Aufgaben an die richtigen Verarbeitungseinheiten zu. Bei einem bevorzugten Ausführungsbeispiel ist der MCS 20 für sämtliche Operationen verantwortlich, die intelligente aber seltene Eingriffe erfordern. Der MCS 20 ist um einen programmierbaren, mikrobefehlsgesteuerten Sequenzierer herum organisiert und wird durch eine arithmetisch-logische Mehrzweckeinheit (ALU) unterstützt.
- Bei einem bevorzugten Ausführungsbeispiel steuert der MCS 20, ob das System in einem Slave- oder Master-Modus sein wird. Der GCP 10 schaltet sich in einen Slave-Modus ein. Der MCS 20 erkennt, wenn eine externe Einrichtung (extern gegenüber dem GCP 10), wie beispielsweise die Wirts-CPU, die Aufmerksamkeit des Systems dieser Erfindung sucht, um beispielsweise Register des Systems zu laden oder mit der Wiedergabe eines Bereichs zu beginnen. Die externe Einrichtung kann dann Status-Bits und Steuerregister setzen und irgendeine weitere erforderliche Initialisierung durchführen. Die externe Einrichtung kann eine Startspeicheradresse an den MCS 20 über einen Bus oder auf andere Weise senden. Der MCS 20 kann dann auf diesen Speicherplatz zugreifen und eine Anzahl von Bytes von Informationen in einen Puffer zur weiteren Verarbeitung übertragen. Typische Informationen liegen in Form einer Anzeigeliste, wie sie oben beschrieben ist, vor. Eine typische Anzeigenliste kann ebenso auch Initialisierungsinformationen enthalten.
- Wenn der GCP 10 angewiesen wird, mit der Wiedergabe eines Bereichs zu beginnen, geht der GCP 10 in den Master-Modus und steuert einen oder mehrere externe Busse, wie beispielsweise den Hauptadreßbus und Hauptdatenbus, wie sie zum Zugreifen auf die Anzeigeliste und Speicherinformationen erforderlich sind. Bei alternativen Ausführungsbeispielen kann der GCP 10 einen oder mehrere externe Busse zum Übertragen von Quellbild- oder Ausgabebereichsinformationen verwenden. Der MCS 20 verwaltet darüber hinaus den internen Austausch von Informationen zwischen verschiedenen Registern und Speicherbereichen innerhalb des GCP 10 oder ihm eng zugeordneter Register.
- Der Anzeigelisten-FIFO (DL FIFO) 23 ist mit einem internen Bus des GCP 10 verbunden und wird von dem MCS 20 gesteuert. Der DL FIFO 23 ist ein Speicherpuffer, der vorzugsweise zum Halten von 16 oder mehr Worten konfiguriert ist. Wenn er angewiesen wird, oder wenn dies erforderlich ist, lädt der MCS 20 eine Anzeigeliste in den DL FIFO 23. Dann analysiert der MCS 20 die Anzeigeliste, zergliedert jeden Befehl in einen Befehlscode und ihm zugeordnete Operanden und leitet dann den Befehl oder relevante Informationen an die geeignete Einheit des GCP 10 für eine nachfolgende Verarbeitung weiter. Der MCS 20 kann nachfolgende Anzeigelistenbefehle lesen und kann diese abarbeiten oder sie an die geeignete Einheit des GCP 10 weiterleiten. Es ist möglich und tatsächlich wünschenswert, daß jede Einheit des GCP 10 Informationen parallel verarbeitet, wenn immer dies möglich ist, um einen Bereich schneller wiederzugeben.
- Der MCS 20 stellt Daten zur Verfügung und setzt Register für erforderliche Speicherzugriffe und andere Unterstützungsfunktionen, wie unten beschrieben wird. Wenn beispielsweise der MCS 20 einen FillTrap-Befehl antrifft, so findet er die Gerätepixeladresse für den ersten in dem Trapezoid wiederzugebenden Punkt (Abtastzeile und Position auf der Abtastzeile) und lädt dann die Koordinaten dieser Pixeladresse in Register. Der FillTrap-Anzeigelistenbefehl enthält darüber hinaus den Ort des richtigen anzuzeigenden Endpixels auf einer Abtastzeile, und der MCS 20 berechnet vorzugsweise die Anzahl der dazwischenliegenden Pixel entlang einer gegebenen Abtastzeile und lädt diese Informationen in Register. Darüber hinaus berechnet der MCS 20 den nächsten Satz von Registerparametern, beispielsweise das Start- und Endpixel für die nächste Abtastzeile oder den nächsten Bereich oder das Startpixel und die Anzahl von wiederzugebenden Pixeln, und hält diese in "Phantom"-Registern, bis diese Informationen in andere Einheiten des GCP für eine nachfolgende Verarbeitung bewegt werden können. Die geeignete Einheit des GCP 10 kann den Inhalt dieser Phantom-Register kopieren, wenn die Informationen benötigt werden. Der MCS 20 weis üblicherweise nicht, wann die Phantomregister gelesen werden, so daß er den nächsten Wert für die Phantomregister berechnet und speichert. Wenn eine andere Einheit des GCP 10 (üblicherweise der PIX 28) auf diese Register zugreift, benachrichtigt sie außerdem den MCS 20, so daß die Phantomregister aktualisiert werden können. Unter Verwendung dieser Technik können die meisten Registeraktualisierungen Pipelineverschachtelt werden.
- In einem bevorzugten Ausführungsbeispiel beendet der MCS 20 ein Trapezoid, bevor das nächste Trapezoid in einer Anzeigenliste behandelt wird. Einige Operationen während der Verarbeitung eines Trapezoids können eine Verriegelung innerhalb des GCP 10 erfordern, so daß verschiedene Einheiten des GCP 10 ihre jeweiligen Operationen richtig abschließen können. Die gegenseitige Verriegelung wird von den verschiedenen Zustandsmaschinen in dem GCP 10 gehandhabt, wobei unterschiedliche Verriegelungs- und Entriegelungsanordnungen für verschiedene Zeitgabesituationen verwendet werden. Verschiedene Verfahren des Implementierens einer Verriegelung sind für den Fachmann gut bekannt.
- Der DL FIFO 23 wird von dem MCS 20 aktuell gehalten und ggf. von dem Speicheranforderungsbehandler (MRH) 26 gefüllt. Der MCS 20 verfolgt, was sich in dem DL FIFO 23 befindet, welche Informationen gültig sind und wann der Puffer gespült (flushed) oder unter Verwendung spezieller Hardware neu gefüllt werden sollte. Bei einem bevorzugten Ausführungsbeispiel führen der MCS 20 oder MRH 26 diese Übertragungen unter Verwendung eines externen Busses in einem Burst- oder Seitenmodus aus, was eine effektivere Verwendung des Busses gestattet. Eine Logik in dem MRH 26 steuert, wieviel und welche Informationen aus dem externen Speicher zu holen sind. Die Schritte umfassen grundsätzlich das Identifizieren einer relevanten Speicheradresse, welche ein Pixel oder einen gewünschten ersten Befehl der Anzeigeliste enthält, das Heranholen der Daten, typischerweise durch einen direkten Speicherzugriff über einen externen Bus, und das Laden der Daten in den geeigneten FIFO.
- Immer dann, wenn der normale Ablauf der Wiedergabe eines Grundobjekts durch eine Begrenzungsbedingung unterbrochen wird, greift der MCS 20 grundsätzlich ein, um diese Bedingung zu behandeln, wobei dann die Wiedergabe bei der Hardwaregeschwindigkeit wieder aufgenommen wird. Beispiele dieser Begrenzungsbedingungen umfassen den Start einer neuen Zeile von Quellbildpixelabtastwerten, wobei der MCS 20 Speicheradressen für den Start einer neuen Zeile berechnet und die aktuelle Zeilennummer inkrementiert. Eine andere Begrenzungsbedingung tritt auf, wenn die aktuelle Wiedergabeoperation das Ende der aktuellen Zeile in dem aktuellen Raster (screen) erreicht, wobei der MCS 20 die Anfangsrasterabdeckelement(Tile)-Nummer, die Zeilen-Nummer und die Anfangspixelposition innerhalb des Rasterabdeckelements (screen tile) berechnet. Der MCS 20, der PIX 28 oder eine andere GCP-Einheit behandeln die involvierte Bedingung und fügen die erforderlichen neuen Daten oder Adreßinformationen in die geeigneten Hardware-Register ein. Häufige Begrenzungsbedingungen, wie beispielsweise der Überlauf der Quellbilddaten aus einem 32-Bit-Quellwort in das nächste sequentielle Wort, oder der Überlauf eines 32-Bit-Gerätepufferworts in das nächste sequentielle Wort, werden direkt von den involvierten Zustandsmaschinen behandelt. Folglich ist die Leistungsfähigkeit des MCS 20 kein grundsätzlich signifikanter Faktor bei der Gesamtwiedergabeleistung.
- Die Haupt-GCP-Wiedergabekomponenten sind die Zieleingabe-FIFO (DI FIFO) 24, die Zielausgabe-FIFO (DO FIFO) 25 und der Pixelzusammensetzer (PIX) 28. Diese Einheit des GCP 10 füllt einen ausgewählten Bereich mit einem ausgewählten Füll- oder Quellbild. Die FIFOs sind Speichereinrichtungen, vorzugsweise Hochgeschwindigkeitsspeichereinrichtungen, die mit einem internen Bus des GCP 10 verbunden sind. Der Speicheranforderungsbehandlung (MRH) 26 hält die FIFOs aufrecht, was den Eingabe-FIFO DI FIFO 24 nahezu voll (gleiches gilt für DL FIFO 23) und den Ausgabe-FIFO DO FIFO 25 nahezu leer hält. PIX 28 ist eine Zustandsmaschine und enthält zugeordnete Einrichtungen zum Laden von Daten in Komparatoren und zum Ausgeben von Gerätepixeln.
- DI FIFO 24 wird verwendet, um bereits vorhandene Ausgabe- Band- oder -Einzelbild-Pufferdaten, sofern welche vorhanden sind, für eine Einheit des Bandes oder Einzelbildes zu halten. Grundsätzlich werden Pixel im externen Speicher gespeichert, und es wird auf sie in einer Seitenmodus-DMA- Übertragung zugegriffen, wobei aber auch andere Arten von Speichern oder Übertragungen verwendet werden können. Bei einem bevorzugten Ausführungsbeispiel werden sämtliche Bits in einem Band-Puffer auf einen ausgewählten Anfangszustand gesetzt, statt mit einem zufälligen Zustand zu beginnen. Beispielsweise können sämtliche Bits in dem Puffer auf die Hintergrunddruckfarbe, oftmals weiß, gesetzt werden. Der MCS 20 instruiert den MRH 26, den DL FIFO 24 mit Daten aus dem Speicher für interessierende Pixel für eine anhängige Operation zu füllen. An manchen Stellen ist es ausreichend, nur die Start- und Endpixel eines Abtastzeilenbereichs in den FIFO 24 zu laden. Dies kann beispielsweise dann nützlich sein, wenn ein Bereich mit nur schwarzen oder nur weißen Gerätepixeln gefüllt werden soll und irgendwelche dazwischentretenden bereits vorhandenen Informationen irrelevant sind.
- Der MCS 20 leitet einen Befehlscode oder Anzeigelistenbefehl an den PIX 28 weiter, einschließlich Koordinaten und Informationen über die ausgewählte Fülloperation. Anzeigelistenbefehle oder Füllbefehle können den PIX 28 instruieren, "undurchsichtig zu füllen", d. h., daß ein ausgewählter Ausgabebereich mit undurchsichtigen, beispielsweise weißen oder schwarzen Pixeln oder einem ausgewählten Grau- oder Halbton quellbild, zu füllen ist, wodurch irgendwelche vorherigen Quellbildinformationen abgedeckt werden. Alternativ kann der PIX 28 "mit Maske füllen", d. h., das aktuelle Schwarz-, Weiß- oder Graufüllen gegen eine Maske testen. Wenn die Maske einen leeren Abschnitt enthält, bleiben irgendwelche zuvor existierenden Quellbildinformationen für diesen Abschnitt unverändert, wodurch möglich wird, daß ausgewählte Abschnitte eines zuvor vorhandenen Quellbildes oder Ausgabebereichs durch das aktuelle Füllen hindurch sich zeigen.
- Der PIX 28 füllt eine ausgewählte Abtastzeile in einem Bereich von dem ausgewählten Startpixel bis zu dem ausgewählten Endpixel mit der ausgewählten Maske oder dem ausgewählten Füllen. Man beachte, daß einige Bereiche eine geringe Anzahl von Pixeln enthalten können, die vollständig in eine einzelne Abtasteinheit fallen (ein Computerwort, das mehreren Ausgabebereichspixeln entspricht). In einfachen Fällen des Übermalens mit undurchsichtigem Schwarz oder Weiß kann eine relativ große Anzahl von Pixeln (32 bei einem bevorzugten Ausführungsbeispiel) bei jedem Taktzyklus gefüllt werden.
- Der PIX 28 gibt die relevanten Pixel an DO FIFO 25 aus. PIX 28 und MRH 26 verwalten darüber hinaus die DO FIFO 25 und kopieren den Inhalt der DO FIFO 25 ggf. in den externen Speicher, z. B. einen Band-Puffer. Der DI FIFO 24 und DO FIFO 25 werden üblicherweise am Ende jeder Abtastzeile gespült (flushed).
- PIX 28 enthält einen Schwellenwertkomparator, welcher aufgerufen wird, wenn die Fülloperation grau ist oder ein Bildhalbtonrastermuster. Gemäß Fig. 4 wird ein zu skalierender und mit einem oder mehreren Grauwerten zu füllender Bereich 54 als Serie von Halbtonzellen 53 wiedergegeben, die unter Verwendung von Schwellenwertmatrixdaten aus dem Ra ster-RAM 12 berechnet werden. Der Schwellenwertkomparator in PIX 28 testet jedes Pixel in dem Quellbild (Quellpixel) gegenüber einem geometrisch entsprechenden Wert in der Schwellenwertmatrix und gibt ein Gerätepixel eines ersten binären Wertes aus, sofern der Quellpixelwert den Schwellenwert überschreitet, und anderenfalls ein Gerätepixel des anderen binären Werts, wodurch ein Bereich ausgefüllt wird, beispielsweise der Bereich 55.
- Die Theorie einer Art einer derartigen Rasterung ist in der parallel anhängigen Anmeldung mit der Seriennummer 434, 924 beschrieben, die oben erörtert wurde. Dieses Verfahren ist insbesondere nützlich für Halbton- oder Rasteranwendungen. Kurz gesagt, ist ein "Utah-Abdeckelement" (Utah tile) ein "Superabdeckelement" (supertile), welches selbst typischerweise eine Serie kleinerer Abdeckelemente ist. Ein typisches Utah-Abdeckelement enthält verschiedene Halbtonzellen in einem "A"-Rechteck, z. B. dem Rechteck 51, und in einem "B"-Rechteck, beispielsweise dem Rechteck 52. Der GCP 10 kann ebensogut andere Schwellenwertmatrizen verwenden. Eine Schwellenwertmatrix kann zuvor berechnet und gespeichert werden, grundsätzlich als eine relativ sanft variierende Funktion mit einer Periode, die gleich dem Abstand eines gewünschten Halbtonrasters ist.
- Wenn der MCS 20 einen eine Rasterung erfordernden Befehlscode interpretiert, aktiviert er den Rasterschwellenwertheranholer (STF) 30. Der MCS 20 ermittelt, welches Pixel in einer Schwellenwertmatrix einem Startpixel in dem Quellbild oder dem gefüllten Bereich entspricht. Die Schwellenwertmatrix ist in einem Hochgeschwindigkeitshalbtonrasterungs-RAM, dem Raster-RAM 12, gespeichert. Der STF 30 identifiziert die richtige Startadresse in dem Raster-RAM 12 und initiiert die Übertragung von Daten zum PIX 28. Bei einem bevorzugten Ausführungsbeispiel besteht die Halbtonschwellenwertmatrix aus einer Serie von 8-Bit-Werten, und der Da tenpfad ist 32-Bit breit. So können bei jedem Taktzyklus Schwellenwerte für 4 Ausgabepixel geliefert werden. Der STF 30 bestimmt, ob die Kante einer Schwellenwertmatrixabtastzeile erreicht ist, und ebenso, welche zugehörige Schwellenwertadresse für den nächsten Quellpixelvergleich verwendet werden sollte. Der STF 30 kann dem Komparator signalisieren, daß dieser warten soll, bis gültige Schwellenwertdaten auf dem Bus verfügbar sind. Eine neue Schwellenwertabtastzeile kann in zwei Taktzyklen geliefert werden.
- Der STF 30 ist darüber hinaus für das Ausrichten der Daten verantwortlich, wenn die Kante einer Schwellenwertmatrix nicht auf einer Wortgrenze liegt. PostScript hält eine absolute Rasterphase (relativ zum Ursprung) für sämtliche Objekte auf einer gegebenen Seite aufrecht. Dies gestattet es, daß Objekte saumlos zueinander ausgerichtet werden und, was noch wichtiger ist, gestattet es, daß Abschnitte eines Bereichs separat von anderen Abschnitten des gleichen Bereichs wiedergegeben werden, um eine randlose endgültige Ausgabe zu ergeben. Einige Anzeigemodelle, wie beispielsweise Hewlett Packards PCL und Macintosh® Quickdraw halten keine absolute Rasterphase aufrecht, obwohl andere dies tun. STF 30 richtet die Pixel eines wiederzugebenden Bereiches gemäß der richtigen Rasterphase und dem zugehörigen Startpunkt in der Rasterschwellenwertmatrix aus. PIX 28 erzeugt mehrere Bits (eine Tetrade), die an Tetradengrenzen innerhalb des DO FIFO 25 ausgerichtet sind, z. B. vier Bits in einer Tetrade, ausgerichtet als Zielwort. Jedes Bit der Tetrade wird aus einem Komparator erzeugt, welcher einen 8-Bit-Schwellenwert erfordert. Der STF 30 verwendet einen Byte-Verschieber, um eine Verschiebung jedes Bytes der aus dem Raster-RAM 12 eingegebenen Schwellenwertdaten zu dem richtigen Komparator zu gestatten. PIX 28 kann dann die zuvor ausgerichteten, verschobenen Schwellenwertworte verwenden. STF 30 führt darüber hinaus eine Neuausrichtung durch, wenn das Ende einer Schwellenwertzeile erreicht ist und eine neue Schwellenwertzeile herangeholt wird.
- Unter Verwendung dieses Mechanismus kann eine Fläche mit einem gleichmäßig gerasterten Grauwert gefüllt werden. Ein zuvor eingestellter Grauwert kann in einem Register gespeichert werden und mit jedem Schwellenwertpixelwert verglichen werden, wobei die Rasterzeilen wie zuvor ausgerichtet werden. Wenn der Grauwert geringer als der Schwellenwert ist, wird das Ausgabepixel als schwarz markiert. Wenn der Grauwert gleich Null (dunkel) ist, wird jedes Ausgabepixel schwarz markiert. Wenn der Grauwert gleich FF (hell) ist, wird jedes Ausgabepixel weiß markiert. Ein Fachmann erkennt, wie dunkle gegenüber hellen Farben auf dem jeweiligen Ausgabegerät ausgewählt werden müssen, und kann dieses Verfahren entsprechend benutzen. Bei einem bevorzugten Ausführungsbeispiel kann der GCP 10 so eingestellt werden, daß er entweder "weiß" oder "schwarz" ausgibt, wenn das Ausgabepixel logisch gleich 1 ist. So kann durch einfaches Ändern eines Flags ein gesamter Bereich oder ein Abschnitt eines Bereichs von schwarz zu weiß oder umgekehrt invertiert werden.
- Bei einem bevorzugten Ausführungsbeispiel hat PIX 28 mehrere, beispielsweise vier, Komparatoreinheiten, eine für jedes der Pixel, welche in einem einzigen Taktzyklus verglichen werden können. Quell- und Schwellenwertpixel werden verschoben und geeignet maskiert, was von dem implementierten Befehl abhängig ist. Der sich ergebende Wert wird ebenfalls verschoben, wie es für den Gerätekoordinatenraum erforderlich ist, und in dem DO FIFO 25 wiedergegeben. Der Komparator kann sowohl linke als auch rechte Kanten verfolgen, welcher einer ersten und einer letzten Abtasteinheit eines wiederzugebenden Bereiches entsprechen.
- Eine Zwei-Pegel-Ausgabeeinrichtung weist keine Grauwertfähigkeit auf und kann nur "schwarz" oder "weiß" anzeigen.
- PIX 28 gibt vier Vergleiche pro Zyklus aus, so daß 8 Zyklen erforderlich sind, um eine einzige Abtasteinheit in DO FIFO 25 zu füllen (8 Zyklen · 4 Pixel = ein 32-Bit-Wort). Wenn ein Bereich mit einer vertikalen Überblendung oder mit einem sich graduell ändernden Grau- oder Farbpegel gefüllt wird, kann die Anzeigeliste den Bereich als eine Reihe von dünnen Trapezoiden codieren, jedes mit einem geeigneten Grauwert.
- Masken können zur Wiedergabe bestimmter Bereiche, insbesondere von Zeichen oder Texten, nützlich sein. Ein typisches Zeichen ist definiert oder repräsentiert durch eine Außenlinie. Zum Zeitpunkt der Wiedergabe ist die Zeichenaußenlinie üblicherweise bereits in eine Bitmap der zur Ausgabe erforderlichen geeigneten Auflösung und Größe konvertiert und im Speicher gespeichert. Ein typischer Anzeigelistenbefehl für ein Zeichen gibt einfach die Startspeicherkoordinaten für die Zeichenmaske und die Startkoordinaten im Gerätekoordinatenraum, an denen das Zeichen angeordnet werden soll, an. Bei einem bevorzugten Ausführungsbeispiel erhält der MCS 20 die erforderlichen Informationen aus dem externen Speicher und bringt die Maske in den Quellbild-FIFO (SI FI- FO) 27.
- Manchmal kann eine Maske zur Verwendung bei einer Wiedergabe eines Abschnitts der Ausgabe abgeschnitten sein. Der Abschneidepfad kann linear sein, beispielsweise eine abgeschnittene linke Kante oder kann einem beliebigen Pfad folgen, wie im Falle einer Bildmaske. Dieses Verfahren ist im höchsten Maße nützlich bei einer nicht-abgeschnittenen und nicht-komprimierten Maske. Eine Maske, welche komprimiert worden ist, beispielsweise durch Verwendung einer Lauflängencodierung, sollte vorzugsweise unkomprimiert und in einem Abschnitt des Speichers angeordnet sein, so daß sie in einer nicht-komprimierten Form zugreifbar ist. Beispielsweise werden bei Verwendung typischer Speicherkonfigurationen unge fähr 256 Abtastzeilen in einem Band-Puffer wiedergegeben, bevor sie zu einer Zeichenwiedergabemaschine übertragen werden. Bei einer hochauflösenden Schriftsatzeinrichtung mit einer Auflösung von 2400 dpi entspricht dies nur 0,1 Zoll, welches weniger als die Höhe eines typischen Großbuchstabens ist. So überdeckt eine typische Textzeile mehr als ein Band. Der DCP 10 gestattet ein Abschneiden "auf dem Fluge" für Zeichen, indem beispielsweise nur ein bestimmter vertikaler Bereich einer Zeichenmaske zur Wiedergabe eines speziellen Bandes genommen wird. Alternativ könnte man eine erweiterte Anzeigeliste verwenden, um beispielsweise das untere Drittel einer Zeile des Textes gefolgt von dem mittleren und dem oberen Drittel wiederzugeben.
- Die gesamte Maske wird in den SI FIFO 27 gelesen. Sie wird dann Bit für Bit mit der Gerätepufferausgabe als Funktion des am weitesten links liegenden X-Werts auf der Anfangsabtastzeile abgeglichen. Ein typisches Füllen "füllt unter einer Maske", wobei die geeignete Abtasteinheit aus dem DI FIFO 24 abgeglichen und mit der Eingabemaske verschmolzen werden muß.
- Ein bevorzugtes Ausführungsbeispiel umfaßt einen speziellen Operator, einen RenderImageMask-Befehl, welcher ein Gerätepixel pro Quellpixel wiedergibt. Dieser kann wie eine Maske behandelt oder bearbeitet werden, aber der Pixelsammler kann 32 Bits pro Taktzyklus ansammeln, wenn die aktuelle Füllfarbe schwarz oder weiß ist.
- Die SFU 29 stellt eine Abbildung (mapping) aus einem in einem beliebigen Koordinatenraum (Quellbildraum) vorliegenden Quellbild in einen Gerätekoordinatenraum zur Verfügung. Die Abbildung ist häufig nicht-skalar, und die Geräteauflösung ist üblicherweise größer als die Quellbildauflösung. Die Abbildung kann auch 1 : 1 oder bei einer Geräteauflösung vorgenommen werden, die geringer als die Quellbildauflösung ist, aber das aktuelle Verfahren ist am vorteilhaftesten, wenn die Geräteauflösung größer als die Quellbildauflösung ist. Ein übliches Beispiel ist eine Geräteausgabe von 2.400 dpi für eine Quelleingabe von 300 dpi. Bei einem bevorzugten Ausführungsbeispiel trifft der GCP 10 spezielle Vorkehrungen für drei Spezialfälle: einen Skalar von 1 und 0º Rotation, in welchem Fall das Quellbild einfach als Maske behandelt wird; eine 0º-Rotation, d. h. keine Rotation, aber eine Wiedergabe bei einer beliebigen Skalierung, und eine beliebige Rotation (z. B. 15º) bei einer beliebigen Skalierung.
- Für den Spezialfall der 0º-Rotation und der beliebigen Skalierung kann der GCP 10 den SI FIFO 27 gefüllt halten, da die eingehenden Daten per Definition aufeinanderfolgend sind und der Ausgabenbereich Abschnitt für Abschnitt vorbereitet werden kann. Der MCS 20 braucht nicht zu verfolgen, welche Ausgabepixel wiedergegeben werden. Es ist ausreichend, den PIX 28 darüber zu instruieren, wo ein Quellpixel in dem SI FIFO 27 zu finden ist. Ein Register kann als Quelladreßzeiger reserviert sein, welches bei Wiedergabe jedes Quellpixels inkrementiert werden kann. Ein typisches Quellbild kann 8 Bits pro Pixel pro Kanal (256 Graustufen pro Farbkomponente bei Farbklassierungen).
- Es wird auf Fig. 5 Bezug genommen, in der U und V Einheitsvektoren im Quellbildraum und X und Y Einheitsvektoren im Gerätekoordinatenraum sind. Für die Einheitsvektoren U und V, die um irgendeinen Winkel gegenüber den Einheitsvektoren X und Y rotiert sind, können die Abstände dx_du und dx_dv (delta x über delta u bzw. delta v) einfach bestimmt werden.
- Herkömmliche PostScript-Einrichtungen beginnen mit einem ausgewählten Geräte- oder Ausgabepixel und suchen das oder die zugehörigen Quellpixel. Die Wiedergabe einer großen Anzahl von Gerätepixeln pro Quellpixel erfordert die Berech nung geringer Differenzen in Quellpixelkoordinaten, was häufig zu mathematischen Ungenauigkeiten und einem sich akkumulierenden Fehler führt. Bei bekannten Implementierungen erhöhte die Erhöhung der Ausgabeeinrichtungsauflösung die Fehlermöglichkeit.
- Der GCP 10 (Fig. 2) dagegen beginnt mit einem Quellpixel und berechnet einen Inkrementvektor, um zugehörige Gerätepixel wiederzugeben. Das Ergebnis ist unabhängig von der Skalierung. Der Inkrementvektor kann ziemlich genau sein und kann sogar unter Verwendung von Zahlen doppelter Genauigkeit implementiert sein. Die Verwendung des Systems und Verfahrens gemäß dieser Erfindung erhöht die Ausgabebildauflösung und gestattet eine genauere Wiedergabe eines Quellbildes.
- Ein durch PostScript definiertes Bild hat eine willkürliche Skalierung und Rotation in Bezug auf den Gerätekoordinatenraum der Wiedergabehardware. Diese Skalierung und Rotation wird durch eine Matrixtransformation unter Verwendung einer Matrixmultiplikation erreicht. Ein gegebener Punkt im Gerätekoordinatenraum (x, y) kann in einem Punkt im Quellbildraum (u, v) durch die folgende Matrixmultiplikation übersetzt werden:
- Diese Matrixmultiplikation ergibt die folgenden Gleichungen:
- u = ax + cy + tx
- v = bx + dy + ty
- Die Matrix [a b c d tx ty], welche die Werte für den Gerätekoordinatenraum definiert, ist intern innerhalb des GCP 10 verfügbar. Diese Werte sind Gleitkommazahlen, die in eine 32-Bit-Festkommadarstellung zur Verwendung durch das Bildwiedergabeverfahren konvertiert werden. Ein 32-Bit-Festkommawert verwendet 16 Bits zum Darstellen des ganzzahligen Anteils und 16 Bits zum Darstellen des Bruchteils.
- Die Beschreibung des wiederzugebenden Bildes (einschließlich der obigen Transformationsmatrix) zusammen mit einem graphischen Objekt (oder Objekten) im Gerätekoordinatenraum wird an den Bildwiedergabeabschnitt weitergeleitet. Dieses graphische Objekt definiert eine Serie von wiederzugebenden Zeilensegmenten, die in der Abtastzeilenrichtung orientiert sind. Ein Zeilensegment kann als Linie zwischen zwei Punkten (xl, y) und (xg, y) beschrieben werden, wobei xl der minimale (geringere) x-Wert entlang einer ausgewählten Abtastzeile und xg der maximale (größere) x-Wert auf dieser Abtastzeile ist. Die zwei Punkte haben den gleichen y-Wert. Ein graphisches Objekt weist üblicherweise mehrere Zeilensegmente auf, und jedes Zeilensegment kann unterschiedliche y-, xl- und xg-Werte aufweisen.
- Ein Bildwiedergabeverfahren wird für jedes graphische Objekt wie folgt durchgeführt:
- 1. Transformiere Anfangspunkt (xl, y) in (u, v).
- Sichere (xl, y) als (oldX, oldY).
- 2. Sichere Ganzzahlabschnitt (IntPart()) von (u, v) in (oldU, oldV).
- Verwende (oldU, oldV), um Anfangszeiger auf Bilddaten zu berechnen.
- 3. Für jedes neue Zeilensegment (xl, y) (deltaX, deltaY) = (xl - oldX, y - oldY) (u, v) = (oldtj + a*deltaX + c*deltaY, oldV + b*deltaX + d*delta Y)
- wenn IntPart(u)! = oldU, stelle Bildzeiger ein oldU = IntPart (u)
- wenn IntPart(v)! = oldV, stelle Bildzeiger ein oldV = IntPart (v) (oldX, oldY) = (x, y)
- 4. Für den Rest der Pixel im Zeilensegment (xl, y) → (xg, y) (deltaX, deltaY) = (1, 0) per Definition (u, v) = (oldU + a, oldV + b)
- wenn IntPart(u)! = oldU, stelle Bildzeiger ein oldV = IntPart(u)
- wenn IntPart(v)! = oldV, stelle Bildzeiger ein oldV = IntPart(v)
- (oldX, oldY) = (x, y)
- Dieses bekannte Verfahren kann für eine beliebige Transformationsmatrix verwendet werden. Jedoch werden für den häufigsten Fall, bei dem es keine Rotation gibt, die Werte b und c gleich 0 und das obige Verfahren wird weiter optimiert.
- Das bekannte Verfahren erfordert die Neuberechnung von (u, v) für jedes Gerätepixel. Der GCP 10 ist in der Lage, mehrere Pixel auf einem Halbtonschwellenwertraster wiederzugeben, so daß ein neues Verfahren entwickelt wurde, um die Berechnung der (u, v)-Koordinaten für jedes Gerätepixel zu vermeiden. Für jedes Quellbildpixel bestimmt dieses neue Verfahren, wie viele Gerätepixel unter Verwendung der gleichen Quellbildkoordinaten wiedergegeben werden können. Es bestimmt außerdem, welches das nächste (u, v)-Quellbildpixel ist. Wenn infolge des Bildmaßstabs ein Quellbildpixel auf mehrere Gerätepixel abgebildet wird, erzeugt mit diesem neuen Verfahren jede Iteration Daten, die zur Wiedergabe mehrere Gerätepixel verwendet werden. Dies gestattet es dem GCP 10, mehrere Gerätepixel pro Geräteiteration wiederzugeben.
- Das Verfahren gemäß dieser Erfindung berechnet verschiedene Variablen für jedes Bild, welche für jedes einzigartige Bild konstant sind. Es wird auf Fig. 5 Bezug genommen:
- dx_du = 1/a Anzahl der Gerätepixel in der Abtastzeilenrichtung (x) zwischen horizontalen (u) Bildpixeln
- dx_dv = 1/b Anzahl der Gerätepixel in der Abtastzeilenrichtung (x) zwischen vertikalen (v) Bildpixeln
- dy_du = 1/c Anzahl der Gerätepixel in der vertikalen Richtung (y) zwischen horizontalen (u) Bildpixeln
- dy_dv = 1/d Anzahl der Gerätepixel in der vertikalen Richtung (y) zwischen vertikalen (v) Bildpixeln
- dxy_du = dx_du/dy_du = c/a Verschiebung in der Abtastzeilendistanz zum nächsten horizontalen Bildpixel (u), wenn sich ein Gerätepixel in der vertikalen Richtung (y) bewegt wird
- dxy_dv = dx_dv/dy_dv = d/b Verschiebung in der Abtastzeilendistanz zum nächsten vertikalen Bildpixel (v), wenn sich ein Gerätepixel in der vertikalen Richtung (y) bewegt wird.
- Man beachte, daß dann, wenn a, b, c oder d gleich 0 sind (was bei orthogonalen Bildern der Fall ist), bestimmte Variablen unendlich werden und nicht berechnet werden können. Ein unten detailliert angegebenes modifiziertes Verfahren wird für diese Fälle und für sämtliche rotierten Fälle verwendet.
- Der GCP 10 erfolgt in diesem Verfahren für jedes graphische Objekt und für sämtliche rotierten Bilder.
- 0. Berechne dx_du = Fix (1.0/a);
- dx_dv = Fix (1.0/b);
- dxy_du = Fix (c/a);
- dxy_dv = Fix (d/b);
- Dies wird nur einmal pro Bild ausgeführt.
- 1. Transformiere den Anfangspunkt (xl, y) (70 in Fig. 5) zu (u, v) in Gleitkomma.
- Konvertiere (u, v) in Festkomma.
- Verwende IntPart(u), IntPart(v) zum Berechnen des Anfangszeigers in die Bilddaten.
- Berechne ru, rv wie folgt:
- ru = -dx_du * FracPart(u)
- wenn (ru < 0)
- (nur wenn dx_du > 0 und FracPart(u) ! = 0) ru + = dx_du;
- ru ist die verbleibende Absatzzeilendistanz in Gerätepixeln zum nächsten horizontalen (u) Bildpixel
- rv = -dx_dv * FracPart(v)
- wenn (rv < 0)
- (nur wenn dx_dv > 0 und FracPart(v)! = 0) rv + = dx_dv;
- rv ist die verbleibende Absatzzeilendistanz in Gerätepixeln zum nächsten vertikalen (v) Bildpixel
- (oldX, oldY) = (x, y)
- (oldRu, oldRv) = (ru, rv)
- oldPointer = Zeiger
- gehe zu Schritt 3
- 2. Für jedes neue Zeilensegment (xl, y) → (xg, y)
- (deltaX, deltaY) = (xl - oldX, y - oldY)
- (ru, rv) = (oldRu, oldRv) - (deltaX + dxy_du * deltaY, deltaX + dxy_dv * deltaY)
- Zeiger = oldPointer
- während (ru < 0)
- ru = ru + dx_du
- Zeiger = Zeiger + (Vorzeichen(dx_du) * Größe(Bildpixel)
- während (ru > = dx_du )
- ru = ru - dx_du
- Zeiger = Zeiger - (Vorzeichen(dx_du) * Größe(Bildpixel)
- während (rv < 0)
- rv = rv + dx_dv
- Zeiger = Zeiger + (Vorzeichen(dx_dv) + Breite des Bildes)
- während (rv > = dx_du )
- rv = rv - dx_dv
- Zeiger = Zeiger - (Vorzeichen(dx_dv) * Breite des Bildes)
- (oldX, oldY) = (x, y)
- (oldRu, oldRv) = (ru, rv)
- oldPointer = Zeiger
- 3. Für jedes Zeilensegment (xl, y) → (xg, y) (z. B., wenn die Distanz 5.xx Pixel ist, wird ru und rv um 1 inkrementiert, um die Erzeugung von 6 Pixeln zu ermöglichen)
- (ru, rv) = (ru, rv) + (Fix(1), Fix(1))
- len = xg - xl
- während (len > 0)
- imglen = min(IntPart(ru), IntPart(rv)) wenn (imglen ! = 0), gib Bild wieder am Zeiger für len imglen len = len - imglen (ru, rv) = (ru, rv) - (Fix(imglen), Fix(imglen)
- wenn (ru < Fix (1)), wir haben ein horizontales (u) Bildpixel überquert
- ru = ru + dx_du
- Zeiger = Zeiger + (Vorzeichen(dx_du) * Größe (Bildpixel))
- wenn (rv < Fix (1)), wir haben ein vertikales (v) Bildpixel überquert
- rv = rv + dx_dv
- Zeiger = Zeiger + (Vorzeichen(dx_dv) * (Breite des Bildes)
- Wenn ein orthogonales Bild (0, 90, 180 oder 270 Grad Rotation) behandelt wird, werden die Variablen a oder b zu 0. Wenn beide 0 sind, hat das wiederzugebende Bild keine Breite in der Abtastzeilenrichtung. Wenn b und d gleich 0 sind, hat das wiederzugebende Bild keine Höhe. Beide dieser Fälle sind nicht erlaubt und sollten nicht wiedergegeben werden.
- Das folgende Verfahren wurde modifiziert für den Fall, wenn b gleich 0 ist (der um 0 oder 180 Grad rotierte Fall). Ein ähnliches Verfahren kann verwendet werden, wenn a gleich 0 ist (der 90- oder 270-Grad-Fall).
- 0. Berechne
- dx_du = Fix (1.0/a);
- dy_dv Fix (1.0/d);
- dxy_du = Fix (c/a);
- Dies wird nur einmal pro Bild ausgeführt.
- 1. Transformiere Anfangspunkt (xl, y) in (u, v).
- Verwende IntPart(u), IntPart(v), um Anfangszeiger auf Bilddaten zu berechnen.
- Berechne ru, rv wie folgt:
- ru = -dx_du * FracPart(u)
- wenn (ru < 0)
- (nur wenn dx_du > 0 und FracPart(u)! = 0)
- ru + = dx_du;
- ru ist der verbleibende Abtastzeilenabstand in Gerätepixeln zu dem nächsten horizontalen (u) Bildpixel.
- rv = -dy_dv * FracPart(v)
- wenn (rv < 0)
- (nur wenn dy_dv > 0 und FracPart(v)! = 0)
- rv + = dy_dv;
- rv ist die verbleibende vertikale (90 Grad gegenüber Abtastzeile) Distanz in Gerätepixeln bis zum nächsten vertikalen (v) Bildpixel.
- (oldX, oldY) = (x, y)
- (oldRu, oldRv) = (ru, rv)
- oldPointer = Zeiger
- gehe zu Schritt 3
- 2. Für jedes neue Zeilensegment (xl, y) → (xg, y) (deltaX, deltaY) = (xl - oldX, y - oldY) (ru, rv) = (oldRu, oldRv) - (deltaX + dxy_du * deltaY, deltaY)
- Zeiger = oldPointer
- während (ru < 0)
- ru = ru + dx_du
- Zeiger = Zeiger + (Vorzeichen(dx_du) * Größe(Bildpixel))
- während (ru > = dx_du
- ru = ru - dx_du
- Zeiger = Zeiger - (Vorzeichen(dx_du) * Größe(Bildpixel))
- während (rv < 0)
- rv = rv + dy_dv
- Zeiger = Zeiger + (Vorzeichen(dy_dv) * Breite des Bildes)
- während (rv > = dy_dv )
- rv = rv - dy_dv
- Zeiger = Zeiger - (Vorzeichen(dy_dv) * Breite des Bildes)
- (oldX, oldY) = (x, y)
- (oldRu, oldRv) = (ru, rv)
- oldPointer = Zeiger
- 3. Für jedes Zeilensegment (x, y) → (xg, y) (z. B., wenn die Distanz 5.xx Pixel ist, wird ru um 1 inkrementiert, um die Erzeugung von 6 Pixeln zu ermöglichen)
- ru = ru + Fix (1)
- len = xg - x
- während (len > 0)
- imglen = IntPart(ru)
- wenn (imglen! = 0), gib Bild am Zeiger für len imglen wieder
- len = len - imglen
- ru = FracPart(ru) + dx_du
- Zeiger = Zeiger + (Vorzeichen(dx_du) * Größe(Bildpixel)
- Der primäre Unterschied zwischen diesem und dem vorgenannten Verfahren besteht darin, daß rv jetzt den vertikalen Abstand zum nächsten Bildpixel darstellt und nicht verwendet wird, um Zeilensegmente wiederzugeben. Es wird verwendet, wenn Abtastzeilen geändert werden, um zu bestimmen, ob ein neues Quellbildpixel in der vertikalen Richtung wiedergegeben wird.
- In bestimmten Spezialfällen kann die Wiedergabe noch schneller sein. Für den Fall der 0º-Rotation, bei dem dx_du größer als vier (4) ist (mehr als vier Gerätepixel pro Quellpixel), kann eine Pipeline sowohl die aktuellen als auch die nächsten Bildwerte enthalten. Wo das aktuelle Gerätepixel kleiner als vier (4) Gerätepixel (1 Tetrade) von dem nächsten Quellpixelwert entfernt ist, kann der Komperator annehmen, daß der Rest der Tetrade zum nächsten Bildwert gehört. Dies gestattet es dem Sammler, vier Gerätepixel pro Taktzyklus auszugeben.
- Ein anderer Vorteil des Verfahrens gemäß dieser Erfindung besteht darin, daß die aus der Verwendung von Festkommazahlen herrührenden Fehler geringer sind als die Fehler, die bei Verwendung des alten Verfahrens entstanden. Insbesondere erhöhten sich die bei Verwendung des alten Verfahrens erzeugten Fehler vierfach (4) immer dann, wenn die Auflösung des Geräts verdoppelt wurde. Die Fehler aus dem Verfahren gemäß der Erfindung nehmen um das Zweifache ab, wenn die Auflösung verdoppelt wird. Das bekannte Verfahren konvertiert die Transformationsmatrix in Festkomma und addiert die Festkommawerte für jedes Gerätepixel, wobei ein sich ergebender Fehler im wesentlichen auf dem Rundungsfehler multipliziert mit der Anzahl der Gerätepixel begrenzt ist. Das Verfahren gemäß dieser Erfindung verwendet die Inverse der Transformationsmatrix, die in Festkomma konvertiert ist, und addiert diese Werte für jedes Bildpixel, wobei sich ein Fehler von im wesentlichen dem Rundungsfehler multipliziert mit der Anzahl von Quellbildpixeln ergibt.
- Bei einem 300dpi-Bild, das auf ein 300dpi-Gerät übertragen wird, ist die Transformationsmatrix skalar (d. h. [1.0 0 0, 1.0 0 0]). Sowohl das bekannte Verfahren als auch das Verfahren gemäß dieser Erfindung weisen 16 Bit Genauigkeit bei der Darstellung von ganzen Zahlen (1.0 und der Invertierten von 1.0) auf und die Rundungsfehler sind die gleichen. Darüber hinaus sind die Anzahl der Gerätepixel und der Bildpixel gleich. Folglich sind die akkumulierten Fehler etwa gleich.
- Wenn das gleiche 300dpi-Bild auf ein 1200dpi-Gerät übertragen wird, wird die Transformationsmatrix zu [0.25 0 0, 0.25 0 0]. Das bekannte Verfahren verwendet eine Festkommazahl mit 14 Bits Genauigkeit (0.25), während das Verfahren dieser Erfindung eine Festkommazahl mit 18 Bit Genauigkeit (1/0.25 = 4.0) verwendet. Dies ergibt die 16fache Genauigkeit bei den Rundungsfehlern, wenn man das Verfahren dieser Erfindung verwendet. Darüber hinaus wird die Anzahl der Gerätepixel um vier (4) für die gleiche Anzahl von Quellbildpixel erhöht. Folglich ist der gesamte akkumulierte Fehler 64mal größer, wenn man das bekannte Verfahren verwendet.
- Eine ähnliche Berechnung kann ausgeführt werden, wenn man in der anderen Richtung skaliert (d. h. 300dpi-Bild → 75dpi-Gerät), wobei das Verfahren dieser Erfindung 24mal weniger genau als das bekannte Verfahren ist. Jedoch ist dies nicht so wichtig, da das Verfahren Gerätepixel in die rich tigen Bildpixel abbildet, wenn Bildpixel aufgrund der maßstäblichen Verkleinerung übersprungen werden.
- Der GCP 10 kann darüber hinaus eine beliebige Übertragungsfunktion implementieren. Bei einer typischen Anwendung wird ein ausgewählter Grauwert so ausgewählt, daß er eine Auflösung ähnlich der in dem Quellbild verfügbaren aufweist. Beispielsweise wird eine 8Bit-Quelle unter Verwendung eines 8Bit-Grauwerts wiedergegeben. Es ist manchmal erforderlich, Grauwerte einzustellen, beispielsweise dann, wenn verschiedene Zeichenwiedergabemaschinen verwendet werden. Es kann eine Nachschlagetabelle unter Verwendung eines speziellen RAM (z. B. 256 · 8) vorbereitet werden, die in dem SI 298, der in Fig. 2 gezeigt ist, enthalten ist. Das Ausgabebild wird im PIX 28 unter Verwendung des Quellbildwerts oder des Graupegels aus der Nachschlagetabelle kombiniert. Eine Nachschlagetabelle kann aus einem externen Speicher in Übereinstimmung mit einem Anzeigelistenbefehl heruntergeladen werden.
- Die Rasterung ergibt ein Bild, das in höchstem Maße für eine Reproduktion geeignet ist. Es gibt verschiedene Arten von Abrasterung, von der nur eine das Halbtonrastern ist. Das letztgenannte Verfahren wird in dem System und Verfahren dieser Erfindung implementiert.
- Bei hohen Rasterfrequenzen kann eine Halbtonzelle weniger als 256 Pixel enthalten, wobei dann das Raster eine 256- Graustufen-Skala nicht genau repräsentieren kann. Wenn die Halbtonzelle 10 · 10 Pixel groß ist, kann diese Zelle nur 101 Graustufen zeigen. Dies ist eine spezielle Einschränkung bei einer Mischung (grau oder Farbe), weil Diskontinuitäten zwischen diskreten, indexierten Graupegeln als unterschiedliche "Bänder" erscheinen. Das Auftreten dieser Bandbildung ist ziemlich üblich bei sowohl Grau- als auch Farbrasterung, insbesondere in einem Bereich sich langsam ändernder Grau- oder Farbwerte, wie bei einer allmählichen Überblendung oder Abschnitten eines Himmels oder einer Wand.
- Bei Verwendung bekannter Verfahren und Einführung eines Fehlerterms in den Graupegeln für jede Halbtonzelle werden benachbarte Zellen ein wenig dunkler oder heller als angrenzende Zellen, die nomminell den gleichen Grauwert aufweisen. Dies gestattet mehr Graustufen, führt aber zu einem "verrauschteren" Erscheinungsbild. Wenn der Fehlerterm zuvor berechnet wird, kann ein festes Muster des Rauschens in dem endgültigen Bild feststellbar sein.
- Das System und Verfahren gemäß dieser Erfindung kann ein zufälligeres Rauschmuster erzeugen, indem unterschiedliche Beträge des Rauschens eingeführt werden, wenn jedes Quellpixel mit jedem Schwellenwertpegel verglichen wird, wobei bis zu zwei Bits des Rauschens (die am geringsten bewertesten Bits) in zufälligen Pixeln bei der Auflösung des Ausgabegeräts erzeugt werden. Vier separate, nicht korrelierte, pseudozufällige Rauschgeneratoren werden für jeden der Rasterkomparatoren verwendet. Jeder Rauschgenerator erzeugt einen neuen Rauschabtastwert bei jedem Taktzyklus, welcher von 0 bis 2 Bits hinsichtlich der Amplitude skaliert werden kann. Der pseudozufällige Rauschgenerator kann selektiv ein- oder ausgeschaltet werden. Dies kann für ein Füllen mit einem fest vorgegebenen Grauwert und für Bildfüllungen ebenso wie für Überblendungen verwendet werden.
- Bandbildungsprobleme werden tatsächlich noch schwerwiegender, wenn die Auflösung des Druckers besser wird. Rasterfrequenzen von 133 oder 150 Linien pro Zoll (lpi) sind herkömmlich, aber eine moderne Presse hoher Qualität kann 175- 250 lpi drucken und Drucker und Pressenbediener bevorzugen die Verwendung der vollständigen zur Verfügung stehenden Auflösung. Bildsetzeinrichtungen werden ebenfalls besser. Jedoch kann ein Bildsetzer, der in der Lage ist, 2540 dpi zu drucken, ein 200 lpi-Raster als 12 · 12-Halbtonzelle drucken, welche nur 145 Grauwerte anzeigen kann. Unter diesen Bedingungen zeigen Oberblendungen unter Verwendung bekannter Techniken schwere Bandbildungen. Das System und Verfahren dieser Erfindung vermindert diese Bandbildung beträchtlich.
- Es wurde eine allgemeine Beschreibung des Systems und Verfahrens der Verwendung der vorliegenden Erfindung ebenso wie ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung oben angegeben. Ein Fachmann erkennt und ist in der Lage, zusätzliche Variationen in den beschriebenen Verfahren und Variationen der beschriebenen Einrichtungen auszuführen, welche innerhalb der Lehren der Erfindung liegen.
Claims (36)
1. Ein in Synchronisation mit einem Takt betriebenes
System zum Erzeugen eines gerasterten graphischen Bildes
mit einem Bereich, der eine Mehrzahl von Gerätepixeln
aufweist, wobei der Bereich durch ein oder mehrere
digitale Eingabekommandos, die ein Kommando zum Füllen des
Bereichs mit einem Halbtonrastermuster umfassen,
beschrieben wird, wobei das System gekennzeichnet ist
durch:
einen Eingabeabschnitt (23) zum Empfangen
digitaler Eingabekommandos, die ein Füllkommando umfassen,
welches den Bereich beschreibt und einen Modus zum
Füllen des Bereichs spezifiziert;
einen mit dem Eingabeabschnitt gekoppelten
Kommando-Interpreter (20) zum Interpretieren der digitalen
Eingabekommandos und zum Übersetzen der den Bereich
beschreibenden digitalen Eingabekommandos in interne
Kommandos zur Verwendung innerhalb des Systems;
einen mit dem Eingabeabschnitt und dem Kommando-
Interpreter gekoppelten Rasterabschnitt (30) zum
Empfangen der internen Kommandos und zum Rastern einer
Mehrzahl von Gerätepixeln, die aus den in dem Bereich
enthaltenden Pixeln ausgewählt sind, mit einer
Halbtonschwellenwertmatrix während eines Taktzyklus;
einen mit dem Rasterabschnitt gekoppelten
Schwellenwertspeicher (12) zum Speichern von
Halbtonschwellenwertmatrixwerten; und
einen mit dem Kommando-Interpreter und dem
Rasterabschnitt gekoppelten Wiedergabeabschnitt (24, 25, 28)
zum Empfangen der internen Kommandos und zum Wiedergeben
und Ausgeben von Gerätepixeldaten für die Mehrzahl von
in dem Bereich enthaltenen Gerätepixeln, wobei die
Gerätepixeldaten in einer zur Anzeige auf einem Rastergerät
geeigneten Form vorliegen.
2. Das System nach Anspruch 1, ferner aufweisend eine
Einrichtung in dem Rasterabschnitt zum Zugreifen auf
eine ausgewählte Mehrzahl der
Halbtonschwellenwertmatrixwerte aus dem Schwellenwertspeicher während eines
Taktzyklus.
3. Das System nach Anspruch 1, ferner aufweisend eine
Einrichtung (28) in dem Wiedergabeabschnitt zum
Wiedergeben einer ausgewählten Mehrzahl von Gerätepixeln
während eines Taktzyklus.
4. Das System nach Anspruch 1, ferner aufweisend eine
Einrichtung (29) zum Bestimmen der absoluten Rasterphase
innerhalb des Bereichs des gerasterten graphischen
Bildes und eine Einrichtung zum Ausrichten und Wiedergeben
des Halbtonrastermusters in der so bestimmten absoluten
Rasterphase.
5. Das System nach Anspruch 1, wobei es auf einem
einzelnen Halbleiterchip implementiert ist.
6. Das System nach Anspruch 1, ferner aufweisend
einen ersten Eingabepuffer (23), der mit dem
Kommando-Interpreter (20) zum Speichern eines der digitalen
Eingabekommandos gekoppelt ist.
7. Das System nach Anspruch 1, ferner aufweisend:
eine Speichereinrichtung (13) zum Speicher von
Gerätepixeldaten;
eine Einrichtung zum Zugreifen auf bereits
vorhandene Gerätepixeldaten aus der Speichereinrichtung (13),
wobei die bereits vorhandenen Gerätepixeldaten zuvor
gesetzt oder zuvor wiedergegeben worden sind; und
einen mit dem Wiedergabeabschnitt (28) gekoppelten
zweiten Eingabepuffer (24) zum Speichern der bereits
vorhandenen Gerätepixeldaten.
8. Das System nach Anspruch 1, ferner aufweisend
einen Ausgabepuffer (25), der mit dem Wiedergabeabschnitt
(28) zum Speichern der Gerätepixeldaten gekoppelt ist.
9. Das System nach Anspruch 1, ferner aufweisend
einen mit dem Kommando-Interpreter gekoppelten
Hauptsteuersequenzierer (20) zum syntaktischen Analysieren
(Parsing) der digitalen Eingabekommandos und zum
Identifizieren und Zuweisen von Aufgaben zu verschiedenen
Abschnitten des Systems.
10. Das System nach Anspruch 1, ferner aufweisend eine
Einrichtung zum Verwenden eines Quellbildes, das aus
einer Mehrzahl von Quellbildpixeln besteht, wobei jedes
der Quellbildpixel auf entsprechende Gerätepixel
abgebildet und wiedergegeben werden soll, um ein Gerätebild
anzuzeigen, das dem Quellbild entspricht, wobei das
System ferner eine Einrichtung umfaßt, die für eines der
Quellbildpixel Gerätepixeldaten für die zugehörigen
Gerätepixel berechnet.
11. Das System nach Anspruch 10, ferner aufweisend ein
Quellbild, welches durch Skalierung und Rotation
modifiziert worden ist.
12. Das System nach Anspruch 10, ferner aufweisend
einen dritten Eingabepuffer, der mit dem
Wiedergabeabschnitt zum Speichern eines Quellbilds oder einer Maske
gekoppelt ist.
13. Das System nach Anspruch 1, ferner aufweisend eine
Einrichtung zum Addieren von im wesentlichen zufälligen
Rauschwerten zu den Gerätepixeldaten.
14. Ein Verfähren zum Erzeugen eines gerasterten
graphischen Bildes mit einem Bereich, der eine Mehrzahl von
Gerätepixeln enthält, wobei der Bereich durch zwei oder
mehrere digitale Eingabekommandos beschrieben wird,
wobei die digitalen Eingabekommandos ein Kommando
umfassen, das zum Füllen des Bereichs mit einem
Halbtonrastermuster verwendet wird, wobei das gerasterte
graphische Bild in einer zur Anzeige auf einer
Rasteranzeigeeinrichtung oder einer Rasterzeichenwiedergabemaschine
geeigneten Form vorliegt, wobei das Verfahren
gekennzeichnet ist durch die Schritte:
Empfangen eines ersten der zwei oder mehreren
digitalen Eingabekommandos, welches den Bereich
beschreibt;
Empfangen eines zweiten der zwei oder mehreren
digitalen Eingabekommandos, welches einen Modus zum Füllen
des Bereichs mit Gerätepixeldaten spezifiziert;
Übersetzen des ersten und zweiten digitalen
Eingabekommandos in entsprechende erste und zweite interne
Kommandos, die parallel ausgeführt werden sollen;
wobei für jedes der Mehrzahl von Gerätepixeln im
wesentlichen gleichzeitig folgende Schritte ausgeführt
werden,
sofern der Bereich mit einem ausgewählten Grauwert
gefüllt werden soll:
Korrelieren jedes Gerätepixels mit einem
zugehörigen Schwellenwert in einer
Referenzmatrix von Schwellenwerten, wobei die
Referenzmatrix von Schwellenwerten einer Matrix von Pixeln
in einem Halbtonrastermuster entspricht;
Vergleichen des ausgewählten Grauwerts mit
den zugehörigen Schwellenwerten; und
Wiedergeben jedes Gerätepixels durch
Setzen von Gerätepixeldaten für jedes der
Gerätepixel gemäß seinem zugehörigen Schwellenwert, dem
ausgewählten Grauwert und dem zweiten digitalen
Eingabekommando;
oder, sofern der Bereich mit einer Füllfarbe
(solid color) ausgefüllt werden soll:
Wiedergeben jedes Gerätepixels durch
Setzen von Gerätepixeldaten für jedes Gerätepixel
gemäß der Füllfarbe und dem zweiten digitalen
Eingabekommando; und
Ausgeben der Gerätepixeldaten in einer für eine
Wiedergabe auf einer Rasteranzeigeeinrichtung oder einer
Rasterzeichenwiedergabemaschine geeigneten Form, wobei
der Bereich mit Gerätepixeldaten gefüllt wird, um ein
Halbtonrastermuster oder eine Füllfarbe zu bilden.
15. Das Verfahren nach Anspruch 14, wobei das erste
und das zweite digitale Eingabekommando ein einziges
Kommando sind.
16. Das Verfahren nach Anspruch 14, ferner umfassend
den Schritt des Ausrichtens der Halbtonrastermuster für
den Bereich in absoluter Rasterphase.
17. Das Verfahren nach Anspruch 14, ferner umfassend
das Füllen des Bereichs mit einem ausgewählten Grauwert
durch Setzen der Gerätepixeldaten für jedes Gerätepixel
auf einen ersten binären Zustand, sofern der ausgewählte
Grauwert größer als der zugehörige Schwellenwert ist,
und auf einen entgegengesetzten binären Zustand, sofern
der ausgewählte Grauwert kleiner als der zugehörige
Schwellenwert ist.
18. Das Verfahren nach Anspruch 14, wobei zumindest
einige Gerätepixeldaten gesetzt worden sind, wobei das
Verfahren ferner den Schritt des Zugreifens auf bereits
existierende Gerätepixeldaten und des Modifizierens der
bereits existierenden Gerätepixeldaten gemäß einem durch
das zweite digitale Eingabekommando spezifizierten Modus
umfaßt.
19. Das Verfahren nach Anspruch 18, wobei die bereits
existierenden Gerätepixeldaten für eine Mehrzahl von
Gerätepixeln innerhalb eines einzelnen Speicherworts
gespeichert werden und der Bereich eine oder mehrere
Abtastlinien oder -zeilen enthält;
und wobei für jede in dem Bereich enthaltene
Abtastlinie oder -zeile der Bereich eine linke Begrenzung
an dem innerhalb des Bereichs und auf der Abtastlinie
oder -zeile am weitesten links angeordneten Pixel und
eine rechte Begrenzung an dem innerhalb des Bereichs und
auf der Abtastlinie oder -zeile am weitesten rechts
angeordneten Pixel hat;
wobei das am weitesten links angeordnete Pixel
zugehörige erste bereits existierende Gerätepixeldaten
aufweist, die in einem ersten Speicherwort gespeichert
werden, und wobei das am weitesten rechts angeordnete
Pixel zugehörige zweite bereits existierende
Gerätepixeldaten aufweist, die in einem Speicherwort gespeichert
werden, welches das erste Speicherwort oder ein zweites
Speicherwort sein kann;
wobei das Verfahren ferner das selektive Zugreifen
auf das erste Speicherwort und das die zweiten bereits
existierenden Gerätepixeldaten enthaltende Speicherwort
und das Wiedergeben der Gerätepixeldaten für die
Abtastlinie oder -zeile in dem Bereich zwischen dem am
weitesten links angeordneten Pixel und dem am weitesten
rechts angeordneten Pixel umfaßt.
20. Das Verfahren nach Anspruch 14, ferner umfassend
den Schritt des Berechnens oder des Lesens aus dem
Speicher einer vorberechneten Referenzmatrix von
Schwellenwerten als Halbtonrastermuster bei einem beliebigen
spezifizierten Rasterabstand und einem beliebigen
spezifizierten Rasterwinkel.
21. Das Verfahren nach Anspruch 14, ferner umfassend
den Schritt des Füllens des Bereichs des gerasterten
graphischen Bildes mit einem ausgewählten Eingabebild.
22. Das Verfahren nach Anspruch 14, wobei das erste
und das zweite digitale Eingabekommando
Anzeigelisteninformationen umfassen.
23. Das Verfahren nach Anspruch 14, ferner umfassend
das Hinzufügen von im wesentlichen zufälligen
Rauschwerten zu den Gerätepixeldaten für jedes Gerätepixel.
24. Das Verfahren nach Anspruch 14, wobei das erste
digitale Eingabekommando aus einer Gruppe ausgewählt
wird, die aus den Kommandos besteht:
Wähle den Bereich aus einem bezeichneten
Speicherplatz; und
Erzeuge den Bereich unter Verwendung
spezifizierter Koordinaten.
25. Das Verfahren nach Anspruch 14, wobei das zweite
digitale Eingabekommando aus einer Gruppe ausgewählt
wird, die aus den Kommandos besteht:
Fülle den Bereich als Halbtonraster mit einem
spezifizierten Grauwert;
Fülle den Bereich mit zumindest einem
Halbtonraster mit einer spezifizierten Farbe;
Fülle den Bereich unter Verwendung schwarzer
Pixel;
Fülle den Bereich unter Verwendung weißer Pixel;
Fülle den Bereich unter Verwendung
undurchsichtiger Pixel; und
Fülle den Bereich unter Verwendung einer Maske,
wobei die Maske in einem bezeichneten Platz im Speicher
gefunden werden kann oder unter Verwendung vorgegebener
Informationen erzeugt werden kann.
26. Das Verfahren nach Anspruch 14, wobei ein
Quellbild aus Quellbildpixeln besteht, wobei das Verfahren
ferner ein drittes digitales Eingabekommando umfaßt, das
aus einer Gruppe ausgewählt wird, die aus den Kommandos
besteht:
Definiere ein Quellbild;
Skaliere ein Quellbild;
Rotiere ein Quellbild;
Schere ein Quellbild;
Kippe ein Quellbild;
Beschneide ein Quellbild;
Definiere eine Bildmaske; und
Fülle den Bereich mit einem Bild.
27. Das Verfahren nach Anspruch 26, wobei das erste,
das zweite und das dritte digitale Eingabekommando ein
oder zwei Kommandos darstellen.
28. Das Verfahren nach Anspruch 14, ferner aufweisend
ein viertes digitales Eingabekommando, das einen
Beschneidebereich definiert.
29. Das Verfahren nach Anspruch 28, wobei das erste,
zweite und vierte digitale Eingabekommando ein oder zwei
Kommandos sind.
30. Das Verfahren nach Anspruch 14, ferner umfassend
die Verwendung eines Systems mit einer Mehrzahl von
Ab
schnitten, wobei jeder der Abschnitte unabhängig und
gleichzeitig betrieben wird, wobei das Verfahren ferner
umfaßt:
Syntaktisches Zergliedern (Parsing) eines der
ersten oder zweiten Eingabekommandos in eines oder mehrere
interne Kommandos, von denen jedes innerhalb oder durch
einen spezifizierten Abschnitt des Systems ausgeführt
werden soll;
Verteilen jedes der internen Kommandos an die
jeweils spezifizierten Abschnitte; und
Wiedergeben des Bereichs.
31. Das Verfahren nach Anspruch 14, ferner umfassend
die Verwendung eines Quellbildes, das aus einer Mehrzahl
von Quellbildpixeln besteht, wobei jedes der
Quellbildpixel auf zugehörige Gerätepixel abgebildet und
wiedergegeben werden soll, um ein Gerätebild anzuzeigen, das
dem Quellbild entspricht, wobei das Verfahren ferner die
Berechnung der zugehörigen Gerätepixel für eines der
Quellbildpixel umfaßt.
32. Das Verfahren nach Anspruch 31, wobei das
Quellbild durch beliebiges Skalieren und Rotieren modifiziert
worden ist.
33. Das Verfahren nach Anspruch 31, ferner umfassend
das Bestimmen einer Anzahl von unter Verwendung eines
der Quellbildpixel wiedergebbaren Gerätepixeln für das
Quellbildpixel.
34. Das Verfahren nach Anspruch 31, ferner umfassend
das Bestimmen, welches Quellbildpixel als nächstes
verwendet werden soll.
35. Das Verfahren nach Anspruch 31, ferner umfassend
das Bestimmen einer inversen Transformationsmatrix zum
Berechnen der zugehörigen Gerätepixel auf der Grundlage
eines der Quellbildpixel.
36. Ein Verfahren zum Erzeugen eines gerasterten
graphischen Bildes mit einem Bereich, der eine Mehrzahl von
Gerätepixeln enthält, wobei der Bereich durch zwei oder
mehrere digitale Eingabekommandos beschrieben wird,
wobei die digitalen Eingabekommandos ein Kommando
umfassen, das zum Füllen des Bereichs mit einem
Halbtonrastermuster verwendet wird, und wobei das gerasterte
graphische Bild in einer zum Anzeigen auf einer
Rasteranzeigeeinrichtung oder einer
Rasterzeichenwiedergabemaschine geeigneten Form vorliegt, wobei das Verfahren
gekennzeichnet ist durch:
Empfangen eines ersten der zwei oder mehreren
digitalen Eingabekommandos, welches den Bereich
beschreibt,
Empfangen eines zweiten der zwei oder mehreren
digitalen Eingabekommandos, welches einen Modus zum Füllen
des Bereichs mit Gerätepixeldaten spezifiziert;
Übersetzen des ersten und des zweiten digitalen
Eingabekommandos in entsprechende erste und zweite
interne Kommandos, die parallel ausgeführt werden sollen;
Berechnen von zugehörigen Gerätepixeln für eines
von mehreren Quellbildpixeln für ein Quellbild, das aus
den Quellbildpixeln besteht, wobei das Quellbild durch
Skalieren und Rotieren modifiziert worden ist, und wobei
jedes Pixel der Quellbildpixel auf eine Mehrzahl von
zugehörigen Gerätepixeln abgebildet und wiedergegeben
werden soll, um ein Gerätebild anzuzeigen, das dem
Quellbild entspricht; und
Bestimmen einer Mehrzahl von unter Verwendung des
Quellbildpixels wiedergebbaren Gerätepixeln für das
Quellbildpixel.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/846,547 US5303334A (en) | 1992-03-05 | 1992-03-05 | System for generating a rasterized graphic image |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69323919D1 DE69323919D1 (de) | 1999-04-22 |
DE69323919T2 true DE69323919T2 (de) | 1999-11-11 |
Family
ID=25298249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69323919T Expired - Lifetime DE69323919T2 (de) | 1992-03-05 | 1993-01-26 | Graphik-Koprozessor |
Country Status (5)
Country | Link |
---|---|
US (1) | US5303334A (de) |
EP (1) | EP0559318B1 (de) |
JP (1) | JPH06180758A (de) |
CA (1) | CA2091034A1 (de) |
DE (1) | DE69323919T2 (de) |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06236176A (ja) * | 1992-04-29 | 1994-08-23 | Canon Inf Syst Res Australia Pty Ltd | ラスタ画像に透明性を与える方法及び装置 |
AU667891B2 (en) * | 1992-04-29 | 1996-04-18 | Canon Kabushiki Kaisha | Method and apparatus for providing transparency in an object based rasterised image |
US5515481A (en) * | 1992-07-08 | 1996-05-07 | Canon Kabushiki Kaisha | Method and apparatus for printing according to a graphic language |
US5577173A (en) * | 1992-07-10 | 1996-11-19 | Microsoft Corporation | System and method of printer banding |
US5644684A (en) * | 1993-03-15 | 1997-07-01 | Canon Kabushiki Kaisha | High-efficiency compression suitable for use in character generation |
US6147688A (en) * | 1993-06-28 | 2000-11-14 | Athena Design Systems, Inc. | Method and apparatus for defining and selectively repeating unit image cells |
US5712664A (en) * | 1993-10-14 | 1998-01-27 | Alliance Semiconductor Corporation | Shared memory graphics accelerator system |
US5590350A (en) * | 1993-11-30 | 1996-12-31 | Texas Instruments Incorporated | Three input arithmetic logic unit with mask generator |
JP3294696B2 (ja) * | 1993-12-24 | 2002-06-24 | キヤノン株式会社 | 画像処理装置 |
JP3454914B2 (ja) * | 1994-04-07 | 2003-10-06 | 株式会社ソニー・コンピュータエンタテインメント | 画像生成方法および画像生成装置 |
US5568600A (en) * | 1994-04-15 | 1996-10-22 | David Sarnoff Research Ctr. | Method and apparatus for rotating and scaling images |
JP3413432B2 (ja) * | 1994-05-30 | 2003-06-03 | 富士ゼロックス株式会社 | 文字展開処理装置 |
WO1995035572A1 (en) * | 1994-06-20 | 1995-12-28 | Neomagic Corporation | Graphics controller integrated circuit without memory interface |
US5729632A (en) * | 1994-12-08 | 1998-03-17 | Eastman Kodak Company | Reproduction apparatus and method for adjusting rendering with toners of different particle sizes |
US5594860A (en) * | 1995-01-27 | 1997-01-14 | Varis Corporation | Method for banding and rasterizing an image in a multiprocessor printing system |
US5732198A (en) * | 1995-02-09 | 1998-03-24 | Oki America, Inc. | Host based printing system for printing a document having at least one page |
US5751295A (en) * | 1995-04-27 | 1998-05-12 | Control Systems, Inc. | Graphics accelerator chip and method |
US5748860A (en) * | 1995-06-06 | 1998-05-05 | R.R. Donnelley & Sons Company | Image processing during page description language interpretation |
US6952801B2 (en) * | 1995-06-07 | 2005-10-04 | R.R. Donnelley | Book assembly process and apparatus for variable imaging system |
US6307559B1 (en) * | 1995-07-13 | 2001-10-23 | International Business Machines Corporation | Method and apparatus for color space conversion, clipping, and scaling of an image during blitting |
US6859534B1 (en) * | 1995-11-29 | 2005-02-22 | Alfred Alasia | Digital anti-counterfeiting software method and apparatus |
JPH09270024A (ja) * | 1996-02-02 | 1997-10-14 | Toshiba Corp | 情報処理装置 |
US5867612A (en) * | 1996-03-27 | 1999-02-02 | Xerox Corporation | Method and apparatus for the fast scaling of an image |
US5940080A (en) * | 1996-09-12 | 1999-08-17 | Macromedia, Inc. | Method and apparatus for displaying anti-aliased text |
US6269190B1 (en) | 1996-09-24 | 2001-07-31 | Electronics For Imaging, Inc. | Computer system for processing images using a virtual frame buffer |
US5995724A (en) * | 1996-11-01 | 1999-11-30 | Mikkelsen; Carl | Image process system and process using personalization techniques |
US6767286B1 (en) * | 1996-11-22 | 2004-07-27 | Kabushiki Kaisha Sega Enterprises | Game device, picture data forming method and medium |
US5803629A (en) * | 1997-03-14 | 1998-09-08 | Paul H. Neville | Method and apparatus for automatic, shape-based character spacing |
US6124858A (en) * | 1997-04-14 | 2000-09-26 | Adobe Systems Incorporated | Raster image mapping |
US5949964A (en) * | 1997-06-17 | 1999-09-07 | Hewlett-Packard Company | Method and apparatus for halftoning of images in a printer |
US6205452B1 (en) | 1997-10-29 | 2001-03-20 | R. R. Donnelley & Sons Company | Method of reproducing variable graphics in a variable imaging system |
JPH11154240A (ja) | 1997-11-20 | 1999-06-08 | Nintendo Co Ltd | 取込み画像を用いて画像を作成するための画像作成装置 |
US6433885B1 (en) * | 1997-11-24 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for manipulating bitmap raster data using a modular processing pipeline |
US6057935A (en) * | 1997-12-24 | 2000-05-02 | Adobe Systems Incorporated | Producing an enhanced raster image |
US6263496B1 (en) | 1998-02-03 | 2001-07-17 | Amazing Media, Inc. | Self modifying scene graph |
US6243856B1 (en) * | 1998-02-03 | 2001-06-05 | Amazing Media, Inc. | System and method for encoding a scene graph |
US6272650B1 (en) | 1998-02-03 | 2001-08-07 | Amazing Media, Inc. | System and method for disambiguating scene graph loads |
US6124946A (en) * | 1998-04-30 | 2000-09-26 | Hewlett-Packard Company | Multi-pass pseudo random masking system and method of using same |
US6252677B1 (en) * | 1998-05-07 | 2001-06-26 | Xerox Corporation | Method and apparatus for rendering object oriented image data using multiple rendering states selected based on imaging operator type |
US6435969B1 (en) | 1998-11-03 | 2002-08-20 | Nintendo Co., Ltd. | Portable game machine having image capture, manipulation and incorporation |
US7278094B1 (en) | 2000-05-03 | 2007-10-02 | R. R. Donnelley & Sons Co. | Variable text processing for an electronic press |
US6483524B1 (en) | 1999-10-01 | 2002-11-19 | Global Graphics Software Limited | Prepress workflow method using raster image processor |
US6624908B1 (en) | 1999-10-01 | 2003-09-23 | Global Graphics Software Limited | Method for arranging a prepress workflow |
US6380951B1 (en) | 1999-10-01 | 2002-04-30 | Global Graphics Software Limited | Prepress workflow method and program |
US6490696B1 (en) | 1999-12-15 | 2002-12-03 | Electronics For Imaging, Inc. | System and method for printer output regression testing using display lists |
US6807620B1 (en) * | 2000-02-11 | 2004-10-19 | Sony Computer Entertainment Inc. | Game system with graphics processor |
EP1136974A1 (de) * | 2000-03-22 | 2001-09-26 | Deutsche Thomson-Brandt Gmbh | Videobilddatenverarbeitungsverfahren für eine Anzeigevorrichtung |
US6894686B2 (en) | 2000-05-16 | 2005-05-17 | Nintendo Co., Ltd. | System and method for automatically editing captured images for inclusion into 3D video game play |
US7253921B2 (en) * | 2000-10-11 | 2007-08-07 | True Color Technology Gmbh | Process and target for calibration of digital input devices |
JP3796409B2 (ja) * | 2001-01-17 | 2006-07-12 | キヤノン株式会社 | 画像処理装置、画像形成装置及び情報処理装置とそれらの方法 |
JP4164272B2 (ja) * | 2001-04-24 | 2008-10-15 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
CA2349924A1 (en) * | 2001-06-07 | 2002-12-07 | Ipros Corporation | A method and system for processing geometrical figures |
US7167185B1 (en) | 2002-03-22 | 2007-01-23 | Kla- Tencor Technologies Corporation | Visualization of photomask databases |
US7345782B2 (en) * | 2002-05-13 | 2008-03-18 | Texas Instruments Incorporated | Efficient implementation of raster operations flow |
US7002599B2 (en) * | 2002-07-26 | 2006-02-21 | Sun Microsystems, Inc. | Method and apparatus for hardware acceleration of clipping and graphical fill in display systems |
US8045215B2 (en) * | 2002-10-18 | 2011-10-25 | Hewlett-Packard Development Company, L.P. | Printer object list resolutions |
US20040119724A1 (en) * | 2002-12-20 | 2004-06-24 | Imagelinx International Ltd. | Digital prepress masking tools |
US6954211B2 (en) * | 2003-06-30 | 2005-10-11 | Microsoft Corporation | Hardware-accelerated anti-aliased graphics |
US20050052468A1 (en) * | 2003-09-05 | 2005-03-10 | Xerox Corporation. | Method of detecting half-toned uniform areas in bit-map |
US8768642B2 (en) | 2003-09-15 | 2014-07-01 | Nvidia Corporation | System and method for remotely configuring semiconductor functional circuits |
US7450120B1 (en) | 2003-12-19 | 2008-11-11 | Nvidia Corporation | Apparatus, system, and method for Z-culling |
US7986423B2 (en) * | 2004-05-14 | 2011-07-26 | Samsung Electronics Co., Ltd. | Image reprinting apparatus and method |
US8711156B1 (en) | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
JP2006157580A (ja) * | 2004-11-30 | 2006-06-15 | Ricoh Co Ltd | 画像処理装置、画像形成装置、画像処理方法、コンピュータプログラム及び記録媒体 |
AU2005201930B2 (en) * | 2005-05-06 | 2009-02-19 | Canon Kabushiki Kaisha | Simplification of alpha compositing in the presence of transfer functions |
US9123173B2 (en) | 2005-12-15 | 2015-09-01 | Nvidia Corporation | Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline |
US9117309B1 (en) | 2005-12-19 | 2015-08-25 | Nvidia Corporation | Method and system for rendering polygons with a bounding box in a graphics processor unit |
US7446352B2 (en) * | 2006-03-09 | 2008-11-04 | Tela Innovations, Inc. | Dynamic array architecture |
US8928676B2 (en) | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
US8085264B1 (en) | 2006-07-26 | 2011-12-27 | Nvidia Corporation | Tile output using multiple queue output buffering in a raster stage |
US9070213B2 (en) | 2006-07-26 | 2015-06-30 | Nvidia Corporation | Tile based precision rasterization in a graphics pipeline |
US8237738B1 (en) | 2006-11-02 | 2012-08-07 | Nvidia Corporation | Smooth rasterization of polygonal graphics primitives |
US8228561B2 (en) * | 2007-03-30 | 2012-07-24 | Xerox Corporation | Method and system for selective bitmap edge smoothing |
JP2008257456A (ja) * | 2007-04-04 | 2008-10-23 | Matsushita Electric Ind Co Ltd | アンチエイリアス描画装置及びアンチエイリアス描画方法 |
JP4378572B2 (ja) * | 2007-06-28 | 2009-12-09 | Necシステムテクノロジー株式会社 | データ転送システム、データ転送方法、ホスト装置及び描画装置 |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8368959B2 (en) | 2009-05-18 | 2013-02-05 | Xerox Corporation | Method and system for selective smoothing of halftoned objects using bitmap encoding |
US9331869B2 (en) | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US8564840B2 (en) | 2010-05-28 | 2013-10-22 | Xerox Corporation | Halftone tiling and halftoning for annular rasters |
US9171350B2 (en) | 2010-10-28 | 2015-10-27 | Nvidia Corporation | Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up |
US9710894B2 (en) | 2013-06-04 | 2017-07-18 | Nvidia Corporation | System and method for enhanced multi-sample anti-aliasing |
US11315209B2 (en) * | 2020-05-08 | 2022-04-26 | Black Sesame Technolgies Inc. | In-line and offline staggered bandwidth efficient image signal processing |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60165873A (ja) * | 1984-02-09 | 1985-08-29 | Dainippon Screen Mfg Co Ltd | 網点発生器のアドレス発生方法 |
US4755813A (en) * | 1987-06-15 | 1988-07-05 | Xerox Corporation | Screening circuit for screening image pixels |
US5172248A (en) * | 1988-05-18 | 1992-12-15 | Fuji Photo Film Co., Ltd. | Method for forming halftone screen and apparatus therefor |
US4918622A (en) * | 1988-11-16 | 1990-04-17 | Eastman Kodak Company | Electronic graphic arts screener |
JP2943121B2 (ja) * | 1989-10-24 | 1999-08-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | グラフイツク・データをストアする方法 |
US5170257B1 (en) * | 1990-10-02 | 1995-02-07 | Southwest Software Inc | Method and apparatus for calibrating halftone output from an image-setting device |
US5140431A (en) * | 1990-12-31 | 1992-08-18 | E. I. Du Pont De Nemours And Company | Digital electronic system for halftone printing |
EP0527097A3 (en) * | 1991-08-06 | 1995-03-01 | Eastman Kodak Co | Apparatus and method for collectively performing tile-based image rotation, scaling and digital halftone screening |
EP0529965A3 (en) * | 1991-08-23 | 1993-12-08 | Levien Raphael L | High speed screening of images |
-
1992
- 1992-03-05 US US07/846,547 patent/US5303334A/en not_active Expired - Lifetime
-
1993
- 1993-01-26 EP EP93300552A patent/EP0559318B1/de not_active Expired - Lifetime
- 1993-01-26 DE DE69323919T patent/DE69323919T2/de not_active Expired - Lifetime
- 1993-03-04 CA CA002091034A patent/CA2091034A1/en not_active Abandoned
- 1993-03-05 JP JP5069065A patent/JPH06180758A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP0559318A3 (en) | 1995-05-31 |
US5303334A (en) | 1994-04-12 |
EP0559318A2 (de) | 1993-09-08 |
JPH06180758A (ja) | 1994-06-28 |
CA2091034A1 (en) | 1993-09-06 |
EP0559318B1 (de) | 1999-03-17 |
DE69323919D1 (de) | 1999-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69323919T2 (de) | Graphik-Koprozessor | |
DE3650764T2 (de) | Bildverarbeitungsgerät | |
DE68919024T2 (de) | Verfahren und Prozessor zur Abtastumsetzung. | |
DE68928366T2 (de) | Elektronische vorrichtung zur halbtonrasterung graphischer vorlagen | |
DE69131370T2 (de) | Pipelinestrukturen für vollfarbfähigen Rechnergraphik | |
DE69431294T2 (de) | Bildverarbeitungsverfahren und -system | |
DE69221414T2 (de) | Intelligenter Schriftartdarstellungskoprozessor | |
DE69015235T2 (de) | Vorrichtung und Methode zur Umwandlung eines punktorganisierten einfarbigen Bildes in ein Grauwertbild mittels Operationen in einer Suchtabelle. | |
DE69715106T2 (de) | Anti-Alias-Unterpixel-Zeichenpositionierung mit Grauwertmaskierungstechniken | |
DE69229171T2 (de) | Einfügung von traps in seiten im seitenbeschreibungssprachformat | |
DE3486494T2 (de) | Graphisches Musterverarbeitungsgerät | |
US5542031A (en) | Halftone computer imager | |
DE3688546T2 (de) | Digitale bildumdrehung. | |
DE69622957T2 (de) | Verfahren und vorrichtung zur erzeugung von textbildern auf einer anzeigevorrichtung mit anti-aliasing effekt | |
DE69023914T2 (de) | Verfahren und vorrichtung zur erzeugung gerasterter halbtonbilder. | |
DE3851484T2 (de) | Datenverringerung für die Bildanzeige von Ganzseiten-Graphiken. | |
DE69103408T2 (de) | Technik zur durchführung einer digitalen bildskalierung durch logisches zusammensetzen oder vervielfältigen von pixeln in blöcken von unterschiedlichen gruppengrössen. | |
DE69127650T2 (de) | Verfahren und Gerät zur Erzeugung von dreidimensionalen graphischen Symbolen | |
DE68923227T2 (de) | Vektor-zu-Raster-Umwandlungsverfahren. | |
DE69032556T2 (de) | Technik zur Bildverkleinerung und -vergrösserung | |
EP0764310B1 (de) | Verfahren zur generierung einer contone-map | |
DE3633454C2 (de) | Einrichtung zur Erzeugung eines gerasterten Musters | |
DE69529500T2 (de) | Verwendung von abgetasteten Bildern in einem Bildzusammensetzungssystem | |
DE10204751B4 (de) | Verfahren zur Konvertierung eines Linework Datenformats in das Format einer Seitenbeschreibungssprache | |
DE69518577T2 (de) | Stapelfilter für eine 1-zu-N-Bit-Bildverarbeitung in elektronischen Druckern |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |