Digitale techniek/Elektronica: real-time contrastverbetering (1995 – 2000)
Real-time contrastverbetering (1995 – 2000)
Rond het millennium werkte TNO-FEL aan real-time contrastverbetering met behulp van bestaande en nieuwe algoritmen. De ontwerpen worden gebruikt in zowel militaire toepassingen als op het gebied van veiligheid en beveiliging. Een verbeterde versie van de contrastverbeteringstechniek beschreven in [1] is geïmplementeerd in de Real Time Video Processor (RTVP). Dit systeem implementeert ook het uitrekken van het grijsgebied van een interessegebied. De RTVP werd succesvol gedemonstreerd in verschillende operationele situaties onder meer op het gebied van beveiliging, bewaking en gevechtstanks. Een implementatie van het grijsschaalrekalgoritme werd ook gerealiseerd in een ASIC (VISTA01) in 0,7 mm CMOS-technologie. De (MOVE) microprocessorarchitectuur werd toegepast om de voordelen van speciale hardware te combineren met de flexibiliteit van programmeerbare verwerking op een enkele ASIC.
Het verbreden van de grijsschaal is niet erg effectief wanneer het videosignaal al een hoog intrinsiek contrast heeft. Als bijvoorbeeld een donker bosgebied gescand wordt, kan de lucht erboven relatief helder zijn. De amplitude van het videosignaal beslaat dus al het hele bereik van “zwart” tot “wit”. Nieuwe, geavanceerdere contrastverbeteringsalgoritmen die op lokale basis grijstinten uitrekken zijn voor deze situaties ontwikkeld [2]. Een prototypekaart met dit geavanceerde algoritme voor contrastverbetering, de LACE-processor (Local Adaptive Contrast Enhancement) genaamd is door TNO-FEL in het eerste kwartaal van 2000 opgeleverd. De LACE-processor is bedoeld voor real-time verbetering van het videocontrast. De belangrijkste toepassingsgebieden zijn bewaking (beveiliging), verkenning en andere toepassingen waarbij beelden worden vastgelegd zonder controle van de lichtomstandigheden. De processor is niet bedoeld voor openbare televisietoepassingen. Het doel van ‘contrastverbetering’ is om in deze context een ‘verbeterd’ beeld Y te maken van een originele afbeelding X, zodanig dat een menselijke waarnemer beter in staat is om details in het beeld te herkennen. Merk op dat dit verschilt van het proberen om een meer ‘natuurlijk ogende’ of ‘aangename’ afbeelding te maken. Het beeld wordt verondersteld afkomstig te zijn van een natuurlijke scène (dus opgenomen met een camera zonder controle van de lichtomstandigheden), in plaats van een synthetisch of studio-opgenomen beeld te zijn. De afbeeldingen kunnen zichtbaar licht zijn of infraroodbeelden.
De belangrijkste reden waarom originele afbeeldingen onvoldoende contrast kunnen bevatten is vanwege een verkeerde combinatie van het dynamische bereik van het ‘echte wereld’-beeld en het dynamische bereik van de waarnemer (en/of het gebruikte beeldscherm). Het dynamische bereik van de afbeelding kan te groot of te klein zijn voor de waarnemer, bijvoorbeeld tijdens mist of zware regen overdag lijkt het hele beeld grijs. Het menselijk oog kan de subtiele luminantieverschillen op verre objecten niet onderscheiden, hoewel het gemiddelde luminantieniveau van de scène voldoende is voor nauwkeurige observatie. Dit is een situatie waarin het dynamische bereik van de afbeelding moet worden uitgebreid om overeen te stemmen met het menselijk oog. De laagste helderheidsniveaus in de afbeelding moeten meer ‘donker’ worden, de hoogste niveaus meer ‘helder’.
Anderom kan op een zonnige dag de helderheidswaarde van heldere objecten te hoog zijn voor het menselijk oog. Een weergaveapparaat kan deze hoge intensiteiten hoe dan ook niet reproduceren. Dit is een situatie waarin het dynamische bereik van de afbeelding moet worden gecomprimeerd om te passen bij het oog (of het weergaveapparaat).
Het aanpassen van het dynamisch bereik kan worden gedaan door de versterking en offset (contrast en helderheid) van de camera op elkaar af te stemmen. In het eerste geval moet een camera met voldoende versterking worden gebruikt. In het tweede geval moet de versterking van de camera worden verlaagd (misschien door ook een optisch filter aan te brengen). Als de camera (inclusief de digitaliser) voldoende dynamisch bereik heeft op de digitale uitgang kan deze afstemming van de versterking en offset ook in het digitale domein worden gedaan. Dit wordt ‘global contrast stretching’ of ‘histogram stretching’ genoemd en wordt geïmplementeerd in de RTVP en de VISTA01-chip.
Hoewel het afstemmen van de versterking en offset in veel situaties voldoende kan zijn, levert dit in bepaalde gevallen onbevredigende resultaten op, zoals:
- Tijdens mist in de schemering of in de vroege ochtend, verlicht een helder licht een klein deel van de interessante scène. Bij het afstemmen van de versterking en offset op dit heldere gedeelte, wordt de rest van de scène zwart.
- Omgekeerd, bij het afstemmen op het donkere gedeelte van de scène, zal het heldere gedeelte naar het maximale witniveau van het weergaveapparaat knippen. Een vergelijkbare situatie bestaat voor een vuur met veel rook.
- Op een zonnige dag zijn sommige interessante objecten in het felle zonlicht, andere zijn ‘verborgen’ in kleine stukjes schaduw. Bij het afstemmen van de versterking en offset, bestaat hetzelfde probleem als bij de mist.
Het probleem in deze twee voorbeelden is hetzelfde: om de heldere en de donkere delen van de scène tegelijkertijd te bekijken is een relatief lage versterkingswaarde nodig, zodat u de details niet in zowel de heldere als de donkere delen kunt zien. Om het contrast in de heldere / donkere delen van de scène te zien, hebt u meer versterking nodig, maar u moet het gemiddelde helderheidsniveau naar beneden / omhoog verplaatsen, waardoor de donkere / lichtere delen van de scène worden ‘zwartgemaakt’ / geknipt. Merk op dat handmatige tussenkomst nodig is om te beslissen welk deel van de afbeelding interessant is (het hele, het donkere of het heldere gedeelte).
De bovenstaande problemen verklaren de behoefte aan algoritmen voor contrastverbetering die geavanceerder zijn dan alleen het afstemmen van de versterking en offset (contrast en helderheid). Een dergelijk algoritme is geïmplementeerd in de LACE-processor (Local Adaptive Contrast Enhancement). Met LACE worden versterkings- en offsetwaarden voor elke pixel afzonderlijk berekend. Deze waarden zijn gebaseerd op de statistieken van de omringende pixels waarbij pixels in de buurt meer invloed hebben dan pixels verder weg. Om dit in real-time te doen voor beelden van 720 * 576 bij 25 Hz (of 720 * 288 bij 50 Hz) is een enorme hoeveelheid verwerking vereist. Daarom implementeerde TNO-FEL LACE dit algoritme in hardware. Een prototype werd begin 2000 geproduceerd.
Sommige resultaten van de LACE-verwerking op extreem slechte beelden worden hieronder weergegeven. De eerste vier foto’s werden gemaakt met een gewone CCD-camera en een acht-bit framegrabber. Omdat 8-bits niet genoeg is voor dit soort afbeeldingen (de LACE-hardware gebruikt 12 bit), laten sommige resultaten kwantisatie-effecten zien. Om het beeldverbeterend effect op 12-bits afbeeldingen te demonstreren, is een synthetische vijfde afbeelding toegevoegd. Merk op dat dit een enkele afbeelding is die vier keer dezelfde boot toont onder verschillende lichtomstandigheden. Merk ook op dat alleen de eerste afbeelding baat zou kunnen hebben bij (globale) contraststrekking. Alle andere afbeeldingen bevatten zowel “zwarte” als “witte” gebieden. Lokale adaptieve verwerking is daarom de enige manier om een aanzienlijke contrastverbetering over het hele beeld te realiseren.
Het Full Block Matching Algorithm (FBMA) is een algoritme met brute kracht voor het bepalen van bewegingsvectoren voor pixelblokken. Het wordt gebruikt in de Block Motion Estimator (BME), ontwikkeld door TNO-FEL. De basisbewerking is de volgende:
- Een afbeelding X is verdeeld in een rechthoekig raster van blokken van bijvoorbeeld 8 * 8 pixels. Voor elk van deze blokken wordt in de volgende afbeelding (Y) gezocht naar een overeenkomstig pixelblok, wat resulteert in een bewegingsvector voor elk blok.
- De bewegingsvector voor een bepaald blok in afbeelding X wordt bepaald door eerst alle pixels van dat blok te vergelijken met alle pixels in dezelfde positie in afbeelding Y, en een foutmaat te berekenen die de “hoeveelheid verschil” aangeeft. Dit kan de RMS (Root Mean Square) van het verschil zijn, of de MAD (Mean Absolute Difference). Deze foutmaat komt overeen met de 0,0 bewegingsvector (geen verplaatsing).
- Vervolgens wordt hetzelfde blok van pixels van X vergeleken met de pixels in Y verschoven met één pixel naar rechts. Dit resulteert in een foutmaat voor de bewegingsvector van 0,1 (een horizontale verplaatsing van één pixel). Dit proces wordt herhaald voor alle vectoren in het zoekbereik. Het zoekbereik kan bijvoorbeeld van -8 tot +7 pixels horizontaal en dezelfde verticaal zijn, wat een totaal van 16 * 16 = 256 vectoren oplevert.
- Van al deze vectoren wordt degene met de laagste foutmaat geselecteerd als de best passende bewegingsvector. Raadpleeg de onderstaande figuur.
De figuur toont een blok van pixels in afbeeldingen X en Y en een 3D-grafiek van de foutmaat als een functie van de verschillende vectoren “vn” en “vm” in het zoekbereik. De 3D-grafiek komt overeen met het geval waarin een 0,0-vector overeenkomt met de beste overeenkomst (kleinste fout). De hier getoonde foutmaat is de SAD (Summed Absolute Difference). Het proces voor één blok, zoals zojuist beschreven, wordt herhaald voor alle blokken in de afbeelding. Dit vereist veel berekeningen, dus real-time werking vereist het gebruik van speciale hardware, zoals de Block Motion Estimator (BME). De BME voert het Full Block Matching Algorithm (FBMA) uit op een real-time video-invoerstroom. Het is bedoeld als een eerste verwerkingsstap in bewegingsdetectiesystemen voor bewakingssystemen en andere systemen voor de detectie van bewegende objecten. Het kan ook worden gebruikt voor andere beeldverwerkingstoepassingen, zoals bewegingsgecompenseerde beperking van temporele ruis.
Naast het berekenen van de bewegingsvectoren voor blokken van pixels berekent de BME ook een zogenaamd “betrouwbaarheidsniveau” voor elk blok. Het betrouwbaarheidsniveau geeft aan hoeveel de aanpassingsfout van de bewegingsvector verschilt van de gemiddelde overeenkomende fout van alle vectoren voor een bepaald blok. Een hoog betrouwbaarheidsniveau geeft dus aan dat de geselecteerde bewegingsvector een veel betere overeenkomst oplevert dan de andere vectoren in het zoekbereik. Merk op dat deze maatregel nuttiger is om echte beweging te onderscheiden van andere veranderingen in de helderheid van het beeld dan een simpele “goodness of fit” zoals de matching error (MAD of RMS) zelf zie het FBMA-algoritme). De uitvoer van de BME is een stroom van blokbewegingsvectoren en hun bijbehorende betrouwbaarheidsniveaus. Deze gegevensstroom kan voor verdere analyse naar een pc of werkstation worden geleid. Een prototype hardwareimplementatie van BME werd begin 1999 opgeleverd.
De Global Motion Estimator (GME) bepaalt de globale verplaatsing van een afbeelding ten opzichte van de voorgaande afbeelding. Het werkt op real-time video-invoer afkomstig van een niet-stationaire camera. De GME is van toepassing in combinatie met de Block Motion Estimator (BME) en voor bewegingscompensatie. In het eerste geval kan het de BME informeren over de globale verplaatsing van het beeld, waardoor het BME de blokbewegingsvectoren ten opzichte van de globale vector kan bepalen. In het tweede geval wordt de globale vector van de GME gebruikt om de ongewenste of onregelmatige beeldverplaatsingen van de niet-stationaire camera (bijvoorbeeld door trilling van de camera) te elimineren of glad te strijken. De GME gebruikt een algoritme dat lijkt op het Full Block Matching Algorithm (FBMA) met slechts één blok: het hele beeld. De hoeveelheid verwerking die hiervoor nodig is, is sterk verminderd door een aantal wijzigingen zonder daarbij de kwaliteit van het resultaat aan te tasten (in veel gevallen wordt het resultaat zelfs verbeterd). Naast het berekenen van de globale bewegingsvector berekent de GME ook een betrouwbaarheidsniveau, vergelijkbaar met de betrouwbaarheidsniveaus van de BME. De uitvoer van de GME is een enkele vector plus betrouwbaarheidsniveau per frame. De hardware-implementatie van de GME werd medio 1999 gedemonstreerd.
Voorafgaande aan deze ontwikkelingen, werd in 1995 startte TNO-FEL een studie naar de niet-uniformiteitscorrectie van warmtebeeldcamera’s in het bijzonder imagers gebaseerd op tweedimensionale focal-plane-array-detectoren. De bestudeerde methode wordt Scene-based thermal referencing (SBTR) genoemd omdat deze de scène-informatie gebruikt en geen kalibratie-apparatuur zoals uniforme referentieplaten nodig heeft. Er is een algoritme ontwikkeld dat een uitstekende correctie geeft van de niet-uniformiteit van twee interne warmtebeeldcamera’s voor de golflengteband van 3 tot 5 μm. Op basis van deze resultaten is het algoritme overgezet naar speciale hardware op basis van een PCB met FPGAs. Dit bord werd in het eerste kwartaal van 1999 succesvol gepresenteerd in twee verschillende camera-demonstrators. Eén camerasysteem bestond uit een PtSi-focusvlakarray; de andere demonstrator was gebaseerd op CMT.
Het principe van op scène gebaseerde thermische referenties (SBTR) is de compensatie van de ruis met vast patroon door een aantal frames te vergelijken die verschillende posities hebben ten opzichte van de scène. Door opeenvolgende afbeeldingen te vergelijken, kunnen de niet-uniformiteit en de scène worden onderscheiden. Deze verschillende kaderposities kunnen worden veroorzaakt door een doelbewuste beweging van de camera of door per ongeluk wijzende instabiliteit, bijvoorbeeld in het geval van een handheld-camera.
Video contrast-enhancement ASIC
Moderne zwart-witte CCD-camera’s aan het einde van de jaren 90 konden maximaal 4000 grijswaarden onderscheiden. Wanneer u naar een monitor kijkt, is het menselijk oog beperkt tot ongeveer 80 grijsniveaus. Afbeeldingen zien er grijs uit en vertonen een slecht contrast in slechte weersomstandigheden zoals regen, mist of wanneer het beeld last heeft van tegenlicht. ASIC is een real-time contrastverbetering ontwikkeld door TNO-FEL om deze discrepantie tussen de CCD-camera en het menselijk oog te overwinnen. De real-time contrastverbeterende ASIC met de naam “VISTA01” verbetert het contrast van een videoframe. De verbetering kan globaal worden toegepast of worden gedefinieerd door een door de gebruiker definieerbaar interessegebied (AOI). Het contrast wordt geëvalueerd in een grijswaardenhistogram elk videoframe. Een toepassingsspecifieke MOVE-microprocessor leest het contrast uit het histogram en berekent enkele parameters voor het hogesnelheidsvideopad. Kenmerken van deze videocontrastverbeterende ASIC waren:
- PAL/NTSC video input/output
- 12 bit videopad
- 16 bit MOVE toepassingsspecifieke microprocessor
- Histogramevaluatie
- Instelbare algoritmen voor contrastverbetering
- Door de gebruiker te definiëren interessegebied
- RS232 compatible communicatiepoort
De functionaliteit van het algoritme voor contrastverbetering was volledig ingebed in een enkele ASIC. Sommige externe hardware is nodig voor het herstellen van het videosignaal. In het signaalpad zijn A/D- en D/A-omzetters gebruikt voor conversie naar het digitale domein en terug. De ASIC bestaat uit vijf functionele blokken: videosynchronisatiescheider om de tijdbasis te genereren, een Area-of-Interest-timinggenerator, een histogrambouwer, een 12-bits videopad, en een MOVE-microprocessor.
Literatuurverwijzingen
[1] “Automatic, adaptive, brightness independent contrast enhancement”, F.P.P. de Vries, Signal Processing 21 (1990) 169-182, Elsevier
[2] “Multi-Scale Adaptive Gain Control of IR Images”, K. Schutte, Infrared Technology and Applications XXIII, SPIE AeroSense, April 1997, Vol. 3061