Version découverte

Réintroduire l’ISP sans perdre la maîtrise du signal

Le Raspberry Pi sait développer une image couleur avec un circuit spécialisé. EIP avait pourtant choisi de tout reconstruire depuis le RAW. J’ai mesuré comment réutiliser cet accélérateur pour la prévisualisation, sans lui abandonner les traitements scientifiques ni modifier les données enregistrées.

Processeur de signal d’image (ISP)EIPIMX477OV5647Prévisualisation

Peut-on utiliser le processeur de signal d’image (ISP) du Raspberry Pi pour soulager le processeur central (CPU) sans laisser une boîte noire modifier le signal à notre place ?

Un capteur couleur ne fournit pas encore une image prête à regarder. Chaque photosite mesure une seule couleur ; il faut reconstruire les autres composantes par dématriçage et préparer un rendu. Le processeur généraliste peut faire ce travail, mais le Raspberry Pi possède déjà un spécialiste de l’image : un circuit matériel conçu pour fabriquer une image couleur.

Ce circuit porte le nom d’ISP, pour Image Signal Processor : processeur de signal d’image. Rapide, oui. Libre de prendre des initiatives, non. EIP l’utilise pour accélérer la prévisualisation, tout en gardant les décisions de rendu et les données brutes (RAW) sous son contrôle.

Deux chemins de prévisualisation, un RAW scientifique à part

Chemin logiciel

  1. RAW Bayer (données brutes du capteur)
  2. Dématriçage EIP
  3. Niveau noir EIP
  4. Balance / rendu
  5. JPEG

Chemin ISP EIP

  1. RAW Bayer
  2. ISP neutralisé
  3. RGB888 (rouge, vert, bleu sur 8 bits)
  4. Niveau noir EIP
  5. Balance / rendu
  6. JPEG
RAW scientifiqueenregistrement · transport · caractérisation · mesuresreste RAW, hors du chemin ISP
Schéma pédagogique. L’ISP accélère la fabrication de l’image de prévisualisation ; il ne remplace ni ne modifie le RAW scientifique.

Le processeur d’image standard peut notamment appliquer automatiquement une balance des blancs, une matrice colorimétrique, du gamma, une réduction de bruit, la correction des pixels défectueux (DPC), de la netteté ou une correction d’illumination. Ces automatismes sont pratiques pour une photo agréable ; ils compliquent l’interprétation si leur effet n’est pas maîtrisé.

ISP classique

Peut corriger, équilibrer, lisser, accentuer et ajuster le contraste automatiquement.

ISP utilisé par EIP

Ces blocs sont désactivés ou ramenés à l’identité selon leur nature. Ce résultat vient de l’ensemble du profil neutralisé, pas du seul réglage des gains couleur à l’unité.

La chaîne de prévisualisation retenue est : RAW Bayer → ISP VC4 neutralisé et linéarisé → RGB888 → correction du niveau noir par EIP → balance EIP → gain, gamma, étirement, saturation et dispersion EIP. Le RAW enregistré, transporté et caractérisé reste, lui, en dehors de cette chaîne.

Une mire pour repérer les dérives, pas pour certifier les couleurs

Caméra PiNox installée face à une mire colorée artisanale peinte à la main.
PiNox face à la mire colorée artisanale réalisée par ma fille. Elle aide à révéler visuellement les dérives, mais ne remplace pas une mire colorimétrique certifiée.
Interface PiNox affichant la mire avec le dématriçage logiciel EIP actif et le sélecteur ISP disponible.
La mire dans PiNox avec le chemin logiciel EIP actif. Le sélecteur permet de basculer vers l’ISP pour une comparaison visuelle immédiate.

Deux traitements, le même RAW de départ

Pour vérifier ce principe, le banc de test demande à libcamera de produire, dans une même requête, le RAW et l’image RGB issue de l’ISP. Le codec EIP développe ensuite ce même RAW. La comparaison associe donc les deux sorties d’une même requête ; elle ne compare pas deux captures indépendantes.

Comparaison du développement EIP et de l’ISP neutralisé : pour chaque condition de niveau noir zéro ou 64, les sorties sont appairées dans la même requête libcamera.
Développement logiciel EIP à gauche, ISP neutralisé à droite. La dominante verte est volontaire : les gains couleur sont maintenus à l’unité afin de comparer les transformations, pas de produire une image corrigée.

Le coupable était le niveau noir

Une première comparaison donnait une pente moyenne de 1,0662 entre les valeurs ISP et celles développées par EIP. Cela ne révélait pas une mystérieuse amplification couleur : l’ISP soustrayait un niveau noir de 64, puis réétalait la plage restante sur toute l’échelle 8 bits. La pente suivait cette renormalisation.

Deux conditions réellement mesurées

Ces deux diagnostics, normalisés dans le domaine 10 bits pour une sortie 8 bits, isolent le réétalement de la plage après soustraction du noir.

Noir ISP 64Prédiction 1,0636 · mesure 1,0662

Niveau noir 64 soustrait ; la plage 64–1023 est réétalée vers 0–255.

0641023

Sortie : 0–255

Noir ISP 0Prédiction 0,9971 · mesure 0,9993

Tout le domaine 0–1023 est converti en 0–255.

01023

Sortie : 0–255

Représentation de la plage des valeurs, pas de pixels ni d’interpolation. Seules ces deux conditions ont été testées.

Avec un niveau noir de 64, le code 64 devient le zéro de la plage corrigée, ensuite réétalée vers 0–255 ; à 0, tout le domaine 0–1023 est converti en 0–255 sans soustraction côté ISP.

Chaîne EIP de production : niveau noir neutralisé à 0 dans l’ISP, puis correction du niveau noir appliquée une seule fois par EIP.

Le passage au niveau noir ISP à 0 donne une pente mesurée de 0,9993, proche de la prédiction 0,9971. Le rapport mesuré des pentes est ≈ 0,9372, contre 0,93744 prédit ; l’écart relatif est < 0,04 %. La correction de niveau noir intervient ensuite dans EIP, une seule fois.

R² : 0,99587–0,99988Coefficient de détermination des régressions par canal.
Résidus faiblesRMSE d’environ 0,5 à 1,0 niveau 8 bits selon le canal ; les deux dématriçages diffèrent.
Carte de la différence ISP/EIP amplifiée huit fois.
Différence ISP moins EIP amplifiée huit fois. La carte reste proche d’un gris uniforme ; les faibles structures résiduelles proviennent surtout des algorithmes de reconstruction couleur différents.

Ce que cela change réellement sur Pi 4 et Pi 3

« Matériel plus rapide » n’est pas une règle universelle. Le bénéfice dépend du mode, de la résolution, du capteur et de l’étape qui constitue le goulot d’étranglement.

Pi 4 + IMX477 · 4056 × 3040

Logiciel11,20 IPSCPU 232,6 % · 55,7 ms
ISP11,24 IPSCPU 93,4 % · 40,2 ms

Cadence presque identique ; CPU et latence nettement réduits.

Pi 3 + OV5647 · 2592 × 1944

Logiciel12,80 IPSCPU 299,0 % · 72,8 ms
ISP14,92 IPSCPU 113,7 % · 42,2 ms

Cadence supérieure, CPU fortement réduit et latence plus faible.

La cadence est exprimée en images par seconde (IPS). La charge du processeur central (CPU) mesure l’effort demandé au processeur ; elle peut dépasser 100 % lorsque plusieurs cœurs sont utilisés. Le temps en millisecondes correspond à la latence. Ces valeurs décrivent les machines et réglages du banc, pas une performance universelle de tous les Raspberry Pi.

Ces mesures comparent les deux chemins sur chaque machine, pas le Pi 3 au Pi 4 : les capteurs et les modes diffèrent.

Sur l’IMX477 en pleine résolution, la cadence est limitée par la caméra mais l’ISP libère beaucoup de temps processeur. Sur l’OV5647 du Pi 3, il réduit aussi la latence et augmente la cadence livrée. Dans certains modes regroupés de l’IMX477, le gain est beaucoup plus faible : le chemin logiciel y était déjà efficace.

Ce que l’ISP n’a pas le droit de toucher

L’ISP peut aider

  • dématriçage de prévisualisation ;
  • production du RGB8 ;
  • soulagement du processeur principal.

EIP garde la main

  • RAW et enregistrement ;
  • transport et caractérisation ;
  • rendu scientifique et choix du chemin ;
  • régions d’intérêt, empilement et modes de repli lorsqu’ils nécessitent le logiciel.

Si le profil ISP est absent ou incompatible, le repli vers le logiciel est explicite. Les modes logiciel et ISP restent sélectionnables pour comparer les résultats. Certains modes regroupés de l’IMX477 étaient déjà efficaces côté logiciel ; l’ISP n’est donc pas systématiquement plus avantageux.

Ce que cette expérience établit — et ce qu’elle ne démontre pas

Ce que l’étude établit

  • dans la condition appairée testée sur IMX477, l’ISP neutralisé produit un RGB8 radiométriquement cohérent avec le développement EIP ;
  • la pente passe de 1,0662 à 0,9993 lorsque le noir ISP est neutralisé ;
  • les résidus sont faibles et aucun lissage ou renforcement mesurable n’apparaît dans les contrôles effectués ;
  • l’ISP réduit nettement la charge CPU et la latence dans les configurations mises en avant ;
  • le RAW scientifique reste inchangé et hors du chemin ISP.

Pas démontré

  • une équivalence pixel à pixel parfaite ;
  • le même gain dans tous les modes ;
  • une validation radiométrique appairée équivalente pour l’OV5647 ;
  • que le RGB8 produit par l’ISP puisse remplacer le RAW pour les usages scientifiques ;
  • des performances universelles sur tous les Raspberry Pi.

Pour continuer

Autre niveau de lecture

Intégration mesurée de l’ISP Raspberry Pi dans EIP — version scientifique · Protocole appairé, contrôles et tableaux détaillés.