4.12. De ISP-pijplijn

De image signal processor (ISP) is de hardwarepijplijn die de ruwe pixelwaarden van de sensor omzet in een voltooide kleurenafbeelding. De pixelcorrecties op de sensor vormen de eerste fasen van die pijplijn. Nadat die zijn uitgevoerd, doet de rest van de pijplijn de kleurverwerking en uitvoeropmaak in een vaste volgorde op elk frame.

Een verticaal pijplijndiagram met acht gelabelde vakken, van boven naar beneden: statistiekextractie, automatische witbalans, debayering, kleurmatrix- correctie, gammacorrectie, beeldschaling, beeldbijsnijding en pixelverpakking. Een pijl aan de bovenkant is gelabeld "gecorrigeerde Bayer-pixels" en een pijl aan de onderkant is gelabeld "voltooid frame".

De kleurverwerkings- en uitvoerfasen van de ISP. De pijplijn voert elke fase uit over elke pixel in het frame voordat de volgende begint.

4.12.1. De fasen

Elke fase past op zijn beurt één goed gedefinieerde transformatie toe. De volgorde is van belang – latere fasen gaan ervan uit dat eerdere al zijn uitgevoerd, en een paar fasen nemen ook invoer uit de uitvoer van het vorige frame.

  1. Statistiekextractie meet de gemiddelde helderheid per gebied en de sommen per kanaal uit het gecorrigeerde Bayer-frame. De cijfers voeden de regellussen voor automatische belichting, automatische versterking en automatische witbalans, die vervolgens de instellingen van de sensor bijwerken voor het volgende frame.

  2. Automatische witbalansversterkingen schalen elke Bayer-pixel met een vermenigvuldiger per kleur – rode pixels met een R-versterking, groene pixels met een G-versterking, blauwe pixels met een B-versterking – waardoor de witreferentie van de scène naar neutraal grijs wordt geduwd, zodat de geregistreerde kleuren eruitzien zoals het oog ze zag. De vermenigvuldigers komen uit de AWB-statistieken van het vorige frame.

  3. Debayering reconstrueert de twee ontbrekende kleurkanalen op elke pixel uit het Bayer-mozaïek, waarbij ruwe gegevens met één kanaal per pixel worden omgezet in RGB met drie kanalen. (Zie Debayering.) Alles na deze fase werkt op RGB-pixels in plaats van op het Bayer-mozaïek.

  4. Kleurmatrixcorrectie (CCM) past een 3x3-matrixvermenigvuldiging toe op elke RGB-pixel die de eigen rood-groen-blauw-respons van de sensor afbeeldt op een standaardkleurruimte. De filters van elke sensor hebben hun eigen spectrale respons, die niet precies is wat een standaard verwacht; de matrix is een per sensor gekalibreerde transformatie die “sensor-RGB” omzet in “standaard-RGB”.

  5. Gammacorrectie past een niet-lineaire curve toe op elk kanaal die het lineaire sensorsignaal comprimeert tot een op perceptie afgestemde codering. Het oog merkt verschillen tussen donkere tonen sterker op dan verschillen tussen heldere tonen, dus een codering die meer van zijn bitbudget besteedt aan het donkere uiteinde legt meer zichtbaar detail vast bij een gegeven bitdiepte.

  6. Beeldschaling verandert de grootte van het frame van de eigen resolutie van de sensor naar de doeluitvoerresolutie. De meeste toepassingen draaien op minder dan het volledige aantal pixels van de sensor, en het verkleinen vermindert zowel de bandbreedte als de geheugendruk op alles wat volgt.

  7. Beeldbijsnijding extraheert een subrechthoek van het geschaalde frame en verwijdert de pixels daarbuiten. Wordt gebruikt om een aandachtsgebied vast te leggen, een specifieke beeldverhouding te matchen, of een rand weg te laten die de toepassing niet nodig heeft.

  8. Pixelverpakking zet de interne representatie per kanaal (doorgaans 10 of 12 bits per kanaal) om in het gekozen uitvoerformaat en schrijft het resultaat naar RAM.

4.12.2. De feedback van de regellus

Fasen 1 en 2 vormen een regellus die meerdere frames omspant. De statistieken die uit frame N worden geëxtraheerd vertellen de sensor hoe helder de scène was en hoe de kleurbalans dat frame stond; de regelaars voor automatische belichting, automatische versterking en automatische witbalans gebruiken die cijfers om nieuwe registerwaarden voor belichting, versterking en witbalans te kiezen voor frame N+1. De nieuwe waarden worden van kracht bij het uitlezen van het volgende frame, de statistieken van het nieuwe frame komen terug, en de lus sluit.

Voor een scène die niet verandert, convergeert de lus binnen een paar frames en blijft op een constante instelling staan. Voor een scène waarvan de helderheid of kleurzweem verandert – bijvoorbeeld de camera die van binnen naar een door de zon beschenen raam pant – volgt de lus de verandering over meerdere frames, en ziet de gebruiker een korte helderheids- of kleurdrift op weg naar de nieuwe stabiele toestand.

4.12.3. Waar de ISP wordt uitgevoerd

Twee opstellingen komen veel voor.

  • Een ISP op de sensor voert de hele pijplijn binnen de sensorchip uit en levert een voltooide RGB-afbeelding. De MCU verzamelt alleen het resultaat.

  • Een ISP buiten de sensor bevindt zich in de host-MCU of SoC. De sensor levert ruwe Bayer; het silicium van de MCU (of de driver-code) voert de pijplijn uit voordat het voltooide frame aan gebruikerscode wordt overhandigd.

De splitsing beïnvloedt welke uitvoerformaten de sensor de gebruiker rechtstreeks kan aanleveren. Een sensor met een volledige ISP op de chip laat de gebruiker kiezen uit elk voltooid formaat dat de chip ondersteunt. Een sensor zonder zo’n ISP levert alleen Bayer, en de formaatconversies vinden plaats in MCU-silicium of software.