Departement Industriële Ingenieurswetenschappen Master in de industriële wetenschappen: Elektronica-ICT afstudeerrichting Elektronica Thesis: ontwikkeling van een stereovisie systeem voor microchirurgie Masterproef voorgedragen tot het behalen van de beroepstitel van industrieel ingenieur. Academiejaar 2011-2012 Door: Jonathan Augustinus Promotor hogeschool: Toon Goedemé Promotor bedrijf: Emmanuel Vander Poorten Koen Buys ii iii iv Departement Industriële Ingenieurswetenschappen Master in de industriële wetenschappen: Elektronica-ICT afstudeerrichting Elektronica Thesis: ontwikkeling van een stereovisie systeem voor microchirurgie Masterproef voorgedragen tot het behalen van de beroepstitel van industrieel ingenieur. Academiejaar 2011-2012 Door: Jonathan Augustinus Promotor hogeschool: Toon Goedemé Promotor bedrijf: Emmanuel Vander Poorten Koen Buys vi vii School promotor: Toon Goedemé, Professor electronics and head of research cell EAVISE EAVISE: Embedded and Applied Vision Engineering - www.eavise.be, Campus DE NAYER, Lessius Mechelen, Associatie K.U.Leuven, Jan De Nayerlaan 5, Sint-Katelijne-Waver, Belgium VISICS - PSI -ESAT, K.U.Leuven, Kasteelpark Arenberg 10 - bus 2441, 3001 Heverlee, Belgium [email protected] tel: +32-15 31 69 44 - Fax: +32 15 31 74 53 Bedrijf promotoren: Professor Dominiek Reynaerts, Dept. of mechanical engineering, division PMA, K.U. Leuven Celestijnenlaan 300B, B-3001 Heverlee, Belgium [email protected] tel. +32 16 322640 of +32 16 322480 Emmanuel Benjamin Vander Poorten, Postdoctoral Researcher, Dept. of mechanical engineering, division PMA, K.U. Leuven Celestijnenlaan 300B, B-3001 Heverlee, Belgium [email protected] tel: +32/(0)16.32.25.28 Koen Buys, Doctoral Researcher, Dept. of mechanical engineering, division PMA, K.U. Leuven Celestijnenlaan 300B, B-3001 Heverlee, Belgium [email protected] tel: +32 16 32 80 59 viii Voorwoord Voor het behalen van de titel van industrieel ingenieur moest er een eindwerk gemaakt worden. Dit zou niet mogelijk geweest zijn zonder de hulp en steun van vele mensen. Eerst en vooral wil ik mijn twee promotoren, Toon Goedemé en Emmanuel Vander Poorten, bedanken voor al hun hulp. Ook dank aan Andy Gijbels voor het kalibratiebed en de hulp met de robot, Wesley Verheecke voor het printen van het kalibratieparoon en Bert Augustinus voor de medische onderbouw van deze thesis. Last but not least wil ik mijn vriendin, Jolien Gysemans, bedanken voor de mentale steun en vertrouwen. x xi Abstract Cannulatie van retinale venen is een veelbelovende oogheelkundige techniek ter behandeling van RVO (retinale veneuze occlusie), een belangrijke oorzaak van slechtziendheid op oudere leeftijd. Het aanprikken van retinale aders vergt een dermate precisie dat dit manueel niet routinematig kan worden uitgevoerd. Dit maakt deze ingreep interessant voor robotchirurgie. Vertrekkende van een klassieke opstelling van een oogheelkundige operatiemicroscoop en een reeds ontwikkelde slave robot, wordt in dit werk bekeken hoe een beeldverwerkingssysteem kan worden ontwikkeld om een dergelijke robotgesteunde interventie uit te voeren. Aanpassingen van het camerasysteem van de operatiemicroscoop worden besproken met focus op het probleem van camerakalibratie. Uitgaande van een aderdetectiesysteem wordt bekeken hoe een driedimensioneel beeld kan worden ogebouwd, hoe het traject van een chirurgische naald in het oog kan worden gevolgd en hoe de beeldverwerking de robot kan aansturen. Experimenten met een test-oog worden beschreven. xii xiii English Abstract Retinal vein cannulation is a promising technique in ophthalmic surgery for treating RVO (retinal vein occlusion), an important cause of visual loss in the elderly. Puncturing retinal veins however has to be performed with such a degree of precision that it becomes very difficult to routinely realise in a classical manual setting. This is why this type of intervention is interesting for robot surgery. Starting from a classical setting of an ophthalmic operating microscope and an already developed slave robot, this paper looks at possibilities to develop an image processing system to support such robot assisted procedures. Adjustments to the camera system of the operating microscope are discussed, focusing on the problem of camera calibration. Starting from a vein detection system, the creation of a three-dimensional image is looked at as well as how tracking of the surgical needle can be realised an how the robot can be controlled by the image processing device. Experiments with an artificial eye are being discussed. xiv Inhoudsopgave 1 2 Inleiding 1 1.1 Concrete doelstellingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Schets van een mogelijke computergesteunde interventie . . . . . . . . . . . . 3 1.3 Opbouw van deze tekst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Literatuurstudie 5 2.1 RVO: Retinale Veneuze Occlusie . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Beeldverwerkingsalgoritmes voor intra-oculaire toepassingen . . . . . . . . . . 6 2.2.1 6 Het detecteren van aders in het netvlies . . . . . . . . . . . . . . . . . 2.2.1.1 2.2.2 Detection of retinal blood vessels based on nonlineair projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1.2 On the Adaptive Detection of Blood Vessels in Retinal Images 7 2.2.1.3 Hybrid Retinal Image Registration . . . . . . . . . . . . . . 8 2.2.1.4 Retinal Vessel Centerline Extraction Using Multiscale Matched Filters, Confidence and Edge Measures . . . . . . . . . 9 2.2.1.5 De Gabor filter . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.1.6 Conclusie . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Overzicht van een aantal algemeen bruikbare beeldverwerkingstechnieken 10 2.2.2.1 CCD - contracting curve density algoritme . . . . . . . . . . 11 2.2.2.2 Kleursegmentatie . . . . . . . . . . . . . . . . . . . . . . . 11 2.2.2.3 Hough transformatie . . . . . . . . . . . . . . . . . . . . . . 12 2.2.2.4 Background Subtraction . . . . . . . . . . . . . . . . . . . . 14 2.2.2.5 Template Matching . . . . . . . . . . . . . . . . . . . . . . 14 2.3 Visual Servoing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 xvi 3 INHOUDSOPGAVE Opbouw en kalibratie van een opstelling voor stereo-microscopie 17 3.1 Visualisatie tijdens intra-oculaire interventies . . . . . . . . . . . . . . . . . . 17 3.2 Uitbouw van de Leica M690 operatiemicroscoop tot een meetsysteem voor robotsturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.1 Bestaande opstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.2 Uitgebouwde opstelling . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.3 Verschillende types van camera’s . . . . . . . . . . . . . . . . . . . . 19 3.2.4 Ontwikkeling van testbed voor kalibratie . . . . . . . . . . . . . . . . 22 3.2.5 3D printen van het patroon . . . . . . . . . . . . . . . . . . . . . . . . 23 Principes van stereovisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.1 Cameramodellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3.2 Niet-idealiteiten verantwoordelijk voor beeldvervorming/distortie . . . 25 3.3.2.1 Entrance pupil . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3.2.2 Decentring distortion . . . . . . . . . . . . . . . . . . . . . 25 3.3.2.3 Variabele zoom en focus . . . . . . . . . . . . . . . . . . . . 25 3.3.3 Stereovisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.4 Stereovisie voor microscopie . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 Camerakalibratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.5 Software voor interfacen en kalibratie van camera’s . . . . . . . . . . . . . . . 30 3.5.1 ROS (Robot Operating System) . . . . . . . . . . . . . . . . . . . . . 31 3.5.2 Camerakalibratie in ROS . . . . . . . . . . . . . . . . . . . . . . . . 32 3.5.2.1 Verloop van het kalibratieproces . . . . . . . . . . . . . . . 32 3.5.2.2 Bepalen van de nauwkeurigheid van het kalibratiepatroon . . 33 3.5.2.3 Bepalen van de interne cameraparameters . . . . . . . . . . 34 3.5.2.4 Bepalen van de externe cameraparameters . . . . . . . . . . 35 3.5.2.5 Opbouw van het 3D-beeld . . . . . . . . . . . . . . . . . . . 35 Uitvoering van de kalibratie in ROS . . . . . . . . . . . . . . . . . . . 36 Conclusie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3 3.5.3 3.6 4 Ontwikkeling van het beeldverwerkingssysteem 39 4.1 Detectie van aders in het netvlies van het oog . . . . . . . . . . . . . . . . . . 39 4.2 Het aanduiden van de in te spuiten ader op één camerabeeld . . . . . . . . . . 40 4.3 Het volgen van een chirurgische naald . . . . . . . . . . . . . . . . . . . . . . 41 4.4 Conclusie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 INHOUDSOPGAVE 5 6 Robotsturing gebaseerd op beeldverwerking 43 5.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2 Kalibratie van de robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.3 Uitgewerkte architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.4 Conclusie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Experimenten 47 6.1 Testen aangaande het beeldverwerkingssysteem . . . . . . . . . . . . . . . . . 47 6.1.1 Testen van aderdetectie . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1.2 Testen van het aanduiden van een ader . . . . . . . . . . . . . . . . . . 47 6.1.3 Testen van het volgen van een naald . . . . . . . . . . . . . . . . . . . 48 Testen van de aansturing van de slave robot . . . . . . . . . . . . . . . . . . . 49 6.2 7 xvii Conclusie Bibliografie 53 54 xviii INHOUDSOPGAVE Lijst van figuren 1.1 De netvlieschirurg kijkt door de microscoop . . . . . . . . . . . . . . . . . . . 2 1.2 Voorstelling van een robotgestuurde operatie . . . . . . . . . . . . . . . . . . . 2 1.3 Aangeduide ader op linker en rechter camerabeeld . . . . . . . . . . . . . . . . 3 1.4 Naalddetectie linker camerabeeld . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1 Retina rechteroog: normaal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Retina rechteroog: RVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Testbeelden aders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Detectie van aders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Flowchart: Hybrid Retinal Image Registration . . . . . . . . . . . . . . . . . 9 2.6 Testbeeld: aderdetectie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.7 Input beeld van Gabor-filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.8 Gefilterde beeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.9 CCD werking voorbeeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.10 RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.11 CMYK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.12 HSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.13 Hough transformatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.14 Background subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.15 Template Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.16 Camera−robot configuratie gebruikt bij visual servoing (van links naar rechts): VM1 een enkele gemonteerde camera, VM2 een afzonderlijke camera, VM3 stereo−camera setup op een robot, VM4 een afzonderlijke stereo−camera setup VM5 een redundant camera systeem. . . . . . . . . . . . . . . . . . . . . . . . 15 3.1 Openingen in het oog voor de vitrectomie . . . . . . . . . . . . . . . . . . . . 18 3.2 Cannulatie van een retinale ader . . . . . . . . . . . . . . . . . . . . . . . . . 19 xx LIJST VAN FIGUREN 3.3 Het EIBOS-systeem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4 Leica M690 microscoop voor aanpassingen . . . . . . . . . . . . . . . . . . . 20 3.5 Prosilica GC1290C camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.6 Leica M690 microscoop met aanpassingen . . . . . . . . . . . . . . . . . . . . 22 3.7 Kalibratiebed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.8 60 micron baantjes door 3D-printer . . . . . . . . . . . . . . . . . . . . . . . . 23 3.9 Het print proces van de aerosol jet printer . . . . . . . . . . . . . . . . . . . . 24 3.10 Het pinhole cameramodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.11 Vervorming van camerabeeld . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.12 Stereovisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.13 Dispariteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.14 Diepteresolutie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.15 Principetekening microscoop . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.16 Voorbeeld kalibratieproces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.17 Testbeeld met microscoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.18 Standen voor kalibratiepatroon . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.19 Nauwkeurigheid kalibratiepatroon . . . . . . . . . . . . . . . . . . . . . . . . 34 3.20 3D-geprint kalibratiepatroon . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1 Beeld van het test−oog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2 Aderdetectie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3 Aangeduide ader op linker en rechter camerabeeld . . . . . . . . . . . . . . . . 40 4.4 Naalddetectie na kleursegmentatie . . . . . . . . . . . . . . . . . . . . . . . . 41 4.5 Naalddetectie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.1 Voorbeeld assenstelsel transformatie . . . . . . . . . . . . . . . . . . . . . . . 44 5.2 Regelsysteem robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3 DC−motor met encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.4 Inlezen afstanden in labview . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.1 Beeld van het test−oog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.2 Aderdetectie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3 Aderdetectie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.4 Slechte detectie van de naald . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 LIJST VAN FIGUREN xxi 6.5 Goede detectie van de naald . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.6 Naalddetectie zonder naald . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.7 Naalddetectie met naald . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 xxii LIJST VAN FIGUREN Lijst van tabellen 3.1 Fabrikanten van camera’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2 Specificaties camera’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.3 Resultaten kalibratie linker camera . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4 Resultaten kalibratie rechter camera . . . . . . . . . . . . . . . . . . . . . . . 38 3.5 Resultaten stereo-kalibratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.1 Testen aderaanduiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.2 Testen naalddetectie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 xxiv LIJST VAN TABELLEN Hoofdstuk 1 Inleiding Het doel van deze thesis is om beeldverwerkingstechnieken te ontwikkelen ter ondersteuning van uiterst preciese robotgestuurde oogoperaties. Het gaat hierbij over een specifieke ingreep ter behandeling van retinale veneuze occlusies waarbij klonteroplossende medicatie (TPA) rechtstreeks in een verstopte, microscopisch fijne, ader van het netvlies dient te worden geïnjecteerd. De medische benaming voor deze interventie is “retinale cannulatie”. Op de afdeling PMA van het departement werktuigkunde van de KU Leuven werd reeds een master-slave robot ontwikkeld om dit type van ingreep te ondersteunen. De robot kan via een incisie in het oog, gemaakt door de chirurg, met een joystick vanop afstand een naald in het oog bewegen en de uiterst fijne aders van de retina aanprikken. Het oorspronkelijk doel van de thesis is het ontwikkelen van beeldverwerkingstechnieken om de robotgestuurde naald t.o.v. het oog te localiseren en op basis hiervan extra veiligheidsvoorzieningen en assistentie tijdens operaties te programmeren. Detectie van aders, geleiding naar aders toe en schatten van interactiekracht op basis van beeldverwerking zijn een aantal mogelijke toepassingen. Om de retinale vaten in het oog in beeld te brengen maken we gebruik van een operatiemicroscoop. Bij de gangbare intra-oculaire operaties kijkt de chirurg door de oculairen van de microscoop tijdens de ingreep naar het netvlies en geleidt hij/zij manueel de micro-instumenten in het oog. De kleinste aders in het netvlies zijn ongeveer 10 micron dik. Manueel aanprikken van deze aders is uitermate moeilijk vermits de chirurg geen feedback krijgt over de diepte van de naald en hij ook niet nauwkeurig genoeg kan werken door een onvermijdelijke mate van fysiologische tremor (trillingen van de hand). Figuur 1.1 en figuur 1.2 geven het verschil weer tussen een manueel uitgevoerde operatie en robotgestuurde operatie. Om de chirurg toe te laten vanop afstand via de master-slave robot de interventie uit te voeren, moeten hem de oorspronkelijke beelden, gegenereerd via de microscoop, op een alternatieve manier kunnen worden aangeboden. De beschikbare microscoop werd uitgerust met twee camera’s. De twee camera’s produceren elk een beeld. Deze beelden komen overeen met wat de chirurg door elk oog zou zien bij rechtstreeks kijken door de oculairen van de microscoop. Door combinatie van de twee beelden beschikken we over diepte-informatie die kan gebruikt worden 2 Inleiding Figuur 1.1: De netvlieschirurg kijkt door de microscoop Figuur 1.2: Voorstelling van een robotgestuurde operatie om een fijne naald te localiseren alsmede de aders van het netvlies. Door de beeldverwerking te linken met de regelaar van de robot moet het mogelijk zijn de robot te stabiliseren en te geleiden en zo de veiligheid van de interventie te verhogen. Een bijkomende opgave is het compenseren van oog- en hoofdbewegingen van de patiënt. 1.1 Concrete doelstellingen 1.1 3 Concrete doelstellingen De hoofddoelstelling van de thesis is om aan de hand van beeldverwerking de chirurg te helpen om de naald, die in het oog gebracht wordt, te volgen en feedback te geven over de afstand tussen de naald en het netvlies. Om de diepte van de naald in het oog te kennen, moet er een 3D-beeld van de binnenkant van het oog opgebouwd worden. Bij de daadwerkelijke uitvoering van deze thesis komen volgende elementen aan bod: • Hoe kunnen aders in het netvlies van het oog gedetecteerd worden ? Dit kan helpen om de in te spuiten ader beter te visualiseren. • Hoe kan het 3D-beeld bekomen worden? • Hoe kan het traject van een chirurgische naald gevolgd worden ? • Hoe de kennis uit de beeldverwerking te gebruiken om de robot aan te sturen ? 1.2 Schets van een mogelijke computergesteunde interventie Een computergesteunde interventie zou als volgt kunnen verlopen: 1. De chirurg bekijkt voorafgaandelijk aan de operatie eerst de ogen van de patiënt en markeert op de digitale abeelding van het oog de plaats van de in te spuiten ader. 2. Het systeem onthoudt de coördinaten aangegeven door de chirurg en extraheert de ader op het netvlies die overeenkomt met de aangeduide locatie. De plaats van de aangeduide ader wordt weergegeven op figuur 1.3. Figuur 1.3: Aangeduide ader op linker en rechter camerabeeld 3. De patiënt wordt onder de operatiemicroscoop gelegd. 4 Inleiding 4. De chirurg gaat dan de injectienaald manueel door de oogwand in het oog brengen tot deze door de camera’s gedetecteerd wordt. Figuur 1.4 geeft de detectie van de punt van de naald weer. Dit gebeurt normaal op zowel het linker als het rechter camerabeeld. Figuur 1.4: Naalddetectie linker camerabeeld 5. Aan de hand van de kalibratieparameters van de twee camera’s, uitgelegd in sectie 3.5.2, gaat dan de 3D coördinaat van de aangeduide ader en de punt van de naald bepaald kunnen worden. 6. Aan de hand van deze twee coördinaten kan dan de afstand tussen de naald en de ader worden berekend. 7. Deze afstand gaat dan doorgestuurd worden naar de slave robot en deze zal de naald dan naar de gewenste positie bewegen. Dit werk onderzoekt de mogelijkheid of aan de hand van beeldverwerking en enkele kleine interventies van een chirurg dit type operatie uitvoerbaar is. 1.3 Opbouw van deze tekst In de literatuurstudie worden verschillende beeldverwerkingstechnieken uitgelegd. In hoofdstuk 3 worden al de elementen om een stereo camerasysteem te gebruiken en te begrijpen uitgelegd met focus op camerakalibratie. De opbouw van het beeldverwerkingssysteem wordt uiteengezet in hoofdstuk 4. In hoofdstuk 5 wordt dieper ingegaan op de noodzakelijke aanpassingen om de bestaande robot-infrastructuur te interfacen met het beeldverwerkingssysteem. In een laatste hoofdstuk worden de uitgevoerde experimenten beschreven. Hoofdstuk 2 Literatuurstudie Deze literatuurstudie bespreekt de achtergrond en technieken die nodig zijn voor een goed begrip van deze thesis. In eerste instantie wordt de oogkwaal waarmee de thesis verband houdt toegelicht (sectie 2.1). Vervolgens worden enkele algoritmes voor aderdetectie besproken (sectie 2.2.1). Aderdetectie is nuttig om de ader die de chirurg wil aanprikken beter te visualiseren. Aansluitend komen er nog enkele mogelijke technieken aan bod om een chirurgische naald te kunnen volgen in het oog en een ader terug te vinden in beide camerabeelden (sectie 2.2.2). Ten slotte wordt het principe van “visual servoing” uitgelegd (sectie 2.3). 2.1 RVO: Retinale Veneuze Occlusie Hieronder volgt een medische toelichting, geschreven door Dr B.Augustinus, oogarts. De retina of het netvlies is de structuur van het oog die verantwoordelijk is voor de captatie van visuele informatie en de transmissie hiervan naar de hersenen. Het wegvallen van de retinale functie geeft aanleiding tot onomkeerbare blindheid of slechtziendheid. De retina heeft een complex bevloeiingssysteem met een netwerk van aanvoerende (slagaders of arteries) en afvoerende vaten (aders of venen). Een retinale veneuze occlusie (RVO) is een belangrijke oorzaak van plots visusverlies in de oudere bevolkingsgroep ( > 55 jaar). De oorzaak is trombusvorming (aderverkalking) in de retinale venen, teweeggebracht door hart- en vaatziekten (hoge bloeddruk, suikerziekte, hoge cholesterol). Het dichtslibben van de retinale venen gaat gepaard met retinale bloedingen, lekkage van bloedvaten met oedeemvorming en ischemie (zuurstofnood) van het netvlies. Dit alles kan leiden tot vaak onomkeerbaar verlies van gezichtsvermogen. Een afdoende behandeling voor de veneuze occlusies is er tot nog toe niet. Klonteroplossende medicatie (TPA: tissue plasminogen activator) blijkt onder andere uit experimenten met proefdieren een mogelijke behandeling te kunnen zijn. Het zeer fijne kaliber van de retinale vaten vormt evenwel een belemmering om de medicatie ter plaatse te kunnen brengen. Robotchirurgie zou hier een oplossing kunnen bieden. Figuren 2.1 en 2.2 geven het verschil weer tussen een gezond netvlies en een netvlies met RVO. 6 Literatuurstudie Figuur 2.1: Retina rechteroog: normaal 2.2 Figuur 2.2: Retina rechteroog: RVO Beeldverwerkingsalgoritmes voor intra-oculaire toepassingen Het gebruik van beeldverwerkingsalgoritmes ter ondersteuning van robot/computer geassisteerde procedures kent een toenemende populariteit. Ook in oogchirurgie en met name intraoculaire toepassingen werden in het verleden reeds een aantal interessante algoritmes ontwikkeld. Hieronder worden enkele artikels besproken over de detectie van aders in retinale beelden. Een tweede deel bespreekt enkele veelgebruikte beeldverwerkingstechnieken die gebruikt kunnen worden voor ondermeer het real-time volgen van een instrument op camerabeelden. Beide elementen zijn nodig om ’visual servoing’ technieken toe te passen ter ondersteuning van retinale ader cannulatie. 2.2.1 Het detecteren van aders in het netvlies 2.2.1.1 Detection of retinal blood vessels based on nonlineair projection Deze aderdetectie-techniek wordt uitgebreider uitgelegd in referentie [1]. Hier bestaat de detectie uit twee delen: • De segmentatie van het adernetwerk • Het volgen van één enkele ader Er worden verschillende technieken toegepast om de aders uit de beelden te halen. Dit gebeurt door het classificeren van elke pixel op basis van lokale eigenschappen. Hiervoor worden matched filters, edged based methodes, local adaptive thresholding, wavelet transform en morphological filtering gebruikt. Uit de geclassificeerde pixels moeten de aders dan gevisualiseerd worden. Dit gebeurt door manueel of automatisch een beginpunt van een ader aan te wijzen waardoor het algoritme dat adersegment gaat volgen tot aan het einde van de ader en dit voor elke ader. De automatische versie gebruikt het fuzzy K-means algoritme om het beeld in delen met een gelijkaardige kleur te verdelen en hiermee wordt dan de volgende zoeklocatie gezocht. Het volgen van de ader gebeurt door een kalman-filter [2]. De werking van de filter verloopt als volgt. De filter gaat ruis wegfilteren uit de afbeelding en gaat de geclassificeerde punten met elkaar verbinden tot 2.2 Beeldverwerkingsalgoritmes voor intra-oculaire toepassingen 7 Figuur 2.3: Testbeelden aders Figuur 2.4: Detectie van aders een lijn. De punten die te hard afwijken worden niet als ader beschouwd. Hierdoor kunnen bloedplekken op beelden weggewerkt worden zodat enkel de aders te zien zijn. Figuur 2.3 en figuur 2.4 geven de werking van dit algoritme weer. 2.2.1.2 On the Adaptive Detection of Blood Vessels in Retinal Images Deze aderdetectie-techniek wordt uitgebreider uitgelegd in referentie [3]. Deze techniek bestaat uit 3 delen: • het contrast van de beelden verbeteren • het classificeren van pixels • het vinden van de aders Bij deze techniek gaat men eerst de beelden verbeteren door het contrast te vergroten. Dit wordt gedaan door histogramequalisatie. Hierdoor worden de kleuren in een afbeelding gelijkmatiger verdeeld over het ganse kleurbereik. Dit heeft een gunstig effect op de detectie van kleinere aders. Vertrekkende van een initieel punt gaat men vervolgens het verdere verloop van de aders opbouwen. Dit wordt gerealiseerd door een combinatie van filters zoals hierboven eveneens 8 Literatuurstudie wordt geïllustreerd. Parametrische Gaussische kernels, twin Gaussian of Gaussian-achtige templates worden gebruikt. De filters worden toegepast op enkel het groene deel van het kleurbeeld. Hierdoor blijft er een grijswaardebeeld over. Dan worden de pixels van dit grijswaardebeeld gegroepeerd tot een beeld met een beperkt aantal niveaus. Aan de hand van de globale en de lokale eigenschappen van dit beeld kan men de aders detecteren. Naarmate de aders, op het originele beeld, kleiner worden zal de kwaliteit ervan afnemen en de detectie hiervan moeilijker zijn. De beschreven techniek is echter in staat zowel kleine als dikkere aders te detecteren. 2.2.1.3 Hybrid Retinal Image Registration Deze aderdetectie-techniek wordt uitgebreider uitgelegd in referentie [4]. Dit algoritme moet de vroegtijdige behandeling van diabetische retinopathie mogelijk maken. Hier gaat men gebruik maken van een combinatie van twee technieken, de oppervlaktegebaseerde techniek en de feature-based techniek. De oppervlaktegebaseerde techniek gaat vooral gebruikmaken van de intensiteit van de pixels en van enkele geoptimaliseerde objectfuncties zoals de least mean square error, cross correlatie, fasecorrelatie of feature informatie. De featurebased techniek is gelijkaardig aan de manuele registratie. Men gaat er eerst vanuit dat er overeenkomsten zijn tussen twee beelden. Het registratieproces zal deze gevonden overeenkomsten maximaliseren. Het hybride algoritme bestaat uit vier stappen: • Eerst worden de aders gedetecteerd door gebruik te maken van een lokale entropiegebaseerde threshold techniek. • Vervolgens wordt er een eerste-orde translatie geschat door het maximaliseren van de gemeenschappelijke informatie gebaseerd op het binaire beeldpaar. • Dan wordt de kwaliteit van de afbeelding beoordeeld met betrekking tot de vroegtijdige behandeling van diabetische retinopathie. Dit wordt gedaan op basis van het translatiemodel. • Wanneer het beeldpaar geaccepteerd wordt zullen hogere-orde transformaties toegepast worden. Twee dergelijke transformaties worden gebruikt: mijlpaal punten zoals vertakpunten van de aders en sample punten. Deze zorgen voor een affiene/kwadratische schatting van het model. • Drie empirische condities worden experimenteel afgeleid om het verloop van het algoritme te controleren om zo weinig mogelijke registratiefouten en de hoogste kans op succes te hebben. Figuur 2.5 geeft de flowchart weer van de opbouw van dit algoritme. 2.2 Beeldverwerkingsalgoritmes voor intra-oculaire toepassingen 9 Figuur 2.5: Flowchart: Hybrid Retinal Image Registration 2.2.1.4 Retinal Vessel Centerline Extraction Using Multiscale Matched Filters, Confidence and Edge Measures Deze aderdetectie-techniek wordt uitgebreider uitgelegd in referentie [5]. Deze paper behandelt drie voorname problemen bij aderdetectie. • De breedte van de aders is niet constant • Aders kunnen een heel laag contrast hebben, voornamelijk de kleinste aders • Er kunnen zich verschillende structuren voordoen in het beeld zoals bv.ziektes, het samenvloeien van de aders, ... Hiervoor hebben ze een multi-scale matched filter voor aders ontworpen. Het resultaat van de matched filter wordt vergeleken met een nieuwe vertrouwde meting van een ader. Dit geeft dan een aanduiding van hoe dicht de betrokken regio overeenkomt met dit van een ideaal aderprofiel onafhankelijk van de amplitude. Hierbij worden dan edge detectie responsies en vertrouwde waarden toegevoegd van de grens van de veronderstelde ader. Deze meting vormt dan een vector met 6 vrijheidsgraden per pixel. Vervolgens wordt er een leertechniek gebruikt om van deze vector een mapping te maken van de waarschijnlijkheid van het aderig zijn van een pixel. Hierdoor krijgt men een idee van elke pixel en kan men deze informatie gebruiken voor de segmentatie van ader pixels, de detectie van pixels in het midden van de aders en de breedte van de aders. We gebruiken de middens van de aders omdat hierbij de response maximaal zal zijn. Dit geeft een compactere, geometrische beschrijving van de aders dan bij segmentatie alleen. Figuur 2.6 geeft van links naar rechts het input beeld, het beeld met de kandidaten van de mogelijke aders en de uiteindelijke output weer. 10 Literatuurstudie Figuur 2.6: Testbeeld: aderdetectie Figuur 2.7: Input beeld van Gabor-filter 2.2.1.5 Figuur 2.8: Gefilterde beeld De Gabor filter De Gabor-filter is een filter die voor allerhande toepassingen zoals edge-detection, texture feature extraction en contour extraction kan gebruikt worden [6]. Referentie [7] geeft de link weer van een web-applicatie waarin de toepassing van een Gabor-filter wordt gedemonstreerd en uitgelegd. Figuur 2.7 geeft de niet gefilterde afbeelding weer en figuur 2.8 geeft de afbeelding weer na toepassing van de Gabor-filter die aanwezig is op deze website. 2.2.1.6 Conclusie Het grote aanbod aan onderzoeken die te maken hebben met het beter visualiseren van retinale aders geeft aan dat er in de medische wereld veel intresse is voor deze algoritmes. Deze algoritmes kunnen ook heel nuttig zijn om de diagnose van ziektes te vergemakkelijken. 2.2.2 Overzicht van een aantal algemeen bruikbare beeldverwerkingstechnieken Het volgen van een fijne naald in het oog geeft aanleiding tot verschillende problemen. Aangezien de naald van bovenaf belicht wordt, zal er tijdens een operatie op de camerabeelden schaduwvorming van de naald optreden. Ook zal er reflectie ontstaan omdat de naald een heel glanzend oppervlakte heeft. Om deze reden zal de naald veel minder zichtbaar zijn in de camerabeelden. Ook de aanduiding van hetzelfde punt van een ader in twee verschillende camerabeelden levert een probleem op. In deze sectie worden enkele beeldverwerkingstechnieken besproken om deze problemen aan te pakken. 2.2 Beeldverwerkingsalgoritmes voor intra-oculaire toepassingen 2.2.2.1 11 CCD - contracting curve density algoritme Dit is een algoritme dat zonder markeerpunten voorgedefinieerde objecten kan detecteren en volgen [8] [9]. In de literatuur vindt men veel algoritmes terug die gebruik maken van ofwel louter kleurinformatie, ofwel kleurinformatie samen met kennis van de vorm van het instrument. Bij dit algoritme heeft men enkel de vorm van het voorwerp nodig. Eerst maakt men een model aan van het voorwerp dat men wil zoeken. Dit model gaat dan in de beelden zoeken naar voorwerpen die op dit model gelijken en het model er steeds beter aan aanpassen. Dit kan je aanzien als een betere vorm van template matching maar hier heeft de schaal van het voorwerp en zijn positie geen belang. Figuur 2.9 geeft weer hoe dit proces verloopt. Figuur 2.9: CCD werking voorbeeld 2.2.2.2 Kleursegmentatie Hierbij is het de bedoeling om enkel te gaan kijken naar de kleuren die voorkomen in de beelden. Mits de naald een heel andere kleur heeft dan de rest van het netvlies zou de naald hierdoor vrij gemakkelijk uit het beeld gehaald kunnen worden. Op het bekomen beeld zal enkel de naald te zien moeten zijn. Men kan bij kleursegmentatie verschillende voorstellingswijzen gebruiken om kleuren te segmenteren: (a) RGB: Red Yellow Blue Hierbij wordt een kleur voorgesteld als een combinatie van de drie additieve primaire kleuren. Om een bepaalde kleur te bekomen, moet aan elke primaire kleur een getal worden toegewezen. Figuur 2.10 geeft dit model weer. (b) CMYB: Cyan Magenta Yellow and Black Dit is het kleurmodel dat gebruikt wordt bij printers. Hierbij worden deze kleuren gemengd om de te printen kleur te bekomen. Men spreekt hier van een subtractive color model. Figuur 2.11 geeft dit model weer. 12 Literatuurstudie Figuur 2.10: RGB Figuur 2.11: CMYK (c) HSV: Hue Saturation Value Dit is een model dat gebruikt wordt om kleuren te beschrijven. De Hue geeft de kleur weer. De Saturation (S) geeft de verzadiging of de hoeveelheid, felheid van een kleur weer. De Value geeft de intensiteit of lichtheid van de kleur weer. Het model wordt voorgesteld in figuur 2.12. Dit model wordt vooral gebruikt bij computergebaseerd grafisch ontwerp. De ontwerper kan dan eerst de kleur kiezen en dan aan de hand van de saturatie en de Value de tint aanpassen. 2.2.2.3 Hough transformatie De Hough transformatie is een algoritme dat ondermeer gebruikt wordt om lijnen en cirkels te detecteren [10]. Het algoritme gebruikt de resultaten van een lijndetectie-filter om zo lijnen of cirkels in een afbeelding te vinden. 2.2 Beeldverwerkingsalgoritmes voor intra-oculaire toepassingen 13 Figuur 2.12: HSV De linkse afbeelding van figuur 2.13 geeft de parametrische voorstelling van een lijn in het camera domein. De rechtse afbeelding van figuur 2.13 geeft de voorstelling van deze lijn weer in het Hough domein. In de linkse afbeelding wordt een lijn weergegeven als een rechte die de twee punten (x, y) en (u, v) snijdt. In de rechtse afbeelding wordt een lijn weergeven door het snijpunt van twee of meerdere bogen. Het aantal bogen die eenzelfde punt snijden geeft aan hoeveel punten er op dezelfde lijn liggen. Figuur 2.13: Hough transformatie ρ = de afstand in pixels ten opzichte van de linker onderhoek van de afbeelding θ = de hoekverdraaiing ten opzichte van de x-as De bogen worden weergegeven door formule (2.1). punt 1 : xcos(θ ) + ysin(θ ) punt 2 : ucos(θ ) + vsin(θ ) (2.1) 14 Literatuurstudie Beschrijving van de lijndetectie van de Hough-transformatie: De Hough-transformatie gaat in tegenstelling to een normaal lijndetectie-algoritme ook aangeven hoeveel punten er op deze lijn liggen. Hierdoor gaat men een beter beeld hebben van welke lijnen ook echt lijnen zijn en welke niet moeten worden weergegeven. 2.2.2.4 Background Subtraction Background subtraction is een methode die gebruikt wordt om de voorgrond en de achtergrond van een afbeelding te scheiden [11]. Dit wordt meestal toegepast wanneer de camera vastgemonteerd staat. In het eenvoudigste geval zal de camera altijd dezelfde achtergrond filmen. Hierbij kan je een afbeelding maken van deze achtergrond en kijken wat het verschil is met wat de camera nadien filmt. Wanneer er dan iets verandert in het beeld gefilmd door de camera, zal enkel dit weergegeven worden. Dit wordt dan de voorgrond genoemd. Er bestaan ook complexere methodes waarbij de achtergrond verandert. Bij die methodes zal de achtergrond continu aangepast moeten worden aan de omgeving. Figuur 2.14 geeft een voorbeeld van de eenvoudige methode van backgroundsubtraction. Figuur 2.14: Background subtraction 2.2.2.5 Template Matching Met deze techniek kan er gekeken worden hoeveel één beeld op een ander beeld gelijkt [12]. Men kan bijvoorbeeld een stuk uit een afbeelding vergelijken met een andere afbeelding om te weten waar dit stuk overeenkomt in het andere beeld. Figuur 2.15 geeft een voorbeeld van deze techniek. 2.3 Visual Servoing Visual servoing is de benaming voor het gebruik van camera’s als feedback om de positionering van robots en andere machines nauwkeuriger te maken [13] [14]. Het voordeel hiervan is dat 2.3 Visual Servoing 15 Figuur 2.15: Template Matching het om een feedback gaat die niet contactueel gebeurt. Omdat er geen sensoren in het oog geplaatst kunnen worden om de naald te volgen, is het gebruik van visual servoing heel nuttig om de positie van de naald te kennen en eveneens de afstand tot een ader in het oog. Hierdoor zal de beweging van de naald gestuurd kunnen worden aan de hand van de camerabeelden. Figuur 2.16 geeft de mogelijke configuraties weer om aan visual servoing te doen. Figuur 2.16: Camera−robot configuratie gebruikt bij visual servoing (van links naar rechts): VM1 een enkele gemonteerde camera, VM2 een afzonderlijke camera, VM3 stereo−camera setup op een robot, VM4 een afzonderlijke stereo−camera setup VM5 een redundant camera systeem. Bij de verschillende opstellingen is het noodzakelijk dat er een tranformatie gedaan wordt tussen de verschillende assenstelsels. Hierbij gaat het over een transformatie van de positie van de eind-effector in het robot-assenstelsel naar het camera-assenstelsel. De algemene voorstelling van deze transformatie wordt voorgesteld in formule (2.2). Pc = R · Pr + T (2.2) In deze formule is Pc een punt in het camera-assenstelsel en Pr het overeenkomstige punt in het robot-assenstelsel. De transformatie gebeurt door Pr te vermenigvuldigen met de rotatiematrix R en hierbij de translatiematrix T op te tellen om zo het punt Pc te bekomen. 16 2.4 Literatuurstudie Besluit Het onderzoeken van de verschillende beeldverwerkingstechnieken, besproken in het vorige hoofdstuk, heeft geholpen bij het vormen van een idee over de uiteindelijk uitwerking van het beeldverwerkingssysteem. Hoofdstuk 3 Opbouw en kalibratie van een opstelling voor stereo-microscopie Het vorige hoofdstuk gaf aan welke algoritmes kunnen worden gebruikt en welke aanpak mogelijk is om de robot m.b.v beeldverwerking een cannulatietaak te laten uitvoeren. In dit hoofdstuk bespreken we hoe we aan de beelden komen die hiervoor gebruikt kunnen worden. Na een korte uitleg over visualisatie tijdens normale microchirurgische ingrepen in het oog (sectie 3.1), bespreekt dit hoofdstuk de uitbouw van een digitale opstelling voor stereo-microscopie (sectie 3.2 en 3.3) en de kalibratie ervan voor toepassing van beeldverwerkingsalgoritmes (sectie 3.4 en 3.5). 3.1 Visualisatie tijdens intra-oculaire interventies Hieronder volgt een medische toelichting, geschreven door Dr B.Augustinus, oogarts. De klassieke chirurgische benadering van het netvlies is via de zogenaamde “pars plana vitrectomie”. De ingreep kan gebeuren onder lokale “retrobulbaire” verdoving of onder algemene narcose. Met de patiënt in liggende positie wordt, met behulp van de vergroting van de binoculaire operatiemicroscoop, eerst het slijmvlies rond het oog geopend. Vervolgens worden drie kleine openingen van minder dan één millimeter gemaakt in de harde oogrok, vlak naast het hoornvlies (ter hoogte van de “pars plana” ). Figuur 3.1 geeft deze verschillende openingen tijdens de operatie weer [15]. In deze openingen worden fijne trocards bevestigd. Een eerste opening wordt gebruikt om een vochtinfuus aan te leggen, noodzakelijk om tijdens de operatie een stabiele druk in het oog te genereren. Via opening 2 kan een lichtfiber worden ingebracht om het oog van binnenuit te belichten. Opening 3 wordt gebruikt om zeer fijne instrumenten het oog in te brengen. Via deze laatste toegang kan bvb een cannulatienaald manueel worden ingebracht om een retinale ader aan te prikken en medicatie in te spuiten. Figuur 3.2 geeft weer hoe een adercannulatie zou gebeuren. Om het netvlies mooi in beeld te brengen wordt gebruik gemaakt van een breedbeeld voorzetlens welke bvb met een EIBOS-systeem [16], zoals weergegeven in figuur 3.3, aan de operatiemicroscoop kan worden gekoppeld. 18 Opbouw en kalibratie van een opstelling voor stereo-microscopie Figuur 3.1: Openingen in het oog voor de vitrectomie 3.2 3.2.1 Uitbouw van de Leica M690 operatiemicroscoop tot een meetsysteem voor robotsturing Bestaande opstelling De aanwezige binoculaire operatiemicroscoop (Leica M690) is uitgerust met een camera en een meekijker voor de assistent. Aan de microscoop hangt een voetpedaal die zowel de zoom als de hoogte van de microscoop kan regelen. De zoom is instelbaar van 1x tot 36x. De stand van de zoom kan enkel afgelezen worden op een ronddraaiende schijf met getallen op. Aangezien de exacte stand van de zoom op deze manier niet digitaal kan worden uitgelezen, kan deze niet door de beeldverwerking gebruikt worden. Er is eveneens een bedieningspaneel aanwezig waarmee de sterkte van de lichtbron van de microscoop, de snelheid van de sturing voor de zoom en de hoogte van de microscoop kan worden geregeld. Figuur 3.4 geeft de originele microscoop weer alvorens er aanpassingen op aangebracht zijn. 3.2.2 Uitgebouwde opstelling Door testen te doen met de bestaande microscoopopstelling bleek dat de meekijker en de camera maar één beeld ontvangen en dus geen stereovisie genereren. Om los van het chirurgisch oculair toch stereovisie te creëren, moesten de oorspronkelijke camera en de meekijker vervangen worden door twee identieke camera’s. Bij verschillende fabrikanten van camera’s werden offertes aangevraagd (tabel 3.1). 3.2 Uitbouw van de Leica M690 operatiemicroscoop tot een meetsysteem voor robotsturing 19 Figuur 3.2: Cannulatie van een retinale ader Figuur 3.3: Het EIBOS-systeem 3.2.3 Verschillende types van camera’s Er zijn twee types van camera’s, nl. de CCD en de C-MOS camera [17, 18]. Beide types zetten licht om naar een elektrische lading en verwerken deze tot elektrische signalen. De kostprijs van beide systemen is ongeveer gelijk voor dezelfde volumes. 1. CCD: charge coupled devices • Hier wordt de lading van elke pixel getransformeerd door een gelimiteerd aantal output-nodes, meestal maar één, om omgezet te worden in een spanning. Alle pixels hangen af van het opgevangen licht en van de uniformiteit van de output die hoog moet zijn. Omdat er maar weinig output-nodes zijn, zal de uniformiteit waarschijnlijk heel hoog zijn. Twee pixels met de zelfde kleur zullen dezelfde kleur blijven wanneer ze uit de output-nodes komen. 20 Opbouw en kalibratie van een opstelling voor stereo-microscopie Figuur 3.4: Leica M690 microscoop voor aanpassingen Fabrikanten Camera’s Mantis Optronics Moticam Imaging planet Micro-shot Allied Vision Jenoptic Tabel 3.1: Fabrikanten van camera’s • Toepassingsdomein: fotografie, wetenschap, industriële applicaties voor hoog kwalitatieve beelden. 2. C-MOS: complementary metal oxide semiconductor • Hier heeft elke pixel zijn eigen lading tot spanningsconversie en de sensor bevat meestal ook versterkers, ruiscorrectie en digitalisatieschakelingen. Deze functies verhogen wel de complexiteit en verkleinen mede de ruimte die men kan gebruiken voor het opvangen van licht. Nadeel hiervan is dat de uniformiteit van de output slechter is omdat elke pixel zijn eigen conversie doet. • Toepassingsdomein: Integratie (meer functies op de chip), laag vermogensdissipatie, kleinere systemen (afwegen kostprijs en beeldkwaliteit) Men kan voor beide types zowel voor- als nadelen opsommen maar voor onze toepassing diende er niet lang nagedacht te worden over welk type er gebruikt zou worden. Er werd voor een CCD camera gekozen omdat deze een kleinere pixelgrootte heeft en eveneens kwalitatief betere beelden produceert. 3.2 Uitbouw van de Leica M690 operatiemicroscoop tot een meetsysteem voor robotsturing 21 Uiteindelijk werd er gekozen voor een camera van Allied Vision die de beste prijs/kwaliteit aanbood. Twee identieke camera’s van deze firma werden geselecteerd en aangekocht (figuur 3.5). Figuur 3.5: Prosilica GC1290C camera Tabel 3.2 geeft de specificaties van de camera’s weer: Prosilica GC Interface Resolutie Sensor Sensor type Sensor afmetingen Pixelgrootte Lens type Max frame-rate 1290 IEEE 802.3 1000baseT 1280 x 960 Sony ICX445 CCD Progressive 1\3” 3,75 micron C\CS 32 fps Tabel 3.2: Specificaties camera’s De camera heeft een hoge resolutie en heeft een frame-rate van 32 frames per seconde. Met deze camera zijn vervolgens enkele testbeelden gemaakt zowel met als zonder de microscoop en deze bleken kwalitatief heel goed te zijn. Wanneer men de twee camera’s op een microscoop monteert, moet men rekening houden met de noodzaak dat het optische pad van beide camera’s hetzelfde is zodat beide beelden dezelfde optische elementen doorlopen en dus dezelfde vervorming hebben. Het monteren van de camera’s op de microscoop wordt gedaan door gebruik te maken van een speciale video-adapter. Op deze video-adapter bevindt zich ook een manuele focus waardoor je de focusafstand van beide camera’s kunt bijregelen. Het soort tussenstuk hangt af van de schroefdraad waarmee de camera kan vastgedraaid worden. Het type dat wij nodig hebben heet een C-mount adapter. Een offerte van C-armen werd aangevraagd bij de firma Leica. In december 2011 werden deze geleverd. Figuur 3.6 geeft de microscoop weer met aangebrachte aanpassingen. 22 Opbouw en kalibratie van een opstelling voor stereo-microscopie Figuur 3.6: Leica M690 microscoop met aanpassingen 3.2.4 Ontwikkeling van testbed voor kalibratie De kalibratie van de op de microscoop gemonteerde camera’s is een belangrijke stap om de nauwkeurigheid van het beeldverwerkingssysteem te verhogen. Het principe van camerakalibratie wordt uitgebreid uitgelegd in sectie 3.4. Om de kalibratie accuraat te kunnen uitvoeren, moest een mechanische constructie uitgedacht worden waarin het kalibratiepatroon gemonteerd kon worden. Aan de basis van deze constructie staat een xyz-slede die het patroon langs 3 assen kan bewegen. Aan deze slede moest dan een constructie bevestigd worden om het patroon vast te houden. Deze constructie moest er eveneens voor zorgen dat het patroon verdraaid kon worden. Dit werd gerealiseerd door middel van een bolscharnier waarin het patroon gemonteerd werd. Figuur 3.7 geeft het kalibratiebed weer dat ervoor zorgt dat het kalibratiepatroon gekanteld en verplaatst kan worden. Figuur 3.7: Kalibratiebed 3.3 Principes van stereovisie 3.2.5 23 3D printen van het patroon Het printen van het patroon werd op Campus De Nayer zelf gedaan. Hierbij werd gebruik gemaakt van de Aerosol Jet Printer. Er is voor deze printer gekozen omdat het patroon met een resolutie van 1 micron, zoals berekend in sectie 3.5.2.2, moest afgedrukt worden. Deze printer kan baantjes tussen de 1 en de 5 micron printen met een nauwkeurigheid van minder dan een micron. Bij het berekenen van de nauwkeurigheid van het kalibratiepatronen kwamen we uit op een nauwkeurigheid van 1 micron (sectie 3.5.2.2). Deze printer bleek dus nauwkeurig genoeg om het kalibratiepatroon af te drukken. Figuur 3.8 laat enkele door de Aerosol geprinte 60 micron dunne baantjes zien. Figuur 3.9 geeft het print proces weer van de aerosol jet printer. Figuur 3.8: 60 micron baantjes door 3D-printer Het proces gebeurt in drie stappen: • Stap 1: Het vloeibaar ruw materiaal wordt in een verstuiver geplaatst die de vloeistof omzet in een fijne straal van 1 tot 5 micron breed. • Stap 2: De straal wordt naar de spuitkanalen gebracht en overtollig gas wordt verwijderd. • Stap 3: De straal wordt dan gefocust naar de spuitmond door het toevoegen van een extra straal gas. 3.3 3.3.1 Principes van stereovisie Cameramodellen Een cameramodel kan men aanzien als de mathematische beschrijving van de omzetting tussen de positie van het gefilmde object en de uiteindelijke 2D afbeelding hiervan. Er zijn verschillende cameramodellen, onder andere het pinhole of het conventioneel model en het nieuw generisch cameramodel [19] [20]. Het eerste model wordt gebruikt bij een camera waarbij het licht 24 Opbouw en kalibratie van een opstelling voor stereo-microscopie Figuur 3.9: Het print proces van de aerosol jet printer maar door een klein gaatje de sensor kan bereiken. Dit is het meest eenvoudige model en wordt als basis gebruikt voor het andere cameramodel. Figuur 3.10 geeft het pinhole cameramodel weer. Figuur 3.10: Het pinhole cameramodel Het nieuw generisch model is in staat om radiale vervorming te compenseren. Figuur 3.11 geeft een principeschets weer van radiale vervorming. Dit is belangrijk om de nauwkeurigheid van de beelden te waarborgen. De vervorming zorgt ervoor dat sommige pixels op de verkeerde plaats op de sensor vallen. Het model gaat deze vervorming compenseren en de pixels terug op de juiste plaats zetten. Het verschil tussen het pinhole en het nieuw generisch model is dat het nieuw generisch model gebruikt kan worden bij opstellingen met een variabele zoom en focus. Ook camera’s met een groothoeklens kunnen hiermee gekalibreerd worden. Het model houdt ook rekening met verschillende soorten vervorming: entrance pupil en decentring distortion. Dit zijn twee fenomenen die optreden wanneer je een camera in combinatie met een lens gebruikt en zeker bij een microscoop waarbij meerdere lenzen achter elkaar geplaatst worden. Deze niet-idealiteiten worden in de volgende sectie in detail toegelicht. 3.3 Principes van stereovisie 25 Figuur 3.11: Vervorming van camerabeeld 3.3.2 Niet-idealiteiten verantwoordelijk voor beeldvervorming/distortie 3.3.2.1 Entrance pupil Een oorzaak van entrance pupil vervorming is het afwijken van het intredepunt in het oog of een lens. Entrance pupil geeft het punt aan waarnaar de hoofdstraal van een bundel binnenkomende stralen wordt geleid. Hierbij wordt meestal aangenomen dat dit punt samen valt met het middelpunt van het optische pad van het lenzensysteem. Dit is echter bijna nooit het geval. Hoe het fenomeen van de verschuiving van de entrance pupil kan worden in rekening gebracht wordt in referentie [21] uitgelegd. Dit is vooral het geval bij fisheye lenzen, een lenstype dat een soortgelijk beeld oplevert als wanneer je in water naar een voorwerp kijkt. Deze lenzen geven aan een beeld een bolvormige vervorming, zoals weerspiegeling in bv. een kerstbal. Bij het opereren van ogen maakt men, zoals reeds vermeld, gebruik van een EIBOS om de bolling van het oog tegen te werken waardoor je een vlakke afbeelding krijgt zonder vervorming. 3.3.2.2 Decentring distortion Hoe het fenomeen decentring distortion kan worden in rekening gebracht, wordt in referenties [22] [23] uitgelegd. Oorzaken van decentring distortion zijn o.a: • leunend sensor oppervlak: door de manier waarop de sensor gemonteerd is, kan het zijn dat wanneer de camera schuin hangt, de sensor een beetje overhelt • slechte uitlijning van lenzen • niet constante brekingsindex van de lenzen 3.3.2.3 Variabele zoom en focus Wanneer men de zoom van de microscoop verandert, verandert de virtuele afstand tussen de twee op de microscoop gemonteerde camera’s. Dit wil zeggen dat het dan lijkt alsof de camera’s verder uiteen liggen maar in de werkelijkheid verandert hun positie niet. Hierdoor moet 26 Opbouw en kalibratie van een opstelling voor stereo-microscopie men, wanneer de zoom van de camera verandert, de kalibratie opnieuw uitvoeren. Omdat de kalibratie tijdsrovend is en veel rekenkracht vergt, kan men dit oplossen door op voorhand voor elke stand van de zoom een kalibratie uit te voeren. Wanneer de zoom veranderd wordt, zal het desbetreffende kalibratieprofiel dan geladen worden. Het probleem hierbij is echter dat de zoom mechanisch geregeld wordt en er geen sensor beschikbaar is op dit systeem om de exacte stand in te lezen. 3.3.3 Stereovisie Figuur 3.12: Stereovisie Wanneer gebruik wordt gemaakt van twee camera’s, die vanuit een verschillende positie eenzelfde object filmen, geven deze elk een 2D representatie weer van het gefilmde opbject. Hierbij spreekt men van binoculaire dispariteit. Binoculaire dispariteit geeft het verschil in positie weer van het gefilmde object op de beelden van de ene camera ten opzichte van de beelden van de andere camera. Door deze twee beelden op de juiste manier te combineren kan men een 3D-beeld creëren. Tekening 3.12 geeft goed weer hoe de transformatie van 2D naar 3D gebeurt [24] [20]. Om de coördinaten van één punt te vinden, gebruikt men de afbeeldingen van dit punt op de twee camerabeelden en tekent men een virtuele lijn door alle punten die op deze camerabeeldlocaties vallen. Hoe deze lijn getrokken wordt, hangt af van het cameramodel dat je gebruikt. Het snijpunt van deze twee lijnen geeft de coördinaten van dit punt. Dit principe is eveneens van toepassing wanneer men enkel de microscoop bekijkt zonder camera’s erop gemonteerd. Hier worden de beelden door onze hersenen gecombineerd tot een 3D-beeld. Het mappen van 3D naar 2D wordt gedaan door middel van een 4 × 3 projectiematrix. 3D punten bestaan uit een 1 × 4 vector bestaande uit de homogene coördinaten van een punt uitgedrukt ten opzichte van het wereldassenstelsel Σw : xw , yw , zw , ww (3.1) De afbeeldingen van dergelijke punten op het camerabeeld zijn 2D representaties die worden uitgedrukt in een 1 × 3 vector die de positie op de uiteindelijke afbeelding voorstellen, uitgedrukt in het camera assenstelsel Σc : 1 1 1 (3.2) xc , yc , wc 3.3 Principes van stereovisie 27 De w in de formule wordt gebruikt om onderscheid te maken tussen punten die op één lijn liggen ten opzichte van de camera. Om van een 2D afbeelding terug een 3D representatie te maken heeft men dus twee verschillende beelden nodig. Hieronder ziet men een voorbeeld van zo’n projectiematrix. De parameters van de matrices stellen de kalibratieparameters voor die in sectie 3.4 uitgelegd worden. Camera 1   xc1 y1c w1c  xc2 y2c w2c   fx1 = 0 0 0 fy1 0 c1x c1y 0 fy2 0 c2x c2y   1   fx2 = 0 0 1   (3.3)  xw2  2    y2w   zw  w2w (3.4) p112 p122 p132 p113 p123 p133 p114 p224 p234  p211 p221 p231 p212 p222 p232 p213 p223 p233 p214 p224 p234  Camera 2   xw1  1    y1w   zw  w1w p111 p121 p131   Wanneer het 3D-beeld opgebouwd is, moet er gekeken worden naar de diepteresolutie. De diepteresolutie is een maat van de nauwkeurigheid van deze bekomen diepte-informatie en wordt gedefinieed als de ’minimale afstand tussen schijfjes’ waarmee je het voorwerp virtueel kan opbouwen. Hieronder wordt uitgelegd hoe je door middel van triangulatie de diepte-informatie kunt bekomen [25]. Figuur 3.13 geeft een voorbeeld weer waarbij de camera’s recht naar voor gericht zijn. Figuur 3.13: Dispariteit De basis geometrie die gebruikt wordt bij een stereo-camerasysteem wordt beschreven als epipolar geometry. Op de afbeeldingen ziet men twee camera’s ( C1 en C2 ) die het punt P op twee plaatsen P1 en P2 van het image plane ( IP1 en IP2 ) zien. c1 en c2 geven het centrum van de 28 Opbouw en kalibratie van een opstelling voor stereo-microscopie twee camera’s weer. De hoeken waaronder de camera’s het punt P zien zijn respectievelijk θ1 en θ2 . De dispariteit wordt weergegeven door het verschil tussen de afstanden van het centrum van de camera tot de afbeelding van het punt op het image plane (d = V1 −V2 ). De diepte wordt berekend volgens formule 3.5. D = (b · f )/d (3.5) D = de afstand van de lens tot een punt in de ruimte waar de camerabeelden elkaar snijden b = de afstand tussen de camera’s f = de focusafstand van de camera’s d = de disparity van de opstelling Figuur 3.14 geeft de configuratie van twee camera’s weer die onder een hoek van 50 graden ten opzichte van elkaar geplaatst zijn. De camera’s worden onder een hoek opgesteld aangezien de beelden van twee camera’s, gemonteerd op een microscoop, ook op deze manier gemaakt worden. De zwarte en groene lijnen op de tekening geven de afbeeldingen weer met daarop de pixels. Om een 3D-beeld te bekomen, overlapt men de beelden van de twee camera’s. De hoek tussen AB en BC is 50 graden. Voor de pixelafstand AB en BC nemen we 3,75 micron. Hieruit bepaalt men dan de diepteresolutie, zoals berekend in formule 3.6, door gebruik te maken van de cosinus-regel. Dit is de afstand die je per pixel verplaatst in de diepte van het 3D gecreërde beeld ( blauwe lijn op de tekening ). Dit komt overeen met iets minder dan één pixel van het 2D beeld. Als hoek is er zelf een getal genomen maar dit mag niet te klein of te groot zijn. Bij een te kleine hoek is er te weinig verschil tussen de beelden en bij een te grote hoek te weinig overeenkomst om een 3D-beeld te maken. Voor een hoek van 50 graden en een pixelafstand voor beide camerabeelden van 3,75 micron geeft dit een diepteresolutie van 3,17 micron. Merk op dat de nauwkeurigheid typisch 10x de resolutie is. q (AB)2 + (BC)2 − 2 · AB · BC · cos(ABÌ‚C) p (3.6) = 3, 752 + 3, 752 − 2 · 3, 752 cos50 = 3, 17 micron. We kunnen dus stellen dat we een 3D-object, gevisualiseerd door 2 camera’s die onder een hoek van 50 graden ten opzichte van elkaar staan, kunnen opdelen in lagen die 3,17 micron uit elkaar liggen. Dus het 3D-model van het object heeft dan een diepteresolutie van 3,17 micron. Hierbij is de stand van de zoom nog niet in rekening gebracht. 3.3.4 Stereovisie voor microscopie Beelden gemaakt door een binoculaire microscoop worden in principe op dezelfde manier opgebouwd als bij een stereovisiesysteem met twee convergerende camera’s. Dit komt overeen met twee camera’s die onder een hoek naar elkaar gericht zijn en dus niet parallel naast elkaar gemonteerd zijn. Dit principe komt overeen met hoe onze ogen functioneren. Wanneer onze 3.3 Principes van stereovisie 29 Figuur 3.14: Diepteresolutie ogen iets waarnemen staan beide ogen naar dit zelfde punt gericht. Er worden hier eveneens twee beelden gemaakt met allebei een verschillende oriëntatie ten opzichte van het object. Om de camera’s te kunnen kalibreren moeten we eerst uitzoeken hoe groot dit kalibratiepatroon zal moeten zijn. Het kalibratiepatroon moet hierbij voor verschillende standen van de zoom kunnen gebruikt worden. Wanneer dit te klein of te groot is zal het patroon niet gedetecteerd worden of niet helemaal in beeld zijn. Op Figuur 3.15 ziet men een principetekening van hoe een dergelijke kalibratie-opstelling er in de praktijk uitziet. Figuur 3.15: Principetekening microscoop 30 Opbouw en kalibratie van een opstelling voor stereo-microscopie 3.4 Camerakalibratie De kalibratie van de camera’s is heel belangrijk. Dit wordt gedaan door de projectiematrix op te meten en toe te passen. Hoe een camera gekalibreerd wordt, is uitgelegd in volgende referenties [26] [20]. Dit zorgt ervoor dat elke pixel op de juiste plaats op de afbeelding wordt geprojecteerd. Hiervoor heeft men verschillende parameters nodig. De interne cameraparameters zijn parameters die te maken hebben met de positie van pixels in het camera-assenstelsel. De externe parameters geven de relatie weer tussen het camera-assenstelsel Σc en het wereld assenstelsel Σw . Interne cameraparameters: • Het middelpunt of het principle point van de sensor (cx en cy ) • Focusafstand en pixelgrootte ( fx en fy ) Externe cameraparameters: • Optische middelpunt • Oriëntatie van de CCD-chip • Hoek tussen de camera-assenstelsel Σc en het wereldassenstelsel Σw Er bestaan verschillende methodes om camera’s te kalibreren. Eén ervan is de Tsai methode [27]. Om de interne en externe parameters te bekomen wordt een bepaald patroon op verschillende posities voor de camera gehouden. Figuur 3.16 geeft een voorbeeld van een dergelijk kalibratieproces. De bovenste afbeeldingen geven de beelden van de twee camera’s weer. De afbeelding linksonder geeft het patroon weer waar de kalibratie op toegepast wordt. Bij deze software wordt gebruik gemaakt van een patroon met kleine cirkels [28]. De afbeelding rechtsonder geeft het resultaat van de kalibratie weer, dus de waarden van de interne en externe cameraparameters. Bij de kalibratie van de camera’s zal er een schaakbordpatroon gebruikt worden omdat de in sectie 3.5 beschreven software enkel met dit type kalibratiepatroon kan werken. Aangezien er gebruik gemaakt wordt van een microscoop moet ervoor gezorgd worden dat dit patroon nauwkeurig en klein genoeg afgedrukt kan worden omdat anders de kalibratie niet goed kan worden uitgevoerd. Dit wordt verder omschreven in sectie 3.5.2. 3.5 Software voor interfacen en kalibratie van camera’s Volgende sectie beschrijft de software die gebruikt wordt om de beelden van de camera’s in te lezen en te bewerken. De aspecten van de camerakalibratie worden vervolgens ook besproken. 3.5 Software voor interfacen en kalibratie van camera’s 31 Figuur 3.16: Voorbeeld kalibratieproces 3.5.1 ROS (Robot Operating System) ROS is een open-source software platform dat zorgt voor bibliotheken en tools om softwareontwerpers te helpen om robotapplicaties te ontwikkelen [29]. Om ROS te gebruiken moet je een Unix gebaseerd OS gebruiken. Op de site ROS.org staan verschillende tutorials om met robots te kunnen werken en hoe bepaalde camera’s in te lezen, te kalibreren enzovoort. ROS werd gebruikt om de kwaliteit van de op het departement aanwezige camera te verifiëren alvorens deze zelf aan te kopen. Onze camera voldeed aan de gestelde verwachtingen. Figuur 3.17 toont een testbeeld gemaakt met de aangekochte camera gemonteerd op de microscoop. De microscoop was ingesteld op een vergroting van 15x. Het rechtse beeld is genomen 32 Opbouw en kalibratie van een opstelling voor stereo-microscopie met een gewoon fototoestel. Hieruit kon opgemaakt worden dat dit een goede camera is voor onze toepassing. ROS is een gratis meta-besturingssysteem waar de processen plaatsvinden in Nodes die sensor, controle, status, planning, motor-data en andere boodschappen kunnen versturen en ontvangen. Bij een camera zal er gespecifieerd moeten worden via welke node hij de data moet versturen. Het enige wat er dan gedaan dient te worden is deze node te openen en de data ervan op te vragen. Ook zijn er te installeren paketten aanwezig om verschillende soorten camera’s te kalibreren en 3D-beelden op te bouwen. Bovendien worden er in ROS nog allerhande andere beeldverwerkingsalgoritmes aangeboden. Er is tevens ook de mogelijkheid om via OPENCV [20] beeldverwerking te doen in combinatie met ROS. Hiervoor dienen de beelden die door middel van ROS-nodes gepubliceerd worden, omgezet te worden naar OPENCV compatibele beelden. Dit wordt gedaan door het pakket CV_bridge. OPENCV is een gratis bibliotheek met allerhande beeldverwerkingsalgoritmes. Omdat ROS op de KULeuven gebruikt wordt, is er voor dit pakket gekozen. Op de bijgevoegde CD-ROM is een overzicht weergegeven van al de belangrijke commando’s die gebruikt zijn geweest in ROS. Figuur 3.17: Testbeeld met microscoop 3.5.2 Camerakalibratie in ROS 3.5.2.1 Verloop van het kalibratieproces De kalibratie van de camera’s verloopt als volgt. Eerst dienen de interne cameraparameters bepaald te worden. Dit wordt gedaan door beide camera’s apart te kalibreren. Tijdens de stereokalibratie worden zowel de interne als de externe parameters bepaald. Bij de kalibratie dient een kalibratiepatroon onder de camera’s bewogen te worden ten opzichte van de x,y en z-as. Eveneens moet het kalibratiepatroon schuin gehouden worden ten opzichte van de z-as van de camera’s. Figuur 3.18 geeft de verschillende standen van het kalibratiepatroon weer. Tijdens de kalibratie is het de bedoeling om het patroon zo dicht mogelijk bij de verschillende randen van het camerabeeld te detecteren en tevens onder een zo groot mogelijke hoek ten opzichte van de z-as van de camera’s. De verplaatsing wordt gerealiseerd aan de hand van een een 3.5 Software voor interfacen en kalibratie van camera’s 33 xyz-slede die fijn afgesteld kan worden. De verdraaiing wordt gerealiseerd door een soort bolscharnier. Tijdens de kalibratie zal het patroon bewogen en verdraaid worden en zullen er foto’s van goede posities genomen worden. Deze procedure wordt bij zowel de mono-kalibratie en de stereo-kalibratie gebruikt. Aan de hand van deze foto’s zullen dan de interne en externe parameters bepaald worden. Figuur 3.18: Standen voor kalibratiepatroon 3.5.2.2 Bepalen van de nauwkeurigheid van het kalibratiepatroon Het kalibreren van de camera’s die gemonteerd zijn op de operatiemicroscoop dient heel nauwkeurig gedaan te worden. Camerakalibratie door middel van een op papier afgedrukt patroon bleek niet afdoende. Om de resolutie van het kalibratiepatroon te bepalen moet gekeken worden naar wat in de reële wereld de grootte van één pixel is. Dit is gerealiseerd door een patroon met gekende afmetingen onder de microscoop te leggen en te kijken hoeveel pixels dit patroon voorstelt op de afbeelding van het patroon, gemaakt door de camera. Figuur 3.19 toont een kalibratiepatroon met de aangeduide afmetingen gemeten op het beeld van één camera op het scherm van de pc. De afmetingen van dit patroon zijn in werkelijkheid 1,01cm op 0,79cm. Om de nauwkeurigheid van het patroon te bepalen moet men de werkelijke afmetingen van het patroon vergelijken met het aantal pixels dat hiermee overeenkomt op de afbeelding gemaakt door de camera. De camera heeft een resolutie van 1280 op 960. De beelden die door de camera’s geproduceerd worden zijn dus 1280 pixels breed en 960 pixels hoog. Er moet eerst berekend worden door hoeveel pixels het patroon voorgesteld wordt in de breedte en de hoogte. Dit kan gedaan worden door de afmetingen van het patroon met de afmetingen van de totale afbeelding te combineren. Na het uitvoeren van deze berekeningen werd er een gemiddelde breedte en hoogte van één pixel met afmetingen van 13 micron bekomen. Dit geeft een idee van de grootteorde van de resolutie die het kalibratiepatroon zal moeten hebben. Aangezien er een vuistregel bestaat die zegt dat de resolutie een factor 10 kleiner 34 Opbouw en kalibratie van een opstelling voor stereo-microscopie Figuur 3.19: Nauwkeurigheid kalibratiepatroon is dan de nauwkeurigheid zal de resolutie van het kalibratiepatroon rond de 1 micron moeten liggen. Figuur 3.20 geeft het uiteindelijke kalibratiepatroon weer. Dit patroon is 0,9 cm breed en 0,7 cm hoog en bestaat uit 9 op 7 vierkantjes van 1 mm2 . 3.5.2.3 Bepalen van de interne cameraparameters De interne cameraparameters heeft men nodig alvorens de externe te kunnen bepalen. De algemene projectiematrix met de interne parameters wordt als volgt weergegeven [30]. Camera kalibratiematrix algemeen   f  Cx f Cy  1 (3.7) f = de focusafstand Cx = de x-coördinaat van het middelpunt van de camera-sensor uitgedrukt in pixels Cy = de y-coördinaat van het middelpunt van de camera-sensor uitgedrukt in pixels Deze voorstelling van de camera kalibratiematrix geldt echter niet voor een CCD-camera. Hiervoor dienen enkele parameters veranderd te worden. Bij een CCD-camera kan het zijn dat de pixels niet vierkantig maar eerder rechthoekig zijn. Onderstaande formules houden rekening met breedte en hoogte van één pixel. 3.5 Software voor interfacen en kalibratie van camera’s 35 Figuur 3.20: 3D-geprint kalibratiepatroon Camera kalibratiematrix CCD-camera   αx X0  αy Y0  1 (3.8) αx = f · mx = de focusafstand maal het aantal pixels per grootorde-eenheid αy = f · my = de focusafstand maal het aantal pixels per grootorde-eenheid X0 = mx · Cx = het middelpunt van de sensor maal het aantal pixels per grootorde-eenheid Y0 = my · Cy = het middelpunt van de sensor maal het aantal pixels per grootorde-eenheid 3.5.2.4 Bepalen van de externe cameraparameters Zoals reeds beschreven in sectie 3.4 geven de externe cameraparameters de positie van de twee camera’s ten opzichte van elkaar weer. Dit wordt gedaan door de essentiële matrix E op te meten die de transformatie van het assenstelsel van de eerste camera Σ1c naar het assenstelsel van de tweede camera Σ2c weergeeft. Het opmeten van deze matrix gebeurt door features uit beide camerabeelden te combineren om zo de transformatie te kunnen opstellen. Deze transformatie bestaat uit een rotatie en een translatie. Deze transformatie wordt gecombineerd met de interne cameraparameters waardoor men de fundamentaalmatrix T bekomt. Wanneer men dan een punt uit de afbeelding van de ene camera neemt, kan men dit punt terugvinden op de afbeelding van de andere camera. 3.5.2.5 Opbouw van het 3D-beeld Alvorens beelden in 3D te kunnen produceren, dienen de camera’s gekalibreerd te worden. Het kalibreren van beide camera’s afzonderlijk verliep vrij vlot. Hieruit konden de interne cameraparameters gehaald worden. Vervolgens dienden de camera’s gelijktijdig gekalibreerd te 36 Opbouw en kalibratie van een opstelling voor stereo-microscopie worden om de externe parameters te weten te komen. Hierbij kwamen er enkele problemen kijken. Om de stereo-kalibratie te kunnen starten, moesten de camera’s gesynchroniseerd zijn. Deze synchronisatie zat normaal gezien geïmplementeerd in het ROS-pakket van de cameradrivers. Wanneer er één camera als slave en de andere als master ingesteld was bleek dit niet te werken. Na controle van de broncode werd duidelijk dat in de configuratie file van de cameradrivers de synchronisatie niet meer geïmplementeerd was. Dit is dan gemeld en wanneer het pakket een tijd later nog eens geherinstalleerd werd, bleek dit wel terug te werken. Gezien dit noodzakelijk was om de stereo-kalibratie uit te kunnen voeren, heeft het lang geduurd alvorens de stereo-kalibratie te kunnen testen. 3.5.3 Uitvoering van de kalibratie in ROS Bij het kalibreren van de camera’s moest er tevens gezorgd worden dat de focusafstand van beide camera’s gelijk was. De camera’s zijn op de microscoop bevestigd door middel van twee bevestigingsarmen die beide een manueel instelbare focus hebben zoals aangeduid op figuur 3.6. Uit de gegevens die je door de kalibratie bekomt, kan je de focusafstand halen. Dit werd getest door één camera afzonderlijk te kalibreren. Aangezien er eerst nog geen nauwkeurig patroon ter beschikking was, is er getracht om een idee te krijgen over de focusafstand door gebruik te maken van een op papier afgedrukt patroon. Wanneer de camera’s bij verschillende standen van de manuele focus gekalibreerd werden en deze resultaten werden vergeleken, bleek er geen logisch verband te zijn tussen de verschillende standen van de manuele focus. Om die reden zijn er dan bij eenzelfde stand van de manuele focus verschillende kalibraties uitgevoerd en werden er steeds ver uiteenliggende waarden van de cameraparameters bekomen. Er werd vervolgens getracht om het verloop van het kalibratieproces zoals beschreven in sectie 3.5.2.1 steeds nauwkeuriger uit te voeren. Uiteindelijk werd er een opstelling bekomen die nauwkeurig genoeg zou moeten zijn om de camera’s te kalibreren. Het kalibratiebed beschreven in sectie 3.2.4 werd hiervoor gebruikt. Spijtig genoeg bleken ook hier de cameraparameters niet te kunnen kloppen. Uiteindelijk werd het kalibratie-proces op een iets andere wijze uitgevoerd. Tabel 3.3 en 3.4 vat de resultaten van deze laatste testen samen. Deze resultaten zijn reeds beter, doch hangen nog steeds af van hoe goed het kalibratieproces uitgevoerd wordt. Bij meting één van de linker camera komen de focusafstanden vrij goed overeen en liggen de gemeten middelpunten bijna op het echte middelpunt van de sensor. Dit is bij meting vier van de rechter camera ook het geval. De rest van de metingen wijken iets harder hiervan af. Het kalibratieproces moet dus meerdere keren uitgevoerd worden tot er een goede kalibratie gedaan is. Vervolgens werden er testen gedaan met het uitvoeren van de stereo-kalibratie. Deze kalibratie is eveneens enkele keren uitgevoerd. Tijdens de stereo-kalibratie werden zowel de interne als de externe cameraparameters tegelijk berekend. Op de resultaten van de stereo-kalibratie, weergegeven in tabel 3.5, is te zien dat de bekomen cameraparameters niet realistisch zijn. Hieruit bleek dat de kalibratie van de microscoopopstelling op deze manier niet uitgevoerd kon worden. 3.6 Conclusie 37 Kalibratie parameters linker camera 1 2 3 meting Focusafstand fx fy Middelpunt sensor Cx Cy Distortie Distortie 1 Distortie 2 Distortie 3 Distortie 4 4 41698,77 41794,07 66025,79 62009,87 145797,84 167518,85 48295,82 47499,65 639,517 479,51 639,06 479,33 639,95 475,3 635,83 478,52 -1,251332 -15322,58 -0,00687 -0,02071 -12,89459 0,1225 -0,07257 -0,08205 -92,87642 0,00289 0,092936 -0,14805 -11,62576 0,13613 0,01901 -0,08499 Tabel 3.3: Resultaten kalibratie linker camera 3.6 Conclusie Dit hoofdstuk omschrijft al de benodigde elementen om een stereo camerasysteem te gebruiken en te begrijpen. De kalibratie van het camerasysteem is nog niet kunnen uitgevoerd worden. Er is er tot de conclusie gekomen dat een convergerende camera setup zoals een digitale stereo microscoop niet gekalibreerd kan worden door de algoritmes die tot op heden in ROS worden gebruikt. Als reden voor het falen van de stereo-kalibratie kan aangehaald worden dat het dept-of-field van de camera waarschijnlijk te beperkt is voor de huidige opstelling. Door het kalibratiepatroon nog verder te miniaturiseren zou dit probleem normaal gezien opgelost kunnen worden. Referentie [31] beschrijft een andere methode om toch de kalibratie van de microscoop te kunnen uitvoeren. Deze methode is in dit werk niet geïmplementeerd kunnen worden wegens tijdgebrek. 38 Opbouw en kalibratie van een opstelling voor stereo-microscopie Kalibratie parameters rechter camera 1 2 3 meting Focusafstand fx fy Middelpunt sensor Cx Cy Distortie Distortie 1 Distortie 2 Distortie 3 Distortie 4 4 49977,91 44520,41 81636,3 91214,9 90400,96 85950,46 86889,76 84911,12 643,28 479,38 639,62 479,98 639,56 479,46 637,75 479,76 -9,54522 -0,08371 0,05251 -0,02716 -34,79924 -0,059536 -0,04414 0,11043 -20,87754 -0,05802 -0,03761 0,1369 -35,06847 -0,16243 -0,06342 0,17009 Tabel 3.4: Resultaten kalibratie rechter camera meting Focusafstand fx fy Middelpunt sensor Cx Cy Afwijking Cx Afwijking Cy Resultaten stereo-kalibratie cameraparameters linker camera cameraparameters rechter camera 1 2 3 1 2 3 72531 72531 131635 131635 87031 87031 72531 72531 131635 131635 87031 87031 67656 67656 0 0 15314 619186 0 0 12024 91220 0 0 67656 67656 -37742 0 15314 619186 0 -74357 12024 91220 0 -7684 Tabel 3.5: Resultaten stereo-kalibratie Hoofdstuk 4 Ontwikkeling van het beeldverwerkingssysteem In dit werk is reeds uitgelegd hoe de opbouw van het camerasysteem eruitziet en hoe de kalibratie van de opstelling gedaan kan worden. Het volgende hoofdstuk geeft weer hoe het beeldverwerkingssysteem is opgebouwd. Hierbij werd gebruik gemaakt van OPENCV en matlab als hulpmiddelen. OPENCV is de afkorting van open computer vision. Dit zijn gratis bibliotheken van algoritmes die gebruikt worden voor beeldverwerking. Deze bibliotheken zijn geschreven in de programmeertaal c/c++. Matlab is dan weer een programma dat voor allerhande domeinen kan gebruikt worden zoals signaalverwerking en beeldverwerking. Het beeldverwerkingssysteem kan opgesplitst worden in drie aparte delen: • De detectie van aders in het netvlies van het oog • Het aanduiden van de in te spuiten ader op één camerabeeld • Het volgen van een chirurgische naald in een oog De programma-code is terug te vinden op de bijgevoegde CD-ROM. Bij de code zit ook een handleiding over hoe de code kan gebruikt worden in de ROS omgeving. 4.1 Detectie van aders in het netvlies van het oog Na enkele initiële testen om de aders van het netvlies te visualiseren, bleek het interessanter om eerst onderzoek te doen naar bestaande aderdetectie-algoritmes. Deze werden reeds beschreven in sectie 2.2.1. Het detecteren van de aders wordt gebruikt om de positie van de in te spuiten ader beter te visualiseren voor de chirurg. Voor de uiteindelijke detectie is er gebruik gemaakt van de Gabor filter. Op figuur 4.1 ziet u het oorspronkelijke beeld en figuur 4.2 geeft de aderdetectie weer. 40 Ontwikkeling van het beeldverwerkingssysteem Figuur 4.1: Beeld van het test−oog Figuur 4.2: Aderdetectie Figuur 4.3: Aangeduide ader op linker en rechter camerabeeld 4.2 Het aanduiden van de in te spuiten ader op één camerabeeld Hierbij is het de bedoeling dat er op het beeld van één camera de in te spuiten ader wordt aangeduid. Dit punt moet dan teruggevonden worden in het beeld van de andere camera. Wanneer men manueel twee punten zou aanduiden, zou het heel moeilijk zijn om exact hetzelfde punt in het andere beeld aan te duiden. Wanneer er op één van beide camerabeelden met de muis een ader wordt aangeduid, zal een deel van dit camerabeeld, met als middelpunt de aangeduide ader, gebruikt worden om dit punt terug te vinden in het andere camerabeeld. Hiervoor wordt de reeds in sectie 2.2.2 beschreven techniek van template matching gebruikt. Eenmaal de ader in het andere camerabeeld teruggevonden is, kan dit template gebruikt worden om de positie van de ader te controleren. Wanneer het camerabeeld een klein beetje verschuift door beweging van het oog van de patiënt zal dit punt nog steeds teruggevonden worden in beide camerabeelden. Figuur 4.3 geeft het resultaat van het aanduiden van een ader op enkel het rechtse beeld. Hierop kun je zien dat op beide beelden dezelfde ader omkaderd is. 4.3 Het volgen van een chirurgische naald 41 Figuur 4.4: Naalddetectie na kleursegmentatie Figuur 4.5: Naalddetectie 4.3 Het volgen van een chirurgische naald Hierbij is het de bedoeling om enkel de punt van de naald te visualiseren in het beeld. Dit wordt gerealiseerd door op basis van kleursegmentatie de naald te visualiseren. Het resultaat van deze segmentatie is een zwart-wit beeld waarbij bijna enkel de naald gevisualiseerd wordt. Enkel de kleuren die je zoekt, worden hierbij in het wit weergegeven. Figuur 4.4 geeft het beeld weer na de kleurdetectie. Vervolgens wordt op dit zwart-wit beeld de Hough-transformatie toegepast om de locatie van lijnen in het beeld te detecteren. Wanneer men de parameters van het Houghalgoritme juist instelt, bekomt men enkel de coördinaten van de lijnen die samenvallen met de naald. Vervolgens moet enkel de coördinaat van de punt van de naald in beide camerabeelden gevonden worden. Aangezien de chirurg weet waar de naald het oog zal binnenkomen, kan de naalddetectie vereenvoudigd worden. Men kan de naalddetectie hints geven door enkel de coördinaten die binnen een bepaald gebied in de afbeelding liggen te gebruiken. Figuur 4.5 geeft van links naar rechts het beeld voor en na de naalddetectie weer. Wanneer dit in beide beelden gerealiseerd wordt, kan de 3D-coördinaat van de punt van de naald berekend worden. Aangezien de 3D-coördinaten van maar twee punten gebruikt worden, is het niet nodig om heel 42 Ontwikkeling van het beeldverwerkingssysteem het beeld om te zetten naar 3D. Dit zal veel minder rekenkracht en tijd van de pc vergen. 4.4 Conclusie In dit hoofdstuk werd besproken hoe de verschillende delen van het beeldverwerkingssysteem opgebouwd zijn en wat het resultaat hiervan is. Wanneer de kalibratie van de opstelling gelukt zou zij, zou de 3D coördinaat van zowel de aangeduide ader en de punt van de naald bepaald kunnen worden. Het afstandsverschil zou dan naar de robot, die in hoofdstuk 5 besproken wordt, gestuurd kunnen worden. Hoofdstuk 5 Robotsturing gebaseerd op beeldverwerking Het volgende hoofdstuk bespreekt de hardware en de software van de reeds ontwikkelde slave robot. De aangepaste labviewcode is ook terug te vinden op de bijgevoegde CD-ROM. Hierbij is enkel de aangepaste code toegevoegd aangezien de opbouw van de robot niet mag besproken worden. 5.1 Principe De aansturing van de robot gebeurt door een FPGA die geprogrammeerd en aangestuurd wordt vanuit Labview. De FPGA bevindt zich in een compactRIO van National Instruments [32]. Dit maakt het heel eenvoudig om via labview de FPGA te programmeren en uit te lezen. Op de FPGA kunnen verschillende soorten expansiemodules worden aangesloten. De robot wordt aan de hand van zo een expansie module aangestuurd. De compactRIO bevat ook twee ethernetpoorten waarvan er één wordt gebruikt voor het aansturen en programmeren van de robot en de andere zal gebruikt worden om de robot aan te sturen aan de hand van de beeldverwerking die op een andere pc gerealiseerd wordt. Om de robot aan te sturen aan de hand van de gerealiseerde beeldverwerking zal het UDPprotocol gebruikt worden. Dit is sneller in vergelijking met het TCP-protocol omdat er een kleinere header meegestuurd wordt, er niet aan foutcontrole gedaan wordt en er telkens maar kleine commando’s verzonden dienen te worden naar de robot. Omdat er hier met een punt tot punt verbinding gewerkt wordt, is de kans dat er fouten doorgestuurd worden heel klein. De bedoeling van de beeldverwerking is enerzijds om de coördinaten van de tip van de naald te bepalen en anderszijds om de afstand te bepalen tussen dit punt en de in te spuiten ader. De verplaatsing langs de x,y en z-as moet dan als parameter doorgestuurd worden naar de robot. Alvorens deze afstanden naar de robot door te sturen, moet er echter een transformatie gedaan worden van het camera-assenstelsel Σc naar het robot-assenstelsel Σr . Op figuur 5.1 zie je een voorbeeld van een dergelijke transformatie. Om het ene assenstelsel gelijk te stellen aan het andere moeten op het voorbeeld zowel de x-as en de z-as verdraaid worden. Omdat er een afstand 44 Robotsturing gebaseerd op beeldverwerking Figuur 5.1: Voorbeeld assenstelsel transformatie naar de robot wordt doorgestuurd, zal er hierbij geen translatie gedaan hoeven te worden om de assenstelsels te laten overlappen. Wanneer de afstanden binnenkomen aan de robotzijde dienen deze omgerekend te worden naar verplaatsingscommando’s van de robot’s actuatoren. Deze omzetting, de zogenaamde ‘inverse kinematica’ was reeds geïmplementeerd in het bestaande regelsysteem van de robot. Figuur 5.2 toont je hoe het volledige stuurprogramma van de robot eruitziet. De regeling gebeurt aan de hand van de hoekverdraaiing van de motoren van de robot. qd stelt de hoek voor naar waar de desbetreffende motor moet bewegen. Deze hoek wordt vergeleken met de actuele positie van de robot en vervolgens wordt de desired of fouthoek qd bekomen. De PID−regelaar zorgt ervoor dat de motor gecontroleerd naar deze positie beweegt. De positie qa wordt vervolgens teruggekoppeld naar de ingang om ervoor te zorgen dat de fouthoek qd 0 graden zal worden. Dit regelsysteem bestaat uit een PID-regelaar waarbij de stijfheid en de demping van de motoren kan ingesteld worden. Er werden eveneens limieten ingesteld op de beweging van de naald. De robot kan dus maar in een bepaald afgebakend volume bewegen. Figuur 5.2: Regelsysteem robot 5.2 Kalibratie van de robot 45 Figuur 5.3: DC−motor met encoder 5.2 Kalibratie van de robot Aangezien de master-slave robot normaal gezien enkel bediend zou worden door een chirurg was er geen nauwkeurige terugkoppeling van de positie nodig. Wanneer door de beeldverwerking naar de robot een afstand gestuurd wordt, moet er gezorgd worden dat de robot deze afstand nauwkeurig aflegt. De stand van de motoren van de robot kan uitgelezen worden door middel van encoders. Encoders zijn detectoren die feedback geven over de positie van een motor die hierop aangesloten is. Hieruit wordt de hoekverdraaiing van de motor in graden uitgelezen. De encoders, gemonteerd op de motoren van de robot, bleken niet juist afgesteld te staan. Deze konden gecorrigeerd worden door een correctiefactor bij de encoderwaarden op te tellen. Omdat men bij bepaalde posities van de robot de output van de encoder kent, kan men deze vergelijken met de opgemeten waarde en hieruit de correctiefactor berekenen. Dit wordt dan herhaald voor de andere twee encoders. Aangezien de opbouw van de robot niet besproken mag worden, kan ik hier geen afbeelding van laten zien. Figuur 5.3 geeft een voorbeeld van een motor met op de achteras een encoder gemonteerd. 5.3 Uitgewerkte architectuur Het stuurprogramma van de robot is als volgt opgebouwd. Aan de hand van de beeldverwerking wordt de afstand tussen de positie van de naald en de in te spuiten ader bepaald. Deze afstand wordt vervolgens doorgestuurd naar de compactRIO door gebruik te maken van het reeds vermelde UDP-protocol. Het bestaande labview-programma is aangepast om de huidige opstelling te laten functioneren. Er moest gezorgd worden dat de robot de afstand tussen de naald en de in te spuiten ader kon binnenlezen. Figuur 5.4 geeft de inlezing van de x,y en z verplaatsing weer. 46 Robotsturing gebaseerd op beeldverwerking Aangezien er geen zoom-functie beschikbaar is in labview zou het onoverzichtelijk zijn om de rest van het programma als afbeelding in te voegen. De rest van het labview-programma kan teruggevonden worden op de bijgevoegde CD-ROM. Figuur 5.4: Inlezen afstanden in labview Wanneer deze gegevens binnengelezen zijn, zal het PID-regelsysteem de robot naar de gewenste coördinaten positioneren De PID-regelaar die weergegeven wordt in figuur 5.2 bestaat uit de volgende drie elementen [33]: • P-actie: Het verschil tussen de gewenste waarde en de foutwaarde wordt met een bepaalde factor vermenigvuldigd • I-actie: De integrerende term zorgt voor een constante sommatie van de fout en zal de fout beter wegregelen • D-actie: De differentiërende term wordt minder gebruikt. Deze actie reageert op de snelheid van de verandering van de fout. Hoe groter de fout, hoe sneller deze zal bijregelen. 5.4 Conclusie Dit hoofdstuk geeft een idee over de aanwezige infrastructuur van de robot en de aanpassingen die nodig waren om het beeldverwerkingssysteem hiermee te interfacen. Alle elementen beschreven in dit en vorige hoofdstukken worden nu bijeengevoegd en besproken in volgend hoofdstuk 6 dat de experimentele resultaten in meer detail bespreekt. Hoofdstuk 6 Experimenten Dit hoofdstuk beschrijft de uitgevoerde testen aangaande de sturing van de robot en de uitwerking van het beeldverwerkingssysteem. Hierbij worden eerst de testen aangaande de werkende delen van de beeldverwerking uitgelegd. Vervolgens wordt uitgelegd wat er gedaan diende te worden om de robot te kunnen bedienen aan de hand van deze beeldverwerking. 6.1 6.1.1 Testen aangaande het beeldverwerkingssysteem Testen van aderdetectie Het detecteren van de aders in het netvlies van een oog bleek vrij lastig te zijn. De uiteindelijke realisatie van deze detectie bleek van veel parameters af te hangen en bij toepassing op andere beelden moesten deze parameters opnieuw ingesteld worden. Hierbij was het ook niet nuttig om zelf diepgaand onderzoek naar een eigen implementatie van een geoptimaliseerd algoritme te doen aangezien er rond dit principe al veel onderzoek gedaan was. Figuur 6.1 geeft het beeld van het test-oog weer en figuur 6.2 geeft het resultaat weer van de testen die ik gedaan heb met een opgenomen beeld. Hierbij is lang gezocht naar de juiste instelling van de verschillende parameters die dit algoritme gebruikt. 6.1.2 Testen van het aanduiden van een ader Bij dit onderdeel moest er gekeken worden naar hoe goed het beeld van de aangeduide ader teruggevonden werd in het andere camerabeeld. Hierbij is er gekeken naar het uiteindelijke resultaat van de detectie die door middel van een rechthoek rond de plaats van de ader gebeurde. In het midden van deze rechthoek werd er tevens een punt weergegeven van de plaats waarop de aangeduide ader zich bevond. Ook de coördinaten van de plaats van de ader in beide beelden werd in de terminal geprint. Bij deze techniek was het wel noodzakelijk dat er een ader aangeduid werd. Wanneer men bijvoorbeeld een aanduiding doet op een plaats waar er zich geen ader bevond, kan het zijn dat er geen juiste overeenkomst gevonden werd. Hiermee is rekening gehouden doordat de chirurg na het aanduiden kan controleren of de overeenkomst in 48 Experimenten Figuur 6.1: Beeld van het test−oog Figuur 6.2: Aderdetectie beide beelden wel juist kan zijn. Wanneer dit niet het geval is, kan de chirurg een andere plaats aanduiden alvorens te starten met het detecteren van de naald. Figuur 6.2 geeft het resultaat van deze aanduiding weer en de coördinaten van de positie van meerdere aanduidingen wordt in tabel 6.1 weergegeven. Figuur 6.3: Aderdetectie 6.1.3 Testen van het volgen van een naald Bij deze techniek was het de eerste stap om enkel de naald te kunnen detecteren in het oog. Dit werd gedaan aan de hand van kleursegmentatie. Hierbij moest, bij het afstellen van de parameters van het algoritme, een afweging gemaakt worden tussen het weergeven van enkel de naald op dit tussenresultaat met hierbij het risico een deel van de naald te verliezen of een beeld te bekomen waarbij nog enkele delen van het beeld behouden blijven. Er is geopteerd om dit laatste toe te passen aangezien het belangrijk was om de juiste positie van de punt van de naald weer te kunnen geven. Aangezien de naalddetectie op beide beelden op dezelfde manier verloopt, worden de resultaten op enkel het linker camerabeeld weergegeven. Figuur 6.4 geeft het tussenresultaat weer waarbij enkel de naald gevisualiseerd wordt in één van de camerabeelden en figuur 6.5 geeft de voledige naald weer met nog een klein deel van het overige beeld. Figuur 6.6 geeft van links naar rechts het inputbeeld, het beeld na kleursegmentatie en 6.2 Testen van de aansturing van de slave robot 49 Coördinaten aangeduide ader Ader linker camera Ader rechter camera coördinaat x y x y Meting 1 999 307 914 339 Meting 2 915 496 831 527 Meting 3 935 627 1045 637 Meting 4 964 671 888 704 Meting 5 1056 260 972 292 Tabel 6.1: Testen aderaanduiding Figuur 6.4: Slechte detectie van de naald de naalddetectie. Dit beeld geeft weer dat wanneer er geen naald in het beeld aanwezig is er ook geen aanduiding gebeurt van de naald. Wanneer dit wel zou gebeuren zouden de verkeerde gegevens naar de robot gestuurd worden. Figuur 6.7 geeft dezelfde afbeeldingen weer met hierop een naald weergegeven in het beeld. Op het rechter beeld zie je de aanduiding van de punt van de naald. Tabel 6.2 geeft enkele coördinaten weer van de detectie van de punt van de naald in het beeld. Coördinaten van de punt van de naald coördinaat x y Meting 1 756 607 Meting 2 768 548 Meting 3 778 528 Meting 4 800 447 Meting 5 850 346 Tabel 6.2: Testen naalddetectie 6.2 Testen van de aansturing van de slave robot Bij het testen van de robot moest eerst gekeken worden naar de opbouw van de bestaande labviewcode. De volgende stap was, zoals in sectie 5.2 uitgelegd, om de robot beter te kalibreren 50 Experimenten Figuur 6.5: Goede detectie van de naald Figuur 6.6: Naalddetectie zonder naald alvorens hiermee testen te doen. Dit werd gedaan door de robot op bepaalde posities te plaatsen waarvan men de output van de encoders kende. Hierdoor konden de correctiefactoren van de verschillende encoders bepaald worden. Na de kalibratie moest er gekeken worden hoe het programma aangepast diende te worden om afzonderlijk van de master robot te kunnen functioneren. Hierbij is er eerst gekeken om vanuit het labview programma zelf de robot te bedienen en vervolgens vanuit de linux-pc waarop de beeldverwerking gerealiseerd wordt. Alvorens vanaf de linux-pc cördinaten te kunnen sturen, moest uitgezocht worden hoe deze pc met de compactRIO geïnterfaced kon worden. De communicatie is uiteindelijk gerealiseerd door het UDP-protocol te implementeren aan de hand van c programmatuur. Dit was vrij eenvoudig te realiseren. Aangezien de kalibratie van de camera’s nog niet gerealiseerd was, kon het totale systeem nog niet in zijn geheel getest worden. Om de aansturing van de robot vanaf de linux-pc te testen zijn er dus enkele coördinaten gebruikt waarvan geweten was dat deze binnen de limieten van de robot lagen. Wanneer deze coördinaten vervolgens naar de robot gestuurd werden, bewoog de robot ongeveer naar de gewenste positie. Er zat echter een fout op van ongeveer 3 mm ten opzichte van de gewenste positie. De reden van deze fout is dat de integrerende-actie van de regelaar van de robot, die op het einde pas toegevoegd is, nog niet juist ingesteld is. 6.2 Testen van de aansturing van de slave robot Figuur 6.7: Naalddetectie met naald 51 52 Experimenten Hoofdstuk 7 Conclusie In dit werk werden een aantal beeldverwerkingstechnieken onderzocht die gebruikt kunnen worden om computergestuurde assistentie te verlenen aan chirurgen tijdens precieze microchirurgische intra-oculaire ingrepen. Hiertoe werd een operatie-microscoop type Leica M690 omgebouwd tot een digitale meetmicroscoop. Een interface met ROS werd opgebouwd die toelaat alle beelden van de operatie op te nemen en te analyseren. Een aantal beeldverwerkingstechnieken werden uitgetest op retinale beelden, zoals onder meer aderdetectie d.m.v. Gabor filter, naalddetectie d.m.v. Hough transformaties en template matching om corresponderende delen in camerabeelden terug te vinden. Bovendien werd een protocol voorgesteld om op automatische wijze een cannulatie uit te voeren. Dit gaat als volgt. Eerst wordt door de chirurg de in te spuiten ader aangeduid op de digitale afbeelding van het oog van de patiënt. Vervolgens wordt de aangeduide ader geëxtraheerd. De patiënt wordt dan onder de operatiemicroscoop gelegd. Er zal door de chirurg een naald in het oog gebracht worden tot deze door de camera’s gedetecteerd wordt. De 3D-coördinaten van zowel de punt van de naald en de aangeduide ader worden bepaald. Hierdoor kan de afstand tussen de punt van de naald en de ader worden berekend. Na het doorsturen van deze afstand naar de robot zal deze naar de gewenste positie bewegen. Een UDP interface tussen beeldverwerkingssysteem en de robotcontroller werd opgebouwd en het is nu mogelijk om de robot (en hiermee de naald die de robot vasthoudt) rechtstreeks te sturen vanop afstand en technieken zoals visual servoing toe te passen op basis van één camerabeeld. Om de diepte te schatten kan gebruik gemaakt worden van de schaduw van de naald die via een kleurfilter uit het camera-beeld kan geëxtraheerd worden. Een alternatieve methode die werd onderzocht is om via stereovisie 3D representaties van naald en retina af te leiden en deze informatie rechtstreeks te gebruiken om de cannulatie uit te voeren. Stereo-kalibratie van de op de microscoop gemonteerde camera’s is geen evidente zaak en er werd veel moeite gedaan om een degelijke test-opstelling te bouwen om dergelijke kalibratie mogelijk te maken. Een uiterst precies kalibratiepatroon werd geprint en geplaatst op een speciaal ontworpen mechanisch kalibratiemechanisme. Kalibratietesten gaven spijtig genoeg onvoldoende consistente resultaten. Als reden voor het falen van de stereo-kalibratie kan aangehaald worden dat het dept-of-field van de camera waarschijnlijk te beperkt is voor de huidige opstelling. Door het kalibratiepatroon nog verder te 54 Conclusie miniaturiseren zou dit probleem normaal gezien opgelost kunnen worden. Een verdere bijdrage van dit werk bestaat uit een manier om de 3D voorstelling van de aan te prikken aderlocatie te bepalen door gebruik te maken van template matching. Deze manier zou toelaten om met minimale computing power en dus op hoge snelheid de ader locatie te volgen. Dit is nodig om in een later stadium in staat te zijn om compensatie van hoofd-bewegingen van de patiënt mogelijk te maken en dus een extra veiligheid in het systeem in te bouwen. Deze thesis onderzocht enkele beeldverwerkingstechnieken om computergestuurde assistentie tijdens uiterst precieze microscopische intra-oculaire ingrepen mogelijk te maken. Hoewel verder onderzoek nodig is om op betrouwbare wijze de volledige lus te sluiten en op automatische wijze een cannulatie uit te voeren, werd het potentieel van beeldverwerking duidelijk aangetoond. Extra moeite dient gedaan te worden om de stereo-kalibratie tot een goed einde te brengen. Vervolgens dient aandacht te gaan naar ontwikkelen van manieren om de robuustheid (betrouwbaarheid) van de voorgestelde aanpak te verhogen. Dit kan door de expertise van de chirurg maximaal te blijven gebruiken tijdens de operatie, door alternatieve/redundante beeldverwerkingstechnieken in parallel toe te passen en de consistentie van de resultaten te bewaken of door methoden te ontwikkelen die specifiek trachten de invloed van stoorfactoren zoals belichting, beweging van patiënt te voorspellen of beperken. Bibliografie [1] Y. Zhang, W. Hsu, and M. L. Lee, “Detection of retinal blood vessels based on nonlinear projections,” J Sign Process Syst, vol. 55, pp. 103–112, 2009. [2] G. Welch and G. Bishop, “An introduction to the kalman filter,” University of North Carolina, Tech. Rep., 2007. [3] D. Wu, M. Zhang, and J.-C. L., “On the adaptive detection of blood vessels in retinal images,” Texas A&M University, Tech. Rep., March 24 2005. [4] T. Chanwimaluang, G. Fan, and S. R. Fransen, “Hybrid retinal image registration,” IEEE TRANSACTIONS ON INFORMATION TECHNOLOGY IN BIOMEDICINE, vol. 10, 2006. [5] M. Sofka and C. V. Stewart, “Retinal vessel centerline extraction using multiscale matched filters, confidence and edge measures,” IEEE TRANSACTIONS ON MEDICAL IMAGING, vol. 25, 2006. [6] S. Grigorescu, N. Petkov, and P. Kruizinga, “Comparison of texture features based on gabor filters,” IEEE Trans. on Image Processing, vol. 11, pp. 1160–1167, 2002. [7] [Online]. Available: http://matlabserver.cs.rug.nl/cgi-bin/matweb.exe [8] R. Hanek and M. Beetz, “The contracting curve density algorithm: Fitting parametric curve models to images using local self-adapting separation criteria,” the International Journal of Computer Vision, vol. 59, pp. 233–258, 2004. [9] C.Staub, G.Panin, A. Knoll, and R. Bauernschmitt, “Visual instrument guidance in minimally invasive robot surgery,” International Journal on Advances in Life Sciences, vol. 2, p. 3 en 4, 2010. [Online]. Available: http://www.iariajournals.org/life_sciences/ [10] A. Großmann and R. Poli, “Robust mobile robot localisation from sparse and noisy proximity readings using hough transform and probability grids,” 1999. [11] D. H. Parks and S. S. Fels, “Evaluation of background subtraction algorithms with postprocessing,” International Conference on Advanced Video and Signal Based Surveillance, pp. 192–199, 2008. [12] C. I. Processing and P. R. Society, “Fast templatematching,” Canadian Image Processing and Pattern Recognition Society, pp. 120–123, 1995. [13] S. Hutchinson, G. Hager, and P. Corke, “A tutorial on visual servo control,” Robotics and Automation, IEEE Transactions on, vol. 12, pp. 651–670, 1996. 56 BIBLIOGRAFIE [14] D. Kragic and H. I. Christensen, “Survey on visual servoing for manipulation,” Computational Vision and Active Perception Laboratory, Fiskartorpsv, vol. 15, 2002. [15] [Online]. Available: http://www.oogziekenhuis.nl/oogaandoeningen-en-oogafwijkingen/ verdiepende-informatie/glasvochttroebelingen-behandelingen.html [16] “brochure eibos 2.” [Online]. Available: ophthalmology/eibos-2.html http://www.moeller-wedel.com/products/ [17] D. Litwiller and Dalsa, “Cmos vs. ccd,” Laurin Publishing, 2005. [Online]. Available: http://www.findthatfile.com/download.php?i=52455399&t=hPDF [18] D. Litwiller, “Ccd vs cmos: facts and fiction,” Photonics Spectra, pp. 475–486, 2003. [Online]. Available: http://www.cctv-dvr.co.uk/catalogue/cctv%20security% 20surveillance%20ip%20network%20dome%20camera%20articles/Photonics_Spectra_ CCDvsCMOS_Litwiller.pdf [19] A. Ryberg, A.-K. Christiansson, B. Lennartson, and K. Eriksson, “Camera modelling and calibration - with applications,” University West Sweden, Tech. Rep., 2008. [20] G. B. A. Kaehler, Learning Open CV, M. Loukides, Ed. O’Reilly Media Inc, 2008. [21] D. B. Gennery, “Generalized camera calibration including fish-eye lenses,” International Journal of Computer Vision, vol. 3, pp. 239–266, 2006. [22] K. J and S. S. Brandt, “A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 8, pp. 1335–1340, 2006. [23] H. J, “Geometric camera calibration using circular control points,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 10, pp. 1066–1077., 2000. [24] J. Liu, Y. Zhang, and Z. Li, “Selection of cameras setup geometry parameters in binocular sterevision,” IEEE, p. 6, 2006. [Online]. Available: http://citeseerx.ist.psu.edu/viewdoc/ download?doi=10.1.1.86.3239&rep=rep1&type=pdf [25] Depht approximation in digital imaging. [Online]. Available: http://sine.ni.com/nipdfgenerator/nipdfgenerator?pageURL=http://zone.ni.com/ devzone/cda/tut/p/id/8176&clientAppName=dz&dotsPerPixel=&dotsPerPoint= [26] P. Hillman, “White paper: Camera calibration and stereo vision,” Lochrin Terrace, Edinburgh EH3 9QL, Tech. Rep., Oktober 2005. [27] R. A. Hamzah and S. I. M. Salim, “Software calibration for stereo camera on stereo vision mobile robot using tsai’s method,” International Journal of Computer Theory and Engineering, vol. 2, pp. 1793 – 8201, 2010. [Online]. Available: http://www.ijcte.org/papers/173-G272.pdf [28] F. Cheng and X. Chen, “Intergration of 3d stereo vision measurements in industrial robot applications,” International Conference, 2008. [Online]. Available: http://www.ijme.us/cd_08/PDF/34_ENG%20102.pdf BIBLIOGRAFIE 57 [29] [Online]. Available: http://www.ros.org/wiki/ROS [30] R. Hartley and A. Zisserman, Multiple View Geometry in computer vision, C. U. Press, Ed. The Press Syndicate Of The University Of Cambridge, 2003. [31] H. Schreier, D. Garcia, and M. Sutton, “Advances in light microscope stereo vision,” Experimental Mechanics, vol. 44, pp. 278–288, 2004. [32] [Online]. Available: http://www.ni.com/compactrio/ [33] [Online]. Available: http://nl.wikipedia.org/wiki/PID-regelaar