DE3632639A1 - Einrichtung zum verarbeiten von bilddaten durch faltung - Google Patents

Einrichtung zum verarbeiten von bilddaten durch faltung

Info

Publication number
DE3632639A1
DE3632639A1 DE19863632639 DE3632639A DE3632639A1 DE 3632639 A1 DE3632639 A1 DE 3632639A1 DE 19863632639 DE19863632639 DE 19863632639 DE 3632639 A DE3632639 A DE 3632639A DE 3632639 A1 DE3632639 A1 DE 3632639A1
Authority
DE
Germany
Prior art keywords
processing
data
memory
output
sequence
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.)
Granted
Application number
DE19863632639
Other languages
English (en)
Other versions
DE3632639C2 (de
Inventor
Ercole Giuliano
Giogio Musso
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.)
Elsag Bailey SpA
Original Assignee
Elettronica San Giorgio Elsag SpA
Elsag International BV
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 Elettronica San Giorgio Elsag SpA, Elsag International BV filed Critical Elettronica San Giorgio Elsag SpA
Publication of DE3632639A1 publication Critical patent/DE3632639A1/de
Application granted granted Critical
Publication of DE3632639C2 publication Critical patent/DE3632639C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Description

Die vorliegende Erfindung betrifft eine Einrichtung zum Verarbeiten von Bilddaten durch Faltung mit hoher Geschwindigkeit für irgendeine wissenschaftliche, industrielle, medizinische, Weltraum- oder militärische Anwendung.
Für derartige Anwendungszwecke sind zwei Techniken zum Verarbeiten von Informationen, die von externen Sensoren (insbesondere visuelle Einrichtungen, jedoch auch akustische Sensoren usw.) erhalten wurden, bekannt, wobei nach einer Methode "gestreute" Daten zu konventionellen Bildern verarbeitet werden während nach der anderen Methode die eingehenden Daten bereits die Form eines Bildes der Außenwelt darstellen und das Verarbeiten im Extrahieren und Analysieren von Daten besteht, die in dem Bild selbst enthalten sind.
In Beiden Fällen basiert viel der Bildumwandlungstechnik auf Faltungsalgorithmen, die abgegesehen von ihren extrem brauchbaren mathematischen Eigenschaften derart lange Verarbeitungszeiten benötigen, daß die Verarbeitung auf Standardcomputern unpraktisch ist.
Insbesondere in der Industrie erfordern beispielsweise Beobachtungssysteme durch Roboter ein extrem hohes Bildverarbeitungspotential, insbesondere in den frühen Stadien zum Herausfiltern von Zwischenraumfolgen und zum Verbessern des Kontrastes oder zum Feststellen von Bildcharakteristika, die für eine weitere Verarbeitung auf höherer Stufe erforderlich sind. Die Ausgangsdaten die üblicherweise durch eine elektronische Netzhaut, die etwa 200 000 Wandler oder mehr aufweist, geliefert werden, werden mit MHz-Frequenzen abgetastet und müssen sämtlich getrennt verarbeitet werden.
Von allen Methoden, die auf Algorithmen basieren, sind die am meisten verwendeten die digitalen Techniken, die eine diskrete Bildumwandlung erfordern. Das Bild selbst kann definiert sein durch eine zweidimensionale Folge von Helligkeitswerten und gedacht werden als Ergebnis des Teilens einer Fotographie (quadratisch aus Einfachkeitsgründen) in ein Mosaik von N · N-Quadraten (Pixels) von gleicher Größe, wobei jedem dieser Quadrate ein Grauwert zugeordnet ist.
In dem Gebiet, in dem die Einrichtung gemäß der Erfindung insbesondere angewendet wird, ist Filtern von primärer Bedeutung, insbesondere zur "Kantenextraktion", das insbesondere bei Verarbeitungssystemen eine wesentliche Funktion darstellt, bei denen Objekte von einem gegebenen Hintergrund zu unterscheiden und nachfolgend zu identifizieren sind.
Ein diskretes Bild liefert in der Tat alle Informationen, die einem "künstlichen Sichtsystem" im Außenraum zugänglich sind, wobei jedoch diese Information nur zur praktischen Verwendung geführt werden kann, wenn sie in eine effizientere Form als eine bloße Folge von verschiedenen Pixelhelligkeitswerten konvertiert wird. "Kantenextraktion" ist beispielsweise ein Bildumwandlungsvorgang, der viel von den strukturellen Bilddaten bewahrt, wodurch das nachfolgende Verarbeiten erleichtert wird.
Das Ergebnis eines "Kantenextraktions"-Verfahrens besteht aus einer Gruppe von Linien, die an Helligkeitsänderungsstellen auf dem Bild lokalisiert sind. Die Effektivität derartiger Linien liegt darin, daß sie mit den Eigenschaften des zu betrachtenden Objekts nahe verbunden ist, das heißt, daß offensichtlich Helligkeitsänderungen häufig an den Kanten des Objekts lokalisiert sind.
Eine Faltung ist nur eine "Kantenextraktions"-Operation. Nachfolgende Operationen in dem Verfahren hängen von dem Typ der verwendeten Folge ab.
Nachfolgend wird kurz zusammengefaßt, was bereits von diesem Faltungsvorgang bekannt ist.
Wenn X eine Folge ist, die ein Bild darstellt, sind die Elemente dieser Folge x(l, m), wobei die Variablen l und m (ganze Zahlen zwischen 0 und N-1) die Stelle (Zeile oder Spalte) des einzelnen Elementes angeben, so daß die Folge als Matrix von N Zeilen und N Spalten betrachtet werden kann, deren Elemente entsprechend den relativen Pixels angeordnet sind, aus denen sie erhalten wurden.
Im Falle einer Faltung erzeugt eine anfängliche Folge X eine neue Folge Y, wobei jedes Element hiervon eine gewichtete Summe der Elemente der anfänglichen Folge darstellt. Faltung hängt daher ab von der Wichtungsfolge K, die verwendet wird. Faltung wird folgendermaßen ausgedrückt:
Y = K · X
Allgemein ist das Element in der resultierenden Folge Y:
Faltung wird gewöhnlich interpretiert als Herausfiltern von Zwischenraumfolgen.
Damit verläßliche Resultate auch bei Anwesenheit von Rauschen erhalten werden, müssen Filtermatrizen zur "Kantenextraktion" in vielen Fällen von relativ ausgedehnter Größe sein. Ein Vergrößern der Größe der K-Folge vergrößert jedoch die Anzahl der damit verbundenen Verarbeitungsoperationen. Das Berechnen jedes Elementes in einer Folge, die aus der Faltung einer zweidimensionalen Folge (die die üblichen Charakteristika aufweist) resultiert, umfaßt:
1. Kenntnis der Elemente n R · n c in der Folge zum Verarbeiten;
2. Multiplizieren jedes Elementes mit einem geeigneten "Gewicht" (die Anzahl der Produkte ist daher gleich n R · n c );
3. Addieren der resultierenden Produkte (beim Addieren von
Zahlenpaaren ist die Anzahl der Additionen gleich (Anzahl der zu addierenden Produkte) -1 = (n R · n c ) -1≃n R · n- c ).
Für Anwendungszwecke muß dies soweit wie möglich vereinfacht werden, das heißt die Anzahl von erforderlichen Operationen für jedes Resultat reduziert werden.
Wenn die Verarbeitungsfolge K separabel ist, ist der gesamte Vorgang beträchtlich einfacher. Separierbarkeit von K bedeutet:
k(s, t) = f(s) · g(t),
wobei f(s) und g(t) Elemente von zwei eindimensionalen Folgen von Elementen n R bzw. n c sind. Wenn Separierbarkeit existiert, ergibt sich: wobei ist. Die Rechnung kann daher in zwei aufeinanderfolgenden Faltungen umfassend eine zweidimensionale und eine eindimensionale Verarbeitungsfolge zurückgeführt werden.
W ist eine zweidimensionale Folge von Zwischenwerten, die aus X durch eine erste eindimensionale Zeilenfaltung erhalten wird (so genannt, da die Berechnung von w(l, m) nur Werte von x(l, m-i) umfaßt, die sich in der gleichen Zeile befinden). Aus diesen Zwischenwerten wird die endgültige Folge Y erhalten durch eine zweite eindimensionale Faltung, und zwar diesmal eine Spaltenfaltung (so genannt, da nur Werte in der gleichen Spalte involviert sind).
Eine eindimensionale Zeilen- (Spalten-) Faltung läßt sich als spezieller Faltungsfall mit einer zweidimensionalen Verarbeitungsfolge mit n R = l (n c = l) betrachten.
Folgende Erweiterung kann daher vorgenommen werden:
g(j) → g R (0, j)
f(i) → f c (i, 0)
(R oder c zeigen an, daß diese zweidimensionalen Folgen nur Elemente verschieden von Null längs einer Zeile oder einer Spalte besitzen können).
Die erwähnte Abtrennungsbedingung wird zu einem speziellen Fall
K = F c · G R
Für die Gesamtberechnung kann daher die folgende Gleichung verwendet werden:
Y = F c · (G R · X) = F c · W mit W = G R · X
Die erste eindimensionale Faltung, bei der W aus der Ausgangsfolge X berechnet wird, erfordert l · n c Operationen pro Element (der Ausdruck "Operation" bedeutet Erfassen eines Wertes der zu verarbeitenden Folge, Multiplizieren von diesem mit einem entsprechenden Term der Verarbeitungsfolge und Addieren des Produktes). Die zweite Faltung, bei der die Folge Y aus der Folge W erhalten wird, erfordert n R · l Operationen pro Element.
Dies bedeutet, daß die endgültige Folge berechnet wird durch n R + n c Operationen pro Element, was eine beträchtliche Reduzierung verglichen mit direkter Verarbeitung darstellt, die in n R · n c Operationen erfordern würde. Je größer n R und n c sind, desto größer ist die Reduzierung.
Zudem ergibt sich eine Vereinfachung der Berechnung durch Ersetzen einer zweidimensionalen Faltung durch zwei getrennte eindimensionale Faltungen, die jeweils nur n R oder n c Terme besitzt.
Die zu leistende Menge an Verarbeitung ist ein allgemeines Problem im Falle der direkten numerischen Verarbeitung von diskreten Bildfolgeelementen aufgrund der großen Anzahl der auftretenden Elemente. Beispielsweise im Falle eines Bildes mit 512 · 512 Pixels und einer getrennten zweidimensionalen Verarbeitungsfolge von 32 · 32 Elementen, würde die Anzahl von durchzuführenden Operationen über 3 · 107 sein, wobei die Hälfte hiervon Multiplikationen sind.
Während der frühen Verarbeitungsstufen ist das Originalbild häufig unter Verwendung von Faltungen verschiedener Größen und/oder Funktionen durchzuführen, um Charakteristika von speziellem Interesse zu Tage zu fördern. Bei Verwendung derartiger Algorithmen auf Standardcomputern kann die Verarbeitungszeit leicht einige Zehntelsekunden bis zu einigen Minuten betragen in Abhängigkeit von der Komplexität der Verarbeitungsoperation. Dies ist offensichtlich selbst für Algorithmus simulierende Stufen nicht akzeptabel und insbesondere unter realen Betriebsbedingungen die allgemein sehr schnelle Verarbeitungszeiten erfordern, die in der Größenordnung von wenigen Millisekunden pro erhaltenem Videobild liegen.
Zum Kombinieren von Bildumwandlungspräzision und Hochgeschwindigkeitsverarbeitung sind daher zweidimensionale Masken in der Industrie auf solche beschränkt, die ohne bemerkbare praktische Begrenzungen getrennt werden können. Eine zweidimensionale Faltung wird daher durch Multiplizieren von zwei aufeinanderfolgenden eindimensionalen Faltungen in zwei senkrechten Bildrichtungen berechnet.
Die Effektivität einer geeigneten Einrichtung zum Durchführen des Faltens, das auf einem Computer in der gleichen Weise wie auf einer standardisierten Periphereinheit durchgeführt werden kann, ist daher offensichtlich. Bei einer spezialisierten Einheit kann daher eine geeignete Strukturierung zum beträchtlichen Reduzieren der Gesamtverarbeitungszeit ausgewählt werden.
Aufgabe der Erfindung ist es, eine Einrichtung zu schaffen, die ein ein- oder zweidimensionales Falten mit separablen Variablen ermöglicht, wobei sich die Einrichtung zur Hochgeschwindigkeitsverarbeitung eignet, durch eine flexible, modulare Ausbildung charakterisiert ist, die es ermöglicht, daß sie an verschiedene Anwendungserfordernisse anpaßbar ist, und die geeignete für VLSI-Anwendungen ist.
Die Erfindung betrifft daher eine Einrichtung zum Verarbeiten von Bilddaten durch Faltung mit Hochgeschwindigkeit, die dadurch gekennzeichnet ist, daß sie wenigstens eine Arithmetikeinheit umfaßt, die eine Anzahl von untereinander verbundenen Verarbeitungszellen mit wenigstens teilweise gemeinsamen Eingängen aufweist und derart ausgebildet ist, daß sie ein- oder zweidimensionale Faltungen mit separablen Variablen durchführen kann, sowie Speicher umfaßt, die wenigstens die der Faltung zu unterwerfenden Daten speichern.
Weitere Ausgestaltungen der Erfindung sind der nachfolgenden Beschreibung und den Ansprüchen zu entnehmen.
Die Erfindung wird nachstehend anhand der in den beigefügten Abbildungen dargestellten Ausführungsbeispiele näher erläutert.
Fig. 1 zeigt ein Blockdiagramm einer ersten Ausführungsform der erfindungsgemäßen Einrichtung.
Fig. 2 zeigt ein detailliertes Blockdiagramm einer ersten Ausführungsform einer Arithmetikeinheit von Fig. 1.
Fig. 2a zeigt eine Zeitgraphik einer Anzahl von Signalen in dem Diagramm von Fig. 2.
Fig. 3 zeigt ein detailliertes Blockdiagramm einer zweiten Ausführungsform der Arithmetikeinheit von Fig. 1.
Fig. 4 zeigt ein Gesamtblockdiagramm der Artihmetikeinheit von Fig. 1.
Fig. 5 zeigt eine Anzahl von Betriebssteuerworten für die erfindungsgemäße Einrichtung.
Fig. 6 zeigt ein detailliertes Blockdiagramm einer Ausführungsform des Speichers von Fig. 1.
Bei der in Fig. 1 dargestellten erfindungsgemäßen Vorrichtung handelt es sich um die in dem Block 1 (angedeutet durch gestrichelte Linien und nachfolgend als Faltungsblock bezeichnet), der eine Arithmetikeinheit 2, einen Speicherblock 3 und einen Interface- und Steuerblock 4 umfaßt, der den Betrieb von Block 1, der vollkommen synchron ist, beherrscht und durch einen 8 MHz-Takt getaktet wird. Einheit 2 und Blöcke 3 und 4 sind über eine lokale Leitung 5 hinsichtlich des Datenflusses in beiden Richtungen miteinander verbunden, während die Einheit 2 ferner mit der Leitung 5 über einen Block 6 zum Approximieren der Endresultate in einer Datenflußrichtung verbunden ist, deren Funktionieren nachfolgend im einzelnen beschrieben wird. Der Interface-Block 4 ist mit einem Steuerblock 36 in zwei Datenflußrichtungen verbunden, der seinerseits mit einer Leitung 7 in zwei Datenflußrichtungen verbunden ist, mit der ein Hauptrechner 8, beispielsweise ein VAX 11/780, hergestellt durch Digital Equipment Corporation, verbunden ist.
Mit der Leitung 7 ist ferner ein externer Bildabtastblock 9, beispielsweise eine Telekamera, verbunden.
Die Arbeitsweise des Faltungsblocks 1 besteht darin, die kodierten Instruktionen, die in jedem einzelnen Fall durch den Rechner 8 geliefert werden, auszuführen. Anders ausgedrückt, es besteht keine feste Vorgabe, der Betrieb des Blocks 1 ist entsprechend den Anforderungen durch den Operator wählbar.
Ein typischer Ablauf zum Durchführen einer eindimensionalen Faltung besteht aus folgenden Schritten:
1)Transferieren der Folge zum Verarbeiten (Originalbilddaten) vom Rechner 8 zum Block 1 (Speicher 3).
2)Übertragen der Verarbeitungsfolge und Parameter vom Rechner 8 zum Block 1 (lokaler Speicher der Einheit 2).
3)Verarbeiten über die Arithmetikeinheit 2 durch Entnahme von Daten vom Speicherblock 3, Nähern der Ergebnisse auf 8 Bits und erneutes Laden des Speicherblocks 3.
4)Übertragen der resultierenden Folge (resultierendes Bild) vom Block 1 zum Rechner 8.
Eindimensionale Faltungen können (zum Erzielen von zweidimensionalen Faltungen) durch Wiederholen der Schritte 2 und 3 wiederholt werden. Die Schritte 3 und 4 können auch durch einen alternativen Verarbeitungsmodus 3′ ersetzt werden:
3′)Verarbeitung (einer eindimensionalen Faltung) während der Übertragung von Ergebnissen zum Rechner 8.
Sämtliche Übertragungen zu und vom Rechner 8 und Faltungsblock 1 werden in DMA mit "handshake"-Logik durchgeführt.
Jede Übertragung ist mit einem individuellen Code verbunden, der durch den Rechner 8 erzeugt wird, um es dem Block 1 zu ermöglichen zu identifizieren, welche Übertragung durchgeführt wird, das heißt 1), 2), 3), 4) oder 3′). Der mit dem Transfer 1) verbundene Code veranlaßt Block 1, das Eingangsdatum in den Datenspeicherblock 3 zu schreiben. Für diese Übertragung existiert eine spezifische Ordnung, in der die Werte der zu verarbeitenden Folge zu übermitteln sind, das heißt längs jeder Zeile von links nach rechts (zunehmender Spaltenindex) und Zeile für Zeile von oben nach unten (zunehmender Zeilenindex). Eine derartige Anordnung führt zu einer leichten Rekonstruktion der Koordination relativ zu jedem empfangenen Wert, welche Koordinaten durch Block 1 verwendet werden zur Bildung eines unterschiedlichen Adressencodes, wie er zur Speicherung erforderlich ist.
Übertragung 2), die durch den damit verbundenen Code identifiziert ist, besteht in der Übertragung von einigen zehn Worten.
Diese Worte, die in geeigneten Registern (14 in Fig. 2) gespeichert sind, definieren die Berechnung einer eindimensionalen Faltung unter Verwendung der in Schritt 1) übermittelten Daten. Das heißt, daß zusammen mit diesen Worten Block 1 mit den Elementen der zu verarbeitenden Folge (8, 16, 24 oder 32 Werte, 8 Bit Komplement 2) und einem Paar von "Parametern", die andere notwendige Information beinhalten, etwa ob die Faltung eine Zeilen- oder Spaltenfaltung ist, gefüttert wird. Ein Schlußcodewort in dieser Übertragung läßt die Faltung entsprechend den vorher empfangenen Instruktionen beginnen. In dem speziell in Rede stehenden Fall besteht das Verarbeiten im Addieren der Produkte der Elemente der zu verarbeitenden Folge mit Elementen der Verarbeitungsfolge Zeile für Zeile oder Spalte für Spalte. Jedes resultierende Folgenelement wird ohne Zwischenapproximation berechnet; die resultierenden (20 Bit) Werte werden durch eine 8-Bit-Zahl Komplement 2 approximiert.
In Stufe 3) wird Block 1 gegenüber dem Rechner 8 während der Verarbeitungszeit isoliert und ersetzt den Inhalt des Speichers 3, der anfänglich aus der zu verarbeitenden Folge besteht, durch die Folge, die aus der Faltung resultiert. Die Elemente der Verarbeitungsfolge und Parameter bleiben ungeändert und können zum nachfolgenden Verarbeiten verwendet oder erneut definiert werden.
Übertragung 4) ist ähnlich zu Schritt 1), nur in entgegengesetzter Richtung. Dieses Lesen ändert nicht den Inhalt des Datenspeichers 3.
Faltungsblock 1 wird durch einen Aufruf vom Block 36 aktiviert als Teil eines Programms, das von dem Hauptrechner 8 ausgeführt wird. Block 36 bewirkt das erforderliche Codifizieren und Überführen.
Bei der Anordnung von Fig. 1 mit einem Hauptrechner VAX 11/780 ist das resultierende Bild zur Verwendung in wenigen Sekunden erhältlich. Eine derart große Vergrößerung der Gesamtzeit verglichen mit der Verarbeitungszeit beruht fast gänzlich auf der Zeit, die für die Übertragung der Bildfolgen zwischen Rechner 8 und Faltungsblock 1 benötigt wird. Jedoch können auch diese Zeiten auf Bruchteile einer Sekunde reduziert werden durch Optimieren der Übertragungsvorgänge und Verwendung von schnelleren Interfaceblocks 36.
Nachstehend wird im einzelnen die Betriebsweise des Faltungsblocks 1 und der Arithmetikeinheit 2 zum Durchführen einer eindimensionalen digitalen Faltung erläutert.
Die durchzuführende Rechnung ist die Faltung einer zu verarbeitenden Folge X (von N · N Elementen) mit einer Verarbeitungsfolge bestehend aus h(-q), . . . , h(-1), h(0), h(1), . . . , h(p). Diese n Elemente (n = q + p + 1 = 8, 16, 24 oder 32) sind durch "Koeffizienten" indiziert. Die Rechnung kann eine Zeilen- oder Spaltenfaltung sein, das heißt:
W = H R · X oder W = H c · X
Die Gesamtrechnung wird Element für Element durchgeführt, das heißt die verschiedenen Werte der resultierenden Folge werden einzeln berechnet. (Zur Vereinfachung bedeutet "Datum" ein Element der zu verarbeitenden Folge X und "Resultat" ein Element der resultierenden Folge W). Die Gleichung für das allgemeine resultierende Element w(l, m) ist:
Die obigen Gleichungen zeigen die Operationen an, die zur Berechnung eines Resultats erforderlich sind, das heißt Addieren der Produkte von n Daten, jeweils multipliziert mit einem geeigneten Koeffizienten.
Während der Berechnung sind die Daten im Speicher 3 enthalten, wohingegen die Multiplikation und Addition in der Aritmethikeinheit 2 durchgeführt werden, in der die n Koeffizienten direkt gespeichert sind.
Wenn ein Resultat berechnet ist, wird ein weiteres durch entsprechendes Addieren der Produkte der gleichen Koeffizienten für eine andere Gruppe von n Daten berechnet. Wenn weiterhin, wie in den vorstehenden Gleichungen ausgedrückt, eine Koeffizientenfolge vorgegeben worden ist, liegt die einzige Differenz zwischen Zeilen- und Spaltenfaltung in der Gruppe von n Daten.
Da keine vorgegebene Ordnung existiert, in der in die verschiedenen Resultate zu berechnen sind, besteht eine übliche systematische Methode darin, die Resultate aufeinanderfolgend in durchgehenden Zeilen zu berechnen: Zeilen bzw. Spalten für Zeilen- bzw. Spaltenfaltungen.
Im Falle einer Zeilenfaltung beispielsweise erfordert die Berechnung von w(l 0, m 0) das Lesen von n Daten x(l 0, m 0-p), . . . , x(l 0, m 0+q) aus Speicher 3. Das Berechnen von w(l 0, m 0+1) erfordert das Lesen von x(l 0, m 0+1-p), . . . , x(l 0, m 0+1+q). Von diesen wurden die ersten n-1 bereits für die vorhergehenden Berechnungen gelesen und nur das letzte ist "neu".
Wenn jedes Datum zum Berechnen von n Ergebnissen verwendet wird, die aufeinanderfolgend berechnet werden, wie die erforderlichen Daten bekannt werden, braucht jedes Datum nur einmal aus dem Speicher 3 gelesen und zur nachfolgenden Verwendung direkt in der Arithmetikeinheit 2 gespeichert zu werden. In dem obigen Falle wird die Speicherung von vorher gelesenen Daten nur auf die "letzten" n-1 Daten angewendet, was eine beträchtliche Vereinfachung des Datenlesens und der Struktur der Arithmetikeinheit 2 liefert.
Das gleiche Prinzip ist bei einer Spaltenfaltung anzuwenden, in welchem Falle Daten aufeinanderfolgend vom Speicher 3 in Spalten gelesen werden, wobei keinerlei Änderungen bezüglich der Arithmetikeinheit 2 erforderlich sind.
nders ausgedrückt wird das Falten einer zweidimensionalen Folge x von N · N Elementen mit einer Folge von n Elementen h(i) auf N getrennte Faltungen von zwei eindimensionalen Folgen zerlegt: die Verarbeitungsfolge und jedesmal eine verschiedene Zeile (Zeile oder Spalte) in der zweidimensionalen Folge, um jedesmal eine entsprechende Zeile von Resultaten, das heißt Elementen der Folge W zu erhalten, die folgende Form besitzen:
Hierbei handelt es sich um eine vereinfachte Gleichung, die sowohl für Zeilen- als auch für Spaltenfaltungen gültig ist, wobei die Elemente w(k) und x(k-i), zweidimensionale Folgenelemente, verwendet werden, um den (gemeinsamen) Index zu implizieren, der die gerade Zeile identifiziert, auf die in der durchgeführten Berechnung Bezug genommen wird.
Nunmehr sei der Fall einer Faltung mit einer "kausalen" Verarbeitungsfolge von n Elementen betrachtet (das heißt mit Koeffizientenindizes zwischen q = 0 und p = n-1):
Die Arithmetikeinheit 2, die auf die Verarbeitungsfolge (H) "programmiert" ist, fragt am Eingang die Elemente der Folge (X) aufeinanderfolgend zum Verarbeiten ab und liefert aufeinanderfolgend am Ausgang die Elemente der verarbeiteten Folge (W).
Bei der in Fig. 2 dargestellten Ausführungsform besitzt daher die Arithmetikeinheit 2 "n" identischen Stufen 11 bestehend aus halbsystolischen Zellen, das heißt die synchron mit einem gemeinsamen Dateneingang 50 und einem Ausgang 49 für jede Stufe 11, der mit einem Addiereingang der nächsten Stufe 11 verbunden ist, arbeiten. Jede der Zellen 11 umfaßt einen Hochgeschwindigkeits- 8×8-Bit-Multiplizierer 12 zum Multiplizieren des Datums vom Eingang 50 mit dem Faltungskoeffizienten h(i), der durch einen lokalen RAM-Speicher 14 geliefert wird, der durch den Rechner 8 geladen wird. Der Ausgang des Multiplizieres 12 wird auf einen 20-Bit-Addierer 13 gegeben, der diesen zu dem Datum addiert, das am Ausgang 49 der vorhergehenden Stufe 11 ansteht. Der Ausgang des Addierers 13 wird auf ein Register 15 gegeben, dessen Ausgang den Ausgang 49 der Stufe 11 bildet.
Während sowohl Multiplizierer 12 als auch Addierer 13 aus Kombinationslogikblöcken bestehen, deren Ausgang von den Eingangsdaten abhängt, erfordert der Betrieb jedes Registers 15 ein Schreibsteuersignal. An jeder Anstiegsflanke des Schreibsteuersignals speichert jedes Register 15 das Datum an seinem Eingang zu dieser bestimmten Zeit, transferiert es zum Ausgang und hält es stabil (unabhängig von irgendwelchen Änderungen am Eingang), bis die nächste Anstiegsflanke empfangen wird. Das in Fig. 2a dargestellte Taktsignal (c) ist dasjenige für das Register 15 in Fig. 2. (a) stellt in Fig. 2a einen zeitlichen Graphen des Wertes am Eingang 50 der Einheit 2 in Fig. 2 und (b) eine zeitlichen Graphen des Wertes am Ausgang 51 dar.
Jedes der Daten, die aufeinanderfolgend zum Eingang 50 der Arithmetikeinheit 2 gesandt werden, bleibt während eines Zyklus (die Periode zwischen zwei aufeinanderfolgenden Anstiegskanten des Taktsignals) konstant, um die Berechnung eines neuen Resultats zu ermöglichen, das auf den Ausgang 51 der Einheit 2 in den nachfolgenden Zyklus gegeben wird. Die Bildung von Resultaten ist leicht angesichts des repetierenden Aufbaus herleitbar (die erste Zelle 11 in Fig. 2 kann zum Zwecke der Gleichförmigkeit einen Addierer 13 aufweisen, von dem ein Eingang (49) auf Null gesetzt ist).
Im Falle von n Koeffizienten wird jedes Element durch n Stufen (Fig. 2) in n Zyklen berechnet. Wenn
w(k = h(n-1)·x(k-n+1) + h(n+2) ·x(k-n+2) + . . .
+ h(1)·x(k-1) + h(0)·x(k)
berechnet werden soll, wird in der ersten Stufe 11 in dem Zyklus begonnen, bei dem x(k-n+1) mit einem Produkt h(n-1)·x(k- n+1), . . am Eingang des Multiplizierers 12 vorhanden ist.
Zyklus für Zyklus wird durch die Stufen 11 eine Summe gebildet, bei der ein Element jedesmal zu dem Teilresultat an dem Ausgang des Registers 15 der vorhergehenden Stufe 11 addiert wird, bis in dem Zyklus, in dem x(k) am Eingang des Multiplizierers 12 vorhanden ist, die letzte Stufe 11 den letzten Summanden h(0)·x(k) addiert und das vollständige Resultat w(k) auf den Ausgang 51 der Arithmetikeinheit 2 in dem nächsten Zyklus gibt.
Ein spezifisches Merkmal des in Fig. 2 dargestellten Aufbaus besteht darin, daß die Operationen, die aufeinanderfolgend in jedem Zyklus durchgeführt werden, eine Multiplikation und eine Addition sind. Diese aus zwei Operationen bestehende Folge ist unabhängig von der Anzahl der Stufen, das heißt keine weiteren nachfolgenden Operationen sind erforderlich, wieviele Stufen n auch involviert sind.
Dies ist wichtig in bezug auf die Zeit zur Durchführung der aufeinanderfolgenden Operationen in jedem Zyklus (wegen der Komponentenverzögerung), da hierdurch die minimale Zeitperiode zum Betrieb des Faltungsblocks bestimmt wird, welche Zeit zweifelsohne soweit wie möglich zu minimalisieren ist.
Zieht man das Ausgangsregister 15 der letzten Stufe 11 in Betracht, wird die aktuelle Folge, die am Ausgang 51 der Einheit 2 in Fig. 2 verfügbar ist, um einen Zyklus in bezug auf die Folge X am Eingang 50 verzögert (wie durch die Graphen (a) und (b) von Fig. 2a gezeigt ist). Das Ausgangsregister 15 ist in der Tat ein "Pipline"-Register, das heißt daß es im Gegensatz zu den anderen nicht für den Prozess erforderlich ist, sondern verwendet wird, um in aufeinanderfolgenden Zyklen die Operationen, die in der letzten Stufe 11 der Einheit 2 durchgeführt werden, von denjenigen zu trennen, die durch den stromabwärtigen Block durchgeführt werden.
Pipeline-Register stellen praktisch ein Muß zwischen Blöcken dar, jedoch können sie auch innerhalb des Blocks selbst verwendet werden. Beispielsweise kann bei der Einheit 2 von Fig. 2 ein Pipeline- Niveau bestehend aus einem zusätzlichen Register in jeder Stufe 11 zwischen Multiplizierer 12 und Addierer 13 eingefügt werden. In diesem Falle wird die Taktzeitgrenze nach unten durch die längste Verzögerungszeit eines Multiplizierers 12 und eines Addierers 13 begrenzt, mit dem Resultat, daß die Ausgangsfolge um zwei Zyklen in bezug auf die Eingangsfolge X verzögert ist.
Bevorzugterweise umfaßt die Arithmetikeinheit 2 in Fig. 2 einen Modul mit elf Stufen 11, was bedeutet, daß er Faltungen berechnen kann, die Verarbeitungsfolgen von n 8 Elementen umfassen.
In Fällen, die mehr als 8 Koeffizienten umfassen, ist eine entsprechende Anzahl von identischen Modulen in Kaskadenverbindung vorgesehen (angesichts des repetiven Aufbaus der Struktur von Fig. 2). Im Falle von n 16 beispielsweise sind zwei Module 53 (Fig. 4) erforderlich, die miteinander in der in Fig. 4 dargestellten Weise verbunden sind. Der Eingang 50 ist der Eingang gemeinsam für die acht Multiplizierer 12 jedes Moduls 53; P ist der Eingang des Addierers 13 der ersten Stufe 11 und 51 ist der Ausgang des Registers 15 in der achten Stufe 11.
Wenn die Anzahl der Koeffizienten ansteigt, steigt die Zahl der Stufen 11, die in der Einheit 2 erforderlich sind, ebenfalls, während die Verarbeitungszeit unverändert bleibt.
Wenn eine Zeitperiode 125 ns und eine Folge von 256 K Elementen vorgegeben ist, wird eine Verarbeitungsoperation (die etwa soviele Zyklen wie Elemente in der zu verarbeitenden Folge erfordert) in etwa 35 ms durchgeführt.
Abgesehen von der vorhergehenden Lösung kann erfindungsgemäß auch bei mehr als acht Koeffizienten (mit einem entsprechenden Anstieg der Verarbeitungszeit) ein Modul 53 unter Verwendung von Multiplizierern 12 und Addierern 13 eingesetzt werden. Bei der in Fig. 3 dargestellten Struktur der Einheit 2, die Wiederholungskomponenten umfaßt, sind nur die erste und letzte Stufe 11′ einer achtstufigen Kette dargestellt, die alle Zyklen ( = 1, 2, 3, 4) ein Resultat einer Faltung mit einer Verarbeitungsfolge von ·8 Koeffizienten berechnet.
Jede Stufe 11′ besitzt einen Multiplizierer 12, der ein Datum 50 an einem Eingang und am anderen Eingang einen Koeffizienten ausgewählt aus einer Gruppe, in diesem Falle von vier Koeffizienten abgespeichert in einer RAM-Speichergruppe 14′ empfängt. Der Ausgang des Multiplizierers 12 wird auf einen Addierer 13 gegeben, der an seinem anderen Eingang von einer vorhergehenden Stufe 11′ den Ausgang eines von vier Registern einer Gruppe 15′ empfängt und seinerseits den Ausgang zu seiner eigenen Gruppe 15′ datenstromabwärts sendet. Ein Eingang des Addierers 13 der ersten Stufe 11′ ist mit dem Ausgang eines Abtasters (Schalter) 33 verbunden, der an einem Eingang ein Signal p und an seinen anderen Eingängen den Ausgang eines zusätzlichen Registers 34 empfängt, dessen Eingang den Ausgang eines der Register D 24, D 16, D 8 der Gruppe 15′ der achten Stufe 11′ mit Ausnahme des Registers D out in Gruppe 15′, das den Ausgang 51 füttert, empfängt. Der Schalter 33 dient zur wiederholten Durchführung (in diesem Falle viermal) von Faltungen mit Folgen von 8, 16, 24 oder 32 Elementen. Wie nachstehend im einzelnen ausgeführt wird, ermöglicht dies das Durchführen von Faltungen mit Folgen in einer größeren Anzahl als die Stufen 11′ der Arithmetikeinheit 2 infolge sequentieller Durchführung der Faltung und einem dadurch hervorgerufenen proportionalen Anstieg in der benötigten Verarbeitungszeit.
Die Arbeitsweise der Einheit 2 von Fig. 3 wird unter der Annahme von 32 Koeffizienten beschrieben. Wie in der 32-stufigen Struktur von Fig. 2 weist die Struktur von Fig. 3 insgesamt 31 Register (D 31, . . .,D 1), die Partialsummen enthalten, und ein Register (D out ) auf, das das Endresultat enthält. Der Inhalt jedes dieser Register wird durch jedes neue Eingangsdatum geändert. Bei der in Fig. 2 dargestellten Struktur wird dies in einer Taktperiode durchgeführt, wohingegen bei der Struktur von Fig. 3 vier aufeinanderfolgende Perioden (als "Schritte" bezeichnet, die einen "Zyklus" bilden) erforderlich sind, wobei am Ende der vier Perioden ein neues Resultat in das Register D out gegeben wird.
Der Schrittbetrieb wird durchgeführt durch Ansteuern "in Spalten" sowohl der Speichergruppen 14′ als auch der Vier-Register- Gruppen 15′. Im ersten Schritt jedes Zyklus werden die Multiplizierer 12 mit Koeffizienten h(31), . . , h(24) versorgt, die Register D 31, . . ., D 24 werden angesteuert und der Schalter 33 gesetzt, um Eingang P an dem ersten Addierer 13 zu legen. (Eingang P ist erforderlich zum Kaskadenverbinden einer Anzahl von Modulen 53. Bei einem einzigen Modul 53, wie im vorliegenden Falle, kann Eingang P auf Null gesetzt werden. Eingang P wird in der Tat auch verwendet zum Approximieren der Resultate, wie später im einzelnen beschrieben wird.) Am Ende des ersten Schritts befinden sich neue Werte in den Registern D 31, . . ., D 24.
Ähnliches geschieht für die anderen "Spalten" (23, . . , 16; 15, . . ., 8; 7, . . ., 0) in den folgenden Schritten. In den folgenden Schritten wird die Einstellung des Schalters 33 geändert damit der erste Addierer 13 mit dem Ausgang des Registers 34 auf der Rückkopplungsverbindung von den Registern in der letzten Stufe 11′ versorgt wird. Das Register 34 trägt den Wert, der in dem Register der letzten Stufe, das in dem vorhergehenden Schritt angesteuert war, enthalten ist, vorwärts.
Eine Folge von 24 Koeffizienten wird in nur drei Schritten berechnet: Der erste, bei dem der Schalter 33 den Eingang P wählt, steuert Spalte 23, . . ., 16 an; der zweite steuert Spalte 15, . . ., 8 an; und der dritte und letzte (nach welchem Register D out geladen wird) steuert Spalte 7, . . ., 0 an.
Zwei Schritte sind bei 16 Koeffizienten ausreichend, wohingegen 8 Koeffizienten kein wiederholtes Verarbeiten erfordern. Die Arithmetikeinheit 2, die für vier Wiederholungsschritte ausgelegt ist, arbeitet in Relation zu den stromauf- und stromabwärtigen Stufen in der gelichen Weise wie eine Standardarithmetikeinheit (ohne Wiederholung) mit ·8 Stufen mit einem (augenscheinlichen) Arbeitszyklus von Taktperioden. Dies bedeutet beispielsweise, daß zwei der beiden Einheiten 2 kaskadenförmig miteinander verbunden werden können, wie in Fig. 4 dargestellt ist, wobei jede unabhängig wiederholt, um Faltungen in nur zwei Schritten vorzunehmen, die Folgen von 32 Koeffizienten haben.
Zum Maximieren der Auflösungskapazität der Arithmetikeinheit 2 wird keine Approximation der Multiplikationen oder Additionen durchgeführt.
Im Falle von Multiplikationen wird das Produkt von zwei 8-Bit-Faktoren Komplement 2 in 15 Bits angegeben (um zwei Vorzeichenbits zu erhalten, wird der Fall, daß beide Faktoren -128, das heißt binär 10 000 000 sind, ausgeschlossen).
Im Falle von Additionen, die das Aufsummieren bis zu einem Maximum von 32 Produkten umfassen, werden 20-Bit-Zwischenresultate erzeugt, um einen Überlauf selbst im schlechtestmöglichen Falle zu vermeiden.
Für allgemeine Anwendungen der Einheit 2 werden exakte Zwischenrechnungen empfohlen. Jedoch im Falle eines Resultats einer Faltung in Form eines 20-Bit-Wortes würde dieses unverwendbar sein, weshalb Vorkehrungen zum programmierbaren Approximieren von Block 6 getroffen sind.
Wenn Einheit 2 und Speicher 3 dazu eingerichtet sind, mit 8-Bit-Daten zu arbeiten, erfordert eine zweidimensionale Faltung Zwischenapproximation der Resultate der ersten eindimensionalen Faltung.
Der Approximationsblock 6, der ausschließlich aus Kombinationslogik besteht, wählt eine Gruppe von 8 Bit in irgendeiner Position aus dem 20-Bit-Wort der Einheit 2 aus.
Der Wert der m letzten signifikanten Bits unterhalb der 8 ausgewählten Bits (m ist programmierbar, wie nachstehend näher beschrieben wird) wird gerundet, um die in der Einheit 2 durchgeführte Addition in Gang zu setzen, das heißt angenommen "p" sei ein 20-Bit-Wort: 00 . . . .010 . . . .00, in dem das einzige Bit gleich 1 in der Position m-ma ist, gezählt von dem letzten signifikanten Bit. Wenn weiterhin die Zahl, die durch die verbleibenden 20-m signifikantesten Bits repräsentiert wird, nicht in 8 Bits repräsentiert werden kann (d. h. wenn die 13-m signifikantesten Bits nicht alle gleich sind), gibt der Ausgang des Approximationsblockes 6 nicht die 8 ausgewählten Bits, sondern den Maximalwert, der in 8 Bits repräsentierbar ist, zusammen mit dem Vorzeichen der Anfangsziffer an (+127, wenn positiv, -128, wenn negativ). Anders ausgedrückt es wird sogenannte Sättigungslogik verwendet.
Erfindungsgemäß ist ferner ein Approximieren der Resultate einer eindimensionalen Faltung auf 16 anstelle von 8 Bits vorgesehen. Dies wird erreicht durch Übertragen des Resultates direkt zum Rechner 8 (unter "Verlangsamen" der Geschwindigkeit der Einheit 2 zur Anpassung an die Übertragungsgeschwindigkeit). In diesem Fall besteht die Grenze in der Länge des zwischen dem Faltungsblocks 1 und Block 36 übertragenen Wortes.
Bei diesem Verfahrensablauf bleibt der Inhalt des Speichers 3 ungeändert.
An dieser Stelle können die beiden Parameter, die durch den Rechner 8 zum Faltungsblock 1 übermittelt werden, exakt definiert sein.
Der erste Parameter relativ zu den Koeffizienten gibt einen Wert q (Anzahl der nichtkausalen Elemente in der Verarbeitungsfolge 0 q 31 erfordert 5 Bits) und die Anzahl der Koeffizienten in der Verarbeitungsfolge (über einen 2-Bit-Code) an.
Der zweite (Verarbeitungs)-Parameter gibt an, ob eine Zeilen- oder Spaltenfaltung erforderlich ist (1-Bit-Code) und definiert einen Wert m (zum Programmieren der Approximationsstufe 6; 0 = m = 12 erfordert 4 Bits; die Schaltung führt eine Erweiterung des Vorzeichens im Falle von m = 13, 14, 15 durch). Dieser Parameter enthält ein letztes signifikantes Bit zur Auswahl der Verarbeitungsfolge, indem die Koeffizienten von zwei unabhängigen Folgen (zu jeder von denen ein Parameter des ersten Typs korrespondiert) gleichzeitig in der Einheit zwei gespeichert werden kann.
Bei dieser Übertragung empfängt der Faltungsblock 1 auch die Elemente der Verarbeitungsfolge(n), die in entsprechende Positionen in Speicher 14, der Einheit 2 gespeichert werden (Fig. 3 zeigt die Positionen für nur eine Folge). Zu diesem Zweck wird jeder Koeffizient zusammen mit einem Index i+q (0 i+q n-1 31 erfordert 5 Bits) und einem Bit, das die Verarbeitungsfolge anzeigt, zu dem er gehört, übermittelt. Die übermittelten Worte sind in Fig. 5 dargestellt, in der (a), (b), (c) und (d) die Worte entsprechend dem Koeffizientenparameter, dem Verarbeitungsparameter, dem Koeffizienten und Verarbeitungsbeginn andeuten, wobei zusätzlich zu den vorhergehend erwähnten Symbolen:
s = 0 oder = 1 die Koeffizientenfolge anzeigt, während
nc = 00 für eine 8-Koeffizientenfolge, = 01 für eine 16-, = 10 für eine 24-, = 11 für eine 32-Koeffizientenfolge und
d = 0 für eine Zeilenfaltung, = 1 für eine Spaltenfolge ist.
Da verschiedene Worte durch den Code, der durch die beiden signifikantesten Bits gebildet wird, identifiziert werden, können Parameter und Koeffizienten in irgendeiner Abfolge überführt werden. Schließlich kann eine Übertragung eine Anzahl von Steuersignalen zum Verarbeitungsbeginn (einer eindimensionalen Faltung) zum Programmieren der Verarbeitung einer trennbaren zweidimensionalen Faltung enthalten.
Speicher 3 kann eine Gesamtbildfolge (beispielsweise 512·512 8-Bit-Daten) enthalten und wird durch den Rechner 8 mit der Folge zum Verarbeiten geladen.
Während der Verarbeitung durch Einheit 2 sind die Daten zum Verarbeiten sequentiell in Zeilen Zyklus für Zyklus aus dem Speicher 3 zu lesen und die Resultate (approximiert zu 8 Bits) in der gleichen Weise einzulesen.
Bei Verwendung nur eines Speichers mit einer Gesamtkapazität gleich der Anzahl der Elemente in einer Folge werden die Resultate anstelle der anfänglichen Daten gespeichert (es sei denn, daß eine Anzahl von Speichermodulen 3 vorgesehen ist, wie gestrichelt in Fig. 1 angedeutet ist).
Dies stört jedoch in keiner Weise die Verarbeitung, da jedes Datum nur einmal gelesen wird und das in eine bestimmte Position abzuspeichernde Resultat nur erhältlich ist, nachdem das Datum, das in dieser Position enthalten war, bereits ausgelesen ist. Das einzige damit verbundene Problem ist daher nicht so sehr die Verwendung der Speicherplätze als vielmehr die Geschwindigkeit, die erforderlich ist, da für jeden Zyklus einen Lese- und einen Schreibvorgang durchzuführen ist.
Da die Daten entsprechend einer bekannten Folge (in diesem speziellen Falle aufeinanderfolgend in Zeilen oder Spalten) gespeichert oder gelesen werden müssen, ermöglichen es spezielle Speicheranordnungen, Daten mit größerer Geschwindigkeit auszutauschen, als es nur ein Speicher erlaubt. Wie in Fig. 6 dargestellt ist, setzt sich der Speicherblock 3 aus vier identischen Banken A, B, C und D zusammen, die jeweils bestehen aus:
-einem RAM mit 64 kByte;
-einem Register 80 zum zeitweiligen Speichern jedes Datums, das in der speziellen Bank gelesen wurde;
-einem Paar von Registern 81 und 82, die abwechselnd zum zeitweiligen Speichern jedes Datums aktiviert werden, das in die spezielle Bank zu schreiben ist.
Ferner sind an sich bekannte Steuerkreise (nicht dargestellt), die gemeinsam für alle vier Banken verwendet werden, vorgesehen.
Eine Speicherbank ist charakterisiert durch Kapazität und Zugriffszeit. Die Kapazität jedes der vier Banken beträgt 64 kByte, welcher Wert abhängig ist von der Anzahl der verwendeten RAM-Einrichtungen (von 8 K-Worten von 8 Bit).
Die Zugriffszeit (150-200 ns) ist die Zeit, die benötigt wird, um einen Lesevorgang durchzuführen (um ein gegebenes Datum zugänglich zu machen) oder einen Schreibvorgang (zum Abspeichern eines gegebenen Datums.
Die in Rede stehende Anordnung erlaubt nicht die Durchführung eines Lese- oder Schreibvorgangs innerhalb einer Zeitperiode (125 ms), jeder Vorgang wird in zwei aufeinanderfolgenden Perioden (d. h. 250 ns) durchgeführt. Aufgrund des Parallelbetriebs der vier Banken wird jedoch die entsprechende Zugriffszeit viermal weniger.
Mit Hilfe der Register ist daher der Speicher 3 als Ganzes fähig, ein Datum pro Zyklus zu lesen und zu schreiben, wie es durch die Arithmetikeinheit 2, wenn diese bei maximaler Geschwindigkeit arbeitet, erforderlich ist.
Die verarbeiteten Daten sind Elemente zweidimensionaler Folgen, die als solche durch ein Paar von Koordinaten indiziert sind. Jedes Datum wird zusammen mit einem Adressencode gespeichert, wobei jede Folge ihre eigene alleinige Koordinatenadressenkombination besitzt. Während des Verarbeitens wird das Resultat w(l, m) in die gleiche Position geschrieben, in der x(l, m) gespeichert war.
Wenn beispielsweise eine einzelne Speicherbank mit 256 k vorhanden ist, kann das durch die Koordinaten (i, j) indizierte Datum in der Position gespeichert werden, die durch folgenden Adressencode indiziert ist:
α 0(i, j) = (i·512) + j
Wenn 0 i, j 511, ergibt dies 0 α 0(i, j) (256·1024)-1. Wenn vier Banken mit 64 k vorhanden sind, muß jedoch jedes Datum einem gegebenen Speicher zugeordnet werden, so daß aufeinanderfolgende Daten in Zeilen und Spalten, die gleichzeitig gelesen oder geschrieben werden in verschiedenen Banken sind.
Das durch die Koordinaten (i, j) indizierte Datum wird in die Bank A, B, C oder D entsprechend nachfolgender Bedingung geschrieben:
(i+j) mod.4 = 0, 1, 2 oder 3.
Dieses Datum besitzt daher folgenden Adressencode
α(i, j) = (i·128) + (j/4),
wobei
0 i, j 511 mit 0 α(i, j) (64· 1024)-1
ist, wobei der Rest einer ganzzahligen Division vernachlässigt wird.
Jedes der Eingangsregister 81 und 82 jeder Bank ermöglicht daher Zugang zu der lokalen Leitung 5 alle vier Zyklen für einen Schreibvorgang. Entsprechendes gilt für die Ausgangsregister 80, aufgrund der Steuerlogik wird ein zyklischer Zugriff zu den Videodaten (Speicherlesen) ermöglicht. In diesem Falle werden die Daten in Zeilen oder Spalten abhängig von dem durch den Operator ausgewählten Programm gelesen.
Im Einzelnen wird nun das Verarbeiten einer Zeile von Daten unter Bezugnahme auf den Betrieb des Speicherblocks 3 beschrieben, wobei angenommen wird, daß die Einheit 2 einen Verarbeitungsvorgang pro Taktperiode durchführt, d. h. einen Verarbeitungsvorgang mit einer 8-Koeffizientenfolge und einem einzigen Modul oder einer mehrfachen Länge mit mehreren Modulen (Fig. 4).
Innerhalb des Speichers 3 führen die RAM′s alternierende Lese- und Schreibvorgänge aus. Zunächst seinen Lesevorgänge betrachtet, d. h. die Ausgangsdaten.
Vervollständigung eines Lesevorgangs durch die RAM′s wird markiert durch die Anstiegsflanke des Schreibsteuersignals des Ausgangsregisters 80. Nachfolgend zum Lesen werden vier Daten, eines für jede Bank in die entsprechenden Ausgangsregister 80 jeder Bank geschrieben. Diese Daten werden dann sequentiell auf den Ausgang des Speichers 3 während der nächsten vier Taktperioden gegeben, wodurch die Ausgänge des Registers 80 einer zu einer Zeit betriebsbereit sind.
Das nächste Datenlesen wird durch die RAM′s zwei Taktzyklen später durchgeführt. Folglich werden am Ende des vierten Zyklus nachfolgend zu einem Lesevorgang, in welchem Zyklus die Daten, die im Ausgangsregister 80 gespeichert sind, verwendet werden, die zum Ausgang des Speichers 3 in den nächsten vier Zyklen zu gebenden Daten in das Register 80 eingelesen. Zwischen zwei aufeinanderfolgenden Lesevorgängen werden daher zwei Taktperioden belassen, die verfügbar sind, so daß die RAM′s vier Resultate schreiben können.
Um mit dem Beispiel der Verarbeitung einer ersten Zeile fortzufahren, wobei nur der Spaltenindex 0 K 127 angegeben ist, sei angenommen, daß nur ein Eingangsregister pro Bank existiert, das erste Datum w(4K) in das Register der Bank A geschrieben wird und Daten w(4K+1), w(4K+2), w(4K+3), die in den folgenden Zyklen empfangen werden, in die entsprechenden Register der Banken B, C und D geschrieben werden. An dieser Stelle ist es möglich, diese Werte gleichzeitig in die RAM′s zu schreiben, vorausgesetzt, daß diese Werte in der Periode zwischen zwei Lesevorgängen verfügbar sind, was nicht immer der Fall ist. Diese vier Daten sind nur simultan stabil während einer Taktperiode, in der Tat wird, nachdem w(4K+3), das letzte in der Gruppe von vier Daten, in das Register der Bank D geschrieben wurde, w(4K+4) empfangen, das in das Register der Bank A anstelle von w(4K) geschrieben werden muß. Dies alleine würde jedoch den Schreibvorgang aufgrund des RAM-Aufbaus nicht beeinträchtigen.
Der Schreibvorgang, der notwendigerweise zwischen zwei Lesevorgängen durchgeführt werden muß, sollte daher immer Werte von aufeinanderfolgenden, obwohl nicht strikt gruppenbezogenen Koordinaten, aufweisen, was eine entsprechende komplexe Steuerlogik zum Erzeugen der Adressen der vier RAM-Banken erfordert.
Im vorliegenden Falle jedoch besteht die Lösung in einer Verdoppelung der Eingangsregister (81 und 82), die zusätzlich zur Vereinfachung des Aufbaus einen Hochgeschwindigkeitszugriff liefern.
Durch Verdoppelung der Register 81 und 82 brauchen die dem Eingang des Speichers 3 (noch immer unter Bezugnahme auf die erste Zeile) angelegten Werte nur aufeinanderfolgend in Register geschrieben werden: 82 von Bank A, 82 von Bank B, 82 von Bank C, 82 von Bank D, 81 von Bank A, 81 von Bank B, 81 von Bank C, 81 von Bank D, und so weiter, wieder beim ersten beginnend. Im Intervall zwischen zwei Lesevorgängen enthalten daher die Register 82 oder 81 (alternierend) der vier Banken eine Gruppe von vier Werten, die abgesehen davon, daß sie während des Schreibvorgangs stabil bleiben (was die Verarbeitung derselben erleichtert), kompatibel mit dem RAM-Blockleseadressiersystem sind.
Zum Lesen und/oder Schreiben von Daten in eine allgemeine Zeile (Spalte) i werden die vier Register in jeder Gruppe (vier Ausgangsregister 80, vier Eingangsregister 81 und vier Eingangsregister 82) in folgender Reihenfolge verwendet:
A, B, C, D wenn (i) mod.4 = 0
B, C, D, A wenn (i) mod.4 = 1
C, D, A, B wenn (i) mod.4 = 2
D, A, B, C wenn (i) mod.4 = 3
Wie mit der Arithmetikeinheit 2 können eine Anzahl von identischen Speicherblocks 3 miteinander (in diesem Falle "parallel") verbunden sein, um Resultate einer Faltung ohne Verlust der Ausgangsdaten zu speichern. Wenn beispielsweise zwei Speicherblocks 3 vorhanden sind, werden diese während der Verarbeitung alternierend Lese- und Schreibvorgänge durchführen, wie sie in Bezug auf den einen Speicherblock 3 beschrieben wurden, in welchem Fall nur eine Steuerlogik erforderlich ist, um die Adressen und Steuersignale zu erzeugen.
Während der Verarbeitung, bei der keine Wiederholung in der Arithmetikeinheit 2 erforderlich ist, führt der Speicher 3 einen Lese- und Schreibvorgang für jede Position in einer Gesamtheit von 35 ms durch. Dies ist nur möglich für Operationen, die aufeinanderfolgende Daten in Zeilen oder Spalten berücksichtigen. Die Ordnung, in der Daten für eine Zeilenschaltung gelesen werden, ist jedoch die gleiche wie zum Übertragen dieser Daten zum Rechner, wobei in diesem Falle kein Schreiben erforderlich ist. Das gleiche gilt, wenn Daten in der entgegengesetzten Richtung übertragen werden, in welchem Falle der Speicher 3 nur dazu dient, Schreibvorgänge durchzuführen.
In jeder Speicherbank wird der Betrieb der RAM′s und Register synchronisiert mittels einer teilweise separaten Steuerlogik, so daß die RAM′s einen Vorgang in zwei Zyklen durchführen, während die Register 80, 81 und 82 einen Vorgang pro Zyklus durchführen.
Diese Trennung kann dazu ausgenutzt werden, daß die RAM′s und Register nur Lese- oder nur Schreibvorgänge mit einer Geschwindigkeit von 4 Lese- oder 4 Schreibvorgängen jede 250 ns durchführen.
Im Falle von Lesevorgängen vollführen RAM′s aufeinanderfolgende Nurlesevorgänge, wobei die Daten wie gewöhnlich in Ausgangsregister 80 am Ende jedes Vorgangs gelesen werden. Diese Ausgangsregister 80, die in diesem Fall mittels eines 16 MHz-Taktes gesteuert werden, geben ein Datum alle 62,5 ns ab, das daher die äquivalente Zugriffszeit des Speichers 3 ist.
Ähnlich ist der Schreibvorgang zum Gewinnen des Bildsignals direkt von der Telekamera 9, wie in Fig. 1 gestrichelt angedeutet ist, vorgesehen, wobei der Faltungsblock nur auf Einheit 2, Approximationskreis 6, Speicherblock 3 und Steuerkreis 4 begrenzt ist. Ein Standardfernsehbild ist zusammengesetzt aus etwa 600 Zeilen mit einem Breite/Höhe-Verhältnis von 4/3. Wenn das Analogsignal jeder Zeile in 52 µs übermittelt wird, muß dieses Signal 800 mal, d. h. alle 65 ns, abgetastet werden, um den gleichen Abtastzyklus sowohl für Zeilen als auch für Spalten aufrechtzuerhalten. Zum Abspeichern von Daten bei dieser Geschwindigkeit ist die Verwendung von doppelten Eingangsregistern der RAM′s erforderlich.
Bei Verwendung doppelter Eingangsregister (und Eingeben von Daten in Zyklen wie üblich) wird, während ein Satz von Registern (beispielsweise Eingangsregister 81) den RAM mit einer stabilen Gruppe von vier Daten zum Speichern versorgt, der andere Satz (Eingangsregister 82) temporär mit den eingehenden Daten geladen, die den RAM′s während des nächsten Vorgangs eingegeben werden.
Die Vorteile eines Faltungsblocks 1 gemäß der Erfindung sind aus dem vorstehenden klar ersichtlich. Insbesondere ist er sehr vielseitig sowohl in Bezug auf verbesserte Schaltkreise für den Arithmetikkreis 2 in Bezug auf Erfordernisse eines Realzeitbetriebs als auch in Bezug auf Programmieren zum Ausdehnen des Anwendungsgebiets.
Weiterhin liefert Block 1 einen direkten, zielgerichteten Betrieb mit Makroinstruktionen bezüglich Filtergröße, Koeffizienten, Endresultatformat und die Folge von zwei eindimensionalen Faltungen, die zur Vornahme zweidimensionaler Faltungen erforderlich sind.
Innerhalb bestimmter Grenzen können verschiedene sequentielle eindimensionale Faltungen im Wiederholungsmodus durchgeführt werden, um äquivalente Größenfilter von sogar mehr als 32 Koeffizienten zu erhalten. Die Präzision von Block 1 gemäß der Erfindung ist daher geeignet für allgemeinere Bildaufnahme- und Verarbeitungsanwendungen.
Die Möglichkeit des Zurückführens von Teilresultaten verbessert betrtächtlich die Vielseitigkeit der Arithmetikeinheit 2. Verschiedene Konfigurationen können ausgewählt werden zwischen zwei Extrema, wobei N Module kaskadenartig verbunden sind zum Erhalten von 8 N Koeffizienten in einer Hochgeschwindigkeitsfaltung, oder ein einzelner Modul wird verwendet für einen Faltungsblock, der N-mal langsamer ist.
Die gleichförmige, sich wiederholende Ausbildung der Struktur der Einheit 2 durch Ausbildung verschiedener identischer Stufen 11 ist eine wesentliche Charakteristik, die es ermöglicht, ihn in VLSI-Integrationstechnik auszuführen. In der Tat kann die Herstellung eines teuern VLSI-Schaltkreises nur von Vorteil sein, wenn dieser als Elementarmodul für verschiedene parallele Strukturen verwendet werden kann.
Die Ausbildung eines Systems, das nur den Faltungsblock 1 mit direktem Datenzugriff von der Telekamera 9 aufweist, liefert sogar eine noch vielseitigere Anwendung, indem die Telekamera 9 von dem Hauptrechner 8 abgetrennt werden kann.

Claims (17)

1. Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung, dadurch gekennzeichnet, daß wenigstens eine Arithmetikeinheit (2), die eine Anzahl von miteinander verbundenen Verarbeitungszellen (11, 11′) mit wenigstens teilweise gemeinsamen Eingängen (50) aufweist und derart ausgebildet ist, um ein- oder zweidimensionale Faltungen mit separablen Variablen durchzuführen, und eine Speichereinrichtung (3) vorgesehen sind, die wenigstens die der Faltung zu unterwerfenden Daten speichert.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß sie Mittel (14, 14′) zum Speichern der Koeffizienten der Verarbeitungsoperation umfaßt.
3. Einrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Verarbeitungszellen (11, 11′) im wesentlichen identisch sind.
4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß jede der Zellen (11, 11′) einen Multiplizierer (12) umfaßt, der mit den zu verarbeitenden Daten und den Koeffizienten für die Verarbeitungsoperation versorgt wird, und dessen Resultate auf einen Addierer (13) gegeben werden, der ferner mit dem Ausgang einer vorhergehenden Zelle (11, 11′) gespeist wird, wobei der Ausgang des Addierers (13) auf ein Speicherregister (15, 15′) gegeben wird, dessen Ausgang (49) den Ausgang der Zelle (11, 11′) bildet.
5. Einrichtung nach Anspruch 4, dadurch gekennzeichnet, daß die Arithmetikeinheit (2) eine Anzahl von Zellen (11′) aufweist, von denen jede eine zweite Anzahl von Speichermitteln (14′) für die Koeffizienten des Verarbeitungsvorgangs und Register (15′) zum Speichern des Ausgangs des entsprechenden Addierers (13) besitzt, wobei das Speichermittel (14′) und die Register (15′) "in Spalten" in jeder Verarbeitungsstufe angesteuert werden, und daß die Arithmetikeinheit (2) ferner einen Abtaster (33) aufweist, der wahlweise den Eingang des Addierers (13) der ersten Zelle (11′) an eine externen Eingang (P) oder Ausgänge der Register (15′) der letzten stromabwärtigen Zelle (11′) derart verbindet, daß eine wiederholte Verarbeitung mit einer Anzahl von Stufen gleich der der zweiten Anzahl ermöglicht wird, wobei in jeder Stufe auf den Abtaster (33) der Ausgang des Registers (15′) der letzten Zelle (11′), die in der vorhergehenden Stufe angesteuert wurde, übertragen wird.
6. Einrichtung nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die Speichereinrichtung (3) eine Anzahl von Speicherbanken (A, B, C, D) umfaßt, die parallel untereinander verbunden sind.
7. Einrichtung nach Anspruch 6, dadurch gekennzeichnet, daß jede der Banken (A, B, C, D) einen RAM-Speicher, ein erstes Register (80) zum zeitweiligen Speichern jedes Datums, das in dem Speicher gelesen wird, und wenigstens ein zweites Register (81, 82) zum zeitweiligen Speichern jedes Datums, das in den Speicher gelangt, umfassen.
8. Einrichtung nach Anspruch 7, dadurch gekennzeichnet, daß jede der Banken (A, B, C, D) zwei zweite Register (81, 82), die alternativ aktivierbar sind, umfaßt.
9. Einrichtung nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß die von der Arithmetikeinheit (2) erhaltenen Resultate in der Speichereinrichtung (3) anstelle der Ausgangsdaten für die Verarbeitung speicherbar sind.
10. Einrichtung nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß Mittel (6) zum Approximieren der Endresultate von der Arithmetikeinheit (2) vorgesehen sind.
11. Einrichtung nach Anspruch 10, dadurch gekennzeichnet, daß die Approximiereinrichtung (6) Kombinationslogikelemente umfaßt und ausgebildet ist, um von einem von der Einheit (2) erhaltenen Wort eine beschränktere Gruppe von Bits in irgendeiner Position auszuwählen.
12. Einrichtung nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß Mittel (4) zum Steuern der Verarbeitungsstufen der Einrichtung (1) und zur Interface-Verbindung mit einem externen Rechner (8) vorgesehen sind.
13. Einrichtung nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet, daß die Operation zur Durchführung der Faltung zum Zwecke der "Kantenextraktion" bei Bildern dienen.
14. Einrichtung nach einem der Ansprüche 1 bis 13, dadurch gekennzeichnet, daß die Daten erhalten werden durch Einrichtungen zum Betrachten der Umgebung.
15. Einrichtung nach Anspruch 14, dadurch gekennzeichnet, daß eine Telekamera (9) vorgesehen ist.
16. Einrichtung nach einem der Ansprüche 1 bis 15, dadurch gekennzeichnet, daß die Bilddaten von einem Rechner (8) außerhalb der Einrichtung (1) aufgenommen werden.
17. Einrichtung nach Anspruch 15, dadurch gekennzeichnet, daß die Daten von der Telekamera (9) direkt zu dem Speicher (3) übermittelt werden.
DE3632639A 1985-09-27 1986-09-25 Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung Expired - Fee Related DE3632639C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT67826/85A IT1182575B (it) 1985-09-27 1985-09-27 Sistema per realizzare elaborazioni convolutive veloci su informazioni rappresentative di immagini

Publications (2)

Publication Number Publication Date
DE3632639A1 true DE3632639A1 (de) 1987-04-02
DE3632639C2 DE3632639C2 (de) 1999-08-05

Family

ID=11305580

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3632639A Expired - Fee Related DE3632639C2 (de) 1985-09-27 1986-09-25 Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung

Country Status (5)

Country Link
US (1) US4907182A (de)
DE (1) DE3632639C2 (de)
FR (1) FR2588142A1 (de)
GB (1) GB2180968B (de)
IT (1) IT1182575B (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336180B1 (en) 1997-04-30 2002-01-01 Canon Kabushiki Kaisha Method, apparatus and system for managing virtual memory with virtual-physical mapping
CA1283738C (en) * 1985-11-13 1991-04-30 Atsushi Hasebe Data processor
US5239628A (en) * 1985-11-13 1993-08-24 Sony Corporation System for asynchronously generating data block processing start signal upon the occurrence of processing end signal block start signal
FR2625577A1 (fr) * 1987-12-30 1989-07-07 Trt Telecom Radio Electr Dispositif de correlation comportant n entrees et ensemble de tels dispositifs
US5138695A (en) * 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
GB8925720D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
GB8925723D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
US5001661A (en) * 1990-01-23 1991-03-19 Motorola, Inc. Data processor with combined adaptive LMS and general multiplication functions
US5031132A (en) * 1990-02-27 1991-07-09 Analogic Corporation Circuit for convolving a set of digital data
US5511015A (en) * 1993-11-30 1996-04-23 Loral Vought Systems Corporation Double-accumulator implementation of the convolution function
KR970049860A (ko) * 1995-12-30 1997-07-29 이대원 컨벌류션 계산 장치
AUPO648397A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6311258B1 (en) 1997-04-03 2001-10-30 Canon Kabushiki Kaisha Data buffer apparatus and method for storing graphical data using data encoders and decoders
AUPO647997A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
US6061749A (en) * 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
US6707463B1 (en) 1997-04-30 2004-03-16 Canon Kabushiki Kaisha Data normalization technique
US6289138B1 (en) 1997-04-30 2001-09-11 Canon Kabushiki Kaisha General image processor
US6195674B1 (en) 1997-04-30 2001-02-27 Canon Kabushiki Kaisha Fast DCT apparatus
US8130229B2 (en) 2009-11-17 2012-03-06 Analog Devices, Inc. Methods and apparatus for image processing at pixel rate
EP3035204B1 (de) 2014-12-19 2018-08-15 Intel Corporation Speichervorrichtung und Verfahren zur Durchführung von Faltungsoperationen
CN108073549B (zh) * 2016-11-14 2021-04-27 耐能股份有限公司 卷积运算装置及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4489393A (en) * 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3748451A (en) * 1970-08-21 1973-07-24 Control Data Corp General purpose matrix processor with convolution capabilities
US4025769A (en) * 1975-07-07 1977-05-24 The Singer Company Apparatus for convoluting complex functions expressed as fourier series
US4330833A (en) * 1978-05-26 1982-05-18 Vicom Systems, Inc. Method and apparatus for improved digital image processing
US4541048A (en) * 1978-10-06 1985-09-10 Hughes Aircraft Company Modular programmable signal processor
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
NL8002787A (nl) * 1980-05-14 1981-12-16 Philips Nv Multiprocessor-rekenmachinesysteem voor het uitvoeren van een recursief algorithme.
GB2106287B (en) * 1981-08-18 1986-01-02 Secr Defence Digital data processor
US4507726A (en) * 1982-01-26 1985-03-26 Hughes Aircraft Company Array processor architecture utilizing modular elemental processors
EP0104290B1 (de) * 1982-09-29 1987-12-16 I.R.C.A.M. Institut De Recherche Et De Coordination Acoustique/Musique Digitalprozessor für Echtzeitsignale
US4627026A (en) * 1982-10-21 1986-12-02 I.R.C.A.M. (Institut De Recherche Et De Coordination Accoustique/Misique Digital real-time signal processor
US4580215A (en) * 1983-03-08 1986-04-01 Itt Corporation Associative array with five arithmetic paths
GB2144245B (en) * 1983-07-28 1987-07-29 Secr Defence A digital data processor for matrix/matrix multiplication
GB8326690D0 (en) * 1983-10-05 1983-11-09 Secr Defence Digital data processor
DE3436276A1 (de) * 1983-10-05 1985-05-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V., 8000 München Einrichtung zur digitalen verarbeitung von grauwertbildern mit lokalen operatoren, schritthaltend mit der bildabtastung durch eine fernsehkamera
US4698751A (en) * 1984-07-13 1987-10-06 Ford Aerospace & Communications Corporation Systolic array for solving cyclic loop dependent algorithms
US4694416A (en) * 1985-02-25 1987-09-15 General Electric Company VLSI programmable digital signal processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4489393A (en) * 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit

Also Published As

Publication number Publication date
IT1182575B (it) 1987-10-05
US4907182A (en) 1990-03-06
FR2588142B1 (de) 1994-08-19
GB2180968B (en) 1989-10-25
GB8623083D0 (en) 1986-10-29
GB2180968A (en) 1987-04-08
DE3632639C2 (de) 1999-08-05
FR2588142A1 (fr) 1987-04-03
IT8567826A0 (it) 1985-09-27

Similar Documents

Publication Publication Date Title
DE3632639C2 (de) Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung
DE2625973C3 (de) Verfahren und Anordnung zur redundanzvermindernden Transformation von Bildern
DE3689926T2 (de) Einrichtung zur sequenziellen Bildtransformation.
DE68921847T2 (de) Verfahren und Anordnung zur Filterung des Bilddarstellungssignals.
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE3486316T2 (de) System und Verfahren zum Umformen und Filtern von Videobildern.
DE69728247T2 (de) Pyramidenförmiger pipeline-prozessor für ein bildverarbeitungssystem
DE3853855T2 (de) Schnelle zwei-ton zu grauwert-bildskalierung.
DE2640157A1 (de) Verfahren und anordnung zum redundanzvermindernden codieren von bildern
DE69031865T2 (de) Ein SIMD-Prozessor als digitales Filter
DE1302494B (de)
DE2311220A1 (de) Digital-informations-verarbeitungsvorrichtung zur zeichenerkennung
DE3687789T2 (de) Bildsignalverarbeitungsgeraet.
DE4038240A1 (de) Prozessor zum durchfuehren einer orthogonaltransformation
DE3209073A1 (de) Anordnung zum umsetzen der zahl von abtastlinien
DE3038195A1 (de) Vorrichtung zur verarbeitung von visueller information
DE3889150T2 (de) Filter n-ten Ranges.
DE3786986T2 (de) Bildbehandlungsvorrichtung.
DE69209400T2 (de) Zweidimensionaler nichtrekursiver Filter
DE69115530T2 (de) System zum Filtern eines Bildes
EP0346750B1 (de) Anordnung zur DPCM-Codierung mit hoher Datenrate
EP0254824A2 (de) Verfahren zur zweidimensionalen diskreten Cosinus-Transformation
DE3436276C2 (de)
DE3634691A1 (de) Differenzpulscodemodulator sowie dessen verwendung als demodulator
DE3340078A1 (de) Prozessor-zelle zur verwendung in einer aus derartigen zellen gebildeten anordnung

Legal Events

Date Code Title Description
8127 New person/name/address of the applicant

Owner name: ELSAG BAILEY S.P.A., GENUA/GENOVA, IT

8128 New person/name/address of the agent

Representative=s name: SPARING, K., DIPL.-ING. ROEHL, W., DIPL.-PHYS. DR.

8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee