DE69629265T2 - Bildskalierungsverfahren und -gerät - Google Patents

Bildskalierungsverfahren und -gerät Download PDF

Info

Publication number
DE69629265T2
DE69629265T2 DE69629265T DE69629265T DE69629265T2 DE 69629265 T2 DE69629265 T2 DE 69629265T2 DE 69629265 T DE69629265 T DE 69629265T DE 69629265 T DE69629265 T DE 69629265T DE 69629265 T2 DE69629265 T2 DE 69629265T2
Authority
DE
Germany
Prior art keywords
buffer
data
vertical
horizontal
transposed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69629265T
Other languages
English (en)
Other versions
DE69629265D1 (de
Inventor
Daniel S. Oakland Rice
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69629265D1 publication Critical patent/DE69629265D1/de
Application granted granted Critical
Publication of DE69629265T2 publication Critical patent/DE69629265T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • G06T3/403Edge-driven scaling

Description

  • Die Erfindung bezieht sich auf grafisches Skalieren von Bildern. Im Besonderen bezieht sich die Erfindung auf ein Verfahren und ein System zum rückwärts Abbilden grafischer Daten mehrer Bytes auf ein Mal.
  • Skalieren grafischer Daten ist allgemein auf dem einschlägigen Gebiet der Technik gut bekannt. Zwei häufig verwendete Ansätze sind das Vorwärtsabbilden und das Rückwärtsabbilden. In einer Vorwärtsabbildung, fragt der Algorithmus für jedes Quellenpixel nach, wo es in dem Zielortbild landet. Umgekehrt, für eine Rückwärtsabbildung ist die Frage für jedes Zielortpixel, woher es von dem Quellenbild kommt. Ein Vorwärtsabbilden erfordert ein Entscheiden zwischen Pixeln, die in dem gleichen Zielort landen, während ein Rückwärtsabbilden einer bestimmten Arbeitsaufwand erfordert, um für jedes Pixel zu bestimmen, von welchem Quellenbildpixel oder -pixeln es herkam, und dann ist es nie notwendig, dass Pixel wieder zu kontrollieren.
  • Sobald in einem Rückwärtsabbildungsschema für jedes Zielortpixel festgelegt wurde, woher es aus der Quelle oder den Quellen kommt, ist es für jedes Quellenpixel notwendig, das zu dem Zielortpixel beiträgt, einen Beitragskoeffizienten von dem Quellenpixel zu bestimmen. Typischerweise werden in Fällen, in denen mehr als ein Quellenpixel beiträgt, entweder zwei oder vier Pixel erachtet einen Beitrag zu leisten. Dies entspricht einer bi-linaren, bzw. einer bi-kubischen Filterung. Die Berechnung dieser Koeffizienten ist allgemein auf dem einschlägigen Gebiet der Technik gut bekannt und obwohl rechenintensiv, muss sie nur einmal für jede Zeile und einmal für jede Spalte durchgeführt werden. Die berechneten Koeffizienten werden dann zum Zugreifen während folgender Verarbeitung in ein Feld gespeichert. Das oben beschriebene Schema wird einem erlauben, entweder bloß horizontale oder bloß vertikale Skalierung durchzuführen. Dennoch, falls es wünschenswert wäre, sowohl vertikales als auch horizontales Skalieren zugleich durchzuführen, würde es gewiss notwendig sein, einige Quadrate von Quellenpixeln auszuwählen und sie mit angemessenen Koeffizienten zu gewichten. Dieses würde eine Pixel-für-Pixel Koeffizientenberechnung und -manipulation erfordern. Durch korrekte Wahl der Filterkoeffizienten ist es möglich, Streckung in einer trennbaren Art und Weise durchzuführen, d. h. zuerst horizontale Streckung und dann vertikale oder umgekehrt. Solche Techniken sind auf dem einschlägigen Gebiet der Technik gut bekannt.
  • Koeffizienten werden ausgesucht, indem ein geometrischer Punkt, der die Mitte des Zielortpixels ist, ausgewählt wird und die Funktion, die die Punkte in der Quelle auf den Zielort abbildet, festgelegt wird, wobei eine skalierte Translation erzeugt wird, bei der der Zielort eine lineare Funktion von X und Y ist. Die Inverse der Funktion ergibt den Punkt in der Quelle, von dem die Daten kommen. Wenn der ausgesuchte Punkt nicht die Mitte des Quellenpixels ist, ist es notwendig die Quellendaten zu interpolieren, um die relativen Abstände zwischen den unterschiedlichen Quellenpixelmitten zu bestimmen und sie entsprechend zu gewichten. Demnach sind die Filterkoeffizienten eine Funktion von Teilpixelpositionen eines rückwärts abgebildeten Zielortpunktes.
  • In "Resampling Algorithms for Image Resizing and Rotation" Proc. SPIE Digital Image Processing Applications, vol. 1075, pp. 260–269, 1989, stellen Joseph Ward und David R. Lok einen Algorithmus bereit, die Teilpixelpositionen runter bis zum z. B. 1/32tel oder 1/256tel eines Pixels zu quantifizieren und stellen gebrauchsfertige Tabellen von Filtern bereit, die für ein Pixel in dem Bereich zutreffen. Jeder Bereich ist als ein "bin" bekannt. Demnach wird für jedes bin ein unterschiedlicher Filterkoeffizient festgelegt.
  • Dokument D1 offenbart ein System zum Transformieren von Bildern, das einen transponierenden Speicher enthält, der die Richtung der Abtastung der Felder ändert die innerhalb gespeichert sind. Demnach erzeugt der transponierende Speicher einen digitalen Datenstrom, der eine vertikale abgetastete Version der eingegebenen Daten darstellt.
  • Es ist relativ einfach, ein Programm in C oder einer C Variante zu schreiben, um einzelne Quellenpixel von einem Quellenbild zu lesen und sie einzeln zu skalieren. Dennoch gibt es keine einfache Art und Weise mehrfach aneinandergrenzende Pixel von Quellendaten zu bearbeiten. Mehrfache Pixel von angrenzenden Quellendaten sind weiterhin schwierig zu bearbeiten aufgrund der Tatsache, dass die Daten sehr wohl in unbekannten Formaten abgespeichert werden können. Zum Beispiel werden grafische Daten im Allgemeinen im bandverschachtelten Format abgespeichert, wo z. B. drei aufeinanderfolgende Bytes im Speicher rote, grüne und blaue Komponenten eines einzelnen Pixels darstellen. Dies erschwert den Sachverhalt, in dem es gewünscht wird, die angrenzenden Pixel im Speicher durch einen Filter zu multiplizieren, da es für einen beliebigen Abschnitt von Bilddaten nicht klar ist, ob vier Bytes vier Pixel oder 1–1/3 Pixel darstellen. Indem mehrere Bytes gleichzeitig bearbeitet werden, kann die Geschwindigkeit eines Standardskalierungsalgorithumusses gewaltig erhöht werden. Deswegen ist es wünschenswert, ein Verfahren zu entwickeln, bei dem mehrere Datenbytes gleichzeitig ohne Rücksicht auf deren Speicherformat bearbeitet werden können.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung wird ein Bildverarbeitungsverfahren bereitgestellt, wie in Anspruch 1 beansprucht. Gemäß eines weiteren Aspekts der vorliegenden Erfindung wird ein Computersystem bereitgestellt, wie in Anspruch 10 beansprucht.
  • Eine Vielzahl von Puffern wird dynamisch in dem Speicher des Computersystems erzeugt. Unter den erzeugten Puffern sind ein Horizontalabtastpuffer und zwei Vertikalabtastpuffer. Der Horizontalabtastpuffer wird mit Daten einer Vielzahl von Zeilen des Quellenbildes gefüllt. So ein Füllen kann mit mehreren Bytes zugleich vollzogen werden.
  • Der Horizontalabtastpuffer ist typischerweise 8 Bytes breit und so lang, wie die Breite der Quellenbildzeile. Grundsätzlich wird eine erste Quellenbildzeile in dem Horizontalabtastpuffer untergebracht: 8 Bytes in Zeile 0, dann werden sieben Reihen übersprungen und die nächsten 8 Bytes in die Pufferzeile 8 usw. untergebracht, bis die gesamte Quellenzeile in dem Horizontalbabtastpuffer ist. Der Prozess wird für jede folgende Quellenbildzeile, mit einem Versatz einer von seiner vorhergehenden Zeile, wiederholt, bis 8 Quellenzeilen in dem Horizontalabtastpuffer sind, z. B. wird die zweite Quellenzeile in Pufferzeilen 1, 9, 17, usw. untergebacht. Demnach sind vertikale Nachbarn in dem Quellenbild vertikale Nachbarn in dem Horizontalabtastpuffer. Die Horizontalabtastpuffer sind aus Teilpuffern zusammengesetzt, wobei jede Quelle acht Bytes von acht angrenzenden Quellenbildzeilen bildet. Jeder Teilpuffer wird Bitweise transponiert, um einen leichten Zugang zu den unterschiedlichen Kanälen der Bilddaten bereitzustellen. Die Transposition setzt die Bänder eines bandverschachtelten Formats zur leichten Verarbeitung aus.
  • Sobald die Daten transponiert sind, wird ein Filter auf die transponierten Daten angewandt, was dazu führt, dass sie in einem anderen Puffer, entweder einem Zwischenpuffer oder einem Vertikalabtastpuffer, gespeichert werden. Dennoch, wenn die Daten direkt in dem Vertikalabtastpuffer untergebracht werden, wird hier ein Transponieren erforderlich sein. Demnach wird das Transponieren vereinfacht, indem ein Zwischenpuffer benutzt wird. Die gefilterten Daten werden dann umtransponiert, um deren ursprüngliche Konfiguration anzunehmen. Die umtransponierten Daten werden in einem vorher erzeugten Vertikalabtastpuffer gespeichert. Die vorhergehenden Schritte werden wiederholt, um einen zweiten Vertikalabtastpuffer zu füllen. Nachfolgend werden, während der gesamten Verarbeitung des Quellenbildes, zwei vertikale Abtastpuffer fortlaufend gefüllt, um vertikales Filtern bei hoher Geschwin digkeit zu erlauben. Wenn Daten nicht länger in einem der Vertikalabtastpuffer zum laufenden Filtern benötigt werden, kann er mit neuen Daten, die der nächsten Gruppe vertikaler Nachbarn entsprechen, nachgefüllt werden. Es kann notwendig sein, die gefilterten Daten von 16 Bitwerten auf 8 an den Extremen festgehaltene Bitwerte zu konvertieren. Sobald die Konvertierung vollständig ist, kann das skalierte Bild auf dem Bildschirm ausgegeben oder im Speicher zur späteren Verarbeitung gespeichert werden.
  • Der Abbildungsbefehlssatz der Ultrasparc von Sun Microsystems unterstützt mehrere Befehle, die die Verarbeitung mit der beschriebenen Methode vereinfacht. Unter Verwendung des Abbildungsbefehlssatzes (VIS) werden 8 Bytes gleichzeitig gelesen oder geschrieben. Gleichermaßen erlaubt VIS Bearbeitung mit 4 Byte Operanden. Bestimmte Befehle, wie z. B. der fpmerge Befehl, erlauben einfaches Transponieren gegenüber früheren Verfahren. Durch Ausrichten der Daten in Puffern können Angelegenheiten der Ausrichtungskantenbedingungen früh in dem Skalierungsschema adressiert werden, um eine effizientere Verwendung der Verarbeitungsresourcen zu erlauben, indem Nachprüfungen und Verzweigungen in inneren Schleifen eliminiert werden. Gleichermaßen können alle formatspezifischen Angelegenheiten in einer äußeren Schleife gehandhabt werden, wobei das System das Format der Quellen und Zielortdaten kennen muss. Da horizontale und vertikale Verarbeitung getrennt durchgeführt werden können, kann Multi-Threading in einem Multiprozessorfeld leicht ausgeführt werden.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Computersystems, das die Erfindung benutzt.
  • 2a ist ein Blockdiagramm des Pufferschemas in einer Ausführungsform der Erfindung.
  • 2b ist ein Diagramm, das die Art und Weise zeigt, wie Puffer in einer Ausführungsform der Erfindung gefüllt werden.
  • 3a ist ein Teilpufferbeispiel der Erfindung und ihrer Transponierten gemäß der Erfindung.
  • 3b ist ein Diagramm einer Teilpuffertransposition in Teilen, gemäß einer Ausführungsform der Erfindung.
  • 3c ist ein Transponierungsbaum für die Hälfte eines Teilpuffers in einer Ausführungsform der Erfindung.
  • Detaillierte Beschreibung der Zeichnungen
  • Das Verfahren und die Vorrichtung zur Skalierung grafischer Bilder in einem Computer wird offenbart. In der folgenden Beschreibung werden zum Zweck der Erklärung, spezifische Anwendungen, Zahlen, Materialien und Konfigurationen dargelegt, um ein volles Verständnis der vorliegenden Erfindung bereitzustellen. Dennoch würde es einem Fachmann selbstverständlich erscheinen, dass die vorliegende Erfindung auch ohne die spezifischen Details umgesetzt werden kann. In anderen Fällen werden wohlbekannte Systeme in Form eines Schemas oder Blockdiagramms gezeigt, um die vorliegende Erfindung nicht unnötig zu verschleiern.
  • 1 zeigt ein Blockdiagramm eines Computersystems zur Verwendung in Verbindung mit der Erfindung. CPU 10 ist mit Hauptspeicher 11 und Zwischenspeicher 13 durch Bus 12 gekoppelt. Hauptspeicher 11 ist aus pufferbarem Speicher 15 und nichtpufferbarem Speicher 14 zusammengesetzt. Abtastspeicher 16 der vorliegenden Erfindung befinden sich im pufferbarem Speicher 15. Filterkoeffizientenfelder 17 befinden sich auch im pufferbaren Speicher 15. Es ist wünschenswert, dass Pufferspeicher 16 dynamisch zuteilbar sind, um die Flexibilität des Systems zu erhöhen.
  • 2a zeigt das Pufferungsschema der beispielhaften Ausführungsform der Erfindung. Ein Horizontalabtastpuffer 20, 8 Bytes breit und N Zeilen lang, wird verwendet, um 8 Zeilen von Bilddaten von dem Quellenbild entgegenzunehmen. Demnach ist N der Bytelänge einer Quellenbildzeile gleich, die größer oder gleich der Pixellänge der Quellenbildzeile sein kann. Ausrichtungsangelegenheiten und Kantenbedingungen werden behandelt, während die Daten vom Speicher in den Horizontalabtastpuffer bewegt werden. Anpassung der Kantenbedingungen und Ausrichtungsangelegenheiten wird weiter unten in vollem Umfang erklärt. Die Daten in dem Horizontalabtastpuffer werden transponiert und untergebracht, um Bänder zur Verarbeitung auszusetzen. Das Transformieren wird auch in vollem Umfang weiter unten erklärt werden. Ein Horizontalfilter 25 wird auf die transponierten Daten in dem Horizontalabtastpuffer angewandt, wobei das Ergebnis der Filterung in einem Zwischenpuffer 23 untergebracht wird, 8 Bytes breit und M Zeilen lang. M ist der Länge einer Zeile in dem Zielortbild gleich. Die Daten in dem Zwischenspeicher werden entweder in einen ersten Vertikalabtastpuffer 21 oder einen zweiten Vertikalabtastpuffer 22 umtranspo niert. Controller 24 schreibt vor, welcher Puffer die augenblicklichen Daten aus dem Zwischenpuffer 23 erhält. Ein Vertikalfilter 26 wird auf die Daten in dem Vertikalabtastpuffer 21, 22 angewandt. In einer beispielhaften Ausführungsform, bedingt die Anwendung eines Vertikalfilters 8 Bytes von jeder relevanten Zeile in dem Vertikalabtastpuffer zu nehmen. Relevante Zeilen werden von der Filterbreite vorgeschrieben, z. B. ein Filter mit der Breite 4 führt zu vier relevanten Zeilen. Parallele Multiplikationen und Additionen werden mit diesen Daten durchgeführt, um vertikalabgetastete Daten zu erhalten, die möglicherweise, wie unten erklärt, konvertiert werden müssen. VIS stellt fmul8x16 und fpadd16 bereit, die optimal zur Verwendung bei paralleler Multiplikation und Addition dieses vertikalen Filterschemas sind.
  • Das Rückwärtsabbildungsschema ist derart, dass während die Verarbeitung in dem Quellenbild absteigend fortschreitet; es auch im Quellenbild streng absteigend fortschreitet. Deshalb, sobald der Vertikalfilter 26 Daten über die des zweiten Vertikalabtastpuffers 22 hinaus benötigt, werden die Daten in dem ersten Abtastpuffer 21 nie mehr wieder kontrolliert. Deshalb kann der erste Abtastpuffer sofort mit neuen Daten nachgefüllt werden. Dies setzt voraus, dass die Filterbreite kleiner oder gleich der Anzahl der Zielortzeilen in dem Puffer ist, in diesem Beispiel acht. Während der Vertikalfilter 26 den zweiten Vertikalabtastpuffer 22 durchquert, tritt er wieder beim ersten Vertikalabtastpuffer ein, um neue Daten zu verarbeiten. Sobald der Vertikalfilter 26 die Durchquerung von dem zweiten Abtastpuffer zurück zum ersten vertikalen Abtastpuffer 21 gemacht hat, kann der vertikale Abtastpuffer 22 nachgefüllt werden. Demnach schaltet Controller 24 die von dem ersten zu dem zweiten Abtastpuffer 22 gerichteten Daten in Reaktion auf die Durchquerung des Vertikalfilters 26 von einem Puffer zu dem nächsten. Der Controller 24 schaltet dann zwischen den Vertikalabtastpuffern hin und her, sobald benötigte Daten nicht länger vorhanden sind. Für einen Fachmann ist es selbstverständlich, dass zusätzliche Puffer verwendet werden könnten, ohne von dem Schutzumfang oder der Betrachtung der Erfindung abzuweichen.
  • Da eine Anwendung des Filters nicht einen 8 Bit Wert ergeben könnte, konvertiert Konverter 27 sechzehn Ausgabebits des Vertikalfilters 26 zu einem 8 Bit Eingang für die M Byte Ausgabezeile 28. Außerdem hält der Konverter 27 die Extreme bei 0 und 255 fest. Wenn die Erfindung mit dem Ultrasparc Abbildungsbefehlssatz (VIS) verwendet wird, erfüllt der Befehl fpack diese Konvertierungsfunktion.
  • Bezeichnenderweise, weil die Horizontalabtastung und Vertikalabtastung unabhängig von einander sind, kann zusätzliche Horizontalabtastung zusammen mit der Vertikal abtastung der vorher horizontal abgetasteten Daten abgetastet werden. Es ist auch innerhalb des Schutrumfangs und der Betrachtung dieser Erfindung, zusätrliche Zwischenpuffer 23 vorzusehen, um keinen Flaschenhals beim Zwischenpuffer 23 zu erzeugen. Diese Anordnung ist ideal für Multi-Threading, da die Arbeitslast bequem auf mehrere Prozessoren verteilt werden kann. Demnach, sobald der Horizontalabtastpuffer vollständig in den Zwischenpuffer abgetastet wurde, kann er nachgefüllt werden, und die Verarbeitung kann wieder beginnen.
  • 2b zeigt ein Beispiel-Quellenbild 30 mit acht Zeilen, jede 24 Bytes lang. Horizontalabtastpuffer 20 ist gefüllt mit z. B. den ersten 8 Bytes der Zeile 31, die in Zeile 0 des Horizontalabtastpuffers 20 übergehen, Bytes 9–16 der Zeile 31, die in Zeile 8 des Horizontalabtastpuffers 20 übergehen, und Bytes 17–24, die in Zeile 16 des Horizontalabtastpuffers 20 übergehen. Gleiches gilt für Reihe 32, wobei Bytes 1–8 in Reihe 1 des Horizontalabtastpuffers 20 übergehen, Bytes 9–16 die in Zeile 9, und Bytes 17–24 die in Zeile 17 übergehen. Die restlichen Zeilen folgen dem gleichen Muster. Wenn das Quellenbild 30 aus zusätzlichen Zeilen zusammengesetzt wäre, würden sie bei einer nachfolgenden Füllung des Horizontalabtastpuffers 20 verarbeitet werden. Wenn das Beispielbild 30 Zeilen größerer Länge aufweisen würde, würde die Länge des Horizontalabtastpuffers proportional erhöht werden. Bezeichnenderweise ist die Länge des Horizontalabtastpuffers dem nächsten Vielfachen von 8 gleich, größer oder gleich der Länge der Quellenbildlinie. Zum Beispiel würde jede Linie eines Quellenbilds mit Linien zwischen 25 und 32 Bytes Länge zu einem Horizontalabtastpuffer von 32 Linien Länge führen. Jede Iteration der Verarbeitung des Horizontalabtastpuffers, bearbeitet 8 komplette Linien des Quellenbildes.
  • Kantenbedingungen sind wohl bekannt und betreffen Skalierungsalgorithmen. Grundlegend festgestellt besteht ein Problem, wenn ein Pixel von links oder das äußerste linke Pixel benötigt wird. Was wird getan? Kantenbedingungen können leicht erfüllt werden, indem der Horizontalabtastpuffer gefüllt wird. Zum Beispiel, wenn wir zwei Kantenpixel benötigen, beginnt man die Daten an der dritten Stelle jeder Zeile in dem Horizontalabtastpuffer unterzubringen. Die Eingaben in dem ersten und zweiten Byte können entweder mit Kopien der ersten eingegebenen Daten in dem dritten Byte synthetisiert werden oder z. B. mit Null. Ausrichten ist eine andere Angelegenheit die früh in dem Pufferschema adressiert werden kann. Grundsätzlich gibt es keine Garantie, dass eine Quellenbildzeile ausgerichtet mit einem Speichewort beginnt. Demnach, wo das System mehrfache Bytes wiederfindet, z. B. 8 zugleich, gibt es keine Gewissheit, dass eine Quellenzeile mit einem geraden Vielfachen von 8 beginnen wird. Demnach kann das erste Wiederfinden Daten beinhalten, die nicht inner halb des Quellenbilds sind und die der Benutzer nicht puffern will. VIS stellt die Befehle faligndata und alignaddr bereit, die es erlauben, wenn sie gemeinsam verwendet werden, dass Daten aus dem Speicher genommen und leicht in dem Horizontalabtastpuffer ausgerichtet werden, durch Verwenden eines internen Registers, des Grafikstatusregistes ("gsr"). Zum Beispiel, wenn eine Gruppe von 8 Bytes r, fünf Bytes Ausschuss gefolgt von drei Bytes gültiger Bitdaten aufweist, und eine andere Gruppe s, acht gültige Bytes enthält, setzt alignaddr (0,5) die gsr Ausrichtungsbits auf 5. Nachfolgende Verwendung des Befehls faligndata auf r und s, wird 8 Bytes gültiger Daten ergeben. Demnach, wo t die nächste gültige Gruppe von acht Bytes von Bilddaten enthält, wird faligndata (r, s) und falingdata (s, t) r5–7 s0–4 bzw. s5–7 t1–4 ergeben. Eine analoge Angelegenheit besteht beim Schreiben der Ergebnisse einer vertikalen Übergabe in einen möglicherweise nicht ausgerichteten Zielort. Der faligndata Befehl kann verwendet werden, Ausrichtungsangelegenheiten des Zielorts mit den Quellendaten zu lösen.
  • Transponieren wird innerhalb des Horizontalabtastpuffers 20 in acht Zeilenblöcken durchgeführt, z. B. werden in dem Beispiel von 2b Zeilen 0–7 transponiert, Zeilen 8 bis 15 werden transponiert und Zeilen 16 bis 23 werden transponiert. 3a zeigt eine solche Transponierung. Solche byteweise Transponierung setzt jedes Mal Daten Band für Band aus. Zum Beispiel, wenn in 3a, RGB bandverschachteltes Format vorhanden wäre, würde 0, 3, 6 dem roten Band 1, 4, und 7 dem grünen Band entsprechen, und 2 und 5 würden dem blauen Band entsprechen. Im Allgemeinen ist Transponieren ineffizient, weil jede Zeile der Ausgabe von jeder eingegebenen Zeile abhängt. Glücklicherweise beinhaltet VIS eine Funktionalität bei der zwei 4-Byteworte verbunden werden können, um eine Gruppe von 8 (Doppelwort) Bytes zu bilden. Der fpmerge Befehl auf a0 a1 a2 a3 und 0 e1 e2 e3 angewandt, ergibt a0 e0 a1 e1 a2 e2 a3 e3. 3c zeigt einen Transponierungsbaum, der die Verbindungsfunktionalität verwendet, um die Transponierung zu bewerkstelligen. Wie in 3c innerhalb eines 8 × 8 Segments gezeigt, wird jedes Wort mit einem 4 Zeilen entfernten Wort verbunden. Dies ist der Effekt einen 8 × 8 Block als zwei 4 × 8 Blöcke zu transponieren, wie in 3b gezeigt. Der Horizontalabtastpuffer kann hier unter Verwendung dieses Verfahrens transponiert werden, oder die Daten können in einem Vorpuffer untergebracht werden und in den Horizontalabtastpuffer 20 transponiert werden. Es wird erwartet, dass zukünftige Computersysteme die Funktionalität des fpmerge Befehls des VIS unterstützen werden. Entsprechend ist nicht beabsichtigt, dass dies Verfahren der Transponierung und Bildskalierung auf das Ultrasparc System beschränkt sein soll.
  • Bezeichnenderweise ist es wesentlich, dass die Daten angemessen ausgerichtet werden, bevor die Transponierung durchgeführt wird. Die Transponierung der Daten im Speicher, zieht einen Leistungsnachteil nach sich, weil, (1) Sorgfalt getroffen werden muss um ein Überschreiben der Quellenbilddaten zu verhindern, und (2) weil im Speicher keine Gewissheit über eine korrekte Ausrichtung besteht, z. B. könnte das erste Wort einer Quellenzeile an einem willkürlichen Punkt im Speicherwort beginnen, und es gibt keine Gewissheit dass folgende Quellenzeilen relativ zum Speicherwort gleich ausgerichtet sind. Das oben beschriebene Pufferungsschema ordnet die Daten angemessen, so dass jeder 8 × 8 Block für die Transponierung ausgerichtet ist.
  • Sobald die Daten transponiert wurden und horizontal in den Zwischenpuffer 23 abgetastet wurden, werden sie unter Verwendung des gleichen Transponierungsschemas in einen der Vertikalabtastpuffer 21, 22 umtransponiert. Der Fachmann wird erkennen, dass es möglich ist die vorliegenden Daten innerhalb des Zwischenpuffers 23 zu transponieren. Entsprechend wäre es möglich, den Zwischenpuffer 23 vollständig zu eliminieren und die vorliegenden Daten in einem der Vertikalabtastpuffer 21, 22 zu transponieren.
  • Wenn es gewünscht wird weniger als alle Bänder in dem Quellenbild auszudehnen, ist es möglich, das schrittweise, durch angemessenes Transponieren der Daten zu erreichen. Zum Beispiel, wenn die Daten in rotem, grünem, blauem Format sind und man nur das blaue Band auszudehnen wünscht, würde das Filtern mit Zeile 2 beginnen und Schritt bei 3 zum Füllen des Zwischenspeichers. Dieses führt zu einem Zwischenpuffer mit gültigen blauen Daten und Ausschuss in den roten und grünen Datenstellen. Eine Bitmaske kann zur Kanalauswahl beibehalten werden, um den Ausschuss davor zu bewahren in den Vertikalabtastpuffer geschrieben zu werden. Die Maske sollte zumindest acht Bit lang und ein gerades Vielfaches der Zahl der Ausgangskanäle sein. Nach jeder Anwendung wird die Maske um acht gedreht und auf die nächsten acht Zeilen des Zwischenspeichers angewandt.
  • Manchmal ist es wünschenswert die Ausgabe in ein unterschiedliches Format als das Quellenformat zu setzen. Zum Beispiel kann der Bildwiederholpuffer, der benutzt wird, um ein Bild auf dem Monitor auszugeben, von dem Format xbgr sein, während die Quelle in einem rgb Format ist. In einem solchen Fall, werden die Bänder, da sie horizontal verarbeitet werden, derart in dem Zwischenpuffer untergebracht, dass die Umtransponierung in den Vertikalabtastpuffer zu der gewünschten Ausrichtung führt. Zum Beispiel, werden rote Daten aus dem ersten Eingang in dem Horizontalabtastpuffer in den Eingang des Zwischenpuffers bewegt, der in dem vierten Schlitz des Vertikalabtastpuffers sein wird. Eine Maske wird verwendet, um z. B. die X-Zeilen des Vertikalabtastpuffers auszublenden, die nicht gültige Daten des Quellenbildes darstellen. Das VIS unterstützt Teilabspeicherungen und Kantenbefehle, die in einer beispielhaften Ausführungsform verwendet werden, um die gewünschte Ausgabeformatierung zu bewirken.
  • In der vorhergehenden Beschreibung wurde die Erfindung, mit Bezug auf besondere Ausführungsformen davon, beschrieben. Es wird dennoch offenkundig sein, dass unterschiedliche Abwandlungen dazu gemacht werden können, ohne vom Schutzumfang der Erfindung, wie in den angefügten Ansprüchen dargelegt, abzuweichen. Entsprechend sind die Beschreibung und Zeichnungen veranschaulichend zu betrachten, statt in einem einschränkenden Sinn. Demnach sollte der Schutrumfang der Erfindung nur durch die angefügten Ansprüche eingeschränkt werden.

Claims (16)

  1. Verfahren zur Bildverarbeitung, mit dem Erzeugen eines Horizontalabtastpuffers, gekennzeichnet durch: a) Erzeugen eines ersten und eines zweiten Vertikalabtastpuffers; b) Füllen des Horizontalabtastpuffers im bandverschachtelten Format mit Daten aus mehreren Zeilen eines Quellenbilds, so daß die vertikalen Nachbarzeilen im Quellenbild Nachbarn im Horizontalabtastpuffer sind; c) Transponieren der Daten, um die Daten Band für Band zu belichten; d) Anwenden eines Filters auf die transponierten Daten, was zu transponierten, horizontal gefilterten Daten führt; e) Umtransponieren der transponierten, horizontal gefilterten Daten, um horizontal gefilterte Daten zu erhalten; f) Speichern der horizontal gefilterten Daten im ersten Vertikalabtastpuffer; g) Wiederholen der Schritte b)–e) bezüglich einer nächsten Vielzahl von Reihen eines Quellenbilds, um nächste horizontal gefilterte Daten zu erhalten; h) Speichern der nächsten horizontal gefilterten Daten im zweiten Vertikalabtastpuffer und i) vertikales Filtern der horizontal gefilterten Daten und der nächsten horizontal gefilterten Daten.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Füllens die folgenden Schritte umfaßt: Stopfen des Horizontalabtastpuffers, um Kantenbedingungen zu berücksichtigen; und Ausrichten aller Daten, die im Hauptspeicher nicht ausgerichtet sind, im Horizontalabtastpuffer.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Horizontalabtastpuffer acht Byte breit ist.
  4. Verfahren nach Anspruch 3, wobei der Horizontalabtastpuffer mit jeweils acht Byte gefüllt wird und jeweils aufeinander folgende acht Byte einer Quellenbildreihe um acht Reihen im Horizontalabtastpuffer verschoben werden.
  5. Verfahren nach Anspruch 4, wobei jeweils acht Reihen ein Teilpuffer sind und die Anzahl der Teilpuffer gleich der Anzahl von Byte in einer Quellenbildreihe dividiert durch acht ist.
  6. Verfahren nach Anspruch 5, wobei jeder Teilpuffer unabhängig von jedem anderen Teilpuffer transponiert wird.
  7. Verfahren nach Anspruch 1, wobei der Schritt des Umtransponierens der Daten die folgendes Schritte umfaßt Erzeugen eines Zwischenpuffers; Speichern der transponierten, horizontal gefilterten Daten im Zwischenpuffer; und Transponieren des Zwischenpuffers in einen Vertikalabtastpuffer.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Schritt des Füllens mit jeweils acht Byte erfolgt.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei für alle Filterungen eine Filterbreite von höchstens acht verwendet wird.
  10. Computersystem, das folgendes umfaßt: einen Prozessor (10); einen Hauptspeicher (11); einen Bus (12), der den Prozessor mit dem Hauptspeicher (11) koppelt; einen dynamisch bemessenen Horizontalabtastpuffer (20), der sich im Speicher (11) befindet und dazu ausgelegt ist, während der Horizontalverarbeitung Bilddaten zu puffern; dadurch gekennzeichnet, daß während der horizontalen Verarbeitung der Horizontalabtastpuffer (20) mit Daten im bandverschachtelten Format von mehreren Reihen eines Quellenbilds gefüllt wird, so daß vertikal benachbarte Datenreihen in dem Quellenbild Nachbarn im Horizontalabtastpuffer sind; die Daten transponiert werden, um die Daten Band für Band zu belichten; ein Horizontalfilter (25) auf die transponierten Daten angewendet wird, was zu transponierten, horizontal gefilterten Daten führt; die transponierten, horizontal gefilterten Daten um transponiert werden, um horizontal gefilterte Daten zu erhalten, und daß ein Paar dynamisch bemessener Vertikalabtastpuffer (21, 22) sich im Speicher befindet, um abwechselnd die umtransponierten, horizontal verarbeiteten Daten zu puffern und die Daten durch einen Vertikalfilter (26) vertikal zu filtern.
  11. Computersystem nach Anspruch 10, weiterhin mit einem Cache-Speicher (13) der über den Bus (12) mit dem Prozessor (10) und dem Speicher (11) gekoppelt ist, wobei sich der Horizontalabtastspeicher (20) und die Vertikalabtastspeicher (21, 22) in einem cachebaren Teil (15) des Hauptspeichers (11) befinden.
  12. Computersystem nach Anspruch 11, wobei der Horizontalabtastpuffer (20) acht Byte breit ist und seine Länge gleich der Länge einer Quellenbildreihe ist und die Vertikalabtastpuffer (21, 22) jeweils acht Byte breit und von der Länge her einer Bezeichnungsbildreihe gleich sind.
  13. Computersystem nach einem der Ansprüche 10 bis 12, weiterhin mit einem Zwischenpuffer (23), der sich im Speicher (11) befindet und eine Abmessung aufweist, die gleich der eines Vertikalabtastpuffers (21, 22) ist.
  14. Computersystem nach einem der Ansprüche 10 bis 13, wobei der Prozessor (10) eine Verbindungs- und eine Packfunktion unterstützt.
  15. Computersystem nach einem der Ansprüche 10 bis 14, wobei der Prozessor (10) Lese- und Schreibvorgänge mit jeweils acht Byte durchführt.
  16. Computersystem nach Anspruch 15, wobei der Prozessor (10) Operationen mit Vier-Byte-Operanden durchführt.
