DE69422871T2 - Digitaler integrierter Abtastratenumwandlungsschaltkreis und Anwendung bei einer schnellen Grössenänderung eines Bildes - Google Patents

Digitaler integrierter Abtastratenumwandlungsschaltkreis und Anwendung bei einer schnellen Grössenänderung eines Bildes

Info

Publication number
DE69422871T2
DE69422871T2 DE69422871T DE69422871T DE69422871T2 DE 69422871 T2 DE69422871 T2 DE 69422871T2 DE 69422871 T DE69422871 T DE 69422871T DE 69422871 T DE69422871 T DE 69422871T DE 69422871 T2 DE69422871 T2 DE 69422871T2
Authority
DE
Germany
Prior art keywords
filter unit
data
horizontal
image
vertical
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
DE69422871T
Other languages
English (en)
Other versions
DE69422871D1 (de
Inventor
Thomas Neal Berarducci
William A. Cook
Lionel J. D'luna
Joseph Ward
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.)
Eastman Kodak Co
Original Assignee
Eastman Kodak Co
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 Eastman Kodak Co filed Critical Eastman Kodak Co
Application granted granted Critical
Publication of DE69422871D1 publication Critical patent/DE69422871D1/de
Publication of DE69422871T2 publication Critical patent/DE69422871T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

  • Die vorliegende Erfindung betrifft im Allgemeinen digitale Bildverarbeitungssysteme und insbesondere digitale Bildverarbeitungssysteme, die ein Wiederabtasten oder eine Größenänderung des Bildes durchführen.
  • Die Größenänderung oder das Wiederabtasten ist ein wichtiger Vorgang in vielen digitalen Bildverarbeitungssystemen, einschließlich Film- oder Auflicht-Scannern, Bildverarbeitungsbeschleunigern und digitalen Hard-Copy-Druckern, und wird benutzt, um die Größe eines digitalen Bildes zu vergrößern (Interpolation) oder zu verkleinern (Dezimation). Jedes Pixel eines größenveränderten Bildes wird als gewichtetes Mittel eines Bereichs von N · N benachbarten Pixeln eines Originalbildes als Ergebnis der Größenänderungsoperation berechnet. Eine Größenänderungsoperation ist daher mit Bildfilterungs- oder Bildfaltungsoperationen vergleichbar. Bei der Bildfilterung sind die ausgegebenen Pixelabtastgitter identisch, und es werden dieselben Gewichts- oder Filterkoeffizienten benutzt, um jedes Ausgangspixel zu berechnen. Bei der Bildgrößenänderung unterscheiden sich jedoch die ausgegebenen Pixelstellen von den eingegebenen Stellen, und die Gewichte werden benutzt, um jedes Ausgangspixel abhängig von der Entfernung zwischen den Ausgangspixeln und dem Eingangsabtastgitter zu berechnen, wobei die Gewichte für jedes Ausgangspixel unterschiedlich sein können.
  • Es müssen verschiedene Berechnungsarten durchgeführt werden, um ein vollständiges Bild größenmäßig verändern zu können. Hierzu zählt die Berechnung der Positionen der Ausgangsbildpixel in Bezug zu dem Eingangsabtastgitter für einen gegebenen Dezimierungs- oder Interpolationsfaktor, die Berechnung von Adressen der Filterkernkoeffizienten aus den Positionswerten und die Berechnung jedes ausgegebenen Pixelwertes anhand der Filterkoeffizienten und der Pixel im Bereich N · N. Die Durchführung einer Bildgrößenänderungsoperation auf einem PC oder einer Workstation anhand von Softwareroutinen ist daher aufgrund der großen Zahl der durch zuführenden Multiplikations- und Additionsoperationen nicht praktikabel. In digitalen Bildverarbeitungssystemen wurden daher im Allgemeinen Bildgrößenänderungsoperationen unter Verwendung spezieller Hardware durchgeführt, beispielsweise individueller integrierter Schaltungsvorrichtungen.
  • Aktuelle Hardwarelösungen zur Durchführung von Bildgrößenänderungen sind durch eine Reihe von Faktoren beschränkt, unter anderem durch die Notwendigkeit, dass eine Anzahl separater, integrierter Schaltungen (ICs) folgendes durchführen muss: 1) Berechnung von Pixelposition und Adresse; 2) Speicherung der Interpolationsfilterkoeffizienten und 3) Multiplizieren/Addieren von Eingangspixeln und Koeffizienten zur Berechnung der Ausgangspixelwerte (d. h. es wird ein Faltungs-IC benötigt). Die Verwendung mehrerer ICs erhöht die Kosten des Systems und nimmt einen vergleichsweise großen Raum auf der Leiterplatte in Anspruch. Zudem besitzen aktuell verfügbare Faltungs-ICs, die auch eine pixelweise Änderung der Filterkoeffizienten erlauben (beispielsweise der von TRW, Inc. gefertigte TMC2246 oder der von LSI Logic, Inc. gefertigte L64260), nur vier Multiplikatoren, was die Größe des Bereichs auf 4 · 4 einschränkt, der zur Berechnung der Ausgangspixel verwendbar ist. Die Begrenzung der Bereichsgröße ist ein gravierender Nachteil, da die Verwendung großer Bereiche Verfremdungsartefakte in einem Ausgabebild reduziert und ein visuell ansprechenderes Ergebnis produziert. Aktuell verfügbare Faltungs-ICs, die Bereiche oder Kerne von bis zu 9 · 9 Pixeln unterstützen (beispielsweise der von TRW, Inc. gefertigte TMC2250 oder der von LSI Logic, Inc. gefertigte L64243) erlauben keine pixelweise Auswahl der Filterkoeffizienten. Und schließlich sind die derzeit verfügbaren Faltungs-ICs nicht zur Verwendung mit Eingangsbilddatenquellen geeignet, die mehr als eine Farbkomponente eines Bildes enthalten, wie sie die beispielsweise von einem Farbfilmscanner erzeugt werden.
  • EP-A-0 093 429 beschreibt eine Vorrichtung zum Vergrößern und Verkleinern zweidimensionaler Bilder. In dieser Vorrichtung wird ein zweidimensionaler Interpolationsrechner in Form eines ROM bereitgestellt. Ein Problem besteht bei dieser Architektur darin, dass, wenn mehrere Arten von Filterung und Wiederabtastung erforderlich sind, das ROM recht groß sein müsste, um diese Mehrzahl von Funktionen zu unterstützen.
  • In US-A-4,328,426 wird ein Filter für Bildpixel beschrieben, das getrennte horizontale und vertikale Filtereinheiten mit einer Vielzahl von Abgriffelementen aufweist. Die Filterkoeffizienten werden von einem Datenbus gelesen, der mit einer externen CPU verbunden ist, und die verschiedenen Koeffizienten müssen dem Bus in Echtzeit während des Betriebs der Filtereinheiten bereitgestellt werden, was sehr zeitaufwändig ist. In dieser Schaltung sind keine Mittel zur Bildvergrößerung oder Bildverkleinerung vorgesehen.
  • Die Erfindung sieht eine anwendungsspezifische integrierte Wiederabtastschaltung (RSA) vor, die zur Durchführung mehrerer Funktionen verwendbar ist, einschließlich der Bildfilterung, der Bildwiederabtastung und der Bildkomprimierung und Bilddekomprimierung. Aus Gründen der Flexibilität unterstützt die RSA Bildinterpolation oder Bilddezimation durch jeden beliebigen Faktor und verwendet einen Bereich von bis zu 9 · 9 Pixeln, um Bilder von hoher Qualität zu erzeugen. Die RSA enthält separate vertikale und horizontale Filtereinheiten für vertikale und horizontale Größenänderungsoperationen, vertikale und horizontale Positionsakkumulatoren, eine Konfigurationsregistereinheit für das Laden der vertikalen und horizontalen Positionsakkumulatoren und eine Speicherverwaltungseinheit zur Anbindung der RSA mit einer Vielzahl von externen Speicherbänken. Die vertikalen und horizontalen Filtereinheiten enthalten vorzugsweise neun Multiplikatoren und neun entsprechende Koeffizientenspeicher, wobei jeder Speicher vorzugsweise Speicherplatz für zweiunddreißig Koeffizienten enthält. Die Koeffizienten werden pixelweise in Reaktion auf die Ausgabe der vertikalen und horizontalen Positionsakkumulatoren adressiert. Die RSA ist auf die Verarbeitung eines Eingangsdatenstroms ausgelegt, der mehrere Farbkomponenten enthält und verändert die Größe sämtlicher Farbkomponenten simultan.
  • Die Erfindung wird im folgenden anhand eines in der Zeichnung dargestellten Ausführungsbeispiels näher erläutert.
  • Es zeigen
  • Fig. 1 ein schematisches Blockdiagramm einer erfindungsgemäßen RSA;
  • Fig. 2 ein schematisches Diagramm eines Filterabgriffs zur Verwendung in den in Fig. 1 dargestellten horizontalen und vertikalen Filtereinheiten;
  • Fig. 3 die Aufteilung des Eingangspixelintervalls in Unterintervalle;
  • Fig. 4 die Ausgangspixelpositionen für eine 1,6fache Beispielinterpolation;
  • Fig. 5 ein Zeitdiagramm zur Darstellung des Betriebs der in Fig. 1 gezeigten RSA in einer Betriebsart mit neun Abgriffen und vier Speicherbänken;
  • Fig. 6 ein Zeitdiagramm zur Darstellung des Betriebs der in Fig. 1 gezeigten RSA in einer Betriebsart mit vier Abgriffen und fünf Speicherbänken;
  • Fig. 7 ein Zeitdiagramm zur Darstellung des Betriebs der in Fig. 1 gezeigten RSA in einer Kompressions-/Dekompressionsbetriebsart für eine Photo CD während der Vertikalfilterung;
  • Fig. 8 ein Zeitdiagramm zur Darstellung des Betriebs der in Fig. 1 gezeigten RSA in einer Kompressions-/Dekompressionsbetriebsart für eine Photo CD während der Vertikalfilterinterpolation;
  • Fig. 9 ein Beispiel eines Eingangsbildes;
  • Fig. 10 das Eingangsbild aus Fig. 9 nach horizontaler Filterung/Wiederabtastung;
  • Fig. 11 das in Fig. 108 gezeigte Bild nach Vertikalfilterung/Größenänderung; und
  • Fig. 12 ein Beispiel eines Kompressionsalgorithmus.
  • Fig. 1 zeigt eine erfindungsgemäße anwendungsspezifische integrierte Wiederabtastschaltung (RSA). Die RSA umfasst eine horizontale Filtereinheit 10, die mit einem Eingangskanal 11 verbunden ist, eine vertikale Filtereinheit 12, die mit einem Ausgangskanal 13 verbunden ist, eine Speicherverwaltungseinheit 14, die mit einem Speicherkanal 15 verbunden ist, eine Konfigurationsregistereinheit 16, die mit einem Konfigurationskanal 17 verbunden ist, und horizontale und vertikale Positionsakku mulatoren 18 bzw. 20, die mit den horizontalen und vertikalen Filtereinheiten 10, 12 verbunden sind, sowie die Konfigurationsregistereinheit 16. Die Ausgänge der horizontalen Filtereinheit 10 und der vertikalen Filtereinheit 12 sind ebenfalls mit einem Multiplexer (MUX) 22 verbunden, wodurch der Ausgang der vertikalen Filtereinheit 12 wahlweise an den Eingang der Speicherverwaltungseinheit 14 zurückführbar ist. Jede Komponente der integrierten Schaltung ist in einer einzigen integrierten Schaltung integriert.
  • Der Eingangskanal 11, der Ausgangskanal 13 und der Speicherkanal 15 werden zur Übertragung von Daten und Steuersignalen zwischen der integrierten Schaltung und den externen Geräten benutzt. Der Eingangskanal 11 umfasst einen Sechzehn-Bit- Eingangsdatenbus (ID), eine Eingangsdatensignalleitung (ISTRB), die die RSA belegt, um Eingangspixeldaten anzufordern, eine Eingangszeilen-Startleitung (ILS), die ein externes Gerät belegt, wenn eine vollständige Zeile von Eingangsbilddaten für das Einlesen durch die integrierte Schaltung verfügbar ist, und eine Eingangsbereitschaftsleitung (IRDY), die die integrierte Schaltung belegt, wenn sie die nächste Zeile von Eingangsbilddaten aufnehmen kann. Desgleichen umfasst der Ausgangskanal 13 einen Sechzehn-Bit-Ausgangsdatenbus (OD), eine Ausgangsdatensignalleitung (OSTRB), die die integrierte Schaltung belegt, wenn gültige Ausgangsbilddaten auf dem Ausgangsdatenbus vorhanden sind, und eine Ausgangszeilengültig- Leitung (OLV), die die integrierte Schaltung belegt, während alle Pixel für eine gegebene Zeile von Ausgangsbilddaten erzeugt werden, und die sie zwischen aufeinanderfolgenden Zeilen von Ausgangsbilddaten freigibt, eine Ausgangsbildfertig-Leitung (ODONE), die die integrierte Schaltung belegt, nachdem alle Zeilen eines Ausgangsbildes ausgegeben worden sind, und schließlich eine Ausgangs-Photo-CD- Interpolationsleitung (OPCDI), die die integrierte Schaltung belegt, um anzuzeigen, dass interpolierte Daten an den Ausgangsdatenbus OD ausgegeben werden. In dem dargestellten Ausführungsbeispiel umfasst der Speicherkanal 15 vorzugsweise einen Sechzehn-Bit-Speicheradressbus (MA), fünf separate, bidirektionale Acht-Bit-Speicherbankdatenbusse (MD0-MD4), fünf Speicher-Schreibaktivierleitungen (MWE) und fünf Speicherausgangs-Aktivierungsleitungen (OE), welche alle jeweils mit externen Speicherbänken M0-M4 verbunden sind. Der Konfigurationskanal 17 umfasst einen Zehn-Bit-Konfigurationsdatenbus (CD), der benutzt wird, um Konfigurationsdaten und Koeffizientendaten in die integrierte Schaltung zu laden, eine Konfigurationsdaten-Signalleitung (CSTRB), deren ansteigende Signalflanke vorzugsweise dazu benutzt wird, das Konfigurationsregister und die Koeffizientenspeicher zu laden (welche nachfolgend detaillierter beschrieben werden), und eine Konfigurations- /Koeffizienten-Auswahlleitung (CNFB), die auf "high" gesetzt wird, um die Konfigurationsregister zu laden, und die auf "low" gesetzt wird, um die Koeffizientenspeicher zu laden. Weitere Verbindungen mit der RSA umfassen eine Haupttaktleitung (MCLK), eine Spannungsversorgungsleitung (VDD) und eine Logikerde (GND). Die MCLK wird benutzt, um ein externes Haupttaktsignal von 33 MHz an die integrierte Schaltung anzulegen, welche wiederum das Signal benutzt, um interne Zeitsteuerungs- und externe Steuerungssignale zu erzeugen.
  • Die horizontale Filtereinheit 10 und die vertikale Filtereinheit 12 bestehen jeweils aus neun Abgriffelementen, die von 0 bis 8 nummeriert sind, sowie aus einem neunfachen Eingangsaddierer. Jedes Abgriffelement umfasst, wie in Fig. 2 gezeigt, vorzugsweise einen 8-Bit · 8-Bit Multiplizierer 30, einen 32-Wort · 8-Bit Koeffizienten- RAM-Speicher 32 für die Speicherung der Koeffizienten, Eingangs- und Ausgangsregister 34, 36 und einen Multiplexer 38 zur Auswahl der Multiplizierer-Eingangsdaten. Die Koeffizientenspeicher für alle Abgriffelemente werden durch die Konfigurationsregistereinheit 16 geladen. Für jedes Pixel wird einer von 32 Koeffizienten von den horizontalen und vertikalen Positionsakkumulatoren 18, 20 über den COEFF- SEL-Eingang ausgewählt. Für die horizontale Filtereinheit 10 wird der Dateneingangskanal von Abgriff 0 mit dem Eingangskanal der integrierten Schaltung verbunden. Der Datenausgangskanal jedes horizontalen Filterabgriffelements speist den Dateneingangskanal des nächsten Abgriffelements, wobei der Datenausgangskanal von Abgriff 8 nicht verbunden ist. Für die vertikale Filtereinheit 12 werden alle neun Dateneingangskanäle parallel mit der Speicherverwaltungseinheit 14 verbunden. In jeder Filtereinheit 10, 12 sind die neun PRODUKT-Kanäle mit einem (nicht gezeigten) 9-Eingangs-Addierer verbunden, der die Summe der neun Produkte berechnet. Der Ausgang des Addierers wird dann skaliert, auf acht Bit gerundet und im Falle der horizontalen Filtereinheit 10 an den Speicherkanal 15 der integrierten Schaltung oder im Falle der vertikalen Filtereinheit 12 an den Ausgangskanal 13 der RSA gesendet.
  • Die horizontale und vertikale Filtereinheit 10, 12 wird durch den horizontalen Positionsakkumulator 18 bzw. durch den vertikalen Positionsakkumulator 20 gesteuert. Die Positionsakkumulatoren berechnen die Position jedes Ausgangspixels oder jeder Zeile, wodurch festgelegt wird, welche Menge an Filterkoeffizienten und welche Bild daten für jede Berechnung benutzt werden. Die integrierte Schaltung teilt das Intervall zwischen Eingangspixeln (Zeilen) in 32 Unterintervalle auf, wie in Fig. 3 gezeigt. Unterintervall n' ist an Position i + n'/32 zentriert und erstreckt sich +/-1/64 Eingangspixel von seinem Mittelpunkt, wobei i der ganzzahlige Teil einer Ausgangspixelposition ist und n' ein Unterintervall- oder Unterpixelindex, wie nachfolgend detaillierter beschrieben wird. Jedes Unterintervall entspricht einer Menge von Filterkoeffizienten und einem Ort in dem Koeffizientenspeicher für jedes Filterabgriffelement.
  • Im Betrieb werden die Ausgangspixel- und Zeilenabstandswerte für einen bestimmten Betrag einer Bildgrößenänderung in den horizontalen und vertikalen Positionsakkumulator geladen. Diese Werte werden als die Anzahl von Eingangspixeln definiert, dividiert durch die Anzahl der Ausgangspixel (Zeilen). Der Ausgangspixel- oder Zeilenabstand ist daher kleiner als einer für eine Interpolationsoperation und größer als einer für eine Dezimationsoperation. Die Ausgangspixel- und Zeilenabstandswerte werden als ein 3-Bit-Integerteil und als ein 16-Bit-Bruchteil dargestellt. Die maximale Entfernung zwischen Ausgangspixeln (Zeilen) beträgt 7,99998 Eingangspixel (Zeilen). Beginnend mit Position 0,0 inkrementieren die horizontalen und vertikalen Positionsakkumulatoreinheiten um den Pixelabstand (Zeilenabstand) für jedes Pixel und halten die Position des aktuellen Ausgangspixels (Zeile). Die aktuelle Position von Ausgangspixel und Zeile werden durch einen 13-Bit-Integer-Teil dargestellt (um Eingangsbilder von bis zu 8192 · 8192 zu umfassen) und durch einen 16-Bit- Bruchteil. Für ein gegebenes Ausgangspixel entspricht der Integer-Teil der Position dem Wert i in der Bild-Wiederabtastgleichung. Er bestimmt, welche Eingangsdaten benutzt werden, um das aktuelle Ausgangspixel zu berechnen. Der Bruchteil der Ausgangsposition stellt dar, wie dicht die Ausgangslage zum Eingangsabtastgitter ist. Diese Bruchposition spezifiziert, in welches Unterintervall n' das Ausgangspixel fällt, und wird benutzt, um auszuwählen, welche Menge von Filterkoeffizienten an die umgebenden Eingangspixel angelegt wird. Der Bruchteil jeder Ausgangsposition wird auf den nächsten 1/32 Wert gerundet und mit 32 multipliziert, um die Unterintervallnummer zu erzeugen, und zwar von 0 bis 31.
  • Man betrachte als Beispiel die Eingangszeile von fünf Pixeln und die Ausgangszeile von acht Pixeln oder die Interpolation um den Faktor 1,6. Der Ausgangspixelabstand beträgt demnach 5/8 = 0,625 Eingangspixel. Fig. 4 zeigt die Positionen der Ausgangspixel, wobei zur Verdeutlichung nur 8 Unterintervalle gezeigt werden. Aus gehend von der Annahme, dass eine Interpolation mit 4 Abgriffen durchgeführt wird, wird das Ausgangspixel 02 von den Eingangspixeln 10, 11 und 13 berechnet, und der Koeffizientensatz von Unterintervall 5 (von 8). Ausgangspixel 03 wird ebenfalls aus den Eingangspixeln 10, 11 und 13 berechnet, benutzt aber die Koeffizientenmenge für Unterintervall 7 (von 8).
  • Die Funktion der Speicherverwaltungseinheit 14 besteht darin, die integrierte Schaltung mit den externen Speicherbänken (M0-M4) zur Speicherung von Zwischendaten zu verbinden und die Eingänge der vertikalen Filtereinheit 12 zu steuern. Wenn die vertikale Filtereinheit für einen Betrieb mit 4 Abgriffen konfiguriert ist, sind alle fünf Speicherbänke aktiv. Es werden nur vier Bänke benutzt, wenn die vertikale Filtereinheit 12 im Betrieb mit 9 Abgriffen konfiguriert ist. Alle fünf Speicherbänke werden ebenfalls benutzt, wenn ein Kompressions-/Dekompressionsbetrieb verwendet wird (beispielsweise ein hierarchischer oder pyramidenartiger Kompressionsalgorithmus der in US-A-4,969,204 besprochenen Art). Die Speicherverwaltungseinheit 14 verflechtet Schreibvorgänge in die externen Speicherbänke M0-M4 aus der horizontalen Filtereinheit 10 mit Lesevorgängen aus den Speicherbänken M0-M4 der vertikalen Filtereinheit 12, so dass beide Filter simultan laufen können. Die Multiplexer innerhalb der Speicherverwaltungseinheit 14 leiten Daten aus jeder Speicherbank anhand der gewählten Betriebsart der integrierten Schaltung an den entsprechenden Filterabgriff.
  • Sowohl im Bildfilterungs- als auch im Bildwiederabtastbetrieb kann die integrierte Schaltung dreifarbige, zeilenverflochtene Eingangsbilddaten aufnehmen. Wenn dieser Dreifarbenbetrieb gewählt wird, muss jedes externe SRAM groß genug sein, um drei Zeilen von jeder der drei Farbenkomponenten zu speichern, also neun horizontal wiederabgetastete/gefilterte Zeilen insgesamt.
  • Wenn die vertikale Filtereinheit 12 für einen Betrieb mit 9 Abgriffen konfiguriert wird, werden vier Speicherbänke benutzt. Jede SRAM-Speicherbank speichert drei Zeilen horizontal wiederabgetasteter/gefilterter Daten, so dass die vier Bänke gemeinsam einen 12-zeiligen zirkulären Pufferspeicher bilden. Die Bilddaten werden in Gruppen gespeichert, so dass drei aufeinanderfolgende Speicherorte dieselbe Anzahl Pixel für drei benachbarte Zeilen enthalten. Auf diese Weise wird jede Spalte von neun horizontal wiederabgetasteten/gefilterten Pixeln gelesen, indem drei Lesezyklen mit aufeinanderfolgenden Adressen durchgeführt werden, wobei jeder Lesezyklus auf drei Speicherbänke parallel zugreift. Die Speicherverwaltungseinheit 14 liest stets die neun ältesten Zeilen aus dem zirkulären Pufferspeicher ein und leitet neun Zeilen an die entsprechenden Abgriffe der vertikalen Filtereinheit 12 weiter. Zwischen jeweils drei Speicherlesevorgängen schreibt die Speicherverwaltungseinheit 14 ein horizontal gefiltertes Pixel in eine der vier Speicherbänke. Fig. 5 zeigt die zeitliche Steuerung für diese Betriebsart und den simultanen Betrieb der beiden Filter.
  • Für zwei oder drei Farbbilder werden Pixel aus den verschiedenen Farbkomponenten an Speicherorten gespeichert, die durch das Zwei- oder Dreifache der Zeilenlänge getrennt sind. Wenn das Eingangsbild aus zeilenverflochtenen RGB-Daten besteht, werden mit anderen Worten alle R Pixel aus drei Zeilen des Bildes gemeinsam gespeichert, gefolgt von allen G Pixeln derselben drei Zeilen, gefolgt von allen B Pixeln derselben Zeilen.
  • Wenn die vertikale Filtereinheit 12 für den Betrieb mit 4 Abgriffen konfiguriert ist, werden alle fünf Speicherbänke verwendet, um eine einzelne Zeile aus horizontal wiederabgetasteten/gefilterten Daten zu speichern. Die fünf Bänke bilden somit einen fünfzeiligen zirkulären Pufferspeicher. Es werden vier benachbarte Zeilen parallel aus vier der fünf Bänke gelesen und an das vertikale Filter übergeben, während die aktuelle Ausgabe des horizontalen Filters in eine der fünf Bänke geschrieben wird. Fig. 6 zeigt die zeitliche Steuerung für diese Betriebsart.
  • Je nach Ausmaß der Bildgrößenänderung und der Position der zu berechnenden Ausgangszeile sind möglicherweise nicht beide Filtereinheiten aktiv. Man betrachte beispielsweise den Fall einer 2fachen Interpolation in einem Betrieb mit vier Abgriffen. Für die 2fache Interpolation muss die vertikale Filtereinheit 12 doppelt so viele Zeilen wie die horizontale Filtereinheit 10 erzeugen. Fig. 6 zeigt den Fall, in dem sowohl die horizontale Filtereinheit 10 als auch die vertikale Filtereinheit 12 aktiv ist. Wenn die horizontale Filtereinheit 10 nicht aktiv ist, wie bei der 2fachen Interpolation, liest die vertikale Filtereinheit 12 eine Spalte von vier Pixeln bei jedem Hauptabtaktzyklus aus.
  • Wenn die RSA im Kompressions-/Dekompressionsbetrieb arbeitet, werden alle fünf Speicherbänke benutzt. Drei Bänke werden verwendet, um neun Zeilen der hori zontal wiederabgetasteten/gefilterten Daten in einer Weise ähnlich dem Betrieb mit 9 Abgriffen zu speichern. Die anderen beiden Bänke werden benutzt, um zwei Zeilen der horizontal und vertikal gefilterten Daten zu speichern, und zwar eine Zeile pro Bank. Die vertikale Filtereinheit 12 wechselt zwischen der Erzeugung gefilterter Daten und bilinear interpolierter Daten, wie nachfolgend detaillierter beschrieben wird. Bei der Filterung liest die Speicherverwaltungseinheit 14 Daten aus neun Zeilen des horizontal gefilterten Bildes aus den Bänken M0, M1 und M2 in drei Lesezyklen ein und leitet die Daten an den entsprechenden Filterabgriff weiter. Die Ausgabe der vertikalen Filtereinheit 12 wird in die Speicherverwaltungseinheit 14 geschrieben, und zwar wechselweise in die Bänke M3 und M4. Die zeitliche Steuerung erfolgt ähnlich dem Betrieb mit 9 Abgriffen und 4 Bänken, wobei vier Taktzyklen für das Lesen (3) und Schreiben (1) erforderlich sind. Die horizontale Filtereinheit 10 kann nicht aktiv sein, wenn die vertikale Filtereinheit 12 in dieser Betriebsart arbeitet, weil die Speicherverwaltungseinheit 14 derart konfiguriert ist, dass sie Daten aus der vertikalen Filtereinheit 12 schreibt. Wenn die vertikale Filtereinheit 12 interpolierte Daten erzeugt, liest die Speicherverwaltungseinheit 14 Daten aus den Bänken M3 und M4 parallel ein und leitet Daten aus Bank M3 an den Filterabgriff 0 und Daten aus Bank 4 an den Filterabgriff 2 weiter. Durch aufeinanderfolgende Lesevorgänge wird der Datenwert von Abgriff 0 nach Abgriff 1 verschoben und der Datenwert von Abgriff 2 nach Abgriff 3. Die horizontale Filtereinheit 10 kann aktiv sein, wenn die vertikale Filtereinheit 12 eine Interpolation durchführt. Die Ergebnisse der horizontalen Filtereinheit 10 werden in eine der Bänke M0, M1 oder M2 geschrieben und ersetzen die Daten von der ältesten gespeicherten Zeile. Die zeitliche Steuerung ist ähnlich der für den Betrieb mit 4 Abgriffen und 5 Bänken. Fig. 7 und 8 zeigen die zeitliche Steuerung für den Kompressions-/Dekompressionsbetrieb.
  • Die folgenden Tabellen stellen dar, wie Pixeldaten im Speicher für verschiedene Betriebsarten abgebildet werden. Die Tabellen zeigen die Abbildungen für die ersten Zeilen eines Bildes. Jede Zeile umfasst vier Pixel und zwei Farbkomponenten. Der Eintrag "p0 14 c1" stellt Pixel null dar (das erste Pixel), Zeile vier, Farbkomponente 1. Die Daten treten in die Speicherverwaltungseinheit 14 in zeilenverflochtener Farbe ein, wobei Pixel 0, 4 der Farbkomponente 0 von Pixel 0, 4 der Farbkomponente 1 einer gegebenen Zeile gefolgt wird. Die Abbildungsstrategie würde gleichermaßen gut mit pixelverflochtener Farbe arbeiten, wo Daten in der Reihenfolge p0 c0, p0 c1, p1 c0 ... p3 c0, p3 c1 eintreten.
  • Tabelle 1 zeigt die Abbildung für die ersten vier Datenzeilen in einem Betrieb mit 4 Abgriffen und 5 Bänken, wobei eine einzelne Zeile von Pixeldaten in jeder Speicherbank gespeichert wird. Würde eine dritte Farbkomponente benutzt, belegten deren Daten die Stellen 8-12. Um Daten aus Zeile 0-3 zu benutzen, werden Daten aus allen fünf Bänken parallel von Adressen 0-7 eingelesen. Die Daten von den Bänken M0-M3 werden an den entsprechenden Filterabgriff weitergegeben, und die Daten von der Bank M4 werden ignoriert. Beim Schreiben werden Daten aus der ältesten Zeile im Speicher durch die nächst ankommende Zeile ersetzt. Daten aus der Eingangszeile 5 würden die Daten aus Zeile 0 Bank M0 ersetzen, Daten aus Zeile 6 würden Daten aus Zeile 1 ersetzen und so weiter. Tabelle 1
  • Tabelle 2 zeigt die Zuordnung für die ersten zwölf Zeilen an Pixeldaten, wobei die vertikale Filtereinheit 12 in einem Betrieb mit 9 Abgriffen und 4 Bänken arbeitet. Auch hier werden zwei Farbkomponenten gezeigt. Eine dritte Farbkomponente würde die Stellen 24-35 belegen. Die Zeilen werden in Dreiergruppen gespeichert, so dass das Auslesen von drei aufeinanderfolgenden Stellen Daten aus zwölf Zeilen erzeugt (alle vier Bänke werden parallel ausgelesen). Die Daten aus den neun neuesten Zeilen werden zur Verarbeitung an den entsprechenden Filterabgriff weitergegeben. Beim Schreiben werden die Daten aus der ältesten Zeile ersetzt. Beim Einlesen der Zeilen 3-11 werden Daten von den Bänken M1, M2 und M3 an den Abgriff 0 bis 8 der vertikalen Filtereinheit 12 gerichtet, wobei Lesezyklen notwendig sind, um neun Datenbits auszulesen. Die Daten werden von den Speicherbänken folgendermaßen an die Filterabgriffe übergeben: Daten aus den Bänken M1, M2 und M3 werden im ersten Lesezyklus an Abgriff 0, 3 und 6 übergeben; Daten werden im zweiten Zyklus an Abgriff 1, 4 und 7 übergeben; und Daten werden im dritten Zyklus an Abgriff 2, 5 und 8 übergeben. Daten aus Zeile 0 in Bank M0 werden durch Daten aus Zeile 12 ersetzt. Wenn Zeile 13 geschrieben wird, werden Daten aus Zeile 4 bis 12 verarbeitet. Beim ersten der drei Lesezyklen werden Daten aus den Bänken M0, M2 und M3 an Abgriff 8, 2 und 5 übergeben, beim zweiten Zyklus werden Daten aus den Bänken 1, 2 und 3 an Abgriff 0, 3 und 6 übergeben, und beim dritten Zyklus werden Daten aus den Bänken 1, 2 und 3 an Abgriff 1, 4 und 7 übergeben. Tabelle 2
  • Tabelle 3 zeigt eine Speicherzuordnung, nachdem die ersten neun Eingangszeilen und die ersten zwei dezimierten Ausgangszeilen im Kompressions- /Dekompressionsbetrieb verarbeitet worden sind. Es werden drei Speicherbänke benutzt, um Pixeldaten von neun Zeilen des horizontal gefilterten Bildes zu speichern, wobei die gleiche Zuordnungsstrategie wie im Betrieb mit neun Abgriffen ver wendet wird. Der Unterschied besteht darin, dass nur neun Zeilen in drei Bänken gespeichert werden. Die neuen Eingangszeilen aus der horizontalen Filtereinheit 10 können nicht geschrieben werden, wenn die vertikale Filtereinheit 12 die Daten in den Bänken M0, M1 und M2 verarbeitet. Statt dessen wird die Ausgabe der vertikalen Filtereinheit 12 in eine der Bänke 3 und 4 geschrieben. Gerade Zeilen werden in Bank 3 geschrieben und ungerade Zeilen in Bank 4. Diese Daten werden dann in die vertikale Filtereinheit 12 zurückgelesen, um ein 2fach oder 4fach interpoliertes Bild mit bilinearer Interpolation zu berechnen. Beide Bänke M3 und M4 werden parallel gelesen. Daten aus Bank M3 werden an Abgriff 0 übergeben. Daten aus Bank M4 werden an Abgriff 2 übergeben. Während die vertikale Filtereinheit 12 Daten aus den Bänken M3 und M4 verarbeitet, werden neue Daten aus der horizontalen Filtereinheit 10 in eine der Bänke M0, M1 oder M2 geschrieben und ersetzen die Daten aus der ältesten derzeit im Speicher befindlichen Zeile. Tabelle 3
  • Wie zuvor beschrieben, kann die integrierte Schaltung in mindestens drei verschiedenen Betriebsarten arbeiten, unter anderem: Bildfilterung, Bildwiederabtastung und Kompression/Dekompression. Jede dieser Betriebsarten wird nachfolgend detaillierter beschrieben.
  • Im Bildfilterbetrieb führt die integrierte Schaltung eine FIR-Standardfilterung oder Faltungsoperation für ein Eingangsbild durch und erzeugt ein Ausgangsbild mit derselben Größe wie das Eingangsbild. Die beiden Filtereinheiten 10, 12 implementieren jeweils eine standardmäßige, eindimensionale Faltungsgleichung:
  • γ(n) = h(k) · (n - k + 4)
  • In dieser Gleichung stellt y(n) Ausgangspixel n dar, x(m) stellt Eingangspixel m dar und h(k) stellt die Filterkoeffiziente an Abgriff k dar. Für diese Konfigurationen werden dieselben Filterkoeffizienten benutzt, um jedes Ausgangspixel zu berechnen, daher wird nur eine der 32 Koeffizientenstellen pro Abgriff benutzt. Die integrierte Schaltung führt die horizontale Filterung für eingehende Zeilen des Eingangsbildes durch und schreibt die horizontal gefilterten Zeilen in die externen Speicher. Gruppen zu neun horizontal gefilterten Zeilen werden dann von der vertikalen Filtereinheit 12 gelesen, um eine Zeile des Ausgangsbildes zu erzeugen. Die Ausgangspixel werden von dem Ausgangskanal bei deren Berechnung ausgegeben. Im tatsächlichen Betrieb laufen die horizontalen und vertikalen Filtereinheiten 10, 12 simultan, wobei sie durch die Eingangs- und Ausgangskanalsteuersignale gedrosselt werden.
  • In dem Bildwiederabtastbetrieb erzeugt die integrierte Schaltung ein Ausgangsbild von anderer Größe als das Eingangsbild. Jedes Filter mit 9 Abgriffen in der integrierten Schaltung implementiert eine modifizierte Version der zuvor gezeigten FIR- Filtergleichung. Der Ausdruck für die Wiederabtastung mit einem Kern von 9 Abgriffen lautet:
  • γ(n) = h(k, n') · (i - k + 4)
  • Wobei y(n) das Ausgangspixel n darstellt und n, x(m) das Eingangspixel m. Diese Gleichung unterscheidet sich von der standardmäßigen Faltungsgleichung in Bezug auf die Indizierung der Eingangspixel und der Koeffizienten h(k, n'). Im Bildwiederabtastbetrieb wird die Position jedes Ausgangspixels berechnet. Der ganzzahlige Teil der Ausgangspixelposition, i, wird benutzt, um zu entscheiden, welches der neun Eingangspixel verwendet wird. Der Bruchteil der Ausgangsposition wird benutzt, um den Index n" zu berechnen, der Unterpixelindex, der 1 von 32 Koeffizientenmengen zur Beaufschlagung der Eingangspixel auswählt. Wie zuvor, wählt k eine von neun Filterabgriffen aus.
  • Wie im Filterbetrieb werden die Zeilen des Eingangsbildes zunächst horizontal wiederabgetastet und in einen der externen Speicher geschrieben. Mehrere horizontal gefilterte Zeilen werden dann von der Speicherverwaltungseinheit 14 aus den externen Speichern in die vertikale Filtereinheit 12 eingelesen, um eine Zeile des ausgegebenen, wiederabgetasteten Bildes zu erzeugen. Im Wiederabtastbetrieb sind alle neun Abgriffe der horizontalen und vertikalen Filtereinheit verwendbar. Beim Erzeugen oder Interpolieren eines Ausgangsbildes, das mehr Pixel und Zeilen als das Eingangsbild hat, ist die integrierte Schaltung derart konfigurierbar, dass sie durch Einsatz von nur vier Abgriffen der vertikalen Filtereinheit 12 und aller externen Speicher schneller läuft. Die Leistung lässt sich in dieser speziellen Betriebsart noch durch Verwendung allgemein linearer (2 Abgriffe) oder kubischer (4 Abgriffe) Interpolationskerne steigern.
  • Fig. 9-11 zeigen ein Beispiel eines Eingangsbildes, das um einen Faktor 2 in jeder Richtung interpoliert wird. Jede Eingangszeile aus Fig. 9 wird horizontal interpoliert und erzeugt die in Fig. 10 gezeigten Zwischendaten. Die vier in Fig. 10 hervorgehobenen Zeilen werden zweimal in die vertikale Filtereinheit 12 eingelesen, um die beiden hervorgehobenen Zeilen aus Fig. 11 zu erzeugen. Für jede Ausgangszeile wird ein neues n' berechnet und benutzt, um die vertikalen Filterkoeffizienten zur Berechnung aller Pixel in dieser Zeile auszuwählen.
  • Im Kompressions-/Dekompressionsbetrieb wird die RSA benutzt, um einen Teil eines Bildkompressions- und Dekompressionsalgorithmus effizient auszuführen. Fig. 12 zeigt beispielsweise einen Kompressionsalgorithmus, der aus einer Reihe von Stufen besteht, einschließlich der Bilddezimation, der bilinearen Interpolation, der Restbildberechnung und der Huffman-Codierung. Die RSA ist verwendbar, um die Bilddezimation und bilineare Interpolation des Kompressionsalgorithmus durchzuführen, während die außerhalb der RSA befindliche Schaltung den übrigen Teil des Kompressionsalgorithmus ausführt. In dem dargestellten Beispiel werden Bilder in jeder Dimension entweder mit dem Faktor 2,0 oder 4,0 dezimiert und interpoliert. Die RSA ist zudem verwendbar, um eine 2D-bilineare Interpolation in genau der gleichen Form in einem Dekompressionsbetrieb durchzuführen.
  • In dieser Betriebsart werden Zeilen des ursprünglichen Bildes in die RSA eingegeben, wo sie horizontal verkleinert und in die externen Speicherbänke geschrieben werden. Die vertikale Filtereinheit 12 liest dann die horizontal gefilterten Zeilen aus den Speicherbänken und erzeugt eine Zeile des dezimierten Bildes. Während die dezimierten Zeilen aus der RSA ausgegeben werden, werden sie auch zurück in die externen Speicher geschrieben. Zwischen der Berechnung der dezimierten Zeilen wird die vertikale Filtereinheit 12 für eine zweidimensionale, bilineare Interpolation konfiguriert. Die vertikale Filtereinheit liest zwei zuvor dezimierte Zeilen aus den Speicherbänken und berechnet 2 (oder 4) Zeilen des interpolierten Bildes, wobei jede Zeile zweimal (oder viermal) so groß wie die dezimierte Zeile ist. Alternativ berechnet die vertikale Filtereinheit 12 Zeilen des dezimierten Bildes und Zeilen des interpolierten Bildes. Diese Betriebsart liest zusammen mit der externen Schaltung Originaldaten einmal ein und erzeugt das dezimierte Bild und das Restbild. Weil in dem Sonderfall, bei dem ein Bild um einen ganzzahligen Faktor verkleinert wird, nur ein Satz von Filterkoeffizienten erforderlich ist, werden die verbleibenden Stellen in den Koeffizientenspeichern benutzt, um bilineare Interpolationskoeffizienten zu speichern.
  • Es ist anzumerken, dass die Eingangsbilddaten für das dargestellte Ausführungsbeispiel vorzugsweise ganzzahlige 8-Bit-Daten ohne Vorzeichen sind, deren Werte zwischen 0 und 255 liegen. Das Koeffizientenformat lässt sich entweder als 8-Bit-Integer ohne Vorzeichen oder als modifiziertes 8-Bit-Zweierkomplement konfigurieren. Im vorzeichenlosen Format würden sich die Koeffizienten von 0-255 erstrecken. Das modifizierte Zweierkomplement-Format ist mit der üblichen Zweierkomplement-Darstellung identisch, mit Unterschied des Wertes 10000000, der zur Darstellung einer positiven 128 benutzt wird. Der Wert 10000000 kombiniert mit der Skalierung der Filterausgabe 128 ermöglicht einem Abgriffelement, ein Pixel mit genau 1,0 zu multiplizieren, ein Wert, der üblicherweise für Interpolationskerne verwendet wird.
  • Die Abgriffelement-Multiplizierer berechnen ein 16-Bit-Produkt, welches in den zuvor besprochenen Addierer eingegeben wird. Der Addierer erzeugt vorzugsweise eine 20-Bit-Additionssumme mit voller Genauigkeit, welche dann entweder um 64 oder 128 skaliert und auf den Bereich von 0 bis 255 beschnitten wird. Der Skalierungsfaktor bestimmt gemeinsam mit dem Koeffizientenformat den effektiven Filterkoeffi zientenbereich. Tabelle 4 zeigt vier Möglichkeiten des effektiven Bereichs der Filterkoeffizienten. Tabelle 4
  • Im bevorzugten Ausführungsbeispiel umfasst die Konfigurationsregistereinheit 16 ein Betriebsartenregister, ein Ausgangspixel-/Ausgangszeilenregister, ein Eingangspixel-/Eingangszeilenregister, ein Ausgangszeilenregister und ein Eingangszeilenregister, ein Ausgangszeilen-Abstandsregister und ein Ausgangspixel-Abstandsregister. Das Betriebsartenregister umfasst: ein vertikales Filterlängenbit, das (1) auf die Verwendung von vier Abgriffen und allen fünf Speicherbänken gesetzt und (0) zur Verwendung aller neun Abgriffe mit vier Speicherbänken zurückgesetzt wird; ein Zweierkomplement-Koeffizientenbit, das auf die Verwendung von 8-Bitmodifizierten Zweierkomplementdarstellungen der Filterkoeffizienten gesetzt wird; ein Filterskalierfaktorbit, das auf die Skalierung beider Filterausgänge um einen Faktor von 64 oder sechs binären Stellen gesetzt und auf die Skalierung der Filterausgänge um einen Faktor 128 oder sieben binäre Stellen zurückgesetzt wird; ein Kompressions- /Dekompressionsbetriebsartenbit, das auf die Durchführung einer simultanen Dezimierung und bilinearen Interpolation für den Kompressions-/Dekompressionsbetrieb gesetzt und zur Durchführung von Bildfilterung und Bildwiederabtastung zurückgesetzt wird; ein Kompressions-/Dekompressions-Interpolationsfaktorbit, das zur Durchführung der Interpolation um den Faktor 4 in jeder Dimension gesetzt und zur Interpolation um den Faktor 2 zurückgesetzt wird; zwei Bits zur Definition der Anzahl der Farbkomponenten; ein Eingangssignal-Polaritätsbit, das zur Anzeige eines Eingangsdatensignals "activ high" gesetzt und zur Anzeige eines Signals "active low" zurückgesetzt wird, ein Ausgangssignal-Polaritätsbit, das zur Anzeige eines Aus gangsdatensignals "active high" gesetzt und zur Anzeige eines Signals "active low" zurückgesetzt wird. Das Ausgangspixel-/Zeilenregister enthält eine 13-Bit-Zahl, die die Anzahl der Pixel/Zeilen in dem Ausgangsbild minus eins darstellt. Das Eingangspixel-/Zeilenregister enthält eine 13-Bit-Zahl, die die Anzahl der Pixel/Zeilen im Eingangsbild minus ein darstellt. Das Ausgangszeilenregister ist ein Register, das eine 14-Bit-Zahl enthält, die die Anzahl der Zeilen in dem Ausgangsbild minus ein darstellt. Das Eingangszeilenregister enthält eine 14-Bit-Zahl, die die Anzahl der Zeilen in dem Eingangsbild minus eins darstellt. Das Ausgangszeilen-Abstandsregister enthält den Abstand zwischen Ausgangszeilen relativ zu dem Eingangszeilenabstand.
  • Das Ausgangszeilen-Abstandsregister enthält den Abstand zwischen Ausgangspixeln relativ zum Eingangspixelabstand.
  • In dem bevorzugten Ausführungsbeispiel müssen insgesamt 576 8-Bit-Filterkoeffizienten geladen werden (2 Filter · 9 Abgriffe/Filter · 32 Koeffizienten/Abgriff). Die Koeffizienten werden vorzugsweise in zuerst in die horizontale Filtereinheit 10 geladen und dann in die vertikale Filtereinheit 12 sowie von Abgriff 0 bis Abgriff 8 in jeder der Filtereinheiten. Für jeden Abgriff werden die 32 Koeffizienten von Unterintervall 0 bis 31 geladen. Die Koeffizientenspeicheradressen werden durch einen internen Adressenzähler erzeugt, der hier nicht gezeigt wird.
  • Die vorliegende Erfindung stellt eine integrierte Schaltung bereit, die in einer Reihe von elektronischen Bildverarbeitungssystemen oder -geräten verwendbar ist, einschließlich Film- oder Auflicht-Scannern, Bildverarbeitungsbeschleunigern oder digitalen Hardcopy-Druckern, um die Größe eines Originalbildes zu vergrößern oder zu verkleinern. Die Erfindung ist insbesondere zur Implementierung einer elektronischen Zoomfunktion in derartigen Systemen oder Geräten verwendbar.

Claims (8)

1. Integrierte Schaltung zur Verwendung in der digitalen Bildverarbeitung, mit
einer horizontalen Filtereinheit (10) und einer von der horizontalen Filtereinheit getrennten vertikalen Filtereinheit (12), wobei die Filtereinheiten so arbeiten, daß ein Ausgangssignal einer ersten der Filtereinheiten nachfolgend durch die zweite andere der Filtereinheiten verarbeitet wird;
einer Speicherverwaltungseinheit (14) zum Verflechten von Schreibvorgängen eines Ausgabesignals der ersten der Filtereinheiten in einen Speicher (M0- M4) mit Lesevorgängen aus dem Speicher zur zweiten anderen der Filtereinheiten;
Mitteln (14, 22) zum wahlweisen Verbinden eines Ausgangssignals der zweiten anderen der Filtereinheiten mit dem Speicher, so daß es wahlweise zurück zum Speicher und zur zweiten anderen der Filtereinheiten geführt wird;
einem mit der horizontalen Filtereinheit verbundenen Horizontalpositions- Akkumulator (18) und einem mit der vertikalen Filtereinheit verbundenen Vertikalpositions-Akkumulator (20); und
einem Dateneingabemittel zum Eingeben von Koeffizientendaten in die horizontalen und vertikalen Filtereiheiten und Konfigurationsdaten in die horizontalen und vertikalen Positions-Akkumulatoren.
2. Integrierte Schaltung nach Anspruch 1, dadurch gekennzeichnet, daß die horizontale und vertikale Filtereinheit eine Vielzahl von Abgriffelementen aufweisen.
3. Integrierte Schaltung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die horizontale und vertikale Filtereinheit eine Vielzahl von Abgriffelementen aufweisen und die jeweiligen Abgriffelemente einen Multiplikator (30) und einen Koeffizientenspeicher (32) aufweisen, der mehrere auswählbare Koeffizienten für die ausschließliche Verwendung in dem jeweiligen Abgriffelement speichert.
4. Integrierte Schaltung nach Anspruch 2 oder 3, dadurch gekennzeichnet, daß jedes Abgriffelement einen Dateneingangskanal und einen Datenausgangskanal aufweist, wobei der Dateneingangskanal des ersten Abgriffelements der horizontalen Filtereinheit mit einem Eingangskanal der integrierten Schaltung verbunden ist, und wobei der Datenausgangskanal jedes Abgriffelements in der horizontalen Filtereinheit den Dateneingangskanal des nächsten Abgriffelements speist und die Dateneingangskanäle der Abgriffelemente der vertikalen Filtereinheit parallel an die Speicherverwaltungseinheit (14) angeschlossen sind.
5. Digitalbild-Verarbeitungsverfahren mit folgenden Schritten:
Eingeben entsprechender Koeffizientendaten in eine horizontale Filtereinheit (10) und in eine von der horizontalen Filtereinheit getrennte, vertikale Filtereinheit (12), wobei die horizontale und vertikale Filtereinheit einen integrierten Schaltungsbaustein bilden;
Eingeben entsprechender Konfigurationsdaten in einen Horizontalpositions- Akkumulator (18) und in einen Vertikalpositions-Akkumulator (20);
Eingeben von Bilddaten in die horizontale Filtereinheit (10);
Eingeben von Bilddaten in die vertikale Filtereinheit (12);
in Abhängigkeit von den entsprechenden, der horizontalen Filtereinheit zugeordneten Koeffizientendaten und Konfigurationsdaten, Wiederabtasten der Eingabe-Bilddaten der horizontalen Filtereinheit und Erzeugen eines Ausgangssignals an der horizontalen Filtereinheit als eine erste Gruppe von wiederabgetasteten Bilddaten;
in Abhängigkeit von den entsprechenden, der vertikalen Filtereinheit zugeordneten Koeffizientendaten und Konfigurationsdaten, Wiederabtasten der ersten Gruppe von wiederabgetasteten Bilddaten und Erzeugen eines Ausgangssignals an der vertikalen Filtereinheit als eine zweite Gruppe von wiederabgetasteten Bilddaten; und
abwechselndes Verflechten von Lesevorgängen von Ausgangssignalen aus der horizontalen Filtereinheit in einen Speicher mit Schreibvorgängen der wiederabgetasteten Daten aus dem Speicher in die vertikale Filtereinheit.
6. Bildverarbeitungsverfahren nach Anspruch 5, gekennzeichnet durch folgende weiteren Schritte:
Bereitstellen einer Vielzahl von Abgriffelementen in der horizontalen und vertikalen Filtereinheit der integrierten Schaltung, wobei jedes Abgriffelement einen Multiplikator (30) und einen Koeffizientenspeicher (32) aufweist; und
Eingeben mehrerer auswählbarer Koeffizienten in den Koeffizientenspeicher (32) zur ausschließlichen Verwendung durch den Multiplikator (30) des jeweiligen Abgriffelements.
7. Bildverarbeitungsverfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, daß die vertikale Filtereinheit abwechselnd Zeilen eines dezimierten Bildes und Zeilen eines interpolierten Bildes berechnet.
8. Bildverarbeitungsverfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, daß in die vertikale Filtereinheit abwechselnd rezirkulierte gesampelte Daten, die vorher von der vertikalen Filtereinheit ausgegeben wurden, und gesampelte Daten, die von der horizontalen Filtereinheit ausgegeben wurden, eingebracht werden.
DE69422871T 1993-09-17 1994-09-09 Digitaler integrierter Abtastratenumwandlungsschaltkreis und Anwendung bei einer schnellen Grössenänderung eines Bildes Expired - Fee Related DE69422871T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12235093A 1993-09-17 1993-09-17

Publications (2)

Publication Number Publication Date
DE69422871D1 DE69422871D1 (de) 2000-03-09
DE69422871T2 true DE69422871T2 (de) 2000-08-17

Family

ID=22402186

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69422871T Expired - Fee Related DE69422871T2 (de) 1993-09-17 1994-09-09 Digitaler integrierter Abtastratenumwandlungsschaltkreis und Anwendung bei einer schnellen Grössenänderung eines Bildes

Country Status (4)

Country Link
US (1) US5809182A (de)
EP (1) EP0644684B1 (de)
JP (1) JP3762446B2 (de)
DE (1) DE69422871T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10241353A1 (de) * 2002-09-06 2004-04-15 Sp3D Chip Design Gmbh Verfahren und Vorrichtung zum Umwandeln eines Farbbildes

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2305052B (en) * 1995-09-08 2000-04-05 Quantel Ltd An image processing system
US6873738B2 (en) * 1995-10-02 2005-03-29 Sony Corporation Hierarchical image processor for encoding or decoding, and memory on the same chip
JPH09114443A (ja) 1995-10-20 1997-05-02 Seiko Epson Corp 映像スケーリング装置
US6339434B1 (en) * 1997-11-24 2002-01-15 Pixelworks Image scaling circuit for fixed pixed resolution display
US6380968B1 (en) 1998-01-06 2002-04-30 Intel Corporation Method and apparatus for controlling a remote video camera in a video conferencing system
EP0969443A1 (de) * 1998-06-29 2000-01-05 Sony Corporation Bilddatenverarbeitungsvorrichtung und -verfahren zum Verändern der Bildauflösung
JP2000125267A (ja) * 1998-10-13 2000-04-28 Sony Corp 補間演算装置及び方法
US7006111B1 (en) 1999-11-09 2006-02-28 Intel Corporation Digital image stitching
DE60103524T2 (de) * 2000-03-15 2005-06-30 Imax Corp., Mississauga Verbesserungen an dmd-bildanzeigevorrichtungen
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
US6697539B1 (en) 2000-03-31 2004-02-24 Sharp Laboratories Of America, Inc. Image scaling by exact 2D implicit polynomials
JP2004503809A (ja) * 2000-03-31 2004-02-05 アイマックス コーポレイション ディジタル投影装置およびその方法
AU2001253648A1 (en) 2000-04-18 2001-10-30 Imax Corporation Methods and systems for low loss separation and combination of light
US6650790B1 (en) * 2000-06-09 2003-11-18 Nothshore Laboratories, Inc. Digital processing apparatus for variable image-size enlargement with high-frequency bandwidth synthesis
US7193654B2 (en) * 2000-07-03 2007-03-20 Imax Corporation Equipment and techniques for invisible seaming of multiple projection displays
US6751006B2 (en) * 2000-07-03 2004-06-15 Imax Corporation Processing techniques for superimposing images for image projection
US6690826B2 (en) 2000-12-21 2004-02-10 Micron Technology, Inc. System and method for detecting text in mixed graphics data
KR100423503B1 (ko) * 2001-09-14 2004-03-18 삼성전자주식회사 디지털영상 처리 장치 및 방법
US7199837B2 (en) * 2001-11-13 2007-04-03 Ati Technologies, Inc. System for improved ratiometric expansion and method thereof
US20060007406A1 (en) * 2002-10-21 2006-01-12 Sean Adkins Equipment, systems and methods for control of color in projection displays
JP4109151B2 (ja) * 2003-04-23 2008-07-02 オリンパス株式会社 画像処理装置
US20050094899A1 (en) * 2003-10-29 2005-05-05 Changick Kim Adaptive image upscaling method and apparatus
US20050141784A1 (en) * 2003-12-31 2005-06-30 Ferriz Rafael M. Image scaling using an array of processing elements
US20050201640A1 (en) * 2004-03-10 2005-09-15 Wen-Kuo Lin Digital picture scaling
CN1926882B (zh) 2004-04-21 2010-10-06 松下电器产业株式会社 运动补偿装置
US7259796B2 (en) * 2004-05-07 2007-08-21 Micronas Usa, Inc. System and method for rapidly scaling and filtering video data
US20080309817A1 (en) * 2004-05-07 2008-12-18 Micronas Usa, Inc. Combined scaling, filtering, and scan conversion
US7408590B2 (en) * 2004-05-07 2008-08-05 Micronas Usa, Inc. Combined scaling, filtering, and scan conversion
US7411628B2 (en) * 2004-05-07 2008-08-12 Micronas Usa, Inc. Method and system for scaling, filtering, scan conversion, panoramic scaling, YC adjustment, and color conversion in a display controller
US8251512B2 (en) * 2004-07-08 2012-08-28 Imax Corporation Equipment and methods for the display of high resolution images using multiple projection displays
JP4824703B2 (ja) * 2005-12-19 2011-11-30 パナソニック株式会社 2次元フィルタ演算装置及び方法
US8416861B2 (en) 2007-10-14 2013-04-09 Nokia Corporation Fixed-point implementation of an adaptive image filter with high coding efficiency
WO2009050557A2 (en) * 2007-10-14 2009-04-23 Nokia Corporation Fixed-point implementation of an adaptive image filter with high coding efficiency
US20090097545A1 (en) * 2007-10-14 2009-04-16 Nokia Corporation Fixed-Point Implementation of an Adaptive Image Filter with High Coding Efficiency
US8315479B1 (en) 2008-02-26 2012-11-20 Adobe Systems Incorporated Slicing and scaling figures
US8499019B2 (en) * 2009-11-30 2013-07-30 Ross Video Limited Electronic hardware resource management in video processing
EP2631871B1 (de) * 2012-02-27 2015-07-01 ST-Ericsson SA Virtuelle Bilderzeugung
US9858636B1 (en) * 2016-06-30 2018-01-02 Apple Inc. Configurable convolution engine
US10325342B2 (en) 2017-04-27 2019-06-18 Apple Inc. Convolution engine for merging interleaved channel data
US10176551B2 (en) 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data
US10319066B2 (en) * 2017-04-27 2019-06-11 Apple Inc. Convolution engine with per-channel processing of interleaved channel data
CN112148668B (zh) * 2020-09-15 2023-03-14 浙江大华技术股份有限公司 基于片上缓存的数据保存方法及装置、存储介质
KR102680822B1 (ko) * 2023-12-21 2024-07-03 주식회사 모빌린트 데이터 재사용 기반의 리사이징 장치 및 방법

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4283765A (en) * 1978-04-14 1981-08-11 Tektronix, Inc. Graphics matrix multiplier
JPS5676683A (en) * 1979-11-28 1981-06-24 Ricoh Co Ltd Processing method for picture deformation
US4328426A (en) * 1980-08-04 1982-05-04 Xerox Corporation Filter for image pixels
US4610026A (en) * 1982-04-30 1986-09-02 Hitachi, Ltd. Method of and apparatus for enlarging/reducing two-dimensional images
US4885786A (en) * 1984-10-24 1989-12-05 International Business Machines Corporation Method for enlarging an image stored in run representation form
US4850027A (en) * 1985-07-26 1989-07-18 International Business Machines Corporation Configurable parallel pipeline image processing system
GB2181923B (en) * 1985-10-21 1989-09-20 Sony Corp Signal interpolators
US4819190A (en) * 1986-06-18 1989-04-04 The United States Of America As Represented By The Secretary Of The Navy Video line processor
US4829587A (en) * 1987-03-02 1989-05-09 Digital Equipment Corporation Fast bitonal to gray scale image scaling
DE3808668C1 (de) * 1988-03-15 1989-06-22 Nixdorf Computer Ag, 4790 Paderborn, De
JPH088661B2 (ja) * 1988-07-11 1996-01-29 三星電子株式会社 ズーム機能のためのアドレス発生回路
WO1990000780A1 (en) * 1988-07-13 1990-01-25 Analogic Corporation Apparatus for simultaneously filtering and resampling digital data
US4988984A (en) * 1988-10-31 1991-01-29 International Business Machines Corporation Image interpolator for an image display system
US5054099A (en) * 1989-02-23 1991-10-01 Nippon Telegraph And Telephone Corporation Binary image reduction method
JPH0771189B2 (ja) * 1989-05-16 1995-07-31 富士ゼロックス株式会社 画像データの変倍処理装置
US5008752A (en) * 1989-06-16 1991-04-16 Eastman Kodak Company Digital image interpolator with multiple interpolation algorithms
US5305398A (en) * 1989-10-10 1994-04-19 Unisys Corporation Method and apparatus for scaling image data
US5068905A (en) * 1989-12-28 1991-11-26 Eastman Kodak Company Scaler gate array for scaling image data
US5140648A (en) * 1989-12-28 1992-08-18 Eastman Kodak Company Scaler gate array for scaling image data
US5113455A (en) * 1990-02-27 1992-05-12 Eastman Kodak Company Digital image scaling by stepwise pixel movement
US5195050A (en) * 1990-08-20 1993-03-16 Eastman Kodak Company Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing
FR2680292B1 (fr) * 1991-08-09 1993-11-12 Sgs Thomson Microelectronics Sa Filtre bidimensionnel a reponse impulsionnelle finie.
US5325449A (en) * 1992-05-15 1994-06-28 David Sarnoff Research Center, Inc. Method for fusing images and apparatus therefor
US5437045A (en) * 1992-12-18 1995-07-25 Xerox Corporation Parallel processing with subsampling/spreading circuitry and data transfer circuitry to and from any processing unit

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10241353A1 (de) * 2002-09-06 2004-04-15 Sp3D Chip Design Gmbh Verfahren und Vorrichtung zum Umwandeln eines Farbbildes
DE10241353B4 (de) * 2002-09-06 2004-07-15 Sp3D Chip Design Gmbh Verfahren und Vorrichtung zum Umwandeln eines Farbbildes
US7643039B2 (en) 2002-09-06 2010-01-05 Koninklijke Philips Electronics N.V. Method and apparatus for converting a color image

Also Published As

Publication number Publication date
JPH07192125A (ja) 1995-07-28
US5809182A (en) 1998-09-15
JP3762446B2 (ja) 2006-04-05
EP0644684A3 (de) 1996-07-31
EP0644684B1 (de) 2000-02-02
DE69422871D1 (de) 2000-03-09
EP0644684A2 (de) 1995-03-22

Similar Documents

Publication Publication Date Title
DE69422871T2 (de) Digitaler integrierter Abtastratenumwandlungsschaltkreis und Anwendung bei einer schnellen Grössenänderung eines Bildes
DE3202365C2 (de) Datenspeicher mit Fensterabtastung
DE69723451T2 (de) Deformation eines digitalen bildes mit effizienter berechnung
DE69411771T2 (de) Vorrichtung und Verfahren zur Anzeige von Informationen aus einem grafischen Speicher und einem Videospeicher auf einem Anzeigegerät
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE3587155T2 (de) Verfahren und vorrichtung zum verdichten von bilddaten.
DE69406306T2 (de) Verfahren zur bildskalierung und zum filtern mit diskreter cosinustransformation
DE69728247T2 (de) Pyramidenförmiger pipeline-prozessor für ein bildverarbeitungssystem
DE69020724T2 (de) Schneller interpolationsfilter für fernsehnormenumsetzung.
DE69701835T2 (de) Bildverarbeitungsvorrichtung und -verfahren zum Vergrössern oder Verkleinern eines Bildes mit beliebigem Vergrösserungs- oder Verkleinerungsverhältnis
DE3177295T4 (de) Vordezimierungsfilter für Bildveränderungssystem.
DE69425847T2 (de) Rechner für die inverse diskrete Cosinus-Transformation
DE3750017T2 (de) Prozessor für orthogonale Transformation.
DE503956T1 (de) Videosignaldekompression.
DE69021164T2 (de) Programmierbarer digitaler schaltkreis zum ausführen einer matrizmultiplikation.
DE3015125A1 (de) Einrichtung zur speicherung und darstellung graphischer information
DE3852592T2 (de) Bildbehandlungsprozessor mit zeitverschachteltem Bus mit freiem Fluss.
DE69223536T2 (de) Bildverarbeitungsgerät
DE3788925T2 (de) Interpolator für Fernsehtricksystem.
EP2052550A2 (de) Bildverarbeitungsvorrichtung für farb-bilddaten und verfahren zur bildverarbeitung von farb-bilddaten
DE69221840T2 (de) Abtastratenwandlungsschaltung für Bilddaten
DE69635368T2 (de) Hochgeschwindigkeitssystem zur Ausrichtung und Verlegung von Schwellenmatrizen während der Erzeugung von binären Halbtonbildern
DE4215094C2 (de) Bildverarbeitungsverfahren und -vorrichtung
DE3888891T2 (de) Steuersystem zum Umdrehen von Seiten mit grosser Geschwindigkeit.
DE3811145C2 (de)

Legal Events

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