DE69633716T2 - Hochgeschwindigkeitssystem zur Skalierung von Bildern - Google Patents

Hochgeschwindigkeitssystem zur Skalierung von Bildern Download PDF

Info

Publication number
DE69633716T2
DE69633716T2 DE69633716T DE69633716T DE69633716T2 DE 69633716 T2 DE69633716 T2 DE 69633716T2 DE 69633716 T DE69633716 T DE 69633716T DE 69633716 T DE69633716 T DE 69633716T DE 69633716 T2 DE69633716 T2 DE 69633716T2
Authority
DE
Germany
Prior art keywords
source
pixel
image
value
threshold
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69633716T
Other languages
English (en)
Other versions
DE69633716D1 (de
Inventor
David B. Boise Fujii
Robert A. Boise Rust
David Hershberger
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Application granted granted Critical
Publication of DE69633716D1 publication Critical patent/DE69633716D1/de
Publication of DE69633716T2 publication Critical patent/DE69633716T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4023Scaling of whole images or parts thereof, e.g. expanding or contracting based on decimating pixels or lines of pixels; based on inserting pixels or lines of pixels

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich auf eine Umwandlung von Bildern mit einer Auflösung in Bilder mit einer zweiten Auflösung, und insbesondere auf ein System, das ein empfangenes Bild durch Verwendung eines Speicher sparenden Indexarrays zu einer Zielbildauflösung skaliert.
  • HINTERGRUND DER ERFINDUNG
  • Sowohl Farb- als auch Graustufenbilder bestehen aus Bildelementen (Pixeln), wobei jedes Pixel durch mehrere Bits dargestellt wird, die entweder eine Farbe oder eine Graustufe definieren. Um derartige Bilder auf einem Zweistufendrucker (Schwarz-Weiß-Drucker) darzustellen, werden die Daten, wenn sie nicht bereits eine Graustufe umfassen, in eine Graustufen-Mehrbitkonfiguration (z. B. 8 Bits/Pixel) umgewandelt, und anschließend werden die einzelnen Graustufenpixel unter Verwendung eines Skalierungs- und Dither-Prozesses in Binärpegelpixel umgewandelt.
  • Die Pixel in dem ursprünglichen Mehrbit-pro-Pixel-Bild weisen üblicherweise nicht die Auflösung der Zweistufendruckerauflösung auf und müssen somit skaliert werden, um mit der Druckerauflösung übereinzustimmen. Beispielsweise weisen viele moderne Drucker eine Auflösung von 600 Punkten pro Zoll (dpi – dot per inch) auf, wohingegen Computer Daten bei einer Auflösung von 1/6 der Druckerauflösung oder bei einer noch niedrigeren Auflösung ausgeben. Demgemäß ist es erforderlich, dass der Zweistufendrucker die empfangenen Graustufenpixel räumlich zu der Druckerauflösung skaliert. Dann werden die sich ergebenden skalierten Graustufenpixel mit einer Schwellenmatrix verglichen, die die Umwandlung der Graustufen in entsprechende Muster von Zweitstufendaten steuert. Dieser Prozess wird als „Dithern" bezeichnet.
  • Wenn 8 Bits verwendet werden, um die Graustufe darzustellen, können 256 Graustufen dargestellt werden. Die Schwellenmatrix umfasst eine Mehrzahl von zeilenartig angeordneten Graustufenwerten, die die Umwandlung der Graustufenpixelwerte in binäre Pixelwerte steuern. Im Wesentlichen ist jeder Eintrag in die Schwellenmatrix ein Schwellengraustufenwert, der, wenn er durch den Bildgraustufenpixelwert überschritten wird, bewirkt, dass ein Graustufenbildpixel in ein schwarzes Pixel umgewandelt wird. Wenn der Bildgraustufenpixelwert dagegen geringer als der oder gleich dem entsprechenden Schwellenmatrixgraustufenwert ist, wird er in ein „weißes" Pixel umgewandelt.
  • Der zuvor erwähnte Prozess ist in 1 veranschaulicht, bei der ein Quellenbild 10 eine 4 × 4-Matrix von Graustufenpixelwerten umfasst. Eine Schwellenmatrix 12 umfasst für dieses Beispiel ferner eine 4 × 4-Matrix von Graustufenschwellwerten. Angenommen, dass das Quellenbild 10 um einen Faktor 2 nach oben skaliert werden soll, repliziert ein Skalierungsvorgang die ursprünglichen Graustufenpixelwerte in dem Quellenbild 10 in die Form, die in dem skalierten Bild 14 gezeigt ist. Ein Skalieren kann durch eine Pixelreplikationsprozedur bewerkstelligt werden, die bewirkt, dass Pixel, die repliziert werden sollen, die Leerräume, die durch das Skalieren bewirkt werden, füllen. Andere Verfahren, z. B. eine bilineare Skalierung, werden ebenfalls verwendet, um die Graustufenwerte zwischen ursprünglichen Graustufenpixelwerten des Quellenbildes zu bestimmen. Ein bilineares Skalieren zieht benachbarte Graustufenpixelwerte in Betracht, wenn Räume, die durch das Skalieren verursacht wurden, gefüllt werden.
  • Als Nächstes wird die Schwellenmatrix 12 „fliesenartig verlegt" bzw. „gefliest", sodass sie über dem gesamten skalierten Bild 14 liegt. Die geflieste Schwellenmatrix 12 ist in 1 bei 16 gezeigt. Das skalierte Bild 14 wird als Nächstes durch einen Vergleichsvorgang, der in einem Vergleichsmodul 20 stattfindet, in ein Zweipegel-Zieldatenbild 18 umgewandelt. Jedes Graustufenpixel des skalierten Bildes 14 wird mit einem entsprechend positionierten Graustufenwert der gefliesten Schwellenmatrix 16 verglichen, und je nachdem, ob der skalierte Bildgraustufenpixelwert die geflieste Schwellenmatrix überschreitet, gleich derselben oder geringer als dieselbe ist, gibt das Vergleichsmodul 20 entweder ein 1- oder ein 0-Bit zur Speicherung an der entsprechenden Pixelstelle in dem Zweipegel-Zieldatenbild 18 aus.
  • Bei dem in 1 gezeigten Beispiel wird die Schwellenmatrix 12 einmal nach links und einmal nach unten gefliest, wobei bei ihrer oberen linken Ecke begonnen wird. Mit welchem Teil der Schwellenmatrix begonnen wird, wird durch einen Schwellenmatrix-„Anker" zu der Seite relativ zu dem Quellenbild 10 und ihren Anker auf der Seite bestimmt. Im Einzelnen definiert ein Anker einen Punkt auf einem Bild, wo ein spezifischer Punkt eines zweiten Bildes (z. B. eine Schwellenmatrix) überlagert wird, wodurch ermöglicht wird, dass das zweite Bild mit einer bekannten Positionierung über das erste Bild gelegt wird.
  • Bei 2a ist ein Quellengraustufenbild 22 gezeigt. Bei 2b ist ein Beispiel einer nach oben skalierten Version 24 des Graustufenbildes 22 gezeigt, das um den Faktor 1,5 nach oben skaliert wurde. Bei 2c ist ein Graustufenbild 26 gezeigt, dessen Auflösung um einen Wert von 0,75 nach unten skaliert wurde. In jedem Fall erreichte der Stand der Technik ein derartiges Skalieren durch Verwendung eines Horizontaleingabeindexarrays (HIIA) und eines Vertikaleingabeindexarrays (VIIA). Dies wird durch Bezugnahme auf 3 mehr verständlich, bei der ein Quellenbild 30 eine 4 × 4-Matrix von 16 Pixeln umfasst. Das Quellenbild 30 soll in ein skaliertes Bild 32 umgewandelt werden, das eine 2,5-mal höhere Auflösung aufweist als das Quellenbild 30. Das skalierte Bild 32 umfasst somit 10 Spalten von Pixeln.
  • Um den Skalierungsvorgang zu bewerkstelligen, berechnet ein Prozessor ein HIIA 34, das einen Mehrbitwert für jede Spalte des skalierten Bildes 32 umfasst. Jeder HIIA-Wert stellt einen Versatz in das Quellenbild 30 dar und identifiziert dasjenige Pixel aus dem Quellenbild 30, das an einer Pixelposition, die dem HIIA-Wert entspricht, in das skalierte Bild 32 eingefügt werden soll. Jeder HIIA-Wert gibt an, wie viele Pixel man in das Quellenbild 30 hineingehen soll, um das richtige Pixel zur Einfügung in eine entsprechende Position in dem skalierten Bild 32 zu erhalten.
  • Dasselbe Konzept wird bei der vertikalen Richtung verwendet. Nachdem eine Zeile eines skalierten Bildes abgeschlossen ist, bestimmt ein VIIA-Indexbit, ob die Zeile gemäß dem Skalierungsfaktor repliziert werden sollte. Im Einzelnen gibt VIIA 36 an, dass die ersten zwei Zeilen zu der ersten Zeile des Quellenbilds 30 indexiert werden sollten. Die zweiten zwei Zeilen des skalierten Bildes 32 sind von der zweiten Zeile des Quellenbildes 30 abzuleiten. Der Skalierungsfaktor von 2,5 wird erhalten, in dem manche Pixel um 3 skaliert werden, während andere Pixel um 2 skaliert werden.
  • 4 veranschaulicht die Anwendung von HIIAs und VIIAs auf die Skalierung eines Bildes unter Verwendung eines exemplarischen bilinearen Skalierungsalgorithmus. Der bilineare Skalierungsalgorithmus betrachtet benachbarte Pixel, wenn die Pixel zwischen den Werten, die von einem Quellenbild 40 kopiert wurden, gefüllt werden. Bei dem in 4 gezeigten Beispiel ist der Pixelwert (15) zu der oberen Zeile, zweite Spalte, das Ergebnis einer Mittelwertsbildung des ersten und des zweiten Pixels in dem Quellenbild 40. Wenn man HIIA 42 untersucht, kann man erkennen, dass das erste Pixel des Quellenbildes 40 zu dem ersten Pixel in dem skalierten Bild 44 kopiert wird. Das zweite Pixel des Quellenbilds 40 geht zu dem dritten Pixel in dem skalierten Bild 44. Das zweite Pixel in dem skalierten Bild 44 ist ein interpolierter Wert zwischen dem ersten und dem dritten Pixel. Bei 5 ist ein Herabskalierungsbeispiel veranschaulicht, bei dem ein Quellenbild 46 durch die Verwendung eines HIIA 50 und eines VIIA 52 zu einem skalierten Bild 48 herabskaliert wird.
  • Bei jeder der obigen bekannten Skalierungsprozeduren sind beträchtliche Speichermengen erforderlich, um das HIIA und das VIIA zu speichern. Beispielsweise liegen für ein 8,5 Zoll breites Blatt Papier auf einen 600-dpi-Drucker etwa 4800 Punktelemente pro Linie vor. Um jede Spalte des skalierten Bildes ordnungsgemäß zu adressieren, wurde bisher eine Quantität von vollen 16 Bit für jedes Element des HIIA verwendet. Somit sind 9,6 Kilobytes erforderlich, um HIIA-Daten unterzubringen. Ferner ist ein VIIA erforderlich, um das Skalieren von Zeilen in der vertikalen Richtung zu ermöglichen. Für ein 11 Zoll langes Blatt Papier auf einen 600-dpi-Drucker liegen etwa 6000 Punkte in der vertikalen Abmessung vor. 16-Bit-Quantitäten werden ebenfalls verwendet, um jedes VIIA-Zeilenelement zu adressieren (was 12 Kilobytes erfordert). Somit müssen für eine ganze Seite insgesamt 21,6 Kilobytes Speicher für die Eingabeindexarrays reserviert werden.
  • Unter Bezugnahme auf die Ausrichtung und Verfliesung einer Schwellenarraymatrix über ein skaliertes Quellenbild nimmt die bekannte Prozedur beträchtliche Zeit für das Durchführen von Berechnungen in Anspruch, die für jedes Pixel in dem sich ergebenden gefliesten Bild benötigt werden. Sie muss Indizes für jedes Element in der Schwellenmatrix berechnen und das spezifische indexierte Speicherelement wiedergewinnen. Folglich ist die Prozedur rechen- und zeitaufwendig. Somit kann es sein, dass bekannte Bildumwandlungsprozeduren Minuten brauchen, um Bilder in einer softwaregesteuerten Umgebung aufzubereiten. Derartige Umwandlungszeiten erfüllen nicht die Anforderungen des Marktes.
  • Die US-A-5,329,614 beschreibt ein Verfahren zum Vergrößern von Graustufenbildern. Das zum Durchführen der Skalierung verwendete Verfahren ist insofern „datensparend", als es immer alle ursprünglichen Grauskalenpixelwerte des eingegebenen Bildes beibehält, wobei nach Bedarf zusätzliche Pixelwerte erzeugt werden, um ein vergrößertes Ausgabebild zu erzeugen. Um ein Bild zu vergrößern, wird eine in eine Reihenfolge gebrachte Dateneinfügungszahlsequenz auf der Basis der gewünschten Skalenfaktoren ausgewählt, und diese in eine Reihenfolge gebrachte Dateneinfügungszahlsequenz wird verwendet, um zusätzliche Zeilen und Spalten freistehender Pixelstellen einzufügen. Die freistehenden Pixelspeicherstellen werden dann durch jeweilige Daten gefüllt, die einen Graustufenwert darstellen und die berechnet werden, indem ein Mittelwert der Graustufenwerte von Pixeln auf beiden Seiten des eingefügten Pixels in derselben Zeile gebildet wird.
  • Insbesondere wird bei dem Verfahren der US-A-5,329,614 ein relatives Indexarray z. B. einer Spalte des Quellenbildes zugewiesen. Indem über alle Pixel der Quellenspalte eine Schleife gezogen wird, wird dieses Indexarray als Adressierungsmechanismus für die Zielpixel verwendet, d. h. um die Zieladressen zu inkrementieren, wodurch in dem Zielbild mögliche Löcher hinterlassen werden. Diese Löcher werden dann durch einen anschließenden Interpolationsprozess gefüllt.
  • Demgemäß besteht eine Aufgabe dieser Erfindung darin, ein verbessertes System zum Umwandeln von Quellenbildern mit einer Auflösung in Zielbilder mit einer zweiten Auflösung zu schaffen.
  • Diese Aufgabe wird durch ein Skalierungssystem gemäß Anspruch 1 gelöst.
  • Ein System wandelt ein Quellenbild, das mehrere Graustufenquellenpixel auf einem ersten Auflösungsniveau umfasst, in ein Zielbild von linearen Pixeln auf einem zweiten Auflösungsniveau um. Das System verwendet ein Skalierungsteilsystem, das einen Speicher, der zumindest einen Teil einer Zeile von Quellenpixeln speichert, einen Skalierungsfaktor und ein relatives Eingabeindexarray (RIIA), das ein Einzelindexbit für jede Spalte des Zielbildes aufweist, umfasst. Jedes Indexbit ermöglicht, dass ein Graustufenquellenpixel, das identifiziert werden soll, beim Skalieren des Quellenbildes zu der zweiten Auflösung verwendet wird. Eine Skalenlogikschaltung spricht auf jedes Indexbit und die Quellenpixel an, um jeder Spalte des Zielbildes zumindest ein Quellenpixel zuzuordnen. Das Skalierungsteilsystem umfasst ferner einen Steuerprozessor, der das RIIA auf der Basis des in dem Speicher gespeicherten Skalenfaktors berechnet.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein schematisches Diagramm, das den Prozess des Skalierens eines Quellenbilds; des Ausrichtens und Fliesens einer Schwellenmatrix, um mit dem skalierten Quellenbild übereinzustimmen; und des Vergleichens des skalierten Quellenbildes und der gefliesten Schwellenmatrix, um bei einem Zweipegel-Zielbild anzukommen, veranschaulicht.
  • 2a veranschaulicht ein Quellenbild, das mehrere Graustufenpixelwerte aufweist.
  • 2b veranschaulicht das Quellenbild der 2a nach einem Hochskalieren um einen Faktor von 1,5 ×.
  • 2c veranschaulicht das Quellenbild der 2a nach einem Herabskalieren um einen Faktor von 0,75 ×.
  • 3 veranschaulicht ein bekanntes Verfahren zum Hochskalieren eines Quellenbildes unter Verwendung von Mehrbit-Eingabeindexarrays und einer Pixelreplikationsprozedur.
  • 4 veranschaulicht ein bekanntes Verfahren zum Hochskalieren eines Quellenbildes unter Verwendung von Mehrbit-Eingabeindexarrays, bei dem ein bilinearer Skalierungsalgorithmus verwendet wird.
  • 5 veranschaulicht ein bekanntes Verfahren zum Herabskalieren eines Quellenbildes unter Verwendung von Mehrbit-Eingabeindexarrays und eines Unterabtastalgorithmus.
  • 6 ist ein grobes Blockdiagramm eines Systems, das die vorliegende Erfindung beinhaltet.
  • 7 ist ein logisches Flussdiagramm der Erfindung, das eine Interaktion zwischen verschiedenen Datenquellen während einer Umwandlung eines Graustufenquellenbildes in ein Zweipegel-Zielbild veranschaulicht.
  • 7a ist ein Flussdiagramm, das angibt, wie SRAM-Zugriffe gesteuert werden.
  • 8 ist ein Diagramm einer Rasterbildseitendarstellung, das vertikale Bänder veranschaulicht, die durch die Erfindung verarbeitet werden.
  • 9a veranschaulicht schematisch eine Unterteilung eines Speichers, wenn ein niedriger Skalenfaktor auf ein Quellenbild angewandt werden soll.
  • 9b veranschaulicht schematisch ein Unterteilen eines Speichers, wenn ein großer Skalenfaktor auf ein Quellenbild angewandt werden soll.
  • 10 ist ein Diagramm, das ein „relatives" Eingabeindexarray-Format veranschaulicht.
  • 11 ist ein Diagramm, das die Beziehung zwischen Quellendaten und Zieldaten veranschaulicht, wie sie durch den Wert von Indexbitpositionen eines relativen Eingabeindexarrays gesteuert wird.
  • 12 ist ein ausführliches Blockdiagramm, das eine Schaltung veranschaulicht, die gemäß der Erfindung arbeitet.
  • 13a13d veranschaulichen vier modengesteuerte Verbindungen zwischen einem Schwellenmatrixregister und einem Schwellenausgaberegister.
  • 14 veranschaulicht die Funktionsweise einer Schwellenmatrixausrichtungsprozedur.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Unter Bezugnahme auf 6 ist ein System 60 angepasst, um ein Quellenbild, das mehrere Graustufenpixelwerte mit einer ersten Auflösung aufweist, in ein binäres Pixelzielbild mit einer zweiten Auflösung umzuwandeln. Das System 60 kann in einem Personal-Computer, einen Drucker, eine Kombination eines Personal-Computers und Druckers oder in eine beliebige andere Kombination von Vorrichtungen integriert sein, bei der Graustufenpixeldaten in binäre Pixeldaten einer anderen Auflösung umgewandelt werden.
  • Das System 60 umfasst einen Prozessor 62 mit einem zugeordneten dynamischen Direktzugriffsspeicher (DRAM) 64. Der Prozessor 62 kann ein Graustufenquellenbild 66 von einer externen Quelle empfangen haben oder kann ein Graustufenquellenbild 66 infolge der Verarbeitung einer internen Anwendung erzeugt haben. Um eine Umwandlung eines Quellenbil des 66 in ein binäres Zielbild zu erzielen, sind Steuerparameter erforderlich. Ein Skalenfaktor 68 definiert das Verhältnis von Quellenbildpixeln zu Zielbildpixeln. Bei den meisten Druckeranwendungen weist das Zielbild ein beträchtlich höheres Auflösungsniveau auf als das Quellenbild 66. Somit gibt der Skalenfaktor 68 allgemein einen Wert zwischen 2 und 10 (z. B. 6,5) an, was bedeutet, dass für jedes Quellenbildpixel mehrere Zielpixel vorliegen.
  • Die Steuerparameter umfassen ferner eine Schwellenmatrix 70, die, wie oben angegeben wurde, mehrere Zeilen von Schwellengraustufenpixelwerten umfasst, die jeweils vorgeben, ob ein in Bezug auf die Position entsprechendes skaliertes Quellenbildpixel in einen weißen oder schwarzen Punkt in dem Zielbild umgewandelt wird. Der Aufbau der Schwellenmatrix 70 ist derart, dass gewährleistet wird, dass die binären Daten in dem Zielbild eine so gute Graustufendarstellung liefern, wie sie bei der Auflösung des Zielbildes erhältlich ist. Da in der Technik eine Vielzahl von Schwellenmatrizes 70 bekannt sind, ist eine weitere Beschreibung derselben nicht erforderlich.
  • Der DRAM 64 umfasst ferner einen Schwellenmatrixanker, der definiert, wo in dem skalierten Quellenbild die Schwellenmatrix anfänglich positioniert werden soll, bevor sie über das skalierte Quellenbild „gefliest" wird. Der Schwellenmatrixanker 72 definiert allgemein einen Eckpixelwert des skalierten Quellenbildes. Ein Bildanker 74 definiert, wo in einem Quellenbild ein bestimmter Abschnitt vorliegt, der skaliert und in ein Binärpixelzielbit umgewandelt werden soll.
  • Der DRAM 64 speichert ferner ein RIIA (horizontal) 76, deren Struktur nachfolgend ausführlich betrachtet wird. Das RIIA 76 ist ein Array von Binärwertindexbits, mit einem Bit für jede Spalte des Zielbildes. Das RIIA 76 wird durch einen Prozessor 62 gemäß einem Skalenfaktor 68 berechnet. Kurz gesagt wird das RIIA 76 verwendet, um Quellenbildpixel zu der Auflösung des Zielbildes zu skalieren. Wenn der Skalenfaktor 68 also sechs beträgt, liegen sechs Zielpixel für jedes Quellenpixel vor. Jedes RIIA-Indexbit definiert, ob ein entsprechendes Zielpixel eine Funktion eines aktuellen Quellenpixels oder eines nächsten Pixels ist. Auf diese Weise ermöglicht ein einzelnes Bit pro Spalte des Zielbildes ein vollständiges Skalieren des Quellenbildes zu der Zielbildauflösung unter Verwendung eines Minimums an Indexbits.
  • Eine ähnliche Funktion erfüllt das RIIA (vertikal) 78, jedoch wird das RIIA 78 verwendet, um die Ähnlichkeit oder Verschiedenheit aufeinander folgender Zeilen von Zielbilddaten zu bestimmen. Sowohl das RIIA (horizontal) 76 als auch das RIIA (vertikal) 78 sind „relative" Eingabeindexarrays, da sie ermöglichen, dass Quellenpixelwerte auf der Basis von Beziehungen, die aus den Indexbitwerten bestimmt werden können, bestimmt werden.
  • Wie aus der nachfolgenden Beschreibung hervorgeht, wird die Umwandlung eines Quellenbildes 64 in ein Zielbild durch eine Schaltungsanordnung, die in einer anwendungsspezifischen integrierten Schaltung (ASIC – application specific integrated circuit) 80 enthalten ist, auf synchrone und rasche Weise bewerkstelligt. Die ASIC 80 kommuniziert über einen Datenbus 82 und eine Busschnittstelle 84 sowohl mit dem Prozessor 62 als auch dem DRAM 64. Ein statischer Direktzugriffsspeicher (SRAM) 86 liegt auf der ASIC 80 vor und umfasst unterteilte Bereiche 88, 90, 92 und 94 zum Speichern zumindest eines Teils einer Zeile von Quellenbildpixeln, der Schwellenmatrix, eines RIIA (horizontal) für das spezifische Quellenbild sowie von binären Zielbilddaten, die sich aus dem Bildumwandlungsvorgang ergeben.
  • Ein Skalen- und Dithermodul 96 umfasst eine Zustandsmaschine 98, die auf synchrone Weise eine Skalierung der Quellenbildpixel zu der Zielbildpixelauflösung und einen anschließenden Vergleich von skalierten Quellenbildpixeln mit ent sprechend positionierten Schwellenmatrixpixeln durchführt, um eine Umwandlung in binäre Daten zu ermöglichen. Die Funktionen des SRAM 86 und des Skalen- und Dithermoduls 96 unterliegen der Steuerung der Steuerung 100. Taktsignale werden sowohl an die Steuerung 100, das Skalen- und Dithermodul 96 als auch an die Zustandsmaschine 98 angelegt, um einen synchronen Betrieb derselben zu ermöglichen, wenn entsprechende Quellenbilddaten, Schwellenmatrixdaten und RIIA-Indexbits in Register geladen wurden, die sich in der Zustandsmaschine 98 befinden. Die Funktionsweise der Steuerung 100 in Kombination mit dem SRAM 86, der Zustandsmaschine 98 und der Busschnittstelle 84 wird aus der nachfolgenden ausführlichen Beschreibung verständlich.
  • 7 ist ein grobes logisches Flussdiagramm, das eine Interaktion zwischen den verschiedenen Datenquellen, die durch die Erfindung verwendet werden, veranschaulicht. Ferner veranschaulicht 7 eine Mehrzahl von Zeigern, die durch die Zustandsmaschine 98 verwendet werden, um die Funktionsweise der Erfindung zu steuern. Der SRAM 86 (6) speichert Quellendaten 88, eine Schwellenmatrix 90, Horizontalskalierungsinformationen 92 (RIIA) und Zweipegel-Zieldaten 94. Ein Quellenzeiger wird von Quellenbildpixel zu Quellenbildpixel inkrementiert, da jedes Quellenbildpixel einer Skalierung in dem Skalierungslogikmodul 102 unterworfen wird. Bei einem spezifischen Ausführungsbeispiel der Erfindung werden 4 Bytes (32 Bits) von Graustufenquellenpixeldaten der Skalierungslogik 102 zugeführt, und 4 Indexbits werden gleichzeitig von den Horizontalskalierungsinformationen 92 zugeführt. Ein Skalierungsstartzeiger gibt den nächsten Teilsatz von Skalierungsinformationen an, der der Skalierungslogik 102 zugeführt werden soll.
  • Bei 7a ist ein grobes Flussdiagramm gezeigt, das die Prozedur für SRAM-Zugriffe veranschaulicht. Jeder Schritt, der mit „Zyklus" bezeichnet ist, gibt an, dass ein Maschinenzyklus verwendet werden muss, um die Aufgabe zu bewerkstelligen. Ansonsten wird eine Aufgabe bewerkstelligt, ohne die Leistungsfähigkeit der Prozedur zu beeinflussen. Wenn ein Zyklus ausgeführt wird, wird der Zeiger zu einer Position in SRAM inkrementiert.
  • Anfänglich wird ein Zugriff auf Schwellendaten durchgeführt (Kästchen 150). Unter gewissen Umständen (die später zu beschreiben sind) werden ausgegebene geflieste Schwellwerte ungültig und werden ignoriert. Dieser Vorgang ist durch das Entscheidungskästchen 152 angegeben, das ermöglicht, dass die Prozedur fortfährt, falls die Schwellendaten gültig sind. Falls dann zusätzliche Quellendaten benötigt werden (Entscheidungskästchen 154), wird ein Zugriff auf Quellendaten aus dem SRAM zur Verwendung durch die Skalierungslogik 102 durchgeführt (Kästchen 156). Ein Vergleichsvorgang zwischen den Schwellendaten und den skalierten Quellendaten wird anschließend durchgeführt, und resultierende binäre Zielpixelwerte werden zwischengespeichert (Kästchen 158). Ein Halbbyte-Zählwert von Zielpixeln wird aufrechterhalten und wird jedes Mal inkrementiert, wenn vier Zielpixel zwischengespeichert werden (Kästchen 160). Falls der Halbbyte-Zählwert nicht gleich acht ist, was angibt, dass 32 Zielpixelwerte noch nicht zwischengespeichert wurden, durchläuft die Prozedur einen erneuten Zyklus (Entscheidungskästchen 162). Andernfalls werden die zwischengespeicherten Zweipegel-Zielpixeldaten in den SRAM gespeichert (Kästchen 164), zusätzliche RIIA-Daten werden aus dem SRAM wiedergewonnen (Kästchen 166), der Halbbyte-Zählwert wird gelöscht (Kästchen 168) und die Prozedur durchläuft einen erneuten Zyklus.
  • Unter erneuter Bezugnahme auf 7 steuern die empfangenen Indexbits in der Skalierungslogik 102 das Umschalten einzelner Quellenbildpixel auf einen von vier Byteausgaben aus der Skalierungslogik 102. Diese Ausgaben speisen ein Vergleichs- und Zwischenspeicherungs-Zweipegeldaten-Modul 104. Da die Skalierungsoperation allgemein eine beträchtliche Erhöhung der Auflösung von den Quellenbilddaten zu den Zielbilddaten (z. B. in der Größenordnung von 6 oder mehr) beinhaltet, ist es oft der Fall, dass jedes Quellenpixel (unter der Annahme, dass eine Pixelreplikation verwendet wird) unter der Steuerung der Indexbits 6-mal oder häufiger repliziert wird. Wie aus der nachfolgenden Beschreibung der 8 hervorgeht, ermöglicht die Redundanz von Quellenbildpixeldaten auf einer Zeile-um-Zeile-Basis außerdem, dass viele Zugriffe auf den SRAM 86 eliminiert werden.
  • Gleichzeitig werden bei dem oben beschriebenen Skalierungsvorgang Schwellenmatrixdaten 90 unter der Steuerung eines Zeilenstartzeigers, eines Aktuelle-Position-Zeigers und eines Zeilenende-Zeigers einem Schwellenfliesungslogikmodul 106 zugeführt. Darin wird die Schwellenmatrix mit einem Zielbildauflösungsankerpunkt ausgerichtet und anschließend repliziert, um eine geflieste Schwellenmatrix zu erzeugen, bei der jede Pixelposition des abschließenden Zielbildes einen entsprechend positionierten Schwellenpixelwert aufweist. Desgleichen manifestiert die Ausgabe der Skalierungslogik 102 eine Zielbildauflösung, bei der für jede Pixelposition in dem Zielbild ein Quellenbildpixel vorliegt.
  • Jedes skalierte Quellenbildpixel und ein entsprechend positionierter, gefliester Schwellenmatrixbildpixelwert wird anschließend in dem Vergleichs- und Zwischenspeicherungs-Zweipegeldaten-Modul 104 verglichen. Je nachdem, ob der Quellenpixelwert den entsprechenden Schwellenmatrixpixelwert überschreitet, gleich demselben oder geringer als derselbe ist, wird ein binäres Ausgangsbit bereitgestellt, um den Quellenpixelwert zu ersetzen. Diese binären Bits werden dem Zweipegel-Zieldatenspeicher 94 zugeführt. Der Zweipegel-Zeiger ermöglicht, dass das SRAM-Steuermodul 100 die binären Zielbits in die korrekten Zielbildpixelpositionen in dem SRAM 86 positioniert.
  • 7 veranschaulicht, dass die Erfindung sowohl eine Skalierung als auch eine Schwellenfliesung auf einer im Wesentlichen parallelen und unabhängigen Basis durchführt. Beide derartigen Aktionen werden unter der Steuerung ange legter Taktsignale synchron durchgeführt, nachdem die entsprechenden Daten in zugeordnete Eingaberegister geladen wurden. Nachdem jede Zeile des Zielbildes verarbeitet wurde, wird ferner ein RIIA (vertikal) verwendet, um anzugeben, ob, angesichts des Skalierungsfaktors des Quellenbilds, entsprechende Quellenpixel in einer nächsten Zeile identisch mit den entsprechenden Pixeln in der vorhergehenden Zeile sind. Falls angenommen wird, dass ein Skalenfaktor von 6 oder mehr verwendet wird, so sind im Durchschnitt zumindest 5 aufeinander folgende Zeilen identisch, wenn die Verwendung eines Pixelreplikationsprotokolls gegeben ist.
  • Um zu ermöglichen, dass eine Verringerung der erforderlichen Zyklen den Bildumwandlungsvorgang bewerkstelligt (siehe 8), wird das Bild zum Verarbeiten in mehrere vertikale Bänder segmentiert. Dabei wird die Tatsache ausgenutzt, dass der Skalenfaktor in der vertikalen Richtung derart ist, dass auf die Quellendaten nicht für jede folgende Zeile zugegriffen werden muss und dass dieselben für aufeinander folgende Zeilen verwendet werden können – wodurch die zugeordneten Speicherzugriffszyklen vermieden werden.
  • Unter erneuter Bezugnahme auf 6 ist der SRAM 86 (aus Kostengründen) vorzugsweise ein RAM mit einem Zugriffskanal. Die Erfindung verschachtelt Zugriffe auf den SRAM 86 seitens der verschiedenen Logikmodule (siehe 7) und erlaubt, dass eine einzelne Adresse zu dem SRAM 86 auf eine korrekte Position bei jedem Taktzyklus zeigt. Der SRAM 86 ist bei jedem Taktzyklus aktiv, während die Erfindung Daten verarbeitet.
  • Der SRAM 86 kann zu dem Zeitpunkt, zu dem ein Bild rasterisiert wird, unterteilt werden. Es gibt vier Objekte einer variablen Größe in dem SRAM 86, d. h. das Schwellenarray (das von Bild zu Bild variieren kann), das RIIA, die Quellenpixeldaten und die Zweipegel-Zieldaten. Durch Verwendung eines einzelnen SRAM 86 kann die Steuerung 100 eine Unter teilung desselben erzielen, wenn unterschiedliche Skalenfaktoren und eine konstante Schwellenmatrix gegeben sind, und kann eine äußerst effiziente Nutzung seiner Speicherkapazität erzielen. Wie in 9a gezeigt ist, weist die Steuerung 100, wenn ein kleiner Skalenfaktor vorliegt, somit beträchtlich mehr Speicherraum den Quellenbilddaten zu als den Zweipegel-Zieldaten (da die Quellenbilddaten 8 Bits pro Pixel aufweisen, wohingegen die Zweipegel-Daten ein einzelnes Bit pro Pixel aufweisen). Im Gegensatz dazu wird, wenn ein großer Skalenfaktor verwendet wird (siehe 9b), ein beträchtlich größerer Bereich des SRAM 86 zur Speicherung der RIIA-Bits und der Zweipegel-Daten zugewiesen.
  • Bevor ein spezifisches Beispiel der Erfindung beschrieben wird, wird das relative Eingabeindexarray (RIIA) beschrieben. Das RIIA ist ein äußerst effizientes Datenarray, das ein Skalieren von Quellenbildgraustufendaten zu der Auflösung der Zielbilddaten ermöglicht. Das RIIA-Format ist in 10 gezeigt und weist ein 4-Byte-Anfangsblockfeld 120 und ein Eingabeindexfeld 122 einer variablen Länge auf, das definiert, welches Quellenbildpixel bei jedem Skalierungsvorgang verwendet werden soll, um ein Quellenbild zu erzielen, das auf die Auflösung des Zielbildes skaliert ist. Für einen 600-dpi-Drucker beträgt der Eingabeindexabschnitt 122 des horizontalen RIIA 600 dpi × 8 Zoll = 4800 Bits oder 600 Bytes.
  • Der Anfangsblock 120 umfasst die folgenden Felder: Ein 8-Bit-DS-Indexfeld 124, das eine minimale Anzahl von Quellenpixeln spezifiziert, die bei jeder Suche nach einem nächsten Quellenpixel, das bei einem Herabskalierungsvorgang verwendet werden soll, vorgerückt werden sollen. Für einen Einheits- oder Hochskalierungsvorgang ist dieses Feld „0". Ein src-Überspringungsfeld 126 ist eine 16-Bit-Menge, die eine Anzahl von Pixeln angibt, die übersprungen werden sollen, um ein erstes Pixel eines Quellenbildes zu finden, das skaliert werden soll.
  • Der Eingabeindex 122 weist ein einzelnes Bit pro Spalte de Zielbildes auf. Er ist einem Quellenpixelzeiger zugeordnet, der beim Skalieren verwendet wird und der auf ein aktuelles Quellenpixel zeigt, das in einer Zielbittabelle verwendet wird. Der Quellenpixelzeiger wird auf das Pixel initialisiert, das durch src Überspringen spezifiziert wird, d. h. auf das erste Pixel, das während eines Skalierungsvorgangs durch die Vorrichtung berücksichtigt werden soll.
  • Es gibt zwei allgemeine Formen des Eingabeindex.
  • Fall der Einheit oder des Hochskalierens
  • In einem solchen Fall enthält das DS-Indexfeld 124 einen Wert von 0. Eine „0" in einer Bitposition des Eingabeindex 122 gibt an, dass das durch einen Quellenpixelzeiger angegebene Pixel in dem Zielbild verwendet werden soll. Eine „1" in einer Bitposition des Eingabeindex 122 gibt an, dass das durch (Quellenpixelzeiger +1) angegebene Pixel in dem Zielbild verwendet werden sollte und dass der Quellenpixelzeiger anschließend inkrementiert werden soll.
  • Fall des Herabskalierens
  • Dieser Fall wird spezifiziert, wenn das DS-Indexfeld 124 einen Wert zwischen 1 und 255 enthält. Das erste Quellenpixel wird als das erste Zielpixel verwendet, ungeachtet des Werts des ersten Bits des Eingabeindex 122. Für nachfolgende Einträge in dem Array gibt ein „0"-Wert an, dass das entsprechende Zielpixel das Quellenpixel sein wird, auf das durch (Quellenpixelzeiger + DS-Index) gezeigt wird. Eine „1" gibt an, dass das entsprechende Zielpixel das Quellenpixel sein wird, auf das durch (Quellenpixelzeiger + DS-Index +1) gezeigt wird. In jedem Fall wird der Quellenpixelzeiger auf das verwendete neue Quellenpixel aktualisiert.
  • Das RIIA (vertikal) funktioniert auf dieselbe Weise, jedoch werden statt Spaltenpixeln Zeilen skaliert.
  • Fachleute werden erkennen, dass die obige Beschreibung spezifische Bit- und Byte-Längen zu Beispielszwecken verwendet und dass auch andere Datenlängen verwendet werden können. Jedoch sollte der Eingabeindex 122 nie mehr als 1 Bitposition pro Spalte von Zielbildzeilendaten aufweisen.
  • Unter Bezugnahme auf 11 wird ein Beispiel der Verwendung eines RIIA (horizontal) beschrieben. Angenommen, dass die Quellenbilddaten hochskaliert werden, beträgt der Wert des DS-Index 124 0; die Anzahl von Quellenpixeln, die beim Finden eines nächsten Quellenpixels, das bei dem Ziel verwendet werden soll, vorgerückt werden sollen, beträgt 0; und src Überspringen = 0. Das erste Quellenpixel, das beim Aufbauen des Zielbildes verwendet werden soll, ist dann das erste Quellenpixel, und es sollen keine übersprungen werden.
  • Angenommen, dass die ersten vier Quellenpixel jeweils 8-Bit-Werte sind, die Graustufen von 235, 142, 228 und 250 entsprechen, ist ihre Positionierung in dem Quellenbild so, wie sie in 11 bei 130 gezeigt ist. In dem RIIA 132 liegt für jedes Byte in dem Zielbild 134 ein Eingabeindexbit vor. Unter Einhaltung der oben beschriebenen Regeln wird, wenn ein RIIA-Indexbit „0" ist, das „aktuelle" Quellenpixel in das Zielbild positioniert, und dieses Quellenpixel bleibt das aktuelle Quellenpixel. Falls das RIIA-Indexbit „1" ist, wird das „nächste" Quellenpixel in das Zielbild positioniert, und dieses nächste Pixel wird zum „aktuellen" Pixel. Bei dem in 11 gezeigten Beispiel gibt die erste 0 in dem RIIA 132 vor, dass der Quellenpixelwert von 235 in die erste Zielpixeldatenposition positioniert werden soll. Die zweite „0" in dem RIIA 132 platziert den Wert 235 gemäß den zuvor erwähnten Regeln in die Zieldaten 134, da die Position des aktuellen Quellenpixels nicht inkrementiert wurde. Der nächste „1"-Wert in dem RIIA 132 gibt an, dass der Zeiger auf das Quellenbildpixel um Eins inkrementiert werden muss und dass der Pixelwert, auf den gezeigt wird, in die nächste verfügbare Zielbildpixelposition platziert werden muss, usw., usw.
  • Der Herabskalierungsvorgang wird für Fachleute aufgrund der zuvor beschriebenen Hochskalierungsprozedur offensichtlich.
  • Eine weitere ausführliche Implementierung der Erfindung ist in 12 gezeigt, und die folgende Beschreibung betrachtet einen Fall von 8-Bit-pro-Pixel-Daten und 4 Pixeln, die gleichzeitig gehandhabt werden. Die veranschaulichte Topologie kann skaliert werden, um jegliche Datenpixellänge bei jeglicher Anzahl von parallelen Pixeln zu handhaben.
  • Bei 12 bewirkt die Steuerung 100 (6), dass vier 8-Bit-Quellenpixel in ein Bildquellenregister 200 eingefügt werden. Desgleichen bewirkt die Steuerung 100, dass mehrere RIIA-Indexbits (horizontales RIIA) in ein RII-Register 202 eingefügt werden. Ferner wird eine Zeile aus der Schwellenmatrix in dem SRAM 86 in ein Schwelleneinspeicherungsregister 204 eingefügt. Die Steuerung 100 bewerkstelligt das Schreiben von Daten in Register 200, 202 und aus dem SRAM zu Zeitpunkten, die während einer anschließenden Verarbeitung in dem System gewährleisten, dass alle Ausgangsdaten auf einen nachfolgenden Taktzyklus hin gültig sein werden. Dieser Vorgang gewährleistet, dass das gesamte System gemäß sequenziell angelegten Taktpulsen synchron betrieben werden kann. Demgemäß erfolgt das Skalieren von Quellenpixeln zu einer Zielauflösung und die Ausrichtung und das Verfliesen von Schwellenmatrixpixelwerten gleichzeitig und in einem Verriegelungsschritt mit angelegten Taktsignalen. Wenn ferner die Schwellenmatrixpixelwerte an Komparatoren 206 angelegt werden, ist gewährleistet, dass die skalierten Quellenbildpixel von dem skalierten Bildquellenregister 208 vorliegen und gültig sind.
  • Obwohl die Skalierungs- und Schwellenausrichtungsfunktionen gleichzeitig ablaufen, wird die Funktionsweise der 12 zunächst unter Bezugnahme auf das Skalieren der Quellenbildpixel und anschließend unter Bezugnahme auf die Ausrichtung und das Verfliesen der Schwellenmatrixpixelwerte beschrieben.
  • Nachdem die Steuerung 100 den Bildumwandlungsvorgang begonnen hat, bewirkt jedes an das RII-Register 202 angelegte Taktsignal, dass Indexbitwerte (in Vierergruppen) an einen Multiplexer 210 ausgegeben werden. Eine „Auswahl"-Eingabe in den Multiplexer 210 bewirkt eine Verbindung der vier Indexbits mit entsprechenden Spaltenpositionen in einer Skalenschaltlogik 212. Gleichzeitig werden vier Quellenpixel von dem Bildquellenregister 200 zu der Skalenschaltlogik 212 getaktet. Gemäß den oben beschriebenen Regeln bewirken die angelegten Indexbits, dass Jeweilige der Quellenpixel auf mehreren Ausgabeleitungen 214 erscheinen und in das skalierte Bildquellenregister 208 eingegeben werden.
  • Falls in dem Bildquellenregister 200 nicht ausreichend Quellenbytes vorliegen, ist ein SRAM-Zugriff erforderlich. Jegliche Quellenpixelrestwerte, die in dem Bildquellenregister 200 verbleiben, werden gemäß den RIIA-Indexbits in das skalierte Bildquellenregister 208 geladen. Bei dem nächsten Zyklus wird auf die zusätzlichen Quellenpixel zugegriffen, und dieselben werden in das Bildquellenregister 200 geladen.
  • Wenn angenommen wird, dass ein Skalenfaktor von 6 oder besser verwendet wird und dass die Skalierungsmethode eine Pi xelreplikation ist, so wird ein 8-Bit-Quellenpixel auf jeder der Ausgangsleitungen 214 repliziert und auf identische Weise in jede der vier Registerpositionen des skalierten Bildquellenregisters 208 eingegeben. Das nächste Taktsignal bewirkt, dass jeder dieser Quellenpixelwerte an Komparatoren 206 ausgegeben wird.
  • Gleichzeitig mit dem obigen Skalierungsvorgang folgt eine Schwellenmatrixausrichtung und ein Verfliesen. Falls die Anzahl von Schwellenmatrixpixelwerten in jeder Zeile der Schwellenmatrix gleich der Anzahl von skalierten Bildquellenpixeln in dem Register 208 ist, ist die Ausrichtungsfunktion unkompliziert. Die Ausrichtung wird bewerkstelligt, indem ein „Mode"-Signal an ein Paar von Schwellenausrichtungsschaltern 216 und 218 angelegt wird. Wenn jedoch die Anzahl von Schwellenmatrixpixelwerten in einer Zeile der Schwellenmatrix gleich der Anzahl von skalierten Quellenbildpixeln ist, werden beide Schwellenausrichtungsschalter 216 und 218 betrieben, um zu bewirken, dass die Schwellenmatrixpixelwerte durch ein Schwellenpipelineregister 220 gespült und in entsprechenden Pixelpositionen in ein Schwellenregister 222 platziert werden.
  • In dem Fall, in dem die Anzahl von Schwellenmatrixpixelwerten (d. h. = B) in einer Zeile der Schwellenmatrix nicht gleich der Anzahl (d. h. = N) von skalierten Bildquellenpixeln aus dem skalierten Bildquellenregister 208 ist, ist das Problem der Ausrichtung komplexer. Unter derartigen Bedingungen müssen Elemente aus zwei nachfolgenden Schwellenmatrixpixelzeileneingaben verwendet werden, um eine ordnungsgemäße Ausrichtung der Schwellenmatrixzeilenwerte mit den skalierten Quellenbildpixelwerten zu bewerkstelligen. Aus diesem Grund wird das Schwellenpipelineregister 220 zusätzlich zu dem Schwellenregister 222 aufgenommen. Jeder Schwellenausrichtungsschalter 216 und 218 arbeitet auf multiplexe Weise, um Schwellenmatrixpixelwerte anzuleiten, die Schwellenmatrixpixelwerte mit den skalierten Bildquellenwerten auszurichten. Man beachte, dass die Ausgaben aus dem Schwellenausrichtungsschalter 216 nicht nur dem Schwellenpipelineregister 220 zugeführt werden, sondern auch direkt dem Schwellenausrichtungsschalter 218 zugeführt werden und das Schwellenpipelineregister 220 umgehen.
  • Jeder der Schwellenausrichtungsschalter 216 und 218 wird, wie zuvor erwähnt, durch Modeneingaben von der Steuerung 100 gesteuert. Wie in den 13a13d gezeigt ist, legt die Steuerung 100 N gesonderte Modensignale gemäß der Breite B der Schwellenmatrixzeile und ihrer Beziehung zu den skalierten Bildquellendaten aus dem Register 208 an. Wie in 13a gezeigt ist, wird also der Mode O verwendet, wenn B gleich N ist (wobei N die Anzahl von Pixeln der skalierten Bildquellendaten in dem Register 208 ist). Jeder der in den 13b, 13c und 13d veranschaulichten anderen Moden ermöglicht das Schalten der aus dem SRAM ausgelesenen Schwellenpixelwerte, auf Pipeline-Art, in das Schwellenregister 222 in einer modifizierten Ausrichtung, die den Unterschied zwischen B und N berücksichtigt.
  • Das Schalten, das in jedem der Schwellenausrichtungsschalter 216 und 218 ansprechend auf verschiedene Modeneingaben erfolgt, wird unter Bezugnahme auf das in 14 gezeigte Beispiel verständlich. Angenommen, die Schwellenmatrix weist eine Breite B = 5 auf, die, wie sich herausstellt, ein am wenigsten effizienter und etwas einem „schlimmsten Fall" ähnelnder Umstand ist, in dem das System überhaupt arbeiten kann. Die jeweiligen Schwellenpixelwerte, die eine Schwellenbreite B aufweisen, werden hiernach als Bytes A, B, C, D, und E bezeichnet. 14 veranschaulicht die aufeinander folgenden Bytes von Schwellenpixelwerten nach einer Ausrichtung und Einfügung in das Schwellenregister 222. Danach werden die jeweiligen Schwellenpixelwerte in Komparatoren 206 mit den skalierten Quellenbildpixeln aus dem Register 208 verglichen.
  • 14 liefert eine Takt-um-Takt-Darstellung der Inhalte des Schwelleneinspeicherungsregisters 204, des Schwellenpi pelineregisters 220 und des Schwellenregisters 222. Während der Taktzyklen 1 und 2 legt die Steuerung 100 Mode = 0 an die Schwellenausrichtungsschalter 216 und 218 an. Folglich erfolgt eine durchgehende Pipelineverarbeitung von Schwellenmatrixpixelwerten aus dem SRAM in das Schwellenregister 220.
  • Erst am Ende einer Schwellenzeile wird eine Modenänderung ausgelöst, und in diesem Fall geht die Steuerung 100 von Mode = 0 zu Mode = 3 über. Unter derartigen Umständen (in dem Taktzyklus 3) empfängt jede Registerposition in dem Schwellenpipelineregister 210 den Wert des Schwellenpixelbytes D, und die A-, B- und C-Schwellenpixelbytes werden direkt in die drei Bytepositionen der niedrigeren Ordnung in dem Schwellenregister 222 eingegeben. Aus dem vorherigen Taktzyklus befindet sich das Schwellenpixelbyte E in der Byteposition der höchsten Ordnung. Wenn also ein nachfolgender Taktzyklus erfolgt, werden die Schwellenpixelwerte E, A, B, und C in die Komparatoren 206 geschrieben. Während des Taktzyklus 4 wird das Byte D von dem Pipelineschwellenregister 220 in das Pipelineregister 222 eingegeben, und die Bytes E, A und B werden direkt aus dem SRAM 204 geladen. Der Vorgang setzt sich während der Taktzyklen 5–8 durch die Moden 2 und 1 fort, wie gezeigt, und wiederholt sich anschließend.
  • Man beachte, dass, wenn die Schwellenmatrix gefliest ist, um mit der Zielbildauflösung zusammenzufallen, ein Versatz bei den Endbytes vorliegen kann (falls jede Schwellenzeile nicht ein ganzzahliger dezimaler Teil des Zielbildes ist). In einem solchen Fall werden die Schwellenmatrixbytewerte am Ende einer Zeile in einem SRAM „ausgefüllt", um ein gleichzeitiges Enden sowohl der Schwellenmatrixzeile als auch des Zielbildes zu gewährleisten. Beispielsweise werden während des Taktzyklus 4 die Bytes A und B verwendet, um das Wort auszufüllen, das in das Pipelineregister 222 eingegeben wird.
  • Aufgrund des Fehlens von eindeutigen Schwellenpixelwerten, die den 4 Bytes zugeordnet sind, die das letzte Byte (5.) der Schwellenpixelzeile enthalten, treten im Ergebnisstrom (d. h. Inhalte des Schwellenregisters 222) Lücken auf. Beispielsweise befinden sich am Ende des Taktzyklus 4 C-Bytes in allen Positionen in dem Schwellenpipelineregister 220. Damit ein gültiges Wort (4 Bytes) während des Taktzyklus 5 aus dem Pipelineregister 222 ausgegeben wird, sollten die zwei Bytes der höheren Ordnung C und D sein, in dem Schwellenpipelineregister 220 liegt jedoch kein D-Wert vor, der in das Pipelineregister 222 geladen werden könnte. Folglich ist das in das Pipelineregister 222 geladene Wort ungültig. Wenn das ungültige Wort an die Komparatoren 206 gesendet wird, ergeben sich ungültige Zweipegel-Daten. Jedoch hemmt die Steuerung 100 das Zwischenspeichern der Zweipegel-Ausgangsdaten in ein Zweipegel-Register 230 und hemmt ferner die Einfügung neuer skalierter Quellenpixel in das skalierte Bildquellenregister 208. Wenn ein nächstes gültiges Wort aus dem Schwellenregister 222 ausgegeben wird, beginnt die Vergleichsprozedur von neuem.
  • Wiederum ist eine Schwellenmatrix mit einer B von 5 ein am wenigsten effizienter Fall, und das Modensignal ändert sich in jedem zweiten Taktzyklus. Drei der acht Taktzyklen ergeben ungültige Daten. Wenn sich das Modensignal für andere Werte von B nicht ändert, treten bei jedem Taktzyklus aus dem Schwellenregister 222 gültige Schwellenmatrix-4-Byte-Gruppen hervor, und je länger die Schwellenzeile ist, desto größer ist die Effizienz, da sich das Modensignal lediglich an einer Zeilengrenze ändern kann. Die üblichste Schwellenmatrix beträgt 16 × 16, und eine Verwendung dieser Matrix und einer beliebigen anderen Matrix, deren B ein Vielfaches von 4 ist, führt zu einen konstanten Modensignalbetrieb.
  • Unter erneuter Bezugnahme auf 12 sprechen die Komparatoren 206 auf Ausgaben aus dem Schwellenregister 222 und dem skalierten Bildquellenregister 208 an, indem sie die jeweiligen Graustufenwerte entsprechender Bytes verglei chen. Falls der skalierte Bildquellenpixelwert größer ist als der Schwellenregisterpixelwert, wird ein 1-Bit aus dem jeweiligen Komparator ausgegeben. Unter anderen Umständen wird ein 0-Bit aus dem jeweiligen Komparator ausgegeben und in ein 32-Bit-Zweipegel-Register 230 eingegeben. Wenn das 32-Bit-Zweipegel-Register 230 voll ist, wird sein Inhalt zur Speicherung in den SRAM 86 geschrieben.
  • Das System handhabt die ungültigen Wörter, die erzeugt werden, wenn B und N nicht identisch oder exakte Vielfache voneinander sind, indem es 2 Variablen verwendet. Die erste Variable ist „Mode", was oben erörtert wurde und bestimmt, wie Schwellenpixeldaten in das Schwellenpipelineregister 220 und Schwellenregister 222 geschaltet werden. Die zweite Variable wird als „Modendelta" bezeichnet und gibt an, wie stark die Variable „Mode" zu ändern ist, wenn ein Ende einer Schwellenzeile erfahren wird und eine nächste Zeile von Schwellenpixeldaten begonnen wird. Modendelta ist gleich der Anzahl von Bytes in einem Wort gesetzt, die „übrig bleiben", nachdem ein letztes Byte in einer Schwellenzeile verarbeitet wurde. Die Modendelta-Variable wird jedes Mal, wenn eine Schwellenzeile „neu begonnen" wird, angelegt.
  • Die zuvor erwähnten Variablen ermöglichen, dass, wenn B nicht gleich N ist, eine Schwellenmatrix verwendet wird und ferner bestimmt, wann N ungültige Bytes in dem Schwellenregister 222 vorliegen. Unter Verwendung lediglich der Mode-Variable und der Modendelta-Variable ist es möglich zu wissen, wenn ein ungültiges Wort aus der in 12 gezeigten Logik erzeugt wird.
  • Wie oben angegeben wurde, ist Modendelta gleich einer Anzahl von Schwellenpixeln, die in einer Schwellenzeile verbleiben. Der maximale Wert von Mode beträgt N – 1. Wenn Modendelta am Ende einer Schwellenzeile zu Mode hinzugefügt wird und das Ergebnis N – 1 überschreitet, so ist das erste Wort (z. B. 4 Bytes), das sich in dem Schwellenregister 222 befindet, zu Beginn einer neuen Schwellenmatrixzeile, un gültig. Bei dem oben angegebenen Beispiel liegen 4 Werte von Mode vor (d. h. 0–3), und der maximale Wert von Mode beträgt 3 (d. h. 4 – 1 = 3). Die Summe von Mode und Modendelta (Modulo N) bestimmt, was ein nächster Modenwert sein wird. Wenn Modendelta z. B. 2 und Mode 3 ist, ist die Summe derselben 1 (Modulo 4), und Mode 1 ist der nächste angelegte Steuerzustand. Wenn ein Modendeltawert (d. h. = 3) zu einem aktuellen Modewert hinzugefügt wird und die Summe den Wert von 3 überschreitet, ist das Wort (4 Bytes), das aus dem Schwellenregister 222 austritt, ungültig.
  • Anhand eines Beispiels in einem Fall eines Neustarts einer Schwellenzeile wird der maximale Wert von 3 nicht überschritten, wenn der Wert von Mode 0 ist und ein Modendelta von 3 zu 0 hinzugefügt wird. Somit ist das erste Wort, das für einen Fall von Mode = 3 erzeugt wird, gültig. Wenn jedoch wiederum der Modendeltawert zu demselben hinzuaddiert wird, ist das Ergebnis 6, was den maximalen Wert überschreitet, sodass das erste Wort ungültig ist. Der Modenwert ist das Ergebnis einer Modulo-4-Funktion – also wird er 2. Jedes Mal, wenn ein Sprung zurück zu dem Start einer Schwellenzeile erfolgt, wiederholt sich dieser Vorgang.
  • Man sollte verstehen, dass die vorstehende Beschreibung die Erfindung lediglich veranschaulicht. Fachleute können verschiedene Alternativen und Modifikationen ersinnen, ohne von der Erfindung abzuweichen. Demgemäß soll die vorliegende Erfindung alle derartigen Alternativen, Modifikationen und Variationen, die in den Schutzumfang der beigefügten Patentansprüche fallen, umfassen.

Claims (7)

  1. Ein Skalierungssystem zum Umwandeln eines Quellenbildes (10) mehrerer Graustufenquellenpixel, die in einer ersten Auflösung von Zeilen und Spalten angeordnet sind, in ein Zielbild (18) binärer Zielpixel, die in einer zweiten Auflösung von Zeilen und Spalten angeordnet sind, wobei das Skalierungssystem folgende Merkmale aufweist: eine Speichereinrichtung (86) zum Speichern zumindest eines Abschnitts einer Zeile der Quellenpixel, Skalierungsdaten und eines relativen Eingabeindexarrays (RIIA) (92), das ein einzelnes Indexbit für jede Spalte des Zielbildes (18) aufweist, wobei jedes Einzelindexbit ermöglicht, dass ein Quellenpixel zum Skalieren des Quellenbildes (10) zu der zweiten Auflösung identifiziert wird; eine Skalenlogikeinrichtung (200, 212, 208), die auf jedes Einzelindexbit und die Quellenpixel anspricht, um eines der Quellenpixel in jede Spalte des Zielbildes (18) zu positionieren.
  2. Das Skalierungssystem gemäß Anspruch 1, das ferner folgendes Merkmal aufweist: eine Steuereinrichtung (100) zum Berechnen des RIIA (92) auf der Basis der Skalierungsdaten.
  3. Das Skalierungssystem gemäß Anspruch 2, bei dem jedes der Indexbits in dem RIIA (92) durch die Steuereinrichtung (100) entweder einem ersten Wert oder einem zweiten Wert zugewiesen ist, wobei das RIIA (92) fer ner einen Zeiger auf ein Quellenpixel umfasst, wobei die Skalenlogikeinrichtung (200, 212, 208) auf ein Indexbit eines ersten Werts, das einer Spalte des Zielbildes (18) zugeordnet ist, anspricht, um das eine Quellenpixel in die Spalte zu positionieren, und ferner auf ein Indexbit eines zweiten Werts, das einer Spalte des Zielbildes zugeordnet ist, anspricht, um zu bewirken, dass der Zeiger zu einem nächsten Quellenpixel inkrementiert, und um das nächste Quellenpixel in die Spalte zu positionieren.
  4. Das Skalierungssystem gemäß Anspruch 3, bei dem das RIIA (92) ferner einen Maßstabsverkleinerungsindexwert umfasst, wobei die Skalenlogikeinrichtung (200, 212, 208) auf denselben anspricht: (i) indem sie ein erstes Quellenpixel einer Quellenbildzeile als ein erstes Zielpixel in einer Zielbildzeile zuweist, und für nachfolgende Zuweisungen von Quellenpixeln zu der Zielbildzeile; (ii) indem sie auf ein Indexbit eines ersten Werts, das einer nächsten Spalte der Zielbildzeile zugeordnet ist, anspricht, um ein nächstes Quellenpixel der nächsten Spalte zuzuweisen, wobei das nächste Quellenpixel durch eine Position des ersten Quellenpixels plus den Maßstabsverkleinerungsindexwert lokalisiert ist; und (iii) indem sie ferner auf ein Indexbit eines zweiten Werts, das einer nächsten Spalte der Zielbildzeile zugeordnet ist, anspricht, um ein nächstes Quellenpixel der nächsten Spalte zuzuweisen, wobei das nächste Quellenpixel durch eine Position des ersten Quellenpixels plus den Maßstabsverkleinerungsindexwert plus Eins lokalisiert ist.
  5. Das Skalierungssystem gemäß Anspruch 4, bei dem die Skalenlogikeinrichtung (200, 212, 208) auf jede Zuweisung hin den Zeiger auf ein Quellenpixel aktualisiert, das einer Spalte des Zielbildes (18) zugewiesen ist.
  6. Das Skalierungssystem gemäß Anspruch 2, bei dem die Speichereinrichtung (86) ein Direktzugriffsspeicher (RAM) ist und die Skalenlogikeinrichtung (200, 212, 208) folgende Merkmale aufweist: ein Quellenregister (200) zum Speichern mehrerer Quellenpixelgraustufenwerte, die von dem RAM empfangen werden; ein Skalenregister (208) zum Speichern mehrerer Quellenpixelgraustufenwerte; und eine Schalteinrichtung (212) zum Verbinden des Quellenregisters (200) mit dem Skalenregister (208), die mit der Steuereinrichtung (100) gekoppelt ist, wobei die Schalteinrichtung (212) auf Indexbiteingaben, die unter der Steuerung der Steuerungseinrichtung (100) angelegt werden, anspricht, um einen Quellenpixelgraustufenwert in dem Quellenregister (200) mit einer Speicherungsposition in dem Skalenregister (208) gemäß einem Wert eines eingegebenen Indexbitwerts zu verbinden.
  7. Das Skalierungssystem gemäß Anspruch 6, bei dem der RAM durch einen 32-Bit-Bus mit dem Quellenregister (200) verbunden ist und bei dem jeder Quellenpixelgraustufenwert ein 8-Bit-Byte ist, wobei anschließende Maschinenzyklen bewirken, dass vier Quellenpixelgraustufenwertbytes parallel von dem RAM an das Quellenregister (200) transferiert werden, wobei die Schalteinrichtung (212) bei einem weiteren Maschinenzyklus wirksam ist, um auf die Indexbiteingaben anzusprechen, um die vier Quellenpixelgraustufenwertbytes in dem Quellenregister (200) gemäß Werten von eingegebenen Indexbits parallel an Speicherungspositionen in dem Skalenregister (208) zu transferieren.
DE69633716T 1996-03-04 1996-08-16 Hochgeschwindigkeitssystem zur Skalierung von Bildern Expired - Lifetime DE69633716T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/610,311 US5778158A (en) 1996-03-04 1996-03-04 High speed system for image scaling
US610311 1996-03-04

Publications (2)

Publication Number Publication Date
DE69633716D1 DE69633716D1 (de) 2004-12-02
DE69633716T2 true DE69633716T2 (de) 2005-10-27

Family

ID=24444525

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69633716T Expired - Lifetime DE69633716T2 (de) 1996-03-04 1996-08-16 Hochgeschwindigkeitssystem zur Skalierung von Bildern

Country Status (5)

Country Link
US (1) US5778158A (de)
EP (1) EP0794510B1 (de)
JP (1) JPH104496A (de)
KR (1) KR100438246B1 (de)
DE (1) DE69633716T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243174B1 (en) * 1996-10-24 2001-06-05 Seiko Epson Corporation Image processing device, color printing device, image processing method and medium recording image processing program
US5949434A (en) * 1997-03-20 1999-09-07 Charlton; Paul Method and apparatus for scaling graphic images
DE19880373D2 (de) * 1997-03-27 2000-04-27 Oce Printing Systems Gmbh Verfahren und Schaltungsanordnung zum Erzeugen von gestauchten oder gedehnten Bildern sowie Drucker mit einer derartigen Schaltungsanordnung
US6075926A (en) * 1997-04-21 2000-06-13 Hewlett-Packard Company Computerized method for improving data resolution
US6205245B1 (en) * 1998-07-28 2001-03-20 Intel Corporation Method and apparatus for rapid down-scaling of color images directly from sensor color filter array space
US6930800B1 (en) * 1998-09-09 2005-08-16 Fuji Xerox Co., Ltd. Halftone generation system and halftone generation method
JP2001169108A (ja) * 1999-12-06 2001-06-22 Brother Ind Ltd 画像形成装置
WO2003049423A2 (en) 2001-12-04 2003-06-12 Creo Inc. System and method for scaling an image
US7116821B2 (en) * 2002-03-25 2006-10-03 Lexmark International, Inc. Color trapping for an image forming apparatus
EP1351189A1 (de) * 2002-04-02 2003-10-08 Telefonaktiebolaget Lm Ericsson Bildbearbeitung
US7333238B2 (en) * 2003-03-28 2008-02-19 Hewlett-Packard Development Company, L.P. Rendering a printing device pixel map
FI115587B (fi) * 2003-12-03 2005-05-31 Nokia Corp Menetelmä ja laitteisto digitaalisen matriisikuvan alaspäin skaalaamiseksi
US7710604B2 (en) 2004-03-11 2010-05-04 Infoprint Solutions Company, Llc Method and system for providing a high quality halftoned image
JP4926568B2 (ja) * 2006-06-29 2012-05-09 キヤノン株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
JP4890974B2 (ja) * 2006-06-29 2012-03-07 キヤノン株式会社 画像処理装置、及び画像処理方法
CN112015929A (zh) * 2019-05-30 2020-12-01 阿里巴巴集团控股有限公司 栅格数据访问方法、装置、电子设备及计算机存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297289A (en) * 1989-10-31 1994-03-22 Rockwell International Corporation System which cooperatively uses a systolic array processor and auxiliary processor for pixel signal enhancement
US5329614A (en) * 1991-02-07 1994-07-12 Unisys Corporation Method and apparatus for enlarging gray scale images
EP0574245A3 (en) * 1992-06-11 1994-05-18 Ibm Method and apparatus for variable expansion and variable shrinkage of an image

Also Published As

Publication number Publication date
KR100438246B1 (ko) 2004-07-16
EP0794510A2 (de) 1997-09-10
DE69633716D1 (de) 2004-12-02
JPH104496A (ja) 1998-01-06
EP0794510B1 (de) 2004-10-27
EP0794510A3 (de) 1999-02-03
US5778158A (en) 1998-07-07
KR970066988A (ko) 1997-10-13

Similar Documents

Publication Publication Date Title
DE69635368T2 (de) Hochgeschwindigkeitssystem zur Ausrichtung und Verlegung von Schwellenmatrizen während der Erzeugung von binären Halbtonbildern
DE69633716T2 (de) Hochgeschwindigkeitssystem zur Skalierung von Bildern
DE3041502C2 (de) Verfahren zum Herstellen einer Reproduktion von einer Vorlage
DE3804938C2 (de) Bildverarbeitungseinrichtung
DE69633477T2 (de) Bildspeicher für graphische Daten
EP0038411A2 (de) Einrichtung zur Speicherung und Darstellung graphischer Information
DE3518416A1 (de) Speicher- und prozessorsystem mit schnellem zugriff zur rasteranzeige
DE4011758C2 (de)
DE3490148C2 (de) Vorrichtung zur Erzeugung unterschiedlicher Figuren in einem computergesteuerten Darstellungssystem
DE3713627C2 (de)
DE2825321A1 (de) Rasterdrucker
DE69709695T3 (de) Verfahren zur seitenzusammensetzung
EP0383398A2 (de) Verfahren zum Verkleinern eines Musters sowie Anordnung zur Durchführung des Verfahrens
EP0612181A1 (de) Verfahren und Einrichtung zur Umwandlung von Halbtonwerten in Binärwerte
EP1034511B1 (de) Verfahren zur umsetzung digitaler daten im raster einer ersten auflösung in digitale zieldaten einer zweiten auflösung
EP0539397B1 (de) Verfahren zur generierung und speicherung von digitalisierten dichte-schwellwerten zur rasterung einer halbton-bildvorlage
DE602005005365T2 (de) Verfahren und Vorrichtung zum Erzeugen von Rahmenfehlerdiffusion und Tintenmengenbegrenzung durch Schwellenwertmatrix
EP0132455A1 (de) Verfahren und Vorrichtung zur hochauflösenden Darstellung von Strichgrafiken
DE69734541T2 (de) Verfahren und Vorrichtung zum Umwandeln des Formats einer Bilddarstellung
DE19506791C1 (de) Vorrichtung zur Steigerung der Druckqualität in Hochgeschwindigkeitsdruck- und -kopiergeräten
EP0970439B1 (de) Verfahren und schaltungsanordnung zum erzeugen von gestauchten oder gedehnten bildern sowie drucker mit einer derartigen schaltungsanordnung
DE69531287T2 (de) Verbesserte speicheranordnungen
DE19853480C2 (de) Kontexterzeugungsschaltung und zugehöriges Verfahren für kleine Bildschirme
WO1998043207A1 (de) Bildbearbeitungsverfahren und schaltungsanordnung zum verändern der bildauflösung
DE19502997B4 (de) Einrichtung und Verfahren zum Verarbeiten von Zweiton-Bilddaten

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition