DE69424464T2 - Videobildverarbeitungssystem mit neuronalem Netzwerk - Google Patents

Videobildverarbeitungssystem mit neuronalem Netzwerk

Info

Publication number
DE69424464T2
DE69424464T2 DE69424464T DE69424464T DE69424464T2 DE 69424464 T2 DE69424464 T2 DE 69424464T2 DE 69424464 T DE69424464 T DE 69424464T DE 69424464 T DE69424464 T DE 69424464T DE 69424464 T2 DE69424464 T2 DE 69424464T2
Authority
DE
Germany
Prior art keywords
values
neural network
output
function
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69424464T
Other languages
English (en)
Other versions
DE69424464D1 (de
Inventor
Pennsylvania 18947 Zortea Anthony
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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
Priority claimed from US08/040,407 external-priority patent/US5376963A/en
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Application granted granted Critical
Publication of DE69424464D1 publication Critical patent/DE69424464D1/de
Publication of DE69424464T2 publication Critical patent/DE69424464T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/60Image enhancement or restoration using machine learning, e.g. neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Processing Of Color Television Signals (AREA)
  • Picture Signal Circuits (AREA)

Description

    Hintergrund der Erfindung
  • Die vorliegende Erfindung bezieht sich auf eine Vorrichtung und ein Verfahren zum Verarbeiten von Videosignalen, um eine Mehrzahl von Signalverarbeitungsfunktionen in einem einzelnen Rechenvorgang bzw. einer einzelnen Operation zu implementieren, und insbesondere auf eine Vorrichtung, welche ein neuronales Netzwerk zur Durchführung dieser Funktionen verwendet.
  • Bei vielen Signalverarbeitungssystemen werden Funktionen sequentiell an Daten angelegt bzw. darauf angewandt. Das bedeutet, dass eine Funktion an die Eingangsdaten angelegt wird und die von dieser Funktion erzeugten Ausgabewerte werden als die Eingangswerte an die nächste Funktion angelegt. Diese Art der Verarbeitung wird allgemein als eine Pipeline-Verarbeitung bezeichnet.
  • Ein beispielhaftes System, welches eine Pipeline-Verarbeitung verwendet, ist eine Videokamera. Eine solche Kamera ist in einem Artikel von K. A. Parulski u. a. beschrieben mit dem Titel "A Digital Color CCD Imaging System Using Custom VLSI Circuits," IEEE Transactions on Consumer Electronics, Band 35, Nr. 3, Seiten 382- 389, August, 1989.
  • Die Kamera, welche in diesem Artikel beschrieben ist, verwendet einen CCD Sensor, welcher Messwerte (samples) aufnimmt bzw. sammelt, welche aufeinanderfolgende Videobilder darstellen. Diese Messwerte werden dann digitalisiert und von einem Farbfilter-Feld (CFA; Color Filter Array)-Signalprozessor und einem Rot-, Grün-, Blau- (RGB) Signal-Nach(Post)-Prozessor verarbeitet. Der CFA Prozessor erzeugt aus den Einzelbild-Messwerten, welche von der CCD Vorrichtung zur Verfügung gestellt werden, einen kompletten Satz von roten (R), grünen (G) und blauen (B) Messwerten. Zusätzlich führt der CFA Prozessor Farbbalance- bzw. Farbausgleichs-Korrekturen bei den RGB Signalen durch. Der RGB Nach- bzw. Post-Prozessor führt Schwarzpegel- bzw. Schwarzwert-Einstellungen, eine Gamma-Korrektur und eine Apertur- bzw. Öffnungwinkel-Korrektur durch.
  • Wie in dem erwähnten Artikel beschrieben, ist der Schaltkreis, welcher verwendet wird, um diese Verarbeitungsfunktionen durchzuführen, in zwei VLSI integrierten Schaltkreisen implementiert bzw. verwirklicht. Diese Schaltkreise stellen eine relativ große Menge eines Schaltkreises für spezielle Zwecke dar, welche nur nach einem aufwendigen bzw. kostenintensiven Entwicklungszyklus hergestellt werden.
  • Zusätzlich zu dem Erfordernis einer relativ großen Menge an Schaltkreisen für spezielle Zwecke verursachen Systeme, wie das in dem in Bezug genommenen Artikel, eine Verzögerung bei ihren Verarbeitungs-Wegen aufgrund des Pipeline-Verfahrens der Signalverarbeitungsvorgänge. Parallele Signalverarbeitungswege können in dem System zum Beispiel vorliegen, wenn eine Audio-Information von der beobachteten Szene parallel zu der Video-Information verarbeitet wird. Die Verzögerungen, welche durch diese Pipeline-Verarbeitung der Video-Information verursacht werden, werden wünschenswert in dem Audio-Signalverarbeitungs-Schaltkreis kompensiert.
  • Während die Verzögerungen des in Bezug genommenen Verarbeitungsschaltkreises für eine Video-Kamera relativ klein sind, können andere Videosignal- Verarbeitungsvorrichtungen ein oder mehrere Vollbild (frame)-Verzögerungselemente in ihren Verarbeitungsschaltkreisen verwenden. Diese Elemente führen zu wesentlicheren Verzögerungen, für welche eine Kompensation schwieriger ist.
  • Des weiteren gibt es einen inhärenten Konflikt bei den Systemen des in dem oben genannten Artikel beschriebenen Typs, zwischen der Präzision bzw. Genauigkeit des Designs und den Kosten, was sich in der Komplexität wiederspiegelt. Viele der Verarbeitungsschritte, welche in einer Video-Kamera durchgeführt werden, werden als relativ einfache mathematische Funktionen modelliert, obwohl diese Funktionen nicht genau mit den gewünschten Verarbeitungsschritten übereinstimmen. Diese funktionalen Modelle werden nur verwendet, weil es nicht kosten-effektiv bzw. kostengünstig wäre, die gewünschten Verarbeitungsschritte gemäß einem genaueren Model zu implementieren, oder mehrere unabhängige Funktionen als ein einzelnes Modell zu implementieren.
  • Eine Vorrichtung, welche ein neuronales Netzwerk zur Verarbeitung eines Eingabesignals in Abhängigkeit von einer linearen Funktion aufweist, ist in der WO 93/03443 offenbart, welche auf japanisch veröffentlicht wurde und der EP-A-0 551 524 entspricht.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung, welche in ihren breitesten Aspekten in den Ansprüchen 1 und 11 definiert ist, ist in einer Vorrichtung und einem Verfahren verkörpert, welche ein neuronales Netzwerk verwenden, um eine Gruppe von unabhängigen nicht-linearen Signalverarbeitungsfunktionen als eine einzelne, kombinierte Funktion durchzuführen. Das neuronale Netzwerk umfasst eine Mehrzahl von Eingabeprozessoren, welche die zu verarbeitenden Signale empfangen. Das Netzwerk umfasst auch eine oder mehrere Schichten an verborgenen (hidden) Prozessoren und eine Schicht von Ausgabeprozessoren. Die Ausgabeprozessoren liefern die verarbeiteten Ausgangssignale.
  • Gemäß einem Aspekt der Erfindung ist das neuronale Netzwerk so trainiert, dass eine erste Funktion einer Gruppe implementiert wird, und wird dann wieder trainiert bzw. umtrainiert für jede andere Funktion in der Gruppe, welche mit der anfänglichen Funktion kombiniert werden soll.
  • Gemäß einem anderen Aspekt der Erfindung wird eine Mehrzahl an Sätzen von Gewichtungsfunktionen für das neuronale Netzwerk definiert, wobei jeder Satz einem jeweils unterschiedlichen Satz von Eingabewertbereichen für die Regel- bzw. Steuerparameter entspricht.
  • Gemäß einem anderen Aspekt der Erfindung wird eine Mehrzahl an Sätzen von Gewichtungsfaktoren für das neuronale Netzwerk definiert, wobei jeder Satz einem jeweils verschiedenen bzw. anderen definierten Satz von Regel- bzw. Steuerparametern entspricht.
  • Gemäß einem anderen Aspekt der Erfindung werden Gewichtungsfaktoren für Regel- bzw. Steuerparameter zwischen (interstitial) den definierten Sätzen der Parameter bestimmt unter Verwendung eines on-line Trainingalgorithmus, welcher auf den definierten Parametersätzen basiert.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 (Stand der Technik) ist ein Blockdiagramm eines beispielhaften Pipeline- Verarbeitungs-Systems.
  • Fig. 2 ist ein Blockdiagramm, welches veranschaulicht, wie das Pipeline- Verarbeitungs-System von Fig. 1 unter Verwendung eines neuronalen Netzwerks implementiert werden kann.
  • Fig. 3 (Stand der Technik) ist ein Blockdiagramm eines beispielhaften Videosignal- Verarbeitungssystems, welches in einer Videokamera verwendet werden · kann.
  • Fig. 4 ist ein Blockdiagramm eines Videokamera-Signal-Verarbeitungssystems, welches eine Ausführungsform der vorliegenden Erfindung aufweist.
  • Fig. 4a ist ein Blockdiagramm eines Videokamera-Signal-Verarbeitungssystems, welches eine alternative und allgemeinere Ausführungsform der vorliegenden Erfindung aufweist.
  • Fig. 5 ist ein Blockdiagramm eines neuronalen Netzwerks, welches zur Verwendung in dem in Fig. 4 gezeigten Videokamerasystem geeignet ist.
  • Fig. 6 ist ein Blockdiagramm eines beispielhaften Eingabe-Schicht-Prozessors, welcher zur Verwendung in dem in Fig. 5 gezeigten neuronalen Netzwerk geeignet ist.
  • Fig. 6a ist ein schematisches Schaubild eines beispielhaften analogen Prozessors, welcher als einer der Eingabeschicht-, verborgene (hidden) Schicht- oder Ausgabeschicht-Prozessoren des in Fig. 5 gezeigten Netzwerks verwendet werden kann.
  • Fig. 7 ist ein Blockdiagramm eines Prozessors für eine verborgene Schicht, welcher zur Verwendung in dem in Fig. 5 gezeigten neuronalen Netzwerk geeignet ist.
  • Fig. 8 ist ein Blockdiagramm eines Prozessors für eine Ausgabeschicht, welcher zur Verwendung für das in Fig. 5 gezeigte neuronale Netzwerk geeignet ist.
  • Fig. 9 ist ein Ablaufdiagramm, welches zur Beschreibung der Programmierung der in den Fig. 4 und 4a gezeigten neuronalen Netzwerke nützlich ist.
  • Fig. 10 ist ein Ablaufdiagramm, welches zur Beschreibung des Verfahrens nützlich ist, durch welches das neuronale Netzwerk unter Verwendung der erzeugten Muster trainiert wird, wie in einem der Schritte des Ablauf-Diagramms von Fig. 9 gezeigt.
  • Fig. 11 ist ein Diagramm von Eingangssignalwerten gegenüber Ausgangssignalwerten, welches die Leistungsfähigkeit des in Fig. 4a gezeigten Systems, verglichen mit einem idealen System, veranschaulicht.
  • Fig. 12 ist ein Blockdiagramm, welches veranschaulicht, wie das Pipeline- Verarbeitungs-System von Fig. 1 unter Verwendung eines neuronalen Netzwerks implementiert werden kann.
  • Fig. 13 (Stand der Technik) ist ein Blockdiagramm eines beispielhaften Videosignal-Verarbeitungssystems, welches in einer Videokamera verwendet werden kann.
  • Fig. 14a ist ein Blockdiagramm eines Videokamera-Signal-Verarbeitungssystems, welches eine erste beispielhafte Ausführungsform der vorliegenden Erfindung einschließlich einer Trainingseinheit aufweist.
  • Fig. 14b ist ein Blockdiagramm eines Videokamera-Signal-Verarbeitungssystems, welches eine zweite beispielhafte Ausführungsform der vorliegenden Erfindung einschließlich einer modifizierten bzw. abgeänderten Trainingseinheit aufweist.
  • Fig. 15a ist ein Knoten-Diagramm eines neuronalen Netzwerks, welches zur Verwendung in der vorliegenden Erfindung geeignet ist.
  • Fig. 15b ist ein funktionales Block-Diagramm einer beispielhaften Hardware- Implementation von Fig. 15a.
  • Fig. 16 ist ein Blockdiagramm eines beispielhaften Eingabeschicht-Knotens, welcher zur Verwendung in dem in Fig. 15a gezeigten neuronalen Netzwerk geeignet ist.
  • Fig. 17 ist ein Blockdiagramm eines Knotens einer verborgenen (hidden) Schicht, welcher zur Verwendung in dem in Fig. 15a gezeigten neuronalen Netzwerk geeignet ist.
  • Fig. 18 ist ein Blockdiagramm eines Ausgabeschicht-Knotens, welcher zur Verwendung in dem in Fig. 15a gezeigten neuronalen Netzwerk geeignet ist.
  • Fig. 19a und 19b sind Diagramme, welche den Zeitablauf bzw. die Zeitsteuerung ·· einer off-line bzw. on-line Netzwerkverarbeitung veranschaulichen.
  • Fig. 20a, 20b und 20c sind Diagramme, welche die Ergebnisse, welche durch das neuronale Netzwerk der vorliegenden Erfindung erhalten wurden, mit einem herkömmlichen Verfahren vergleichen; und
  • Fig. 21 zeigt ein Ablaufdiagramm, welches eine geeignete on-line Training- Technik veranschaulicht, welche beispielhaften Ausführungsform verwendet wird.
  • Ausführliche Beschreibung Übersicht
  • Fig. 1 zeigt ein typisches Pipeline-Signalverarbeitungs-System. Bei diesem System werden drei Eingabesignale V1, V2 und V3 sequentiell durch die Prozessoren 110, 112 und 114 verarbeitet, um drei Ausgabesignale V1', V2' und V3' zu erzeugen. In diesem Beispiel werden die Prozessoren 110, 112 und 114 durch die Parameter P1, P2 bzw. P3 gesteuert. In dem in Fig. 1 gezeigten System ist jeder der Prozessoren 110, 112 und 114 unabhängig, jeder führt eine genau defmierte Operation bzw. Verknüpfung bei bzw. mit seinen Eingabedatenwerten durch, um seine Ausgabendatenwerte zu erzeugen.
  • Eine der zugrundeliegenden Ideen der vorliegenden Erfindung ist es, ein System, wie das in Fig. 1 gezeigte, durch ein ansonsten äquivalentes System zu ersetzen, wie zum Beispiel das in Fig. 2 gezeigte. In Fig. 2 ist das neuronale Netzwerk 210 so verschaltet bzw. verknüpft, um beide, die Datensignaleingaben V1, V2 und V3 und die Parameter-Eingabesignale P1, P2 und P3 als Eingaben zu empfangen. Das neuronale Netzwerk 210 erzeugt die Ausgabesignale V1', V2' und V3', wie in Fig. 1.
  • Das in Fig. 2 gezeigte System weist viele Vorteile gegenüber dem in Fig. 1 gezeigten auf. Erstens sind alle drei Prozesse bzw. Verarbeitungsschritte unter Verwendung eines einzelnen Satzes einer Hardware implementiert. Dies verringert die Entwicklungs- und Entwurfs(design)-Zeit und kann, in Abhängigkeit von der relativen Komplexität der verschiedenen Systeme, auch Kosten verringern. Zweitens kann ein einzelner Fehler in einem der Prozessoren 110, 112 und 114 das gesamte in Fig. 1 gezeigte System arbeitsunfähig machen, wohingegen ein einzelner Fehler in dem in Fig. 2 gezeigten System viele der Ausgabewerte für einen gegebenen Satz an Eingabewerten unbeeinflusst lassen kann. Drittens kann es Vorteile bei der Implementierung bzw. Verwirklichung der Prozesse bzw. Verfahrensschritte auf einem neuronalen Netzwerk geben, wenn jeder der Prozesse, welcher von den Prozessoren 110, 112 und 114 durchgeführt wird, sehr spezifisch (subjective) oder schlecht durch herkömmliche Einzelverarbeitungs-Techniken modelliert ist, weil es das neuronale Netzwerk ermöglicht, einen höheren Grad der Abstraktion bei der zu implementierenden Funktion zu realisieren; das heißt, nicht auf irgendein übermäßig vereinfachtes mathematisches Model beschränkt ist.
  • Bei den Materialien bzw. Unterlagen, welche folgen, ist das Videosignal- Verarbeitungssystem in dem Kontext einer Videokamera beschrieben. Es wird jedoch festgestellt, dass die beschriebene Erfindung eine allgemeinere Anwendung bei einer Videosignalverarbeitung haben kann. Es wird auch festgestellt, dass die Erfindung eine allgemeine Anwendung bei einer Nicht-Videosignalverarbeitung haben kann, bei welcher die Verarbeitungs- bzw. Prozess-Schritte sequentiell durchgeführt werden und die tatsächlich durchgeführten Prozesse bzw. Verfahrensschritte spezifischer bzw. subjektiver als allgemein bzw. objektiv sind.
  • Ausführliche Beschreibung der beispielhaften Ausführungsformen
  • Fig. 3 ist ein Blockdiagramm eines beispielhaften digitalen Videokamerasystems. In der Figur wird Licht von einer Szene bzw. einem Bild auf separate bzw. getrennte rot, grün und blau ladungsgekoppelte Bauelemente (CCD; Charge Coupled Devices) als Abbildungsvorrichtungen 310 fokussiert. Die CCD Abbildungsvorrichtungen 310 erzeugen analog abgetastete bzw. aufgenommene Datensignale, welche jeweils die roten, grünen und blauen Farbkomponenten bzw. Farbbestandteile der Szene darstellen, wenn ein Bild der Szene auf die CCD Abbildungsvorrichtung fokussiert wird. Diese Signale werden an einen Analog-zu-Digital-Wandler (ADC) 312 angelegt, welcher die einfachen analogen Datensignale in digitale Abtastwert(sample)-Datensignale wandelt.
  • Die von dem ADC 312 erzeugten digitalen Signale werden an Videoeingabeschaltkreise 314 angelegt. Bei diesem beispielhaften Schaltkreis sind die Video-Eingabeschaltkreise Signalspeicher bzw. Latches, welche verwendet werden, um die digitalen Werte zu synchronisieren, welche von dem ADC 312 zur Verfügung gestellt werden, mit dem Rest des Kamera-Signal-Verarbeitungs-Schaltkreises.
  • Der erste Signalverarbeitungsschritt nach der Analog-zu-Digital Wandlung ist der Korrekturschritt für feste bzw. feststehende Muster, welcher durch den Prozessor 316 durchgeführt wird. Dieser Schritt kann zum Beispiel ein Bild speichern, welches dem Dunkelstrom (dark current) entspricht, welcher durch die CCD Abbildungsvorrichtungen 310 geliefert bzw. zur Verfügung gestellt wird (d. h. die Ladungswerte, welche von dem CCD bei der Abwesenheit von Licht erzeugt werden) und kann dieses Dunkelstrombild von den Bildsignalen subtrahieren, welche von dem Videoeingabeschaltkreis 314 zur Verfügung gestellt werden.
  • Die Ausgangssignale, welche von dem Korrekturschaltkreis 316 für feste Muster erzeugt werden, werden an einen Farb-Balance-Prozessor 318 angelegt. Der Prozessor 318 stellt relative Verstärkungsfaktoren für jedes der Rot, Grün und Blau-Signale so ein, so dass das hellste Objekt in dem Blickfeld der Kamera auf dem wiedergegebenen Bild weiß erscheinen wird.
  • Die Farb-Balance-Kalibrierung wird im allgemeinen nur einmal durchgeführt, während der anfänglichen Kameraeinstellung (set up). Die Vergrößerungs- oder Verstärkungs- Faktoren, welche bei diesem Kalibrierungsschritt entwickelt bzw. erzeugt werden, werden jedoch an die Rot-, Grün- und Blau-Signale angelegt, welche von dem Musterkorrekturschalikreis 316 zur Verfügung gestellt werden, während dem Rest der normalen Bildverarbeitung.
  • Die Ausgabesignale, welche von dem Farb-Balance-Prozessor 318 zur Verfügung gestellt werden, werden parallel an einen Satz von Apertur- bzw. Öffnungs-Filtern 324 und an einen Gamma-Korrektur-Prozessor 320 angelegt. Der Gamma-Korrektur- Prozessor 320 legt eine Funktion F(x) an die Abtastwerte x an. Diese Funktion ist in Gleichung (1) gezeigt.
  • F(x) = xγ (1)
  • Die Ausgabewerte, welche von dem Gamma-Korrektur-Prozessor 320 erzeugt werden, werden an einen Kontrast-Kompressor- bzw. Verdichter 322 angelegt. Der Kontrast- Kompressor 322 legt eine Funktion CC(x) an, wobei x die einzelnen R, G und B Signale darstellt, wie in Gleichung (2) gezeigt.
  • Die Apertur-Filter 324 extrahieren bzw. entnehmen und verstärken die Hochfrequenz- Bestandteile aus einer Kombination der R, G und B Signale und legen diese verstärkten Hochfrequenz-Bestandteile bzw. -Komponenten an jedes der Rot-, Grün- und Blau- Signale an, welche von dem Kontrast-Kompressions-Schaltkreis 322 zur Verfügung gestellt werden. Das Apertur-Korrektur-Signal wird mit den Rot-, Grün- und Blau- Signalen durch die Addierer 326, 328 bzw. 330 kombiniert. Diese kombinierten Signale werden dann in analoge Signale durch einen Digital-zu-Analog-Wandler (DAC) 332 umgewandelt.
  • Die Videoeingabeschaltkreise 314, der Korrekturschaltkreis 316 für feste Muster, der Farb-Balance-Prozessor 318, der Gamma-Korrektur-Prozessor 320, der Kontrast- Kompressions-Prozessor 322 und die Apertur- bzw. Öffnungs-Filter 324 werden durch den Prozess-Steuer-Programmier-Schaltkreis 334 gesteuert bzw. geregelt. Dieser Schaltkreis empfängt eine Information von einer Steuertafel (panel) 336 und stellt bei dieser eine Status-Information zur Verfügung. Zusätzlich zum Steuern erzeugt der obige Prozess- bzw. Prozessor-Steuer- und Programmier-Schaltkreis 334 auch Taktsignale und andere Zeitsteuersignale für die CCD Abbildungsvorrichtungen 310, den ADC 312 und den DAC 332.
  • Fig. 4 ist ein Blockdiagramm einer beispielhaften Videokamera, welche eine Ausführungsform der vorliegenden Erfindung aufweist. Diese Kamera ist die gleiche, wie die in Fig. 3 gezeigte, außer dass der Gamma-Korrektur-Prozessor 320 und der Kontrast-Kompressions-Kompressor 322 durch ein einzelnes neuronales Netzwerk 410 ersetzt sind.
  • Fig. 4a zeigt eine andere Videokamera-Anordnung, welche die gleiche, wie die in Fig. 3 gezeigte ist, außer dass ein neuronales Netzwerk 420 den Farb-Balance- Prozessor 318, den Gamma-Korrektur-Prozessor 320, den Kontrast-Kompressions- Prozessor 322, die Apertur-Filter 324 und die Addierer 326, 328 und 330 ersetzt.
  • Ungeachtet, für den Moment, der Komplexität der neuronalen Netzwerke 410 und 420 ist der in den Fig. 4 und 4a gezeigte Schaltkreis einfacher, als die in Fig. 3 gezeigten Schaltkreise, einfach weil dieser weniger Bestandteile bzw. Komponenten aufweist. Zusätzlich, wie nachfolgend beschrieben, kann der Ingenieuraufwand, welcher erforderlich ist, um eine annehmbare Signalverarbeitung durch die in den Fig. 4 und 4a gezeigten Schaltkreise zu erzeugen, erheblich geringer sein, als derjenige, welcher benötigt wird, um den gleichen Grad einer Leistungsfähigkeit von den in Fig. 3 gezeigten Schaltkreisen zu erhalten.
  • Selbst wenn die Komplexitiät des neuronalen Netzwerkes betrachtet wird, sind die in den Fig. 4 und 4a gezeigten Schaltkreise weniger kostenintensiv als die in Fig. 3 gezeigten, weil die neuronalen Netzwerke 410 und 420, oder die Prozess- bzw. Verarbeitungs-Elemente, welche die Netzwerke bilden, Standard- bzw. Serien(off-theshelf)-Elemente sind und demzufolge von Mengenrabatten profitieren. Zusätzlich kann das neuronale Netzwerke so ausgelegt sein, um mehrere identische Prozess- bzw. Verarbeitungselemente zu verwenden.
  • Zur Vereinfachung ist nur die in Fig. 4 gezeigte Ausführungsform der Erfindung nachfolgend beschrieben. Diese Ausführungsform ist jedoch mit einer ausreichenden Anleitung beschrieben, um es einem Fachmann zu ermöglichen, den in Fig. 4a gezeigten Schaltkreis zu implementieren bzw. zu realisieren.
  • In Fig. 4 sind die Gamma-Korrektur- und Kontrast-Kompressions-Funktionen kombiniert und werden von dem neuronalen Netzwerk 410 durchgeführt. Die Kombination dieser zwei Funktionen ist hochgradig nicht-linear. Die Gamma- Korrektur-Funktion, wie durch Gleichung (1) definiert, und die Konstrast- Kompressions-Funktion, wie durch Gleichung (2) definiert, sind kombiniert, wie in den Gleichungen (3), (4) und (5) gezeigt, um die jeweiligen Signale r', g' und b' aus den Eingabe-Farb-Signalen r, g und b und den Steuer-Parametern γ und cont zu erzeugen.
  • In diesen Gleichungen sind die Signale r', g' und b' das Ergebnis der Durchführung einer Gamme-Korrektur und einer Kontrast-Kompression der jeweiligen r, g und b Eingabe-Signale. Dieser kombinierte Prozess bzw. Verknüpfung ist sehr nicht-linear, weil diese mehrere Exponential-Verknüpfungen und Maximalwert-Operationen umfasst. Zusätzlich kann sich eines der Ausgangsfarben-Ausgabesignale verändern, wenn das entsprechende Eingabe-Farb-Signal das gleiche ist, sich jedoch eines der anderen Eingabe-Farb-Signale verändert hat.
  • Des weiteren führen diese Gleichungen dazu, dass sie nicht einfach implementiert werden können, weder in einem analogen, noch in einem digitalen Schaltkreis. Die Gleichungen (3), (4) und (5) sind zu komplex, um effektiv unter Verwendung eines herkömmlichen analogen Signal-Verarbeitungs-Schaltkreis implementiert zu werden. Während es einfacher sein kann, die Gleichungen unter Verwendung eines programmierten digitalen Prozessors zu implementieren, würde die Komplexität der durchgeführten Operationen bzw. Verknüpfungen entweder außergewöhnliche Signal- Verarbeitungs-Verzögerungen verursachen bzw. erfordern, oder einen äußerst komplexen Prozessor. Schließlich, wenn die Funktion als eine große Nachschlage- Tabelle (look up table; LUT) implementiert werden würde, wäre die Größe des benötigten Speichers, um den LUT zu speichern, selbst für 8-Bit-Eingabewerte (2(8·5) = 2&sup4;&sup0; 1,1 · 10¹²) groß, und würde so die Vorrichtung unpraktisch bzw. nicht handhabbar machen.
  • Fig. 5 ist ein Blockdiagramm eines neuronalen Netzwerks, welches zur Verwendung als das Netzwerk 410 geeignet ist. Dieses Netzwerk umfasst drei Schichten von Prozessoren, Eingabeprozessoren 510a bis 510e, verborgene (hidden) Prozessoren 512a bis 512o und Ausgabeprozessoren 514a bis 514c. Jeder der Eingabeprozessoren, zum Beispiel 510a, empfängt alle der Eingabesignale, die Farbsignale R, G und B und die Steuersignale y und cont. Jeder Eingabeprozessor stellt wiederum sein Ausgabesignal für alle der verborgenen Prozessoren 512a bis 512o zur Verfügung. Jeder verborgene Prozessor, zum Beispiel 512a, erzeugt drei Ausgabesignale, wobei eines davon an den Ausgabeprozessor 514a angelegt wird, ein anderes an 514b und das dritte an den Ausgabeprozessor 514c. Die Ausgabeprozessoren 514a, 514b und 514c erzeugen die jeweiligen verarbeiteten Farbsignale r', g' und b'.
  • Weil die Apertur-Korrektur-Funktion eine räumliche Filter-Verknüpfung bzw. -Operation ist, kann es für das neuronale Netzwerk 420 wünschenswert sein, einen Schaltkreis aufzuweisen, welcher mehrere Zeilen von Video-Abtastwerten bzw. -Bildern speichert, so dass Abtastwerte, welche auf jeder bzw. einer Seite des einen Abtastwerts dargestellt werden, welcher verarbeitet wird, sowie die Abtastwerte, · welche oberhalb und unterhalb des einen Abtastwertes dargestellt werden, als Eingabewerte an das neuronale Netzwerk angelegt werden. Entsprechend kann das neuronale Netzwerk 420 mehr Eingabeanschlüsse aufweisen, als das Netzwerk 410. Zusätzlich kann es wünschenswert sein, eine größere Anzahl an Eingängen und verborgenen Prozessoren in dem Netzwerk 420 zu verwenden, als in dem Netzwerk 410 verwendet werden, aufgrund der erhöhten Komplexität der multiplen bzw. mehrfachen Funktionen, welche von dem Netzwerk 420 emuliert bzw. simuliert werden, gegenüber denjenigen, welche von dem Netzwerk 410 emuliert bzw. simuliert werden. Anstelle der Verwendung von nur einer Schicht an verborgenen Prozessoren kann es auch wünschenswert sein, das Netzwerk so auszudehnen bzw. zu erweitern, dass mehrere verborgene Schichten verwendet werden.
  • Wieder bezugnehmend auf Fig. 5 berechnet jeder Prozessor in dem Netzwerk sukzessiv bzw. aufeinanderfolgend gewichtete Summen von sukzessiven bzw. aufeinanderfolgenden Werten, welche an seine Eingabeanschlüsse angelegt werden und transformiert bzw. wandelt die gewichteten Summen über eine sigmoidale bzw. s- oder c-förmige Übertragungsfunktion, um seine Ausgangswerte zu erzeugen. Bei den Eingabe- und verborgenen Prozessoren werden diese Ausgabewerte an alle Prozessoren in der nächsten Stufe angelegt. Bei den Ausgabe-Prozessoren sind diese Ausgabewerte die Signale r', g' oder b'.
  • Fig. 6 ist ein Blockdiagramm eines Schaltkreises, welcher zur Verwendung als einer der Eingabeprozessoren geeignet ist, zum Beispiel Prozessor 510a. In Fig. 6 werden Abtastwerte (samples) der drei Farbsignale r, g und b und Abtastwerte der Steuersignale γ und cont an jeden der Gewichtungsschaltkreise 610a, 610b, 610c, 610d und 610e angelegt. Die jeweiligen Gewichtungsfaktoren, welche von diesen Schaltkreisen angelegt werden, sind WIo0, WIi1, WIi2, WIi3 und WIi4, wobei der Index I angibt, dass dies Gewichtugnsfaktoren von einem Eingabeprozessor sind und der Index i den speziellen Eingabeprozessor bestimmt. Diese Gewichtungsfaktoren sind über einen Programmierbus PM programmierbar. Bei der beispielhaften Ausführungsform der Erfindung kann jeder der Schaltkreise 610a bis 610e ein bestimmter bzw. spezifischer Multiplikator-Schaltkreis sein, bei welchem der programmierbare Gewichtungsfaktor an den Multiplikator-Eingabeanschluss angelegt wird und das jeweilige Eingabesignal (r, g, b, γ oder cont) wird an den Multiplikanden- Eingabeanschluss angelegt.
  • Alternativ können die Schaltkreise 610a bis 610e als jeweilige Speicher (nicht gezeigt) implementiert werden, wobei jeder mit einem Satz an Werten programmiert ist, welche die Multiplikation mit dem Gewichtungsfaktor implementieren. Wenn zum Beispiel die Farbsignale 8-Bit Signale sind, würde jeder der Speicher 610a bis 610e 256 Werte speichern, welche jedes mögliche Ergebnis darstellen, welches aus einer Multiplikation des Eingangssignals (angelegt an den Adressen-Eingabeanschluss) mit dem programmierten Gewichtungsfaktor erhalten werden könnte.
  • Die gewichteten Ausgangs-(Abtast)werte (samples), welche von jedem der Gewichtungsschaltkreise 610a bis 610e zur Verfügung gestellt werden, werden an einen Summier-Schaltkreis 612 angelegt. Bei einer digitalen Ausführungsform der Erfindung kann der Summier-Schaltkreis 612 als ein Baum von Addierern implementiert bzw. realisiert werden.
  • Die Ausgabe-Werte (samples), welche von dem Summier-Schaltkreis 612 zur Verfügung gestellt werden, werden an einen Schaltkreis 614 angelegt, welcher eine nicht-lineare Übertragungsfunktion implementiert. Bei der beispielhaften Ausführungsform der Erfindung ist der Schaltkreis 614 ein Nur-Lese-Speicher (ROM; Read-Only Memory), welcher so programmiert ist, um den Eingabewert, welcher als Adressen zugeführt wird, zu Ausgabewerten zu transformieren, welche im wesentlichen gleich den Eingabewerten sind, wenn bzw. wie sie von der Übertragungsfunktion modifiziert bzw. verändert werden. Bei der beispielhaften Ausführungsform der Erfindung ist die Übertragungsfunktion, welche von dem Schaltkreis 614 implementiert wird, eine sigmoidale bzw. s- oder c-förmige Funktion · gβ(x) mit der in Gleichung (6) gezeigten Form.
  • Bei dieser Ausführungsform der Erfindung ist die Funktion gp(x) implementiert, wobei β einen Wert von 1 aufweist. Bei den Materialien bzw. Ausführungen, welche folgen, wird diese Funktion einfach als g(x) bezeichnet.
  • Das Ausgangssignal des nicht-linearen Schaltkreises 614 wird an einen Zeilen- Ansteuer- bzw. Leitungs-Treiber(driver)-Schaltkreis 616 angelegt, welcher 15 Kopien des Ausgabesignals zum Anlegen an jeden der verborgenen Prozessoren 512a bis 512o erzeugt, wie in Fig. 5 gezeigt.
  • Fig. 6a zeigt eine beispielhafte analoge Implementation der Gewichtungsschaltkreise von einem der in Fig. 5 gezeigten Prozessoren. Wie in dieser Figur gezeigt, werden die Eingabepotentiale V&sub1;&spplus;, V&sub2;&spplus;, ... VN+ und V1, V2, ... VW in den jeweiligen Widerstandsnetzwerken (R&sub1;&spplus; bis RNA und R&sub1;&supmin; bis RN) summiert und an die jeweiligen Summier-Verstärker 650 und 652 angelegt. Der Gewichtungsfaktor, welcher an jedes Eingangssignal angelegt wird, ist das Verhältnis des geeigneten Rückkopplungs- Widerstandes (Rf&spplus; und Rf&supmin;) zu dem Eingangs-Widerstand. Das Ausgangssignal Von, welches von dem in Fig. 6a gezeigten Schaltkreis erzeugt wird, kann durch Gleichung (7) dargestellt werden.
  • wobei V1 ein Eingangssignal darstellt, welches ein positives Gewicht R+ empfangen bzw. erhalten soll; Vi- stellt ein Eingangssignal dar, welches ein negatives Gewicht RC empfangen bzw. enthalten soll; und so stellt die nicht-lineare Funktion dar, welche durch die zwei Dioden 654 und 656 implementiert wird.
  • Ein beispielhafter verborgener Prozessor ist in Fig. 7 gezeigt. Dieser Schaltkreis ist der gleiche, wie der in Fig. 6 gezeigte Schaltkreis, außer dass jeder der Gewichtungsschaltkreise 710a bis 710e ein Eingabesignal von einem jeweils unterschiedlichen bzw. anderen der Eingabeprozessoren 510a bis 510e empfängt, wie in Fig. 5 gezeigt. Jeder der Gewichtungsfaktoren WHi0 bis WHi4, welche von den jeweiligen Gewichtungsschaltkreisen 710a bis 710e gespeichert werden, ist unabhängig über dem Programmier-Bus PM programmierbar. Bei der Notation bzw. Bezeichnung dieser Gewichtungsfaktoren bezeichnet der Index H, dass dies verborgene (hidden) Prozessor-Faktoren sind und der Index i bezeichnet einen bestimmten verborgenen Prozessor.
  • Zusätzlich unterscheidet sich der in Fig. 7 gezeigte Schaltkreis von dem in Fig. 6 gezeigten, weil der Leitungs-Treiber 716 des verborgenen Prozessors nur drei Kopien des Ausgangssignals erzeugt. Diese drei Ausgangssignale werden an jeweils unterschiedliche der Ausgangs- bzw. Ausgabe-Prozessoren 514a, 514b und 514c angelegt, wie in Fig. 5 gezeigt.
  • Fig. 8 ist ein Blockdiagramm eines Ausgabeprozessors, welcher zur Verwendung als einer der Prozessoren 514a, 514b und 514c geeignet ist. Wie in der Figur gezeigt, weist der Ausgabeprozessor eine ähnliche Struktur wie der Eingabeprozessor und der verborgene Prozessor auf. Der Ausgabeprozessor hat jedoch 15 Eingabesignale und demzufolge 15 Gewichtungsschaltkreise, 810a bis 8100. Jeder dieser Gewichtungsfaktoren WOi0 bis WOi14, welche durch die jeweiligen Gewichtungsschaltkreise 810a bis 810o implementiert sind, ist unabhängig über den Programmier-Bus PM programmierbar. In der Bezeichnung dieser Gewichtungsfaktoren bezeichnet der Index O, dass dieses Ausgabe(output)-Prozessor- Faktoren sind und der Index i bezeichnet einen speziellen Ausgabeprozessor. Die gewichteten Ausgabewerte, welche von den Gewichtungsschaltkreisen 810a bis 8100 zur Verfügung gestellt werden, werden in einem Summier-Schaltkreis 812 summiert.
  • Das Ausgangssignal des Summierschaltkreises 812 wird an einen nicht-linearen ROM 814 angelegt, welcher zu den nicht-linearen ROMs 614 und 714, wie in den Fig. 6 bzw. 7 gezeigt, identisch sein kann. Das Ausgangssignal, welches von dem nicht linearen ROM 814 zur Verfügung gestellt wird, wird an einen Leitungs-Treiber 816 angelegt, welcher ein Ausgangssignal mit einer ausreichenden Stärke erzeugt, um den Schaltkreis anzusteuern bzw. zu treiben, mit welchem die Ausgabeprozessoren 514a, 514b oder 514c gekoppelt sind.
  • Bezugnehmend auf Fig. 4 ist das neuronale Netzwerk 410 so programmiert, dass die Übertragungsfunktionen der Gamma-Korrektur- und Konstrast-Kompressions- Algorithmen durch eine Programmierung der Werte der Gewichtungsfaktoren in jedem der Eingabe-, verborgenen und Ausgabe-Prozessoren implementiert werden. Diese Gewichtungsfaktoren werden unter Verwendung eines lernenden Algorithmus programmiert, basierend auf einem Satz von bekannten Eingabe/Ausgabe-Signal- Kombinationen. Dieser Algorithmus bestimmt Werte der Gewichtungsfaktoren, welche eine annehmbare Approximation bzw. Annäherung der kombinierten Gamma-Korrektur und Kontrast-Kompressions-Übertragungs-Funktion erzeugen, wie durch die Gleichungen (3), (4) und (5) definiert. Ein Verfahren, mit welchem diese Gewichtungs- Werte aktualisiert bzw. upgedated werden, wird gewöhnlich als eine Rück- Ausbreitung bzw. Rück-Verfolgung (back-propagation) eines Fehlers bezeichnet und ist nachfolgend beschrieben.
  • Fig. 9 und 10 sind Ablaufdiagramme, welche das Verfahren zum Aktualisieren bzw. updaten der Gewichtungswerte veranschaulichen, welches bei der beispielhaften Ausführungsform der Erfindung verwendet wird. Bei der beispielhaften Ausführungsform der Erfindung ist dieser Algorithmus auf einem allgemeinen (Allzweck-) Computer implementiert, auf welchem das neuronale Netzwerk 410 simuliert wird.
  • Bei dem ersten Schritt dieses Verfahrens, dem Schritt 910 von Fig. 9, wird jeder der Gewichtungswerte in jedem der Eingabe-, verborgenen und Ausgabe-Prozessoren auf einen anfänglichen Wert gesetzt. Ideal sind diese Anfangswerte relativ kleine zufällige Werte, welche den verschiedenen Gewichtungsschaltkreisen zugeordnet sind. Diese Anfangswerte stellen einen Startpunkt bei der Suche nach dem besten Satz der Gewichtungswerte dar, welche die gewünschte Funktion implementieren werden.
  • Der nächste Schritt in dem Verfahren, Schritt 912, erzeugt einen Satz an Trainings- Muster für eine Funktion F1. Bei der beispielhaften Ausführungsform der Erfindung kann die Funktion F1 zum Beispiel die Gamma-Korrektur-Funktion von Gleichung (1) sein, wie sie zum Beispiel von dem Gamma-Korrektur-Prozessor 320 von Fig. 3 implementiert wird.
  • Um die Test-Muster zu erzeugen, erzeugt das Programm mehrfache bzw. Mehrfachsätze von zufälligen Eingangswerten von r, g, b und γ und legt diese Werte an die Gamma-Gleichung (1) an, um die entsprechenden Ausgabewerte zu erhalten, welche die Gamma-korrigierten r, g und b Farbsignale darstellen. Jeder Satz der Eingangswerte und der entsprechenden Ausgangswerte bildet ein Trainingsmuster für die Funktion F1. Wenn eine ausreichende Anzahl von unterschiedlichen Mustern erzeugt wurde, geht die Steuerung bzw. der Ablauf von Schritt 912 zu Schritt 914 über, in welchem das System unter Verwendung der erzeugten Muster trainiert wird. Wie nachfolgend beschrieben, bei der beispielhaften Ausführungsform der Erfindung, wird das neuronale Netzwerk trainiert werden, um die Übertragungsfunktion zu implementieren, welche verwendet wurde, um die Trainings-Muster zu erzeugen, durch wiederholtes Anlegen der Muster an das simulierte Netzwerk. Schritt 914 stellt nur ein Anlegen bzw. eine Anwendung der Trainings-Muster dar.
  • Die Verarbeitung, welche von Schritt 914 durchgeführt wird, ist im größeren Detail in Fig. 10 veranschaulicht. Nachdem der Prozess bzw. das Verfahren bei Schritt 1010 begonnen wurde, geht die Steuerung zum Schritt 1012 über, bei welchem ein Muster ausgewählt wird und an die Systemeingänge angelegt wird. In diesem Zustand sind die Systemeingaben tatsächlich simulierte Eingabeanschlüsse des simulierten neuronalen Netzwerks, weil das neuronale Netzwerk auf dem Computer simuliert wird, welcher Werte für die Gewichtungsfaktoren bestimmt. Die Werte, welche an die simulierten Eingabeanschlüsse bei irgendeinem gegebenen Zeitpunkt angelegt werden, sind die zufällig bestimmten Werte für r, g, b und γ von den Testmustern, welche von dem in Fig. 9 gezeigten Schritt 912 erzeugt wurden.
  • Nachdem die Test-Eingabewerte in Schritt 1012 angelegt wurden, werden diese durch das simulierte neuronale Netzwerke zu den simulierten Ausgabeanschlüssen bei Schritt 1014 weitergeleitet bzw. fortgepflanzt. In diesem Schritt verarbeitet das simulierte neuronale Netzwerk unter Verwendung, von welchen Gewichtungsfaktoren auch immer, welche momentan zugewiesen wurden, die Eingabesignalwerte, um entsprechende Ausgangssignalwerte zu erzeugen.
  • Bei Schritt 1016 werden diese weitergeleiteten Ausgabewerte mit den Ausgabewerten von den entsprechenden Testmustern verglichen. Jeder dieser Vergleiche erzeugt einen Fehlerwert, welcher eine Differenz zwischen dem Ausgangswert, welcher von dem neuronalen Netzwerk erzeugt wurde, und dem voraus bzw. vorher berechneten Ausgangswert für die angelegten Eingangswerte darstellt. Es wird festgestellt, dass der Fehler-Wert oder die "Kosten-Funktion" auf eine Anzahl von Wegen berechnet werden kann. Ein Weg besteht darin, die absolute Differenz zwischen dem momentanen Ausgangssignal und dem gewünschten Ausgangssignal zu berechnen. Unter Verwendung dieses Verfahrens würde die Kostenfunktion bei dem Ausgangsanschluss des Prozessors 514a von Fig. 5 die arithmetische Differenz zwischen dem momentanen Rot-Signalwert, ra, und dem gewünschten Rot-Signalwert rd (d. h. ra - ra) sein.
  • Eine andere mögliche Kostenfunktion wäre das Beschreiben von Signaldifferenzen, welche für die Videosignalverarbeitung wichtig sind. Zum Beispiel die Differenz zwischen den tatsächlichen und gewünschten Farb-Verhältnissen und/oder die Differenz zwischen der tatsächlichen und gewünschten Leuchtdichte bzw. Luminanz und Farb- Differenz-Werten. In diesem Sinn berechnet für jeden der Ausgabeprozessoren 514a bis 514b von Fig. 5, Schritt 1016 einen Kostenfunktionswert CF von allen momentanen Ausgabesignalen (ra, ga und ba) und allen gewünschten Ausgabesignalen (rd, gd und bd).
  • Eine solche Kostenfunktion, wieder für den Prozessor 514a, ist in Gleichung (8) angegeben.
  • CF = (ra - rd) + (ra/ga - rd/gd) + (ra/ba - rd/bd) (8)
  • Bei Schritt 1018 wird jeder dieser Kostenfunktionswerte rückverfolgt (propagated backward) durch das neuronale Netzwerk von den simulierten System- Ausgäbeanschlüssen zu den simulierten System-Eingabeanschlüssen. Diese Fehlerausbreitung ist durch Gleichung (9) veranschaulicht.
  • δi = g'(xi)CF(Oia, Oid) (9)
  • wobei δi der Fehler bei dem i-ten Ausgabeanschluss ist (d. h. der Fehler des Ausgabewerts, welcher durch den i-ten Ausgabeprozessor erzeugt wird) multipliziert mit dem Gradienten der nicht-linearen Funktion, CF ist ein geeigneter Kostenfunktionswert, welcher aus Oid berechnet wird, dem gewünschten Ausgabewert des Testmusters, und Oia ist der momentane Ausgabewert, welcher von dem simulierten neuronalen Netzwerk erzeugt wird (zum Beispiel der CF, welcher in Gleichung (8) berechnet wurde, oder [Oia - Oiä]). In Gleichung (9) ist xi die Summe der gewichteten Eingabewerte, welche an den i-ten Ausgabeprozessor angelegt wurden und γ'(x) ist die erste Ableitung von g(x), welche in Gleichung (10) angegeben ist.
  • g'(x) = 2g(x) [1 - g(x)] (10)
  • Bei Schritt 1020 wird ein Fehlerwert für jeden Gewichtungsfaktor für jeden Prozessor bei den Ausgangs-, verborgenen und Eingangs-Stufen durch eine Rück-Verfolgung bzw. Rück-Fortpflanzung berechnet. Diese Berechnungen werden durch Gleichung (11) dargestellt.
  • δk-1,i = g' (xk-1,i) Wkij δi (11)
  • wobei der Index k eine bestimmte Prozessor-Stufe bzw. -Pegel bezeichnet (d. h. Eingabe, verborgen oder Ausgabe), der Index k-1 bezeichnet die vorangegangene Stufe, der Index i bezeichnet einen bestimmten Prozessor bei dieser Stufe und der Index j bezeichnet einen bestimmten Eingabeanschluss des i-ten Prozessors.
  • Bei Schritt 1022 werden die Gewichtungsfaktoren Wkij aktualisiert bzw. upgedated, indem deren Werte um einen Korrektur-Ausdruck ΔWkij verändert werden, welcher in Abhängigkeit von Gleichung (12) bestimmt wird.
  • ΔWkij = nδk-1j Vk-1J (12)
  • wobei n ein Korrekturfaktor ist, welcher die Rate bestimmt, mit welcher die Werte der Gewichtungsfaktoren sich verändern dürfen, und Vw ist der Ausgabewert, welcher von den j-ten Prozessor bei der Stufe k erzeugt wird. Sobald die Gewichtungsfaktoren aktualisiert wurden, ist die Verarbeitung für diesen Fall bzw. dieses Beispiel dieses Musters abgeschlossen.
  • Bei Schritt 1024 bestimmt das Simulations-System, ob es mehr Muster gibt, welche bei diesem Schritt angelegt werden sollen. Wenn dies so ist, geht die Steuerung zu Schritt 1012 über, um das nächste Eingabemuster auszuwählen und dessen Eingabewerte an die simulierten Systemeingänge anzulegen. Sonst, wenn keine weiteren Muster angelegt werden sollen, geht die Steuerung zum Schritt 1026 über, wobei die Gewichtungsfaktoren, welche von dem in Fig. 10 gezeigten Prozess erzeugt wurden, als die neuen Gewichtungsfaktoren für das neuronale Netzwerk markiert bzw. gekennzeichnet werden.
  • Zurückkehrend zu Fig. 9 untersucht Schritt 916 nach dem Schritt 914 die Historie bzw. den zeitlichen Verlauf der Ausgabefehler, welche unter Verwendung der mehreren letzten Sätze der Gewichtungsfaktoren erzeugt wurden. Bei der beispielhaften Ausführungsform der Erfindung wird dies durchgeführt, indem der Simulator laufengelassen wird, wobei er mit jedem der Sätze der Gewichtungsfaktoren programmiert ist, welche unter Verwendung des letzten ausgewählten Satzes der Muster erzeugt wurden, und durch Vergleichen der Ausgabewerte, welche von dem simulierten neuronalen Netzwerk erzeugt wurden, mit den jeweiligen gewünschten Ausgabewerten, welche in den erzeugten Trainingsmustern enthalten sind.
  • Als nächstes wird Schritt 918 herangezogen, um zu bestimmen, ob die Fehler innerhalb eines annehmbaren Toleranzbereiches sind. Wenn die Fehler nicht annehmbar sind, kann es sein, dass die Werte der Gewichtungsfaktoren divergieren bzw. auseinanderlaufen, wie durch Schritt 920 bestimmt. Wenn die Gewichtungsfaktoren divergieren, wird Schritt 922 herangezogen, um die Größe des Korrekturausdruckes η in Gleichung (11) zu verringern. Wie oben beschrieben, wird durch die Verringerung des Werts dieses Ausdrucks die Verstärkung bzw. Vergrößerung des Rückkopplungs- Systems verringert, was dazu führt, dass sich die Werte der Gewichtungsfaktoren langsamer ändern.
  • Wenn bei Schritt 920 bestimmt wurde, dass die Gewichtungsfaktoren nicht divergieren bzw. auseinanderlaufen, wird Schritt 924 ausgeführt, um zu bestimmen, ob die Gewichtungsfaktorwerte zu langsam konvergieren. Wenn dies bei Schritt 924 bestimmt wurde, wird Schritt 926 herangezogen, welcher die Muster in dem Satz neu anordnet bzw. umordnet. Wenn bestimmt wurde, dass die Gewichtungsfaktoren nicht zu langsam bei Schritt 924 konvergieren, und nach den Schritten 922 und 926, wird Schritt 928 herangezogen, welcher die neuen Gewichtungsfaktoren zur Verwendung durch das simulierte neuronale Netzwerk speichert und die Fehlerwerte speichert, welche verwendet wurden, um die Faktoren mit den vorangegangenen Fehlerwerten zu erzeugen. Die gespeicherten Fehlerwerte werden von dem Schritt 916, wie oben beschrieben, verwendet. Nach dem Schritt 928 wird die Steuerung wieder zurück auf den Schritt 914 übertragen.
  • Wenn bei Schritt 918 bestimmt wurde, dass die Fehlerwerte für den aktuellen Satz der Testmuster annehmbar sind, wird Schritt 930 herangezogen, um zu bestimmen, ob es mehr Funktionen gibt, welche durch das neuronale Netzwerk simuliert werden sollen. Wenn dies so ist, wird Schritt 934 ausgeführt, welcher Trainingsmuster für die nächste Kombination der Funktionen erzeugt. Bei der beispielhaften Ausführungsform der Erfindung, wie in Fig. 4 gezeigt, werden nur zwei Funktionen unter Verwendung des neuronalen Netzwerks verarbeitet, eine Gamma-Korrektur und eine Kontrast- Kompression. In diesem Fall würde der Schritt 934 Trainings-Muster für die Kombination von F&sub1; (Gamma-Korrektur) und F&sub2; (Kontrast-Kompression) erzeugen. Bei der beispielhaften Ausführungsform der Erimdung sind diese kombinierten Ausgangs- bzw. Ausgabe-Funktionen durch die Gleichungen (3), (4) und (5) beschrieben.
  • Bei der beispielhaften Ausführungsform der Erfindung, wie in Fig. 4a gezeigt, wird das neuronale Netzwerk 420 verwendet, um eine Farb-Balance bzw. -Ausgleichs- und Apertur- bzw. Öffnungs-Korrektur zusätzlich zu der Gamma-Korrektur und Konstrast- Kompression zu implementieren bzw. verwirklichen. Bei dieser zweiten beispielhaften Ausführungsform der Erfindung würde der Schritt 934 ein erstes Mal herangezogen werden, um die Konstrast-Kompressions-Funktion mit der Gamma-Korrektur-Funktion zu kombinieren, ein zweites Mal, um die Farb-Balance-Funktion mit der kombinierten Gamma-Korrektur- und -Kontrast-Kompressions-Funktion zu kombinieren, und eines drittes Mal, um die Apertur-Korrektur-Funktion mit den kombinierten Gamma- Korrektur-Kontrast-Kompressions- und -Farb-Balance-Funktionen zu kombinieren. Des weiteren ist die Ausführungsform der Fig. 4a allgemein genug, um zusätzliche Prozesse bzw. Verfahren implementieren zu können, wie zum Beispiel eine Colorimetrie- bzw. Farbmessungs-Korrektur und eine lokale Histogramm-Glättung bzw. -Entzerrung (histogram equalization).
  • Das neuronale Netzwerk kann auch verwendet werden, um Verfahren zu implementieren, welche sich von Kamera zu Kamera verändern können, welche jedoch bei einer bestimmten Kamera invariant bzw. unveränderlich sind. Ein solches Verfahren kann die Korrektur des Ausgangssignals der Abbildungsvorrichtung bezüglich Abbildungsfehler (aberrations) in dem Linsensystem oder der Abbildungsvorrichtung (imager) selbst sein. Sobald die Abbildungsvorrichtung und das Linsen-System angebracht sind, verändern sich diese Abbildungsfehler nicht. Entsprechend würde kein Bedarf bestehen, ein Steuer-Eingangs-Signal für das neuronale Netzwerk für diese Funktion zu verwenden. Die Funktion zur Korrektur bezüglich Abbildungsfehler dieses Typs kann die erste einer Serie bzw. Folge von Funktionen sein, welche in dem neuronalen Netzwerk implementiert werden sollen.
  • Zurückkehrend zu Fig. 9 würde jedes Heranziehen von Schritt 934 einen vorausgehenden Verfahrensschritt haben, wie durch die Schritte 914 bis 928 veranschaulicht, bei welchen die Gewichtungsfaktoren für jeden Prozessor in dem neuronalen Netzwerk unter Verwendung von erzeugten Mustern für die vorangehende Funktion oder Kombination der Funktionen aktualisiert bzw. upgedated werden.
  • Wenn beim Ausführen des Schrittes 930 bestimmt wird, dass keine weiteren Funktionen simuliert werden müssen, wird der Schritt 932 ausgeführt, in welchem die abschließenden bzw. End-Gewichtungsfunktionen gespeichert werden.
  • Noch einmal auf Fig. 4 bezugnehmend, wenn die abschließenden Gewichtungsfaktoren durch den äußeren bzw. externen Computer gespeichert wurden, werden diese an das neuronale Netzwerk 410 angelegt und der in Fig. 4 gezeigte Kamera-Schaltkreis ist betriebsbereit. Fig. 11 ist ein Diagramm von Eingabewerten gegenüber Ausgabewerten, welches die Abhängigkeit zwischen den berechneten Rot-, Grün- und Blau-Signalen (r, g und b) und den Ausgabewerten (r', g' und b') veranschaulicht, erzeugt von dem neuronalen Netzwerk 420 in Reaktion auf ein Paar von Werten der Steuerparameter γ und cont, wie es in dieser Figur gesehen werden kann. Es gibt Funktionswerte, für welche die Differenz zwischen dem neuronalen Netzwerk-Signal und den gewünschten Signalwerten unterschiedlich sind, da diese Funktionen (d. h. Gamma und Kontrast-Kompression) sehr spezifisch bzw. subjektiv sind und von den Modellen bekannt ist, dass diese Schätzungen sind (insbesondere in dem Fall der Gamma-Korrektur). Diese Differenzen zwischen den berechneten Funktionswerten und den Werten, welche von dem neuronalen Netzwerk erzeugt werden, verschlechtern jedoch nicht bemerkbar die Qualität des wiedergegebenen Bildes.
  • Während gezeigt ist, dass das neuronale Netzwerk einen Satz von Koeffizienten-Werten empfängt, um alle möglichen Eingabe-Signal-Werte darzustellen, kann es wünschenswert sein, mehrere Koeffizienten-Werte zu erzeugen, einen für jeden eines vorgegebenen bzw. vordefinierten Satzes von Bereichen für die Steuer-Parameter der verschiedenen Prozessoren (d. h. γ und cont). Bei dieser alternativen Ausführungsform, wenn einer der Parameter über die Steuer-Tafel (panel) 336 eingestellt wird, wie in Fig. 4 gezeigt, würden die Gewichtungsfaktoren bzw. -werte, welche von dem neuronalen Netzwerk 410 verwendet werden sollen, in das Netzwerk über den Bus PM heruntergeladen werden. Bei dieser alternativen Ausführungsform würden die Gewichtungswerte nur verändert werden, wenn einer der Steuerparameter so verändert ist, dass er in einem anderen eines vorgegebenen Bereiches der Werte liegt, wobei jeder Bereich der Steuerparameterwerte einem bestimmten bzw. charakteristischen Satz an Gewichtungsfaktorwerten zugeordnet ist.
  • Alternative Ausführungsform
  • Wie oben erwähnt, ist eine der zugrundeliegenden Ideen der vorliegenden Erfindung das Ersetzen eines Systems, wie zum Beispiel des in Fig. 1 gezeigten, durch ein ansonsten äquivalentes System, welches in der alternativen Ausführungsform in Fig. 12 gezeigt ist. In Fig. 12 ist das neuronale Netzwerk 1210 so verschaltet, um die Datensignaleingaben V1, V2 und V3 zu empfangen, jedoch anders als bei der ersten beschriebenen Ausführungsform, empfängt es nicht die Parametersignale P1, P2 und P3 als Eingaben. Stattdessen werden die Parametereingaben P1, P2 und P3 einer Trainings-Einheit 1214 eingegeben, welche die Parameter-Eingaben berücksichtigt, wenn das neuronale Netzwerk 1210 mit Eingabe-gewünschten-Ausgabe Vektoren trainiert wird.
  • Obwohl die Parametereingaben indirekt die Gewichtungsfaktoren des Netzwerkes beeinflussen, sind diese nicht als Eingaben für das neuronale Netzwerk 1210 enthalten, um anzuzeigen, dass das neuronale Netzwerk dynamisch und nicht statisch ist. Das heißt, dass für jede neue Parametereinstellung das neuronale Netzwerk mit einem neuen Satz an Gewichtungsfaktoren aktualisiert (updated) wird. Die Parametereinstellung selbst beeinflusst, wie nachfolgend beschrieben, die Anfangswerte und die gewünschten Ausgangsvektoren, welche für ein on-line Training verwendet werden. Das neuronale Netzwerk 1210 erzeugt die Ausgangssignale V1', V2' und V3', wie in Fig. 1.
  • Das in Fig. 12 gezeigte System weist viele der gleichen Vorteile, wie die erste beschriebene Ausführungsform auf. Ein zusätzlicher Vorteil liegt darin, dass bei der alternativen Ausführungsform der vorliegenden Erfindung ein kleineres neuronales Netzwerk verwendet werden kann, weil die Steuerparameter nicht als Eingaben verwendet werden.
  • Fig. 13 ist ein Blockdiagramm eines beispielhaften digitalen Video-Kamera-Systems, welches im wesentlichen das gleiche ist, wie das unter Bezugnahme auf Fig. 3 beschriebene Kamera-System.
  • Jeder Prozess bzw. jedes Verfahren, welches bei den in Fig. 13 gezeigten Signalen durchgeführt wird, weist zum Beispiel eine Übertragungsfunktion auf, welche nachfolgend gezeigt ist:
  • Farb-Balance
  • cb(x) = x · xgain (13) Hoch-Pass-Filter
  • Gamma-Korrektur
  • Γ(x) = M · (x/M)γ (15)
  • Kontrast-Kompression
  • CC(x) =( M/max(r, g, b)) · (max(r, g, b)/M)C · x (16)
  • Apertur-Korrektur
  • A(x, ap(x, g)) = x + apgain · ap(x, g) (17)
  • Es sollte angemerkt werden, dass für die Gleichungen (13) bis (17) M ein Normierungsfaktor ist, welcher der maximal mögliche Wert für ein Bildelement bzw. Pixel ist, max(r, g, b) ist der maximale Wert eines bestimmten [r, g, b] Vektors, der Vektor g ist g und seine 4-Nachbarn, d. h. oben, unten, links und rechts, und x ist r, g oder b. Das ganze Verfahren kann als die folgende Transformation oder Neuabbildung bzw. Abbildung (remapping) betrachtet werden:
  • Φ rgain, ggain, bgain, c, γ, apgain (r, g, b)
  • A(Γ((CC(cb(r, g, b))), ap(r, g, b))) (18)
  • Die Videoeingabeschaltkreise 1314, der Schaltkreis für die feste Muster-Korrektur 1316, der Farb-Balance-Prozessor 1318, der Gamma-Korrektur-Prozessor 1320 und der Kontrast-Kompressions-Prozessor 1322 werden von dem Schaltkreis zur Prozess- bzw. Verfahrens-Steuer-Programmierung 1334 gesteuert. Dieser Schaltkreis empfängt eine Information von einer Steuer-Tafel (panel) 1336 und liefert an diese eine Status- bzw. Zustands-Information. Zusätzlich zum Steuern des Signalverarbeitungssystems erzeugt der Steuer- und Programmier-Schaltkreis 1334 auch Taktsignale und andere Zeitsteuersignale für die CCD Abbildungsvorrichtungen 1310, den ADC 1312 und den DAC 1332.
  • Fig. 14a zeigt eine Videokameraanordnung, welche die gleiche ist, wie die in Fig. 13 gezeigte, außer dass ein neuronales Netzwerk 1420 und eine on-line Trainingseinheit 1424 (nachfolgend im Detail beschrieben) den Farb-Balance-Prozessor 1318, den Gamma-Korrektur-Prozessor 1320, den Kontrast-Kompressions-Prozessor 1322, den Hochpassfilter 1319 und die Apertur-Korrektur-Einheit 1324 ersetzen. Wie gesehen wird, empfängt die on-line Trainingseinheit 1424 Parametereingänge und erzeugt die geeigneten Gewichtungsfaktoren für das neuronale Netzwerk 1420. Bei einer Veränderung der Parametereingaben führt die Trainingseinheit 1424 eine Simulation unter Verwendung der gespeicherten Testvektoren durch. Die Ergebnisse der Simulation werden dann verwendet, um die programmierbaren Gewichtungsfaktoren für das neuronale Netzwerk 1420 zu bestimmen und zu aktualisieren (update).
  • Fig. 14b zeigt eine alternative Ausführungsform der on-line Trainingseinheit 1425 der vorliegenden Erfindung. Bei dieser Ausführungsform ist die on-line Trainingseinheit 1425 mit beiden der Eingänge und Ausgänge des neuronalen Netzwerkes 1420 gekoppelt, so dass diese Eingabevektoren anlegen kann, Ausgabevektoren extrahieren bzw. bestimmen kann und diese mit simulierten Testergebnissen vergleichen kann. Die Ergebnisse des Vergleichs werden dann von der Trainingseinheit 1425 verwendet, um die programmierbaren Gewichtungsfaktoren des neuronalen Netzwerkes 1420 zu aktualisieren. Ein Vorteil der tatsächlichen Verwendung des neuronalen Netzwerks 1420 für sein eigenes on-line Training liegt darin, dass es schneller sein würde als zum Beispiel ein Allzweck-Prozessor, welcher von der Trainingseinheit 1424 verwendet wird.
  • Es wird von den Fachleuten verstanden, dass die Verschaltung der Trainingseinheit 1425 mit beiden der Eingabe- und Ausgabe-Signalleitungen des neuronalen Netzwerks 1420 durchgeführt werden kann durch zum Beispiel Multiplexer oder Treiber mit hoher Impedanz.
  • Wenn im Moment die Komplexibilität des neuronalen Netzwerks 1420 vernachlässigt wird, ist der in Fig. 14a gezeigte Schaltkreis einfacher als die Schaltkreise in Fig. 13, einfach nur, weil dieser weniger Bestandteile aufweist. Zusätzlich, wie nachfolgend beschrieben, kann der Entwicklungsaufwand, welcher benötigt wird, um eine annehmbare Signalverarbeitung von dem in den Fig. 14a gezeigten Schaltkreisen zu erhalten, erheblich geringer sein, als derjenige, welcher benötigt wird, um den gleichen Grad einer Leistungsfähigkeit bei dem in Fig. 13 gezeigten Schaltkreisen zu erzeugen.
  • Selbst wenn die Komplexität des neuronalen Netzwerkes berücksichtigt bzw. betrachtet wird, kann der in Fig. 4a gezeigte Schaltkreis weniger kostenintensiv sein, als der in Fig. 13 gezeigte, weil das neuronale Netzwerk 1420 und die Trainingseinheit 1424, oder die Verarbeitungselemente, welche das Netzwerk bilden, Standard(off-theshelf)- Allzweck-Bauelemente sein können und demzufolge von einem Mengenrabatt profitieren können. Zusätzlich kann das neuronale Netzwerk so ausgelegt sein, dass es mehrere identische Prozess- bzw. Verarbeitungselemente verwendet.
  • In Fig. 14a sind die Farb-Balance, der Hochpassfilter, die Apertur-Korrektur, die Gamma-Korrektur und die Kontrast-Kompressions-Funktionen kombiniert und werden von dem neuronalen Netzwerk 1420 durchgeführt bzw. ausgeführt. Die Kombination dieser Funktionen ist hochgradig nicht-linear. Die Mehrzahl der Funktionen wird kombiniert, um die jeweiligen Signale r', g' und b' aus den eingegebenen Farbsignalen r, g und b zu erzeugen.
  • In den Gleichungen (13) bis (17) oder der zusammengesetzten Gleichung (18) sind die Signale r', g' und b' das Ergebnis der Durchführung der oben erwähnten Funktionen für die jeweiligen r, g und b Eingangssignale. Diese kombinierte Verarbeitung ist sehr nicht-linear, weil diese mehrere Exponenten und Maximum-Funktionen umfasst. Zusätzlich kann sich eines der ausgegebenen Farb-Ausgabe-Signale verändern, wenn das entsprechende Eingabe-Farb-Signal das gleiche ist, sich jedoch eines der anderen Eingabe-Farb-Signale verändert hat.
  • Des weiteren führen die Gleichungen nicht dazu, dass sie leicht implementiert bzw. realisiert werden können, weder mit einem analogen noch mit einem digitalen Schaltkreis. Während Gleichung (18) durch eine Kombination aus Schaltkreisen implementiert werden kann, welche jede Funktion erzeugen, beschränkt eine solche Implementation stark bzw. ernsthaft die Flexibilität bzw. Abänderbarkeit des Schaltkreises und erfordert einen erheblichen Entwicklungsaufwand. Schließlich würde, wenn die Funktion als eine große Nachschlagetabelle (LUT; Look Up Table) implementiert werden würde, die Menge des Speichers, welche benötigt wird, um den LUT zu speichern, selbst für 8-Bit Eingabewerte so groß sein, wie (2(8 · 7) = 256 oder 7,2 · 10¹&sup6;), und so die Vorrichtung unpraktisch bzw. praktisch nicht handhabbar machen.
  • Die Fig. 15a und 15b zeigen ein Knoten-Diagramm eines neuronalen Netzwerkes, welches zur Verwendung als Netzwerk 1420 geeignet ist, und ein funktionales Blockdiagramm einer beispielhaften Hardware-Implementation des in Fig. 15a gezeigten Netzwerkes.
  • Wie in Fig. 15a gezeigt, umfasst das Netzwerk 1420 drei Schichten von Knoten, Eingangsknoten 1510a bis 1510c, verborgene Knoten 1512a bis 1512c und Ausgabeknoten 1514a bis 1514c. Jeder der Eingabeknoten, zum Beispiel 1510a, empfängt alle Eingangssignale, die Farbsignale r, g und b, sowie das g Farbsignal für die Pixel oberhalb, unterhalb, links bzw. rechts. Wiederum hat das Netzwerk 1420· keine Parametereingänge; die Parameter sind effektiv bzw. wirksam in das Netzwerk "trainiert", während der Lern-Phase, welche nachfolgend im Detail beschrieben ist. Die Parameter nicht als Eingaben zu verwenden, weist den Vorteil auf, dass die Anzahl der Knoten reduziert werden kann, welche für eine gegebene Genauigkeit benötigt werden, weist jedoch den Nachteil auf, dass mindestens etwas on-line Training für jeden neuen Parametersatz erforderlich ist.
  • Jeder Eingangs- bzw. Eingabeprozessor stellt wiederum sein Ausgangssignal für alle verborgenen Prozessoren 1512a bis 1512c zur Verfügung. Jeder verborgene Prozessor, zum Beispiel 1512a, erzeugt drei Ausgangssignale, wobei eines davon an den Ausgangsknoten 1514a angelegt wird, ein anderes an 1514b, und ein drittes an den Ausgangsknoten 1514c. Die Ausgangsknoten 1514a, 1514b und 1514c erzeugen die jeweils verarbeiteten Farbsignale r', g' und b'.
  • Weil die Apertur-Korrektur-Funktion ein räumlicher Filter-Vorgang bzw. Filter- Verknüpfung ist, ist es für ein neuronales Netzwerk 1420 wünschenswert, einen Schaltkreis aufzuweisen, welcher mehrere Zeilen von Video-Abtastwerten (samples) speichert, so dass die mehrfachen bzw. vielen Abtastwerte, welche den einen Abtastwert umgeben (d. h. oberhalb, unterhalb, rechts und links), welcher verarbeitet wird, als Eingabewerte an das neuronale Netzwerk 1420 angelegt werden. Es sollte festgehalten werden, dass dieser Schaltkreis nicht innerhalb eines neuronalen Netzwerks 1420 liegen muss, solange das neuronale Netzwerk einen Zugriff auf die verzögerten bzw. nachfolgenden und vorangeschrittenen bzw. vorausgehenden Abtastwerte hat, welche dem Signalverarbeitungssystem zugeführt werden bzw. zur Verfügung stehen.
  • Wieder bezugnehmend auf Fig. 15a berechnet jeder Knoten in dem Netzwerk sukzessive bzw. aufeinanderfolgende gewichtete Summen von sukzessiven bzw. aufeinanderfolgenden Werten, welche an seine Eingabeanschlüsse angelegt werden, und transformiert dann die gewichteten Summen über eine sigmoidale bzw. s- oder cförmige Übertragungsfunktion (in Fig. 15b als NL gezeigt), um die Ausgangswerte zu erzeugen. Für die Eingabe- und verborgenen Prozessoren werden diese Ausgabewerte an alle Prozessoren in der nächsten Stufe angelegt. Für die Ausgabeprozessoren sind diese Ausgangswerte die Signale r', g' oder b'.
  • Fig. 15b zeigt eine beispielhafte Hardware-Implementation für das Netzwerk von Fig. 15a. Bei dieser Implementation wird die Verarbeitung, welche durch die Eingangsknoten von Fig. 15a durchgeführt wird, implementiert unter Verwendung von drei Paaren von 4 · 1 Punkt-Produkt-Einheiten (dot product units), wie zum Beispiel eine TRW TDC2246. Es sollte festgehalten werden, dass jedes Paar der 4 · 1 Einheiten alle sieben Eingaben empfängt. Die Ausgaben der einzelnen 4 · 1 Einheiten für jedes Paar werden addiert und das Ergebnis wird einer sigmoidalen bzw. s- oder c-förmigen nicht-linearen (NL) Transformation unterworfen, welche unter Verwendung eines Speichers implementiert werden kann.
  • Das Ausgangssignal eines jeden der NL Schaltkreise wird an einen 3 · 3 Matrix-Vektor- Multiplikator bzw. -Multiplizierer angelegt, welcher eine Summe der gewichteten Produkte bildet (welche die verborgenen Knoten des Netzwerks 1508 darstellen) und dieser gibt diese Ergebnisse an einen zweiten Satz von NL Schaltkreisen aus. Der 3 · 3 Matrix-Vektor-Multiplizierer in der beispielhaften Ausführungsform wird unter Verwendung eines TRW TMC2250 implementiert.
  • Schließlich werden die Ausgangssignale von dem zweiten Satz der NL Schaltkreise an einen zweiten 3 · 3 Matrix-Vektor-Multiplizierer angelegt, welcher eine zweite Summe an gewichteten Produkten bildet (welche die Ausgabeknoten des Netzwerks 1508 darstellen) und dieser gibt diese Ergebnisse an einen dritten Satz der NLs aus. Nachdem der letzte Satz der NLs die nicht-lineare sigmoidale Verarbeitung durchführt, werden die r', g' und b' Signale ausgegeben.
  • Fig. 16 ist ungeachtet der beispielhaften Ausführungsform von Fig. 15b ein funktionales Blockdiagramm eines Schaltkreises, welcher zur Verwendung als einer der Eingangsknoten geeignet ist. In Fig. 16 werden Abtastwerte (samples) der drei Farbsignale r, g und b und Abtastwerte der g Farbsignale für die Pixel oberhalb, unterhalb, links und rechts an jeden der Gewichtungsschaltkreise 1610a, 1610b, 1610c, 1610d, 1610e, 1610f und 1610g angelegt. Die jeweiligen Gewichtungsfaktoren, welche durch diese Schaltkreise angelegt werden sind WIi0, WIi1, WIi2, WIi3, WIi4, WIi5 und WIi6, wobei die Bezeichnung I anzeigt, dass dies Gewichtungsfaktoren von einem Eingangsprozessor sind und die Bezeichnung i bezeichnet den bestimmten Eingangsprozessor. Diese Gewichtungsfaktoren sind über einem Programmier-Bus PM programmierbar. Bei der beispielhaften Ausführungsform der Erfindung kann jeder der Schaltkreise 1610a bis 1610g ein bestimmter bzw. spezieller Multiplizier-Schaltkreis sein, bei welchem der programmierbare Gewichtungsfaktor an den Multiplikato- Eingangsanschluss angelegt wird und das jeweilige Eingangssignal (r, g, b, ga, gb, gr oder gl) wird an den Multiplikanden-Eingangsanschluss angelegt.
  • Die gewichteten Ausgangswerte (samples), welche von jedem der Gewichtungsschaltkreise 1610a bis 1610g zur Verfügung gestellt werden, werden an einen Summierschaltkreis 1612 angelegt. Bei einer digitalen Ausführungsform der Erfindung kann der Summierschaltkreis 1612 als ein Baum von Addierern implementiert werden.
  • Die Ausgangswerte bzw. -Samples, welche von dem Summier-Schaltkreis 1612 zur Verfügung gestellt werden, werden an einen Schaltkreis 1614 angelegt, welcher eine nicht-lineare Übertragungsfunktion implementiert. Bei der beispielhaften Ausführungsform der Erfindung ist der Schaltkreis 1614 ein Nur-Lese-Speicher (ROM; Read-Only Memory), welcher so programmiert ist, um den Eingabewert, welcher als Adressen zugeführt wird, zu Ausgabewerten zu transformieren, welche im wesentlichen gleich den Eingabewerten sind, wie bzw. wenn durch die Übertragungsfunktion verändert bzw. modifiziert. Bei der beispielhaften Ausführungsform der Erfindung ist die Übertragungsfunktion, welche von dem Schaltkreis 1614 implementiert wird, eine sigmoidale bzw. s- bzw. c-förmige Funktion gβ(x), welche die in Gleichung (19) gezeigte Form aufweist.
  • Bei dieser Ausführungsform der Erfindung ist die Funktion gβ(x) implementiert, wobei β einen Wert von 1 aufweist. Bei den Materialien bzw. Unterlagen, welche folgen, wird diese Funktion einfach als g(x) bezeichnet.
  • Das Ausgangs- bzw. Ausgabesignal des nicht-linearen Schaltkreises 1614 wird an einen Leitungs-Treiberschaltkreis 1616 angelegt, welcher drei Kopien des Ausgangssignals erzeugt, zum Anlegen an jeden der verborgenen Knoten 1512a bis 1512c, wie in Fig. 15a gezeigt. Es sollte festgehalten werden, dass die Ausgabe von NL 1614 entweder kopiert werden kann, bevor diese von dem Knoten ausgegeben wird, oder nachdem diese als eine Eingabe bei einem nachfolgenden Knoten empfangen wird.
  • Ein beispielhafter verborgener Prozessor ist in Fig. 17 gezeigt. Dieser Schaltkreis ist der gleiche, wie der in Fig. 16 gezeigte Schaltkreis, außer dass jeder der Gewichtungsschaltkreise 1710a bis 1710c ein Eingangssignal von einem jeweils unterschiedlichen der Eingangsknoten 1510a bis 1510c empfängt, wie in Fig. 15a gezeigt. Jeder der Gewichtungsfaktoren WHi0 bis WHi2, welche von den jeweiligen Gewichtungsschaltkreisen 1710a bis 1710c gespeichert werden, ist unabhängig über dem Programmier-Bus PM programmierbar. Bei der Notation dieser Gewichtungsfaktoren zeigt die Bezeichnung H an, dass dies verborgene (hidden) Prozessor-Faktoren sind und die Bezeichnung i bezeichnet einen speziellen verborgenen Prozessor.
  • Zusätzlich ist der in Fig. 17 gezeigte Schaltkreis ähnlich zu dem in Fig. 16 gezeigten, wobei der Zeilentreiber 1716 des verborgenen Prozessors auch die drei Kopien des Ausgangssignals erzeugt. Diese drei Ausgangssignale werden an jeweils verschiedene der Ausgabeprozessoren 1514a, 1514b und 1514c angelegt, wie in Fig. 15a gezeigt.
  • Fig. 18 ist ein Blockdiagramm eines Ausgabeprozessors, welcher zur Verwendung als einer der Prozessoren 1514a, 1514b und 1514c geeignet ist. Wie in der Figur gezeigt, weist der Ausgabeprozessor eine ähnliche Struktur wie der Eingabeprozessor und der verborgene Prozessor auf. Der Ausgabeprozessor weist drei Eingangssignale auf und demzufolge drei Gewichtungsschaltkreise 1810a bis 1810c. Jeder der Gewichtungsfaktoren WOi0 bis WOi2, welche durch die jeweiligen Gewichtungsschaltkreise 1810a bis 1810c implementiert werden, ist unabhängig über dem Programmier-Bus PM programmierbar. Bei der Notation bzw. Bezeichnung für diese Gewichtungsfaktoren zeigt die Bezeichnung O an, dass dies Ausgabe(output)- Prozessor-Faktoren sind und die Bezeichnung i bezeichnet einen speziellen Ausgabeprozessor. Die gewichteten Ausgabewerte, welche von den Gewichtungsschaltkreisen 1810a bis 1810c zur Verfügung gestellt werden, werden in einem Summier-Schaltkreis 1812 summiert.
  • Das Ausgabesignal des Summierschaltkreises 1812 wird an einen nicht-linearen ROM 1814 angelegt, welcher identisch zu dem nicht-linearen ROMs 1614 und 1714 sein kann, wie in den Fig. 16 bzw. 17 gezeigt. Das Ausgangssignal, welches von dem nicht-linearen ROM 1814 zur Verfügung gestellt wird, wird an einen Zeilentreiber 1816 angelegt, welcher ein Ausgabesignal mit einer ausreichenden Stärke erzeugt, um den Schaltkreis zu treiben bzw. anzusteuern, mit welchem der Ausgabeprozessor 1514a, 1514b oder 1514c gekoppelt ist.
  • Wieder bezugnehmend auf Fig. 14a ist das neuronale Netzwerk 1420 so programmiert, um die Übertragungsfunktionen der Farb-Balance, des Hochpassfilters, der Apertur-Korrektur, der Gamma-Korrektur und der Kontrast-Kompressions- Algorithmen zu implementieren, durch Programmieren der Werte der Gewichtungsfaktoren in jedem der Eingabe-, verborgenen und Ausgabe-Prozessoren. Diese Gewichtungsfaktoren werden unter Verwendung eines lernenden Algorithmus programmiert, basierend auf einem Satz von bekannten Eingabe/Ausgabe-Signal- Kombinationen. Dieser Algorithmus, welcher auf einer Trainingseinheit 1424 implementiert ist, bestimmt die Werte der Gewichtungsfaktoren, welche eine annehmbare Approximation bzw. Annäherung der kombinierten Funktionen erzeugen, wie durch Gleichung (18) definiert. Ein Verfahren, durch welches diese Gewichtungsfaktoren bestimmt werden, wird allgemein als eine Rück-Verfolgung (back-propagation) eines Fehlers bezeichnet und ist nachfolgend beschrieben.
  • Es sollte festgehalten werden, dass das Netzwerk von Fig. 15a in der Größe verringert ist, im Vergleich zum Beispiel dem Netzwerk der ersten Ausführungsform. Diese verringerte Größe resultiert daraus, dass die Parametereinstellungen in dem Eingangs- bzw. Eingabevektor nicht enthalten sind. Jedoch bedeutet das fehlende Einschließen der Parametereinstellungen in dem Eingabevektor, dass das neuronale Netzwerk 1420 wieder für jede neue Parametereinstellung trainiert werden muss, und demzufolge ein on-line Training erfordert.
  • Ein wichtiges Merkmal dieser alternativen Ausführungsform der vorliegenden Erfindung ist in seiner Netzwerk-Trainings-Technik verkörpert, welche eine Kombination eines off-line Trainings und eines on-line Trainings ist. Das off-line Training ist so ausgelegt bzw. entworfen, um die Menge der Zeit zu verringern, welche für ein on-line Training benötigt wird, zum Beispiel nicht mehr als 1 s bei der beispielhaften Ausführungsform.
  • Um dieses zu ermöglichen, ist es wichtig, gute anfängliche Gewichtungswerte zu haben, bevor das on-line Training beginnt. Bei der beispielhaften Ausführungsform wird dies durch das off-line Training des neuronalen Netzwerkes für einen vorgegebenen Satz von Parameter-Vektoren erzielt, und durch Speichern des Satzes der erhaltenen Gewichtungsfaktoren. Dann wird während der on-line Arbeitsweise des Kamera-Prozessors für einige bzw. eine gewünschte Parametereinstellung der geeignete Anfangs-Gewichtungs-Vektor verwendet. Bei der beispielhaften Ausführungsform wird der geeignete Anfangs-Gewichtungs-Vektor durch ein Entfernungsmaß (distance metric) bestimmt, welches den gewünschten Parameter-Vektor mit den gespeicherten abgetasteten (sampled) Parameter-Vektoren vergleicht, und der gespeicherte abgetastete (sampled) Parameter-Vektor mit der "nächsten" Parametereinstellung wird verwendet. Offensichtlich, wenn die on-line Parametereinstellung die gleiche ist wie eine der gespeicherten abgetasteten bzw. Beispiel-Parameter-Vektoren, dann muss ein on-line Training nicht durchgeführt werden, weil geeignete Gewichtungsfaktoren für diese Parametereinstellung schon in dem Speicher gespeichert sind.
  • Ein Beispiel eines Abstandsmaßes, welches zur Bestimmung der nächsten gespeicherten Parametereinstellung Ps* geeignet ist, ist
  • D (Pd, Ps) (Pdi - Psi)²
  • Wobei gilt: Pa = (pd1, pa2, pa3... pan) ist der gewünschte Parameter-Vektor; wobei Ps = (psi) sind die gespeicherten Parameter-Vektoren, so dass s = 1...k und i = ...n, wobei n die Anzahl der Steuerparameter ist und k ist die Anzahl der vorgegebenen bzw. bestimmten Parameter-Vektoren. D(Pa, Ps) wird für s = 1, ...k berechnet, und das s liefert das Minimum D(Pa, Ps), was zu Ps* wird, oder
  • [D(Pd, Pn)] = > Ps*
  • Die vorgegebenen Gewichtungen, welche Ps* zugeordnet sind, werden dann als die Anfangsgewichte bzw. -gewichtungen für ein on-line Training verwendet.
  • Es sollte festgestellt werden, dass selbst wenn eine on-line Veränderung der Parametereinstellungen nicht identisch mit einer gespeicherten Abtast(sampled)- Parameter-Einstellung ist, ein Satz von gespeicherten Gewichtungsfaktoren noch ausreichend für die spezielle bzw. bestimmte Parametereinstellung sein kann. Die Festlegung bzw. Bestimmung, ob ein Satz von Gewichtungsfaktoren ausreichend bzw. geeignet für einen Wertebereich innerhalb einer bestimmten Dimension des Parametervektors ist, und demzufolge kein on-line Training erfordert, kann off-line berechnet werden oder in einen Maß (metric) mit einer flexiblen Distanz programmiert werden.
  • Als ein Beispiel der off-line/on-line Trainingsstrategie wird angenommen, dass die Parameter-Vektoreinstellung wie bei Fig. 19a ist (rgain = 1, ggain = 1, bgain = 1, C = .4, Gamma = 1, apgain = 2). Es wird mit kleinen Zufalls-Anfangs-Gewichten bzw. -Gewichtungen begonnen, ein off-line Training durchgeführt und zum Beispiel der in Fig. 19a gezeigte Fehler erzeugt. Nach diesem Training werden die Gewichtungen gespeichert und der oben beschriebenen Parameter-Vektor-Einstellung zugeordnet.
  • Dann wird während dem Betrieb bzw. der Arbeitsweise des Kamera-Prozessors eine Parametereinstellung nahe zu dieser gewünscht (z. B. apgain = 3 und alle anderen Werte bleiben gleich). Das neuronale Netzwerk 1420 wird dann für die neue Einstellung trainiert, jedoch würden die Anfangs-Gewichtungs-Werte, welche verwendet werden, diejenigen sein, welche für die Parametereinstellungen von Fig. 19a berechnet wurden. Das Training würde erfolgen bzw. fortschreiten und die Fehler von Fig. 19b erzeugen. Es kann aus Fig. 19b gesehen werden, dass der Anfangsfehler klein ist, und dass das Training einen annehmbaren Fehler nach nur ungefähr 500 Durchläufen (epochs) erreicht, wohingegen in Fig. 19a der Fehler immer noch nicht annehmbar war, selbst nach 2000 Durchläufen (epochs).
  • Eine Technik zur Berechnung der Gewichtungswerte, wie nachfolgend im Detail beschrieben, ist es als erstes das Netzwerk für eine einzelne Funktion zu "trainieren". Dann wird das Netzwerk unter Verwendung dieser Werte für eine zusammengesetzte Funktion trainiert, welche aus der ersten Funktion und einer zweiten Funktion besteht. Dieses Verfahren wird fortgesetzt, bis jede der Funktionen in dem neuronalen Netzwerk berücksichtigt wurde.
  • Die obige Vorgehensweise ermöglicht das Training von komplexen neuronalen Netzwerken, was sonst zu schwierig wäre, um direkt für die zuletzt bzw. endgültig zusammengesetzte Funktion zu trainieren. Bei der beispielhaften Ausführungsform der vorliegenden Erfindung kann das neuronale Netzwerk off-line unter Verwendung dieser Prozedur bzw. dieses Verfahrens trainiert werden, oder, aufgrund seiner verringerten Größe und Komplexität, kann dieses direkt von der letztlich bzw. abschließend zusammengesetzten Funktion trainiert werden, wie durch Gleichung (6) beschrieben.
  • Die Ablaufdiagramme und darauf bezogenen Beschreibungen der Fig. 9 und 11 veranschaulichen ein allgemeines Verfahren zur off-line Bestimmung der Gewichtungswerte für mehrere Sätze von Parametereinstellungen, welche dann zur Verwendung bei einem on-line Training gespeichert werden, was beschrieben wird. Bei der beispielhaften Ausführungsform der Erfindung ist dieser Algorithmus "off-line" unter Verwendung eines Allzweck-Computers implementiert.
  • Die off-line Verarbeitung dient dem Bestimmen und Speichern der anfänglichen Gewichtungs-Faktoren, welche verwendet werden, um das neuronale Netzwerk vor dem on-line Trainingsprozess bzw. -verfahren zu initialisieren. Diese off-line Verarbeitung wird für jede neue Parametereinstellung durchgeführt, welche zum Training ausgewählt wird. Bei der beispielhaften Ausführungsform wird eine repräsentative Abtastung (sampling) des Parameterraums durchgeführt, wobei daran gedacht wird, dass die erhaltenen Gewichtungswerte als Anfangswerte für ein on-line Training verwendet werden sollen.
  • Obwohl die Fig. 9 und 11 im Detail oben beschrieben sind, sollte festgestellt werden, das bei der alternativen Ausführungsform zur Erzeugung von Testmustern das Programm eine Gamma(y)-Parametereinstellung auswählt, dann zum Beispiel mehrere Sätze von zufälligen Eingabewerten für r, g, b, ga, gb, gr und g1 erzeugt und diese Werte an die Gamma-Gleichung (3) anlegt bzw. einsetzt, um die entsprechenden Ausgangswerte zu erhalten, welche die Gamma-korrigierten r, g und b Farb-Signale darstellen. Jeder Satz der Eingangswerte und der entsprechenden Ausgangswerte bildet ein Trainingsmuster für die Funtion F1 mit der ausgewählten y Einstellung. Wenn eine ausreichende Anzahl von verschiedenen Mustern erzeugt wurde, geht die Steuerung von Schritt 912 auf Schritt 914 über, bei welchem das System unter Verwendung der erzeugten Muster trainiert wird. Das neuronale Netzwerk wird trainiert, um die Übertragungsfunktion zu implementieren, welche verwendet wurde, um die Trainingsmuster zu erzeugen, durch wiederholtes Anlegen bzw. Anwenden der Muster an das simulierte Netzwerk. Schritt 914 stellt nur eine Anwendung der Trainingsmuster dar.
  • Demzufolge wird, wenn Schritt 930 ausgeführt wird, bestimmt, dass keine weiteren Funktionen simuliert werden müssen, Schritt 932 wird ausgeführt, bei welchem die abschließenden Gewichtungsfaktoren für die bestimmte Parametereinstellung gespeichert werden. Das ganze Verfahren wird dann für jeden Satz der Parametereinstellungen wiederholt, was zu einem Satz von gespeicherten Gewichtungsfaktoren für jede abgetastete (sampled) Parametereinstellung führt.
  • Noch einmal auf Fig. 14a bezugnehmend ist der Kamera-Schaltkreis, welcher in Fig. 14a gezeigt ist, betriebsbereit, wenn die abschließenden Einstellungen der Gewichtungsfaktoren gespeichert wurden.
  • Bei der beispielhaften Ausführungsform der vorliegenden Erfindung verwendet aufgrund der Zeitbeschränkungen bzw. zeitlichen Rahmenbedingungen des Trainings der Funktionen nacheinander, das on-line Training des neuronalen Netzwerks eine kleine Abwandlung des unter Bezugnahme auf die Fig. 9 und 11 beschriebenen. Während dem on-line Training wird die abschließende bzw. endgültige zusammengesetzte Funktion verwendet, und nicht das neuronale Netzwerk Funktion für Funktion trainiert.
  • Fig. 21 zeigt ein Ablaufdiagramm, ähnlich zu demjenigen von Fig. 9, welches die on-line Training-Technik veranschaulicht, welche bei der beispielhaften Ausführungsform der vorliegenden Erfindung verwendet wird. Bei Schritt 2108 wird das Distanz-Maß verwendet, um zu bestimmen, welche der Parametereinstellungen, welche off-line verarbeitet wurden, am nächsten bei der on-line Parametereinstellung liegt. Als nächstes werden bei Schritt 2110 die Gewichtungsfaktoren für die nächste off-line Parametereinstellung als die Anfangsgewichte für ein on-line Training verwendet.
  • Die Trainingsmuster von Schritt 2112 werden direkt aus Gleichung (18) berechnet, um die Eingabe-gewünschte-Ausgabe Vektoren zu erzeugen. Bei dieser Vorgehensweise wird der [r, g, b] Eingaberaum linear abgetastet, wobei jede Dimension bei fünf Punkten abgetastet wird. Für jeden [r, g, b] Vektor werden die grünen Nachbarn zufällig unter Verwendung einer Gauss-Verteilung gezogen bzw. ausgewählt, wobei das mittlere grüne Pixel als der Mittelwert genommen wird und 0,1 · M (wobei M das gleiche wie dasjenige in den Gleichungen (15) und (16) ist) als die Standardabweichung genommen wird. Die Ausgabevektoren werden dann unter Verwendung des Pixel- Eingabe-Vektors, des Parameter-Eingabe-Vektors und der Gleichung (18) erzeugt. Dieses Verfahren erzeugt eine Gesamtsumme von 125 Vektoren für das Training.
  • Die Beschreibung des Restes des Ablaufdiagrammes ist die gleiche, wie oben für Fig. 9 ausgeführt. Bei der beispielhaften Ausführungsform der Erfindung ist dieser Algorithmus "on-line" implementiert unter Verwendung eines Allzweck-Prozessors in der Video-Kamera, zum Beispiel der Trainings-Einheit 1424, wie in Fig. 14a gezeigt.
  • Bei der in Fig. 14b gezeigten alternativen Ausführungsform der Erfindung würde der Trainings-Algorithmus wahrscheinlich schneller und weniger komplex sein, weil das tatsächliche neuronale Netzwerk 1420 verwendet würde, um die Ergebnisse während des on-line Training-Verfahrens zu "simulieren". Die Trainings-Einheit 1425 würde jedoch noch verwendet werden, um die verbleibenden Funktionen durchzuführen, wie oben beschrieben, zum Bestimmen von geeigneten Gewichtungsfaktoren.
  • Wie erwähnt, ist das oben beschriebene Verfahren zur Berechnung der Gewichtungswerte durch direktes Verwenden der abschließenden zusammengesetzten Funktion für kleine, relativ einfache neuronale Netzwerke wünschenswert; wenn jedoch das neuronale Netzwerk der vorliegenden Erfindung eine zusätzliche Funktionalität aufweist (d. h. andere Verarbeitungseinheiten in der Videokamera) oder einfach komplexer wird bei einer anderen Anwendung, wie zum Beispiel einer medizinischen bzw. medizintechnischen Abbildung oder einer räumlichen Abbildung, dann sollte das allgemeiner anwendbare Trainingsverfahren, welches oben beschrieben wurde, verwendet werden.
  • Fig. 20a - 20c zeigen die Ergebnisse von groben Vergleichen zwischen einer herkömmlichen und einer neuronalen Verarbeitung der beispielhaften Ausführungsform der vorliegenden Erfindung. Ein Farb-Test-Bild wurde zufällig ausgewählt. Verschiedene Parametereinstellungen wurden ausgewählt und das Testbild wurde mit beiden simuliert, dem neuronalen und einem herkömmlichen Prozessor. Die 1D Zeichnungen wurden erzeugt durch Zeichnen einer einzelnen Zeile des Bildes. Einige Vergleiche sind in den Fig. 20a und 20b dargestellt. In Fig. 20a war der Parametervektor [rgain = 1, ggain = 1, bgain = 1, gamma = 1, contrast = 0,4, apgain = 0] und in Fig. 20b war der Parametervektor [rgain = 1, ggain = 1, bgain = 1, gamma = 0,5, contrast = 1,0 apgain = 1,0].
  • Als ein Beispiel der Programmierbarkeit des neuronalen Verfahrens wird eine Veränderung der Kontrast-Kompressions-Transformations-Funktion betrachtet. Die neue Transformation erhöht die Sättigung zweimal soviel wie die Leuchtdichte bzw. Luminanz (wobei der Farbton beibehalten wird) im Gegensatz zum gleichmäßigen Erhöhen der Sättigung und Leuchtdichte (was die Funktion der Gleichung 4 ist). Diese Transformationsveränderung erfordert keine Veränderung der Architektur des neuronalen Netzwerks; jedoch würde definitionsgemäß ein herkömmliches analoges oder digitales Signalverarbeitungssystem aktualisiert (updated) werden müssen. Ein Testbild wurde unter Verwendung dieser neuen Art einer Kontrast-Kompression verarbeitet und die Ergebnisse können in Fig. 20c gesehen werden. In Fig. 20c war der Parametervektor [rgain = 1, ggain = 1, bgain = 1, gamma = 1, contrast = 0,4, apgain = 1].
  • Es wird angemerkt, dass Fig. 20c im wesentlichen die gleichen Fehler mit dem neuen Kontrast-Kompressions-Verfahren aufweist, wie bei der vorangegangenen Definition. Dies ist im wesentlichen die Leistungsfähigkeit bzw. Potenz des neuronalen Netzwerks;
  • obwohl die gewünschte Transformation verändert wurde, blieb die Architektur des Netzwerks die gleiche, nur die Gewichtungen wurden verändert.
  • Während die Erfindung im Hinblick auf eine beispielhafte Ausführungsform beschrieben wurde, wird festgestellt, dass diese, wie oben umschrieben, innerhalb des Schutzbereichs der beiliegenden Ansprüche ausgeführt werden kann.

Claims (11)

1. Signalverarbeitungssystem, welches eine Mehrzahl von Eingabesignalen in Abhängigkeit von mindestens ersten und zweiten nicht-linearen Signalverarbeitungsfunktionen verarbeitet, um eine Mehrzahl von Ausgabesignalen zu erzeugen, wobei das System aufweist:
ein neuronales Netzwerk (410, 420, 1210) mit einer Mehrzahl von programmierbaren Gewichtungsfaktoren (Mbi); einer Mehrzahl von Eingabeanschlüssen zum Aufnehmen bzw. Empfangen der Mehrzahl der Eingabesignale (R, G, B), und einer Mehrzahl von Regel- bzw. Steuersignalen (GAMMA, CC); und einer Mehrzahl von Ausgabeanschlüssen zum Ausgeben bzw. zur Verfügung stellen der Mehrzahl der Ausgabesignale (R, G, B);
eine Simulationsvorrichtung zum Erzeugen einer Mehrzahl von Werten, wobei jeder einem jeweils anderen der Gewichtungsfaktoren entspricht, mit:
einer Vorrichtung zum Simulieren einer Antwort bzw. eines Ansprechverhaltens des neuronalen Netzwerks auf eine Mehrzahl von Testmuster, wobei jedes Muster einen Eingabevektor, einen Regel- bzw. Steuer- bzw. Kontroll-Vekror und einen Ausgabevektor enthält; und
einer Vorrichtung zum Verändern der jeweils simulierten Werte, welche den Gewichtungsfaktoren zugeordnet bzw. zugewiesen sind, um das simulierte Ansprechverhalten bzw. die simulierte Antwort an die Ausgabevektoren der Testmuster anzupassen bzw. anzugleichen;
einer Vorrichtung zur Erzeugung einer ersten Mehrzahl von Testmustern, welche jeweils einen Eingabevektor, einen Regel- bzw. Steuervektor und einen gewünschten Ausgabevektor aufweisen, für die erste nicht-lineare Funktion und zum Anlegen der Testmuster an die Simulationsvorrichtung, um vorläufige Werte für die Mehrzahl der Gewichtungsfaktoren zu erzeugen;
einer Vorrichtung zum Erzeugen einer zweiten Mehrzahl von Testmustern, welche eine Kombination der ersten und zweiten nicht-linearen Signalverarbeitungsfunktionen darstellen, wobei jedes Muster in der zweiten Mehrzahl der Testmuster einen Eingabevektor, einen Regel- bzw. Steuervektor und einen gewünschten Ausgabevektor enthält, und zum Anlegen des zweiten Satzes der Testmuster an die Simulationsvorrichtung, um endgültige bzw. Endwerte für die Mehrzahl der Gewichtungsfaktoren zu erzeugen; und
einer Vorrichtung zum Anlegen der Endwerte der Gewichtungsfaktoren an das neuronale Netzwerk, um es dem neuronalen Netzwerk zu ermöglichen, die Eingabesignale in Abhängigkeit von bzw. gemäß den ersten und zweiten nichtlinearen Signalverarbeitungsfunktionen zu verarbeiten.
2. System nach Anspruch 1, wobei die Simulationsvorrichtung aufweist:
einen Simulator, welcher eine Antwort bzw. ein Ansprechverhalten des neuronalen Netzwerkes bezüglich eines jeden der Eingabevektoren und Regel- bzw. Steuervektoren der Testmuster simuliert, um einen Vektor von simulierten Ausgabewerten zu erzeugen;
eine Vorrichtung zum Berechnen einer Mehrzahl von Kostenfunktionswerten, wobei jeder Kostenfunktionswert eine mathematische Funktion der simulierten ausgewählten Ausgabewerte darstellt und den gewünschten Ausgabewerten des gewünschten Ausgabevektors entspricht;
eine Rückführungs- bzw. Rückkopplungs-(back propagation)Vorrichtung, welche auf die Kostenfunktionswerte anspricht bzw. reagiert, zum Modifizieren bzw. Verändern von jedem der programmierbaren Gewichtungsfaktoren, um die Differenzen zwischen den jeweiligen Werten bei jedem der Ausgangsvektoren und der Werte in dem Vektor der simulierten Ausgangs- bzw. Ausgabewerte zu minimieren; und
einer Vorrichtung zum Bestimmen, wann die Gewichtungsfaktoren zu Werten konvergiert sind, welche es ermöglichen, dass das neuronale Netzwerk die Signalverarbeitungsfanktion mit einem annehmbaren Fehler emuliert bzw. simuliert.
3. System nach Anspruch 2, wobei jeder Kostenfunktionswert eine Funktion aller simulierten Ausgabewerte des neuronalen Netzwerkes ist.
4. System nach Anspruch 2, wobei das System ein Farbvideo-Signalverarbeitungs- System ist, welches mindestens erste und zweite Farbsignalwerte als jeweilige erste und zweite Ausgabewerte in beiden, den simulierten und gewünschten Ausgabevektoren, erzeugt, und die Kostenfunktion ist eine Funktion einer Differenz zwischen einem Verhältnis der simulierten ersten und zweiten Ausgabewerte und einem Verhältnis der gewünschten ersten und zweiten Ausgabewerte.
5. System nach Anspruch 2, wobei das System ein Farbvideo-Signalverarbeitungs- System ist, welches mindestens erste und zweite Farbsignalwerte als jeweils erste und zweite von beiden, den simulierten und gewünschten Ausgabewerten, erzeugt, und die Kostenfunktion ist eine Funktion einer Kombination bzw. Verknüpfung der ersten und zweiten simulierten Ausgabewerte und der ersten und zweiten gewünschten Ausgabewerte, welche eine Differenz zwischen einem ersten Leuchtdichte- bzw. Helligkeits-(luminance)Wert, welcher durch die simulierten Ausgabewerte erzeugt wird, und einem zweiten Leuchtdichte- bzw. Helligkeitswert, welcher durch die entsprechenden gewünschten Ausgabewerte erzeugt wird, darstellt.
6. Signalverarbeitungssystem nach Anspruch 1, wobei die Eingabesignale Videoinformationssignale sind, die erste nicht-lineare Signalverarbeitungsfunktion ist eine Gamma-Korrektur und die zweite nicht-lineare Signalverarbeitungsfunktion ist eine Kontrast-Kompression bzw. -Verdichtung.
7. System nach Anspruch 6 weiter aufweisend eine Vorrichtung zum Erzeugen eines dritten Satzes von Testmustern, welche die Ergebnisse der Verarbeitung der Eingabewerte darstellen, unter Verwendung einer Farbkorrekturfunktion in Kombination mit der Gamma-Korrekturfunktion und der Kontrast-Verdichtungs- Funktion; und
eine Vorrichtung zum Trainieren des neuronalen Netzwerkes unter Verwendung des dritten Satzes der Testmuster, nachdem das neuronale Netzwerk trainiert wurde unter Verwendung des zweiten Satzes der Testmuster, um einen Satz an Werten für die Mehrzahl der Gewichtungsfaktoren zu erzeugen, um die kombinierte Farbkorrektur, Kontrast-Kompression und Gamma-Korrektur-Funktionen zu emulieren bzw. simulieren.
8. System nach Anspruch 7 weiter aufweisend eine Vorrichtung zum Erzeugen eines vierten Satzes von Testmustern, welche die Ergebnisse einer Verarbeitung der Eingabewerte darstellen, unter Verwendung einer Apertur- bzw. Öffnungs- Korrektur-Funktion in Kombination mit der Gamma-Korrektur-Funktion, der Kontrast-Kompressions-Funktion und der Farb-Korrektur-Funktion; und eine Vorrichtung zum Trainieren des neuronalen Netzwerkes unter Verwendung des vierten Satzes der Testmuster, nachdem das neuronale Netzwerk trainiert wurde unter Verwendung des dritten Satzes der Testmuster, um Werte für die Mehrzahl der Gewichtungsfaktoren zu erzeugen, welche es dem neuronalen Netzwerk ermöglichen, die kombinierte Apertur- bzw. Öffnungs-Korrektur, Farb-Korrektur, Kontrast-Kompression und Gamma-Korrektur-Funktionen zu emulieren bzw. simulieren.
9. Signalverarbeitungssystem nach Anspruch 6, wobei die Videoinformationssignale rote, grüne, und blaue Farbsignale aufweisen.
10. Signalverarbeitungssystem nach Anspruch 6, wobei die Videoinformationssignale rote, grüne und blaue Farbsignale aufweisen und die ersten und zweiten nicht linearen Signalverarbeitungsfunktionen werden aus einer Gruppe bestehend aus einer Gamma-Korrektur, einer Kontrast-Kompression, einem Farbabgleich bzw. - kompensation und einer Apertur- bzw. Öffnungskorrektur ausgewählt.
11. Verfahren zum Verarbeiten einer Mehrzahl von Eingabesignalen in Abhängigkeit von mindestens ersten und zweiten nicht-linearen Signalverarbeitungsfunktionen, um eine Mehrzahl von Ausgabesignalen zu erzeugen, in einem System, welches ein neuronales Netzwerk mit einer Mehrzahl von programmierbaren Gewichtungsfaktoren aufweist, wobei das Verfahren die Schritte aufweist:
Erzeugen einer ersten Mehrzahl von Testmustern, welche die erste nicht-lineare Signalverarbeitungsfunktion darstellen, wobei jedes Muster in der ersten Mehrzahl der Testmuster einen Eingabevektor, einen Regel- bzw. Steuervektor und einen Ausgabevektor enthält, für die erste nicht-lineare Funktion;
Simulieren eines Ansprechverhaltens bzw. einer Antwort des neuronalen Netzwerks auf die erste Mehrzahl der Testmuster und Modifizieren bzw. Abändern der Gewichtungsfaktoren des neuronalen Netzwerkes, um die simulierte Antwort bzw. Ansprechverhalten des neuronalen Netzwerkes an die Ausgabevektoren, welche in der ersten Mehrzahl der Testmuster enthalten sind, anzupassen bzw. abzugleichen, um eine Mehrzahl von vorläufigen bzw. Zwischenwerten für die Gewichtungsfaktoren zu erzeugen;
Erzeugen einer zweiten Mehrzahl von Testmustern, welche eine Kombination der ersten und zweiten nicht-linearen Signalverarbeitungs-Funktionen darstellen, wobei jedes Muster der zweiten Mehrzahl der Testmuster einen Eingabevektor, einen Regel- bzw. Steuervektor und einen Ausgabevektor enthält;
Simulieren eines Ansprechverhaltens bzw. einer Antwort des neuronalen Netzwerks auf die zweite Mehrzahl der Testmuster und Modifizieren bzw. Abändern der Gewichtungsfaktoren des neuronalen Netzwerks, um das simulierte Ansprechverhalten bzw. Antwort des neuronalen Netzwerks an die Ausgabevektoren anzupassen bzw. abzugleichen, welche in der zweiten Mehrzahl der Testmuster enthalten sind, um eine Mehrzahl von Endwerten für die Gewichtungsfaktoren zu erzeugen;
Anlegen bzw. Anwenden der Endwerte der Gewichtungsfaktoren bei dem neuronalen Netzwerk; und
Verarbeiten der Eingabesignale unter Verwendung des neuronalen Netzwerkes, um die Ausgangssignale zu erzeugen.
DE69424464T 1993-03-31 1994-03-31 Videobildverarbeitungssystem mit neuronalem Netzwerk Expired - Fee Related DE69424464T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/040,407 US5376963A (en) 1993-03-31 1993-03-31 Neural network video image processor
US08/119,873 US5376962A (en) 1993-03-31 1993-09-10 Neural network video image processor

Publications (2)

Publication Number Publication Date
DE69424464D1 DE69424464D1 (de) 2000-06-21
DE69424464T2 true DE69424464T2 (de) 2001-01-18

Family

ID=26717040

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69424464T Expired - Fee Related DE69424464T2 (de) 1993-03-31 1994-03-31 Videobildverarbeitungssystem mit neuronalem Netzwerk

Country Status (4)

Country Link
US (1) US5376962A (de)
EP (1) EP0618737B1 (de)
JP (1) JPH06295293A (de)
DE (1) DE69424464T2 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5589954A (en) * 1993-05-28 1996-12-31 Ricoh Company, Ltd. γ-correction curve selecting apparatus and a γ-correction curve creating apparatus
US5541653A (en) * 1993-07-27 1996-07-30 Sri International Method and appartus for increasing resolution of digital color images using correlated decoding
US5717605A (en) * 1993-10-14 1998-02-10 Olympus Optical Co., Ltd. Color classification apparatus
US5598510A (en) * 1993-10-18 1997-01-28 Loma Linda University Medical Center Self organizing adaptive replicate (SOAR)
JP3083067B2 (ja) * 1994-08-03 2000-09-04 富士ゼロックス株式会社 色変換係数決定方法及び装置
JP3758228B2 (ja) * 1996-02-29 2006-03-22 ソニー株式会社 クラス分類適応処理における学習方法および学習装置
ATE235789T1 (de) * 1996-10-31 2003-04-15 Stuttgart Mikroelektronik Lichtempfindliche sensoreinheit für eine elektronische kamera, mit einer flächigen anordnung von bildpunkten sowie verfahren zum auslesen der bildpunkte zur farbsignalverarbeitung
US6181321B1 (en) 1997-04-23 2001-01-30 Canon Kabushiki Kaisha Combined color cast removal and contrast enhancement for digital color images
US6351740B1 (en) * 1997-12-01 2002-02-26 The Board Of Trustees Of The Leland Stanford Junior University Method and system for training dynamic nonlinear adaptive filters which have embedded memory
US20030160901A1 (en) * 2002-02-28 2003-08-28 Topper Robert Joseph Inverse gamma correction circuit using piecewise-linear approximation
JP2004013602A (ja) * 2002-06-07 2004-01-15 Handotai Rikougaku Kenkyu Center:Kk データ駆動プロセッサのエミュレーションシステム
US8490194B2 (en) * 2006-01-31 2013-07-16 Robert Moskovitch Method and system for detecting malicious behavioral patterns in a computer, using machine learning
IL181041A0 (en) * 2007-01-29 2007-07-04 Deutsche Telekom Ag Improved method and system for detecting malicious behavioral patterns in a computer, using machine learning
US8842183B2 (en) 2008-08-08 2014-09-23 Snap-On Incorporated Image-based inventory control system with automatic calibration and image correction
US9041508B2 (en) * 2008-08-08 2015-05-26 Snap-On Incorporated Image-based inventory control system and method
US9147174B2 (en) 2008-08-08 2015-09-29 Snap-On Incorporated Image-based inventory control system using advanced image recognition
CN103458236B (zh) * 2013-09-18 2016-12-07 重庆大学 危化品物流智能监控系统
US10223635B2 (en) 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
DE202016009089U1 (de) 2015-02-19 2022-02-10 Magic Pony Technology Limited Online-Training von hierarchischen Algorithmen
GB201604672D0 (en) 2016-03-18 2016-05-04 Magic Pony Technology Ltd Generative methods of super resolution
GB201603144D0 (en) 2016-02-23 2016-04-06 Magic Pony Technology Ltd Training end-to-end video processes
EP3278559B1 (de) 2015-03-31 2021-05-05 Magic Pony Technology Limited Training von end-zu-end-videoverfahren
EP3298579B1 (de) 2016-04-12 2021-07-21 Magic Pony Technology Limited Visuelle datenverarbeitung mit energienetzwerken
GB201607994D0 (en) 2016-05-06 2016-06-22 Magic Pony Technology Ltd Encoder pre-analyser
US10701394B1 (en) 2016-11-10 2020-06-30 Twitter, Inc. Real-time video super-resolution with spatio-temporal networks and motion compensation
JP7242185B2 (ja) * 2018-01-10 2023-03-20 キヤノン株式会社 画像処理方法、画像処理装置、画像処理プログラム、および、記憶媒体
US10579754B1 (en) * 2018-09-14 2020-03-03 Hewlett Packard Enterprise Development Lp Systems and methods for performing a fast simulation
US10502628B1 (en) * 2018-09-27 2019-12-10 Datacolor Inc. Inter-instrument variation correction
WO2021168001A1 (en) * 2020-02-19 2021-08-26 Dolby Laboratories Licensing Corporation Joint forward and backward neural network optimization in image processing
US11812589B2 (en) * 2021-05-12 2023-11-07 Nvidia Corporation Intelligent refrigerant distribution unit for datacenter cooling systems

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4803736A (en) * 1985-11-27 1989-02-07 The Trustees Of Boston University Neural networks for machine vision
DE69031842T2 (de) * 1989-02-20 1998-04-16 Fujitsu Ltd Lernsystem und Lernverfahren für eine Datenverarbeitungsvorrichtung
JPH02287860A (ja) * 1989-04-28 1990-11-27 Omron Corp 情報処理装置
JP2575215B2 (ja) * 1989-10-30 1997-01-22 富士写真フイルム株式会社 カラー画像形成装置
JP2810202B2 (ja) * 1990-04-25 1998-10-15 株式会社日立製作所 ニューラルネットワークによる情報処理装置
US5212765A (en) * 1990-08-03 1993-05-18 E. I. Du Pont De Nemours & Co., Inc. On-line training neural network system for process control
JP2643582B2 (ja) * 1990-10-20 1997-08-20 ヤマハ株式会社 自動リズム生成装置
SG71656A1 (en) * 1990-11-26 2000-04-18 Rca Thomson Licensing Corp Neural networks as for video signal processing
US5161014A (en) * 1990-11-26 1992-11-03 Rca Thomson Licensing Corporation Neural networks as for video signal processing
JP3026630B2 (ja) * 1991-04-19 2000-03-27 株式会社リコー 電子写真プロセス制御装置
JP3154416B2 (ja) * 1991-05-01 2001-04-09 キヤノン株式会社 画像処理装置およびその方法
EP0551524A4 (en) * 1991-08-05 1994-08-10 Kawasaki Steel Co Signal processor and learning method thereof

Also Published As

Publication number Publication date
EP0618737B1 (de) 2000-05-17
EP0618737A3 (de) 1996-07-03
DE69424464D1 (de) 2000-06-21
EP0618737A2 (de) 1994-10-05
JPH06295293A (ja) 1994-10-21
US5376962A (en) 1994-12-27

Similar Documents

Publication Publication Date Title
DE69424464T2 (de) Videobildverarbeitungssystem mit neuronalem Netzwerk
DE69517401T2 (de) Nichtlineare Farbkorrekturvorrichtung und geeignetes Verfahren
DE69633262T2 (de) Farbumwandlungsverfahren und Vorrichtung zum Herstellen von Farbumwandlungstabellen
DE69622004T2 (de) Digitaler Bildprozessor mit neuronalem Netzwerk
DE69419699T2 (de) Bildwiedergabe unter Verwendung von Farbfehlerdiffusion
DE69433031T2 (de) Bildprozessor
DE69914412T2 (de) Verfahren zum Bewahren von Bilddetails bei Abstimmung des Kontrastes eines digitalen Bildes
DE69031842T2 (de) Lernsystem und Lernverfahren für eine Datenverarbeitungsvorrichtung
DE68914206T2 (de) Verfahren und System zur Verbesserung eines digitalisierten Bildes.
DE69620104T2 (de) Farbkorrekturverfahren
DE69524542T2 (de) Farbkorrekturverfahren und -vorrichtung
DE2844158C3 (de) Verfahren zur Reproduktion von Originalvorlagen welche bezüglich ihres Farbgehaltes nach einem Dreibereichsverfahren abgetastet werden
DE69111865T2 (de) Verfahren und Vorrichtung zur Wiederherstellung von Bildern, Erkennung und Kompensation von Fehlsensoren.
DE4220954A1 (de) Verfahren zur umwandlung von scannersignalen in kolorimetrische signale
Rahman et al. Retinex processing for automatic image enhancement
DE69022584T2 (de) Methode zum ableiten von rauschreduzierschätzungen von farbsignalparametern von mehreren farb/helligkeit-bildsensorausgängen.
Rahman Properties of a center/surround Retinex: Part 1: Signal processing design
US6912307B2 (en) Method for automatic color and intensity contrast adjustment of still and video images
US20010041004A1 (en) Method for automated high speed improvement of digital color images
DE102006038646A1 (de) Bildverarbeitungsvorrichtung für Farb-Bilddaten und Verfahren zur Bildverarbeitung von Farb-Bilddaten
DE69917200T2 (de) Verfahren zur Erhaltung von Raumdetails und Farbinhalten bei Abstimmung der Tonwertskala eines digitalen Farbbildes
DE69125869T2 (de) Gradationskorrekturvorrichtung
DE3878282T2 (de) Fotomechanischer apparat unter verwendung von fotoelektrischer abtastung.
US5376963A (en) Neural network video image processor
CN111161203A (zh) 一种基于忆阻脉冲耦合神经网络的多聚焦图像融合方法

Legal Events

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