4.12. Die ISP-Pipeline¶
Der Image Signal Processor (ISP) ist die Hardware-Pipeline, die die rohen Pixelwerte vom Sensor in ein fertiges Farbbild verwandelt. Die Korrekturen auf Pixelebene auf dem Sensor sind die ersten Stufen dieser Pipeline. Nachdem diese durchgelaufen sind, übernimmt der Rest der Pipeline die Farbverarbeitung und Ausgabeformatierung in einer festen Reihenfolge für jedes Einzelbild.
Die Farbverarbeitungs- und Ausgabestufen des ISP. Die Pipeline führt jede Stufe über jedes Pixel des Einzelbilds aus, bevor die nächste beginnt.¶
4.12.1. Die Stufen¶
Jede Stufe wendet der Reihe nach eine genau definierte Transformation an. Die Reihenfolge ist wichtig – spätere Stufen setzen voraus, dass frühere bereits gelaufen sind, und einige Stufen beziehen ihre Eingaben auch aus der Ausgabe des vorherigen Einzelbilds.
Die Statistikextraktion misst die durchschnittliche Helligkeit pro Region und die Summen pro Kanal aus dem korrigierten Bayer-Einzelbild. Die Werte speisen die Regelkreise für Auto-Belichtung, Auto-Verstärkung und automatischen Weißabgleich, die daraufhin die Einstellungen des Sensors für das nächste Einzelbild aktualisieren.
Die Verstärkungen für den automatischen Weißabgleich skalieren jedes Bayer-Pixel mit einem farbspezifischen Multiplikator – rote Pixel mit einer R-Verstärkung, grüne Pixel mit einer G-Verstärkung, blaue Pixel mit einer B-Verstärkung – und schieben die Weißreferenz der Szene in Richtung neutralem Grau, damit die aufgezeichneten Farben so aussehen, wie das Auge sie gesehen hat. Die Multiplikatoren stammen aus der AWB-Statistik des vorherigen Einzelbilds.
Das Debayering rekonstruiert an jedem Pixel die beiden fehlenden Farbkanäle aus dem Bayer-Mosaik und verwandelt Rohdaten mit einem Kanal pro Pixel in dreikanaliges RGB. (Siehe Debayering.) Alles nach dieser Stufe arbeitet auf RGB-Pixeln statt auf dem Bayer-Mosaik.
Die Farbmatrixkorrektur (CCM) wendet auf jedes RGB-Pixel eine 3x3-Matrixmultiplikation an, die die native Rot-Grün-Blau-Antwort des Sensors in einen Standard-Farbraum abbildet. Die Filter jedes Sensors haben ihre eigene spektrale Antwort, die nicht genau dem entspricht, was irgendein Standard erwartet; die Matrix ist eine pro Sensor kalibrierte Transformation, die „Sensor-RGB“ in „Standard-RGB“ umwandelt.
Die Gammakorrektur wendet auf jeden Kanal eine nichtlineare Kurve an, die das lineare Sensorsignal in eine wahrnehmungsangepasste Kodierung komprimiert. Das Auge bemerkt Unterschiede zwischen dunklen Tönen stärker als Unterschiede zwischen hellen Tönen, sodass eine Kodierung, die mehr ihres Bit-Budgets auf das dunkle Ende verwendet, bei einer gegebenen Bittiefe mehr sichtbare Details erfasst.
Die Bildskalierung ändert die Größe des Einzelbilds von der nativen Auflösung des Sensors auf die Ziel-Ausgabeauflösung. Die meisten Anwendungen laufen mit weniger als der vollen Pixelanzahl des Sensors, und das Herunterskalieren verringert sowohl die Bandbreite als auch die Speicherbelastung für alles, was folgt.
Der Bildzuschnitt extrahiert ein Teilrechteck des skalierten Einzelbilds und verwirft die Pixel außerhalb davon. Wird verwendet, um einen Interessensbereich zu erfassen, ein bestimmtes Seitenverhältnis einzuhalten oder einen von der Anwendung nicht benötigten Rand zu entfernen.
Das Pixel-Packing wandelt die interne Darstellung pro Kanal (typischerweise 10 oder 12 Bit pro Kanal) in das gewählte Ausgabeformat um und schreibt das Ergebnis in den RAM.
4.12.2. Die Rückkopplung des Regelkreises¶
Die Stufen 1 und 2 bilden einen Regelkreis, der sich über mehrere Einzelbilder erstreckt. Die aus Einzelbild N extrahierten Statistiken teilen dem Sensor mit, wie hell die Szene war und wie ihr Farbabgleich in diesem Einzelbild lag; die Regler für Auto-Belichtung, Auto-Verstärkung und automatischen Weißabgleich verwenden diese Werte, um neue Register-Werte für Belichtung, Verstärkung und Weißabgleich für Einzelbild N+1 zu wählen. Die neuen Werte werden beim Auslesen des nächsten Einzelbilds wirksam, die Statistiken des neuen Einzelbilds kommen zurück, und der Regelkreis schließt sich.
Bei einer Szene, die sich nicht ändert, konvergiert der Regelkreis innerhalb weniger Einzelbilder und verbleibt bei einer konstanten Einstellung. Bei einer Szene, deren Helligkeit oder Farbstich sich ändert – etwa wenn die Kamera von drinnen zu einem sonnenbeschienenen Fenster schwenkt – verfolgt der Regelkreis die Änderung über mehrere Einzelbilder hinweg, und der Benutzer sieht auf dem Weg zum neuen stationären Zustand eine kurze Helligkeits- oder Farbdrift.
4.12.3. Wo der ISP läuft¶
Zwei Anordnungen sind verbreitet.
Ein On-Sensor-ISP führt die gesamte Pipeline im Inneren des Sensorchips aus und gibt ein fertiges RGB-Bild aus. Die MCU sammelt lediglich das Ergebnis ein.
Ein Off-Sensor-ISP befindet sich in der Host-MCU oder im SoC. Der Sensor gibt rohes Bayer aus; das Silizium der MCU (oder ihr Treibercode) führt die Pipeline aus, bevor das fertige Einzelbild an den Benutzercode übergeben wird.
Die Aufteilung beeinflusst, welche Ausgabeformate der Sensor dem Benutzer direkt liefern kann. Ein Sensor mit einem vollständigen On-Chip-ISP lässt den Benutzer aus jedem fertigen Format wählen, das der Chip unterstützt. Ein Sensor ohne einen solchen gibt nur Bayer aus, und die Formatkonvertierungen finden im Silizium oder in der Software der MCU statt.