DE102014015353B4 - Dynamikkompression - Google Patents

Dynamikkompression Download PDF

Info

Publication number
DE102014015353B4
DE102014015353B4 DE102014015353.3A DE102014015353A DE102014015353B4 DE 102014015353 B4 DE102014015353 B4 DE 102014015353B4 DE 102014015353 A DE102014015353 A DE 102014015353A DE 102014015353 B4 DE102014015353 B4 DE 102014015353B4
Authority
DE
Germany
Prior art keywords
pixel values
tone
values
block
pixel
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.)
Active
Application number
DE102014015353.3A
Other languages
English (en)
Other versions
DE102014015353A1 (de
Inventor
Victor Valdes Lopez
Michael c/o Imagination Technolog. Ltd. Bishop
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE102014015353A1 publication Critical patent/DE102014015353A1/de
Application granted granted Critical
Publication of DE102014015353B4 publication Critical patent/DE102014015353B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06T5/94Dynamic range modification of images or parts thereof based on local image properties, e.g. for local contrast enhancement
    • 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
    • G06T5/92Dynamic range modification of images or parts thereof based on global image properties
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • H04N1/407Control or modification of tonal gradation or of extreme levels, e.g. background level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • H04N1/407Control or modification of tonal gradation or of extreme levels, e.g. background level
    • H04N1/4072Control or modification of tonal gradation or of extreme levels, e.g. background level dependent on the contents of the original
    • H04N1/4074Control or modification of tonal gradation or of extreme levels, e.g. background level dependent on the contents of the original using histograms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/56Processing of colour picture signals
    • H04N1/60Colour correction or control
    • H04N1/6002Corrections within particular colour systems
    • H04N1/6005Corrections within particular colour systems with luminance or chrominance signals, e.g. LC1C2, HSL or YUV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/56Processing of colour picture signals
    • H04N1/60Colour correction or control
    • H04N1/6027Correction or control of colour gradation or colour contrast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/70Circuitry for compensating brightness variation in the scene
    • H04N23/71Circuitry for evaluating the brightness variation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/70Circuitry for compensating brightness variation in the scene
    • H04N23/76Circuitry for compensating brightness variation in the scene by influencing the image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/80Camera processing pipelines; Components thereof
    • H04N23/84Camera processing pipelines; Components thereof for processing colour signals
    • H04N23/86Camera processing pipelines; Components thereof for processing colour signals for controlling the colour saturation of colour signals, e.g. automatic chroma control circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/646Circuits for processing colour signals for image enhancement, e.g. vertical detail restoration, cross-colour elimination, contour correction, chrominance trapping filters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/68Circuits for processing colour signals for controlling the amplitude of colour signals, e.g. automatic chroma control circuits
    • 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/20004Adaptive image processing
    • G06T2207/20012Locally adaptive
    • 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/20021Dividing image into blocks, subimages or windows

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Verfahren zur Anwendung von Dynamikkompression auf einen Block von Pixelwerten, der eine Mehrzahl von Zeilen von Pixelwerten umfasst, wobei das Verfahren in jeder einer Mehrzahl von Iterationen umfasst: Empfangen einer aktuellen Zeile von Pixelwerten des Blocks; Abrufen von gespeicherten Informationen in Bezug auf Pixelwerte wenigstens einer vorangegangenen Zeile des Blocks, die in wenigstens einer vorangegangenen Iteration verarbeitet wurden, nicht aber der Pixelwerte der wenigstens einen vorangegangenen Zeile des Blocks; Verwenden der abgerufenen Informationen, um: (i) aktualisierte Informationen zu bestimmen, die in Abhängigkeit von den Pixelwerten der aktuellen Zeile aktualisiert werden, und (ii) eine oder mehrere Dynamikkompressionsbeziehungen zur Verwendung bei einer Abbildung der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte zu bestimmen; Abbilden der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte unter Verwendung der bestimmten einen oder mehreren Dynamikkompressionsbeziehungen; und Speichern der aktualisierten Informationen ohne die Pixelwerte der aktuellen Zeile zur Verwendung bei einer Verarbeitung von Pixelwerten einer nachfolgenden Zeile von Pixelwerten des Blocks in einer nachfolgenden Iteration.

Description

  • Hintergrund
  • Dynamikkompression (Tone Mapping) ist ein Verfahren, das bei der Bildverarbeitung und bei der Verarbeitung von Computergrafiken eingesetzt wird, um einen Satz von Pixelwerten (z.B. Luminanz- und/oder Chrominanzwerte) auf einen anderen Satz von Pixelwerten abzubilden, um den Eindruck eines größeren Dynamikbereichs zu erzeugen als tatsächlich verfügbar ist. Ein Bereich von Pixelwerten eines Originalbilds wird auf einen anderen Bereich von dynamikkomprimierten Pixelwerten abgebildet, damit das Bild „besser“ aussieht, beispielsweise in dem Sinne, dass der Kontrast erhöht wird, das Bild detailreicher gemacht wird oder der Dynamikbereich erweitert wird usw.
  • Ein Ansatz zur Anwendung von Dynamikkompression ist die Berechnung einer globalen Dynamikkompressionskurve für ein Bild, das die Entsprechung zwischen den Eingangs- und Ausgangspixelintensitätswerten für alle Pixel im Bild definiert. Wenn die Dynamikkompression beispielsweise auf Bilder angewandt werden soll, die von einer Kamera erfasst wurden, kann die globale Dynamikkompressionskurve festgelegt werden, sobald ein bestimmter Kameramodus eingestellt wurde, und wird üblicherweise während der Verarbeitung einer Bilderfolge (z.B. bei der Aufnahme eines Videos) nicht aktualisiert. Das Verfahren zur Extraktion der globalen Dynamikkompressionskurve kann sich in verschiedenen Systemen unterscheiden, aber das grundlegende Ziel der globalen Dynamikkompression ist es, den am häufigsten vorkommenden Pixelwerten des Originalbilds einen größeren Bereich an Ausgangspixelwerten zuzuordnen. In Shimoyama, S., et al.: Local adaptive tone mapping with composite multiple gamma functions. In: Proc. 16th IEEE Int. Conf. On Image Processing, 2009, S. 3153 - 3156 ist ein Verfahren beschrieben, wonach aktive Operationen für Schatten-, Mittel- und Spitzentöne in den lokalen Gebieten von Bilder durchgeführt werden können.
  • 1 zeigt ein beispielhaftes System zur Anwendung von globaler Dynamikkompression auf ein Originalbild 102, das ursprüngliche Luminanzwerte 104 und ursprüngliche Chrominanzwerte 106 umfasst, um so ein dynamikkomprimiertes Bild 108 zu bestimmen, das dynamikkomprimierte Luminanzwerte 110 und korrigierte Chrominanzwerte 112 umfasst. Ein Histogramm 114 der Luminanzwerte wird bestimmt. Das Histogramm zeigt die
  • Verteilung der Luminanzwerte über den Bereich an verfügbaren Luminanzwerten (z.B. von 0 bis 255, wobei die Luminanzwerte jeweils 8 Bits umfassen). Das Histogramm 114 wird verwendet, um eine Dynamikkompressionskurve 116 zu bestimmen, die eine geeignete Dynamikkompression zur Abbildung der Luminanzwerte des Bildes auf dynamikkomprimierte Luminanzwerte beschreibt. Die Dynamikkompressionskurve 116 weist die ursprünglichen Luminanzwerte entlang der x-Achse und die dynamikkomprimierten Luminanzwerte auf der y-Achse auf. Die Dynamikkompressionskurve 116 kann beispielsweise durch Integration des Histogramms 114 bestimmt werden. Ein Abbildungsmodul 118 verwendet dann die Dynamikkompressionskurve 116, um die ursprünglichen Luminanzwerte 104 auf die dynamikkomprimierten Luminanzwerte 110 abzubilden. Ein Chrominanzverarbeitungsmodul 120 verwendet die dynamikkomprimierten Luminanzwerte 110, um die ursprünglichen Chrominanzwerte 106 zu korrigieren und so die korrigierten Chrominanzwerte 112 des dynamikkomprimierten Bildes 108 zu bestimmen.
  • Die Anwendung einer einzelnen globalen Dynamikkompressionskurve für das ganze Bild wie oben beschrieben kann das Aussehen des Bildes allgemein verbessern, aber alle Pixel des Bildes mit demselben Pixelwert müssen auf denselben Ausgangswert abgebildet werden, unabhängig von den Pixelwerten des umliegenden Bereichs. Daher stellt die Verwendung einer globalen Kompressionskurve eine eingeschränkte Lösung in Bezug auf eine lokale Verbesserung von Bildbereichen mit speziellen Eigenschaften bereit.
  • Kurzfassung
  • Diese Kurzfassung ist bereitgestellt, um eine Auswahl von Konzepten in vereinfachter Form einzuführen, die in der ausführlichen Beschreibung weiter unten genauer beschrieben sind. Diese Kurzfassung dient nicht dazu, Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands zu identifizieren oder den Schutzbereich des beanspruchen Gegenstands einzuschränken.
  • Eine Dynamikkompressionseinheit wendet Dynamikkompression auf einen Block von Pixelwerten an. In jeder aus einer Mehrzahl von Iterationen werden ein oder mehrere Zeilen von Pixelwerten basierend auf Informationen verarbeitet, die sich auf Pixelwerte aus wenigstens einer vorangegangenen Zeile des Blocks beziehen, der in wenigstens einer vorangegangenen Iteration verarbeitet wurde. Die Informationen werden verwendet, um eine oder mehrere Dynamikkompressionsbeziehungen zu bestimmen, die verwendet wird/werden, um die Pixelwerte der aktuellen Zeile dynamikkomprimierten Pixelwerten abzubilden. Außerdem werden die Informationen basierend auf den Pixelwerten der aktuellen Zeile aktualisiert und zur Verwendung bei der Verarbeitung von Pixelwerten einer nachfolgenden Zeile von Pixelwerten des Blocks in einer nachfolgenden Iteration gespeichert.
  • Bereitgestellt wird ein Verfahren zur Anwendung von Dynamikkompression auf einen Block von Pixelwerten, der eine Mehrzahl von Zeilen von Pixelwerten umfasst, wobei das Verfahren in jeder einer Mehrzahl von Iterationen umfasst: Empfangen einer aktuellen Zeile von Pixelwerten des Blocks; Abrufen von gespeicherten Informationen in Bezug auf Pixelwerte wenigstens einer vorangegangenen Zeile des Blocks, die in wenigstens einer vorangegangenen Iteration verarbeitet wurden; Verwenden der abgerufenen Informationen, um: (i) aktualisierte Informationen zu bestimmen, die in Abhängigkeit von den Pixelwerten der aktuellen Zeile aktualisiert werden, und (ii) eine oder mehrere Dynamikkompressionsbeziehungen zur Verwendung bei einer Abbildung der Pixelwerte der aktuellen Zeile zu dynamikkomprimierten Pixelwerten zu bestimmen; Abbilden der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte unter Verwendung der bestimmten einen oder mehreren Dynamikkompressionsbeziehungen; und Speichern der aktualisierten Informationen zur Verwendung bei einer Verarbeitung von Pixelwerten einer nachfolgenden Zeile von Pixelwerten des Blocks in einer nachfolgenden Iteration.
  • Außerdem wird ein Verfahren zur Korrektur von Chrominanzeingangswerten von Pixeln bereitgestellt, um korrigierte Chrominanzwerte für die Pixel basierend auf dynamikkomprimierten Luminanzwerten zu bestimmen, die durch Anwendung von Dynamikkompression auf Luminanzeingangswerte der Pixel bestimmt wurden, wobei das Verfahren umfasst: Bestimmen von möglichen korrigierten Chrominanzwerten für die Pixel basierend auf den Chrominanzeingangswerten, den Luminanzeingangswerten und den dynamikkomprimierten Luminanzwerten, sodass für jedes der Pixel eine erste Sättigung, die aus dem Luminanzeingangswert und dem Chrominanzeingangswert bestimmt wurde, eine vorbestimmte Beziehung zu einer zweiten Sättigung aufweist, die aus dem dynamikkomprimierten Luminanzwert und dem möglichen korrigierten Chrominanzwert bestimmt wurde; Bestimmen von Vertrauensgewichtungen, die Vertrauen in die jeweiligen möglichen korrigierten Chrominanzwerte angeben, wobei die Vertrauensgewichtungen in Abhängigkeit von den Luminanzeingangswerten der jeweiligen Pixel bestimmt werden; und Verwenden der bestimmten Vertrauensgewichtungen, um für jedes der Pixel eine gewichtete Kombination des jeweiligen möglichen korrigierten Chrominanzwerts und des jeweiligen Chrominanzeingangswerts durchzuführen, um so die korrigierten Chrominanzwerte für die Pixel zu bestimmen.
  • Außerdem wird eine Dynamikkompressionseinheit bereitgestellt, die ausgelegt ist, Dynamikkompression auf einen Block von Pixelwerten anzuwenden, der eine Mehrzahl von Zeilen von Pixelwerten umfasst, wobei die Dynamikkompressionseinheit ein Verarbeitungsmodul umfasst, das ausgelegt ist, in jeder einer Mehrzahl von Iterationen: eine aktuelle Zeile von Pixelwerten des Blocks zu empfangen; gespeicherte Informationen in Bezug auf Pixelwerte wenigstens einer vorangegangenen Zeile des Blocks abzurufen, die in wenigstens einer vorangegangenen Iteration verarbeitet wurden; die abgerufenen Informationen zu verwenden, um: (i) aktualisierte Informationen zu bestimmen, die in Abhängigkeit von den Pixelwerten der aktuellen Zeile aktualisiert werden, und (ii) eine oder mehrere Dynamikkompressionsbeziehungen zur Verwendung bei einer Abbildung der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte zu bestimmen; die Pixelwerte der aktuellen Zeile unter Verwendung der bestimmten einen oder mehreren Dynamikkompressionsbeziehungen auf dynamikkomprimierte Pixelwerte abzubilden; und zu bewirken, dass die aktualisierten Informationen zur Verwendung bei einer Verarbeitung von Pixelwerten einer nachfolgenden Zeile von Pixelwerten des Blocks in einer nachfolgenden Iteration gespeichert werden.
  • Außerdem wird ein Chrominanzverarbeitungsmodul bereitgestellt, das ausgelegt ist, Chrominanzeingangswerte von Pixeln zu korrigieren, um korrigierte Chrominanzwerte für die Pixel basierend auf dynamikkomprimierten Luminanzwerten zu bestimmen, die durch Anwendung von Dynamikkompression auf Luminanzeingangswerte der Pixel bestimmt wurden, wobei das Chrominanzverarbeitungsmodul ausgelegt ist: mögliche korrigierte Chrominanzwerte für die Pixel basierend auf den Chrominanzeingangswerten, den Luminanzeingangswerten und den dynamikkomprimierten Luminanzwerten zu bestimmen, sodass für jedes der Pixel eine erste Sättigung, die aus dem Luminanzeingangswert und dem Chrominanzeingangswert bestimmt wurde, eine vorbestimmte Beziehung zu einer zweiten Sättigung aufweist, die aus dem dynamikkomprimierten Luminanzwert und dem möglichen korrigierten Chrominanzwert bestimmt wurde; Vertrauensgewichtungen in Abhängigkeit von den Luminanzeingangswerten der jeweiligen Pixel zu bestimmen, wobei die Vertrauensgewichtungen Vertrauen in die jeweiligen möglichen korrigierten Chrominanzwerte angeben; und die bestimmten Vertrauensgewichtungen zu verwenden, um für jedes der Pixel eine gewichtete Kombination des jeweiligen möglichen korrigierten Chrominanzwerts und des jeweiligen Chrominanzeingangswerts durchzuführen, um so die korrigierten Chrominanzwerte für die Pixel zu bestimmen.
  • Außerdem werden ein computerlesbarer Code und ein computerlesbares Speichermedium, auf dem ein computerlesbarer Code kodiert ist, bereitgestellt, die ausgelegt sind, die Schritte eines beliebigen der hier beschriebenen Verfahren auszuführen, wenn der Code auf einem Computer laufen gelassen wird.
  • Die obigen Merkmale können je nach Bedarf kombiniert werden, wie für Fachleute offensichtlich ist, und sie können mit jedem beliebigen der in den Beispielen hier beschriebenen Aspekte kombiniert werden.
  • Figurenliste
  • Nachstehend werden Beispiele im Detail unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, wobei:
    • 1 ein System nach dem Stand der Technik zur Anwendung von globaler Dynamikkompression auf ein Originalbild zeigt;
    • 2 ein System zur Bestimmung von lokalen Dynamikkompressionskurven zeigt;
    • 3 die Anwendung von lokalen Dynamikkompressionskurven zur Bestimmung eines dynamikkomprimierten Pixelwerts zeigt;
    • 4 eine schematische Darstellung eines Bildverarbeitungssystems ist;
    • 5 eine schematische Darstellung einer Dynamikkompressionseinheit ist;
    • 6 ein Flussdiagramm eines Verfahrens zur Anwendung von Dynamikkompression auf einen Block von Pixelwerten ist;
    • 7 Klassen eines Histogramms zeigt, das sich über einen Bereich von Pixelwerten erstreckt;
    • 8a und 8b Zeilen von Pixeln in einer bestimmten Spalte von zwei Beispielen zeigen;
    • 9 die Anwendung von Dynamikkompressionskurven aus verschiedenen Spalten zur Bestimmung eines dynamikkomprimierten Pixelwerts zeigt;
    • 10 eine Gewichtung zeigt, die auf eine Dynamikkompressionskurve angewandt wird, wenn ein dynamikkomprimierter Pixelwert unter Verwendung der Dynamikkompressionskurve bestimmt wird;
    • 11a bis 11c Gewichtungen zeigen, die auf drei Dynamikkompressionskurven angewandt werden, wenn ein dynamikkomprimierter Pixelwert unter Verwendung der drei Dynamikkompressionskurven bestimmt wird;
    • 12 eine parallele Verarbeitung von mehreren Zeilen in jeder Iteration zeigt;
    • 13 ein Flussdiagramm eines Verfahrens zur Anwendung einer Korrektur auf Chrominanzeingangswerte ist;
    • 14a ein Diagramm zeigt, das eine Vertrauensgewichtung eines möglichen korrigierten Chrominanzwerts als Funktion des Luminanzeingangswerts in einem ersten Beispiel zeigt; und
    • 14b ein Diagramm zeigt, das eine Vertrauensgewichtung eines möglichen korrigierten Chrominanzwerts als Funktion des Luminanzeingangswerts in einem zweiten Beispiel zeigt.
  • Die beiliegenden Zeichnungen zeigen verschiedene Beispiele. Der Fachmann wird erkennen, dass die gezeigten Elementbegrenzungen (z.B. Zellen, Gruppen von Zellen oder andere Formen) in den Zeichnungen ein Beispiel für die Begrenzungen darstellen. Es kann vorkommen, dass in manchen Beispielen ein Element als mehrere Elemente ausgelegt ist, oder dass mehrere Elemente als ein Element ausgelegt sind. Gleiche Bezugszahlen werden in den Zeichnungen durchweg zur Bezeichnung von ähnlichen Merkmalen verwendet, sofern angemessen.
  • Ausführliche Beschreibung
  • Im Gegensatz zu dem in 1 gezeigten System, bei dem eine globale Dynamikkompressionskurve zur Abbildung aller Luminanzwerte zu dynamikkomprimierten Luminanzwerten verwendet wird, kann ein Block von Pixelwerten (die ein Bild darstellen) in eine Mehrzahl von Subblöcken unterteilt sein, wobei jeder Subblock analysiert werden kann, um ein entsprechendes Histogramm und eine lokale Dynamikkompressionskurve für den Subblock zu bestimmen. Solch ein System ist in 2 in einem Beispiel dargestellt, bei dem die Bilder Einzelbilder einer Einzelbildabfolge sind (z.B. Einzelbilder einer Videosequenz). Wie in 2 dargestellt, werden die Luminanzwerte 202 des gesamten vorangegangenen Einzelbilds verwendet, um ein Histogramm 204 zu bestimmen, das dann zur Bestimmung einer globalen Dynamikkompressionskurve 206 verwendet wird, auf dem in 1 gezeigten entsprechendem Wege. 2 zeigt jedoch auch die Luminanzwerte des aktuellen Einzelbilds 208, und in 2 ist zu erkennen, dass das aktuelle Einzelbild 208 in eine Mehrzahl von Subblöcken (in 2 durch die strichlierten Linien angezeigt) unterteilt ist. Im in 2 dargestellten Beispiel ist das Bild 208 in eine 5x4-Anordnung von Subblöcken unterteilt. Für jeden Subblock des Bilds 208 wird ein Histogramm, das die Verteilung von Pixelwerten im Subblock darstellt, bestimmt und dann verwendet, um eine lokale Dynamikkompressionskurve für den Subblock zu bestimmen. Der Klarheit halber zeigt 2 das Histogramm und die lokalen Dynamikkompressionskurven (mit 210 für den oberen linken Subblock des Bilds 208 gekennzeichnet) für nur drei der Subblöcke des Bilds 208, aber entsprechende Histogramme und lokale Dynamikkompressionskurven werden für jeden der Subblöcke im Bild 208 bestimmt. Für jeden der Subblöcke wird die lokale Dynamikkompressionskurve mit der globalen Dynamikkompressionskurve 206 kombiniert, um eine entsprechende Dynamikkompressionskurve zu bestimmen, z.B. um die kombinierte Kurve 2121 für den oberen linken Subblock zu bestimmen. Eine Anordnung 214 der kombinierten Kurven für die Subblöcke wird bestimmt.
  • 3 zeigt, wie die Dynamikkompressionskurven 212 für die Subblöcke im Block 214 für die Bestimmung eines dynamikkomprimierten Pixelwerts für ein Pixel 302 verwendet werden können. Die vier Subblöcke, die dem Pixel 302 am nächsten sind, weisen entsprechende Dynamikkompressionskurven 2121, 2122, 2123 und 2124 auf. Der dynamikkomprimierte Wert für Pixel 302 kann bestimmt werden, indem entsprechende dynamikkomprimierte Pixelwerte für das Pixel unter Verwendung der verschiedenen Dynamikkompressionskurven 2121, 2122, 2123 und 2124 bestimmt werden und dann eine zweidimensionale Interpolation der vier verschiedenen dynamikkomprimierten Pixelwerte gemäß der Position des Pixels 302 durchgeführt wird.
  • Das in Bezug auf 2 und 3 beschriebene System, bei dem lokale Dynamikkompressionskurven eingesetzt werden, überwindet die oben genannten Probleme in Bezug auf die Verwendung einer globalen Dynamikkompressionskurve (wie in Bezug auf 1 beschrieben), indem die lokalen Dynamikkompressionskurven die Anwendung von verschiedenen Abbildungen in unterschiedlichen Regionen des Bilds ermöglichen, wodurch eine lokale Verbesserung von Bildbereichen mit bestimmten Eigenschaften ermöglicht wird. Das in Bezug auf 2 und 3 beschriebene System ist gut für die Implementierung in Software geeignet, die beliebig auf unterschiedliche Regionen des Bilds zugreifen kann, z.B. um alle Pixelwerte eines bestimmten Subblocks zur Verwendung bei der Bestimmung des Histogramms und der lokalen Dynamikkompressionskurve für einen bestimmten Subblock zu bestimmen.
  • Die Implementierung des in Bezug auf 2 und 3 beschriebenen lokalen Dynamikkompressionssystems kann jedoch problematisch sein, falls kein beliebiger Zugriff zu verschiedenen Teilen des Bilds gegeben ist. Falls beispielsweise die Dynamikkompression in einem Hardware-Block einer Kamerapipeline angewandt wird, die Zeilen von Pixeldaten so verarbeitet, wie sie von einem Bildsensor empfangen werden, dann kann dem Hardware-Block bei der Anwendung der Dynamikkompression kein beliebiger Zugriff auf unterschiedliche Bereiche des Bilds gegeben sein.
  • Nachstehend werden Ausführungsformen lediglich beispielhaft beschrieben, die zur Anwendung von lokaler Dynamikkompression auf Bilder verwendet werden können, auch falls kein beliebiger Zugriff auf verschiedene Bereiche eines Bilds gegeben ist.
  • 4 zeigt ein Bildverarbeitungssystem 400, das einen Bildsensor 402 und eine Kameraverarbeitungspipeline 404 umfasst. Das Bildverarbeitungssystem 400 kann in einer Vorrichtung, wie z.B. einer Kamera, implementiert sein. Der Bildsensor 402 ist ausgelegt, um Bilddaten einzufangen und Pixeldaten in Bezug auf eine Anordnung von Pixeln, die ein Bild darstellen, an die Kameraverarbeitungspipeline 404 bereitzustellen. Der Bildsensor 402 kann eine Abfolge von Bildern einfangen, die dann verwendet werden können, um Einzelbilder einer Videosequenz darzustellen. Die Pixeldaten können in einem von vielen verschiedenen möglichen Formaten vorliegen, z.B. können die Daten für ein Pixel Rot-, Grün- und Blau- (RGB-) Werte zur Darstellung der Intensität der entsprechenden drei Farbkanäle an der Pixelposition umfassen. Alternativ dazu können die Daten für ein Pixel einen Luminanzwert (z.B. mit „Y“ bezeichnet) und einen oder mehrere Chrominanzwerte (z.B. mit „U“ und „V“ bezeichnet oder mit „Cr“ und „Cb“ bezeichnet) umfassen. Die Kameraverabeitungspipeline 404 umfasst eine Reihe von Verarbeitungseinheiten zur Verarbeitung der Pixeldaten, einschließlich einer Dynamikkompressionseinheit 406. Verarbeitete Pixeldaten werden von der Kameraverarbeitungspipeline 404 ausgegeben und können auf jede beliebige geeignete Weise verwendet werden, z.B. als Ausgabe an eine Anzeige, in einem Speicher gespeichert usw. Die Dynamikkompressionseinheit 406 ist ausgelegt, Pixeldaten zu verarbeiten, die in einem Format vorliegen, das Luminanz- und Chrominanzwerte umfasst, sodass, falls die Pixeldaten, die an der Kameraverarbeitungspipeline 404 empfangen werden, nicht in einem Format vorliegen, das Luminanz- und Chrominanzwerte umfasst, die Kameraverarbeitungspipeline 404 eine Abbildungseinheit umfasst, um das Format der Pixeldaten in Luminanz- und Chrominanzwerte umzuwandeln, bevor die Pixeldaten von der Dynamikkompressionseinheit 406 verarbeitet werden.
  • Pixelwerte bezüglich Linien von Pixeln werden in der Kameraverarbeitungspipeline 404 so verarbeitet wie sie vom Bildsensor 402 empfangen werden, z.B. in Zeilenabtastungsreihenfolge, Zeile für Zeile. Wie nachstehend genauer beschrieben ist, kann die Kameraverarbeitungspipeline 404 mehrere Zeilen von Pixeldaten gleichzeitig parallel verarbeiten.
  • 5 zeigt eine schematische Darstellung der Dynamikkompressionseinheit 406, die ausgelegt ist, Zeilen von Pixeldaten zu empfangen. Wie oben beschrieben, umfassen die Pixeldaten, die an der Dynamikkompressionseinheit 406 empfangen werden, Luminanzeingangswerte und Chrominanzeingangswerte für die Pixel. Die Dynamikkompressionseinheit 406 umfasst ein Luminanzverarbeitungsmodul 502, das ausgelegt ist, dynamikkomprimierte Luminanzwerte zu bestimmen. Die Dynamikkompressionseinheit 406 umfasst außerdem ein Chrominanzverarbeitungsmodul 504, das ausgelegt ist, um korrigierte Chrominanzwerte basierend auf der Dynamikkompression zu bestimmen, die auf die Luminanzwerte angewandt wurde. Das Luminanzverarbeitungsmodul 502 umfasst ein globales Abbildungsbestimmungsmodul 506 und ein Verarbeitungsmodul 508. Das Verarbeitungsmodul 508 umfasst ein globales Abbildungsmodul 510, ein lokales Abbildungsmodul 512, einen Speicher 514, einen ersten Multiplikator 516, einen zweiten Multiplikator 518 und einen Addierer 520.
  • Das Chrominanzverarbeitungsmodul 504, das globale Abbildungsbestimmungsmodul 506 und das Verarbeitungsmodul 508 (insbesondere das globale Abbildungsmodul 510) sind ausgelegt, die Zeilen von Pixeleingangswerten zu empfangen. Es kann vorkommen, dass nur die Luminanzwerte der empfangenen Zeilen von Pixeldaten an die Module des Luminanzverarbeitungsmoduls 502 bereitgestellt werden, aber die Luminanzwerte und die Chrominanzwerte der empfangenen Zeilen von Pixeldaten werden an das Chrominanzverarbeitungsmodul 504 bereitgestellt. Ein Ausgang des globalen Abbildungsbestimmungsmoduls 506 ist mit einem Eingang des globalen Abbildungsmoduls 510 gekoppelt. Ein Ausgang des globalen Abbildungsmoduls 510 ist mit entsprechenden Eingängen des lokalen Abbildungsmoduls 512 und des Multiplikators 518 gekoppelt. Das lokale Abbildungsmodul 512 ist mit dem Speicher 514 gekoppelt. Ein Ausgang des lokalen Abbildungsmoduls 512 ist mit einem Eingang des Multiplikators 516 gekoppelt. Ein Ausgang des Multiplikators 518 ist mit einem ersten Eingang des Addierers 520 gekoppelt. Ein Ausgang des Multiplikators 516 ist mit einem zweiten Eingang des Addierers 520 gekoppelt. Ein Ausgang des Addierers 520 ist mit einem Eingang des Chrominanzverarbeitungsmoduls 504 gekoppelt und als Ausgang der Dynamikkompressionseinheit 406 bereitgestellt, um dynamikkomprimierte Luminanzwerte bereitzustellen. Ein Ausgang des Chrominanzverarbeitungsmoduls 504 ist als Ausgang der Dynamikkompressionseinheit 406 bereitgestellt, um korrigierte Chrominanzwerte bereitzustellen. Es gilt anzumerken, dass der Speicher 514 in 5 als im Verarbeitungsmodul 508 positioniert dargestellt ist, aber in anderen Beispielen kann der Speicher 514 außerhalb des Verarbeitungsmoduls 508 und/oder außerhalb des Luminanzverarbeitungsmoduls 502 und/oder außerhalb der Dynamikkompressionseinheit 406 implementiert sein. In Beispielen, die hier im Detail beschrieben sind, sind die Module innerhalb des Verarbeitungsmoduls 508 und des Chrominanzverarbeitungsmoduls 504 in Hardware implementiert, während das globale Abbildungsbestimmungsmodul 506 in Software implementiert ist. Allgemeiner können die Module der Dynamikkompressionseinheit 406 jedoch in Hardware, Software oder einer Kombination davon implementiert sein.
  • Da die Pixeldaten an der Dynamikkompressionseinheit 406 in Zeilenabtastreihenfolge (d.h. in Zeilen von Pixelwerten) empfangen werden, kann es unmöglich sein, die lokale Dynamikkompression wie oben in Bezug auf 2 und 3 beschrieben anzuwenden. In einem einfachen Beispiel verarbeitet die Dynamikkompressionseinheit 406 eine Zeile von Pixelwerten nach der anderen und wiederholt das Verfahren dann, um andere Zeilen von Pixelwerten zu verarbeiten (obwohl in komplexeren Beispielen mehrere Zeilen von Pixelwerten parallel in jeder Iteration verarbeitet werden können, wie weiter unten genauer beschrieben ist). Um die von der Dynamikkompressionseinheit 406 genutzte Datenspeichermenge zu reduzieren, werden Pixelwerte von vorher verarbeiteten Zeilen nicht in der Dynamikkompressionseinheit 406 gespeichert. Außerdem sind, wenn die Dynamikkompressionseinheit 406 eine aktuelle Zeile von Pixelwerten verarbeitet, die Pixelwerte für nachfolgende Zeilen (d.h. noch nicht verarbeitete Zeilen) des Bilds an der Dynamikkompressionseinheit 406 nicht bekannt.
  • Daher nutzt, anstatt lokale Dynamikkompressionskurven für Subblöcke wie in Bezug auf 2 und 3 beschrieben zu bestimmen, die Dynamikkompressionseinheit 406 die Idee von „rollenden Informationen“, wobei es sich um ein rollendes Histogramm oder eine rollende Dynamikkompressionskurve handeln kann, um den lokalen Dynamikkompressionskurvenmechanismus zu approximieren, indem nur eine geringe Menge an Informationen (d.h. wesentlich weniger Informationen als bei der Speicherung der Pixelwerte selbst) in Bezug auf die Pixelwerte von vorher verarbeiteten Zeilen gespeichert wird. In einem Beispiel wird der Block von Pixelwerten, die das Bild darstellen, in eine vordefinierte Anzahl von Spalten unterteilt, und ein Histogramm pro Spalte wird berechnet, während jede einzelne Reihe von Pixelwerten verarbeitet wird. In diesem Beispiel werden für jede neue Zeile (d.h. Reihe) die Histogramme für die Pixelspalten jeweils als gewichtete Kombination aus den vorangegangenen Histogrammwerten und den Histogrammwerten, die der neuen Zeile entsprechen, aktualisiert. Dynamikkompressionskurven können von den resultierenden Histogrammen für jede neue Zeile abgeleitet werden. Auf diese Weise kann die Dynamikkompressionseinheit 406 jede Zeile von Pixelwerten, wenn sie empfangen wird, basierend auf Informationen in Bezug auf Pixelwerte von vorangegangenen Zeilen verarbeiten. Die aktualisierten Informationen werden zur Verwendung bei der Verarbeitung von nachfolgenden Zeilen gespeichert.
  • Die Luminanzwerte der Pixeleingangsdaten werden im Luminanzverarbeitungsmodul 502 verarbeitet, um dynamikkomprimierte Luminanzwerte zu bestimmen (z.B. unabhängig von den Chrominanzeingangswerten). Der Betrieb des Luminanzverarbeitungsmoduls 502 wird in Bezug auf das in 6 gezeigte Flussdiagramm beschrieben. Wie zuvor erläutert, werden die in 6 gezeigten Verfahrensschritte auf jede empfangene Zeile von Pixelwerten angewandt.
  • In einem hier im Detail beschriebenen Beispiel beziehen sich die Pixeleingangsdaten, die an der Dynamikkompressionseinheit 406 empfangen werden, auf eine Abfolge von Einzelbildern (z.B. einer Videosequenz). Das globale Abbildungsbestimmungsmodul 506 verwendet die Pixelwerte eines Einzelbilds, um auf der oben in Bezug auf 1 entsprechenden Weise eine globale Kompressionskurve zu bestimmen. Die globale Kompressionskurve wird bestimmt, nachdem alle Pixelwerte des Einzelbildes an der Dynamikkompressionseinheit 406 empfangen wurden. Wenn also die Pixelwerte eines aktuellen Einzelbildes an der Dynamikkompressionseinheit 406 empfangen werden, kann das globale Abbildungsbestimmungsmodul 506 eine globale Kompressionskurve basierend auf den Pixelwerten eines vorangegangenen Einzelbildes (z.B. des direkt vorangegangenen Einzelbildes der Abfolge von Einzelbildern) bestimmen. Es wird davon ausgegangen, dass die Verteilung von Pixelwerten für das aktuelle Einzelbild der Verteilung von Pixelwerten des vorangegangenen Einzelbilds (z.B. des direkt vorangegangenen Einzelbilds) ausreichend ähnlich ist, sodass die globale Kompressionskurve, die basierend auf den Pixelwerten des vorangegangenen Einzelbilds bestimmt wird, zur Verwendung bei der Verarbeitung der Pixelwerte des aktuellen Einzelbildes geeignet ist. Die globale Kompressionskurve, die vom globalen Abbildungsbestimmungsmodul 506 bestimmt wird, wird dem globalen Abbildungsmodul 510 bereitgestellt. In anderen Beispielen kann die globale Kompressionskurve für einen bestimmten Sensor oder für einen bestimmten Kamera-Szenenmodus vorabgestimmt sein, in welchem Fall das globale Abbildungsbestimmungsmodul 506 keine Pixeldaten empfangen würde und keine globale Kompressionskurve basierend auf Pixeldaten von einem vorangegangenen Einzelbild bestimmen würde. Auf diese Weise kann die globale Kompressionskurve fix auf vordefinierte Werte eingestellt sein. In anderen Beispielen kann auch gar keine globale Kompressionskurve verwendet werden, aber normalerweise führt die Verwendung einer globalen Kompressionskurve zu besseren Ergebnissen bei den endgültigen dynamikkomprimierten Pixelwerten.
  • In Schritt S602 wird eine Zeile von Pixelwerten am Verarbeitungsmodul 508 empfangen. Genauer gesagt wird die Zeile von Pixelwerten am globalen Abbildungsmodul 510 empfangen. Wie zu erkennen ist, wird das in 6 gezeigte Verfahren für eine Mehrzahl von Zeilen eines Blocks von Pixelwerten, die ein Bild darstellen, iteriert. Die Zeile von Pixelwerten, die in einer aktuellen Iteration verarbeitet wird, kann als „aktuelle Zeile“ von Pixelwerten bezeichnet werden. Wie oben beschrieben sind die Pixelwerte, die im Luminanzverarbeitungsmodul 502 verarbeitet werden, Luminanzwerte.
  • In Schritt S604 verwendet das globale Abbildungsmodul 510 die globale Dynamikkompressionskurve, die vom globalen Abbildungsbestimmungsmodul 506 empfangen wird, um global dynamikkomprimierte Pixelwerte für die Pixelwerte der aktuellen Zeile zu bestimmen. Die vom globalen Abbildungsmodul 510 durchgeführte Operation kann durch die Gleichung: GM i ,j = T [ L i ,j ]
    Figure DE102014015353B4_0001
    beschrieben werden, wobei Li,j der Luminanzeingangswert an der Pixelposition i,j im Bild ist, T die globale Kompressionsfunktion ist (d.h. die globale Kompressionskurve, die vom globalen Abbildungsbestimmungsmodul 506 bestimmt wird) und GMi,j der resultierende global dynamikkomprimierte Pixelwert an der Pixelposition i,j ist. Im in 5 gezeigten Beispiel wird der Rest der Verarbeitung im Verarbeitungsmodul 508 unter Verwendung der global komprimierten Pixelausgangswerte vom globalen Abbildungsmodul 510 durchgeführt.
  • In anderen Beispielen kann die globale Dynamikkompression an den empfangenen Pixelwerten getrennt von der lokalen Dynamikkompression durchgeführt werden, sodass der Rest der Verarbeitung im Verarbeitungsmodul 508 unter Verwendung der empfangenen Pixelwerte durchgeführt wird (ohne dass eine globale Kompression an ihnen durchgeführt wurde). In diesen anderen Beispielen wird die globale Dynamikkompression parallel zur lokalen Dynamikkompression laufen gelassen (anstelle von vor der lokalen Dynamikkompression), und die Ergebnisse der getrennten globalen und lokalen Dynamikkompression werden anschließend kombiniert. D.h. die globale und lokale Dynamikkompression verwenden die empfangenen Pixelwerte als ihre Eingänge anstelle des lokalen Dynamikkompressionmoduls 512, das die Ergebnisse der globalen Dynamikkompression vom globalen Dynamikkompressionmodul 510 empfängt. In weiteren Beispielen kann die globale Dynamikkompression gar nicht an den empfangenen Pixelwerte durchgeführt werden, in welchem Fall die lokale Dynamikkompression direkt auf die empfangenen Pixelwerte angewandt wird, und die Ergebnisse der lokalen Dynamikkompression werden mit den empfangenen Pixelwerten kombiniert, um die endgültigen dynamikkomprimierten Pixelwerte zu erhalten. Versuche haben jedoch gezeigt, dass bessere Ergebnisse erzielt werden können, wenn die lokale und die globale Dynamikkompression kombiniert werden.
  • In den hier im Detail beschriebenen Beispielen umfasst der Bildblock eine Mehrzahl von Spalten von Pixelwerten, z.B. 16 Spalten von Pixelwerten, und für jede Spalte wird, wie nachstehend beschrieben, ein Element rollender Informationen bestimmt (z.B. ein rollendes Histogramm oder eine rollende Dynamikkompressionskurve). In anderen Beispielen kann der Bildblock jedoch nicht in mehrere Spalten unterteilt sein, und die rollenden Informationen können sich dann auf Pixelwerte beziehen, welche die gesamte Breite des Bildblocks abdecken.
  • Die global dynamikkomprimierten Pixelwerte werden an das lokale Abbildungsmodul 512 weitergeleitet. In Schritt S606 bestimmt das lokale Abbildungsmodul 512 für jede Spalte ein Histogramm, das die Verteilung von Pixelwerten in der aktuellen Zeile darstellt. Der Bereich von möglichen Pixelwerten (z.B. 0 bis 255, wenn acht Bit für die Pixelwerte verwendet werden) wird in M Klassen unterteilt, und die Pixelwerte der aktuellen Zeile werden der passenden Klasse des passenden Histogramms zugeordnet, um somit die Werte der Histogramme zu bestimmen.
  • Die Anzahl an Klassen, M, in jedem der Histogramme, kann sich in verschiedenen Beispielen unterscheiden und kann beispielsweise eine Potenz von 2 sein, um Berechnungen zu vereinfachen, die die Histogramme verwenden. 7 zeigt ein Beispiel, bei dem jede Klasse acht der möglichen Pixelwerte umfasst, und drei Klassen (Klasse N-1, Klasse N und Klasse N+1) sind in 7 dargestellt. Ein Pixelwert der aktuellen Zeile ist so gezeigt, dass er innerhalb von Klasse N liegt. Es gilt anzumerken, dass plötzliche Änderungen in Kompressionskurven aufgrund von großen Unterschieden zwischen benachbarten Klassen eines Histogramms zu unerwünschten Auswirkungen in den dynamikkomprimierten Pixelwerten führen können. Daher kann es, um solche unerwünschten Auswirkungen zu vermeiden, nützlich sein, die Histogramme zu glätten, bevor sie zur Bestimmung von Dynamikkompressionskurven verwendet werden (wie nachstehend beschrieben). Eine Art, die Histogramme zu glätten, ist die Bestimmung der Histogramme so, dass jeder Pixelwert der aktuellen Zeile zu einer Mehrzahl der Klassen eines Histogramms beiträgt. So bestimmt das lokale Abbildungsmodul 512 für jeden Pixelwert, welche der M Klassen des Histogramms dem Pixelwert entspricht und berechnet dann einen Beitrag zur ausgewählten Klasse und zu den beiden benachbarten Klassen des Histogramms. Der in 7 gezeigte Pixelwert stellt beispielsweise einen Beitrag zu Klasse N-1, Klasse N und Klasse N+1 im passenden Histogramm für die Spalte, in welcher der Pixelwert vorhanden ist, bereit. Der Pixelwert trägt zu den drei unterschiedlichen Klassen auf gewichtete Weise gemäß der Position des Pixelwerts im Bereich von möglichen Pixelwerten bei. Beispielsweise können 50 % des Pixelbeitrags der Klasse N zugeordnet werden, wo der Pixelwert liegt, während die restlichen 50 % zwischen den beiden benachbarten Klassen (Klasse N-1 und Klasse N+1) gemäß den Abständen (in 7 als d1 und d2 bezeichnet) des Pixelwerts von den beiden benachbarten Klassen aufgeteilt werden. Der Beitrag zu Klasse N-1 kann beispielsweise durch ( 1 d 1 d 1 + d 2 ) 50 %
    Figure DE102014015353B4_0002
    angegeben sein, was im in 7 gezeigten Beispiel 5 14
    Figure DE102014015353B4_0003
    ergibt; und der Beitrag zu Klasse N+1 kann durch ( 1 d 1 d 1 + d 2 ) 50 %
    Figure DE102014015353B4_0004
    angegeben sein, was im in 7 gezeigten Beispiel 2 14
    Figure DE102014015353B4_0005
    ergibt. Wie oben beschrieben ist der Beitrag des Pixelwerts zu Klasse N 1 2 .
    Figure DE102014015353B4_0006
    2
  • Wenn alle Beiträge zu den Histogrammen der Pixelwerte aus der aktuellen Zeile berücksichtigt wurden, können die Histogramme normalisiert werden, um nachfolgende Operationen zu vereinfachen, welche die Histogramme verwenden. Jedes Histogramm wird so normalisiert, dass die Summe der Werte im Histogramm eins ergibt. Die Normalisierung der Histogramme kann während der Histogrammberechnung erfolgen, indem der Beitrag jedes Pixels zu den Histogrammklassen gemäß der gesamten Anzahl an gezählten Pixeln angepasst wird, oder danach, indem jede Histogrammklasse durch die Summe aller Werte im Histogramm dividiert wird.
  • In Schritt S608 flacht das lokale Abbildungsmodul 512 eines oder mehrere der Histogramme ab. Die Histogramme werden abgeflacht, um überschüssige Korrektur für Bildbereiche zu vermeiden, die konstante (oder fast konstante) Pixelwerte aufweisen, die z.B. große Bereiche mit ähnlich gefärbten Pixeln im Bild darstellen. Bildbereiche, die konstante (oder fast konstante) Pixelwerte aufweisen, werden eine hohe Konzentration von Pixelwerten in nur einigen wenigen Klassen des Histogramms aufweisen. Ein Abflachungsfaktor wF kann auf die Histogrammwerte angewandt werden, um die Histogramme abzuflachen. Der Abflachungsfaktor wF für ein Histogramm kann in Bezug auf eine bestimmte Säule bestimmt werden, sodass er von dem Ausmaß abhängt, in dem die Pixelwerte der aktuellen Zeile innerhalb der jeweiligen Spalte variieren. Der Abflachungsfaktor wF könnte beispielsweise als Summe von Werten in einem Histogramm, die über einer bestimmten Schwelle, ThF, liegen, gemäß der Gleichung: w F = i = 1 M max ( 0, tH ( i ) Th f ) ( 1 Th f )
    Figure DE102014015353B4_0007
    berechnet werden, wobei M die Anzahl an Klassen im Histogramm ist und tH(i) der Wert des Histogramms in der i. Klasse ist. Die Schwelle ThF kann in unterschiedlichen Beispielen auf verschiedene Werte eingestellt sein und kann in unterschiedlichen Beispielen fix oder variabel sein. Wenn die Histogramme normalisiert werden, könnte die Schwelle beispielsweise auf 0,25 eingestellt werden. Das Ergebnis ist ein Wert für wF im Bereich von 0 ≤ wF ≤ 1, wobei ein höherer Wert von wF anzeigt, dass ein größeres Ausmaß an Abflachung angewandt wird. Bei gleichmäßig über den Bereich von möglichen Pixelwerten verstreuten Pixelwerten ist es wahrscheinlich, dass keine der Klassen des Histogramms einen Wert über der Schwelle ThF aufweist, in welchem Fall der Abflachungsfaktor wF mit null bestimmt wird. In diesem Fall wird eine Standardabflachung auf das Histogramm angewandt, wie nachtstehend beschrieben ist. Falls die Pixelwerte jedoch in einigen wenigen der Histogrammklassen konzentriert sind, dann ist es wahrscheinlicher, dass die Klassenwerte über der Schwelle ThF liegen, in welchem Fall der Abflachungsfaktor wF als nicht null bestimmt wird, was dazu führt, dass eine gewisse Abflachung auf das Histogramm angewandt wird. Mit anderen Worten, je konzentrierter die Pixelwerte in Histogrammklassen sind, desto größer wird der Abflachungsfaktor wF bestimmt.
  • Der Abflachungsfaktor wF für jede der Spalten wird verwendet, um die Abflachung auf die M Klassen des jeweiligen Histogramms für die Säule anzuwenden, wobei der Wert in der i. Klasse des Histogramms für Spalte c als tHc(i) bezeichnet wird, um somit ein abgeflachtes Histogramm Hc für die aktuelle Zeile und für die Spalte zu bestimmen. Die i. Klasse des abgeflachten Histogramms Hc(i) kann gemäß der Gleichung: H c ( i ) = ( 1 M tH c ( i ) ) max ( w F , dw f ) + tH c ( i )
    Figure DE102014015353B4_0008
    bestimmt werden, wobei dwF für die Standardabflachung des Histogramms steht. Wenn der Abflachungsfaktor wF, der wie oben beschrieben bestimmt wird, sehr klein ist, dann kann es erwünscht sein, mehr Abflachung auf das Histogramm anzuwenden als durch die simple Anwendung des Abflachungsfaktors wF angewandt würde. Daher wird in diesen Fällen eher der Standardabflachungsfaktor dwF verwendet als der Abflachungsfaktor wF. Das hilft, das Ausmaß an lokaler Kontrastverstärkung, die angewandt wird, zu beschränken, was sonst abträgliche Auswirkungen auf das Endbild haben könnte. Der Standardabflachungsfaktor dwF kann in unterschiedlichen Beispielen auf verschiedene Werte eingestellt sein und ist typischerweise niedrig (z.B. im Bereich 0 ≤ dwF ≤ 0,1), sodass er nur angewandt wird, wenn der Abflachungsfaktor wF sehr niedrig wird, d.h. niedriger als der Standardabflachungsfaktor dwF, weil dies der Punkt ist, an dem sich die lokale Kontrastverstärkung abträglich auf das Endbild auswirken kann.
  • An diesem Punkt hat jede Spalte im Bild ein zugeordnetes Histogramm (das geglättet und abgeflacht sein kann), das für die Berechnung und Aktualisierung der Dynamikkompressionskurven jeder Spalte berechnet ist.
  • In Schritt S610 bestimmt das lokale Abbildungsmodul 512 eine Dynamikkompressionskurve für jede der Spalten unter Verwendung des jeweiligen Histogramms für die Spalte, z.B. durch Integrieren des jeweiligen Histogramms für die Spalte. Wenn die Dynamikkompressionskurven durch Integrieren der jeweiligen Histogramme bestimmt werden, dann sind die Dynamikkompressionskurven monoton steigende Kurven. Das Integrieren der Histogramme ist nur ein Beispiel dafür, wie die Dynamikkompressionskurven unter Verwendung der Histogramme bestimmt werden können. Die Dynamikkompressionskurven können als Übertragungsfunktionen betrachtet werden, da sie eine Beziehung zwischen den Pixeleingangswerten und den dynamikkomprimierten Pixelwerten definieren. Die Dynamikkompressionskurve für eine Spalte c, die von den Pixelwerten der aktuellen Zeile abgeleitet ist, ist als tTc bezeichnet und weist M Werte auf, die einer Integration der M Klassen des jeweiligen Histogramms entsprechen. D.h. der erste Wert der Dynamikkompressionskurve, tTc(1) = 0. Für nachfolgende Werte der Dynamikkompressionskurve gilt: tT c ( n ) = tT c ( n 1 ) + H c ( n 1 )
    Figure DE102014015353B4_0009
    für 2 ≤ n ≤ M, wobei M die Anzahl an Klassen im Histogramm ist. Die hier beschriebene Integration ist ein sehr einfaches Verfahren zur Bestimmung der Dynamikkompressionskurve tTc für die Spalte c unter Verwendung des Histogramms Hc für die Spalte, was vorteilhaft ist, wenn die Dynamikkompressionseinheit 406 innerhalb einer Kameraverarbeitungspipeline 404 implementiert ist, wie oben beschrieben ist, weil die Dynamikkompressionseinheit 406 die Pixelwerte in Echtzeit verarbeitet, wenn sie empfangen werden, um Verzögerungen in der Kameraverarbeitungspipeline 404 zu vermeiden. In anderen Beispielen (z.B. wenn die Dynamikkompressionseinheit nicht in einem System implementiert ist, in dem Pixelwerte in Echtzeit als Teil einer Kameraverarbeitungspipeline verarbeitet werden müssen), können, je nach Bedarf, komplexere Verfahren zur Bestimmung der Dynamikkompressionskurve tTc für die Spalte c unter Verwendung des Histogramms Hc für die Spalte verwendet werden.
  • Die Werte der Dynamikkompressionskurve tTc, die gemäß der obigen Gleichung 4 bestimmt wurde, liegen im Bereich von 0 bis 1, weil die Histogramme Hc normalisiert wurden. Die Dynamikkompressionskurve kann dann skaliert werden, um eine skalierte Dynamikkompressionskurve tT'c, die mit dem Bereich von möglichen Luminanzausgangswerten übereinstimmt, gemäß der Gleichung: tT' c = tT c ( OMaxL OMinL )
    Figure DE102014015353B4_0010
    zu bestimmen, wobei OMinL und OMaxL dem minimalen bzw. maximalen Luminanzausgangswert entsprechen. Beispielsweise kann OMinL gleich 0 sein, und OMaxL kann gleich 255 sein. Im Schritt des Abbildens der Pixelwerte auf dynamikkomprimierte Pixelwerte (nachstehend bei Schritt S616 beschrieben) wird das Ergebnis verschoben, indem OMinL addiert wird, sodass der Bereich der dynamikkomprimierten Pixelwerte zwischen OMinL und OMaxL liegt.
  • Die Dynamikkompressionskurve tT'c ist die Kurve, die basierend auf den Pixelwerten der aktuellen Zeile für Spalte c bestimmt wird. Für die Abbildung der Pixeleingangswerte auf dynamikkomprimierte Pixelwerte wäre es jedoch nützlich, eine Dynamikkompressionskurve zu haben, die Pixelwerte von vorangegangenen Zeilen berücksichtigt. Daher wird eine rollende Dynamikkompressionskurve für Spalte Tc für jede neue Zeile von Pixelwerten (d.h. bei jeder Iteration des Verfahrens) basierend auf der Dynamikkompressionskurve tT'c, die für die aktuelle Zeile und Spalte bestimmte wurde, und der rollenden Dynamikkompressionskurve, die in der vorangegangenen Iteration bestimmt wurde, aktualisiert. Daher ruft in Schritt S612 das lokale Abbildungsmodul 512 die rollenden Dynamikkompressionskurven für die Spalten ab, die in vorangegangenen Iterationen (d.h. basierend auf vorangegangenen Zeilen) bestimmt wurden. Die rollenden Dynamikkompressionskurven können im Speicher 514 zwischen Iterationen des Verfahrens gespeichert werden, sodass der Schritt des Abrufens der rollenden Dynamikkompressionskurven ihr Abrufen vom Speicher 514 umfassen kann.
  • In Schritt S614 bestimmt das lokale Abbildungsmodul 512 bei der k. Iteration (d.h. für die k. Zeile von Pixelwerten) die rollende Dynamikkompressionskurve Tc(k) durch Durchführung einer gewichteten Kombination der Dynamikkompressionskurve, die für die aktuelle Zeile bestimmt wurde, tT'c, und der rollenden Dynamikkompressionskurve, die in der vorangegangenen Iteration bestimmt wurde, Tc(k- 1), z.B. gemäß der Gleichung: T c ( k ) = T c ( k 1 ) ( 1 w r ) + tT ' c w T
    Figure DE102014015353B4_0011
    wobei wT ein Aktualisierungsgewichtungsfaktor ist, der im Bereich 0 ≤ wT ≤ 1 liegt und der in unterschiedlichen Beispielen verschieden festgelegt sein kann, um den Beitrag der aktuellen Zeile zu den rollenden Dynamikkompressionskurven zu steuern. Das Festlegen von wT kann steuern, wie „reaktiv‟ die rollende Dynamikkompressionskurve auf die aktuelle Zeile von Pixelwerten ist. Der Wert von wT ist üblicherweise für jede der Spalten gleich. Der Aktualisierungsgewichtungsfaktor steuert das Ausmaß, in dem Pixelwerte von vorangegangenen Zeilen sich auf die Dynamikkompression auswirken, die auf die Pixelwerte der aktuellen Zeile angewandt wird. Ein größerer Wert von wT bedeutet, dass die aktuelle Zeile mehr zur rollenden Dynamikkompressionskurve Tc beiträgt, und der Beitrag von vorangegangenen Zeilen nimmt um einen Faktor (1 - wT) für jede vorangegangene Zeile ab. Wie zu erkennen ist, wird die rollende Dynamikkompressionskurve verwendet, sodass Informationen in Bezug auf Pixelwerte von vorangegangenen Zeilen zur Anwendung von lokaler Dynamikkompression auf die aktuelle Zeile verwendet werden können, ohne dass die Pixelwerte der vorangegangenen Zeilen in der Dynamikkompressionseinheit 406 gespeichert werden müssen. Im oben in Bezug auf 2 und 3 beschriebenen Beispiel berücksichtigt die lokale Dynamikkompression einen quadratischen Subblock von Pixelwerten vom Bild. Als Beispiel kann also der Wert von wT so festgelegt sein, dass ein etwa quadratischer Bereich von Pixelwerten berücksichtigt wird, indem die rollende Dynamikkompressionskurve verwendet wird. Somit kann der Wert von wT von der Breite der Spalten abhängen. Ein Blick weiter zurück auf vorangegangene Zeilen von Pixelwerten zeigt, dass der Beitrag der Pixelwerte zur rollenden Dynamikkompressionskurve für die aktuelle Zeile abnimmt. Es kann davon ausgegangen werden, dass, falls der Beitrag einer vorangegangenen Zeile zu einer aktuellen rollenden Dynamikkompressionskurve Tc weniger als 1 % des Beitrags der aktuellen Zeile zur aktuellen rollenden Dynamikkompressionskurve Tc ausmacht, die vorangegangene Zeile nicht wesentlich zur aktuellen rollenden Dynamikkompressionskurve Tc beiträgt. Auf diese Weise kann eine effektive Höhe eines Bereichs, die wesentlich zur aktuellen rollenden Dynamikkompressionskurve Tc beiträgt, als jene Zeilen bestimmt werden, deren Beitrag zur aktuellen rollenden Dynamikkompressionskurve ≥1 % des Beitrags der aktuellen Zeilen zur aktuellen rollenden Dynamikkompressionskurve ist.
  • 8a zeigt eine Spalte von Pixelwerten, wobei es acht Pixel (wovon der erste in 8a als 8021 bezeichnet ist) in einer Zeile der Spalte gibt. D.h. die Breite der Spalte ist 8 Pixel. Im in 8a gezeigten Beispiel ist wT = 0,5. Die aktuelle Zeile ist in 8a als „Zeile k“ bezeichnet. Gemäß Gleichung 6 ist der Beitrag der Pixelwerte der Zeile k zur rollenden Dynamikkompressionskurve für die Zeile k, Tc(k), = 0,5. Für eine Zeile, die eine Anzahl von Zeilen x vor der aktuellen Zeile liegt, d.h. für Zeile k-x, beträgt der Beitrag der Pixelwerte der Zeile k-x zur rollenden Dynamikkompressionskurve für Zeile k, Tc(k), = 0,5x+1. Somit weisen die Zeilen k-1 bis k-6 Beiträge auf, die mehr als 1 % des Beitrags der Zeile k ausmachen, aber Zeile k-7 und alle Zeilen vor Zeile k-7 weisen Beiträge auf, die weniger als 1 % des Beitrags der Zeile k ausmachen. Somit kann davon ausgegangen werden, dass der schraffierte Bereich 804 von Pixelwerten (d.h. 7 Zeilen von Pixelwerten) wesentlich zur rollenden Dynamikkompressionskurve für die Zeile k, Tc(k), beiträgt. Daher kann wT = 0,5 eine gute Wahl für eine 8 Pixel breite Spalte sein, weil der Bereich 804 in etwa quadratisch ist.
  • 8b zeigt die Auswirkung der Reduktion von wT auf 0,3. Gemäß Gleichung 6 ist der Beitrag der Pixelwerte der Zeile k zur rollenden Dynamikkompressionskurve für die Zeile k, Tc(k), = 0,3. Für eine Zeile, die eine Anzahl von Zeilen x vor der aktuellen Zeile liegt, d.h. für die Zeile k-x, ist der Beitrag der Pixelwerte der Line k-x zur rollenden Dynamikkompressionskurve für Zeile k, Tc(k), = 0,3 × 0,7x. Somit weisen die Zeilen k-1 bis k-12 Beiträge auf, die mehr als 1 % des Beitrags der Zeile k betragen, aber Zeile k-13 und alle Zeilen vor Zeile k-13 weisen Beiträge auf, die weniger als 1 % des Beitrags der Zeile k ausmachen. Somit kann davon ausgegangen werden, dass der schraffierte Bereich 806 von Pixelwerten (d.h. 13 Zeilen von Pixelwerten) wesentlich zur rollenden Dynamikkompressionskurve für Zeile k, Tc(k), beiträgt. Somit kann wT = 0,3 als zu klein für eine 8 Pixel breite Spalte erachtet werden, weil der Bereich 806 länger als breit ist. Die Wahl wT = 0,3 kann besser zur Verwendung mit Spalten geeignet sein, die breiter als 8 Pixel sind. Es gilt anzumerken, dass es in manchen anderen Beispielen nicht das Ziel sein kann, die Bereiche 804 oder 806 in etwa quadratisch zu halten. In diesen anderen Beispielen können lange und dünne oder kurze und breite Bereiche verwendet werden, indem der Wert von wT entsprechend festgelegt wird.
  • Nach Schritt S614 sind die rollenden Dynamikkompressionskurven für die Spalten der aktuellen Zeile bestimmt. Dann ordnet in Schritt S616 das lokale Abbildungsmodul 512 die Pixelwerte der aktuellen Zeile unter Verwendung der bestimmten Dynamikkompressionskurven dynamikkomprimierten Pixelwerten zu. Als Beispiel, das in 9 dargestellt ist, werden für jeden Pixelwert der aktuellen Zeile (z.B. für Pixel 906) mehr als eine der rollenden Dynamikkompressionskurven, die in Schritt S614 für die verschiedenen Spalten bestimmt wurden (z.B. die rollenden Dynamikkompressionskurven 9041, 9042 und 9043) und die globale Dynamikkompressionskurve 902, die vom globalen Abbildungsbestimmungsmodul 506 empfangen wurde, zur Bestimmung eines dynamikkomprimierten Pixelwertes verwendet. Die Abbildung der Pixelwerte auf dynamikkomprimierte Pixelwerte wird nachstehend in Bezug auf 10 und 11a bis 11c erläutert.
  • Um einen fließenden Übergang zwischen Spalten zu erreichen, wird für jeden Pixelwert der aktuellen Zeile eine Mehrzahl von möglichen dynamikkomprimierten Pixelwerten unter Verwendung einer entsprechenden Mehrzahl von lokalen Dynamikkompressionsbeziehungen (z.B. 9041, 9042 und 9043) bestimmt. Die verschiedenen möglichen dynamikkomprimierten Pixelwerte für ein bestimmtes Pixel an Position (i,j) kann dann interpoliert werden, um zu einem lokal dynamikkomprimierten Pixelwert zu kommen, der hier als LMi,j bezeichnet wird. Die Interpolation wird so durchgeführt, dass der Abstand der Position des Pixels zu den verschiedenen Spalten sich auf den Einfluss auswirkt, den die möglichen dynamikkomprimierten Pixelwerte, die unter Verwendung der Dynamikkompressionskurven für die verschiedenen Spalten bestimmt werden, auf den lokal dynamikkomprimierten Pixelwert LMi,j haben.
  • 10 zeigt beispielsweise den Einfluss (oder die „Interpolationsgewichtung“), den der mögliche Pixelwert, der unter Verwendung der Dynamikkompressionskurve für Spalte c bestimmt wird, auf LMi,j hat, als Funktion der Position des Pixels. Wie in 10 dargestellt wird für in Spalte C liegende Pixel der mögliche dynamikkomprimierte Pixelwert, der unter Verwendung der Dynamikkompressionskurve für Spalte c bestimmt wird, einen Einfluss von 50 % auf LMi,j haben. Die restlichen 50 % sind jedoch zwischen den beiden benachbarten Spalten aufgeteilt (d.h. Spalte c-1 und Spalte c+1), wie in 10 dargestellt ist.
  • 11a bis 11c zeigen, wie die Interpolationsgewichtungen für eine gegebene Pixelposition in Spalte c berechnet werden, wie in 11a bis 11c durch die gestrichelte Linie angezeigt ist. 11a zeigt das Interpolationsgewicht, das für den möglichen dynamikkomprimierten Pixelwert verwendet wird, der unter Verwendung der Dynamikkompressionskurve für Spalte c-1 bestimmt wurde, was an der angegebenen Pixelposition 37,5 % ist. 11b zeigt das Interpolationsgewicht, das für den möglichen dynamikkomprimierten Pixelwert verwendet wird, der unter Verwendung der Dynamikkompressionskurve für Spalte c bestimmt wurde, was an der angegebenen Pixelposition 50 % ist, weil die Pixelposition innerhalb der Spalte c liegt. 11c zeigt das Interpolationsgewicht, das für den möglichen dynamikkomprimierten Pixelwert verwendet wird, der unter Verwendung der Dynamikkompressionskurve für Spalte c+1 bestimmt wurde, was an der angegebenen Pixelposition 12,5 % ist. Die Interpolationsgewichtungen der verschiedenen Spalten hängen nur von der Pixelposition ab und können für die verschiedenen Pixelpositionen vorberechnet werden. Es gilt anzumerken, dass die Interpolation in diesem Beispiel eine eindimensionale Interpolation ist, während die Interpolation in dem in 3 dargestellten System eine zweidimensionale Interpolation ist. Eine eindimensionale Interpolation ist einfacher zu implementieren als eine zweidimensionale Interpolation und ist daher rascher und braucht weniger Verarbeitungsenergie zur Implementierung.
  • Das Obige zusammengefasst wird der lokal dynamikkomprimierte Pixelwert LMi,j für ein Pixel an Position (i,j) (d.h. in Zeile i und Spalte j) basierend auf dem global dynamikkomprimierten Pixelwert GMi,j (bestimmt vom globalen Abbildungsmodul 510) berechnet und ist eine Interpolation von mehreren möglichen dynamikkomprimierten Pixelwerten, die basierend auf den Dynamikkompressionskurven T der jeweiligen Spalten bestimmt wurden, sodass der lokal dynamikkomprimierte Pixelwert LMi,j durch die Gleichung: L M i , j = T c 1 [ GM i ,j ] w c 1 + T c [ GM i ,j ] w c + T c + 1 [ GM i ,j ] w c + 1
    Figure DE102014015353B4_0012
    gegeben ist, wobei wc-1 das Interpolationsgewicht für Spalte c-1 (z.B. 37,5 % im in 11a gezeigten Beispiel) ist, wc das Interpolationsgewicht für Spalte c (z.B. 50 % im in 11b gezeigten Beispiel) ist und wc+1 das Interpolationsgewicht für Spalte c+1 (z.B. 12,5 % im in 11c gezeigten Beispiel) ist.
  • Die endgültigen dynamikkomprimierten Pixelwerte, die für die aktuelle Zeile bestimmt werden, können durch Ausführung einer gewichteten Kombination der lokal dynamikkomprimierten Pixelwerte LM und der global dynamikkomprimierten Pixelwerte GM bestimmt werden. Beispielsweise kann der endgültige dynamikkomprimierte Pixelwert (als Mi,j bezeichnet) für das Pixel an Position (i, j) als gewichtete Kombination des global dynamikkomprimierten Pixelwerts GMi,j und des lokal dynamikkomprimierten Pixelwerts LMi,j gemäß der Gleichung: M i , j = OMinL + GM i , j ( 1 w LM ) + LM i ,j w LM
    Figure DE102014015353B4_0013
    bestimmt werden, wobei wLM ein Gewichtungsfaktor ist, welcher dem Beitragsausmaß entspricht, das der lokalen Dynamikkompression zugeordnet ist. wLM ist ein konfigurierbarer Parameter. Sowohl der lokale als auch der globale Dynamikkompressionswert LMi,j und GMi,j liegen im Bereich von 0 bis (OMaxL - OMinL), sodass die Addition von OMinL in Gleichung 8 den endgültigen dynamikkomprimierten Pixelwert Mi,j innerhalb des Bereichs von OMinL bis OMaxL positioniert. Im in 5 dargestellten Beispiel wird die gewichtete Kombination des global dynamikkomprimierten Pixelwerts GMi,j und des lokal dynamikkomprimierten Pixelwerts LMi,j gemäß Gleichung 8 durch die Kombination der Multiplikatoren 516 und 518 und des Addierers 520 durchgeführt. D.h. der Multiplikator 516 multipliziert den lokal dynamikkomprimierten Pixelwert LMi,j mit wLM, der Multiplikator 518 multipliziert den global dynamikkomprimierten Pixelwert GMi,j mit (1 - wLM) und dann addiert der Addierer 520 die Ausgaben von den Multiplikatoren 516 und 518 mit OMinL, um so den endgültigen dynamikkomprimierten Pixelwert Mi,j zu bestimmen.
  • In Schritt S618 werden die aktualisierten rollenden Dynamikkompressionskurven Tc(k) für die aktuelle Zeile (Zeile k) im Speicher 514 gespeichert. Die vorher gespeicherten rollenden Dynamikkompressionskurven Tc(k - 1) sind nicht länger erforderlich und können aus dem Speicher 514 entfernt oder überschrieben werden, wenn die aktualisierten rollenden Dynamikkompressionskurven Tc(k) für die aktuelle Zeile (Zeile k) im Speicher 514 gespeichert werden. Die aktualisierten rollenden Dynamikkompressionskurven können in einer nachfolgenden Iteration des Verfahrens aus dem Speicher abgerufen werden, um bei der Verarbeitung der Pixelwerte einer nachfolgenden Zeile verwendet zu werden.
  • Nach Schritt S618 geht das Verfahren zurück zu Schritt S602 und wiederholt sich für die nächste Iteration, d.h. für die nächste Zeile von Pixelwerten. Das Verfahren fährt fort zu iterieren, bis alle Zeilen des Blocks verarbeitet sind.
  • In den oben beschriebenen Beispielen werden Dynamikkompressionskurven verwendet, um die Beziehung zwischen den Pixeleingangswerten und den dynamikkomprimierten Pixelwerten darzustellen. In anderen Beispielen kann diese Beziehung durch etwas anders als eine Kurve, z.B. eine Verweistabelle, dargestellt sein.
  • Darüber hinaus werden in den oben beschriebenen Beispielen die abgerufenen rollenden Dynamikkompressionskurven basierend auf den Pixelwerten der aktuellen Zeile aktualisiert, und dann wird die Dynamikkompression unter Verwendung der aktualisierten rollenden Dynamikkompressionskurven auf die Pixelwerte angewandt. Es wäre jedoch auch möglich, die Dynamikkompression unter Verwendung der abgerufenen rollenden Dynamikkompressionskurven (die auf vorangegangenen Zeilen von Pixelwerten basieren) anzuwenden und dann die rollenden Dynamikkompressionskurven zu aktualisieren. Dies würde keine so genaue Dynamikkompression bereitstellen (obwohl der Unterschied sehr gering ist), weil die Pixelwerte der aktuellen Zeile in der lokalen Dynamikkompression nicht berücksichtigt würden (nur Pixelwerte der vorangegangenen Zeilen würden berücksichtigt werden), aber dies ist trotzdem eine mögliche Option, die zu annehmbaren Ergebnissen führt und kann einfacher zu implementieren sein.
  • In den oben im Detail beschriebenen Beispielen sind die rollenden Dynamikkompressionskurven die Informationen, die bei jeder Iteration gespeichert und wieder abgerufen werden, um ein Verarbeiten der aktuellen Zeile zu ermöglichen, um die Pixelwerte der vorangegangenen Zeilen miteinzubeziehen, ohne dabei die eigentlichen Pixelwerte der vorangegangenen Zeilen in der Dynamikkompressionseinheit 406 speichern zu müssen. In anderen Beispielen können es die Histogramme der Spalten sein, die die Informationen darstellen, die bei jeder Iteration gespeichert und wieder abgerufen werden, um das Verarbeiten der aktuellen Zeile zu ermöglichen, um die Pixelwerte der vorangegangenen Zeilen miteinzubeziehen. In diesem Fall würden die Histogramme bei jeder Iteration wieder abgerufen werden und können basierend auf den Pixelwerten der aktuellen Zeile aktualisiert werden, bevor sie dazu verwendet werden, die Dynamikkompressionskurven wie oben für die Verwendung bei einer Anwendung der Dynamikkompression auf die Pixelwerte der aktuellen Zeile beschrieben, zu bestimmen. Im Hinblick auf die Einfachheit der Ausführung gibt es keinen großen Unterschied zwischen rollenden Dynamikkompressionskurven, wie oben beschrieben, (sodass es die Dynamikkompressionskurven sind, die zwischen Iterationen des Verfahrens gespeichert und wieder abgerufen werden) und einem Verwenden von rollenden Histogrammen (sodass es die Histogramme sind, die zwischen Iterationen des Verfahrens gespeichert und wieder abgerufen werden). In allen beiden dieser Beispiele können rollende Informationen, die Pixelwerte von vorangegangenen Zeilen betreffen, bei einer aktuellen Iteration wieder abgerufen und verwendet werden, um Dynamikkompressionskurven zur Verwendung beim Abbilden der Pixelwerten der aktuellen Zeile auf dynamikkomprimierte Pixelwerte zu bestimmen. Die rollenden Informationen werden basierend auf den Pixelwerten der aktuellen Zeile aktualisiert und so gespeichert, dass sie bei einer anschließenden Iteration verwendet werden können, um eine darauffolgende Zeile von Pixelwerten zu verarbeiten. Auf diese Art kann die Dynamikkompressionseinheit 406 Zeilen von Pixelwerten in Echtzeit, sobald diese empfangen werden, verarbeiten, ohne dass dafür ein Speichern der Pixelwerte zur Verwendung beim Verarbeiten von darauffolgenden Zeilen erforderlich ist.
  • In den oben beschriebenen Beispielen wird bei jeder Iteration eine Zeile von Pixelwerten verarbeitet. Die Kameraverarbeitungspipeline 404 kann jedoch in der Lage sein, mehrere Zeilen von Pixelwerten parallel zu verarbeiten. Folglich kann es für die Dynamikkompressionseinheit 406 nützlich sein, in der Lage zu sein, in jeder Iteration einen Block von Zeilen parallel zu verarbeiten. In anderen Beispielen kann daher in jeder Iteration ein Block von mehr als einer Zeile von der Dynamikkompressionseinheit 406 verarbeitet werden. D.h. in jeder von einer Mehrzahl von Iterationen wird ein Subsatz von zwei oder mehr Zeilen von Pixelwerten des Blocks empfangen und parallel verarbeitet, um so die empfangenen Pixelwerte des Subsatzes von Zeilen in dynamikkomprimierte Pixelwerte umzuwandeln. In diesem Fall wird am Ende einer aktuellen Iteration ein temporäres Histogramm basierend auf den Pixelwerten aller Zeilen im Subsatz von Zeilen (d.h. im Zeilenblock) bestimmt, die in der aktuellen Iteration verarbeitet werden, das dann in der nachfolgenden Iteration verwendet werden kann, um geeignete Dynamikkompressionskurven für den nachfolgenden Zeilenblock zu bestimmen.
  • Wie in 12 dargestellt kann beispielsweise bei jeder Iteration ein Zeilenblock, der vier Zeilen von Pixelwerten umfasst, parallel verarbeitet werden. 12 zeigt den Zeilenblock N-2 1202, der zwei Iterationen vor einer aktuellen Iteration (N) verarbeitet wurde. 12 zeigt außerdem den Zeilenblock N-1 1204, der eine Iteration vor einer aktuellen Iteration (N) verarbeitet wurde, wobei der Zeilenblock N-1 Zeilen n-4, n-3, n-2 und n-1 umfasst. 12 zeigt außerdem den aktuellen Zeilenblock N 1206, der Zeilen n, n+1, n+2 und n+3 umfasst, die in der aktuellen Iteration verarbeitet werden sollen. Am Ende der vorangegangenen Iteration ist eine rollende Dynamikkompressionskurve Tc 1208 bestimmt, welche die Pixelwerte aller Zeilen bis zu den und einschließlich der Zeilen in Zeilenblock N-2 berücksichtigt, und im Speicher 514 gespeichert hat. Außerdem ist am Ende der vorangegangenen Iteration ein temporäres Histogramm 1210 bestimmt, das die Verteilung der Pixelwerte in Zeilenblock N-1 darstellt. Bei der aktuellen Iteration werden die Pixelwerte der Zeilen n, n+1, n+2 und n+3 in einem aktuellen Zeilenblock 1204 parallel verarbeitet, um dynamikkomprimierte Pixelwerte für diese Zeilen zu bestimmen. Das temporäre Histogramm 1210 wird abgerufen, und eine Kompressionskurve 1212 wird basierend auf dem temporären Histogramm 1210 bestimmt, das aus den Pixelwerten im Zeilenblock N-1 bestimmt wurde. Nachdem die Kompressionskurve 1212 bestimmt wurde, wird das temporäre Histogramm zurückgesetzt (d.h. gelöscht), sodass ein temporäres Histogramm 1218 bestimmt werden kann, um die Verteilung der Pixelwerte des aktuellen Zeilenblocks 1206 darzustellen.
  • In Block 1214 wird die rollende Kurve 1208 unter Verwendung der Kompressionskurve tT'c 1212 aktualisiert, die aus den Pixelwerten des Zeilenblocks N-1 bestimmt wurde. Die rollende Kurve 1208 wird auf der oben in Bezug auf Gleichung 6 beschriebenen entsprechende Weise aktualisiert, d.h.: T c ( B l o c k   N 1 ) = T c ( B l o c k   N 2 ) ( 1 w T ) + tT ' c w T
    Figure DE102014015353B4_0014
    wobei wT ein Aktualisierungsgewichtungsfaktor ist, der im Bereich 0 ≤ wT ≤ 1 liegt. In manchen Beispielen wird in der aktuellen Iteration eine einzelne Aktualisierung der rollenden Kurve durchgeführt, und dann wird die aktualisierte rollende Kurve verwendet, um die Dynamikkompression auf die Pixelwerte in jeder der Zeilen im aktuellen Zeilenblock 1206 anzuwenden. Dies ist ein einfacher Weg, um die Aktualisierung der rollenden Dynamikkompressionskurve zu implementieren, aber es kann zu plötzlichen Veränderungen in der rollenden Dynamikkompressionskurve führen, die für die Anwendung der Dynamikkompression auf die Zeilen von Pixeln im Block 1206 verwendet wird. D.h. die Dynamikkompressionskurve, die auf die Pixelwerte der Zeile n-1 angewendet wird, würde die Pixelwerte in den Zeilen n-2, n-3 oder n-4 nicht berücksichtigen, und dann würde plötzlich die auf die Pixelwerte der Zeile n angewandte Dynamikkompressionskurve alle Pixelwerte in den Zeilen n-4 bis n-1 voll berücksichtigen. Eine plötzliche Veränderung in der Dynamikkompressionskurve, die zwischen Zeile n-1 und Zeile n verwendet wird, kann zu nachteiligen Auswirkungen auf die Wahrnehmung des dynamikkomprimierten Bilds führen. Daher kann es besser sein, die Dynamikkompressionskurve allmählich über die Zeilen des aktuellen Zeilenblocks 1206 von Zeile n bis Zeile n+3 zu aktualisieren. Das Ziel ist es, den Einfluss der aus Block N-1 gewonnenen Statistik so zu verteilen, dass eine fließende Veränderung in der rollenden Dynamikkompressionskurve vorhanden ist, die auf jede Zeile im Block N angewandt wird. Da Dynamikkompression auf alle Zeilen des aktuellen Zeilenblocks 1206 parallel angewandt wird, ist die allmähliche Veränderung der rollenden Dynamikkompressionskurve in dem Sinne „allmählich“, dass sie sich über die Zeilen n bis n+3 ändern und nicht im Laufe der Zeit. Dies kann erreicht werden, indem ein anderer Aktualisierungsgewichtungsfaktor wT auf die rollende Dynamikkompressionskurve angewandt wird, um mit den jeweiligen Zeilen des aktuellen Zeilenblocks 1206 verwendet zu werden. Für die letzte Zeile im aktuellen Zeilenblock 1206 wird der Aktualisierungsgewichtungsfaktor wT so eingestellt, dass die rollende Dynamikkompressionskurve Tc bis zum Ende des Zeilenblocks N-1 voll aktualisiert wird. Diese voll aktualisierte rollende Dynamikkompressionskurve Tc wird in 12 mit 1216 bezeichnet und wird zur Verwendung in einer nachfolgenden Iteration gespeichert. Für die Zeilen vor der Zeile n+3 im aktuellen Zeilenblock 1206 wird der Aktualisierungsgewichtungsfaktor wT im Vergleich zu dem für Zeile n+3 verwendeten reduziert, sodass die rollende Dynamikkompressionskurve im aktuellen Zeilenblock 1206 von Zeile n bis Zeile n+3 allmählich in größerem Ausmaß mit der Kompressionskurve 1212 über die Zeilen aktualisiert wird.
  • In einem Beispiel werden in der aktuellen Iteration für jede Zeile des aktuellen Zeilenblocks 1206 die folgenden Schritte durchgeführt:
    • - das temporäre Histogramm wird mit Daten aus der Zeile aktualisiert, sodass das temporäre Histogramm Daten umfasst, welche die Verteilung von Pixelwerten in der Zeile darstellen;
    • - die rollende Dynamikkompressionskurve Tc wird wie oben beschrieben unter Verwendung eines geeigneten Aktualisierungsgewichtungsfaktors wT für die Zeile mit der Dynamikkompressionskurve tT'c aktualisiert; und
    • - die aktualisierte Dynamikkompressionskurve wird wie oben beschrieben auf die Pixelwerte der Zeile angewandt.
  • Es gilt anzumerken, dass die Pixelwerte der Zeilen im aktuellen Zeilenblock 1206 nicht verwendet werden, um die Dynamikkompressionskurve zu aktualisieren, bevor die Dynamikkompressionskurve verwendet wird, um eine Dynamikkompression auf die Pixelwerte des aktuellen Zeilenblocks 1206 anzuwenden. Wie oben beschrieben ergibt dies annehmbare Ergebnisse und in diesem Fall ist es einfacher zu implementieren als eine Aktualisierung der Dynamikkompressionskurven mit den Pixelwerten der Zeile des aktuellen Zeilenblocks 1206, bevor die Dynamikkompressionskurve auf die Pixelwerte des aktuellen Zeilenblocks 1206 angewandt wird.
  • Wie oben beschrieben wird die rollende Dynamikkompressionskurve Tc basierend auf der Dynamikkompressionskurve 1212 aktualisiert, die unter Verwendung der Pixelwerte des vorangegangenen Blocks (Block N-1) bestimmt wurde, d.h. bis zur Zeile n-1. Folglich besteht ein Unterschied darin, wie „neu“ die Kompressionskurveninformationen sind, die zur Anwendung einer Dynamikkompression auf die Pixelwerte der unterschiedlichen Zeilen im aktuellen Zeilenblock 1206 verwendet werden. Zeile n weist beispielsweise Informationen auf, die unter Verwendung von Informationen aus der vorangegangenen Zeile von Pixelwerten (Zeile n-1) aktualisiert werden. Im Gegensatz dazu weist Zeile n+3 Informationen auf, die unter Verwendung von Informationen aus vier Zeilen vorher (Zeile n-1) aktualisiert werden. Dies kann zu Problemen führen. Die oben beschriebene allmähliche Veränderung der rollenden Dynamikkompressionskurven (unter Verwendung von unterschiedlichen Aktualisierungsgewichtungsfaktoren für die unterschiedlichen Zeilen im aktuellen Zeilenblock 1206) trägt zur Reduktion von abträglichen Auswirkungen bei, die sie haben kann, kann aber immer noch zu Problemen führen, und je größer die Anzahl an Zeilen in den Zeilenblöcken, desto größer können diese Probleme sein. Es wurden jedoch Versuche durchgeführt, um sicherzustellen, dass die Auswirkungen der parallelen Verarbeitung mehrerer Zeilen zusammen annehmbar sind. Es wurde bestimmt, dass die Verwendung von Zeilenblöcken, die vier Zeilen von Pixelwerten umfassen, annehmbar sein kann. Es gilt abzuwägen zwischen: (i) dem Vorteil einer Erhöhung der Geschwindigkeit, mit der die Zeilen von Pixelwerten verarbeitet werden (indem sie parallel verarbeitet werden), und (ii) dem Nachteil einer geringen Ungenauigkeit in den Dynamikkompressionskurven, die für die Verarbeitung von manchen der Zeilen verwendet werden. Wenn die Dynamikkompressionseinheit 406 in einer Kameraverarbeitungspipeline 404 implementiert wird, in der Pixeldaten in Echtzeit verarbeitet werden, kann sich die Abwägung in Richtung einer parallelen Verarbeitung von mehreren Zeilen von Pixelwerten bewegen (z.B. von vier Zeilen von Pixelwerten wie in 12 dargestellt). Falls die Dynamikkompressionseinheit 406 jedoch nicht in einer Kameraverarbeitungspipeline implementiert ist, sodass die Pixeldaten nicht in Echtzeit verarbeitet werden müssen, dann kann sich die Abwägung in Richtung einer sequenziellen Verarbeitung der Zeilen bewegen, d.h. eine nach der anderen und nicht parallel.
  • Dynamikkompression wird in der aktuellen Iteration parallel auf die Zeilen des aktuellen Zeilenblocks 1206 angewandt, und am Ende der aktuellen Iteration wird die rollende Dynamikkompressionskurve 1216 bis zum Ende des Zeilenblocks 1204 aktualisiert, und das temporäre Histogramm (in 12 mit 1218 bezeichnet) stellt die Verteilung der Pixelwerte in den Zeilen des aktuellen Zeilenblocks 1206 dar. Diese Informationselemente werden zur Verwendung in der nächsten Iteration gespeichert, um Dynamikkompression auf die Zeilen des nächsten Zeilenblocks anzuwenden (d.h. ein Zeilenblock, der die Zeilen n+4 bis n+7 umfasst).
  • Oben wurde die Verarbeitung des Luminanzverarbeitungsmoduls 502 beschrieben, das dynamikkomprimierte Luminanzwerte aus den Luminanzeingangswerten bestimmt. Veränderungen der Luminanzwerte aufgrund der Dynamikkompression können zu Veränderungen im Aussehen der entsprechenden Chrominanzwerte führen. Daher ist es nützlich, die Chrominanzwerte gemäß der Dynamikkompression, die auf die Luminanzwerte angewandt wurde, zu korrigieren. In Bezug auf das in 13 dargestellte Flussdiagramm wird nun die Verarbeitung des Chrominanzverarbeitungsmoduls 504 beschrieben, das korrigierte Chrominanzwerte basierend auf den Chrominanzeingangswerten gemäß der Dynamikkompression, die vom Luminanzverarbeitungsmodul 502 auf die Luminanzeingangswerte angewandt wurde, bestimmt.
  • Die Chrominanzkorrektur wird vom Chrominanzverarbeitungsmodul 504 durchgeführt, nachdem die dynamikkomprimierten Luminanzwerte vom Luminanzverarbeitungsmodul 502 bestimmt wurden. In Schritt S1302 werden die Luminanzeingangswerte und die Chrominanzeingangswerte am Chrominanzverarbeitungsmodul 504 vom Eingang zur Dynamikkompressionseinheit 406 empfangen. Außerdem werden in Schritt S1302 die dynamikkomprimierten Luminanzwerte am Chrominanzverarbeitungsmodul 504 vom Luminanzverarbeitungsmodul 502 empfangen.
  • In Schritt S1304 werden mögliche korrigierte Chrominanzwerte für die Pixel basierend auf den Chrominanzeingangswerten, den Luminanzeingangswerten und den dynamikkomprimierten Luminanzwerten bestimmt. Die möglichen korrigierten Chrominanzwerte werden bestimmt, um die ursprüngliche Farbsättigung jedes Pixels zu erhalten, unabhängig von den Veränderungen in den Luminanzwerten, die aus der Dynamikkompression resultieren. Es gibt zwei Chrominanzwerte für ein Pixel (z.B. Cb und Cr), und dieselbe Korrektur wird auf beide Chrominanzwerte angewandt. In diesem Zusammenhang wird hier nur die Korrektur beschrieben, die auf einen Chrominanzeingangswert ChromaEINi,j für ein Pixel an Position (i,j) angewandt wird, es versteht sich jedoch, dass ChromaEINi,j jeden der beiden Chrominanzeingangswerte darstellen kann.
  • Der Luminanzeingangswert und der dynamikkomprimierte Luminanzwert für ein Pixel an Position (i,j) sind hier mit Li,j bzw. Mi,j bezeichnet. In dem hier beschriebenen Beispiel sind die Luminanzwerte so normalisiert, dass Li,j und Mi,j innerhalb desselben Bereichs liegen. Außerdem sind die Chrominanzeingangswerte so verschoben, dass der neutrale Chromatizitätswert null entspricht. Es gilt anzumerken, dass, da der neutrale Chromatizitätswert null entspricht, manche der Chrominanzwerte negativ sind.
  • Der erste Schritt der Berechnung ist die Berechnung der Pixeleingangssättigung SättINi,j nach S a ¨ ttIN i ,j = ChromaEIN i ,j + c L i ,j + c
    Figure DE102014015353B4_0015
    was in etwa das Verhältnis zwischen dem Chrominanzeingangswert und dem Luminanzeingangswert für ein Pixel darstellt. Der Term c ist ein willkürlicher kleiner Wert, sodass er die gemäß Gleichung 9 berechnete Sättigung nicht wesentlich beeinflusst, während numerische Instabilitäten vermieden werden, wenn der Nennerwert Li,j auf null zu geht.
  • Eine zweite Sättigung, cSätti,j, wird bestimmt, welche die Beziehung zwischen dem dynamikkomprimierten Luminanzwert und dem möglichen korrigierten Chrominanzwert beschreibt, sodass der mögliche korrigierte Chrominanzwert mög_ChromaAUSi,j für das Pixel an Position (i, j) durch: mog .ChromasAUS i ,j = c S a ¨ t t i , j M i ,j
    Figure DE102014015353B4_0016
    gegeben ist. Die zweite Sättigung, cSätti,j, weist eine vorbestimmte Beziehung mit der ersten Sättigung, SättINi,j, auf, die durch einen Sättigungsskalierungsfaktor ws, wie z.B.: cS a ¨ tt i ,j = w s S a ¨ ttIN i ,j .
    Figure DE102014015353B4_0017
    definiert ist.
  • Der Sättigungsskalierungsfaktor ws kann so gesteuert (d.h. angepasst) werden, dass die Sättigungskorrektur gesteuert wird, für den Fall, dass es erwünscht ist, die Sättigungskorrektur zu erhöhen oder zu senken. Der Sättigungsskalierungsfaktor kann gleich 1 sein, sodass cSätti,j = SättINi,j ist. In anderen Beispielen kann der Sättigungsskalierungsfaktor nicht gleich 1 sein, sodass cSätti,j ≠ SättINi,j ist.
  • Für Pixel, die Luminanzeingangswerte im mittleren Bereich haben (d.h. nicht nahe beim Maximalwert oder Minimalwert des Bereichs von verfügbaren Luminanzwerten), können die möglichen korrigierten Chrominanzwerte mög_ChromaAUSi,j eine gute Chrominanzkorrektur bereitstellen und können als die korrigierten Chrominanzausgangswerte vom Chrominanzverarbeitungsmodul 504 verwendet werden. Es ist jedoch möglich, dass Chrominanzrestwerte, die in Pixeln mit sehr hohen oder sehr niedrigen Luminanzwerten vorhanden sind, erkennbar werden (unerwünschterweise), falls die Dynamikkompression, die vom Luminanzverarbeitungsmodul 502 angewandt wird, die zugeordneten Luminanzwerte signifikant verändert, und die Chrominanzwerte werden gemäß den Veränderungen der Luminanzwerte skaliert. Daher umfasst das Chrominanzverarbeitungsverfahren Mechanismen zur Beschränkung möglicher ,Fehler'situationen, die durch eine übermäßige Modifikation der Chrominanzwerte verursacht werden, wenn große Veränderungen in den Luminanzwerten auftreten.
  • D.h. in Schritt S1306 werden Vertrauensgewichtungen Vertri,j für die Pixel in Abhängigkeit von den Luminanzeingangswerten Li,j der jeweiligen Pixel bestimmt.
  • Die Vertrauensgewichtungen geben Vertrauen in die jeweiligen möglichen korrigierten Chrominanzwerte mög_ChromaAUSi,j an. Die Vertrauensgewichtungen Vertri,j werden so bestimmt, dass, falls der Luminanzeingangswert eines Pixels Li,j nahe bei einem Maximalwert oder einem Minimalwert eines Bereichs von verfügbaren Luminanzwerten liegt, dann die Vertrauensgewichtung für das Pixel Vertri,j geringer ist, als wenn der Luminanzeingangswert für das Pixel Li,j nicht nahe beim Maximalwert oder Minimalwert des Bereichs von verfügbaren Luminanzwerten liegt.
  • Beispielsweise kann die Vertrauensgewichtung Vertri,j für ein Pixel an Position (i,j) durch: V e r t r i , j = min ( 1, ω c ( 1 2 | 0, 5 n L i , j | ) )
    Figure DE102014015353B4_0018
    gegeben sein, wobei nLi,j der Luminanzeingangswert des Pixels an Position (i, j) ist, so normalisiert, dass er im Bereich von 0 bis 1 liegt, und wobei ωc ein Vertrauensskalierungsfaktor ist.
  • Die Vertrauensgewichtung Vertri,j nimmt einen Wert im Bereich von 0 und 1 an und neigt zu 0 für sehr niedrige oder sehr hohe Luminanzeingangswerte und neigt zu 1 für Luminanzeingangswerte im mittleren Bereich. Der Vertrauensskalierungsfaktor wc ist so auslegbar, dass das Vertrauen in die möglichen korrigierten Chrominanzwerte in unterschiedlichen Beispielen verschieden ausgelegt werden kann. Die Funktion ,min' in Gleichung 12 bedeutet, dass der Wert von Vertri,j so beschnitten werden kann, dass er nicht über 1 liegt.
  • 14a zeigt eine Zeile 1402, die einen Wert von Vertri,j als Funktion des Luminanzeingangswerts Li,j darstellt, der mit dem Vertrauensskalierungsfaktor wc = 1 erhalten wird. In diesem Beispiel erreicht Vertri,j einen Maximalwert von 1 wenn nLi,j = 0,5 ist, d.h. für einen Luminanzwert in der Mitte des möglichen Bereichs, der dem höchsten Vertrauen in den möglichen korrigierten Chrominanzwert mög_ChromaAUSi,j entspricht.
  • 14b zeigt eine Zeile 1406, die den Wert von Vertri,j als Funktion des Luminanzeingangswerts Li,j zeigt, der mit dem Vertrauensskalierungsfaktor wc = 3 erhalten wird. 14b zeigt außerdem eine strichlierte Linie 1404, die den Wert darstellt, den Vertri,j aufweisen würde, falls er nicht bei 1 beschnitten würde. Das Beschneiden macht die Zeile 1406 zu einem Trapezoid mit einem großen Bereich von Luminanzeingangswerten, die der maximalen möglichen Vertrauensgewichtung (Vertri,j = 1) entsprechen, und kleineren Bereichen (in 14b als schraffierte Bereiche 14081 und 14082 dargestellt) nahe beim maximalen und minimalen Luminanzeingangswert, wo die Vertrauensgewichtung unter 1 fällt und auf null zugeht.
  • In Schritt S1308 werden die bestimmten Vertrauensgewichtungen Vertri,j verwendet, um für die jeweiligen Pixel eine gewichtete Kombination des jeweiligen möglichen korrigierten Chrominanzwerts mög_ChromaAUSi,j und des jeweiligen Chrominanzeingangswerts ChromaEINi,j durchzuführen, wodurch korrigierte Chrominanzwerte ChromaAUSi,j für die Pixel bestimmt werden, die vom Chrominanzverarbeitungsmodul 504 ausgegeben werden können.
  • Die Vertrauensgewichtungen Vertri,j werden für beide verwendet, wobei gewichtet wird, wie stark die Chrominanzeingangswerte korrigiert werden und um die Sättigung der Pixel maßstäblich zu verringern, falls die normalisierten Luminanzeingangswerte sehr nahe bei 0 oder 1 liegen. Der korrigierte Chrominanzwert ChromaAUSi,j für das Pixel an Position (i,j) kann gemäß der Gleichung: ChromaAUS i ,j = mog_ChromaAUS i ,j V e r t r i , j + ChromaEIN i ,j ( 1 V e r t r i , j ) .
    Figure DE102014015353B4_0019
    berechnet werden.
  • Es gilt anzumerken, dass die Bereiche der Chrominanzeingangs- und -ausgangswerte (aufgrund verschiedener Bittiefen) unterschiedlich und vorzeichenbehaftet oder vorzeichenlos sein können. Folglich können die zuvor beschriebenen Operationen in den hier beschriebenen Beispielen unter Berücksichtigung der folgenden Überlegungen durchgeführt werden:
    • - Für die Berechnung der ersten Sättigung SättINi,j werden markierte Luminanzeingangswerte verwendet, und die Chrominanzeingangswerte sind auf null zentriert (d.h. neutrale Chromatizität = 0). Folglich bekommt die erhaltene Sättigung SättINi,j ein entsprechendes Vorzeichen.
    • - Differenzen zwischen den Bereichen von Li,j und Mi,j können bei der Berechnung der korrigierten Chrominanzwerte ChromaAUSi,j berücksichtigt werden. Beispielsweise kann der Wert Li,j so skaliert werden, dass er dem Bereich von Mi,j entspricht.
    • - Die korrigierten Chrominanzwerte ChromaAUSi,j können so skaliert werden, dass sie ein(e) passende(s) Bittiefe und Vorzeichen aufweisen.
  • Die dynamikkomprimierten Luminanzausgangswerte aus dem Luminanzverarbeitungsmodul 502 und die korrigierten Chrominanzausgangswerte aus dem Chrominanzverarbeitungsmodul 504 werden aus der Dynamikkompressionseinheit 406 ausgegeben und können danach in beliebiger geeigneter Weise verwendet werden, z.B. in weiteren Verarbeitungsmodulen der Kameraverarbeitungspipeline 404.
  • Die in 6 und 13 gezeigten Verfahrensschritte könnten in Hardwaremodulen oder Softwaremodulen oder einer Kombination davon an der Dynamikkompressionseinheit 406 implementiert werden.
  • In den oben beschriebenen Beispielen werden die Pixeldaten von einem Bildsensor 402 empfangen und beziehen sich auf Pixel eines Bilds, das vom Bildsensor 402 erfasst wurde. In anderen Beispielen können die Zeilen von Pixeln aus anderen Blöcken von Pixeln stammen. Beispielsweise können sich die Pixeldaten auf Pixel von jedem beliebigen Bilddtyp beziehen, der von einem Bildsensor empfangen werden kann (wie in den obigen Beispielen beschrieben ist) oder von einer Grafikverarbeitungseinheit (GPU) oder von einem Speicher empfangen werden kann. Die Pixeldaten können sich auf ein Bild beziehen, das von einem Bildsensor (wie in den obigen Beispielen beschrieben ist) erfasst wurde, oder die Pixeldaten können sich auf ein computergeneriertes Bild beziehen, das beispielsweise von einer GPU generiert wurde. Mit anderen Worten kann die Dynamikkompressionseinheit 406 je nach Bedarf implementiert sein, wo immer eine Dynamikkompression von Pixeln aus einem Block von Pixeln implementiert werden soll.
  • Im Allgemeinen kann jede(s) beliebige der oben beschriebenen Funktionen, Verfahren, Techniken oder Bauteile in Modulen unter Verwendung von Software, Firmware, Hardware (z.B. fixe Logikschaltung) oder einer beliebigen Kombination dieser Implementierungen implementiert sein. Die Bezeichnungen „Modul“, „Funktionalität“, „Bauteile“, „Block“, „Einheit“ und „Logik“ werden hier zur allgemeinen Darstellung von Software, Firmware, Hardware oder einer beliebigen Kombination davon verwendet.
  • Im Falle einer Softwareimplementierung stellt das Modul, die Funktionalität, das Bauteil, die Einheit oder die Logik einen Programmcode dar, der spezielle Aufgaben ausführt, wenn er auf einem Prozessor (z.B. einer oder mehreren CPUs) ausgeführt wird. In einem Beispiel können die beschriebenen Verfahren von einem Computer ausgeführt werden, der mit Software in maschinenlesbarer Form, die auf einem computerlesbaren Medium gespeichert ist, konfiguriert ist. Eine solche Konfiguration eines computerlesbaren Mediums ist ein signaltragendes Medium und ist daher ausgelegt, die Anweisungen (z.B. als Trägerwelle) zur Rechenvorrichtung zu übertragen, beispielsweise über ein Netz. Das computerlesbare Medium kann auch als nichtflüchtiges computerlesbares Speichermedium ausgelegt sein und ist folglich kein signaltragendes Medium. Beispiele für ein computerlesbares Speichermedium umfassen einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), eine optische Platte, einen Flash-Speicher, einen Festplattenspeicher und andere Speichervorrichtungen, die magnetische, optische und andere Verfahren verwenden können, um Anweisungen oder andere Daten zu speichern und auf die ein Gerät zugreifen kann.
  • Die Software kann in Form eines Computerprogramms vorliegen, das einen Computerprogrammcode umfasst, um einen Computer auszulegen, die Teilbestandteile der beschriebenen Verfahren auszuführen, oder in Form eines Computerprogramms, das Computerprogrammcodemittel umfasst, die ausgelegt sind, alle Schritte eines beliebigen der hier beschriebenen Verfahren auszuführen, wenn das Programm auf einem Computer laufen gelassen wird, und wobei das Computerprogramm auf einem computerlesbaren Medium ausgeführt sein kann. Der Programmcode kann in einem oder mehreren computerlesbaren Medien gespeichert sein. Die Merkmale der hier beschriebenen Techniken sind plattformunabhängig, was bedeutet, dass die Techniken auf verschiedenen Rechenplattformen mit unterschiedlichen Prozessoren implementiert werden können.
  • Fachleute werden auch erkennen, dass alle oder ein Teil der Funktionalitäten, Techniken oder Verfahren von einer zugewiesenen Schaltung, einer anwendungsspezifischen integrierten Schaltung, einer programmierbaren Logikanordnung, einer feldprogrammierbaren Gatteranordnung oder dergleichen ausgeführt werden können. Beispielsweise können das Modul, die Funktionalität, das Bauteil oder die Logik Hardware in Form von Schaltungen umfassen. Solche Schaltungen können Transistoren und/oder andere Hardwareelemente umfassen, die in einem Herstellungsprozess verfügbar sind. Solche Transistoren und/oder anderen Elemente können verwendet werden, um Schaltungen oder Strukturen zu formen, die einen Speicher implementieren und/oder enthalten, wie z.B. Register, bistabile Kippglieder, Latches, logische Operatoren, wie z.B. Boolesche Operationen, mathematische Operatoren, wie z.B. Addierer, Multiplikatoren oder Schieber, und Zwischenverbindungen, um einige Beispiele zu nennen. Solche Elemente können als kundenspezifischer Schaltkreis oder Standardzellbibliotheken, Makros oder auf anderer Abstraktionsebene bereitgestellt werden. Solche Elemente können in einer speziellen Anordnung miteinander verbunden sein. Das Modul, die Funktionalität, das Bauteil oder die Logik kann Schaltungen umfassen, die eine fixe Funktion aufweisen, und Schaltungen, die programmiert werden können, um eine Funktion oder Funktionen auszuführen; solch eine Programmierung kann aus einem Firmware- oder Software-Aktualisierungs- oder -Steuermechanismus bereitgestellt sein. In einem Beispiel weist eine Hardwarelogik Schaltungen auf, die eine(n) fixe(n) Funktionsoperation, Zustandsmaschine oder Prozess implementieren.
  • Es ist auch vorgesehen, dass Software eingeschlossen ist, welche die Konfiguration der Hardware, die ein Modul, eine Funktionalität, eine Einheit, ein Bauteil oder eine Logik wie oben beschrieben implementiert, „beschreibt“ oder definiert, z.B. HDL(Hardwarebeschreibungssprache)-Software, wie sie für den Entwurf von integrierten Schaltungen verwendet wird, oder zur Konfiguration von programmierbaren Chips, um gewünschte Funktionen auszuführen. D.h. es kann ein computerlesbares Speichermedium bereitgestellt sein, auf dem ein computerlesbarer Programmcode kodiert ist, um eine Verarbeitungseinheit zu erzeugen, die ausgelegt ist, ein beliebiges der hier beschriebenen Verfahren auszuführen, oder um einen Verarbeitungseinheit zu erzeugen, die eine beliebige hier beschriebene Vorrichtung umfasst.
  • Die Bezeichnung „Prozessor‟ und „Computer‟ werden hier verwendet, um sich auf eine beliebige Vorrichtung oder einen Teil davon mit Verarbeitungsfähigkeit, sodass sie/es Anweisungen ausführen kann, oder eine zugewiesene Schaltung, die in der Lage ist, alle oder einen Teil der Funktionalitäten oder Verfahren auszuführen, oder eine beliebige Kombination davon zu beziehen.
  • Obwohl der Gegenstand in einer Sprache speziell für Strukturmerkmale und/oder methodologische Maßnahmen beschrieben wurde, versteht sich, dass der in den beiliegenden Ansprüchen beschriebene Gegenstand nicht notwendigerweise auf die oben beschriebenen speziellen Merkmale oder Maßnahmen beschränkt ist. Die oben beschriebenen speziellen Merkmale und Maßnahmen sind vielmehr als Beispielformen zur Implementierung der Ansprüche beschrieben. Es versteht sich, dass sich der Nutzen und die Vorteile, die oben beschrieben sind, auf ein Beispiel oder auf mehrere Beispiele beziehen können.
  • Jeder hier angegebene Bereich oder Wert kann erweitert oder verändert werden, ohne die gewünschte Wirkung zu verlieren, wie für den Fachmann offensichtlich sein wird. Die hier beschriebenen Schritte der Verfahren können in jeder beliebigen geeigneten Reihenfolge oder gegebenenfalls gleichzeitig ausgeführt werden. Aspekte beliebiger der oben beschriebenen Beispiele können mit Aspekten beliebiger der anderen beschriebenen Beispiele kombiniert werden, um weitere Beispiele zu bilden, ohne dass die gewünschte Wirkung verloren geht.

