DE3632639A1 - Einrichtung zum verarbeiten von bilddaten durch faltung - Google Patents
Einrichtung zum verarbeiten von bilddaten durch faltungInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 85
- 238000000605 extraction Methods 0.000 claims description 6
- 238000000034 method Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 12
- 238000012546 transfer Methods 0.000 description 8
- 238000007792 addition Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000000630 rising effect Effects 0.000 description 4
- 102000004381 Complement C2 Human genes 0.000 description 3
- 108090000955 Complement C2 Proteins 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000001364 causal effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 210000001525 retina Anatomy 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional 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
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)
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)
+ 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.
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.
-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
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
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.
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)
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)
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)
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 |
-
1985
- 1985-09-27 IT IT67826/85A patent/IT1182575B/it active
-
1986
- 1986-09-17 US US06/908,392 patent/US4907182A/en not_active Expired - Fee Related
- 1986-09-25 GB GB8623083A patent/GB2180968B/en not_active Expired
- 1986-09-25 DE DE3632639A patent/DE3632639C2/de not_active Expired - Fee Related
- 1986-09-26 FR FR8613488A patent/FR2588142A1/fr active Granted
Patent Citations (1)
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 |