DE69629265T 1995-11-07 1996-11-06 Bildskalierungsverfahren und -gerät Expired - Fee Related DE69629265T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/554,858 US5867608A (en) 1995-11-07 1995-11-07 Method and apparatus for scaling images
US554858 1995-11-07

Publications (2)

Publication Number Publication Date
DE69629265D1 DE69629265D1 (de) 2003-09-04
DE69629265T2 true DE69629265T2 (de) 2004-05-27

Family

ID=24214982

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69629265T Expired - Fee Related DE69629265T2 (de) 1995-11-07 1996-11-06 Bildskalierungsverfahren und -gerät

Country Status (5)

Country Link
US (1) US5867608A (de)
EP (1) EP0773512B1 (de)
CA (1) CA2189620A1 (de)
DE (1) DE69629265T2 (de)
SG (1) SG75105A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6290572B1 (en) 2000-03-23 2001-09-18 Micron Technology, Inc. Devices and methods for in-situ control of mechanical or chemical-mechanical planarization of microelectronic-device substrate assemblies
US6690826B2 (en) 2000-12-21 2004-02-10 Micron Technology, Inc. System and method for detecting text in mixed graphics data
US6993207B1 (en) * 2001-10-05 2006-01-31 Micron Technology, Inc. Method and apparatus for electronic image processing
US6765622B2 (en) * 2001-10-26 2004-07-20 Koninklijke Philips Electronics N.V. Line-buffer reuse in vertical pixel-processing arrangement
JP4519082B2 (ja) * 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
JP4669482B2 (ja) * 2006-09-29 2011-04-13 セイコーエプソン株式会社 表示装置、画像処理方法並びに電子機器
JP4706638B2 (ja) * 2006-09-29 2011-06-22 セイコーエプソン株式会社 表示装置、画像処理方法並びに電子機器
US8315479B1 (en) 2008-02-26 2012-11-20 Adobe Systems Incorporated Slicing and scaling figures
US20110314253A1 (en) * 2010-06-22 2011-12-22 Jacob Yaakov Jeffrey Allan Alon System, data structure, and method for transposing multi-dimensional data to switch between vertical and horizontal filters
KR102114233B1 (ko) 2013-12-13 2020-05-25 삼성전자 주식회사 영상 처리 장치

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1071592B (it) * 1977-03-09 1985-04-10 Olivetti & Co Spa Metodo ed apparecchiatura di registrazione in memoria e visualizzazione di immagini
DE3177299D1 (de) * 1980-04-11 1993-04-15 Ampex Bildverarbeitungssystem fuer raeumliche bildtransformation.
US4472732A (en) * 1981-04-10 1984-09-18 Ampex Corporation System for spatially transforming images
CA1252902A (en) * 1985-10-31 1989-04-18 David R. Pruett Method for rotating a binary image
US4783834A (en) * 1987-02-20 1988-11-08 International Business Machines Corporation System for creating transposed image data from a run end or run length representation of an image
US5020115A (en) * 1989-07-10 1991-05-28 Imnet Corporation Methods and apparatus for dynamically scaling images
US5095374A (en) * 1989-10-10 1992-03-10 Unisys Corporation Method and apparatus for lossless compression and decompression of image data
US5412483A (en) * 1993-12-16 1995-05-02 Xerox Corporation Apparatus and method for managing storage of print-related information in a print file
US5487146A (en) * 1994-03-08 1996-01-23 Texas Instruments Incorporated Plural memory access address generation employing guide table entries forming linked list
US5587742A (en) * 1995-08-25 1996-12-24 Panasonic Technologies, Inc. Flexible parallel processing architecture for video resizing

Also Published As

Publication number Publication date
SG75105A1 (en) 2000-09-19
US5867608A (en) 1999-02-02
EP0773512A2 (de) 1997-05-14
EP0773512B1 (de) 2003-07-30
DE69629265D1 (de) 2003-09-04
EP0773512A3 (de) 1997-12-10
CA2189620A1 (en) 1997-05-08

Similar Documents

Publication Publication Date Title
EP1227444B1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE69728247T2 (de) Pyramidenförmiger pipeline-prozessor für ein bildverarbeitungssystem
DE69724512T2 (de) Texturabbildungssystem -medium und -verfahren
DE3407983C2 (de) Mehrprozessorrechnersystem zum Erzeugen von Bildpunktinformationen aus in einer hierarchischen Datenstruktur definierten Objektelementen
DE4133460C2 (de) Verfahren zum Verdichten von Bildern
DE102006038646B4 (de) Bildverarbeitungsvorrichtung für Farb-Bilddaten
DE3419063C2 (de)
DE3625390A1 (de) Graphisches anzeigesystem mit beliebiger rberlappung von bildausschnitten
DE3338345C2 (de)
DE102011056970A1 (de) Rasterausgabe von rotierten, interpolierten Pixeln, die für digitale Bildstabilisierung optimiert ist
DE10101073B4 (de) Bildaufbereitungsvorrichtung mit niedrigeren Speicherkapazitätsanforderungen und Verfahren dafür
DE112005003265T5 (de) Registerdateibereiche für ein Verarbeitungssystem
DE69629265T2 (de) Bildskalierungsverfahren und -gerät
DE69631718T2 (de) Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen
DE19806985B4 (de) Organisationsverfahren für volumetrische Daten, das effiziente Cache-Aufbereitungsbeschleunigungen und einen effizienten Graphik-Hardwareentwurf ermöglicht
DE69737699T2 (de) Gerät und verfahren zur fft-berechnung
DE69633716T2 (de) Hochgeschwindigkeitssystem zur Skalierung von Bildern
DE69635368T2 (de) Hochgeschwindigkeitssystem zur Ausrichtung und Verlegung von Schwellenmatrizen während der Erzeugung von binären Halbtonbildern
DE69633963T2 (de) Apparat zum editieren von bildern
EP0625762A1 (de) Verfahren zum Entzerren von Röntgenaufnahmen und Anordnung zur Durchführung des Verfahrens
DE3508606C2 (de)
DE19601564A1 (de) Digitale Bildinterpolationsvorrichtung mit einer Vielzahl von Interpolationskernen
EP1034511B1 (de) Verfahren zur umsetzung digitaler daten im raster einer ersten auflösung in digitale zieldaten einer zweiten auflösung
DE60306388T2 (de) Verfahren und vorrichtung zur bilddatenverarbeitung unter verwendung von bildstreifen und zirkularadressierungsanordnung
DE60211210T2 (de) Vorrichtung und verfahren zur bildskalierung

Legal Events

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