Claims (20)

  1. Verfahren zur Anwendung von Dynamikkompression auf einen Block von Pixelwerten, der eine Mehrzahl von Zeilen von Pixelwerten umfasst, wobei das Verfahren in jeder einer Mehrzahl von Iterationen umfasst: Empfangen einer aktuellen Zeile von Pixelwerten des Blocks; Abrufen von gespeicherten Informationen in Bezug auf Pixelwerte wenigstens einer vorangegangenen Zeile des Blocks, die in wenigstens einer vorangegangenen Iteration verarbeitet wurden, nicht aber der Pixelwerte der wenigstens einen vorangegangenen Zeile des Blocks; Verwenden der abgerufenen Informationen, um: (i) aktualisierte Informationen zu bestimmen, die in Abhängigkeit von den Pixelwerten der aktuellen Zeile aktualisiert werden, und (ii) eine oder mehrere Dynamikkompressionsbeziehungen zur Verwendung bei einer Abbildung der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte zu bestimmen; Abbilden der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte unter Verwendung der bestimmten einen oder mehreren Dynamikkompressionsbeziehungen; und Speichern der aktualisierten Informationen ohne die Pixelwerte der aktuellen Zeile zur Verwendung bei einer Verarbeitung von Pixelwerten einer nachfolgenden Zeile von Pixelwerten des Blocks in einer nachfolgenden Iteration.
  2. Verfahren nach Anspruch 1, wobei das Bestimmen von aktualisierten Informationen ein Durchführen einer gewichteten Kombination (i) der Informationen in Bezug auf Pixelwerte der wenigstens einen vorangegangenen Zeile und (ii) Informationen in Bezug auf Pixelwerte der aktuellen Zeile umfasst.
  3. Verfahren nach Anspruch 1 oder 2, wobei die Informationen ein oder mehrere Histogramme umfassen, wobei jedes Histogramm eine Verteilung von Pixelwerten darstellt.
  4. Verfahren nach einem der vorangegangenen Ansprüche, wobei die Informationen eine oder mehrere Dynamikkompressionsbeziehungen zur Abbildung von Pixelwerten auf dynamikkomprimierte Pixelwerte umfassen.
  5. Verfahren nach einem der vorangegangenen Ansprüche, wobei der Block eine Mehrzahl von Spalten von Pixelwerten umfasst, und wobei die Informationen eine Mehrzahl von Informationselementen in Bezug auf Pixelwerte der jeweiligen Mehrzahl von Spalten aus der wenigstens einen vorangegangenen Zeile des Blocks umfassen.
  6. Verfahren nach Anspruch 5, wobei eine Mehrzahl von Dynamikkompressionsbeziehungen für die jeweilige Mehrzahl von Spalten bestimmt wird, und wobei die Abbildung der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte umfasst: für jeden der Pixelwerte der aktuellen Zeile, Bestimmen einer Mehrzahl von möglichen dynamikkomprimierten Pixelwerten unter Verwendung einer jeweiligen Mehrzahl der Dynamikkompressionsbeziehungen und Interpolieren der möglichen dynamikkomprimierten Pixelwerte.
  7. Verfahren nach einem der vorangegangenen Ansprüche, wobei der Block von Pixelwerten ein Einzelbild einer Abfolge von Einzelbildern ist, und wobei das Verfahren ferner umfasst: Bestimmen einer globalen Dynamikkompressionsbeziehung unter Verwendung von Informationen in Bezug auf Pixelwerte eines vorangegangenen Einzelbilds in der Abfolge von Einzelbildern; und Verwenden der globalen Dynamikkompressionsbeziehungen, um global dynamikkomprimierte Pixelwerte für die Pixelwerte der aktuellen Zeile zu bestimmen, wobei das Abbilden der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte ein Durchführen einer gewichteten Kombination von: (i) dynamikkomprimierten Pixelwerten, die basierend auf der bestimmten einen oder den bestimmten mehreren Dynamikkompressionsbeziehungen bestimmt wurden, und (ii) den global dynamikkomprimierten Pixelwerten umfasst.
  8. Verfahren nach einem der vorangegangenen Ansprüche, wobei das Bestimmen von aktualisierten Informationen ein Bestimmen eines oder mehrerer Histogramme der Verteilung der Pixelwerte in der aktuellen Zeile umfasst, wobei jeder Pixelwert der aktuellen Zeile zu einer Mehrzahl von Klassen eines Histogramms beiträgt, sodass die Histogramme geglättete Verteilungen von Pixelwerten darstellen.
  9. Verfahren nach Anspruch 8, wobei das Bestimmen von aktualisierten Informationen ferner ein Abflachen wenigstens eines des einen oder der mehreren Histogramme umfasst.
  10. Verfahren nach Anspruch 8 oder 9, wenn von Anspruch 4 abhängig, wobei das Bestimmen von aktualisierten Informationen ferner ein Bestimmen einer oder mehrerer Dynamikkompressionsbeziehungen durch integrieren des/r jeweiligen einen oder mehreren Histogramme umfasst.
  11. Verfahren nach Anspruch 10, wobei das Bestimmen von aktualisierten Informationen ein Durchführen einer gewichteten Kombination: (i) der einen oder mehreren Dynamikkompressionsbeziehungen, die für die aktuelle Zeile bestimmt wurden, und (ii) der jeweiligen einen oder mehreren Dynamikkompressionsbeziehungen, die aus Pixelwerten der wenigstens einen vorangegangenen Zeile bestimmt wurden, umfasst.
  12. Verfahren nach einem der vorangegangenen Ansprüche, wobei entweder: (i) die aktualisierten Informationen verwendet werden, um die eine oder mehreren Dynamikkompressionsbeziehungen zu bestimmen, oder (ii) die abgerufenen Informationen, und nicht die aktualisierten Informationen, verwendet werden, um die eine oder mehreren Dynamikkompressionsbeziehungen zu bestimmen.
  13. Verfahren nach einem der vorangegangenen Ansprüche, wobei in jeder der Mehrzahl von Iterationen ein Subsatz von zwei oder mehr der Zeilen von Pixelwerten des Blocks empfangen und parallel verarbeitet wird, um so die empfangenen Pixelwerte des Subsatzes von Zeilen in dynamikkomprimierte Pixelwerte umzuwandeln, und wobei das Bestimmen von aktualisierten Informationen ein Aktualisieren der abgerufenen Informationen in Abhängigkeit von den empfangenen Pixelwerten aus dem Subsatz von Zeilen zur Verwendung bei einer Verarbeitung von Pixelwerten eines nachfolgenden Subsatzes einer oder mehrerer Zeilen von Pixelwerten des Blocks in einer nachfolgenden Iteration umfasst.
  14. Verfahren nach einem der vorangegangenen Ansprüche, wobei die Pixelwerte Luminanzwerte sind.
  15. Verfahren nach einem der vorangegangenen Ansprüche, wobei das Verfahren in einer Kameraverarbeitungspipeline implementiert wird.
  16. Dynamikkompressionseinheit, die ausgelegt ist, Dynamikkompression auf einen Block von Pixelwerten anzuwenden, der eine Mehrzahl von Zeilen von Pixelwerten umfasst, wobei die Dynamikkompressionseinheit ein Verarbeitungsmodul umfasst, das ausgelegt ist, in jeder einer Mehrzahl von Iterationen: eine aktuelle Zeile von Pixelwerten des Blocks zu empfangen; gespeicherte Informationen in Bezug auf Pixelwerte wenigstens einer vorangegangenen Zeile des Blocks, aber nicht die Pixelwerte der wenigstens einen vorangegangenen Zeile des Blocks abzurufen, die in wenigstens einer vorangegangenen Iteration verarbeitet wurden; die abgerufenen Informationen zu verwenden, um: (i) aktualisierte Informationen zu bestimmen, die in Abhängigkeit von den Pixelwerten der aktuellen Zeile aktualisiert werden, und (ii) eine oder mehrere Dynamikkompressionsbeziehungen zur Verwendung bei einer Abbildung der Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte zu bestimmen; die Pixelwerte der aktuellen Zeile unter Verwendung der bestimmten einen oder mehreren Dynamikkompressionsbeziehungen auf dynamikkomprimierte Pixelwerte abzubilden; und zu bewirken, dass die aktualisierten Informationen ohne die Pixelwerte der aktuellen Zeile zur Verwendung bei einer Verarbeitung von Pixelwerten einer nachfolgenden Zeile von Pixelwerten des Blocks in einer nachfolgenden Iteration gespeichert werden.
  17. Dynamikkompressionseinheit nach Anspruch 16, wobei der Block von Pixelwerten ein Einzelbild einer Abfolge von Einzelbildern ist, und wobei die Dynamikkompressionseinheit ferner umfasst: ein globales Abbildungsbestimmungsmodul, das ausgelegt ist, eine globale Dynamikkompressionsbeziehung unter Verwendung von Informationen in Bezug auf Pixelwerte eines vorangegangenen Einzelbilds der Abfolge von Einzelbildern zu bestimmen; wobei das Verarbeitungsmodul ein globales Abbildungsmodul umfasst, das ausgelegt ist, die globale Dynamikkompressionsbeziehung zu verwenden, um global dynamikkomprimierte Pixelwerte für die Pixelwerte der aktuellen Zeile zu bestimmen, und wobei das Verarbeitungsmodul ausgelegt ist, die Pixelwerte der aktuellen Zeile auf dynamikkomprimierte Pixelwerte abzubilden, indem eine gewichtete Kombination: (i) von dynamikkomprimierten Pixelwerten, die basierend auf der/den bestimmten einen oder mehreren Dynamikkompressionsbeziehungen bestimmt wurden, und (ii) global dynamikkomprimierten Pixelwerten, die vom globalen Abbildungsmodul bestimmt wurden, durchgeführt wird.
  18. Dynamikkompressionseinheit nach Anspruch 16 oder 17, wobei das Verarbeitungsmodul ausgelegt ist, in jeder der Mehrzahl von Iterationen einen Subsatz von zwei oder mehr der Zeilen von Pixelwerten des Blocks zu empfangen und den empfangenen Subsatz von zwei oder mehr der Zeilen von Pixelwerten parallel zu verarbeiten, um so die empfangenen Pixelwerte des Subsatzes von Zeilen auf dynamikkomprimierte Pixelwerte abzubilden, und wobei das Verarbeitungsmodul ausgelegt ist, die Informationen in Abhängigkeit von den empfangenen Pixelwerten aus dem Subsatz von Zeilen zur Verwendung bei einer Verarbeitung von Pixelwerten eines nachfolgenden Subsatzes einer oder mehrerer Zeilen von Pixelwerten des Blocks in einer nachfolgenden Iteration zu aktualisieren.
  19. Dynamikkompressionseinheit nach einem der Ansprüche 16 bis 18, wobei die Dynamikkompressionseinheit in einer Kameraverarbeitungspipeline implementiert ist.
  20. Computerlesbares Speichermedium, auf dem entweder: (i) ein computerlesbarer Code, der zur Ausführung der Schritte eines Verfahrens nach einem der Ansprüche 1 bis 15 ausgelegt ist, wenn der Code auf einem Computer laufen gelassen wird, oder (ii) ein computerlesbarer Code zur Generierung einer Dynamikkompressionseinheit nach einem der Ansprüche 16 bis 19 kodiert ist.
