DEPARTEMENT INDUSTRIELE WETENSCHAPPEN EN TECHNOLOGIE (IWT)
Ref. E00/EL0/04
BEELDVERWERKING VAN INFRAROOD BEELDOPNEMERS MET BEHULP VAN EEN DSP
Korte samenvatting van het eindwerk van 1. Wesley Daemen 2. Davy Wolfs Promotoren : 1. dr. ir. Chris Van Hoof (IMEC) 2. dr. ir. Jan Genoe (KHLim)
KHLim, dept. IWT Universitaire Campus Gebouw B, bus 3 3590 Diepenbeek Diepenbeek, 2000
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
1. Inleiding In het interuniversitair micro-elektronica centrum (IMEC) wordt intensief onderzoekwerk verricht naar infrarood beeldopnemers waarvan het golflengtebereik niet beperkt is tot het nabije infrarood, maar reikt tot zelfs het verre infrarood. Hiervoor wordt een beroep gedaan op InAsSb technologieën en op bolometer technologieën. Recente ontwikkelingen, zowel op het gebied van de integratie met silicium als de verbetering van de materiaalkwaliteit en de gevoeligheid van de detectoren hebben het mogelijk gemaakt om deze detectoren voor het verre infrarood te integreren in beeldopnemers op Silicium. Er biedt zich een brede waaier van nieuwe toepassingen aan voor deze beeldopnemers, gaande van de opname van warmtebeelden met een hoge gevoeligheid tot real-time plastic karakterisatie door infrarood spectroscopie in de afvalrecyclage industrie. Toch zijn deze beeldopnemers nog niet van de uniformiteit die we bij Silicium CCDs terugvinden. Zo is er een zekere gradiënt in de gevoeligheid over de detector, af en toe ontbreekt er een pixel in de beeldopnemer (missing pixel), enz ... Ook is het bekomen signaal niet altijd recht evenredig met de intensiteit van het invallende infrarood licht. Dit alles kan echter bepaald worden tijdens een calibratiefase na de productie en de bekomen beelden kunnen dan achteraf gecorrigeerd worden met deze calibratie gegevens. Door deze beeldcorrectie achteraf uit te voeren wordt echter veel tijd verloren. De voornaamste doelstelling van dit eindwerk was dan ook deze infrarood beelden in real-time te corrigeren aan de hand van een DSP. Verschillende signaalverwerkingsalgoritmes dienden geïmplementeerd te worden op een krachtig DSP ontwikkelplatform. De beeldopnemer IC diende ook met de juiste signalen aangestuurd te worden en de bewerkte beelden dienden dan verder doorgestuurd te worden naar een PC. We kunnen de realisaties van dit eindwerk dan ook opdelen in de volgende blokken. Vooreerst is er de FPGA die zorgt dat de beeldopnemer de juiste stuursignalen ontvangt, zodat het beeld efficiënt kan worden uitgelezen. Vervolgens is er de DSP die deze beelden verwerkt en corrigeert, en tenslotte worden ze doorgestuurd via het TCP-IP protocol naar een PC, waar ze (aan de hand van een zelf ontwikkelde user interface) op het scherm getoond kunnen worden. We bespreken de verschillende blokken hieronder dan ook in deze volgorde.
W. Daemen en D. Wolfs
- 2/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
Figuur 1:
De proefopstelling van het eindwerk: Linksboven het DSP platform met ingebouwde AD convertor, rechtsboven de infrarood beeldopnemer en vooraan de FPGA waarmee de verschillende controle signalen gegenereerd worden. De PC die de beelden via het TCP-IP protocol ontvangt, staat niet op deze foto: deze kan eender waar opgesteld zijn.
2. Stuursignalen voor de Infrarood beeldopnemer De taak van deze FPGA bestaat er in de eerste plaats in de nodige stuursignalen te genereren voor de infrarood beeldopnemer zodat het beeld op de meest efficiënte wijze kan uitgelezen worden. Bovendien is er ook een communicatieblok voor communicatie naar de DSP en de ADC aan toegevoegd. Hierdoor kunnen parameters, zoals windowing borders, integratietijd, enz ..., van de DSP naar de FPGA doorgegeven worden. Het startsignaal voor een beeld wordt van de DSP doorgegeven aan de FPGA en de FPGA geeft een “frame_done” terug als er een volledig beeld is uitgelezen. De klok en de trigger signalen worden van de FPGA doorgegeven aan de ADC, zodat het duidelijk is wanneer er een conversie dient uitgevoerd te worden. Tenslotte is er ook nog een monitoring functie in deze FPGA voorzien zodat de gebruikte parameters kunnen getoond worden op een display. De VHDL code die hiervoor in dit eindwerk geschreven werd, laat een vlotte aanpassing toe naar nieuwe detectoren, daar in IMEC constant gewerkt wordt om de grootte van de detectoren te doen toenemen. Een simulatie van het bekomen resultaat wordt getoond in figuur 2.
W. Daemen en D. Wolfs
- 3/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
Figuur 2:
Signalen die de FPGA doorstuurt naar de beeldopnemer om een beeld te kunnen uitlezen.
3. Verwerking en bewerking van de opgenomen beelden aan de hand van een DSP Voor de beeldverwerking is er gekozen voor een filterstructuur, dit wil zeggen dat alle delen van de verwerking/filtering uitgevoerd zijn als een functie, met steeds dezelfde parameters, namelijk input data, output data en filter specifieke referentie data. Al de filters zijn dan in serie geschakeld, waarbij de outputblok de inputblok van de volgende filter vormt. Iedere filter verwerkt telkens een volledig beeld, waarna het verwerkte/bewerkt beeld door wordt gegeven aan de volgende filter. Op deze manier vormt de cascadeschakeling van al de filters dan de volledige verwerkingsblok. Er is voor deze vorm gekozen om 2 belangrijke voordelen: • Deze vorm van opbouw maakt het debuggen van een filter zeer eenvoudig, aangezien alle filters volledig van elkaar gescheiden zijn en dus geen invloed op elkaar kunnen hebben. Het gebruik van filters maakt het ook mogelijk om de code eerst op een PC te testen en vervolgens quasi ongewijzigd voor de DSP te gebruiken, wat niet mogelijk is voor bijvoorbeeld een streaming filter, die werkt op een stroom van data en niet op een volledig beeld in één keer • Het tweede grote voordeel is de uitbreidbaarheid: het is zeer eenvoudig om filters toe te voegen of weg te laten uit de filterketen, het enige dat er dan gewijzigd moet worden in de broncode is het weglaten van de oproep naar het betreffende filter en het controleren en eventueel corrigeren van de parameters van de volgende filters om er zorg voor te dragen dat de koppeling output filter n is input filter n+1 behouden blijft. Een nadeel van deze manier van werken is echter de snelheid: als de filters in mekaar geïntegreerd zouden worden en/of streaming (de ingangsdata wordt direct verwerkt; pixel per pixel, zonder eerst volledig in het geheugen opgeslagen te worden) zou toegepast worden zou er een belangrijke snelheids- en geheugenwinst kunnen zijn. Maar aangezien wij een testopstelling ontworpen hebben en naar ons inzien daar flexibiliteit en eenvoudige debugbaarheid belangrijker zijn dan snelheid hebben we toch voor de cascadeschakeling gekozen.
W. Daemen en D. Wolfs
- 4/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
De volgende 6 filters werden geïmplementeerd in dit eindwerk:
1. Capture filter Deze filter staat in voor het aanroepen van de nodige functies in de DSP-FPGA communicatie module en de ADC aansturing om een beeld, een set offset referenties of een set versterkingsfactoren voor de offset of amplificatie compensatie filters binnen te halen.
2. Offset compensatie Deze filter dient om de offset, veroorzaakt door de donkerstroom in de sensoren, die de pixels hebben, en die per pixel verschilt, weg te werken en om de integer pixelwaarden om te vormen naar een floating point waarde. Het wegwerken van de offset gebeurt door het verschil te maken tussen de offset referentie en de gemeten pixel waarden. Het opnemen van de referentie waarden dient te gebeuren door de sensor af te dekken, zodat er geen invallende straling binnen het werkingsgebied van de sensor meer is en enkel de donkerstroom gemeten wordt.
3. Amplification compensatie De amplificatie compensatie is nodig om de per pixel verschillende responsiviteit weg te werken in een beeld waarvan de offset al weggewerkt is en de pixelwaarde naar een genormaliseerde floating point waarde tussen 0 en 1 te brengen. De voorgaande 3 filters (capture, offset en amplification) zijn altijd nodig, aangezien het deze filters zijn die voor een gestandaardiseerd beeld zorgen, zodat er in de volgende filters geen rekening meer gehouden moet worden met minima of maxima of verschillen tussen de onderlinge pixels.
4. Interpolatie filter Daar de individuele sensoren zich niet lineair gedragen of omdat men een reponsiecurve wenst die niet overeenkomt met die van de sensor; bijvoorbeeld om kleine verschillen beter zichtbaar te maken is deze filter nodig. Deze filter gaat de pixelwaarde uit de voorgaande filters, een waarde tussen 0 en 1 omvormen via een interpolatiecurve naar een andere waarde tussen 0 en 1. De interpolatie zelf is een eerste orde interpolatie tussen de 2 dichts bij de oorspronkelijke waarde gelegen punten. De keuze voor een 1ste orde interpolatie is ingegeven door het zoeken naar een zo hoog mogelijke snelheid bij een bepaald resultaat. Uit onze simulaties bleek dat het verschil in nauwkeurigheid tussen 1ste, 2de en 3de orde interpolatie zo klein was, of zelfs negatief uitviel voor hogere orde interpolaties dat het niet de moeite was om deze te implementeren in de DSP. Ook het ontbreken van problemen met overshoot bij een 1ste orde interpolatie heeft geleid tot deze keuze: bij een 1ste orde interpolatie van 0 tot 1 naar 0 tot 1 ligt het resultaat gegarandeerd tussen 0 en 1, wat bij een hogere orde interpolatie niet meer het geval is.
5. Missing pixel correctie filter W. Daemen en D. Wolfs
- 5/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
Het doel van deze filter is het wegwerken, dus voor het oog onzichtbaar maken van defecte pixels. Het voorkomen van defecte pixels in een sensor is iets wat bijna onmogelijk te vermijden is en dus moeten deze weggefilterd kunnen worden na uitlezing van de sensor. Het algoritme dat we in deze filter gebruiken is ontwikkeld op IMEC door Guy Meynants en Bart Dierickx voor implementatie op IC in analoge vorm [2]. Het principe waarop dit algoritme gebaseerd is, is het feit dat het onmogelijk is om juist 1 pixel te belichten en de omliggende pixels volstrekt niet te belichten. Dit algoritme maakt gebruik van een kernel van 5 pixels rond de te onderzoeken en/of bij te werken pixel (de te onderzoeken pixel is pixel 3). Uit deze 5 pixels berekenen we een aantal waarden: • A: de lineaire extrapolatie van de 1ste en 2de pixel naar de 3de pixel • B: de waarde van de 2de pixel, als 0de graads interpolatie naar de 3de pixel • C: de 3de pixel zelf • D: de lineaire extrapolatie van de 4de en 5de pixel naar de 3de pixel • E: de waarde van de 4e pixel, als 0de graads interpolatie naar de 3de pixel Vervolgens neemt men het maximum van A, B, D en E en hun minimum. (M en N) Dit doet men om een zo groot mogelijke zekerheid te bekomen dat men niet onterecht een pixel als slecht gaat beschouwen.
Figuur 3:
Goede pixel.
Figuur 4:
Slechte pixel.
Vervolgens neemt men de mediaan van C, M en N en dit is de nieuwe pixelwaarde. De pixel wordt met andere woorden als niet defect beschouwd als hij tussen M en N ligt.
6. Shadow removal filter Deze filter vangt een probleem dat de ROIC sensor heeft op: door klok overspraak wordt er in het beeld een ghost schaduw gevormd die gelijk is aan het volledige beeld, maar een vast aantal lijnen verschoven is en verzwakt is ten opzichte van het werkelijke beeld. Het wegwerken van deze schaduw gebeurt door eenvoudig weg bij het beeld met schaduw het beeld op te tellen of af te trekken, na vermenigvuldiging met een versterkingsfactor of verzwakkingsfactor die gelijk is aan die van de schaduw t.o.v. het echte beeld, en een verschuiving met een gelijk aantal lijnen.
W. Daemen en D. Wolfs
- 6/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
4. Doorsturen van de beelden via het TCP-IP protocol naar een “willekeurige” PC op het ethernet netwerk Voor de communicatie tussen de PC en de DSP maken wij gebruik van het door het internet welbekend geworden TCP/IP protocol over standaard 10BaseT ethernet. Wij hebben voor deze oplossing gekozen omdat we nood hadden aan een relatief grote bandbreedte voor het doorsturen van de beelden, vooral in streaming mode, de mode waarin de opstelling automatisch zo snel mogelijk beelden in vangt, verwerkt en toont. Ook het feit dat ethernet en TCP/IP 2 belangrijke standaarden zijn en dus beschikbaar zijn op bijna alle platformen heeft meegespeeld in deze beslissing. Dit maakt het mogelijk om de interface te herwerken voor een ander platform. Ook interessant zijn de mogelijkheden op het gebied van routing en dergelijke die het TCP-IP protocol heeft. Zodra men aan de PC software het connect bevel geeft wordt er een non-blocking socket verbinding gemaakt tussen de PC en de DSP eenheid. Dit wil zeggen dat de DSP een server socket gecreëerd heeft op een bepaald poortnummer en dat de PC dan een client verbinding geopend heeft naar deze poort. Als de connectie eenmaal gemaakt is valt echter het verschil tussen client en server volledig weg en bekomen we een bi-directionele pipe waardoor we gegevens van de PC naar de DSP en omgekeerd kunnen verzenden, gebruikmakende van dezelfde functies als men zou gebruiken voor het lezen en schrijven van bestanden op schijf. Al de TCP/IP functies op het DSP bord worden vanuit het DSP programma aangeroepen maar ze worden uitgevoerd op een op het DSP bord aanwezige 486 microcontroller. De TCP/IP stack en ethernet device drivers draaien op deze microcontroller omdat een DSP niet echt geschikt is voor dit soort van bewerkingen en dus veel te veel tijd zou spenderen aan de communicatie. Het protocol dat we gebruiken over de socket verbinding tussen DSP en PC is in dit eindwerk specifiek ontwikkeld voor deze toepassing, met als belangrijkste eigenschap de makkelijke uitbreidbaarheid. Een lijst van de hiervoor uitgewerkte commando’s volgt op de volgende pagina.
W. Daemen en D. Wolfs
- 7/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
Commando naam NOP GET SET MAKE CAPTURE PROCESS CAPTURE_PROCESS CAPTURE_PROCESS_GET SET_PROCESS SET_PROCESS_GET PROCESS_GET STREAM SET_INTEGRA-TIONTIME GET_INTEGRATIONTIME SET_INTER-POLATION SET_SHADOW-OFFSET SET_SHADOW-ATTN SET_WINDOW_X SET_WINDOW_Y SET_WINDOW_W SET_WINDOW_H SET_SYNC
SET_DUMMY
SET_TPIXEL SET_TSIGCOND
Tabel 1:
Parameter Beeldtype Beeldtype Beeldtype Beeldtype Beeldtype Beeldtype Beeldtype Beeldtype Beeldtype Beeldtype Status
Data
Beeld
Beeld Beeld
Integratietijd (in ns) Data Offset in lijnen Versterking / verzwakking X coördinaat Y coördinaat Breedte Hoogte 2 16 bit woorden: MSW: lijnen LSW: pixels 2 16 bit woorden: MSW: lijnen LSW: pixels Pixel tijd (in ns) Signaal conditioneringstijd (in ns)
Omschrijving Geen bewerking Vraag een beeld op van het type in de parameter Stuur een beeld uit van het type in de parameter Vang een beeld in van het type in de parameter Vang een beeld in van het type in de parameter Verwerk het beeld in het geheugen van het type in de parameter Vang en verwerk een beeld Vang een beeld, verwerk het en stuur het uit Verwerk het meegestuurde beeld Verwerk het meegestuurde beeld en stuur het terug uit Verwerk het beeld in het geheugen en stuur het uit Automatisch beelden invangen, verwerken en uitsturen als de parameter niet 0 is Stel de integratietijd in Vraag de integratietijd op Stel de interpolatie curve in Stel de offset voor de schaduwverwijderingsfilter in Stel de verzwakking voor de schaduwverwijderingsfilter in Stel de X coördinaat voor de windowing in Stel de Y coördinaat voor de windowing in Stel de breedte coördinaat voor de windowing in Stel de hoogte coördinaat voor de windowing in Stel het aantal synchronisatie pulsen in
Stel het aantal dummy pixels in
Stel de pixeltijd in Stel de signaalconditioneringstijd in
Lijst met de voor de TCP-IP communicatie tussen het DSP platform en de PC opgestelde commando’s.
5. Binnenhalen van de beelden op een PC op het ethernet netwerk. Er is ook een User interface geschreven die toelaat van op een PC via het TCP-IP protocol de beelden van de infrarooddetector binnen te halen. Het programma is geschreven in C++, gebruikmakende van de VCL (visual component library) bibliotheken van Borland. De figuren 5 tot 7 geven een goed beeld van hoe dit programma werkt.
W. Daemen en D. Wolfs
- 8/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
Figuur 5:
De connectie met het DSP platform kan gemaakt worden door de keuze van zijn IP adres.
Figuur 6: Het beeldacquisitie scherm.
W. Daemen en D. Wolfs
- 9/10 -
Beeldverwerking van infrarood beeldopnemers met behulp van een DSP
Figuur 7:
Instelling van de interpolatie
6. Besluit Er werd in dit eindwerk een real-time beeldverwerkingsplatform ontwikkeld voor het uitlezen van infrarood beeldopnemers. Hiervoor werden 4 bouwblokken uitgewerkt, namelijk • Een FPGA voor de stuursignalen van de Beeldopnemer (VHDL-code) • Een DSP-platform waarop de verschillende filters geïmplementeerd werden (C-code) • Een communicatie protocol tussen het DSP platform en een PC dat gebruik maakt van het TCP-IP protocol • Een user interface die draait op eender welke PC in het netwerk. Al deze bouwblokken werken zonder probleem. Het gehele systeem vertoont echter nog 2 problemen: er is cross-talk aanwezig op de verbindingen tussen de DSP en de FPGA (ten gevolge van de eenvoudige câblage) en de uitlezing van de AD convertor geeft niet de correcte waardes (een probleem in de AD convertor). Deze problemen kunnen snel opgelost worden. Hierdoor is er een real-time beeldverwerkingsplatform ontwikkeld dat voor de detector groep in IMEC in de toekomst verder zal kunnen gebruikt worden in een hele brede range van toepassingsgebieden. Referenties: [1] W. Daemen en D. Wolfs, “Beeldverwerking van Infrarood Beeldopnemers met behulp van een DSP”, eindwerk KHLim, Diepenbeek, Juni 2000. [2] G. Meynants en B. Dierickx, “A circuit for the Correction of Pixel Defects in Image Sensors”, Interne publicatie IMEC, Leuven, 1998 W. Daemen en D. Wolfs
- 10/10 -