4.12. Le pipeline ISP¶
Le processeur de signal d’image (ISP) est le pipeline matériel qui transforme les valeurs de pixels brutes du capteur en une image couleur finie. Les corrections au niveau des pixels réalisées sur le capteur constituent les premières étapes de ce pipeline. Une fois celles-ci exécutées, le reste du pipeline effectue le traitement des couleurs et le formatage de sortie dans un ordre fixe pour chaque trame.
Les étapes de traitement des couleurs et de sortie de l’ISP. Le pipeline exécute chaque étape sur l’ensemble des pixels de la trame avant de passer à la suivante.¶
4.12.1. Les étapes¶
Chaque étape applique tour à tour une transformation bien définie. L’ordre a son importance – les étapes ultérieures supposent que les précédentes ont déjà été exécutées, et quelques étapes prennent aussi leurs entrées à partir de la sortie de la trame précédente.
L”extraction des statistiques mesure la luminosité moyenne par région et les sommes par canal à partir de la trame Bayer corrigée. Ces valeurs alimentent les boucles de contrôle de l’exposition automatique, du gain automatique et de la balance des blancs automatique, qui mettent ensuite à jour les réglages du capteur pour la trame suivante.
Les gains de balance des blancs automatique multiplient chaque pixel Bayer par un facteur propre à chaque couleur – les pixels rouges par un gain R, les pixels verts par un gain G, les pixels bleus par un gain B – afin de ramener la référence de blanc de la scène vers un gris neutre, de sorte que les couleurs enregistrées correspondent à ce que l’œil a perçu. Les facteurs proviennent des statistiques AWB de la trame précédente.
Le dématriçage reconstruit les deux canaux de couleur manquants pour chaque pixel à partir de la mosaïque Bayer, transformant les données brutes à un canal par pixel en RGB à trois canaux. (Voir Dématriçage (debayering).) Tout ce qui suit cette étape s’exécute sur des pixels RGB plutôt que sur la mosaïque Bayer.
La correction par matrice de couleur (CCM) applique une multiplication par une matrice 3x3 à chaque pixel RGB, qui transpose la réponse rouge-vert-bleu native du capteur dans un espace colorimétrique standard. Les filtres de chaque capteur ont leur propre réponse spectrale, qui ne correspond pas exactement à ce qu’attend un standard donné ; la matrice est une transformation calibrée propre à chaque capteur qui convertit le « RGB capteur » en « RGB standard ».
La correction gamma applique à chaque canal une courbe non linéaire qui compresse le signal linéaire du capteur en un encodage adapté à la perception. L’œil remarque davantage les différences entre les tons sombres que celles entre les tons clairs ; un encodage qui consacre une plus grande part de son budget de bits à l’extrémité sombre capture donc plus de détails visibles pour une profondeur de bits donnée.
La mise à l’échelle de l’image redimensionne la trame de la résolution native du capteur vers la résolution de sortie cible. La plupart des applications fonctionnent en deçà du nombre total de pixels du capteur, et la réduction d’échelle diminue à la fois la bande passante et la pression mémoire sur tout ce qui suit.
Le rognage de l’image extrait un sous-rectangle de la trame mise à l’échelle et écarte les pixels situés à l’extérieur. Utilisé pour capturer une région d’intérêt, respecter un rapport d’aspect particulier ou supprimer une bordure dont l’application n’a pas besoin.
L”empaquetage des pixels convertit la représentation interne par canal (généralement 10 ou 12 bits par canal) dans le format de sortie choisi et écrit le résultat en RAM.
4.12.2. La rétroaction de la boucle de contrôle¶
Les étapes 1 et 2 forment une boucle de contrôle qui s’étend sur plusieurs trames. Les statistiques extraites de la trame N indiquent au capteur la luminosité de la scène et son équilibre des couleurs durant cette trame ; les régulateurs d’exposition automatique, de gain automatique et de balance des blancs automatique utilisent ces valeurs pour choisir de nouvelles valeurs de registre d’exposition, de gain et de balance des blancs pour la trame N+1. Les nouvelles valeurs prennent effet lors de la lecture de la trame suivante, les statistiques de la nouvelle trame reviennent, et la boucle se referme.
Pour une scène qui ne change pas, la boucle converge en quelques trames et se stabilise sur un réglage constant. Pour une scène dont la luminosité ou la dominante de couleur change – la caméra balayant de l’intérieur vers une fenêtre ensoleillée, par exemple – la boucle suit le changement sur plusieurs trames, et l’utilisateur observe une brève dérive de luminosité ou de couleur en chemin vers le nouvel état stable.
4.12.3. Où s’exécute l’ISP¶
Deux configurations sont courantes.
Un ISP intégré au capteur exécute l’ensemble du pipeline à l’intérieur de la puce du capteur et fournit une image RGB finie. Le MCU se contente d’en récupérer le résultat.
Un ISP externe au capteur réside dans le MCU ou le SoC hôte. Le capteur fournit du Bayer brut ; le silicium du MCU (ou son code pilote) exécute le pipeline avant de transmettre la trame finie au code utilisateur.
Cette répartition détermine quels formats de sortie le capteur peut fournir directement à l’utilisateur. Un capteur doté d’un ISP intégré complet permet à l’utilisateur de choisir parmi tous les formats finis que la puce prend en charge. Un capteur qui n’en possède pas ne fournit que du Bayer, et les conversions de format se font dans le silicium ou le logiciel du MCU.