DE102014015353.3A 2013-10-17 2014-10-16 Dynamikkompression Active DE102014015353B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1318410.6 2013-10-17
GB1318410.6A GB2519336B (en) 2013-10-17 2013-10-17 Tone Mapping

Publications (2)

Publication Number Publication Date
DE102014015353A1 DE102014015353A1 (de) 2015-04-23
DE102014015353B4 true DE102014015353B4 (de) 2022-12-29

Family

ID=49726958

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102014015352.5A Active DE102014015352B4 (de) 2013-10-17 2014-10-16 Dynamikkompression
DE102014015353.3A Active DE102014015353B4 (de) 2013-10-17 2014-10-16 Dynamikkompression

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102014015352.5A Active DE102014015352B4 (de) 2013-10-17 2014-10-16 Dynamikkompression

Country Status (4)

Country Link
US (2) US9984445B2 (de)
CN (2) CN104574290B (de)
DE (2) DE102014015352B4 (de)
GB (2) GB2519336B (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418311B2 (en) * 2014-09-04 2016-08-16 Apple Inc. Multi-scale tone mapping
US9639919B2 (en) * 2014-10-07 2017-05-02 Stmicroelectronics (Grenoble 2) Sas Detection and correction of artefacts in images or video
US9892494B2 (en) * 2015-02-05 2018-02-13 Apple Inc. Region-of-interest biased tone mapping
US10616617B2 (en) * 2015-04-23 2020-04-07 Lg Electronics Inc. Method and apparatus for transmitting or receiving broadcast signal
US10007412B2 (en) * 2015-06-24 2018-06-26 Samsung Electronics Co., Ltd. Tone mastering system with creative intent metadata
US9857953B2 (en) * 2015-11-17 2018-01-02 Adobe Systems Incorporated Image color and tone style transfer
EP3459043A4 (de) * 2016-06-21 2019-04-24 Zhejiang Dahua Technology Co., Ltd Systeme und verfahren zur bildverarbeitung
CN107818553B (zh) * 2016-09-12 2020-04-07 京东方科技集团股份有限公司 图像灰度值调整方法和装置
US10504487B2 (en) 2016-10-14 2019-12-10 Apple Inc. Ambient and content adaptive pixel manipulation
CN108460730B (zh) * 2017-02-17 2020-06-26 京东方科技集团股份有限公司 一种图像处理方法及其装置
RU2730435C1 (ru) 2017-04-21 2020-08-21 Зенимакс Медиа Инк. Системы и способы рендеринга с адаптируемым качеством под управлением кодировщика
EP3399497A1 (de) * 2017-05-05 2018-11-07 Koninklijke Philips N.V. Optimierte decodierte hochkontrastbildsättigung
US10755392B2 (en) * 2017-07-13 2020-08-25 Mediatek Inc. High-dynamic-range video tone mapping
CN108198155B (zh) * 2017-12-27 2021-11-23 合肥君正科技有限公司 一种自适用色调映射方法及系统
CN108391112A (zh) * 2018-04-02 2018-08-10 深圳Tcl新技术有限公司 一种提升显示画质的方法、系统及存储介质
US10628929B2 (en) * 2018-05-28 2020-04-21 Augentix Inc. Method and computer system of image enhancement
KR102562052B1 (ko) * 2018-05-29 2023-08-02 삼성전자주식회사 전자 장치 및 그 제어 방법
US10997947B2 (en) 2018-05-29 2021-05-04 Samsung Electronics Co., Ltd. Electronic device and control method thereof
EP3661188B1 (de) * 2018-11-27 2020-10-28 Axis AB Verfahren zur reduzierung von helligkeitsvariationen in einem videobild-stream, der eine szene darstellt
EP3937162A4 (de) * 2019-03-29 2022-05-11 Sony Group Corporation Videosignalverarbeitungsvorrichtung, videosignalverarbeitungsverfahren und bildaufnahmevorrichtung
CN110363722A (zh) * 2019-07-15 2019-10-22 福州大学 一种针对电润湿电子纸显示器的色调映射方法
US11803947B2 (en) * 2020-03-18 2023-10-31 Intel Corporation Brightness and contrast enhancement for video
CN113472997B (zh) * 2020-03-31 2022-11-04 北京小米移动软件有限公司 图像处理方法及装置、移动终端及存储介质
CN114205487A (zh) * 2020-08-28 2022-03-18 超威半导体公司 内容自适应镜头阴影校正方法和装置
US20230052082A1 (en) * 2021-08-10 2023-02-16 Samsung Electronics Co., Ltd. Global tone mapping with contrast enhancement and chroma boost
WO2023138913A1 (en) * 2022-01-19 2023-07-27 Interdigital Vc Holdings France, Sas Expansion function selection in an inverse tone mapping process
CN116452454B (zh) * 2023-04-19 2023-10-03 哈尔滨理工大学 一种基于多分辨率金字塔的色阶映射方法
CN116249018B (zh) * 2023-05-11 2023-09-08 深圳比特微电子科技有限公司 图像的动态范围压缩方法、装置、电子设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110243473A1 (en) 2010-04-01 2011-10-06 Himax Media Solutions, Inc. Image enhancement method and apparatuses utilizing the same

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040085459A1 (en) 2002-02-12 2004-05-06 Nikon Corporation Image processing device, image processing program, and image processing method
JP3962642B2 (ja) * 2002-07-08 2007-08-22 キヤノン株式会社 画像処理装置およびその方法
TWI222836B (en) * 2003-03-21 2004-10-21 Mediatek Inc Video signal separating method and related apparatus
US7430020B1 (en) * 2005-07-07 2008-09-30 Ess Technology, Inc. Separation of composite video signals using dot crawl detector
US8687087B2 (en) * 2006-08-29 2014-04-01 Csr Technology Inc. Digital camera with selectively increased dynamic range by control of parameters during image acquisition
US8285071B2 (en) * 2007-09-10 2012-10-09 Himax Technologies Limited Content-adaptive contrast improving method and apparatus for digital image
US8339475B2 (en) * 2008-12-19 2012-12-25 Qualcomm Incorporated High dynamic range image combining
JP2011010108A (ja) * 2009-06-26 2011-01-13 Seiko Epson Corp 撮像制御装置、撮像装置及び撮像制御方法
CN102473289A (zh) * 2009-07-30 2012-05-23 惠普开发有限公司 用于色调映射图像的方法
KR101700362B1 (ko) * 2010-08-16 2017-01-31 삼성전자주식회사 영상 처리 방법 및 영상 처리 장치
JP5753393B2 (ja) * 2011-02-04 2015-07-22 キヤノン株式会社 画像処理装置及び方法
KR20120118383A (ko) * 2011-04-18 2012-10-26 삼성전자주식회사 이미지 보정 장치 및 이를 이용하는 이미지 처리 장치와 그 방법들
CN102231264B (zh) * 2011-06-28 2013-03-06 王洪剑 动态对比度增强装置和方法
US9105078B2 (en) * 2012-05-31 2015-08-11 Apple Inc. Systems and methods for local tone mapping
JP6083897B2 (ja) * 2013-02-28 2017-02-22 株式会社 日立産業制御ソリューションズ 撮像装置及び画像信号処理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110243473A1 (en) 2010-04-01 2011-10-06 Himax Media Solutions, Inc. Image enhancement method and apparatuses utilizing the same

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Kim, J.-Y., et al.: An advanced contrast enhancement using partially overlapped sub-block histogram equalization. In: IEEE Trans. on Circuits and Systems for Video Technology, Vol. 11, 2001, S. 475 – 484
Shimoyama, S., et al.: Local adaptive tone mapping with composite multiple gamma functions. In: Proc. 16th IEEE Int. Conf. on Image Processing, 2009, S. 3153 – 3156

Also Published As

Publication number Publication date
GB201318410D0 (en) 2013-12-04
CN104574291A (zh) 2015-04-29
DE102014015352A1 (de) 2015-04-23
CN104574290B (zh) 2019-04-19
US20150110399A1 (en) 2015-04-23
GB2520406B (en) 2015-11-04
CN104574291B (zh) 2019-08-16
GB2519336A (en) 2015-04-22
GB2519336B (en) 2015-11-04
US20150109321A1 (en) 2015-04-23
GB2520406A (en) 2015-05-20
CN104574290A (zh) 2015-04-29
US9984445B2 (en) 2018-05-29
DE102014015353A1 (de) 2015-04-23
DE102014015352B4 (de) 2019-03-14
GB201417096D0 (en) 2014-11-12
US9454810B2 (en) 2016-09-27

Similar Documents

Publication Publication Date Title
DE102014015353B4 (de) Dynamikkompression
DE60132278T2 (de) Rauschverminderungsverfahren unter Verwendung von Farbinformationen, einer Vorrichtung und eines Programms zur Digital-Bildverarbeitung
EP1231564B1 (de) Digitale lokale Bildeigenschaftssteuerung mittels Masken
DE60101013T2 (de) Farbtransformationsverfahren zum Abbilden von Farben in Bildern
DE102019008221A1 (de) Interaktives Bildmattieren unter Verwendung neuronaler Netze
DE102015107869A1 (de) Vergabe von Primitiven an Primitiv-Blöcke
DE202018006855U1 (de) Burn-in-Statistiken und Burn-in-Kompensation
DE102015109560A1 (de) Zuweisen von primitiven zu kacheln in einem graphikverarbeitungssystem
DE102015109559A1 (de) Zuweisen von primitiven zu kacheln in einem graphikverarbeitungssystem
DE10319118A1 (de) Verfahren und Vorrichtung zur Parametrisierten Schärfung und Glättung
DE102016007215A1 (de) Kontrollieren der Glattheit eines Übergangs zwischen Bildern
DE102017102952A1 (de) Eine Vorrichtung zum Erzeugen eines dreidimensionalen Farbbildes und ein Verfahren zum Produzieren eines dreidimensionalen Farbbildes
DE10319094A1 (de) Verfahren und Vorrichtung zum Zuordnen einer Farbverbesserung zu einer Farbe
DE602004012125T2 (de) Robuste rekursive hüllenoperatoren für die schnelle verarbeitung von bildern des retinex-typs
DE102015114651B4 (de) Bildskalierungstechniken
DE102015101543A1 (de) Verarbeitung von primitivblöcken in parallelen kachelungsmaschinen-pipes
DE112019003587T5 (de) Lernvorrichtung, Betriebsprogramm von Lernvorrichtung und Betriebsverfahren von Lernvorrichtung
DE112005001706T5 (de) Anpassen von Pixeln durch gewünschte Verstärkungen und Faktoren
DE102020133963A1 (de) Systeme und Verfahren zur Abbildrauschunterdrückung unter Verwendung von tiefen gefalteten Netzwerken
DE602004005879T2 (de) Verfahren und system zum differentiellen und regelmässigen modifizieren eines digitalen bildes nach pixeln
DE102018006199A1 (de) Lokale Farbbereichsauswahl
DE3815390C2 (de) Vorwärtsdifferenzbildungsanordnung zum Erzeugen von Kurven auf einer grafischen Anzeigeeinrichtung und Verfahren zum Erzeugen von Pixelkoordinaten zum Darstellen solcher Kurven auf einer Anzeigeeinrichtung
DE69938473T2 (de) Verfahren zum umgekehrten Halbtonzittern niedriger Komplexität und Speicherung
DE102018115991B4 (de) Digitale schaltung zur korrektur eines vignettierungseffekts in werten von pixeln eines bildes einer elektronischen kamera
DE10221389A1 (de) Verfahren zur Ermittlung eines Pixelwertes eines Pixel aufweisenden Bildes, Gewichtungsmatrix und Recheneinrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: WESTPHAL, MUSSGNUG & PARTNER PATENTANWAELTE MI, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final