Een digitale procedure voor analoge infraroodreflectografie. Een onderzoek naar een nieuwe methode voor het monteren van infraroodreflectogrammozaïeken.
Christian Montijn Leeuw van Vlaanderenstraat 74-4 1061 CT Amsterdam Tel.: 06-12842440 Studentnr.: 0796476
Afstudeerscriptie Studierichting alfa-informatica Rijksuniversiteit Groningen
Inhoud Voorwoord
5
1
Inleiding
2 2.1 2.2
Kennismaking met de infraroodreflectografie 9 Inleiding 9 Een chronologisch overzicht van de ontwikkelingen in de infraroodreflectografie 9 Kunsthistorisch onderzoek 9 Infraroodreflectografie in het beginstadium 10 Van Asperen de Boers aanpassingen 12 Verdere methodische verbeteringen 16 Nieuwe apparatuur 18 Het VASARI project 20 Digitale beeldverwerkingstechnieken 23 Het ideaal versus de praktijk 28 Experimenteel: het ideaal 28 Realiteit: beperkende factoren 28
2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.3 2.3.1 2.3.2 3 3.1 3.2 3.3
7
De huidige methode voor mozaïekmontage 30 Inleiding 30 De methode van het cluster kunstgeschiedenis aan de Rijksuniversiteit Groningen 30 Aanmerkingen op de methode 34
4 Softwarepakketten voor mozaïekmontage 35 4.1 Inleiding 35 4.2 PanaVue ImageAssembler 2.07 36 4.2.1 Achtergrond en eerste kennismaking 36 4.2.2 Procedure 36 4.2.3 Resultaten 40 4.3 VASARI Image Processing System (VIPS) 7.8.6 43 4.3.1 Achtergrond en eerste kennismaking 43 4.3.2 Technische beschrijving 45 4.3.3 Procedure 50 4.3.4 Resulaten 55 4.4 Een vergelijking van beide pakketten 58 5 5.1 5.2
Vernieuwingen voor de methode voor infraroodreflectografie Inleiding 59 De correctie van geometrische afwijkingen aan de randen 60
59
5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.4
Doel 60 Achtergrond en analyse van het materiaal 60 Segmentatie 61 Detectie van randen 63 Toepassing op de scans van infraroodreflectogrammen Wanneer vipscrop de fout in kan gaan 71 Automatische montage van mozaïeken 71 Doel 71 Achtergrond en analyse van het beeldmateriaal 72 Introductie in beeldregistratie 72 Methoden voor beeldregistratie 75 Toepassing op de scans van infraroodreflectogrammen Wanneer kan vipsmosaic de fout ingaan 87 Evaluatie 88
6
Conclusie
89
7
Literatuurlijst
A1 A2 A3 A4
Bijlagen Source vipscrop Source vipsmosaic Manual vipscrop Manual vipsmosaic
93
67
81
Voorwoord Ik ben een gletsjer. Traag ga ik mijn weg. Uiteindelijk kom ik wel beneden, het duurt alleen even. Obstakels zijn er wel, maar op een één of andere wijze weet ik er altijd wel om-, over- of doorheen te komen. Onderweg overspoelen vele druppels informatie mijn baan. Ik kan ze niet meer loslaten. Traag vervolg ik mijn weg naar het punt waarop ik alles wat ik in mij heb weer los kan laten. Uiteindelijk spreekt mijn tong zich wel uit en ontstaat er een net meertje met helder water, althans in mijn optiek. Zonder wolken was er natuurlijk geen gletsjer geweest; het zijn tenslotte de wolken die met hun regen de gletsjer voeden. Ik wil hier graag een aantal wolken bedanken. In de eerste plaats wil ik dr. Elwin Koster bedanken voor zijn ondersteuning en vooral zijn geduld. Mijn perfectionistische instelling staat een snelle afronding van projecten nogal eens in de weg. Verder wil ik dr. Leonie Bosveld en dr. Mollie Faries bedanken voor hun commentaar op het onderzoek. De cluster kunstgeschiedenis verdient een bedankje vanwege het ter beschikking gestelde materiaal dat een zeer belangrijk aandeel had in dit onderzoek. Drs. Heleen Boex en mijn ouders bedank ik voor het controleren van deze scriptie op taalfouten. Als laatste wil ik iedereen bedanken die op welke manier dan ook geduldig heeft gewacht op de afronding van dit onderzoek. Christian Montijn
5
6
1 Inleiding Hoewel er tegenwoordig kunstschilders zijn die zichzelf voor een doek plaatsen en hun zielenroerselen zonder enige vorm van voorbereiding op het canvas gestalte geven, bestaan er vele schilders die een gedegen voorbereiding niet uit de weg gaan. Zij bestuderen de te schilderen scène aandachtig, bekijken deze vanuit verschillende gezichtspunten en arrangeren objecten net zo lang tot er een compositie ontstaat, die de onrust uit hun ledematen doet verdwijnen. Een laatste stap moet nog worden genomen, voordat de schilder zijn kwast kan pakken en aan het echte werk kan beginnen. Snel pakt hij een potlood en schetst vluchtig een ruwe opzet van de compositie op het doek. Het maakt hem niet uit of de schets accuraat is, zij dient tenslotte slechts als een gids voor de kwast. Bovendien zullen de koolstoflijnen weldra verdwijnen onder een dikke laag verf en niet meer te zien zijn voor de toekomstige kijker... Of toch? Het cluster kunstgeschiedenis aan de Rijksuniversiteit Groningen doet al een aantal jaren onderzoek naar ondertekeningen in schilderijen. Ondertekening is een term voor de schets die een schilder maakt, voordat hij begint met schilderen. Met behulp van infraroodstraling kan een schets die zich onder een laag verf bevindt, zichtbaar worden gemaakt. Een ondertekening kan de onderzoeker veel vertellen over de geschiedenis van het schilderij. Het cluster maakt voor zijn onderzoek gebruik van een methode die lang niet meer herzien is. Het is nu bezig te zoeken naar manieren om de procedure te verbeteren. Er wordt bijvoorbeeld geëxperimenteerd met digitale infraroodapparatuur. Ondertussen ligt er nog een aantal oude projecten dat moet worden afgerond. Het gaat om mozaïeken van gescande foto's met ondertekeningen. Het doel van dit onderzoek is het definiëren van een nieuwe werkwijze die gebruikt kan worden voor zowel de nog liggende projecten als toekomstige projecten. Hiervoor wordt bestaande software geanalyseerd en, waar nodig, nieuwe software ontwikkeld. De onderzoeken tot nu toe richten zich voornamelijk op nieuwe technieken voor het zichtbaar maken van de ondertekening. Hierbij gaat het vooral om nieuwe apparatuur die kan worden gebruikt, of nieuwe technieken die een bepaalde meerwaarde aan het resultaat geven. Ik ben geen publicatie tegengekomen, waarin de auteur zich bezighield met het verbeteren van een methode om bestaande infraroodreflectogrammen te monteren, zodat in de totale montage de ondertekening het duidelijkst te zien is. Bovendien blijft in de bestaande onderzoeken de digitale beeldverwerking onderbelicht, terwijl deze zeer behulpzaam kan zijn. Hier ligt nog onontgonnen terrein en het is vooral op dit vlak dat het onderzoek naar een verbeterde methode zich concentreert. In het nu volgende hoofdstuk volgt een verkenning van de bestaande methoden. In eerste instantie zal de ontwikkeling van de infraroodtechnieken worden geschetst. Daarna zal een aantal huidige technieken van verschillende onderzoeksgroepen aan bod komen met een beschrijving van hun voor- en 7
nadelen. Zowel analoge als digitale technieken zullen de revue passeren. Aan het eind volgt een vergelijking met de ideale procedure en de praktische mogelijkheden. In hoofdstuk drie inventariseer ik eerst de procedure die het cluster nu volgt. Tevens zullen er een aantal kritische noten worden geplaatst met betrekking tot het gebruik van de software en specifiek de manier waarop digitale beeldverwerking wordt toegepast. Vervolgens komen in hoofdstuk vier twee softwarepakketten aan bod, die te gebruiken zijn voor het verbeteren van de procedure. De functionaliteit van deze hulpmiddelen zal grondig worden geanalyseerd. Met behulp van testmateriaal wordt aangegeven wat de sterke en zwakke punten van de programma's zijn. Waar nodig geef ik een inleiding in de digitale beeldverwerking om bepaalde functionaliteiten uit te leggen. Als laatste worden hun voordelen en nadelen vergeleken en uiteindelijk wordt bepaald welk programma het beste te gebruiken is in een nieuwe procedure. In hoofdstuk vijf volgt de verbetering van de methode van het cluster kunstgeschiedenis. Het in hoofdstuk vier gekozen programma wordt met betrekking tot de te gebruiken functionaliteit kort geanalyseerd. Daaruit blijkt dat het bestaande programma op twee vlakken kan worden verbeterd. Vervolgens valt het hoofdstuk uiteen in twee delen. In het eerste deel wordt een nieuw programma gepresenteerd, dat automatisch zwarte randen en geometrische verstoringen aan de randen van de reflectogrammen verwijdert. In deel twee komt het programma dat reflectogrammen automatisch kan registreren aan bod. In beide delen zal ik uitvoerig bespreken welke digitale beeldverwerkende technieken de programma's gebruiken. Een inleiding in de technieken van segmentatie en beeldregistratie is daarbij onontbeerlijk. Aan de hand van testmateriaal zal ik uiteindelijk kijken in hoeverre de beide programma's de methode van het cluster kunstgeschiedenis nu werkelijk hebben verbeterd. In het concluderende hoofdstuk zal er een beknopte beschrijving volgen van een nieuwe procedure voor het cluster kunstgeschiedenis aan de Rijksuniversiteit Groningen. Verder zal ik de ontwikkelde software kritisch onder de loep nemen en, waar mogelijk, voorstellen doen voor verbeteringen aan de door mij ontwikkelde software.
8
2 Kennismaking met de infraroodreflectografie 2.1 Inleiding Infraroodreflectografie vormt tegenwoordig een belangrijk onderdeel van het kunsthistorisch onderzoek naar schilderijen. Licht uit het infrarode deel van het spectrum stelt de kunsthistoricus in staat de ondertekening van een schilderij zichtbaar te maken. Op basis van de kenmerken van deze schetsen wijzen kunsthistorici schilderijen toe aan een schilder of aan een groep van schilders rondom een meester. Schilderijen die onderzoekers op basis van uiterlijke kenmerken niet in konden delen, blijken aan de hand van hun ondertekeningen wel toegewezen te kunnen worden.1 Infraroodreflectogrammen verschaffen ook voor de restauratie van schilderijen belangrijke informatie, doordat de ondertekening een beter inzicht in de bedoeling van de schilder geeft.2 Dit hoofdstuk zal zich richten op de vraag welke methoden en technieken tot nu toe bestaan voor het zichtbaar maken van deze ondertekening. Aan bod komen de manieren waarop het infraroodbeeld met behulp van apparatuur zichtbaar kan worden gemaakt en methoden om het verkregen beeld achteraf te verbeteren. Het uiteindelijke doel is het spectrum aan verschillende methoden te inventariseren en categoriseren. 2.2 Een chronologisch overzicht van de ontwikkelingen in de infraroodreflectografie 2.2.1 Kunsthistorisch onderzoek Het wetenschappelijk onderzoek naar schilderijen valt uiteen in twee disciplines. Tot de eerste groep behoren de methoden die het schilderij aantasten, de zogenaamde destructieve methoden. Het nemen van verfmonsters en doorsneden van de verflaag vallen in deze categorie. Het doel van dit soort onderzoek is het achterhalen van de samenstelling van de verflaag. De identificatie van pigmentsoorten en het materiaal waarin deze zijn opgelost, het zogenaamde medium, is bijvoorbeeld van groot belang voor het herstellen van beschadigde werken. Deze manier van onderzoek staat bekend als puntonderzoek. Het nadeel van deze methode is dat de onderzoeker de punten op het schilderij waar hij een doorsnede maakt, doordacht moet kiezen. Aangezien niet het hele oppervlak van een schilderij kan worden onderzocht, moeten de resultaten worden geëxtrapoleerd.3 Binnen de niet-destructieve groep, ook oppervlakteonderzoek genaamd, valt een gevarieerd aanbod van onderzoeksmethoden. Het kenmerk van deze methoden is dat het onderzoek zich op het totale oppervlak van een schilderij J.R.J. van Asperen de Boer, Recent developments in infrared reflectography of paintings and its applications in art history (Amsterdam 1972) 1, en J.R.J. van Asperen de Boer, ‘Infraroodreflectografie van schilderijen’, Spiegel historiael 7 (1972) 416-421, aldaar 417. 2 J.R.J. van Asperen de Boer, Infrared reflectography. A contribution to the examination of earlier european paintings (Amsterdam 1970) 11. 3 Asperen de Boer, Infrared, 11. 1
9
richt. Tot deze categorie behoren onder andere verschillende vormen van röntgenonderzoek, neutronenradiografie en aanverwante methoden, ultravioletfotografie en de gewone fotografie.4 Onderzoek met behulp van infraroodstraling heeft een belangrijk aandeel in het oppervlakteonderzoek. Al in de jaren dertig experimenteerden onderzoekers met infraroodfotografie. Zij slaagden er met deze techniek in ondertekeningen deels zichtbaar te maken.5 2.2.2 Infraroodreflectografie in het beginstadium De aan de Rijksuniversiteit Groningen verbonden natuurkundige Van Asperen de Boer ontdekt in de jaren zestig een nieuwe toepassing van infraroodstraling in het kunsthistorisch onderzoek. Deze methode resulteert in een betere zichtbaarheid van de ondertekening. De tot dan toe gangbare infraroodfotografie kende namelijk een aantal tekortkomingen. Het bleek dat onder witte, rode en bruine delen de ondertekening goed te zien was, maar dat blauwe en groene delen van het schilderij over het algemeen een zwarte vlek te zien gaven in de infraroodopname. Infraroodfotografie was dus niet in staat de ondertekening onder deze verflagen zichtbaar te maken.6 Van Asperen de Boer neemt de vragen die de verschillen in de infraroodopnames opwerpen als uitgangspunt voor zijn onderzoek. Na een aantal publicaties in tijdschriften7 presenteert hij in 1970 zijn bevindingen uiteindelijk in een proefschrift. Naast een verklaring van de effecten die de opnames met behulp van infraroodfotografie te zien geven, beoogt Van Asperen de Boer met zijn onderzoek een verbetering van de techniek.8 Voor de verklaring van het gedrag van verven in het infrarode spectrum gebruikt Van Asperen de Boer de Kubelka-Munk theorie. Deze theorie beschrijft de optische eigenschappen van verflagen. Zij wordt in de wetenschap vooral gebruikt voor het zichtbare deel van het spectrum, maar is volgens Van Asperen de Boer J.R.J. van Asperen de Boer, ‘Oppervlakteonderzoek van schilderijen’, Chemisch weekblad 67 (1971) K12-K14, aldaar K12-K14. Zie bijvoorbeeld ook E.V. Sayre en H.N. Lechtman, 'Neutron activation autoradiography of oil paintings', Studies in conservation 13 (1968) 161-185, A. Wallert, 'Elemental imaging of miniatures by energy dispersive X-ray fluorescence : a possible tool for the examination of underdrawings?' in: H. Verougstraete en R. van Schoute ed., Le dessin sous-jacent dans la peinture. Colloque X 4-7 septembre 1993. Le dessin sous-jacent dans le processus de creation (Louvain-la-Neuve 1995) 187193 en H.C. Aderhold en W.S. Taft, ‘Neutron-Induced Autoradiography used in the Investigation of Modern Pigments in Paintings of Known Composition’ (Internet: Last Modified: 12 May 00) (09-05-2001) http://www.osp.cornell.edu/vpr/ward/niar.html 5 Zie bijvoorbeeld voor een overzicht van publicaties J.R.J. van Asperen de Boer, 'Examination by infrared radiation', PACT 13 (1986) 109-130, aldaar 112. 6 Asperen de Boer, Infrared, 15, Asperen de Boer, Recent, 1 en Asperen de Boer, 'Examination', 112. 7 Zie onder andere J.R.J. van Asperen de Boer, ‘Infrared reflectograms of panel paintings’, Studies in conservation 11 (1966) 45-46, J.R.J. van Asperen de Boer, ‘Infrared reflectography: a method for the examination of paintings’, Applied optics 7 (1968) 17111714 en J.R.J. van Asperen de Boer, ‘Reflectography of paintings using an Infra-red Vidicon Television System’, Studies in conservation 14 (1969) 96-118. 8 Asperen de Boer, Infrared, 15. 4
10
ook van toepassing op het infrarode deel. De theorie geeft een aantal formules, dat van toepassing is op het reflectievermogen van verflagen op verschillende ondergronden. Zij verschaft ook formules voor de laagdikte die nodig is voor het verbergen van een ondergrond met een bepaald contrast. Uit deze formules leidt Van Asperen de Boer af dat het vermogen van een verf een achtergrond met een bepaald contrast te bedekken voornamelijk afhangt van zijn vermogen het invallende licht te verstrooien. Dit verstrooiingsvermogen is gedefinieerd als het product van een verstrooiingscoëfficiënt en de dikte van de verflaag.9 Verf bestaat uit pigmentdeeltjes opgelost in een bepaald medium zoals olie. De hoeveelheid, de vorm en de grootte van deze deeltjes hebben invloed op de verstrooiing en de absorptie van het licht. Een invallende lichtstraal op een verflaag wordt deels door de pigmentdeeltjes verstrooid, deels geabsorbeerd. Het diffuse licht, dat het gevolg is van de verstrooiing, wordt vervolgens voor een deel weerkaatst door de ondergrond. Een deel van dit weerkaatste licht wordt weer weerkaatst door de onderkant van de verflaag. Dit heet interne reflectie. Het overige licht vindt haar weg naar buiten. Met behulp van de verstrooiings- en de absorptiecoëfficiënt van een verf is het mogelijk de dekkende laagdikte van een verf te berekenen.10 Voor een optimale zichtbaarheid van de ondertekening is het van belang het dekkingsvermogen van de verflaag zo laag mogelijk te houden. Aangezien het onmogelijk is de dikte van de verflaag te beïnvloeden, deze is tenslotte al aangebracht door de schilder, moet worden geprobeerd de verstrooiingscoëfficiënt van het licht zo klein mogelijk te houden. Theorieën over verstrooiing van invallend licht hebben al bewezen dat zeer kleine deeltjes die geen licht absorberen, minder verstrooien naarmate de golflengte van het licht groter is. Van Asperen de Boer verwacht, dat door het vergroten van de golflengte het dekkingsvermogen van de verf zal afnemen zonder invloed te hebben op het contrast tussen de ondertekening en de ondergrond.11 Voor het vinden van de optimale golflengte maakt Van Asperen de Boer grafieken, waarin voor de verfsoorten de dekkende laagdikte tegenover de golflengte wordt gezet. Hieruit blijkt dat de optimale golflengte rond de twee micron ligt. In eerste instantie wil Van Asperen de Boer verschillende apparatuur proberen om de beste opstelling te verkrijgen voor het detecteren van de ondertekening. De resultaten die hij krijgt met de T-4 Barnes Infrared Camera zijn echter zo succesvol dat hij geen andere apparatuur onderzoekt. Bovendien is het de enige commerciële camera die op dat moment verkrijgbaar is. Van Asperen de Boer geeft deze methode de naam infraroodreflectografie om een onderscheid te maken tussen de conventionele infraroodfotografie, waarbij foto's worden gemaakt met een film die gevoelig is tot ongeveer 0,9 micron, en zijn methode. Infraroodreflectografie maakt het mogelijk de ondertekening onder groene en Ibidem, 16. Asperen de Boer, 'Reflectography', 97-98. 11 Asperen de Boer, Infrared, 16. 9
10
11
andere donkere verflagen zichtbaar te maken.12 De conclusie luidt uiteindelijk, dat in de meeste gevallen ondertekeningen die het element koolstof bevatten, geheel zichtbaar kunnen worden gemaakt wanneer de ondertekening niet extreem dun is.13 Na deze conclusie bespreekt de auteur de toepassing van de methode op een aantal schilderijen. Hieruit blijkt dat de methode goed werkt bij ezelschilderijen uit de vijftiende eeuw, maar mindere resultaten geeft bij schilderijen uit de zeventiende eeuw. Ook muurschilderingen blijken hun ondertekening met deze methode niet prijs te geven.14 Van Asperen de Boer maakt een aantal kanttekeningen bij het gebruik van infraroodreflectografie en de interpretatie van infraroodreflectogrammen. De kwaliteit van de reflectogrammen hangt af van meerdere factoren, zoals de samenstelling van de verf. Bij de interpretatie van de reflectogrammen moet de kunsthistoricus met een aantal punten rekening houden. In de eerste plaats hangt de zwartheid van de ondertekening niet direct samen met de concentratie van zwarte pigmentdeeltjes in de ondertekening zelf. De zwartheid van de lijnen geeft dus geen zekerheid over de zwartheid van de ondertekening zelf. Ten tweede kan niet worden aangenomen dat een reflectogram de gehele ondertekening weergeeft, zonder dat de dekkingsefficiëntie van de verflagen nauwkeurig onderzocht is. Een meer accurate interpretatie van een reflectogram zou gebaseerd moeten worden op de uitkomsten van berekeningen die rekening houden met de dekkingsefficiëntie van de verflagen.15 Meerdere factoren spelen een rol bij de infraroodreflectografie. Het gevolg is dat onderzoeksgroepen andere resultaten bij verschillende schilders zien. Het resultaat is enerzijds afhankelijk van de manier waarop de schilder het materiaal voor de ondertekening maakte en hoe hij deze aanbracht op het doek. Anderzijds heeft de manier waarop hij de verven samenstelde en de verflagen aanbracht invloed.16 De auteur wijst er met nadruk op dat het gebruik van infraroodreflectografie samen met andere methoden, zoals röntgenfotografie en verfdoorsneden, tot een efficiënter onderzoek zal leiden. Interdisciplinair onderzoek is volgens hem in het kunsthistorisch vakgebied onmisbaar.17 2.2.3 Van Asperen de Boers aanpassingen Na de publicatie van het onderzoek hebben niet alleen Van Asperen de Boer zelf, maar ook andere onderzoekers zich beziggehouden met het verbeteren van de techniek. In de eerste plaats concentreren zij zich op het verbeteren van de apparatuur. In de jaren tachtig, met de komst van digitale technieken, richt een
Ibidem, 17. Ibidem, 81-82. 14 Ibidem, 65-78. 15 Ibidem, 56-57. 16 Ibidem, 59-61. 17 Ibidem, 62-64 en uitgebreider in Scientific examination of early Netherlandish painting. Applications in art history (Bussum 1976) 1-3. 12 13
12
aantal onderzoekers zich daarnaast op beeldverwerkende technieken.18 Het onderzoek naar de verbetering van de infraroodreflectografie is in deze twee categorieën in te delen. Tijdens het onderzoek voor zijn proefschrift ondervindt Van Asperen de Boer moeilijkheden met de T-4 Barnes Infrared Camera. In de eerste plaats vindt hij het gebruik van deze camera tijdrovend. Voor één reflectogram is hij gemiddeld veertig minuten kwijt, onder andere vanwege de lange belichtingstijd. Dat maakt het onderzoeken van grote schilderijen langdurig. Bovendien is de camera duur en zwaar.19 In 1969 publiceert Van Asperen de Boer een artikel waarin hij, naast zijn theorieën, een aantal apparatuurconfiguraties voor infraroodreflectografie behandelt. Van Asperen de Boer acht de resolutie van het beeld het belangrijkste criterium bij de beoordeling van de systemen. Deze moet vergelijkbaar zijn met gewone foto's om van enig belang te kunnen zijn voor kunsthistorisch onderzoek. Daarnaast meent hij, dat de infraroodsensor zeer gevoelig moet zijn, zodat ook zeer zwakke signalen kunnen worden gedetecteerd.20 Uiteindelijk kiest Van Asperen de Boer voor een televisiesysteem met een infraroodvidicon bevattende camera boven andere systemen. Het grootste voordeel van dit systeem is de mogelijkheid het infraroodbeeld direct zichtbaar te maken op een beeldscherm. De resolutie van het beeldscherm, 875 lijnen per raster, acht hij voldoende. Hoewel de T-4 Barnes Infrarood Camera golflengtes rond twee micron beter detecteert, is het televisiesysteem gemakkelijker te hanteren. Het fotografisch vastleggen van de beelden gebeurt door het fotograferen van het televisiescherm. Een alternatief is het opnemen van de beelden met een videorecorder, zodat de onderzoeker deze later kan reproduceren. Dit versnelt de methode aanzienlijk. Bovendien maakt het systeem het mogelijk dat zowel grote delen als specifieke details onderzocht kunnen worden. Ten slotte is het systeem goedkoper dan de T-4 Barnes Camera, zodat ook musea met een klein budget zich de apparatuur kunnen veroorloven.21 Met deze conclusie bevestigt Van Asperen de Boer de bevindingen van Heiber die een jaar eerder onderzoek had gedaan met een S-1 Image-converter. Ook hij bespaarde met zijn methode veel tijd.22 Van Asperen de Boer probeert in het artikel een eerste aanzet te geven tot standaardisatie van infraroodreflectografie van schilderijen. Aangezien het meestal niet mogelijk is het schilderij in één keer te verwerken, moet de onderzoeker kleine delen van het schilderij opnemen. De verkregen beelden moet hij vervolgens samenvoegen tot er een compleet beeld van de ondertekening ontstaat. Bij het maken van de reflectogrammen, is het van belang dat de camera precies over het schilderij kan worden bewogen. Hiervoor wordt de camera op een Asperen de Boer, 'Examination', 118-119. Asperen de Boer, 'Reflectography', 106-107. 20 Ibidem, 104-105. 21 Ibidem, 109. 22 W. Heiber, ‘The use of an infra-red image-converter for the examination of panel paintings’, Studies in conservation 13 (1968) 145-149, aldaar 146-147. 18 19
13
beweegbaar statief geplaatst. De onderzoeker zorgt voor een gelijkmatige overlap tussen de beelden. Bovendien moet hij er op letten, dat de grootte van de beelden gelijk is. Dit is essentieel voor de constructie van het mozaïek van beelden. De randen van de foto's worden vervolgens op een precieze manier afgesneden, zodat deze goed aan elkaar passen. Uiteindelijk fotografeert de onderzoeker het verkregen mozaïek en bewaart het negatief voor verder gebruik.23 In de jaren tachtig onderneemt Van Asperen de Boer nog een poging tot standaardisatie. In een workshop richt hij zich samen met de deelnemers, allen ervaren op het terrein van de infraroodreflectografie, op de samenstelling van een bundel die het hele proces van de infraroodreflectografie uitgebreid behandelt. Zij beogen een soort handleiding voor onderzoeksgroepen.24 Het blijkt echter zeer moeilijk de methode te standaardiseren, omdat de onderzoeksgroepen met verschillende apparatuur werken. De kwaliteit van de resultaten is daarom verschillend.25 In 1971 publiceert Van Asperen de Boer een artikel over zijn ervaringen met infraroodreflectografie bij de schilderijen van Pieter Saenredam. Hij interpreteert onder meer de ondertekeningen. Van één schilderij is de complete constructietekening van de ondertekening bewaard gebleven. Van Asperen de Boer kan dus een vergelijking maken tussen de constructietekening en het infraroodreflectogram van het schilderij. Hij constateert een aantal verschillen tussen de tekening en het infraroodreflectogram. In de eerste plaats treedt er vervorming van het beeld op met als gevolg dat verticale lijnen niet geheel recht zijn afgebeeld in het infraroodreflectogram. Ten tweede zijn in het reflectogram de personen zichtbaar, omdat de schilder daarvoor koolstofhoudende verf heeft gebruikt. Hij benadrukt nog eens dat de infraroodreflectogrammen altijd nauwkeurig met het schilderij moeten worden vergeleken.26 In 1972 evalueert Van Asperen de Boer de resultaten van de verschillende onderzoeksgroepen die zijn methode gebruiken. Naast de conclusies die Van Asperen de Boer al heeft getrokken in zijn proefschrift, is er nog een aantal problemen geconstateerd. Het blijkt dat de videorecorders de 875 lijnen van het televisiescherm niet allemaal kunnen opslaan. Dit resulteert in een verlaagde resolutie. Het vastleggen van het beeld met een fotocamera heeft dus de voorkeur. Het veelgebruikte televisiesysteem heeft als nadeel dat de vidicon een half uur moet opwarmen. Bovendien kan de warmtestraling interfereren met de
Asperen de Boer, 'Reflectography', 107-109. Zie J.R.J. van Asperen de Boer, 'Infrared reflectography : theory and practice' in: H. Verougstraete-Marcq en R. van Schoute ed., Le dessin sous-jacent dans la peinture. Colloque VI 12-14 septembre 1985. Infrarouge et autres techniques d'examen (Louvainla-Neuve 1987) 107-112. 25 C. Metzger e.a., 'A platinum silicide camera applied in the studie of underdrawings', in: H. Verougstraete en R. van Schoute ed., Le dessin sous-jacent dans la peinture. Colloque X 4-7 septembre 1993. Le dessin sous-jacent dans le processus de creation (Louvain-laNeuve 1995) 195-200, aldaar 199. 26 J.R.J. van Asperen de Boer, ‘De ondertekening bij Pieter Saenredam: twee voorbeelden’, Bulletin Rijksmuseum 19 (1971) 25-31, aldaar 25. 23 24
14
infraroodstraling en storingen in het beeld veroorzaken. Het systeem moet na een uur afkoelen om dit te voorkomen.27 Infraroodfotografie kan een aanvullend hulpmiddel zijn bij de interpretatie van infraroodreflectogrammen. Het blijkt zelfs dat in sommige gevallen de infraroodfotografie zelfs een beter beeld van de ondertekening in de rode en witte delen geeft dan de infraroodreflectografie. In dit geval moet het infraroodreflectogram samen met de infraroodfoto worden bestudeerd. De onderzoeker neemt infraroodfoto's van dergelijke gebieden, nadat het hele infraroodreflectogram is gemaakt. Voor de studie van een ondertekening is volgens Van Asperen de Boer dus een compleet infraroodreflectogram nodig met minimaal aanvullende infraroodfoto's van de rode en witte delen van een doek. In de studie van ondertekeningen is het bovendien gebruikelijk om het infraroodreflectogram en een kleurenbeeld van hetzelfde oppervlak met elkaar te vergelijken. Daarvoor is dus ook een kleurenbeeld vereist dat qua grootte identiek is aan het beeld op het reflectogram.28 Onderzoek heeft verder uitgewezen, dat infraroodreflectografie van portretten weinig succesvol is. Ook schilderijen uit de zeventiende eeuw zijn niet vatbaar voor de methode. Dit ligt gedeeltelijk aan de donkere ondergrond waarop de schilder met witte kalk de ondertekening schetste. Infraroodreflectografie kan ondertekeningen met dit materiaal niet detecteren. Ook onderzoek naar Italiaanse schilderijen heeft weinig opzienbarends opgeleverd. Italiaanse schilders werkten niet met een beenderzwart bevattende verf die aan het eind van de middeleeuwen doorgaans werd gebruikt.29 Het toekennen van werken aan groepen rondom een meester gebeurt aan de hand van schilderijen waarvan de schilder bekend is. Deze schilderijen worden als referentiepunt genomen, maar onderzoek heeft aangetoond dat dit een onbetrouwbaar referentiekader is. Het is daarom volgens Van Asperen de Boer noodzakelijk dat er van groepen met bepaalde stilistische en historische kenmerken wordt gesproken.30 Als laatste bespreekt Van Asperen de Boer een aantal van dit soort groepen.31 In een overzicht van kunsthistorische onderzoeksmethoden verfijnt Van Asperen de Boer in 1986 het proces van de infraroodreflectografie. Sinds de introductie van een commercieel televisiesysteem met een infraroodvidicon bevattende camera in 1969 is de gevoeligheid van de vidicon verhoogd. Daarnaast is het spectrale bereik verhoogd. Hamamatsu levert infraroodvidicons die golflengtes tot 2,4 micron aankunnen.32 Reflectogrammen gemaakt met deze apparatuur zijn veel beter van kwaliteit. De overlap tussen de beelden in zowel horizontale als verticale richting moet ongeveer eenderde van het totale beeld Asperen de Boer, Recent, 2-5. Ibidem, 12-13. 29 Ibidem, 16-17. 30 Ibidem, 18. 31 Ibidem, 19-20 en 26-27. 32 J.R.J. van Asperen de Boer, 'A note on the use of an improved infrared vidicon for reflectography of paintings', Studies in conservation 19 (1974) 97-99, aldaar 97-99. 27 28
15
zijn. Nadat de beelden zijn samengevoegd tot een mozaïek kan dit worden gefotografeerd. Het printen van het negatief vereist een aantal trucjes, zodat de naden van het mozaïek minder zichtbaar zijn.33 In dit overzichtsartikel bespreekt Van Asperen de Boer ook de eerste mogelijkheden van beeldverwerkende technieken. Hij spreekt van het digitaliseren van het beeld en de mogelijkheid deze te bewaren op diskettes. De heterogeniteit van de beelden kan gecompenseerd worden. Daarnaast stipt hij de mogelijkheid aan om het beeld van het schilderij van het infraroodreflectogram af te trekken.34 2.2.4 Verdere methodische verbeteringen Hoewel het televisiesysteem met infraroodvidicon, met dank aan een aantal aanpassingen, tot op de dag van vandaag nog wordt gebruikt, hebben meerdere wetenschappers zich beziggehouden met het verbeteren van de infraroodreflectografie. Vaak gaat het om nuanceringen van hypothesen en ervaringen die Van Asperen de Boer beschrijft in zijn artikelen. Hieronder volgt een overzicht van deze artikelen. Burmester en Bayerer beogen met een in 1993 gepubliceerd artikel bijvoorbeeld beter inzicht te krijgen in het productieproces van infraroodreflectogrammen. Waar nodig stellen zij verbeteringen voor. Voor hun onderzoek gebruikten de auteurs een Hamamatsu camera met infraroodvidicon. Deze camera maakt het mogelijk het contrast en de gevoeligheid automatisch in te stellen. Het beeld wordt zichtbaar gemaakt op een videomonitor.35 Van Asperen de Boer berekende dat optimale resultaten worden bereikt bij golflengten van twee micron. De auteurs beargumenteren echter dat sommige materialen die worden gebruikt voor ondertekeningen niet zichtbaar zijn bij deze golflengte, maar een lagere golflengte vragen. Voor succesvolle infraroodreflectogrammen moet de opstelling in principe alle golflengtes tussen de 0,8 en twee micron aankunnen.36 Een antwoord op de lage resolutie die hun opstelling produceert, zoeken Burmester en Bayerer in een verkleining van het te verwerken oppervlak. Dit resulteert in een mozaïek met een groter aantal beelden. Ook blijkt dat de temperatuur van de sensor oploopt tot dertig graden Celsius. Koeling van de sensor op één graden Celsius leidt tot een veel scherper beeld. Bovendien daalt de elektrische storing van buitenaf, wanneer de camera in koper wordt gewikkeld. Ook de lenskeuze draagt bij aan de scherpheid van het beeld. De auteurs stellen dat speciaal gecoate macrolenzen het beste resultaat zullen geven. Zij hebben dit soort lenzen echter niet kunnen testen.37 Jennings probeert de meningen die bestaan over infraroodreflectografie te ordenen. Hij richt zich op de materialen waarvan bekend is dat schilders deze Asperen de Boer, 'Examination', 117. Ibidem, 118. 35 A. Burmester, en F. Bayerer, ‘Towards improved infrared reflectograms’, Studies in conservation 38 (1993) 145-154, aldaar 146. 36 Burmester en Bayerer, 'Towards', 146. 37 Ibidem, 147-148. 33 34
16
gebruikten voor de ondertekening. Hij nuanceert de heersende opvattingen over de zichtbaarheid van ondertekeningen. De lijst van materialen die zichtbaar zijn met infraroodreflectografie, breidt hij uit met onder andere zachte metalen en ijzerhoudende inkten. Aangezien de zichtbaarheid van de ondertekening afhangt van de dikte en samenstelling van de verflaag, kunnen ondertekeningen van verschillende materialen daarom onder andere verflagen een gelijke zwartheid vertonen op een reflectogram, zo betoogt Jennings. Hij verbaast zich over het feit dat radicaal afwijkende gereedschappen en materialen met infraroodreflectografie vergelijkbare resultaten opleveren. Hij concludeert dat de factoren die het resultaat van infraroodreflectografie beïnvloeden complexer zijn dan tot dan toe werd aangenomen.38 Walmsley heeft zich samen met andere onderzoekers meermalen beziggehouden met het optimaliseren van infraroodreflectografie. Begin jaren negentig richt hij zich op een methode om de resultaten van verschillende opstellingen te vergelijken. De methode kan worden gebruikt om de voordelen en nadelen van de huidige apparaten aan te geven. Bovendien kan zij als een soort gids fungeren in de ontwikkeling van nieuwe apparatuur. Hiermee hoopt hij een soort standaard te creëren voor de evaluatie van resultaten binnen de infraroodreflectografie.39 In 1994 publiceert de groep haar bevindingen met betrekking tot de optimale configuratie. Acht testpanels waarop onder een rechthoek van verf ondertekeningen zijn aangebracht met zes soorten tekenmateriaal, dienen als proefobjecten. Drie opstellingen worden vergeleken op hun spectrale bereik en beeldkwaliteit.40 Een interessant onderzoek van Weiner gaat dieper in op de Kubelka-Munk theorie. Wat hem opvalt is dat het bestaande onderzoek zich alleen richt op de infraroodanalyse. Dit is niet geheel waar. Al in 1988 presenteert Aldovandri in een artikel een nieuwe methode, Multispectral Image Processing of Paintings (MIPP) genaamd, waarmee in één beeld zowel zichtbare als infrarode beelden worden gecombineerd. Met MIPP is het mogelijk verflagen aan het oppervlak te negeren en onderliggende verflagen zichtbaar te maken.41 Daarnaast experimenteerden Matteini, Moles en Tiano in 1978 met infrarood kleurenfilm. Deze film bestaat uit meerdere lagen die elk reageren op ander licht in het spectrum. De eerste laag is gevoelig voor de groene band in het spectrum, de tweede voor de rode en de derde voor infrarood licht.42 Weiner concentreert zich echter op scherpere J. Jennings, 'Infrared visibility of underdrawing techniques and media', in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sous-jacent dans la peinture. Colloque IX 12-14 septembre 1991. Dessin sous-jacent et pratiques dátelier (Louvain-la-Neuve 1993) 241-252, aldaar 246-252. 39 E. Walmsley, C. Fletcher en J. Delany , ‘Evaluation of system performance of nearinfrared imaging devices’, Studies in conservation 37 (1992) 120-131, aldaar 120. 40 E. Walmsley e.a., ‘Improved visualization of underdrawings with solid-state detectors operating in the infrared’, Studies in conservation 39 (1994) 217-231, aldaar 217-231. 41 Zie A. Aldrovandi e.a., ‘Multispectral image processing of paintings’, Studies in conservation 33 (1988) 154-159. 42 Zie M. Matteini, A. Moles en P. Tiano, 'Infrared colour film as an auxiliary tool for the investigation of paintings' in: ICOM Committee for conservation 5th triennial meeting 38
17
infraroodreflectogrammen met een hoger contrast door een vergelijking tussen het zichtbare en het infrarode beeld. Hiervoor gebruikt hij een andere benadering van de Kubelka-Munk theorie.43 Weiner maakt in zijn analyse gebruik van de verschillen tussen de reflectie van het licht in het zichtbare en in het infrarode gedeelte van het spectrum. Met behulp van de Kubelka-Munk theorie laat de auteur zien dat wanneer er een ondertekening bestaat, de ondergrond van een verflaag twee reflecties vertoont, namelijk een reflectie van de ondertekening zelf en een reflectie van de ondergrond. Aangezien de reflectie van de verflaag afhankelijk is van die van de ondergrond, zal de reflectie van de verflaag een afwijking vertonen op plaatsen waar zich een ondertekening bevindt. Dat betekent dat de zichtbare afbeelding invloed ondervindt van de ondertekening. Weiner wil de ondertekening afbeelden in beide spectra en vervolgens de beelden vergelijken. Het verschil tussen het infrarode en het zichtbare beeld is de ondertekening.44 Voor zijn proeven trekt hij over een canvas ondergrond een verticale streep met houtskool. Vervolgens beschildert hij het doek met een witte olieverf. Over de olieverf zet hij met houtskool twee horizontale strepen. Met zijn benadering van de Kubelka-Munk theorie is Weiner in staat de horizontale strepen te verwijderen in het uiteindelijke infraroodreflectogram.45 Hij concludeert dat een vergelijking van het infrarode beeld met een zichtbaar equivalent met behulp van de KubelkaMunk theorie een verbetering is ten opzichte van eerdere methoden.46 Hij heeft de methode echter niet getest op schilderijen. 2.2.5 Nieuwe apparatuur De komst van nieuwe apparatuur zorgt ook voor herzieningen van de infraroodreflectografie. Begin jaren negentig verschijnt er een nieuwe camera op de markt, de zogenaamde 'solid-state camera'. Deze camera's maken gebruik van 'charge-coupled devices' (CCD). Een CCD chip bestaat uit een aantal individuele sensoren. Elke sensor correspondeert met een pixel. De sensoren zijn gevoelig voor licht en kunnen worden beschouwd als een fotonteller. Inkomende fotonen activeren elektronen, zodat er een elektrisch stroompje ontstaat. Elke sensor geeft een elektrisch signaal af met een variabel voltage. Het aantal invallende fotonen bepaalt de hoogte van het voltage, die op haar beurt weer correspondeert met de grijswaarde van de betreffende pixel. De positie van de sensor bepaalt de positie van de pixel in de matrix van pixels die het beeld representeert. De uitvoer van een CCD chip bestaat uit een voltage als functie van de tijd.47 De sensoren kunnen op twee manieren geordend zijn. In een scanner liggen de sensoren op (Zagreb 1978) 1-9. 43 C. Weiner, 'Improved Acquisition of Underdrawings in Oil-Paintings Using IRReflectography' (Internet: 1998) (02-05-2001) http://www.cis.rit.edu/~cbw3014/thesis/, abstract.html. 44 Weiner, 'Improved', thesis.html#T.1. 45 Ibidem, thesis.html#T.1. 46 Ibidem, thesis.html#D.0. 47 J.C. Russ, The image processing handbook (Boca Raton 1999) 7.
18
één lijn. Wanneer deze lijn over een oppervlak beweegt, ontstaat er een twee dimensionaal beeld. De sensoren kunnen ook in een matrix geordend zijn. Dit is het geval in de solid-state camera. In dat geval bewegen zij niet over een vlak, maar is de camera in staat het beeld in één keer te produceren.48 Met de huidige technologie is het mogelijk meer dan 500.000 sensoren op één vierkante centimeter te plaatsen. Hoge resolutie camera's hebben een matrix van vierduizend bij vierduizend sensoren tot hun beschikking en leveren zestien bits beelden op.49 Naast de CCD chip bestaan er andere varianten, zoals de 'charge injection device' (CID). Het verschil tussen alle varianten is de manier waarop de inhoud van de sensoren wordt uitgelezen. Het belangrijkste gevolg is dat sommige camera's hun sensoren langer kunnen blootstellen aan slecht verlichte beelden en andere juist uitstekende beelden opleveren met zeer korte sluitertijden. Daarnaast kunnen sommige camera's alleen goed functioneren door continu het beeld te scannen. In de astronomie en microscopie worden de chips vaak goed gekoeld om elektrische verstoringen te voorkomen.50 De gevoeligheid van de sensoren kan worden uitgebreid naar licht uit het infrarode deel van het spectrum, zodat de camera een spectraal bereik van één tot drie micron kan bereiken. De platinum-silicide (PtSi) solid-state detector komt uit een test, waarin onder andere het lood-sulfiet vidiconsysteem van Van Asperen de Boer participeerde, als beste naar voren. De kwaliteit van het beeld is veruit superieur aan die van het vidiconsysteem. De oorzaak ligt bij de lagere geometrische en optische vervormingen. De PtSi detector bezit een stabiel signaal, een hoge mate van eenvormigheid en behoudt een hoog contrast.51 Bovendien ligt de gevoeligheid van deze detector veel hoger.52 Metzger betoogt naar aanleiding van zijn test dat systemen met een variabel spectraal bereik de voorkeur genieten boven statische systemen, omdat dan per schilderij gezocht kan worden naar de optimale golflengte.53 Er zitten echter ook nadelen aan solidstate camera's. De vele sensoren hoeven ondanks de moderne fabricagetechnieken niet identiek te zijn. Variaties in de gevoeligheid van de sensoren kunnen verstoringen in het beeld veroorzaken.54 Eind jaren tachtig ontwikkelt een aantal onderzoekers van het Instituto Nazionale di Ottica te Florence een infraroodscanner. Zij hebben een aantal problemen met de conventionele methode. De reflectogrammen zijn doorgaans grijsachtig met een laag contrast. Het televisiescherm beïnvloedt de beelden met optische en geometrische verstoringen. Bovendien is de fotometrische reactie van de vidicon niet universeel over de hele oppervlakte. Voor gedetailleerde inspectie R.C. Gonzalez en R.E. Woods, Digital image processing (New York 1992) 12. Russ, Image processing, 7 en 25. 50 Ibidem, 7-8. 51 Metzger, 'A platinum', 195-196. 52 Ibidem, thesis.html#B.4. 53 Metzger, 'A platinum', 198. 54 Russ, Image processing, 11. 48 49
19
kunnen alleen kleine delen van het schilderij worden verwerkt. Nadien moet dit mozaïek van reflectogrammen tot één beeld worden samengevoegd. Dit is een tijdrovend proces. Software kan dit vergemakkelijken, maar deze is niet altijd aanwezig en kan bovendien de verstoringen niet helemaal compenseren. Daarnaast gebruikt de software voor het samenvoegen interpolatie. In het kort komt het er op neer dat er berekeningen worden uitgevoerd op de pixels om een in geometrisch opzicht zo juist mogelijk resultaat te behalen.55 Dit verhoogt over het algemeen de kwaliteit van het beeld – het heeft een verzachtende uitwerking – maar verandert wel de lichtheid van de pixels.56 Interpolatie verandert dus de originele grijswaarden van de pixels. De infraroodscanner verkrijgt in één keer een compleet infraroodbeeld. Een optische kop doet dienst als infrarooddetector en beweegt zich over het schilderij. Het analoge signaal wordt direct naar een digitaal signaal omgezet en een computer zorgt voor een compleet beeld. Het proces van het verzamelen en samenvoegen van een mozaïek van beelden behoort hiermee tot de verleden tijd.57 Bovendien wordt een superieur beeld verkregen, omdat de resolutie van de scanner zeer hoog is en hij ongeveer vierduizend grijswaarden kan onderscheiden.58 2.2.6 Het VASARI project Begin jaren negentig begint de National Gallery te Londen met Europese subsidie een omvangrijk project, het Visual Arts System for Archiving and Retrieval of Images (VASARI). Het doel van dit project is het ontwikkelen van een computersysteem voor het fotograferen van schilderijen, zodat de Gallery deze digitaal kan bewaren. Het systeem kan echter ook gebruikt worden voor infraroodreflectografie van schilderijen. Het oude systeem produceerde een te lage resolutie en de positionering van de camera was te onnauwkeurig. Het nieuwe systeem is gedeeltelijk geautomatiseerd. De lichtbronnen bewegen met de camera mee. Voor de camera kan de gebruiker eventueel filters plaatsen, zodat hij verschillende soorten opnames kan maken. Van de opstelling zijn de verstoringen in de belichting in kaart gebracht, zodat de computer deze kan corrigeren bij de montage van het totaalbeeld.59 Uit onderzoek is gebleken dat voor een optimaal beeld een resolutie van tien tot twintig pixels per millimeter vereist is, soms bij hele fijne scheurtjes veertig pixels. Dat komt ongeveer overeen met respectievelijk 250, 500 en 1000 ppi (pixels per inch). De camera die het systeem gebruikt, heeft een resolutie van Zie voor uitgebreide beschrijving: J. Teuber, Digital image processing (Kopenhagen 1989) 174-181. 56 D. Bertani e.a., ‘A scanning device for infrared reflectography’, Studies in conservation 35 (1990) 113-116, aldaar 113. 57 Bertani, 'A scanning', 115. 58 L. Pezatti, ‘High resolution infrared reflectography’, (Internet: ?) (09-05-2001) http://www.ino.it/~luca/rifle/, riflestrument_en.html en riflescanner_en.html. 59 D. Saunders, 'Image processing at the National Gallery: the VASARI project', National gallery technical bulletin 14 (1993) 72-85, aldaar 72. 55
20
3000 bij 2320 pixels en kan 256 grijswaarden onderscheiden. In de toekomst zal dit worden verhoogd naar 4096. Een lens van hoge kwaliteit maakt het corrigeren van optische en geometrische storingen overbodig. Software stuurt de camera aan. Op deze manier ontvangt de computer beelden met dezelfde grootte en overlap.60 De procedure voor het fotograferen van een schilderij valt uiteen in twee fasen. In de eerste fase neemt het systeem de beelden op. In de tweede fase kalibreert de computer alle beelden en monteert het totale beeld. Tijdens de opnames vergaart de computer in totaal vier standaarden voor het kalibreren. Ten eerste maakt de computer een opname van een witte achtergrond voor de correctie van onevenwichtige belichting. Ten tweede maakt hij een opname van een wit vakje met bekende afmetingen tegen een zwarte achtergrond, zodat de resolutie van de opnames na afloop bekend is. Ten derde maakt de computer een opname van een kleurenkaart voor de correctie van de kleuren. Als laatste slaat de computer een zogenaamde grijswaardenkaart op voor de detectie van afwijkingen in de reactie van de CCD sensor in de camera.61 Vervolgens start de gebruiker handmatig het programma AQUIRE. Deze applicatie handelt de opname verder af en neemt elk beeld door zeven kleurenfilters op. Zo slaat de computer zeven beelden op die elk het schilderij op een andere golflengte representeren. Na afloop van het programma AQUIRE start de gebruiker het programma CALIBRATE en voert de directory in waar hij de beelden heeft opgeslagen en de directory waar de computer de resultaten moet opslaan. Vervolgens corrigeert de computer met behulp van de vier standaarden de optische vervormingen in alle beelden.62 De montage van de beelden tot een totaalbeeld gebeurt handmatig. De gebruiker selecteert een corresponderend punt op beide beelden. De computer berekent de overlap en deelt deze in drieën. Daarna selecteert hij voor elk deel nog eens twintig punten met een goed contrast. Het punt dat de gebruiker heeft geselecteerd gebruikt de computer om in het aangrenzende beeld de corresponderende punten te zoeken. Het programma tolereert een foutmarge van tien pixels. Vervolgens berekent de computer een rechte lijn waarop de beelden over elkaar heen kunnen worden gelegd. Punten die niet corresponderen negeert hij en uiteindelijk voegt hij de beelden samen. Op deze manier monteert de gebruiker eerst rijen van beelden die hij vervolgens verticaal kan monteren. Vanwege de nauwkeurigheid waarmee de opstelling de beelden opneemt, behoeven deze geen geometrische correctie. De software is wel in staat beelden te roteren of te schalen, mocht dat nodig zijn. Dat gebeurt via resampling met behulp van interpolatie.63 In 1997 is ook deze hele procedure geautomatiseerd. De computer corrigeert alle optische vervormingen en monteert de afzonderlijke Saunders, 'Image', 73-74. Ibidem, 79 en J. Cupitt, D. Saunders en K. Martinez, 'Digital imaging in European museums', in Very high resolution and quality imaging II, Proc. SPIE 3025 (1997) 144151, aldaar 146-147. 62 Saunders, 'Image', 79. 63 Ibidem, 80. 60 61
21
beelden tot een totaalbeeld. Dit proces duurt ettelijke uren en wordt daarom 's nachts uitgevoerd.64 De National Gallery archiveert het uiteindelijke beeld in een eigen bestandsformaat.65 Aangezien er geen software bestond voor het verwerken van beelden van deze omvang, heeft de National Gallery zelf software ontwikkeld. Het pakket, genaamd VIPS, heeft naast een aantal standaard handelingen dat ook te vinden is in reguliere beeldverwerkingpakketten, meerdere wiskundige en morfologische functies en filters. Bovendien biedt het de mogelijkheid veelgebruikte handelingen in scripts op te slaan. De programma's AQUIRE en CALIBRATE gebruiken een aantal functies uit dit pakket. Voor het softwarepakket bestaan twee userinterfaces. Thomson-CSF heeft er één gemaakt voor algemeen gebruik waarmee de gebruiker via knoppen acties kan uitvoeren. De National Gallery heeft zelf ook een interface geprogrammeerd gericht op wetenschappelijk en technisch gebruik. Deze heet IP.66 Een aantal onderzoekers, onder wie Billinge en Burmester, heeft het systeem van de National Gallery gebruikt voor infraroodreflectografie. De onderzoeksgroepen rond beide auteurs gebruiken een Hamamatsu C2400 camera met een N2606 infraroodvidicon die gevoelig is tot ongeveer twee micron. De sensor van de Hamamatsu vidicon veroorzaakt een geometrische verstoring van het beeld.67 Voor de correctie van de vervorming probeert Billinge twee werkwijzen uit. In de eerste plaats is het mogelijk om de digitale beelden te corrigeren voor geometrische vervormingen. Daarvoor verwerkt hij met de opstelling een vel ruitjespapier. Met behulp van het verkregen beeld kan de computer de geometrische vervormingen corrigeren. Hij vindt dit echter een veel te lang proces en kiest daarom voor een andere werkwijze.68 Hij selecteert aan de hand van het gereflectografeerde ruitjespapier het deel van de beelden dat gevrijwaard is van geometrische vervorming. Uit het totale beeld van 768 bij 576 pixels neemt Billinge 460 bij 370 pixels in het centrum. Billinge corrigeert optische vervormingen in de eerste plaats met een corrector in het vidiconsysteem zelf, dus niet softwarematig. Vervolgens verkrijgt hij verdere uniformiteit door een grijswaardenkaart te maken. Daarvoor maakt hij een reflectogram van een wit vel papier. De camera beweegt in deze opstelling niet ten opzichte van de infraroodbron, zodat op alle beelden dezelfde grijswaardencorrectie kan worden toegepast.69 De groep rond Burmester corrigeert de geometrische vervorming met de computer met behulp van Billinges eerste werkwijze. Deze stap acht hij Cupitt, Saunders en Martinez, 'Digital', 147. Zie J. Cupitt en K. Martinez, 'VIPS: an image processing system for large images', in Very high resolution and quality imaging, Proc. SPIE 2663 (1996) 19-28. 66 Saunders, 'Image', 85. 67 R. Billinge e.a., 'A note on an improved procedure for the rapid assembly of infrared reflectogram mosaics', Studies in conservation 38 (1993) 92-98, aldaar 93. 68 R. Billinge, 'Further advances in the computer assisted assembly of infrared reflectogram mosaics', in: H. Verougstraete en R. van Schoute ed., Le dessin sous-jacent dans la peinture. Colloque X 4-7 septembre 1993. Le dessin sous-jacent dans le processus de creation (Louvain-la-Neuve 1995) 77-80, aldaar 78. 69 Billinge, 'A note', 93. 64 65
22
onmisbaar voor het slagen van de montage. Daarnaast legt hij elk beeld 64 keer vast om thermische storingen te elimineren.70 De montage vindt op dezelfde manier plaats als bij de normale procedure. De gebruiker geeft twee overeenkomstige punten aan en de computer voegt beide beelden samen. Wanneer de computer een groot kleurverschil tussen beide beelden ontdekt, krijgt de gebruiker de keuze beide beelden te corrigeren of één beeld te selecteren als standaard en de ander aan te passen.71 Het contrastverschil laat de computer nog buiten beschouwing, maar dat zal in een toekomstige versie van het programma kunnen worden gecorrigeerd. Als laatste kan de gebruiker het verkregen totaalbeeld verscherpen met een sharpenfilter (vijf bij vijf pixels). Zowel de verscherpte versie als het origineel wordt gearchiveerd. Billinge ervaart in deze procedure het uitprinten van het resultaat als het grootste probleem.72 Burmester laat als laatste stap de computer een aantal beeldverwerkingen uitvoeren, waaronder een contrastverbetering, teneinde de kwaliteit van het beeld te verbeteren.73 Beide onderzoeksgroepen bereiken met het systeem van de Gallery reflectogrammen van zeer hoge kwaliteit in vergelijking met de conventionele, analoge methoden. De gebruikte methode kan ook gebruikt worden voor beelden die met conventionele apparatuur zijn gemaakt. Het grootste nadeel is de prijs van het systeem en de ongemakkelijke bediening ervan.74 2.2.7 Digitale beeldverwerkingstechnieken Een aantal onderzoekers heeft zich alleen gericht op het verbeteren van de beeldkwaliteit via digitale beeldverwerking. De meeste van hen proberen een oplossing te vinden voor de handmatige montage van de beelden en de als gevolg daarvan slechte kwaliteit van het mozaïek. Daarnaast richt het onderzoek zich op een alternatief voor het fotograferen van het beeldscherm. Saunders maakt in 1988 een verkenning op het terrein van de digitale beeldverwerking. Hoewel zijn studie toegespitst is op het meten van kleurveranderingen in schilderijen, komt hij een aantal interessante problemen tegen, die ook van toepassing zijn op reflectogrammontages. Voor het meten van de kleurverandering wil hij normale fotografische beelden die in het verleden zijn gemaakt digitaal vergelijken met foto's die hij van dezelfde schilderijen maakt. Over het digitaliseren van het analoge signaal merkt hij op dat er altijd informatie verloren gaat. In de eerste plaats wordt het oppervlak gedistribueerd over een aantal pixels. Er gaat dus geometrische informatie verloren. Ten tweede gaat er informatie verloren over de kleur, omdat het digitale signaal een beperkt aantal
70 71 72 73 74
Burmester en Bayerer, 'Towards', 151. Billinge, 'A note', 94. Billinge, 'Further', 78-79. Burmester en Bayerer, 'Towards', 151. Ibidem, 152-153 en Billinge, 'A note', 95.
23
grijswaarden bezit, bijvoorbeeld 256 of 4096. Een analoge foto kan daarentegen een oneindig aantal grijswaarden bevatten.75 Voor de vergelijking van twee beelden moeten beide precies over elkaar heen kunnen worden gelegd. Het ideaal is dat de pixels in het overlappende deel gelijk zijn; dus dat wanneer de pixels van het ene deel van het andere deel afgetrokken worden de uitkomst nul is. Het positioneren van de beelden levert geen moeilijkheden op, maar vergroten of verkleinen, of het corrigeren van scheve beelden levert wel problemen op. Daarom gebruikt ook Saunders een gemotoriseerd frame dat het schilderij automatisch kan verplaatsen. Voor de correctie van de onevenwichtige belichting houdt hij een wit papier voor de lens. Saunders corrigeert ook onevenwichtigheden in het signaal van de camera zelf door een opname te maken in het donker. Hij neemt alle beelden zestien keer op en berekent vervolgens het gemiddelde om willekeurige vervormingen te voorkomen.76 Met de komst van commerciële software in de jaren negentig onderzoeken meerdere auteurs de verschillende beeldverwerkende software op hun nut voor de mozaïekmontage. Eind jaren tachtig verschijnt het programma Mosart. Het programma is speciaal geschreven voor de montage van infraroodreflectogrammen. Met Mosart is het mogelijk de geometrische en optische vervormingen, veroorzaakt door de vidicon, te corrigeren.77 Het kan tevens de grijswaarden, de lichtheid en het contrast van het beeld aanpassen en bovendien een vloeiende montage genereren van de infraroodreflectogrammen. Voor de montage verwacht Mosart van de gebruiker drie tot tien overeenkomstige punten voor elke horizontale of verticale overlap. Nadat de gebruiker deze heeft gedefinieerd, neemt Mosart de procedure over. Het programma past voor alle beelden de grijswaarden aan en maakt vervolgens blokken van aaneensluitende beelden die op tape worden opgeslagen. Het nadeel van het programma is, dat de gebruiker het resultaat niet in zijn geheel op het beeldscherm kan zien.78 De procedure voor het maken van de reflectogrammen moet consequent en uniform zijn, zodat de overlappingen tussen de beelden gelijk zijn. Een overlap van twintig procent van het beeld is voor Mosart voldoende. Wecksung merkt daarbij op dat het beter is het analoge signaal gelijk te digitaliseren. Het digitaliseren van foto's of negatieven kan geometrische en optische verstoringen versterken.79 Coddington gebruikt Mosart voor het analyseren van de beelden. Onder andere vergroting van het contrast en het D. Saunders, 'Colour change measurement by digital image processing', National gallery technical bulletin 12 (1988) 66-77, aldaar 67. 76 Saunders, 'Colour', 70 en 74-75. 77 G. Wecksung e.a., ‘Infrared reflectogram assembly by digital image processing’ in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sous-jacent dans la peinture. Colloque VII 17-19 septembre 1987. Géographie et chronologie du dessin sous-jacent (Louvain-la-Neuve 1989) 131-136, aldaar 135. 78 T.M. Russo, 'Infrared reflectography and computer image processing : new alternatives' in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sous-jacent dans la peinture. Colloque IX 12-14 septembre 1991. Dessin sous-jacent et pratiques dátelier (Louvain-laNeuve 1993) 267-273, aldaar 270. 75
24
bewerken van het histogram van het beeld stelden hem in staat meer informatie uit de reflectogrammen te halen. Fragmenten van ondertekeningen blijken na uitbreiding van het histogram beter zichtbaar te zijn.80 Adobe Photoshop is een ander programma dat de mogelijkheid heeft infraroodreflectogrammen samen te voegen. Russo ervaart echter dat dit niet zo gemakkelijk gaat als met Mosart. In de eerste plaats kan het programma vervormingen niet automatisch corrigeren. De correctie van vervormingen gebeurt in Photoshop door het verwijderen van de randen van het beeld, zodat alleen het binnenste deel van het beeld overblijft. In dit deel blijft de geometrische vervorming beperkt. De montage verloopt vervolgens op een handmatige wijze. De gebruiker plaatst aangrenzende beelden naast elkaar. Het aanpassen van de grijsheid (levels), de lichtheid, het contrast en de resolutie zorgt voor een vloeiende overgang. Russo gebruikt vòòr de montage in Photoshop Mosart voor de correctie van de optische en geometrische vervormingen. Het is dan namelijk niet meer nodig de randen van de beelden te verwijderen, omdat de beelden elkaar goed overlappen.81 Het risico van het gebruik van Photoshop is dat het de gebruiker veel vrijheid geeft in het aanpassen van het beeld. De (onervaren) gebruiker kan onbedoeld belangrijke informatie wissen. Het voordeel is dat het programma met één groot bestand werkt waardoor het resultaat in zijn geheel op het beeldscherm kan worden weergegeven.82 Het programma CECast werkt ongeveer op dezelfde manier als Mosart. Het programma dient ertoe in samenwerking met de Leutron Vision LFS-AT-kaart beelden op te nemen en te monteren. Evenals bij voorgaande methoden maakt de computer bij het opnemen van het totaalbeeld een grijswaardenkaart en een beeld van een rastervel om optische en geometrische vervormingen te kunnen corrigeren. De afzonderlijke beelden moeten voor een juiste montage ten opzichte van elkaar een overlap van vijftig tot honderd pixels hebben.83 Het programma IPLab Spectrum van Signal Analytics Corporation is uitvoerig onderzocht door Peyredieu du Charlat. Hij is verbonden aan het Imaging Department van het Art Institute of Chicago (AIC). Vòòr de kennismaking met dit programma gebruikte het instituut Photoshop. Het is dan ook de bedoeling dat IPLab in combinatie met dit programma gaat worden gebruikt. Het voornaamste doel is het zoveel mogelijk automatiseren van het montageproces. De auteur
Wecksung, 'Infrared', 133 en 136. Zie ook G. Wecksung e.a., 'Assembly of infra-red reflectograms by digital image processing using a portable data collecting system' in: ICOM Committee for Conservation 8th Triennial Meeting (Sydney 1987) 107-108. 80 Weiner, 'Improved', thesis.html#B.5. Zie ook J.L. Coddington, 'The use of infra-red vidicon and image digitizing software in examining 20th-Century works of art', in: Postprints of the Paintings Specialty Group (Albuquerque 1991). 81 Russo, 'Infrared', 269 en 272. 82 Ibidem, 270-271. 83 F. Mairinger, 'Program CECAST', in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sous-jacent dans la peinture. Colloque IX 12-14 septembre 1991. Dessin sousjacent et pratiques dátelier (Louvain-la-Neuve 1993) 253-266, aldaar 253. 79
25
onderzoekt de mogelijkheden van het programma alleen in verband met de montage van mozaïeken. IPLab Spectrum is een programma voor beeldverwerking uit de wetenschappelijke hoek. Een groot voordeel van het programma is dat het de mogelijkheid biedt om scripts te schrijven die vervolgens kunnen worden opgeslagen voor later gebruik. Operaties die de gebruiker vaak herhaalt kunnen worden geautomatiseerd. Net als bij de National Gallery verkrijgt Peyredieu du Charlat zijn reflectogrammen via een geautomatiseerd systeem. Software zorgt in samenwerking met een speciale computerkaart, de zogenaamde Hypercard, voor een optimale overlapping en gelijke belichting. De gebruiker geeft het programma de afmetingen van het te onderzoeken oppervlak, de afstand van de camera en het beginpunt van de camera als parameters. Vervolgens doet de computer de rest.84 De montage van mozaïeken bestaat uit drie fasen. De eerste fase bestaat uit het verkrijgen van de beelden, in de tweede fase worden de beelden gecorrigeerd en in de derde worden de gecorrigeerde beelden samengevoegd. Met elk van deze fasen correspondeert een script geschreven in IPLab. De gebruiker kan deze scripts maken door commando's van het menu te selecteren en vervolgens de dialoogvensters in te vullen. Het script voor het verkrijgen van de beelden verlangt als invoer het totale aantal beelden. De verkregen beelden slaat de gebruiker op in een door hem aangemaakte directory. Het tweede script corrigeert elk beeld voor onevenwichtigheden in de camera zelf. Vervolgens normaliseert het script de beelden. Het beeld vertoont na deze procedure een hoog contrast waarin de optische vervorming is gecorrigeerd.85 Voor de montage van de beelden is de hulp van de gebruiker nodig. Wanneer het contrast tussen de twee beelden verschilt moet hij deze handmatig aanpassen. Vervolgens moet hij een corresponderend punt op beide beelden aangeven, waarna het script voor de montage wordt geactiveerd. De gebruiker slaat het verkregen beeld op onder een andere naam en herhaalt deze stappen eerst in horizontale richting en dan in verticale.86 De procedure lijkt dus veel op die van het systeem van de National Gallery. Voor een serie van vier bij vijf beelden is Peyredieu du Charlat twee uur kwijt. Hij duidt aan dat de methode voor verbetering vatbaar is. Hij wijst onder andere op de superieure kwaliteit van de CCD camera in vergelijking met de vidiconsystemen. Ook de ontwikkeling van IPLab staat niet stil en in de toekomst is het mogelijk contrastverschillen tussen beelden automatisch aan te passen. Het grootste voordeel van IPLab is dat het resultaat in het Photoshop bestandsformaat
P. Peyredieu du Charlat, 'Assemblage de mosaïques infrarouges en restauration de peintures. Application utilisant les logiciels IPLab Spectrum et Hypercard' in: R. van Schoute en H. Verougstraete ed., Le dessin sous-jacent et la technologie dans la peinture. Colloque XI 14-16 septembre 1995. Dessin sous-jacent et technologie de la peinture. Perspectives (Louvain-la-Neuve 1997) 231-237, aldaar 232-233. 85 Peyredieu du Charlat, 'Assamblage', 233. 86 Ibidem, 234. 84
26
kan worden opgeslagen, zodat het eventueel in dit programma kan worden bewerkt.87 Als laatste wil ik wijzen op een interessante methode van Saunders en Cupitt, die het mogelijk maakt in één beeld de relatie tussen de ondertekening en het schilderij weer te geven. De National Gallery bewaart zowel infraroodreflectogrammen als kleurenopnames van een schilderij. Met deze methode is het mogelijk beide beelden over elkaar heen te leggen zodat er een gekleurd infraroodbeeld ontstaat. Saunders en Cupitt gebruiken hiervoor het programma IP met aan de basis de VIPS bibliotheken. Het grootste probleem is dat het reflectogram en het kleurenbeeld wat betreft grootte niet overeenkomen. Bovendien is de resolutie van het reflectogram lager en het contrast scherper. De auteurs selecteren een vergelijkbaar oppervlak uit beide beelden. Het deel van de kleurenopname is iets groter. Vervolgens selecteren zij een aantal nauwkeurig overeenkomende punten op beide beelden. Omdat het object van onderzoek juist het verschil is tussen ondertekening en schilderij, dient de gebruiker de punten niet op contrastpunten in de afbeelding te zetten, maar bijvoorbeeld op scheuren en dergelijke oneffenheden in het doek. De computer transformeert het kleurenbeeld vervolgens aan de hand van de geselecteerde punten.88 Het probleem is dat de infraroodbeelden in geometrische opzicht slecht van kwaliteit zijn, omdat de verstoringen veroorzaakt door het vidiconsysteem nooit perfect gecorrigeerd kunnen worden. De kwaliteit van de kleurenbeelden is daarentegen zeer hoog. De gebruiker zou ontelbaar veel punten moeten selecteren om de beelden perfect over elkaar heen te kunnen leggen. Aangezien dit onmogelijk is, bestaat er een foutmarge bij de transformatie. Deze ligt rond de 0,3%. Daar de vergelijking van de beelden niet per pixel plaatsvindt, gebeurt de resampling met een bilineair interpolatiealgoritme. De beste resultaten worden bereikt wanneer de punten die worden geselecteerd zover mogelijk uit elkaar liggen. Als laatste legt de computer de twee beelden over elkaar heen. De zichtbaarheid van beide beelden kan de gebruiker handmatig bepalen en achteraf nog bijstellen.89 De auteurs betogen dat de resampling algoritmes niet erg nauwkeurig zijn. Dit beschouwen zij niet als een probleem, omdat er toch afwijkingen zijn in de geometrie van het infraroodbeeld. Verbetering van het uiteindelijke resultaat zou de onderzoeker sneller verkrijgen door betere apparatuur te gebruiken, bijvoorbeeld de PtSi detector in plaats van het vidiconsysteem.90
Ibidem, 236-237. D. Saunders en J. Cuppit, 'Elucidating reflectograms by superimposing infra-red and colour images', National Gallery technical bulletin 16 (1995) 61-65, aldaar 62. 89 Saunders en Cupitt, 'Elucidating', 62. 90 Ibidem, 65. 87 88
27
2.3 Het ideaal versus de praktijk 2.3.1 Experimenteel: het ideaal Van Asperen de Boer benadrukte al het belang van interdisciplinair onderzoek voor het kunsthistorisch vakgebied. Uiteenlopende informatie tezamen kan veel over de geschiedenis van het schilderij vertellen. Dit is niet alleen van belang voor de kunsthistoricus, maar ook voor de restaurateur. Voor een infraroodreflectogram van de ondertekening geldt hetzelfde. Op zichzelf geeft het reflectogram een hoeveelheid informatie, maar pas in vergelijking met het schilderij zelf kan het op werkelijke waarde worden geschat. Het achterwege laten van deze vergelijking kan zelfs leiden tot verkeerde conclusies. De vergelijking van meerdere infraroodreflectogrammen met verschillende golflengtes resulteert in een duidelijker beeld van de ondertekening. Van Asperen de Boer kreeg onder witte en rode verven soms betere resultaten met infraroodfotografie dan met reflectografie. Met behulp van de kleurenopname kan worden bepaald welke delen van de reflectogrammen de ondertekening het beste weergeven. Vervolgens kunnen de delen worden samengevoegd tot één geheel beeld. Het elimineren van meerdere soorten storingen gebeurt bij de opname zelf en niet achteraf. Digitale correctie verandert altijd het beeld. In principe is de scanner van Bertani het aangewezen instrument voor een compleet infraroodreflectogram van hoge kwaliteit. Ter voorkoming van willekeurige storingen worden er meerdere scans uitgevoerd die uiteindelijk worden gemiddeld. Bovendien maakt hetzelfde apparaat een kleurenopname van het schilderij. Door deze twee beelden vervolgens over elkaar heen te leggen, zoals beschreven door Saunders, wordt de relatie tussen de ondertekening en het schilderij zelf weergegeven. Aangezien beide beelden precies op elkaar passen hoeft er niet te worden geïnterpoleerd. Het resultaat is een gekleurd infraroodreflectogram met een hoge resolutie en kwaliteit. 2.3.2 Realiteit: beperkende factoren In de praktijk bestaan er twee factoren die de ideale methode in de weg staan. In de eerste plaats hebben de meeste kunsthistorische onderzoeksgroepen een beperkt budget. Dat betekent dat zij bijvoorbeeld sneller voor een softwarematige oplossing kiezen dan voor een hardwarematige. Ook werken zij vaak langer door met aangeschaft materiaal, met als gevolg dat zij geen gebruik maken van de nieuwste technieken. Ten tweede doen veel groepen onderzoek in meerdere musea. Dat betekent dat de hardware mobiel moet zijn. Een groot systeem zoals de National Gallery gebruikt, is dan ongeschikt. In verband met de kwaliteit van de beelden is het van belang het doel van het onderzoek in het oog te houden. In principe kan het onderzoek twee doeleinden hebben. In de eerste plaats digitaliseren veel musea tegenwoordig hun collectie met als doel een volledig digitaal archief aan te leggen, dat eventueel te raadplegen is door derden. Het lijkt mij dat het dan noodzakelijk is infraroodreflectogrammen, en ook kleurenopnames, van hoge kwaliteit te 28
bewaren. Bovendien is het tegenwoordig normaal dat afbeeldingen van ondertekeningen in de catalogus van een museum staan. Het is dan van belang dat ondertekeningen goed reproduceerbaar zijn. Verscheidene onderzoekers hebben zich de afgelopen jaren beziggehouden met de manier waarop kleurenopnames van schilderijen het beste digitaal kunnen worden bewaard, zodat deze zonder kleurverschillen weer kunnen worden gereproduceerd.91 Het bekendste project is het MARC project.92 In deze situatie is het handig een volledig geautomatiseerd systeem te hebben. Bovendien archiveert een museum doorgaans alleen zijn eigen collectie dus hoeft de apparatuur niet verplaatst te worden. Het maakt dan niet uit hoe groot of zwaar deze is. Kunsthistorische onderzoeksgroepen kijken met een andere blik naar de ondertekening. Voor hen gaat het in de eerste plaats om de ondertekening zelf en vaak alleen om bepaalde details. In dit geval is het alleen noodzakelijk een bepaald deel van een schilderij te onderzoeken. Sommige onderzoekers stellen voor dat in de eerste plaats het hele schilderij op een lage resolutie wordt bekeken. Omdat grotere delen van het schilderij in één keer kunnen worden verwerkt, verloopt het reflectografische proces sneller. Vervolgens kan de kunsthistoricus bekijken welke delen interessant zijn en deze vervolgens met een hoge resolutie verwerken.93 De kwaliteit van het infraroodreflectogram hoeft niet zo hoog te zijn, omdat het de kunsthistoricus in de eerste plaats om de uiterlijke kenmerken gaat, zoals de stijl of een handtekening of datum. Vanzelfsprekend moet het infraroodreflectogram wel overeenkomen met de werkelijke ondertekening. In de hele procedure naar het uiteindelijke beeld mogen dus geen vervormingen voorkomen, die de onderzoeker bij de interpretatie van het reflectogram kunnen misleiden. Aangezien dit soort onderzoek in verschillende musea plaatsvindt, moet de apparatuur makkelijk mee te nemen zijn.
Zie bijvoorbeeld H. Maitre, F.J.M. Schmitt en J.P. Crettez, 'High quality imaging in museum: from theory to practice', in Very high resolution and quality imaging II, Proc. SPIE 3025 (1997) 30-39 en J.J. McCann, 'High-resolution color photographic reproductions', in Very high resolution and quality imaging II, Proc. SPIE 3025 (1997) 5359. 92 Zie Cupitt, Saunders en Martinez, 'Digital'. 93 Zie bijvoorbeeld Russo, 'Infrared', 236. 91
29
3 De huidige methode voor mozaïekmontage 3.1 Inleiding Het vorige hoofdstuk laat zien dat er veel methoden bestaan voor het maken van een compleet beeld van de ondertekening van een schilderij. In dit hoofdstuk zal ik een overzicht geven van de huidige procedure die het cluster kunstgeschiedenis volgt. 3.2 De methode van het cluster kunstgeschiedenis aan de Rijksuniversiteit Groningen Het vorige hoofdstuk eindige met de manieren waarop musea en kunsthistorische onderzoeksgroepen omgaan met de ondertekening van een schilderij. De afdeling kunstgeschiedenis is een goed voorbeeld van een onderzoeksgroep met relatief weinig financiële middelen. Zij doet onderzoek in musea in binnen- en buitenland en moet dus veel reizen. Het is voor haar dus onmogelijk veel apparatuur mee te nemen. In sommige gevallen bestaat de mogelijkheid de apparatuur ter plaatse te gebruiken. Is er geen apparatuur aanwezig, dan moet de vakgroep haar eigen apparatuur meenemen. Dit betekent in de eerste plaats dat de infraroodreflectogrammen van de vakgroep niet uniform zijn wat betreft de kwaliteit. Conform de norm in de kunsthistorische wereld wordt precies bijgehouden onder welke omstandigheden en met welke apparatuur de reflectogrammen worden gemaakt. In het verslag wordt onder andere het beginpunt en de beweging van de camera over het schilderij vastgelegd.94 Achteraf kan dus nauwkeurig worden nagegaan hoe de reflectogrammen zijn gemaakt. De eigen apparatuur bestaat uit een Hamamatsu camera. Onlangs heeft het cluster een digitale camera aangeschaft. In de beschrijving van zijn procedure ga ik uit van de oude camera, omdat de beelden waarop dit onderzoek zich richt nog met de Hamamatsu camera zijn gemaakt. Tijdens het reflectografieproces staat de camera op een statief met wielen. Het statief zelf bestaat uit een verticale ijzeren staaf met daaraan een horizontale staaf. Over beide staven kan de camera uitsluitend handmatig worden bediend. Voor de verticale beweging is er een hendel waaraan de gebruiker draait. De camera schuift over de horizontale staaf. De onderzoeksgroep kan een schilderij op twee manieren verwerken. Wanneer de omstandigheden het toelaten, wordt het schilderij op een ezel geplaatst. Dit is de handigste manier, omdat zowel schilderij als camera kunnen bewegen. In andere gevallen wordt het schilderij hangend aan de muur verwerkt, waarbij het zich soms achter glas bevindt. De lichtbronnen zijn aan de camera bevestigd en bewegen dus met de camera mee. De onderzoekers fotograferen het beeld dat op een kleine monitor verschijnt met een fotocamera geplaatst op een houten Zie voor een precieze beschrijving van de inhoud van het verslag: M. Faries, Studying underdrawings: notes for the cologne workshop (Bloomington 1991) 16-18. Zie voor voorbeelden: Faries, Studying, 19-32. 94
30
plankje. Dit plankje moet ervoor zorgen dat het fototoestel altijd op dezelfde manier voor het beeldscherm wordt geplaatst. Op die manier wordt de eenvormigheid van de beelden gewaarborgd. De foto's geven het complete monitorscherm weer, inclusief een zwart kader. Na het installeren van de apparatuur maken de onderzoekers willekeurige reflectogrammen van het schilderij. Hierdoor raken zij vertrouwd met de respons van het schilderij op de infraroodstraling en kunnen zij de opstelling van de apparatuur preciseren. In deze fase worden onder andere de afstand tussen de camera en het schilderij, de belichting, het type lens en de instellingen van de monitor bepaald. Een constante afstand tussen het schilderij en de camera wordt op meerder manieren gegarandeerd. Ten eerste leggen de onderzoekers een plank voor de muur waaraan het schilderij hangt. Het statief wordt tegen deze plank heen en weer gereden. Ten tweede hangen zij, wanneer dat nodig is, het schilderij recht door een stukje piepschuim achter de onderzijde van het schilderij te plaatsen. Het verticaal plaatsen van het schilderij gebeurt op het oog. Er wordt geen waterpas gebruikt en het kan dus voorkomen dat een schilderij toch iets schuin aan de wand hangt. Het is onmogelijk kromme schilderijen te corrigeren. Dat betekent dat de camera dus schuin ten opzichte van het doek kan staan. Vooral panelen kunnen af en toe zeer krom zijn. Het gevolg is een geometrische afwijking in de infraroodreflectogrammen. 1 2 3 enz.
Figuur 1: de beweging van de camera over het schilderij.
Nadat de opstelling is geoptimaliseerd verwerkt de onderzoeksgroep het schilderij op systematische wijze. In eerste instantie verwerken de onderzoekers het hele schilderij. De camera wordt in verticale richting over het schilderij bewogen. Hij start in de linkerbovenhoek en beweegt vervolgens naar beneden. Onder aan het schilderij gekomen wordt de camera naar rechts verschoven en beweegt zich naar boven, zodat de camera zich als een soort slang over het schilderij beweegt. Figuur één geeft deze beweging weer. De camera kan eventueel linksonder beginnen, maar er wordt altijd van links naar rechts gewerkt. De verwerking van het doek wordt, zoals hiervoor gemeld, uitvoerig gedocumenteerd. Tevens geeft de onderzoeker op een afbeelding van het
31
schilderij de delen aan, die een gedetailleerdere scan verdienen. Na de complete scan worden de aangegeven delen met een hogere resolutie gereflectografeerd. Door de handmatige bediening van de camera verschilt de overlap tussen de beelden. Gemiddeld overlappen de infraroodreflectogrammen een derde tot een half beeld. Wanneer het einde van een filmrol is bereikt, wordt de camera niet verplaatst, zodat het laatste beeld op de oude filmrol gelijk is aan het eerste beeld op de nieuwe. In principe is de overlap tussen deze twee beelden dus honderd procent. Door het plaatsen van een nieuw filmrolletje beweegt de camera, zodat het eerste beeld van het oude rolletje niet precies overeen komt met dat van het nieuwe. Het complete mozaïek van een schilderij vormt altijd een rechthoek van beelden waarbij elke kolom evenveel beelden bevat. Elke kolom bevat evenveel foto's en dit geldt eveneens voor elke rij. Dit hoeft echter niet het geval te zijn bij de beelden van de interessante delen. Een dergelijk deel kan bijvoorbeeld een driehoekige vorm hebben. In het verleden heeft de afdeling grijswaardenkaarten gemaakt voor elk infraroodreflectogram. Doordat daar verder niets meer mee werd gedaan, heeft zij besloten deze niet meer te maken, omdat dat scheelde in werktijd. De reflectogrammen die de onderzoekers het laatste paar jaar hebben gemaakt, zijn dus nooit gecorrigeerd voor onevenwichtige belichting. Ook heeft de groep nooit correcties uitgevoerd voor geometrische vervormingen. Het gevolg daarvan is, dat bij de montage in ieder geval veel tijd moet worden besteed aan het naadloos monteren van twee beelden. Wanneer de beelden consequent aan één kant lichter zijn dan aan de andere kant wordt de correctie moeilijker. Vaak ontstaat een zichtbaar patroon over de totale montage van lichte en donkere delen. Zonder digitale correctie kunnen geometrische verstoringen uitsluitend worden verholpen door het middelste deel van het reflectogram te gebruiken. Dat betekent dat de overlap op de foto's zo groot moet zijn dat na verwijdering van de rand er nog genoeg overlap overblijft om de beelden goed te kunnen monteren. Er moeten dus meer reflectogrammen worden gemaakt per schilderij. De digitalisering van de infraroodreflectogrammen gebeurt via het scannen van de negatieven. Hiervoor is een negatiefscanner aanwezig, namelijk een Kodak RFS Nikon Coolscan. Bijbehorende software laat de gebruiker een aantal parameters instellen, zoals het contrast, de lichtheid en de resolutie. De onderzoekers wijzigen deze instellingen niet. Ook benutten zij de mogelijkheid tot het verkleinen van het te scannen oppervlak niet. Dit betekent dat er rondom elk beeld een zwarte rand zichtbaar blijft na de digitalisering. Door de handmatige plaatsing van de fotocamera voor het televisiebeeld zijn deze zwarte randen verschillend van omvang. Figuur twee laat zien dat de beelden na de digitalisering qua omvang en kwaliteit ten opzichte van elkaar niet zijn veranderd. Elk gescand negatief krijgt een unieke bestandsnaam. Deze bestaat uit twee getallen, gescheiden door een underscore. Het eerste getal is het nummer van de filmrol. Het tweede getal geeft het nummer van de foto aan. Beide getallen zijn op het negatief terug te vinden. Het gevolg van deze manier van werken is dat een 32
filmrol foto's van twee schilderijen kan bevatten. Bovendien is via de naamgeving van het bestand niet te achterhalen bij welk schilderij het beeld hoort en welke plaats het inneemt in het mozaïek.
Figuur 2: de infraroodreflectogrammen na digitalisering. Het rechter beeld is gemaakt met de oude Hamamatsu camera. Het linker beeld is gemaakt met de nieuwe digitale camera.
De montage van het mozaïek gebeurt volledig in het softwarepakket Adobe Photoshop 5.0. Het eerste beeld wordt geopend in het programma. Vervolgens selecteert de onderzoeker het gedeelte van het beeld dat moet worden gebruikt voor de montage. Dit is geen precieze selectie, maar wordt op het oog gedaan. Dit deel van het beeld wordt naar een nieuw bestand gekopieerd. Vervolgens vergroot de onderzoeker de grootte van het canvas van dit bestand via het menu-item 'Image->Canvas Size…'. Hij schat de omvang die het totale mozaïek zal zijn. Deze kan later eventueel nog worden aangepast. Daarna wordt het tweede beeld geopend en selecteert de onderzoeker het deel dat hiervan moet worden gebruikt. Dit deel kopieert hij naar het vergrote canvas waar het eerste beeld in een hoek aanwezig is. Welke hoek dat is, hangt af van het beginpunt van de camera op het schilderij zelf. Photoshop plaatst het gekopieerde beeld automatisch in een nieuwe 'layer'. Door de layer half transparant te maken, kan het onderliggende beeld deels zichtbaar worden gemaakt. Met behulp van het verplaatsgereedschap (te vinden in de toolbox) plaatst de onderzoeker de layer in de juiste positie. Eventueel bepaalt hij de precieze positie met behulp van de pijltjestoetsen. De optimale positie is gevonden wanneer de overlap tussen beide beelden op het oog het scherpste beeld geeft. De volgende stap omvat het aanpassen van de levels van beide beelden via 'Image->Adjust->Levels…' totdat de naad tussen beide beelden niet meer zichtbaar is. Wanneer op deze manier de naad niet geheel kan worden weggewerkt, dan kan via 'Layer->Add layer mask' een masker aan de betreffende layer worden toegevoegd. Door op dit masker een gradiënt van wit naar zwart te plaatsen, kan een naadloze overgang worden verkregen. Op deze manier plaatst de onderzoeker alle beelden in het bestand. De volgorde die daarbij wordt aangehouden, is dezelfde als de slangachtige beweging die de camera over het doek heeft gemaakt. Wanneer het mozaïek geheel is gemonteerd, voegt de onderzoeker alle layers samen tot één layer via 'Layer>Flatten Image'. De levels van het platte beeld worden aangepast en eventueel past de onderzoeker het contrast en de lichtheid van het totale beeld aan. 33
3.3 Aanmerkingen op de methode De methode van werken leent zich, met het oog op de in het vorige hoofdstuk besproken methoden, voor enige kanttekeningen. Wat betreft de opstelling van de apparatuur is het cluster gebonden aan de beperkingen van het materiaal. Daar valt niet veel op af te dingen. Vooral het monteren van het mozaïek in Photoshop verdient een secuurdere aanpak. De manier waarop de onderzoeker nu te werk gaat, doet enigszins willekeurig aan. Hij begint met het reflectogram dat het eerste is gemaakt, en monteert achtereenvolgens de beelden zoals deze op het fotorolletje staan. Het volgende beeld komt altijd op een nieuwe layer terecht, die Photoshop voor de laatste plaatst. Echter misschien geeft het overlappende deel van het onderste beeld de ondertekening beter weer dan die in de layer erboven. De onderzoeker beoordeelt dus niet per beeld welk overlappende deel het beste gebruikt kan worden. Het laatste beeld overlapt standaard het voorgaande beeld. Het nadeel hiervan is dat het beeld onder de laatst geplaatste layer misschien van betere kwaliteit is dan het beeld in de layer erboven met als gevolg dat de beeldkwaliteit van het totale mozaïek niet optimaal is. Het aanpassen van de levels van de beelden is ook niet gevrijwaard van willekeur. Deze wordt op het oog gedaan. Bovendien houdt de onderzoeker tijdens het zoeken naar een naadloze overgang tussen twee beelden alleen rekening met deze twee beelden tijdens het aanpassen van de levels en niet met het totaalbeeld. Wanneer alle beelden rechts iets donkerder zijn dan links, kan dit uiteindelijk problemen opleveren, omdat de rechter beelden steeds donkerder worden. Als laatste is Photoshop een algemeen beeldverwerkingsprogramma. Er bestaan softwarepakketten die zich specifiek richten op het monteren van mozaïeken en panorama's. Er zijn al een aantal aan bod gekomen in het vorige hoofdstuk. In het volgende hoofdstuk zal ik dieper ingaan op deze pakketten.
34
4 Softwarepakketten voor mozaïekmontage 4.1 Inleiding Er zijn softwareprogramma's op de markt die zich richten op het samenvoegen van beelden. Veel van deze software is gespecialiseerd in het maken van panorama's. Dit zijn beelden die zijn gemaakt door de camera op een vast punt rond te draaien. Deze programma's zijn niet geschikt voor het samenvoegen van beelden, waarbij de camera zich over een plat oppervlak beweegt, omdat er rekening wordt gehouden met het verschil in perspectief in de beelden. Een aantal programma's zijn ook in staat om platte beelden samen te voegen. Voorbeelden hiervan zijn LM Stitch95, PanaVue ImageAssembler96, Panorama Maker 200097, REALVIZ Stitcher98, Helmut Dersch' Panotools99 en VIPS100. Voor het bepalen van de pakketten die het waard zijn nader te onderzoeken, heb ik gebruik gemaakt van een website waar dit soort programma's worden gerecenseerd.101 Uiteindelijk zijn er uit dit aanbod twee programma's naar voren gekomen voor nader onderzoek. LM Stitch en Panorama Maker krijgen beide slechte recensies en hebben een beperkte functionaliteit. REALVIZ Stitcher is, naast dat het een erg goed programma is, ook een erg duur programma. Bovendien is veel van de functionaliteit gericht op het publiceren van panorama's, bijvoorbeeld in Flash- of Quicktimeformaat. Voor dit onderzoek is dat soort functionaliteit niet van belang. Een pakket dat zeker de aandacht zou verdienen, is Helmut Dersch' Panotools. Het is een zeer uitgebreid pakket, dat tot in de kleinste details is aan te passen. Wegens patentverwikkelingen is het echter van het internet verwijderd en het is de vraag of het ooit verder zal worden ontwikkeld.102 ImageAssembler en VIPS zijn de twee pakketten die een grondiger onderzoek verdienen. Welke opties heeft het programma voor het samenvoegen van een mozaïek van plenaire beelden? Eerst worden beide programma's kritisch bekeken en vervolgens zal ik de voor- en nadelen van beide pakketten tegenover elkaar zetten. Uiteindelijk wordt gekeken welk pakket het beste kan worden gebruikt voor de nieuwe procedure.
Website: www.lostmarble.com. Website: www.panavue.com. 97 Website: www.arcsoft.com. 98 Website: www.realviz.com. 99 Website: www.fh-furtwangen.de/~dersch. 100 Website: www.vips.ecs.soton.ac.uk. 101 Zie: www.panoguide.com en specifiek de pagina www.panoguide.com/software/compare_stitch.html voor een overzicht van alle plus- en minpunten van de verschillende softwarepakketten. 102 Voor meer informatie: http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF8&q=panotools+dersch+patent&btnG=Google+Search 95 96
35
4.2 PanaVue ImageAssembler 2.07 4.2.1 Achtergrond en eerste kennismaking PanaVue Company richt zich op het ontwerpen en ontwikkelen van nieuwe, creatieve software. G. Morin richtte het bedrijf in 1994 op. Hij beoogde in te spelen op de technische ontwikkelingen op het gebied van de digitale fotografie en scanners. Zijn wiskundige achtergrond kwam goed van pas bij de ontwikkeling van beeldverwerkende software.103 In eerste instantie startte hij met het product Visual Stitcher104. Dit programma is de voorloper van het huidige ImageAssembler. ImageAssembler is in de eerste plaats een commercieel product voor het maken van panorama's en mozaïeken. Het programma biedt de mogelijkheid foto's te monteren tot panorama's van 360 graden. Het programma is door zijn overzichtelijke interface door zowel ervaren als onervaren gebruikers gemakkelijk te gebruiken. ImageAssembler is ontworpen voor het bewerken van beelden met een hoge resolutie. Op Windows NT en 2000 kan het projecten van meer dan vijfhonderd megabytes aan. Voor de overige Windows versies is dat de helft. De beelden kunnen optioneel worden gecorrigeerd voor afwijkingen veroorzaakt door de lens van de camera. Tijdens het monteren past het programma de kleuren aan en laat de beelden soepel in elkaar overlopen. In de automatische modus positioneert ImageAssembler de afzonderlijke beelden zelf, zodat de gebruiker niet handmatig hoeft aan te geven hoe de beelden moeten worden geplaatst. Het resultaat kan in verschillende bestandsformaten worden opgeslagen. Via de commandline interface is het mogelijk met behulp van batchprocessen meerdere beelden tegelijk te verwerken.105 4.2.2 Procedure Wanneer de gebruiker ImageAssembler start en een nieuw project begint, kan hij uit vijf mogelijkheden kiezen, namelijk Image Stitching, Photo Stitching, 360 graden Wrapping, Lens Wizard en Cropping. Photo Stitching en 360 graden Wrapping zijn bedoeld voor het maken van panorama's en zullen hier verder buiten beschouwing worden gelaten. Een Image Stitching project stelt de gebruiker in staat platte beelden te monteren. Foto's die gemaakt zijn door de camera loodrecht over een plat oppervlak te bewegen, leveren platte beelden op. Hieronder vallen alle methoden die kunsthistorici en conservatoren gebruiken om infraroodreflectogrammen van schilderijen te maken. Wanneer de gebruiker een nieuw project start, moet hij ten eerste de beelden die hij wil gaan monteren, aan zijn project toevoegen. Elk beeld moet hij 'About us', www.panavue.com/about_us/index.html (Internet 1998) (12-07-2001). Zie: J. Rigg, 'Visual Stitcher 1.05a', www.panoguide.com/software/reviews/visualstitcher_v105a.html (Internet 1999) (12-072001). 105 'Products', www.panavue.com/products/index.html (Internet 2000) (12-07-2001). 103 104
36
zorgvuldig nummeren, zodat het programma weet hoe de beelden op elkaar aansluiten. Met behulp van de shift- en ctrl-toetsen kan de gebruiker meerdere beelden in één keer openen. Het beeld dat linksboven thuishoort, krijgt het nummer één. Zoals in figuur drie weergegeven verhogen de nummers die de beelden krijgen toegewezen, rechts van het eerste beeld steeds met één, de nummers eronder met honderd. De geopende beelden kan het programma eventueel negentig graden roteren.106
1
3
2
101
201
102
202
103
203
Figuur 3: nummering van de beelden.
ImageAssembler biedt de gebruiker twee manieren aan waarop het de afzonderlijke beelden kan plaatsen. In de automatische modus zoekt het programma zelf naar de beste plaatsing. De nauwkeurigheid van de plaatsing kan eventueel worden aangepast met een aantal parameters. De hoogte van de resolutie geeft aan hoe nauwkeurig het patroonherkenningsalgoritme te werk gaat. Een hoge waarde representeert grotere nauwkeurigheid en langere zoektijd. In figuur vier is te zien hoe de minimale en maximale percentages van overlapping de marges bepalen waarbinnen ImageAssembler zoekt naar de optimale overlap, zowel in verticale richting (voor kolommen) als in horizontale richting (voor de rijen). PanaVue Inc. raadt aan bij het maken van de foto's een overlap van tien tot vijftig procent aan te houden.107 Het perpendiculaire percentage beïnvloedt in hoeverre aaneensluitende beelden over de lengte van de overlap worden verschoven teneinde de ideale overlap te vinden, zoals weergegeven in figuur vier. Als laatste kan de gebruiker het aantal graden aangeven waarover beelden geroteerd worden. Het programma houdt dan bij zijn zoektocht rekening met de mogelijkheid dat de beelden onder een bepaalde hoek gedraaid kunnen zijn.108
'Image stiching project', PanaVue ImageAssembler Help. Panavue Inc. (2001, Helpbestand bij ImageAssembler). 107 'Photo Shooting Techniques', PanaVue ImageAssembler Help. Panavue Inc. (2001, Helpbestand bij ImageAssembler). 108 'Automatic Stitching Advanced Settings', PanaVue ImageAssembler Help. Panavue Inc. (2001, Helpbestand bij ImageAssembler). 106
37
c
2 1
d a
b
Figuur 4: a is het maximale percentage overlap, b is het minimale percentage overlap. C en d geven de verticale marges aan waarbinnen ImageAssembler zoekt. Beeld twee verschuift dus over de twee pijlen totdat de optimale overlap is gevonden. Wanneer er een rotatiehoek () is ingesteld wordt beeld twee bovendien gedraaid over de hoek tijdens het zoeken.
De tweede manier vereist meer inbreng van de gebruiker. Per paar beelden moet de gebruiker twee overeenkomstige punten aangeven. Dat betekent dat er per twee beelden in totaal vier punten moeten worden aangegeven. De gebruiker heeft met het plaatsen van deze 'vlaggen' veel invloed op de kwaliteit van het resultaat. In de eerste plaats is het van belang dat hij herkenbare punten uitzoekt. Dit zijn bijvoorbeeld hoeken van objecten, vlekken of kruisende lijnen die in beide beelden duidelijk zijn terug te vinden. Dat maakt het voor ImageAssembler makkelijker de twee beelden te plaatsen. Wanneer de punten zich in een egaal deel van het beeld bevinden, kan het programma geen herkenbare punten vinden en is de kans groter dat de montage minder van kwaliteit is. Het is in de tweede plaats noodzakelijk de punten zo ver mogelijk uit elkaar te plaatsen en zo dicht mogelijk bij de randen. ImageAssembler krijgt dan een betere indicatie waar de overlappende delen zich ten opzichte van elkaar bevinden. De gebruiker kan bij het plaatsen van de punten assistentie vragen van het programma. Wanneer het punt is gezet zoekt het programma vervolgens binnen een beperkt gebied rondom het punt naar de optimale plaats. Ook hierbij hangt de betrouwbaarheid van de optimalisatie af van de mate van herkenning door ImageAssembler. De montage van een mozaïek via deze methode kan op twee manieren verlopen. Ten eerste kan de gebruiker alle beelden in één keer monteren. Hij plaatst dan alle vlaggen op de juiste plaats en laat het programma vervolgens de montage uitvoeren. Dit is de snelste methode, maar voor mozaïeken met meer dan zes beelden daalt de precisie, vooral wanneer de grootte van de overlap tussen de beelden verschilt. De tweede methode is trager, maar nauwkeuriger. De eerste stap behelst het monteren van de beelden in horizontale richting (of verticale). Vervolgens monteert de gebruiker de rijen in verticale richting (of de kolommen in horizontale). Voor elke rij dient echter wel een nieuw project te worden aangemaakt.109
109
38
'Image stiching project', PanaVue ImageAssembler Help.
Voor alle methoden heeft de gebruiker de mogelijkheid een aantal opties in te stellen. In de eerste plaats is het mogelijk het percentage 'blending' aan te geven. Blending wordt gebruikt om de overgang tussen twee foto's soepel te laten verlopen. Daarbij wordt het overlappende gedeelte gebruikt voor een zachte overgang. Het percentage geeft aan hoeveel van het overlappende gedeelte moet worden gebruikt voor het maken van de overgang. Teveel blending kan een troebel beeld veroorzaken, te weinig blending kleurverschillen in de overlap. De handleiding raadt twintig tot zestig procent aan. Optioneel past ImageAssembler kleuraanpassing en anti-aliasing toe. De eerste stemt de kleuren van de beelden op elkaar af. De laatste vervaagt het beeld op plaatsen waar zich scherpe randen en lijnen bevinden. Dit vertroebelt het beeld licht, maar laat het uiteindelijke resultaat er beter uitzien. ImageAssembler gebruikt voor anti-aliasing een bikubistisch interpolatiealgoritme. Deze vervaagt scherpe objecten door aangrenzende pixels lichtelijk te kleuren met de kleur van het object, maar behoudt een redelijk contrast (dit in tegenstelling tot de bilineaire variant). Als laatste kan het programma de vervorming van de lens compenseren. Lenzen kunnen een foto licht vervormen met als gevolg dat bijvoorbeeld rechte lijnen op de foto iets gebogen zijn. ImageAssembler kan deze vervormingen corrigeren. Met een negatief getal wordt een concave afwijking gecorrigeerd, met een positief getal een convexe afwijking. Wanneer de te monteren beelden uit een ander ImageAssembler project komen, kan de gebruiker dit aangeven. Het programma verwijdert dan eerst de witte randen. De optie 'Force first row and first column to follow a straight line' zorgt ervoor dat de beelden in de bovenste rij en in de eerste kolom niet geroteerd worden, zodat zij over een rechte lijn worden gemonteerd.110 Voorafgaand aan een Image Stitching project kan de gebruiker eventueel de vervorming van de lens van de camera bepalen. Hiervoor dient hij een Lens Wizard project te starten. Met de 'lenswizard' kan ImageAssembler het type van de lens vaststellen. De gevonden parameters van de lens slaat het programma vervolgens op, zodat deze gebruikt kunnen worden om de beelden te corrigeren. In de eerste plaats is de lenswizard bedoeld voor het corrigeren van de beelden van een panorama, maar deze kan ook gebruikt worden om de vervorming van de lens te bepalen. De gebruiker opent een twee- of drietal horizontaal of verticaal aaneensluitende beelden van het mozaïek en activeert de lenswizard. Deze berekent de parameters van de gebruikte lens. De gebruiker onthoudt de waarde van de vervorming en vult deze bij zijn Image Stitching project in. Met behulp van deze waarde corrigeert het programma alle individuele beelden, voordat deze worden gemonteerd. Het is hierbij van belang dat het centrum van het beeld overeenkomt met het centrum van de foto. Dit betekent dat bijvoorbeeld bij het scannen van foto's aan alle zijden òf een even grote rand kan worden
'Options Tab (Image Stitching Project)', PanaVue ImageAssembler Help. Panavue Inc. (2001, Helpbestand bij ImageAssembler). 110
39
meegenomen, òf helemaal geen randen. In ieder geval moeten, voordat ImageAssembler gaat schalen, de randen worden verwijderd.111 ImageAssembler bezit een klein aantal mogelijkheden voor het bewerken van het resultaat. Met de optie 'Images->Sharpen' kan het beeld worden verscherpt. De precieze werking van het achterliggende algoritme is onduidelijk, maar het lijkt veel op het standaard sharpenfilter dat in het beeldverwerkingsprogramma The GIMP aanwezig is. De gebruiker kan echter geen parameters instellen. De functie 'Images->Unsharpen' is een filter dat het beeld vervaagt. Ook hier krijgt de gebruiker geen mogelijkheid parameters in te stellen. Andere programma's zoals The GIMP en Photoshop hebben uitgebreidere mogelijkheden om deze beeldverwerkingen uit te voeren. Daarnaast bestaat er de mogelijkheid projecten op een vooraf ingestelde datum en tijdstip te laten starten, zodat grote projecten bijvoorbeeld 's nachts kunnen worden gemonteerd. PanaVue heeft een aantal uitgebreide commandline opties waarmee een groot gedeelte van het proces kan worden geautomatiseerd. Het grootste nadeel echter is dat de gebruiker van tevoren via de grafische interface een project aan moet maken. Er kan vanaf de commandline dus geen nieuw project worden gecreëerd. Het is wel mogelijk de individuele beelden van het project te vervangen. Op deze manier kunnen vanaf de commandline met één project meerdere mozaïeken worden gemonteerd. Een voorwaarde is dat de verschillende mozaïeken dezelfde afmetingen hebben, omdat het aantal afbeeldingen van een bestaand project niet kan worden aangepast. Een project met vier bij vijf afbeeldingen kan niet vanaf de commandline worden gemonteerd met een project waarin twee bij drie afbeeldingen zijn gedefinieerd. Voor een project met een ander aantal afbeeldingen moet dus een nieuw project worden gemaakt. Bovendien is de commandline alleen van toepassing op projecten die in de automatische modus kunnen worden gemonteerd, omdat de posities van de vlaggen niet kunnen worden veranderd. De functies die voor de commandline beschikbaar zijn, kunnen ook worden gebruikt bij het programmeren van eigen applicaties. 4.2.3 Resultaten In vergelijking met de methoden die in het vorige hoofdstuk besproken zijn, is het grote pluspunt van dit programma de automatische montagemogelijkheid. In de in het vorige hoofdstuk besproken methoden is deze mogelijkheid nog niet naar voren gekomen. De opstelling van de National Gallery komt nog het dichtst in de buurt, maar daar zit een grote hoeveelheid apparatuur achter, die met behulp van een computer wordt aangestuurd. Bij de andere besproken methoden moet de gebruiker handmatig aangeven hoe de beelden elkaar overlappen. ImageAssembler maakt het mogelijk zonder een dergelijke, vaak prijzige opstelling mozaïeken automatisch te monteren.
'Lens Wizard Project', PanaVue ImageAssembler Help. Panavue Inc. (2001, Helpbestand bij ImageAssembler). 111
40
Gelijk kan echter worden geconstateerd, dat de automatische modus een aantal tekortkomingen heeft. ImageAssembler was niet in staat het geleverde materiaal van de afdeling kunstgeschiedenis in één keer te monteren. Op bepaalde plaatsen blijven de zwarte randen deels zichtbaar. Zelfs met verschillende instellingen is het programma niet in staat deze te laten verdwijnen. Ook nadat de zwarte randen om de beelden worden verwijderd, weet ImageAssembler niet hoe bepaalde beelden te monteren. In sommige gevallen blijven naden zichtbaar op de plaats waar de twee beelden zijn gemonteerd. Dit is vooral het geval bij het monteren in horizontale richting. Kolommontages leiden bijna altijd tot de gewenste resultaten. Het valt op dat het resultaat een naad laat zien op de plaats waar twee verticale beelden niet precies overlappen. Figuur vijf geeft dit probleem weer. ImageAssembler werkt dus beter in verticale richting dan in horizontale. De meest logische oplossing zou zijn eerst het mozaïek in kolommen te monteren, vervolgens de kolommen negentig graden te draaien en deze te verwerken. Het programma maakt echter meer montagefouten naarmate de horizontale lengte groter is. Hoe kleiner de lengte waarover twee beelden gemonteerd worden, in figuur vijf gemarkeerd door pijl b, hoe minder fouten ImageAssembler maakt. Voor de ideale montagemethode zou deze lengte bij elke montage van twee beelden zo klein mogelijk moeten worden gehouden. De montage van kleinere blokken die vervolgens worden verwerkt tot een totaalbeeld, is een betere methode.
a b
Figuur 5: a. Horizontale montage laat meestal een naad zien. b. Voor een minimale foutmarge moet de lengte waarover twee beelden gemonteerd worden zo klein mogelijk zijn.
Het handmatig aangeven van overeenkomstige herkenningspunten leidt vrijwel altijd tot een juist resultaat. Het grootste voordeel van deze methode is de tijdswinst. Een geoefend gebruiker kan de herkenningspunten door de overzichtelijke interface van ImageAssembler vrij snel bepalen. De vlagassistent bepaalt de precieze plaats van de corresponderende punten. Voor een kolom van tien beelden is twee tot drie minuten nodig voor het aangeven van de punten. ImageAssembler heeft vervolgens zelf een kleine minuut nodig voor de montage.112 Bovendien is de zekerheid dat de montage goed verloopt hoger in vergelijking met de automatische modus. Voor dezelfde kolom van tien beelden heeft het programma zelf ongeveer acht en een halve minuut nodig. Evenals bij 112
Voor de montages is een Pentium Celeron 333Mhz met 64MB geheugen gebruikt.
41
de automatische modus resulteert het werken via kolommen in betere resultaten. In sommige gevallen waren in het eindresultaat de zwarte randen terug te vinden wanneer ImageAssembler het mozaïek in één keer monteerde. De parameters die de gebruiker in kan stellen, hebben vooral invloed op de scherpte van het resultaat. De blendingsfactor heeft grote invloed op de scherpte in de overlappende delen van de beelden. Voor de infraroodreflectogrammen van het cluster kunstgeschiedenis geeft een percentage van vijf tot twintig procent een optimaal resultaat. De scherpte van de beelden blijft behouden terwijl de overgang geen kleurverschillen laat zien. Dit is het gevolg van de kleine kleurverschillen tussen de originele beelden. Hierdoor is het niet nodig de complete overlap te gebruiken om het verschil in lichtheid van de twee beelden te compenseren en kan worden volstaan met een kleine band in de overlap. Dit betekent dat een groot deel van de overlap wordt bepaald door het origineel van het ene of het andere beeld en een relatief klein deel door een combinatie van beide. Bij een laag blendingspercentage leidt het aanpassen van de kleuren van de beelden door ImageAssembler dus tot een beter resultaat. Een tweede factor die invloed heeft op de scherpte van het beeld is antialiasing. Anti-aliasing geeft een minder scherp beeld doordat de functie scherpe objecten vervaagt, maar kan een meer vloeiende overgang bewerkstelligen. ImageAssembler levert de mooiste mozaïekmontages bij een lage blending met anti-aliasing. De anti-aliasing zorgt voor een soepel beeld in de regio van de overlap die buiten het deel ligt dat wordt beïnvloed door het blenden. De uiteindelijke overloop van het ene naar het andere beeld wordt tot stand gebracht over een klein deel van de overlap. Het bepalen van de vervorming van de lens kan eveneens bijdragen aan de scherpte van het totaalbeeld. De vervorming blijkt bij de geleverde infraroodreflectogrammen niet overal gelijk te zijn. Daarom is het beter deze waarde meerdere keren op verschillende plaatsen in het mozaïek te bepalen. Bovendien wordt voor de zekerheid de vervorming zowel op verticale als op horizontale wijze berekend. Er moet dus meerdere keren een lensproject worden gestart. Echter als eenmaal de gemiddelde vervorming is vastgesteld, kan deze voor de correctie van alle beelden worden gebruikt. Veel tijd nemen deze berekeningen niet in beslag. Met behulp van de hiervoor beschreven instellingen blijft de scherpheid van de originele beelden zoveel mogelijk behouden, zonder dat er hinderlijke overgangen of kleurverschillen in het totaalbeeld te zien zijn. Bovendien heeft deze methode de voorkeur boven het beperkte, ingebouwde scharpenfilter. In de eerste plaats omdat niet te achterhalen is wat deze nu precies doet, en ten tweede omdat het sharpenfilter de lichtheid van de pixels in het hele beeld aanpast, en niet alleen in het overlappende deel. Een hinderlijk bijverschijnsel van ImageAssembler is dat het totaalbeeld in sommige gevallen zeer scheef is. Dit kan de gebruiker corrigeren met een cropping project. In dat geval roteert het programma het beeld. Het roteren van 42
digitale beelden over andere hoeken dan 90, 180 of 270 graden levert over het algemeen kwaliteitsverlies op, omdat er dan interpolatie wordt toegepast. Zoals hiervoor beschreven verandert interpolatie de lichtheid van de pixels. ImageAssembler heeft twee mogelijkheden om direct een recht beeld te krijgen. Ten eerste kan de hierboven genoemde optie 'Force first row and first column to follow a straight line' worden gebruikt. Deze zorgt ervoor dat de rechter- en bovenzijde van het beeld een zo recht mogelijke lijn vormen. In automatische modus kan ook de rotatiehoek op nul worden gezet. Het blijkt dat de montage van de reflectogrammen van het cluster kunstgeschiedenis geen beter resultaat oplevert, wanneer ImageAssembler rekening houdt met het feit dat de beelden eventueel gedraaid moeten worden. De beelden zijn dus voldoende recht en roteren is dus onnodig. Bovendien verloopt de montage sneller, wanneer het programma deze stap niet hoeft uit te voeren. Een nadeel aan ImageAssembler is dat het programma sommige gecomprimeerde TIF-bestanden, onder andere Lempel-Ziv compressie (LZW), niet kan openen. Wanneer met dit soort bestanden moet worden gewerkt, is er een extern programma nodig, bijvoorbeeld The GIMP, om de bestanden te converteren naar het normale TIF-formaat. 4.3 VASARI Image Processing System (VIPS) 7.8.6 4.3.1 Achtergrond en eerste kennismaking VIPS is in de eerste plaats een bibliotheek met een groot aantal beeldverwerkende functies. Momenteel wordt het onderhouden door J. Cupitt en K. Martinez. De eerste is werkzaam voor de National Gallery te Londen. Martinez is verbonden aan het Departement voor Elektrotechniek en Computer Wetenschappen van de universiteit van Southampton. De ontwikkeling van het pakket begon in 1990 onder leiding van N. Dessipris en K. Martinez in het kader van het in het vorige hoofdstuk behandelde VASARI project. Het is een wetenschappelijk georiënteerd pakket dat op dit moment alleen beschikbaar is voor UNIX of Linux.113 Over het algemeen betekent dit, dat het gebruikersgemak ondergeschikt is aan de inhoud en functionaliteit en VIPS is daarop geen uitzondering. Hoewel de functies van de bibliotheek toegankelijk zijn via een userinterface, genaamd IP (of NIP), lijkt het programma op het eerste gezicht moeilijk hanteerbaar te zijn. In tweede instantie blijkt VIPS, in combinatie met IP, echter een zeer flexibel programma te zijn. De ruim tweehonderd beeldverwerkingsfuncties zijn onderverdeeld in een aantal zogenaamde pakketten. Deze onderverdeling is deels terug te vinden in de menustructuur van IP. De gebruiker kan zelf geschreven functies aan de bibliotheek toevoegen, die vervolgens zichtbaar kunnen worden gemaakt in de menustructuur van IP. De macrotaal van IP maakt het voor de gebruiker mogelijk complexe verwerkingen op te slaan en deze in de Met ingang van versie 7.8 is er tevens een versie beschikbaar voor Windows en Macintosh. 113
43
menustructuur van IP terug te laten komen. De C en C++ API zorgen ervoor dat programma's geschreven in deze talen alle beeldverwerkingsfuncties van VIPS kunnen aanroepen. Ook zijn alle functies vanaf de commandline aan te roepen, zodat bijvoorbeeld een programmeur via shellscripts beelden kan verwerken.114 De gebruiker kan op meerdere manieren eigen functies schrijven. De makkelijkste methode is het gebruik van de Magic Definitionmaker in IP. Deze functionaliteit maakt het voor de gebruiker mogelijk macro's te definiëren. Het enige dat hij hoeft te doen is het resultaat van een aantal verwerkingen te selecteren. IP bekijkt vervolgens hoe het resultaat tot stand is gekomen en zet de procedure om in zijn eigen macrotaal. IP kan de opeenvolgende verwerkingen achterhalen via een soort logbestand dat het bijhoudt. Dit bestand heeft dezelfde naam als het verwerkte bestand, maar met de extensie 'desc'. Deze nieuwe functies heten in het VIPS jargon een 'tool'. IP groepeert deze tools in zogenaamde 'toolkits'. Elke toolkit heeft in IP een eigen menu. De gebruiker kan zijn zelfgemaakte tools in een bestaand menu van IP plaatsen, of in een eigen menu. IP laadt deze vervolgens automatisch wanneer het wordt gestart.115 Op deze wijze definieert de gebruiker op basis van bestaande functies nieuwe procedures. Vanzelfsprekend kan hij ook handmatig complexe functies schrijven met deze macrotaal.116 De gebruiker kan zijn eigen beeldverwerkingsfuncties ook geheel los van IP schrijven via de programmeertalen C en C++. De zelf geschreven functie kan de gebruiker opnemen in de VIPS bibliotheek. VIPS bezit namelijk een kleine database waarin het alle beeldverwerkingsfuncties met een kleine beschrijving opslaat. Deze database is uit te breiden met nieuwe, door gebruikers geschreven functies. Deze worden ook wel plug-ins genoemd. Het voordeel van het gebruik van een database is dat een interface niet hoeft te worden herzien wanneer een gebruiker een functie schrijft. De interface haalt de informatie over de beschikbare functies uit de database en past zijn menustructuur er op aan. Een gebruiker ziet zijn eigen functie dus direct terug in de interface.117 Een functie dient echter wel aan een aantal voorwaarden te voldoen voordat deze kan worden toegevoegd aan de database.118
J. Cuppit en K. Martinez, 'Reference guide for VIPS 7.6', http://www.vips.ecs.soton.ac.uk/docs/refguide/refguide.html (Internet 1999) (03-072001) node4.html ('Introduction'). 115 J. Cuppit, R. Billinge and D. Saunders, 'IP users' guide for VIPS 7.6', http://www.vips.ecs.soton.ac.uk/docs/ipguide/ipguide.html (Internet 1999) (03-07-2001) node14.html ('2.7 Magic definition maker'). 116 Zie voor uitgebreide beschrijving van deze taal: Cupitt, 'IP users', node51.html ('5. Programming'). 117 J. Cuppit en K. Martinez, 'Application programmers' guide for VIPS 7.6', http://www.vips.ecs.soton.ac.uk/docs/appguide/appguide.html (Internet 1999) (03-072001) node28.html ('4. Function dispatch and plug-ins'). 118 Zie: Cuppit, 'Application', node29.html ('4.1 Simple plugin example'). 114
44
De interface IP is al even dynamisch qua opbouw als VIPS zelf. Naast de menu's kan de gebruiker kolommen aanmaken waarin hij objecten kan definiëren. Het lijkt daarom enigszins op een spreadsheet. Een object heeft altijd een naam en aan de hand daarvan kan naar het object worden verwezen. De inhoud van deze objecten verschilt van digitale beelden tot formules met variabelen of losse constanten. Met de muis selecteert de gebruiker objecten die hij kan manipuleren met andere formules of menuopties. Objecten die afhankelijk zijn van andere worden automatisch opnieuw berekend wanneer de inhoud van één van deze objecten verandert.119 Als de gebruiker een beeld opent, is dit dus in eerste instantie alleen zichtbaar als een variabele in een kolom. Hij maakt het beeld zichtbaar door het te openen in een zogenaamd 'imagewindow'. In dit venster definieert de gebruiker met behulp van de rechtermuisknop punten, regio's en vectoren. Deze zijn dan beschikbaar als objecten in de kolom die op dat moment actief is. Door in het imagewindow op het label van een dergelijk object te dubbelklikken met de linkermuisknop, verschijnt er een venster waarin de gebruiker de eigenschappen van de elementen handmatig kan aanpassen. In het imagewindow is ook een toolbox aanwezig waarmee simpele beeldverwerkingen kunnen worden uitgevoerd.120 De ontwerpers van VIPS hebben zich gericht op het verwerken van grote bestanden. Doordat de functies in eerste instantie de beelden niet in hun geheel verwerken, maar alleen de delen die nodig zijn voor verdere berekeningen of die de gebruiker op het beeldscherm ziet, kan het programma met weinig ruimte zeer complexe operaties uitvoeren zonder dat het veel geheugen nodig heeft. Met andere woorden: VIPS is vraaggestuurd; het berekent alleen de noodzakelijke delen van een beeld. Bovendien distribueert VIPS het werk over alle aanwezige processoren, zodat de verwerking sneller verloopt. Het gebruik van een eigen bestandsformaat draagt eveneens bij aan een optimale performance.121 De gebruiker slaat de bewerkte beelden uiteindelijk op in dit bestandsformaat, met de extensie 'v', of als tiff of jpeg bestand. Ook is VIPS in staat deze bestandsformaten te lezen. 4.3.2 Technische beschrijving In de VIPS bibliotheek is een pakket aanwezig dat zich richt op het monteren van mozaïeken. In IP zijn deze functies voor het merendeel terug te vinden onder de menuoptie Mosaic. Voor de montage van mozaïeken bestaat een viertal functies waarvan voor elk een horizontale (left-right) en een verticale (top-bottom) variant aanwezig is. Aan de basis van het monteren staat een tweetal functies, namelijk im_lrmerge en im_tbmerge. Beide accepteren vijf argumenten. Het eerste en het tweede zijn respectievelijk de bestandsnamen van het linker- en het rechterbeeld (of het bovenste en het onderste) dat de functie moet monteren. Het derde 119 120 121
Cupitt, 'IP users', node13.html ('2.6 Gamma correction'). Ibidem, node15.html ('2.8 Average of area'). Zie voor een beschrijving: Cuppit, 'Application', node7.html ('2.1 VIPS file header').
45
argument is de naam van het bestand dat na de bewerking het resultaat bevat. De laatste twee argumenten zijn twee coördinaten die de relatieve plaatsing van het rechterbeeld ten opzichte van het linkerbeeld aangeven. De functie voegt de twee beelden samen via een algoritme dat voor het blenden gebruik maakt van een cosinusfunctie. Dit betekent dat im_lrmerge van de linkerzijde naar de rechterzijde van de overlap geen lineaire overgang genereert, maar dat de waarde van de pixels die dichter bij een zijde van de overlap liggen meer bepaald worden door het beeld dat aan die zijde grenst. Figuur zes geeft deze manier van berekenen schematisch weer. Op de waarde van de pixels in het midden van de overlap hebben beide beelden evenveel invloed.122 100%
1 2
0%
Figuur 6: het overlappende deel van beide beelden is eveneens een grafiek. De zwarte lijn geeft aan in hoeverre beeld 1 de pixels in het resultaat bepaalt, de stippellijn doet hetzelfde voor beeld 2. Waar de twee lijnen elkaar kruisen worden de pixels dus 50% bepaald door beeld 1 en 50% door beeld twee. De puntstippellijnen geven de berekening op een lineaire manier weer.
Het effect hiervan is dat vervormingen aan de randen van beide beelden minder invloed hebben op het resultaat. Het is aannemelijk dat Panavue ImageAssembler dit op een lineaire manier berekent (dat is niet zeker, omdat de programmacode van ImageAssembler niet beschikbaar is en hierover verder niets terug te vinden is in de documentatie). In dat geval zijn beide cosinuskrommen rechte lijnen en hebben de randen van de beelden meer invloed op het resultaat. Het nadeel van de cosinusberekening is dat wanneer er bijvoorbeeld een groot verschil bestaat in lichtheid tussen beide beelden, deze in VIPS over een kleiner deel van de overlap wordt verspreid dan in ImageAssembler. Dit kan leiden tot een zichtbare overgang in de lichtheid. ImageAssembler verspreidt dit verschil lineair over de hele overlap. Pixels die zwart zijn, dus een waarde nul hebben, beschouwt de functie als transparant. Het is daardoor mogelijk beelden te monteren die niet rechthoekig zijn, zoals monitorbeelden.123 In IP zijn deze twee functies terug te vinden onder 'Mosaic->Left_Right_Merge' en 'Mosaic->Top_Bottom_Merge'. Het andere drie paar functies roept uiteindelijk òf im_lrmerge òf im_tbmerge aan. Im_lrmosaic en im_tbmosaic zijn, naast de twee mergefuncties, functies die de beelden ook monteren zonder te schalen of te roteren. Vòòr de montage van 'im_lrmerge', VIPS manual pages. The National Gallery en Birkbeck College (1991, Manpages van VIPS). 123 'im_lrmerge', The National Gallery. 122
46
de beelden voeren de mozaïekfuncties twee andere procedures uit die de functie verfijnen ten opzichte van de mergefuncties. Zij preciseren namelijk de overlap en optioneel het balanceren van de lichtheid van beide beelden. De mozaïekfuncties accepteren elf argumenten. De eerste drie zijn pointers naar respectievelijk de twee beelden die gemonteerd moeten worden en het resultaat. Aangezien beelden uit meerdere banden kunnen bestaan, dit is bijvoorbeeld het geval bij kleurenbeelden, geeft het vierde argument de band aan die de functie als uitgangspunt neemt bij de montage. De functie richt zich dus maar op één band.124 De volgende vier argumenten vormen de x- en y-coördinaten van twee overeenkomstige punten in het overlappende deel van beide beelden, de eerste op het rechter of bovenste beeld en de tweede op het linker of onderste. De punten worden uitsluitend gebruikt voor de berekening van de overlap. Op basis van deze punten probeert de functie de beste overlap te vinden. De eerste stap bestaat uit het opdelen van de overlap van het eerste beeld in drie delen (links, midden en rechts voor een verticale montage en boven, midden en onder voor een horizontale) en vervolgens het zoeken in elk deel naar twintig overeenkomstige punten met herkenbare objecten. Vervolgens zoeken zij de overeenkomstige punten in het tweede beeld. De functies proberen via de zestig punten een rechte lijn te definiëren waarover de beelden kunnen worden gemonteerd. Punten die te ver van de lijn afliggen negeert de functie. Vervolgens herdefinieert zij de lijn op basis van de overgebleven punten. Deze stap wordt herhaald totdat alle overgebleven punten op de lijn liggen of er te weinig punten overblijven. In dat laatste geval stopt de functie met een foutmelding. Zij stopt ook wanneer blijkt dat de beelden voor een juiste montage ten opzichte van elkaar moeten worden geroteerd.125 Het negende en tiende argument bepalen de omstandigheden waaronder de im_lrmosaic naar overeenkomstige punten zoekt. De eerste van de twee bepaalt de omvang van het gebied waarbinnen de functie kijkt of er zich een herkenbaar object bevindt in het eerste beeld. Dit doet zij door te berekenen hoe groot het contrast in dit gebied is. Hiervoor doorloopt im_lrmosaic het hele gebied pixel voor pixel en berekent het verschil met de rechter en onderliggende pixel. Alle verschillen telt zij op. De zestig gebieden met het grootste verschil beschouwt zij als de zestig meest herkenbare objecten. Deze punten in het eerste beeld gebruikt de functie om te zoeken naar de overeenkomstige punten in het tweede beeld. De handleiding raadt een gebied van elf bij elf pixels aan. Het tiende argument bepaalt hoe groot het gebied is in het tweede beeld waarbinnen met behulp van het gebied uit het eerste beeld wordt gezocht naar het overeenkomstige punt. Figuur zeven laat dit zien. Hiervoor adviseert de
'im_lrmosaic', VIPS manual pages. The National Gallery en Birkbeck College (1991, Manpages van VIPS). 125 'im_lrmosaic', The National Gallery. 124
47
handleiding een gebied van 29 bij 29 pixels.126 Het eerste gebied wordt over het tweede deel bewogen. Op elke plaats berekent im_lrmosaic de correlatiecoëfficiënt die aangeeft in hoeverre de beelden overeenkomen. Kort gezegd worden alle pixels in het eerste gebied vermenigvuldigd met de corresponderende pixel in het tweede gebied en de uitkomsten bij elkaar opgeteld. Op de plaats met de grootste coëfficiënt is de gelijkenis het grootst.
c
1
2 b a
corr x , y=
i j b1 i , j −gemb1 ∗ b 2 i , j −gemb 2
b i , j −gemb
2
i
j
1
1
∗
b i , j −gemb
2
i
j
2
2
Figuur 7: punt a en b zijn door de gebruiker gedefinieerd als overeenkomstig. Vervolgens zoekt im_lrmosaic naar in totaal nog zestig overeenkomstige punten. Eerst zoekt zij zestig herkenbare punten in beeld één. C is één van deze punten. De functie neemt een gebied van elf bij elf pixels rondom dit punt en zoekt in een gebied van 29 bij 29 pixels in het tweede beeld naar het beste equivalent. Eronder staat de vergelijking die im_lrmosaic gebruikt voor de berekening van de correlatiecoëfficiënt. B1 is bijvoorbeeld het gebied rondom punt c. B2 is dan het even grote gebied in beeld twee dat zich over het grotere gebied beweegt (puntstippellijn). Van elke pixel wordt eerst het gemiddelde van alle pixels in het hele beeld afgetrokken om te voorkomen dat de lichtheid van het beeld de correlatieberekening beïnvloedt.
Het laatste argument bepaalt hoe im_lrmosaic de beelden balanceert. In deze procedure berekent de functie gemiddelden van de overlap in beide beelden. Vervolgens past zij de waarden van de pixels aan. Hiermee wordt het verschil in lichtheid geneutraliseerd en wordt een soepelere overgang verkregen bij de montage. Er zijn vier waarden mogelijk. Nul betekent dat de functie niet balanceert. Bij een waarde van één past zij het rechterbeeld aan en laat het linker onaangeroerd. Twee doet het omgekeerde. Drie betekent dat de functie beide beelden aanpast. Het balanceren is vooral bedoeld voor foto- en videobeelden, omdat de belichting van deze beelden nogal kan verschillen.127 Beide functies zijn in IP terug te vinden onder de menuopties 'Mosaic>Left_Right_Mosaic' en 'Mosaic->Top_Bottom_Mosaic'. Deze enigszins aangepaste versies verwachten als argumenten twee punten. Voor de overige waarden vullen zij zelf standaardwaarden in. Dat betekent dat altijd band één wordt gebruikt. Voor het negende en tiende argument nemen de functies de geadviseerde waarden over en wordt er niet gebalanceerd (het laatste argument is dus altijd nul). Als de gebruiker wel wil balanceren dan kan hij de menu-items 'Mosaic->Balance_leftright' en 'Mosaic->Balance_topbottom' gebruiken. Zij roepen 126 127
48
Ibidem. Zie: ibidem.
dezelfde mozaïekfuncties aan, maar de gebruiker geeft via een submenu aan hoe de functie balanceert. De functies im_lrmerge1, im_tbmerge1, im_lrmosaic1 en im_tbmosaic1 accepteren dezelfde argumenten als hun normale equivalenten met het verschil dat zij twee paar overeenkomstige punten verwachten, in totaal dus vier coördinaten. Aan de hand van deze punten bekijkt de functie of de beelden geschaald dan wel geroteerd moeten worden om tot een juiste montage te komen. Vervolgens doorlopen de functies dezelfde stappen als hun eenvoudige varianten. Een andere belangrijke functie is im_global_balance. Deze verwacht drie argumenten. Het eerste argument is een bestandsnaam van een beeld dat de gebruiker handmatig via de im_merge() of im_mosaic() functies heeft gemonteerd. Het tweede argument is de naam van het resultaat en het derde is de gammafactor van het systeem waarmee de beelden zijn gemaakt. Het doel van de functie is het optimaliseren van de globale balans. De eerste stap daartoe is het vergaren van informatie over de ligging van de individuele beelden in de totale montage. Hiervoor doorloopt im_global_balance de desc-bestanden van de gemonteerde beelden. Het is dus van belang dat deze bestanden in originele staat verkeren. De functie faalt wanneer deze zijn gecorrumpeerd of verwijderd. De informatie over de ligging wordt in een boomstructuur opgeslagen. De tweede stap is het berekenen van de gemiddelde lichtheid en het normaliseren van alle beelden in het mozaïek. Vervolgens monteert de im_global_balance het hele mozaïek opnieuw. Im_global_balance is bedoeld voor montages van reflectogrammen waarbij de belichtingstijd van de individuele beelden verschilt, zoals bij video of fotografische beelden. De functie negeert overlappen van minder dan twintig pixels bij de berekening van de gemiddelde lichtheid. Im_global_balance kan montages van maximaal zeven bij zeven beelden aan. Wanneer de montage groter is, moet in blokken worden gewerkt. Het algoritme voor het balanceren van de beelden is in deze functie beter dan de die in de im_mosaic() functies.128 In IP is deze functie terug te vinden onder 'mosaic>Global_balance'. De hierboven beschreven functies zijn de belangrijkste functies voor het monteren van mozaïeken. Daarnaast bestaan er echter nog een aantal functies die de mozaïekfuncties aanroepen, maar eveneens individueel kunnen worden gebruikt. Voorbeelden daarvan zijn im_correl, im_match_lineair en im_similarity. Deze functies zal ik hier niet behandelen, omdat de gebruiker van IP er niet direct mee te maken krijgt.129 'im_global_balance', VIPS manual pages. The National Gallery en Birkbeck College (1991, Manpages van VIPS) en J. Cuppit en K. Martinez, 'Reference guide for VIPS 7.6', http://www.vips.ecs.soton.ac.uk/docs/refguide/refguide.html (Internet 1999) (03-072001) node17.html ('Mosaicing'). 129 Zie voor een beschrijving van deze functies: ‘im_correl’, VIPS manual pages. The National Gallery en Birkbeck College (1991, Manpages van VIPS), ‘im_match_lineair’, VIPS manual pages. The National Gallery en Birkbeck College (1991, Manpages van VIPS) en 128
49
4.3.3 Procedure IP heeft de mogelijkheid om met behulp van een videograbberkaart videobeelden direct te verwerken. De gebruiker configureert zijn kaart in IP via 'File>Preferences->Video'. Hier kan hij onder andere aangeven welke kaart IP moet gebruiken. Wanneer de gebruiker zijn kaart juist heeft geconfigureerd, kan hij via 'File->New->Video' een nieuw video-object aanmaken in de actieve kolom. Door vervolgens op het objectlabel te dubbelklikken opent de gebruiker een venster waarin het videosignaal zichtbaar is. CTRL-C vernieuwt het videobeeld. Op snelle computers kan IP de beelden automatisch verversen. In de preferencesdialoog moet 'Frames per second' in dat geval groter dan nul zijn. IP kan meerdere videoobjecten openen. Deze objecten vernieuwen het beeld onafhankelijk van elkaar, ook al hebben ze dezelfde bron. In het ene object kan de gebruiker dus het opgenomen beeld laten staan, terwijl hij via het andere object een nieuw beeld opneemt. Dit kan handig zijn bij het bepalen van de overlap.130 IP biedt de gebruiker de mogelijkheid randen rondom opgehaalde beelden direct te verwijderen. Op deze wijze kan de gebruiker snel de delen met de grootste geometrische verstoringen verwijderen. Hoe groot het resultaat moet zijn, geeft de gebruiker bij 'Crop video' in de preferencesdialoog aan.131 Het beeld dat het video-object weergeeft, slaat hij op via 'File->Save object...' of door met de rechtermuisknop op het label van het video-object te klikken en vervolgens 'Save object' te selecteren.132 Voor het gebruik van videograbberkaarten is een 2.4 of hogere linuxkernel vereist.133 De andere manier voor het ophalen van videobeelden verloopt via het menu Linux_video. Hieronder zijn vier opties terug te vinden. 'Aquire colour image...', 'Aquire mono image...' en 'Raw grab...' openen een nieuwe kolom waarin de gebruiker een aantal waarden kan invullen. De waarde achter 'Channel' bepaalt welk kanaal IP gebruikt voor het ophalen van het beeld. Voor de verschillende menuopties kan de gebruiker verschillende waarden instellen zoals de kleur, het contrast en de lichtheid. 'Frames to average' bepaalt het aantal frames dat IP middelt voor het uiteindelijke beeld. Een lage waarde laat willekeurige verstoringen, veroorzaakt door het elektrische circuit in de camera, ongemoeid; hoge waarden kunnen een lichte vervaging van het beeld veroorzaken.134 De vierde menuoptie, 'Aquire mono image, with geometric correction...' stelt de gebruiker in staat geometrische verstoringen te corrigeren. De procedure die ‘im_similarity’, VIPS manual pages. The National Gallery en Birkbeck College (1991, Manpages van VIPS) 130 Cupitt, 'IP users', node27.html ('3.2.1.2 Video set-up'). 131 Ibidem, node28.html ('3.2.1.3 Setting the crop'). 132 Ibidem, node32.html ('3.2.2.3 Image capture'). 133 J. Padfield, ‘VIPS/ip beginners’ guide. From beginning to end: a beginners' guide to using VIPS/ip 7.6.5 running on SuSE 7.1’, http://www.vips.ecs.soton.ac.uk/docs/appguide/ipdummies.html (Internet 2001) (03-072001) two.htm#_chap2.4.4.2 (‘2.4.4 Additional notes on the installation of Linux:’). 134 Padfield, ‘VIPS/ip’, nine.htm#_chap9.1 (‘9.1 Basic [ip-7.6.5][Linux_video: ...’).
50
hij vervolgens doorloopt, is enigszins gecompliceerd. De eerste stap is het maken van een correctiematrix. Hiervoor is de Rubbersheetplugin vereist. Deze kan van de VIPS homepage worden opgehaald. De menuoptie 'Build->Generate grid... ' genereert een witte grid op een zwarte achtergrond. 'Arithmatic->Invert' wisselt de kleuren om. Vervolgens slaat de gebruiker de grid op en draait deze uit op een printer. Een stuk stevig karton waarop de uitdraai wordt geplakt, zorgt ervoor dat de grid recht blijft. De gebruiker verwerkt vervolgens de grid met de opstelling, waarmee hij de schilderijen reflectografeert. De grid moet het volledige beeld vullen, er mogen geen randen zichtbaar zijn. Het resultaat slaat de gebruiker op. Het origineel en het resultaat moeten vervolgens op elkaar afgestemd worden door te snijden en te schalen. Het voert te ver deze stappen hier helemaal te beschrijven. Bovendien is de procedure al goed gedocumenteerd door de National Gallery zelf.135 De menuoptie 'Rubber->Estimate transformation parameters...' genereert een kolom waarmee de transformatieparameters kunnen worden berekend. Nadat de gebruiker heeft aangegeven wat het origineel en het resultaat is, probeert IP het resultaat te transformeren totdat het weer op het origineel lijkt. De gebruiker kan door een aantal waarden aan te passen het proces beïnvloeden. Hij heeft bijvoorbeeld invloed op de maximale foutmarge van de transformatie, het aantal keren dat IP probeert de maximale foutmarge te halen en het type interpolatie.136 IP probeert vervolgens binnen het opgegeven aantal keer de kleinste foutmarge te bereiken. Uiteindelijk retourneert de procedure de parameters voor de transformatie. Deze parameters slaat de gebruiker op als een transformatiematrix die hij gebruikt voor de correctie van de geometrische verstoring in het beeld.137 Wanneer de gebruiker 'Aquire mono image, with geometric distortion...' selecteert, verschijnen er vier kolommen waarvan er één 'geometric correction' heet. In deze kolom is één matrixobject aanwezig. De gebruiker kan dit object vervangen door zijn eigen correctiematrix en vervolgens de 'workspace' opslaan, zodat hij de volgende keer de juiste instellingen direct kan laden door de opgeslagen workspace te openen. Overigens kan de gebruiker op elk ogenblik de workspace opslaan. IP bewaart dan alle kolommen en objecten die op dat moment aanwezig zijn. Wanneer de gebruiker de workspace opent, krijgt hij zijn werkomgeving weer terug.138 In de kolom 'Apply estimated transform parameters' corrigeert IP het opgehaalde beeld aan de hand van de matrix. De gebruiker kan ook hier enkele opties en waarden aanpassen. In de laatste kolom genaamd 'final crop' kan de gebruiker bepalen welk deel van het beeld uiteindelijk moet worden opgeslagen. Door met de rechtermuisknop op het label van het uiteindelijke imageobject te klikken en vervolgens 'Save object' te selecteren kan de gebruiker Zie: ibidem, eight.htm#_chap8.3 (‘8.3 Scaling and cropping your images:’). Zie voor uitgebreide beschrijving: ibidem, eight.htm#_chap8.4 (‘8.4 Calculating the required transformation parameters:’). 137 Ibidem. 138 Zie: ibidem, nine.htm#_chap9.2 (‘9.2 Complex [ip-7.6.5][Linux_video: ...’). 135 136
51
het resultaat opslaan. Hierbij is het van belang een gestructureerd systeem van bestandsnamen aan te houden. Dit vergemakkelijkt later de montage van het mozaïek en kan veel problemen voorkomen. Een goed voorbeeld is bijvoorbeeld
.nxm.v waarbij nxm de coördinaat aangeeft van het beeld in het mozaïek. Bovendien raadt de handleiding aan altijd een rechthoekig mozaïek te verwerken, omdat dit het montageproces eveneens vergemakkelijkt.139 Bij het verwerken van het schilderij is de gebruiker er via zijn werkwijze verantwoordelijk voor dat IP de montage zo goed mogelijk uitvoert. In de eerste plaats kan hij het aantal fouten bij de montage verkleinen door zo klein mogelijke rijen of kolommen te verwerken. Dit betekent dat wanneer het schilderij een liggende rechthoek is, de camera kolomsgewijs over het schilderij moet bewegen en wanneer het een staande rechthoek betreft in rijen moet werken. Ten tweede moet overlap tussen de beelden minimaal twintig pixels breed zijn. De handleiding raadt echter een minimum van zestig pixels aan. Ten derde is het voor de overzichtelijkheid belangrijk een duidelijke grid aan te houden voor het maken van reflectogrammen. Dit houdt in, dat er zich in elke rij (en dus ook kolom) evenveel beelden bevinden. In de laatste plaats kan de gebruiker IP helpen door in de overlap van twee beelden altijd een duidelijk overeenkomstig punt mee te nemen, ook al moet de overlap hiervoor vergroot worden.140 Voor de correctie van onevenwichtige belichting dient de gebruiker een grijs vel papier met zijn opstelling te reflectograferen. Aan de hand van het resultaat corrigeert IP later alle reflectogrammen. Wanneer het verwerken van een schilderij meerder uren duurt, zal de gebruiker zelfs meerdere grijskaarten moeten maken, omdat de opwarming van de vidiconopstelling de belichting meer beïnvloedt.141 Het corrigeren zelf gebeurt via de commandline, zodat het eventueel in een batch kan worden gedaan. De functie 'light_correct' verwacht als eerste argument de correctiekaart. Alle daarop volgende argumenten moeten de te corrigeren beelden zijn, waarbij wildcards geoorloofd zijn. Het commando 'vips7.6 light_correct grey.v data1*.v' zal alle beelden die beginnen met 'data1' corrigeren met behulp van grijskaart 'grey.v'.142 Als de gebruiker alle beelden van het mozaïek heeft verzameld en gecorrigeerd, kan hij beginnen met monteren. Dit proces kent twee fasen, namelijk het semi-automatisch monteren van de beelden en het volledig automatisch corrigeren van contrast en lichtheid. De eerste fase start met het opzetten van een workspace waarin de gebruiker de montage begint. Zoals eerder vermeld, kan de gebruiker de workspace op elk ogenblik opslaan, zodat de montage later kan worden hervat. Via 'File->Load->Image...' kan de gebruiker zijn reflectogrammen openen met het 'Load image' venster. In dit venster zijn een aantal opties terug te vinden die de werkzaamheden vergemakkelijken. Door 'Pin 139 140 141 142
52
Ibidem, nine.htm_chap9.3 (‘9.3 Naming captured images’). Cupitt, 'IP users', node33.html (‘3.2.2.4 Capture tips’). Ibidem, node31.html (‘3.2.2.2 Grey card correction’). Ibidem, node34.html (‘3.2.3 Correcting the data’).
me up' aan te zetten, kunnen meerdere beelden in één keer worden geopend. De 'Files of type' geeft aan welke bestanden IP weergeeft. Dit kunnen jpeg, tiff, vips of alle bestanden zijn. Via de knop 'Memorise directory' kan de gebruiker de betreffende directory onthouden, zodat hij later via 'Jump to' direct naar deze directory kan gaan. IP plaatst de geopende bestanden in de actieve kolom in de workspace. Wanneer IP net is gestart, is dat altijd kolom A. Door dubbel te klikken op het label rechts naast de naam van het beeld opent IP een imagewindow waarin het beeld zichtbaar is. In dit venster kan de gebruiker onder andere het beeld bewerken met een klein aantal gereedschappen. Via 'View->Magnification' stelt hij de schaal waarop IP het beeld weergeeft in. In dit venster kan de gebruiker punten, lijnen en regio's definiëren door met de rechtermuisknop op het beeld te klikken. Punten verschijnen na één klik; voor lijnen en regio's dient de gebruiker de muis te slepen terwijl hij de rechtermuisknop ingedrukt houdt. Ook deze objecten krijgen een label en verschijnen in de actieve kolom in de workspace. Wanneer de gebruiker een gestructureerde naamgeving heeft aangehouden, kan hij aan de hand van de naam direct zien hoe welke beelden gemonteerd moeten worden. Het is in IP alleen mogelijk beelden per paar te monteren. Daartoe opent de gebruiker de twee beelden in een imagewindow en zet deze zodanig op het scherm dat het overlappende deel van beide beelden goed zichtbaar is. Vervolgens plaatst hij op beide beelden een punt op een herkenbare, gelijke plaats in het overlappende deel. Deze punten hoeven niet heel precies te zijn, omdat VIPS zelf in een vierkant van tien bij tien pixels op zoek gaat naar de beste locatie. Hiervoor wordt het correlatiealgoritme gebruikt dat in de vorige paragraaf is beschreven. Eventueel kunnen de punten met de muis naar een andere locatie worden gesleept. De imagewindows kunnen na het plaatsen worden afgesloten; de punten blijven dan zichtbaar in de workspace. Aan de hand van de twee punten kan IP de beelden monteren. Eerst moet de gebruiker de twee punten selecteren door de SHIFT-toets ingedrukt te houden en vervolgens met de muis op de labels van de punten te klikken. De geselecteerde labels krijgen een groene kleur. Door de menuoptie 'Mosaic->Left_right_mosaic' of 'Mosaic->Top_bottom_mosaic' aan te klikken, monteert de gebruiker de beelden. Het resultaat wordt onder aan de actieve kolom bijgeplaatst en kan gelijk in een imagewindow worden geopend. De mergevariant is, zoals eerder vermeld, een versimpelde versie van de mosaicfunctie. Deze twee functies zijn handig wanneer de overlap tussen de twee beelden te smal is voor de mosaicfuncties, omdat de intensieve berekeningen voor de juiste plaatsbepaling van de beelden ten opzichte van elkaar achterwege wordt gelaten.143 Mocht het voorkomen dat de beelden een verschillende schaal hebben, of niet allemaal recht zijn, dan kunnen de functies mosaic1 en merge1 worden gebruikt. In dat geval dient de gebruiker twee paar overeenkomstige punten aan
143
Ibidem, node35.html (‘3.3 Assembling the mosaic’).
53
te geven. Vervolgens selecteert hij deze allemaal en start de functie. Deze functies zijn in de eerste plaats bedoeld voor röntgenopnamen.144 Een handige functionaliteit van VIPS is dat wanneer eigenschappen van een object worden veranderd, het programma alle objecten die afhankelijk zijn van het betreffende object direct opnieuw berekent. Wanneer de gebruiker de twee originele beelden en het resultaat opent en vervolgens één van de punten verplaatst, dan berekent IP het resultaat opnieuw. Dit is direct zichtbaar in het imagewindow waarin VIPS het resultaat weergeeft. Wanneer de gebruiker niet tevreden is met de montage, kan hij punten verplaatsen terwijl het resultaat direct zichtbaar is. VIPS past bij de montage van beelden geen interpolatie toe. Als gevolg hiervan zal elke montage van twee beelden een foutmarge bevatten van 0.5 pixels. Met vervormingen in het beeld kan dit oplopen tot één of twee pixels. Verkleining van de foutmarge wordt bereikt door in eerste instantie kleine blokken te monteren en deze vervolgens weer te monteren tot een geheel beeld. De fouten verspreiden zich dan over het hele beeld en zijn daardoor minder zichtbaar. Het monteren van kleine blokken heeft bovendien het voordeel dat de kans dat de computer vastloopt, bijvoorbeeld omdat het geheugen vol is, kleiner wordt. Sommige Linuxversies beperken het aantal bestanden dat één programma open kan hebben tot 256. De handleiding raadt aan mozaïeken van maximaal tien bij tien beelden in één keer te monteren. Als het mozaïek groter is, dan is het beter de montage in twee of meer delen uit te voeren, waarna de resultaten in een nieuw project worden gemonteerd.145 Doorgaans is de tweede en ook de laatste stap in het montageproces het balanceren van de montage. Via de menuoptie 'Mosaic->Global_balance' zijn er drie manieren om een montage te balanceren. De opties 'Float' en 'Plain' zijn respectievelijk voor montages van beelden van het type float en integer. In de vorige paragraaf is de functie uitvoerig beschreven. De gebruiker hoeft alleen het bestand aan te geven dat VIPS moet balanceren. In dezelfde directory moet wel het betreffende desc-bestand aanwezig zijn. Voor grote montages kan de bewerking veel tijd in beslag nemen.146 Evenals bij de montage zelf kan IP bij het balanceren van grote mozaïeken te veel geheugen gebruiken met als gevolg dat de computer kan vastlopen. De oplossing hiervoor is het monteren van kleinere blokken die daarna worden gebalanceerd en pas daarna verder gemonteerd en gebalanceerd worden. Een ander probleem dat zich kan voordoen, is dat delen van de gebalanceerde montage te licht of te donker zijn geworden. Als dit het geval is biedt de derde menuoptie Search uitkomst. Deze gaat alvorens te balanceren een minimale en maximale waarde zoeken in de originele montage. De uiteindelijke balans zal dan Padfield, ‘VIPS/ip’, ten.htm#_chap10.3 (‘10 Mosaicing images with VIPS/ip:’). Cupitt, 'IP users', node36.html (‘3.3.1 Assembly hints and tips’) en Padfield, ‘VIPS/ip’, seven.htm (‘7 The VIPS/ip Software:’). 146 Cupitt, 'IP users', node36.html (‘3.3.1 Assembly hints and tips’). 144 145
54
geen pixels bevatten die onder het minimum of boven het maximum liggen. Deze werkwijze neemt echter wel meer tijd in beslag dan het balanceren zonder zoeken. Een derde belangrijk punt is de correctie van onevenwichtige belichting. Wanneer deze niet is uitgevoerd en de belichting heeft er tijdens de opnamen voor gezorgd dat bijvoorbeeld het rechter deel van het beeld donkerder is dan het linker, dan zal deze afwijking tijdens het balanceren over het hele beeld worden uitgesmeerd. Het is noodzakelijk een eventuele onevenwichtige belichting nauwkeurig te corrigeren.147 Als er geen grijskaarten zijn gemaakt tijdens het reflectograferen, dan heeft de gebruiker alsnog een mogelijkheid de onevenwichtige belichting te corrigeren. Hiervoor zijn de menuopties 'Mosaic->Brighten LR lineary...' en 'Mosaic->Brighten TB lineary...' beschikbaar. Deze twee opties maken in de workspace een nieuwe kolom aan waarin de gebruiker achter het derde label de naam van het te corrigeren bestand invult. Door vervolgens op ENTER te drukken, verschijnt onder aan de kolom het resultaat. Dit kan de gebruiker in een imagewindow openen. Door vervolgens de schuif achter label vijf te verplaatsen, kan de gebruiker direct zien welke invloed dit heeft op het resultaat.148 De functie maakt de individuele pixels in het beeld in horizontale of verticale richting lineair lichter of donkerder. Met behulp van deze functie kan hij ook een grijswaardenkaart maken voor het betreffende beeld. Deze is te vinden achter label negen. Als de gebruiker dit object opslaat heeft hij een grijswaardenkaart die hij kan gebruiken voor de correctie van andere beelden die met dezelfde vidiconopstelling zijn gemaakt. Op deze manier kan dus achteraf ook een grijskaart worden gemaakt. De beperking is dat deze grijskaart alleen een horizontale of verticale lineaire correctie kan uitvoeren en dus alleen onevenwichtige belichting in horizontale of verticale richting corrigeert. Daarnaast bestaat er nog de menuoptie 'Mosaic->Brighten LR cos...'. Via een iets uitgebreidere kolom kan de gebruiker zijn beelden niet lineair, maar cosineair corrigeren. 4.3.4 Resulaten De automatische montage van mozaïeken zoals deze bij Panavue ImageAssembler terug is te vinden, is niet aanwezig in VIPS/IP. De gebruiker moet dus voor elk paar beelden een overeenkomstig punt aangeven. Op het eerste gezicht lijkt dit tijdrovend, maar bij ImageAssembler bleek uiteindelijk dat de computer veel meer tijd voor de montage kwijt was, wanneer hij zelf de juiste overlap moest zoeken. De handmatige montage verliep meestal sneller dan de automatische. Daarbij moet worden opgemerkt dat de interface van ImageAssembler intuïtiever werkt dan die van IP. Met één druk op de knop kon de gebruiker daar zijn vensters zo ordenen, dat de punten vrij gemakkelijk met de muis konden worden aangewezen. De imagewindows in IP zijn losse vensters die zich niet zo gemakkelijk laten ordenen. De gebruiker moet deze zelf naar de juiste plaats 147 148
Ibidem, node38.html (‘4.1 Balancing troubleshooting’). Ibidem, node21.html (‘2.11 Dialog boxes’).
55
slepen met de muis. Met behulp van de programmeerbare windowmanager fvwm2 valt daar (onder Linux) evenwel een mouw aan te passen. Het is dan mogelijk met één klik op de knop een venster in een bepaalde hoek van het beeld te plaatsen. Voor het ordenen van de vensters zijn dan echter nog steeds vier klikken nodig. Net als bij ImageAssembler blijft er bij de montage van de ruwe scans, dat wil zeggen de beelden met zwarte rand, een naad zichtbaar op sommige plaatsen. Bij horizontale montages is dit het geval aan de boven- en onderzijde van het overlappende deel. Bij verticale montages zijn deze aan de rechter- en linkerzijde van het overlappende deel zichtbaar. Dit is het gevolg van het feit dat IP blending alleen in horizontale richting toepast wanneer het twee beelden in horizontale richting monteert, en alleen in verticale richting in het geval van een verticale montage. Wanneer beelden niet recht tegenover elkaar liggen, zal er bij beide beelden een deel zijn waar geen blending kan worden toegepast, omdat er geen deel van het andere beeld beschikbaar is, waarover de blending kan worden berekend. Zoals figuur acht laat zien, blijft op die plaatsen het originele beeld zichtbaar en veroorzaakt een zichtbare rand. Dit zou ook de oorzaak kunnen zijn van de randen die zichtbaar zijn in een montage met ImageAssembler. Helaas is dit niet met zekerheid te constateren, omdat de broncode voor dit programma niet beschikbaar is. Ook op andere plaatsen is de rand soms lichtelijk zichtbaar. Twee oorzaken liggen ten grondslag aan het ontstaan van deze naad. In de eerste plaats is het verschil van de lichtheid van de twee beelden in het overlappende deel te groot. Ten tweede kan geometrische vervorming er voor zorgen dat de beelden aan de randen niet precies overlappen. Dit kan er ook toe leiden dat sommige elementen van het beeld in het resultaat dubbel zichtbaar zijn. Ook hier blijkt dus weer, hoe belangrijk het is om onevenwichtige belichting en geometrisch verstoringen te corrigeren. a
b
Figuur 8: over b berekent IP de blending. In de gestippelde ovalen is geen blending mogelijk, want er is maar één beeld beschikbaar. Op de plaatsen aangewezen door a laat de montage laat vaak een naad zien.
Voor het compenseren voor de onevenwichtige belichting zijn, zoals in de vorige paragraaf beschreven, een tweetal functies (Mosaic->'Brighten LR lineary...' en Mosaic->'Brighten TB lineary...') aanwezig in IP. Aangezien het meestal het geval is dat de belichting boven of rechts in het beeld anders is dan onderin of links, kunnen deze functies worden gebruikt om achteraf een grijskaart te maken. Wanneer de onevenwichtige belichting in alle beelden hetzelfde is kan 56
deze grijskaart gebruikt worden om de beelden te corrigeren. Dit leidt uiteindelijk tot een betere montage, omdat het blendingalgoritme dan minder hoeft te corrigeren. In het resultaat is de overgang scherper en constanter qua belichting. Deze stap is essentieel voor een mooi, egaal resultaat. Wanneer de belichting echter na deze stap nog steeds onevenwichtig blijft, kunnen de overlappende delen in de montage vaag blijven. Het is dus, nogmaals, wel degelijk belangrijk dat er een grijswaardenkaart wordt gemaakt. Na het verwijderen van een deel van de rand, vallen de randen die lichtelijk zichtbaar waren, weg. De rand die wordt veroorzaakt door een scheve uitlijning van de twee beelden, blijft natuurlijk nog wel zichtbaar. Deze kan worden geminimaliseerd door de beelden te monteren in de richting waarin de camera zich over het doek heeft bewogen. Dit betekent niet dat de beelden in hun geheel moeten worden gemonteerd in die volgorde, maar dat bij de montage in blokken in eerste instantie in de camerarichting wordt gemonteerd en vervolgens op andere wijze. De reden hiervoor is dat wanneer de camera slangsgewijs over het doek beweegt - dat wil zeggen linksboven beginnen naar beneden, één beeld naar rechts, naar boven, enzovoort - de overlap tussen twee horizontaal grenzende beelden schever zal zijn dan de overlap tussen twee verticaal grenzende beelden. In dit geval is het beter eerst de verticale montage uit te voeren en vervolgens de horizontale. Bij de horizontale montage wordt de scheve overlap over een groter oppervlak verspreid, zodat de montage beter is. Figuur negen illustreert dit. 1 a
6
b
2 5
c 3
4
d
e Figuur 9: pijl a geeft de manier aan waarop is gereflectografeerd. Wanneer de gebruiker de beelden eerst in horizontale richting en vervolgens in verticale richting zou monteren, zou er een kans zijn dat op de plaatsen b, c, d en e een rand zichtbaar is. Wanneer de gebruiker eerst in verticale richting en dan in horizontale richting monteert, blijft deze kans beperkt tot plaats b.
De global_balance functie verbetert het resultaat in alle gevallen. Het geeft een egaler beeld. Het verschil tussen de gewone functie en de uitgebreide zoekfunctie is meestal niet waar te nemen met het blote oog. Wanneer de resultaten van beide functies van elkaar worden afgetrokken, blijkt echter wel dat bij beelden gemonteerd via de gewone functie grijswaarden buiten het gebied tussen de laagste en hoogste grijswaarde voorkomen. Wel moet gezegd worden 57
dat de im_global_balance het resultaat negatief kan beïnvloeden als de belichting erg onevenwichtig is. Wanneer de individuele beelden consequent lichter zijn aan de bovenzijde, dan is de kans groot dat het resultaat na het globaal balanceren bovenin heel licht is en onderin heel donker. Met behulp van de zoekfunctie wordt dit verschil verminderd, maar het verschil in lichtheid blijft zichtbaar. Ook nu geldt weer: het is noodzakelijk dit soort onevenwichtige belichting zo goed mogelijk te corrigeren. 4.4 Een vergelijking van beide pakketten In tabel één heb ik de plus- en minpunten van de programma's tegenover elkaar gezet.
Maximale grootte van projecten Batchprocessing Beelden roteren In één keer handmatig monteren Automatisch monteren Gebruikersinterface Handmatige montage Compensatie onevenwichtige belichting Mogelijkheid ongelijke beelden te monteren Broncode beschikbaar Directe video-ingang Automatisch balanceren
IA 2.07 500MB + ++ +++ + 0 0 0 0 0
VIPS 7.8.6 >1GB ++ ++ 0 0 +++ ++ + ++ ++ +
Tabel 1: plus- en minpunten van ImageAssembler en VIPS.
Bij een vergelijking van beide programma's kan in de eerste plaats worden opgemerkt dat ImageAssembler een duale functionaliteit bezit, namelijk het monteren van panorama's en het monteren van mozaïeken. VIPS is daarentegen een programma dat specifiek gemaakt is voor de montage van mozaïeken van infraroodreflectogrammen. Dat betekent dat veel functionaliteit al is geïmplementeerd. Denk hierbij aan de mogelijkheid om geometrische afwijkingen en onevenwichtige belichting te corrigeren. Dat is vanzelfsprekend een groot voordeel. In de tweede plaats is de broncode van VIPS beschikbaar. Dit maakt het ontwikkelen van software die de methode kan verbeteren makkelijker. Het grootste voordeel van ImageAssembler is dat het de mogelijkheid bezit mozaïeken automatisch te monteren. Aangezien dit geen bevredigende resultaten gaf met het beschikbare materiaal, valt dit voordeel weg. Het lijkt mij daarom dat voor het verbeteren van de methode voor de montage van mozaïeken het gebruik van VIPS de beste mogelijkheden biedt.
58
5 Vernieuwingen voor de methode voor infraroodreflectografie 5.1 Inleiding Het verbeteren van de methode die de afdeling kunstgeschiedenis gebruikt voor de montage van infraroodreflectogrammen valt uiteen in twee delen. In de eerste plaats kan de methode met behulp van bestaande functionaliteiten van VIPS worden aangepast. Ten tweede kunnen met behulp van de VIPS bibliotheek voor de afdeling kunstgeschiedenis specifieke functies worden ontwikkeld, die het werk vergemakkelijken. Het uiteindelijke doel is tot een goede, verbeterde montageprocedure te komen. Een functionaliteit die de afdeling direct in gebruik kan nemen, is het corrigeren van onevenwichtige belichting. De procedure die hiervoor moet worden gevolgd, is beschreven in het vorige hoofdstuk. Het is dan noodzakelijk dat de onderzoekers tijdens de opnamen, om het uur, of beter nog, om het half uur een wit stuk papier verwerken met de opstelling. Uiteraard moeten zij bijhouden wanneer zij deze grijskaarten maken, zodat de reflectogrammen met de juiste kaart worden gecorrigeerd. Zoals uit het vorige hoofdstuk is gebleken, biedt VIPS ook de mogelijkheid om reflectogrammen te corrigeren voor geometrische afwijkingen. Hiervoor dient, naast een grijs vel papier, een vel met een raster te worden verwerkt. Er is echter nog een andere manier om de geometrische afwijking te corrigeren. Aangezien deze afwijkingen zich meestal aan de randen bevinden, volstaat in principe het verwijderen van deze randen. Het vergt veel tijd om dit handmatig te doen. Per reflectogram moet de onderzoeker het digitale beeld openen in een beeldverwerkingsprogramma en vervolgens het middelste deel bewaren. Bovendien zal op deze manier een bepaalde mate van willekeur aanwezig zijn, omdat de onderzoeker het deel dat moet worden bewaard op het oog selecteert. Deze procedure kan op softwarematige basis plaatsvinden. Dit levert twee voordelen op. Ten eerste scheelt het aanzienlijk in tijd. Ten tweede doorlopen alle reflectogrammen precies dezelfde procedure. Dit bevordert de eenvormigheid van de beelden. Dit hoofdstuk valt uiteen in twee delen. In het eerste deel zal ik mij concentreren op het verwijderen van de zwarte rand en de geometrische vervormingen in de beelden van het cluster kunstgeschiedenis. Het tweede deel behandelt de methode voor het automatisch registreren van twee beelden. Beide delen bezitten een vergelijkbare structuur. Na een korte inleiding over het probleem en het materiaal waarmee gewerkt wordt, volgt een algemeen overzicht van mogelijke methoden die een oplossing kunnen bieden. Daarna zal ik ingaan op de praktische situatie en mijn gemaakte keuzes onderbouwen. In dit hoofdstuk zal eveneens de ontwikkelde software aan bod komen. Dit zal alleen op een globale wijze worden gedaan. Voor een uitgebreide beschrijving verwijs ik de lezer naar bijlage A3 en A4. Deze beschrijven tot in detail hoe de software werkt en hoe de onderzoeker de werking ervan kan beïnvloeden. 59
5.2 De correctie van geometrische afwijkingen aan de randen 5.2.1 Doel Naast de geometrische afwijking aan de randen zit er aan een digitaal reflectogram, gemaakt door het cluster kunstgeschiedenis, een zwarte rand. De doelstelling is het zo intelligent mogelijk verwijderen van de zwarte randen en een deel van het beeld rondom een gescand infraroodreflectogram. 5.2.2 Achtergrond en analyse van het materiaal Het beeldmateriaal is in twee groepen te verdelen. De eerste bestaat uit een soort televisiebeeld met er omheen een zwarte rand. Deze beelden worden gemaakt met het vidiconsysteem. Het televisiebeeld heeft geen rechthoekige vorm, maar heeft gebogen hoeken, zoals bij een oude televisie. Het beeld is over het algemeen in het centrum van het totale beeld gepositioneerd, maar het komt vaak voor dat het zich niet precies in het midden bevindt. In sommige gevallen is zijn positie zover uit het centrum dat er aan sommige zijden, dit is meestal het geval bij de bovenste, geen zwarte rand zichtbaar is. Om het televisiebeeld zit een rand die het beeld iets donkerder weergeeft. Deze rand zit dus tussen het televisiebeeld en het zwarte deel in. De zwarte rand blijkt in de praktijk nooit helemaal zwart te zijn. Dat betekent dat de pixelwaarde niet altijd nul is, maar ook hoger kan zijn. De eerste drie beelden van figuur tien zijn voorbeelden van de eerste groep. De tweede groep wordt gemaakt met een digitale opstelling. Het gevolg is dat het infraroodreflectogram een precieze rechthoek is. Daar omheen bevindt zich een zwarte rand waarvan alle pixels over het algemeen de waarde nul bevatten. Dat betekent dat de pixelwaarde van de zwarte rand vrijwel altijd nul is. Uitzonderingen zitten er niet ver boven. Aan de linkerkant zit vrijwel nooit een zwarte rand en begint het beeld direct aan de zijde van het totale beeld. Het vierde beeld van figuur tien is een voorbeeld van de tweede groep.
a
b
c
d
Figuur 10: een aantal voorbeelden van gescande infraroodreflectogrammen. a. Normale scan. In bijna alle gevallen zit boven in het beeld geen zwarte rand. b. Bij sommige scans ligt het beeld geheel uit het centrum zodat er bijvoorbeeld ook rechts geen rand is. c. Het beeld van het infraroodreflectogram kan zelf soms ook erg zwart zijn. Bovendien kunnen er soms rare storingen in het beeld zitten (witte streep rechts). d. Normaal beeld van de digitale camera. Links zit geen rand.
Het menselijk brein kan onmiddellijk een onderscheid maken tussen de zwarte rand en het eigenlijke beeld. Hij kan dit onderscheid maken, doordat hij een verschil maakt tussen de zwarte kleur van de rand en de grijsachtige kleur van het televisiebeeld. Zelfs wanneer het eigenlijke beeld bijna net zo zwart is als de 60
rand, zoals bij de onderzijde van figuur tien c, kan hij aan de hand van de vorm van het televisiebeeld toch een schatting maken waar het beeld begint. De vraag is nu hoe een computer ditzelfde onderscheid te laten maken. 5.2.3 Segmentatie Binnen de beeldverwerkende wetenschap richt het vakgebied van de beeldanalyse zich op het probleem hoe een computer objecten in een digitaal beeld kan herkennen. De eerste stap in het analyseren van het digitale beeld is segmentatie. Het doel van dit proces is het beeld te verdelen in afzonderlijke delen of objecten aan de hand van bepaalde criteria. In hoeverre het beeld wordt gesegmenteerd hangt af van het probleem dat moet worden opgelost. Autonome segmentatie is één van de moeilijkste processen binnen de digitale beeldverwerking. De analyse van een digitaal beeld staat of valt met de segmentatie ervan.149 Twee eigenschappen van pixels staan aan de basis van de verscheidene segmentatiealgoritmen, namelijk overeenkomst en discontinuïteit van hun grijswaarden. De eerste werkwijze baseert zich op gelijkheid van grijswaarden binnen een bepaalde marge. Zij wordt onder andere toegepast bij detectie van regio's. In het tweede geval wordt het beeld verdeeld op basis van abrupte veranderingen in grijswaarden. Deze methode wordt vooral gebruikt bij het detecteren van geïsoleerde punten en het vinden van lijnen en randen.150 De eerste methode is ongeschikt voor de digitale infraroodreflectogrammen. In de ideale situatie wanneer een pixel die tot de zwarte rand behoort, binnen een duidelijke marge valt, en een pixel die tot het beeld behoort alle waarden buiten deze marge zou kunnen bevatten, zou deze methode gebruikt kunnen worden. Dan kan het begin van het beeld worden achterhaald door een vergelijking van twee aanliggende pixels. Het algoritme ziet er dan als volgt uit. Vergelijk alle mogelijke paren aanliggende pixels met elkaar, zowel horizontaal als verticaal. Het beginpunt is linksboven in het beeld. Verwerk het beeld van links naar rechts en van boven naar onder. Vergelijk per coördinaat eerst de rechterbuur en vervolgens de onderbuur met de huidige pixel. Wanneer de waarde van de ene pixel in de marge van de zwarte rand valt en die van de andere erbuiten, onthoudt dan de coördinaat van de pixel die buiten de marge valt. Verzamel vervolgens alle op deze manier verkregen coördinaten. Verwijder uit de verzameling alle dubbele coördinaten en uiteindelijk houd je een verzameling coördinaten over die precies de rand van het televisiescherm aangeeft. De methode wordt 'region growing by pixel aggregation' genoemd en is gebaseerd op de verbondenheid van pixels. Elk pixel heeft in principe vier horizontale of verticale buurpixels en vier diagonale buren. Sommige buren liggen buiten het beeld wanneer een pixel zich aan de rand van het beeld bevindt. Wanneer twee pixels buren van elkaar zijn en bovendien een waarde bevatten die aan bepaalde criteria voldoet, dan zijn de twee pixels met elkaar verbonden. Met 149 150
Gonzalez, Digital Image, 413-414. Ibidem, 414.
61
behulp van deze onderlinge relatie tussen pixels worden regio's in een digitaal beeld gedefinieerd.151 In het bovenstaande ideale geval is het criterium dat de pixel buiten een bepaalde marge valt. Dat deze methode in dit geval niet voldoet, ligt aan het feit dat de marges van de zwarte rand en van het infraroodbeeld elkaar overlappen. De infraroodreflectogrammen kunnen zelf zeer donkere delen bevatten, zoals figuur tien c laat zien. Wanneer het voorgaande algoritme wordt toegepast, zullen delen die eigenlijk bij het beeld van het reflectogram horen als deel van de zwarte rand worden gezien. Er kan daardoor informatie verloren gaan. Ten tweede zijn de zwarte randen van de verschillende beelden niet uniform. De marges van de grijswaarden variëren van nul en drie tot vijftien en twintig. Met andere woorden: in het ene beeld liggen de grijswaarden van de zwarte rand tussen de nul en drie en in het andere tussen de vijftien en twintig. Het gevolg is dat er geen universele marge kan worden gedefinieerd voor alle infraroodbeelden. masker M
n
m
x
c1
c2
c3
c4
c5
c6
3
c7
c8
c9
2
11 12
2
15 15
4
13
-1
-1
-1
-1
-1
-1
-1
-1
2
-1
8
-1
2
2
2
-1
2
-1
-1
-1
-1
-1
-1
-1
2
-1
-1
a
b
c
y Figuur 11: de beweging van een masker over een digitaal beeld. Maskers kunnen verschillende elementen van een digitaal beeld detecteren: masker a detecteert geïsoleerde punten op een constante ondergrond, b detecteert horizontale lijnen, c detecteert diagonale lijnen.
De methode die zich richt op het detecteren van discontinuïteiten in grijswaarden is geschikt voor het vinden van punten, lijnen en randen. In de praktijk is de geijkte manier voor het vinden van discontinuïteiten een masker dat voor elke pixel in het digitale beeld een nieuwe waarde berekent aan de hand van de aanliggende pixels. In de meeste gevallen gaat het om een masker van drie bij drie dat zich van links naar rechts en van boven naar beneden over het digitale beeld beweegt.152 De precieze berekening is de som van de producten van de Zie: B. Jähne, Digital image processing. Concepts, algorithms, and scientific applications (Berlijn enz. 1995) 195, Gonzalez, Digital Image, 40-43 en Teuber, Digital image, 125-126. 152 Zie: Gonzalez, Digital Image, 162, Jähne, Digital image, 101-102 en A. Marion, An introduction to image processing (Londen enz. 1991) 268-271. Voor de berekening aan de randen van een beeld zijn verschillende mogelijkheden, zie 'Digital image processing I', 151
62
coëfficiënten van het masker met de corresponderende pixel.153 In figuur elf zou bij pixel (m, n) de volgende berekening worden gemaakt wanneer masker M zou worden vervangen door a: c1(m – 1, n – 1) + c2(m - 1, n) + c3(m - 1, n + 1) + c4(m, n - 1) + c5(m, n) + c6(m, n + 1) + c7(m + 1, n - 1) + c8(m + 1, n) + c9(m + 1, n + 1) = (-1 * 3) + (-1 * 4) + (-1 * 13) + (-1 * 2) + (8 * 11) + (-1 * 12) + (-1 * 2) + (-1 * 15) + (-1 * 15) = 22
De nieuwe waarde van (m, n) zou dus 22 worden. Op deze manier wordt aan alle pixels van het beeld een nieuwe waarde toegekend en ontstaat er een nieuw beeld dat informatie verschaft over de plaats van geïsoleerde punten. De som van de coëfficiënten van het masker is altijd nul. Dus wanneer het masker zich over een egaal vlak beweegt is de uitkomst van de berekening altijd nul. In het nieuwe beeld corresponderen zwarte vlakken met de egale gedeelten in het oude beeld. 5.2.4 Detectie van randen Binnen de beeldanalyse wordt gesproken van een rand wanneer twee aanliggende, homogene regio's een relatief verschillende grijswaarde bezitten.154 In de gescande infraroodreflectogrammen is de zwarte rand een homogene regio. Het televisiebeeld zelf is niet homogeen, maar wel bijna altijd te onderscheiden van de zwarte rand. Het televisiebeeld kan in zijn totaliteit dus worden beschouwd als een regio. In het infraroodreflectogram is er dus sprake van een rand waar het zwarte deel overgaat in het eigenlijke beeld. Aan de basis van het detecteren van randen ligt de berekening van de eerste en tweede afgeleide van het beeldsignaal. Het signaal van een digitaal beeld kan worden weergegeven als een grafiek waarin de plaats tegenover de grijswaarde is uitgezet. Figuur twaalf laat de grafieken van drie beeldsignalen zien. Op de plaatsen waar de grafiek een flinke stijging of daling laat zien, is er over het algemeen sprake van een rand. De eerste afgeleide geeft op deze plaatsen een top (voor een stijging) of een dal (voor een daling) te zien. Bij een overgang van een donkere naar een lichtere regio zal zich een top voordoen en andersom een dal. Wanneer de afgeleide absoluut zou worden gemaakt, hoeft er dus alleen gezocht te worden naar de toppen om alle randen te vinden. De tweede afgeleide laat op deze plaatsen een zogenaamde kruising van de nullijn zien. Dit is een neerwaartse kruising bij de overgang van een donkere naar een lichtere regio en een opwaartse in het omgekeerde geval.155 Toppen in deze afgeleide http://dynamo.ecn.purdue.edu/~bouman/ee637/notes/pdf/Topology.pdf (Internet 2001) (12-09-2001) 2. Over de plaatsing van de x- en de y-as is de literatuur niet eenduidig, zie bijvoorbeeld Gonzalez, Digital Image, 6 tegenover Teuber, Digital image, 9-10 en Marion, An introduction 8. 153 Gonzalez, Digital Image, 414-416 en Marion, An introduction, 270-271. 154 Gonzalez, Digital Image, 416. 155 'Classical feature detection', www.citr.auckland.ac.nz/teaching/papers/775/Lectures/Materials/EdgeDetection.pdf
63
corresponderen met tangens discontinuïteiten. Dit zijn discontinuïteiten die zich voordoen in een tangensfunctie van het beeldsignaal.156 a: voorbeeld
b: linkerrand van beeld van de vidiconopstelling
c: rechterrand van beeld van de digitale opstelling
Figuur 12: het beeldsignaal onder de witte stippellijn in een grafiek weergegeven. Eronder de eerste en tweede afgeleide. Pieken en dalen in de eerste afgeleide zijn randen. De tweede afgeleide laten op deze plaatsen een kruising van de nullijn zien.
De eerste afgeleide is te definiëren als de intensiteitsgradiënt van het beeldsignaal. Het gebruik van de gradiënt is in de beeldanalyse de gebruikelijke methode voor beelddifferentiatie. Wanneer er sprake is van een signaal dat voortkomt uit een wiskundige functie f x , dan kan in principe op elk punt de afgeleide worden berekend. In een werkelijk beeldsignaal kan de gradiënt alleen worden benaderd. Voor het beeldsignaal onder de witte stippellijn in figuur twaalf levert masker a in figuur dertien de eerste afgeleide op. Masker dertien b laat een gespiegelde versie hiervan zien. Het probleem met deze maskers is dat het resultaat in één van de twee onderliggende pixels moet worden opgeslagen. In het resultaat is het beeld dus één pixel verschoven, namelijk naar links wanneer de linker pixel als het centrum functioneert en andersom. Over het algemeen wordt daarom de voorkeur gegeven aan symmetrische maskers zoals dertien c en dertien d waarin de middelste pixel een duidelijk centrum vormt. Voor een benadering van de tweede afgeleide volstaat masker dertien e.157
(Internet z.j.) (12-09-2001) 1 en Gonzalez, Digital Image, 416-417. 156 'Classical feature', 2. 157 Jähne, Digital image, 134-139, zie ook: Marion, An introduction, 277-279.
64
-1
1 a
1
-1
-1
b
0
1
1
0
c
-1
d
1
-2
1
e
Figuur 13: a en b zijn asymmetrische maskers en produceren de eerste afgeleide, evenals c en d, met het verschil dat deze symmetrisch zijn. Masker e geeft de tweede afgeleide. De vetgedrukte coëfficiënt is de centrale pixel.
Een digitaal beeld is tweedimensionaal en dus zou het met de eendimensionale maskers van figuur dertien zowel in horizontale als in verticale richting moeten worden verwerkt. De gradiënt wordt in dit geval als een vector voorgesteld. Figuur veertien a illustreert dit. De gradiënt van een digitaal beeld f x op punt (x, y) is de vector ∇ f met de gradiënt G x in horizontale richting en de gradiënt G y in verticale richting. Deze vector wijst in de richting waarin de verandering van
f in (x, y) het grootst is. Voor de detectie van randen is de grootte van deze vector van belang. Deze wordt doorgaans eveneens de gradiënt genoemd en wordt over het algemeen benaderd door de absolute waarden van de gradiënt in horizontale en verticale richting bij elkaar op te tellen. Figuur veertien b geeft de formule weer. Als laatste kan de hoek die de vector ten opzichte van de x-as maakt, worden berekend met formule veertien c.158
= arctan
a
b
Gx Gy
1
∇ f = mag ∇ f = G x 2 G y 2 2 ≈ ∣G x∣ ∣G y∣ c
∇f =
[ ] Gx Gy
Figuur 14: formules voor: a, de gradiënt vector, b, de grootte van de vector en c, de richting van de vector.
In de praktijk krijgt G x de uitkomst van masker a, b, c of d in figuur dertien.
G y krijgt de uitkomst van deze maskers wanneer deze een kwart slag worden gedraaid. Voor het punt (m, n) in figuur elf betekent dit voor masker a dat G x = |-11 + 12| = 1 en G y = |-11 + 13| = 2. De gradiënt in dat punt is dus 3. Een vergelijkbare benadering is het zogenaamde kruisverschil. De gradiënt wordt dan niet in horizontale of verticale richting berekend, maar in diagonale richting. De asymmetrische maskers zien er dan uit als a en b in figuur vijftien en zijn vernoemt naar hun uitvinder, Roberts.159 In een tweedimensionaal vlak blijven de omringende waarden van een punt niet beperkt tot twee, zoals bij een lineair signaal, maar zijn dat er negen (behalve aan de randen). Symmetrische maskers zijn dan drie bij drie en deze grootte biedt meer mogelijkheden. Het grootste probleem bij het gebruik van de eerste afgeleide is, dat zij verstoringen in het digitale beeld versterkt. Verstoringen 158 159
Gonzalez, Digital Image, 418-419, zie ook: Jähne, Digital image, 135-138. Gonzalez, Digital Image, 199-200.
65
kunnen bijvoorbeeld individuele pixels zijn, die een afwijkende waarde ten opzichte van de omgeving hebben. Dit kan veroorzaakt zijn, doordat de digitalisering van het beeld niet geheel vlekkeloos is verlopen. Het is dan ook niet ongebruikelijk om voor de detectie het beeldsignaal te vereffenen. De procedure hiervoor bestaat uit het berekenen van het gemiddelde of de mediaan van het punt en zijn aanliggende pixels. Vervolgens wordt in het vereffende signaal gezocht naar randen.160
1
0
0
1
0
-1
-1
0
a
-1
-1
-1
-1
-1
0
-1
-2
-1
-2
-1
0
0
1
0
0
0
0
-1
0
1
0
0
0
-1
0
1
1
-4
1
1
1
1
0
1
1
1
2
1
0
1
2
0
1
0
b c
d
e
f
g
Figuur 15: verschillende maskers voor de berekening van de gradiënt in een digitaal beeld. a en b zijn Roberts operatoren en zijn diagonaal georiënteerd. c is een Prewitt operator die de gradiënt in de y richting berekent. Prewitt operator d berekent deze in diagonale richting. e en f zijn vergelijkbare Sobel operatoren. g is de Laplace operator en benadert de tweede afgeleide van de centrale pixel.
Het vereffenen en het detecteren van randen kan echter in één keer plaatsvinden. De zogenaamde Prewitt operator, weergegeven in figuur vijftien c en d, berekent aan beide zijden van de centrale pixel de totale waarde van drie pixels. Sobel is een variatie hierop, die de direct aanliggende pixels met twee vermenigvuldigt, zoals figuur vijftien e laat zien. De waarde van de pixels die in een lineair signaal de gradiënt bepalen, verdubbelt Sobel.161 De Laplace operator benadert de tweede afgeleide. Het masker is de som van masker e in figuur dertien in de x en y richting.162 Omdat het de verwerking van het beeld in beide richtingen in één masker weet te combineren, hoeft per pixel maar één berekening te worden gemaakt voor de gradiënt. Het grootste nadeel van de Laplace operator is het achterwege blijven van een effening van het beeldsignaal, zodat, naast randen, willekeurige verstoringen worden benadrukt.163 Bovendien kan de operator de richting van de rand niet detecteren. De tweede afgeleide wordt daarom vooral gebruikt voor het lokaliseren van randen, niet om bijvoorbeeld te bepalen of een pixel bij het donkere of het lichte deel van de rand behoort.164 De procedure voor het verkrijgen van een zogenaamde randenkaart bestaat uit drie stappen. In de eerste plaats wordt er een gradiëntenkaart gemaakt met behulp van de hiervoor genoemde maskers. In de tweede fase geeft een algoritme alle pixels in de gradiëntenkaart, die geen lokale maxima zijn, de waarde nul. Deze routine heet non-maxima onderdrukking. In de laatste stap zorgt een thresholding-procedure voor het verwijderen van lokale maxima die zijn 160 161 162 163 164
66
'Classical feature', 6. Gonzalez, Digital Image, 200 en 419-420. Jähne, Digital image, 139. Marion, An introduction, 279. Gonzalez, Digital Image, 420-422.
veroorzaakt door verstoringen in het beeld. Deze fase bepaalt dus uiteindelijk welke pixels tot een rand behoren. De routine is uiterst gevoelig en kan niet worden gestandaardiseerd, omdat elk digitaal beeld voor de threshold een andere waarde vereist.165 Hoewel detectiemethoden die gebaseerd zijn op de berekening van een gradiënt binnen de beeldanalyse behoren tot de standaardmethoden voor de detectie van randen, is er een aantal problemen waarmee rekening dient te worden gehouden. De thresholdwaarde en de grootte van de maskers kunnen niet automatisch worden vastgesteld. Een gebruiker dient deze te definiëren. Hoe gevoelig de gradiënt is voor een threshold blijkt bijvoorbeeld uit het feit dat wanneer een digitaal beeld wordt vergroot met een factor twee zonder de grijswaarden te veranderen, de gradiënt wordt gehalveerd. Maskers kunnen groter zijn dan drie bij drie. In sommige gevallen kan het betrekken van een groot gebied rondom de centrale pixel tot betere resultaten leiden. Dit verschilt per digitaal beeld. Een ander probleem is de slechte detectie van lijnen en hoeken, omdat de gradiënt daar kleiner is. De juiste detectie van lijnen hangt op zich weer af van de juiste detectie van hoeken.166 Voor de detectie van lijnen en hoeken bestaan overigens andere maskers.167 5.2.5 Toepassing op de scans van infraroodreflectogrammen Voor de infraroodreflectogrammen van het cluster kunstgeschiedenis is de ontwikkeling van een routine voor de volledige verwijdering van de zwarte rand rondom het gescande reflectogram het doel. Daarnaast moet een deel van het reflectogram zelf worden verwijderd, omdat er, vooral bij de vidiconbeelden, een hoge mate van geometrische verstoring aan de randen van het reflectogram zit. Bij het verwerken van het schilderij is daar rekening mee gehouden door een grote overlap tussen de aanliggende beelden te verwezenlijken. In de eerste plaats moet de routine het reflectogram in zijn geheel isoleren. Dat betekent dat er na deze stap in de hoeken nog delen van de zwarte rand zichtbaar zijn. Vervolgens verwijdert zij aan alle zijden nog een deel van de rand, zodat ten eerste de zwarte delen in de hoeken en ten tweede de delen waar de geometrische verstoring het grootst is, wegvallen. Het resultaat na deze tweede stap is een infraroodreflectogram met minimale geometrische verstoringen, maar met voldoende overlap voor de montage van het mozaïek. De eerste stap van het proces zal met behulp van randdetectie plaatsvinden. Er kan wat betreft de scans een aantal premissen worden gemaakt. Aangezien in eerste instantie het totale reflectogram behouden moet blijven, zal het algoritme op zoek moeten gaan naar dat deel van de rand, waarvan de raaklijn evenwijdig loopt aan één van de zijden van de scan. In alle scans bevindt zich een zwarte rand rondom een lichter beeld. De richting van de rand, de hoek die de 165 166 167
'Classical feature', 4, zie voor een voorbeeld: Gonzalez, Digital Image, 200-201. 'Classical feature', 11. Teuber, Digital image, 145.
67
gradiëntvector maakt met de x-as, is dus bij voorbaat bekend. Boven is dat negentig graden, rechts is dat 180 graden, onder is dat 270 of min negentig graden en links is dat nul graden. Bovendien is bekend welk deel van de rand de donkere en welk deel de lichte zijde is. Vanaf de zijde gezien komt eerst het donkere deel en vervolgens het lichte. Omdat de richting van de rand bekend is, kan voor de detectie het beste van de eerste afgeleide worden uitgegaan, omdat deze richtinggevoelig is, namelijk zoals hiervoor beschreven positief bij een overgang van licht naar donker en negatief in het tegenovergestelde geval. Het juiste masker kan voor elke zijde dus specifiek worden aangepast. Figuur zestien geeft een aantal resultaten weer van maskers op de onder- en rechterzijde van twee scans. In het eerste geval gaat het om een normale scan afkomstig van de vidiconopstelling. Het tweede voorbeeld is een worst-casescenario. Het gaat om figuur tien c, waarin de onderzijde van het reflectogram bijna even donker is als de zwarte rand en er aan de rechterzijde van de scan een afwijking zit. Beelden afkomstig van de digitale camera laat ik voorlopig even buiten beschouwing, omdat het detecteren van de rand hier makkelijker is vanwege de rechte rand. In de eerste plaats laten deze beelden zien dat het zoeken naar randen met behulp van de tweede afgeleide mindere resultaten oplevert. In sommige gevallen geeft een standaard Laplace masker van drie bij drie geen enkel resultaat. Een Laplace van zeven bij zeven resulteert in een betere detectie, maar is onvoldoende. Een vergelijking met maskers die de eerste afgeleide benaderen, bevestigt dat in dit geval beter van de eerste afgeleide kan worden uitgegaan. Figuur zestien a tot en met zestien f laten de resultaten zien van verschillende maskers hiervoor. Masker a in figuur dertien levert b op. Zestien d is het resultaat van een drie bij drie Prewitt masker en zestien e van een standaard Sobel masker. In de meeste gevallen detecteren deze maskers de randen en zelfs in het slechtste geval (geen duidelijke overgang tussen zwarte rand en reflectogram) is er sprake van een minieme herkenning. De belangrijke verbetering in dit verband is de vergroting van het oppervlak waarover de gradiënt wordt berekend. Dit is mogelijk, omdat van tevoren de richting van de gradiëntvector van de gezochte rand bekend is. Deze staat altijd loodrecht op de zijde en wijst naar de overzijde van het beeld. Het gevolg is in de eerste plaats dat de gradiënt vergroot, omdat het verschil tussen het lichte en het donkere deel van de rand groter is. In de tweede plaats is de effeningsfactor groter, zodat toevallige verstoringen, ook die meer dan één pixel omvatten, minder invloed op het resultaat hebben. Figuur zestien c en e laten daarom zwartere lijnen zien. Een stap verder is de berekening van de gradiënt niet voor elk punt uit te voeren, maar voor meerdere punten tegelijk of zelfs lijnen. Van tevoren is bekend dat in het geval van de scans van de vidiconopstelling de rand evenwijdig aan de zijde bijna een rechte lijn is. Voor de beelden van de digitale camera is de hele rand recht. Het voordeel van deze methode is dat 68
onregelmatigheden als de witte streep aan de rechterkant van figuur tien c vrijwel wegvallen. Wanneer hier het gemiddelde wordt berekend van een lijn over de hele lengte van de uitsnede, dan is het aantal zwarte pixels veel groter dan het aantal witte.
a
f
a
f
b
g
b
g
c
h
c
h
d
i
d
i
e
j
e
j
a
b
c
d
e
f
g
h
i
j
a
b
c
d
e
f
g
h
i
j
Figuur 16: resultaten van de besproken maskers op de onder- en rechterzijde van scans a en c in figuur 1. a. origineel b. standaard masker (zie figuur 4a) c. standaard masker 7x7 d. Prewitt masker (zie figuur 6c) e. Prewitt masker 7x7 f. Sobel masker (zie figuur 6e) g. f thresholded op 100 h. f thresholded op 200 i. Laplace masker (zie figuur 6g) j. Laplace masker 7x7.
Figuren zestien g en h laten zien dat detectie via universele thresholding hier geen zin heeft. Zestien g geeft het resultaat weer van de bewerking van het origineel met een Sobel masker met een threshold op honderd. Zestien h volgt hetzelfde principe, maar dan met een waarde van tweehonderd. Het blijkt dat in het geval van een vage rand alleen een threshold op honderd een heel klein streepje oplevert. In andere gevallen is een threshold op tweehonderd ruim voldoende. Het algoritme moet dus zelf bepalen wat een rand is. Dat betekent dat
69
per zijde een criterium moet worden vastgesteld. Zoals vermeld zit er tussen het televisiebeeld en de zwarte rand een donkere rand die nog een deel van het televisiebeeld donkerder weergeeft. Over het algemeen is de gradiënt tussen deze rand en de zwarte rand kleiner dan die tussen het televisiebeeld en deze rand. Deze constatering leidt tot de conclusie, dat het algoritme op zoek moet gaan naar de plaats waar de gradiënt het grootst is. Het algoritme dat alle voorgaande opmerkingen in acht neemt, ziet er als volgt uit. Vanaf elke zijde zoekt zij met behulp van de gradiënt berekend over een bepaalde lijn evenwijdig aan de betreffende zijde, naar de grootste waarde. De berekening van de gradiënt vindt op de manier van Prewitt plaats, omdat die het beste resultaat geeft. Dat betekent dat voor een lijn het gemiddelde van de lijn erachter van het gemiddelde van de lijn ervoor wordt afgetrokken. Waar dit verschil het grootst is bevindt zich de rand. Vanaf de zijde hoeft niet het hele beeld te worden doorlopen. De grootste afstand tussen de zijde en het begin van de rand was in de mij beschikbare beelden 111 pixels. Dus als het algoritme vanaf elke zijde 150 pixels doorloopt, moet dat voldoende zijn. De lengte van de lijn waarover de gradiënt wordt berekend, hangt van de rechtheid van het reflectogram af. In digitale opstelling kan dus het beste de hele breedte van het beeld worden genomen, omdat het beeld van het reflectogram lijnrecht is. De beelden van de vidiconopstelling hebben de vorm van een televisiebeeld en buigen in de hoeken dus af. De lijn waarover de gradiënt wordt berekend moet dus een zo recht mogelijk deel van dat televisiebeeld beslaan. Over het algemeen is een half tot een derde van de zijde voldoende. Het enige probleem dat nog rest, is hoe te bepalen dat er geen zwarte rand is. Dit is doorgaans het geval aan de bovenzijde van de scan. Het probleem dat hiermee samenhangt, is hoe de gradiënt van de eerste lijn aan de zijde te bepalen. Daar zit immers geen lijn waarover een gemiddelde kan worden berekend. De oplossing voor beide problemen is de scan te vergroten met een rand van één pixel in breedte. De waarde die elke pixel van deze rand is gelijk aan het gemiddelde van een aantal pixels uit de vier hoeken van de scan. Van de hoeken is het zeker dat deze altijd tot de zwarte rand behoren en dus pixels bevatten waarvan de waarde overeenkomt met die van de zwarte rand. Effening vindt plaats door het gemiddelde te nemen over een aantal pixels.
Figuur 17: na het verwijderen van de zwarte randen zullen er in de hoeken nog delen van die rand zichtbaar blijven.
Nadat het algoritme het reflectogram heeft geïsoleerd, ziet het resultaat eruit als in figuur zeventien. Het tweede onderdeel behelst het verwijderen van de zwarte hoeken en ook het verwijderen van de delen met grote geometrische 70
verstoringen. Dit kan in één keer en op vrij eenvoudige wijze gebeuren. Afhankelijk van de grootte van de overlap met aanliggende reflectogrammen, haalt het algoritme van elke zijde een vast aantal pixels af. De overlap die behouden blijft moet wel van dusdanige grootte zijn dat er nog een vloeiende overgang kan worden gemaakt bij de montage van het mozaïek. De gebruiker kan een aantal variabelen aan het algoritme meegeven. Dit zijn de lengte van de lijn waarover het programma de gradiënt berekent, het aantal pixels dat het algoritme vanaf de zijde moet doorlopen en het aantal pixels dat het algoritme moet verwijderen nadat de zwarte randen zijn verwijderd (voor het verwijderen van de zwarte hoeken en geometrische vervormingen). Om deze parameters te bepalen moet de gebruiker één beeld te openen in een beeldverwerkingsprogramma en het vervolgens te bestuderen. Deze vlieger gaat alleen op wanneer de reflectogrammen een redelijke mate van eenvormigheid bezitten. Dit is het geval wanneer deze allemaal met dezelfde opstelling zijn gemaakt. 5.2.6 Wanneer vipscrop de fout in kan gaan Vanzelfsprekend is dit algoritme niet in alle gevallen trefzeker. Het kan bijvoorbeeld fout gaan wanneer er in één van de hoeken een verstoring is opgetreden van redelijke omvang. Het gevolg daarvan zou zijn dat de virtuele rand die het algoritme rondom de scan aanbrengt een te groot verschil vertoont met de werkelijke zwarte rand, waardoor de gradiënt hier het grootst is. In dat geval verwijdert het algoritme niets en blijft de scan onveranderd. Een ander geval waarbij het algoritme zeker faalt, is wanneer een deel van het reflectogram zo donker is dat er geen onderscheid is tussen de zwarte rand en het beeld. Het algoritme zal dan de rand bepalen waar het reflectogram lichter wordt, of, wanneer deze niet binnen het aantal opgegeven pixels ligt, deze plaatsen waar de zwarte rand zelf de grootste gradiënt vertoont. Er zijn meer gevallen te bedenken waarin verstoringen in het beeld tot vreemde resultaten zullen leiden. In die gevallen zal de gebruiker handmatig te werk moeten gaan. Alle beelden waarmee het algoritme is getest gaven echter een juist resultaat. De broncode van het programma is te vinden in bijlage A1. 5.3 Automatische montage van mozaïeken 5.3.1 Doel Voor de automatische montage van een mozaïek kan gebruik worden gemaakt van de bestaande mozaïekfuncties in VIPS. Deze verwachten een aantal parameters, waaronder twee overeenkomstige punten. Voorheen gaven de onderzoekers deze handmatig aan. Het beoogde doel is deze door de computer te laten genereren.
71
5.3.2 Achtergrond en analyse van het beeldmateriaal Alvorens het programma wordt geschreven, dient eerst te worden nagegaan hoe de selectie van twee overeenkomstige punten handmatig verloopt. Zoals in het vorige hoofdstuk beschreven, legt de onderzoeker twee aangrenzende beelden over elkaar heen en maakt de bovenste transparant. Vervolgens verplaatst hij deze totdat er een scherp beeld ontstaat in het overlappende deel. De scherpte van de overlap beoordeelt de onderzoeker op de hoeken en lijnen, want daar is het contrast hoog (tussen de lijn en de achtergrond) en de scherpte het makkelijkst te bepalen. Punten met een groot contrast spelen ook een grote rol bij de mozaïekfuncties in de VIPS-bibliotheek. Wanneer de onderzoeker twee overeenkomstige punten moet aangeven, gaat hij altijd op zoek naar punten met een groot contrast. Voor de functie is het dan makkelijker de precieze locatie van de punten te bepalen, want, zoals in het vorige hoofdstuk beschreven, gaan de lr_mosiac en de tb_mosaicfuncties in een gebied rondom het aangegeven punt op zoek naar de optimale ligging van de punten. Dit gebeurt met een algoritme dat in het gebied rondom beide punten het contrast berekent en deze met elkaar vergelijkt. De punten waar het verschil in contrast het grootst is, neemt de functie als uitgangspunt. Bij handmatige selectie zijn de punten die het eerst in aanmerking komen hoeken, lijneinden en kruispunten van lijnen. Voor het menselijk oog zijn dit de punten in een beeld, waarop de mate van gelijkenis kan worden bepaald. Een punt op een rechte lijn alleen is niet genoeg, omdat de eigenschappen voor dat punt ook kenmerkend zijn voor andere punten op die lijn. Het punt zou dus evengoed ergens anders op die lijn kunnen liggen, zonder dat de overeenkomst tussen beide punten fundamenteel verschillend is. 5.3.3 Introductie in beeldregistratie Beeldregistratie vormt een belangrijk onderdeel van het beeldvergelijkende proces. Het is de tak van de beeldverwerkende wetenschap die zich bezighoudt met onderzoek naar technieken voor beeldvergelijking. Er bestaan verschillende technieken voor het registreren van beelden. Het type beeld en het probleem dat moet worden opgelost, bepalen de techniek die het beste kan worden toegepast. Brown geeft in een artikel uit 1992168 een overzicht van bestaande technieken. In dit hoofdstuk zal haar artikel als uitgangspunt dienen. Waar nodig zal ik via aanvullingen uit andere bronnen een compleet beeld schetsen van registratietechnieken. Brown verdeelt de beeldregistratietechniek onder in vier componenten, namelijk de objectruimte, de zoekruimte, de zoekstrategie en de vergelijkingsfactor. De karakteristieke informatie uit de beelden die wordt gebruikt voor de beeldvergelijking, noemt zij de objectruimte. De vraag die de inhoud van Gottesfeld Brown, L., 'A survey of image registration techniques', ACM computing surveys 24 (1992) 325-276. 168
72
deze ruimte bepaalt, is welke objecten in de beelden van belang zijn voor de registratie. Brown verdeelt de objecten in twee categorieën. In de eerste plaats doet een beeld met grijswaarden dienst als vergelijkingsmateriaal. Een voorbeeld hiervan is kruiscorrelatie. Een deel van het ene beeld wordt gebruikt als template voor de registratie. Ten tweede kan de vergelijking plaatsvinden op basis van karakteristieke elementen. Van het ene beeld worden bepaalde karakteristieken verzameld, die de basis vormen voor de registratie. Respectievelijk heten deze methoden 'area based matching' (ABM) en 'feature based matching' (FBM).169 De tweede component, de zoekruimte, definieert het aantal transformaties dat moet worden toegepast om de beelden zodanig aan te passen, dat zij hetzelfde zijn. Het gaat hierbij om de bepaling van het soort transformatie. De derde component, de zoekstrategie, bepaalt wat de opeenvolgende transformaties zijn om tot een optimale beeldvergelijking te komen. Hierbij staat het vinden van een voor de computer snelle, hanteerbare transformatie centraal. De vierde component, de vergelijkingsfactor, bepaalt voor elke registratie in hoeverre de vergelijking klopt. De vraag is dan, wat de beste, optimale berekening is om de elementen uit de beelden te vergelijken. De computer zoekt volgens de zoekstrategie net zolang door, totdat deze een transformatie heeft gevonden, die een optimale vergelijkingsfactor heeft. Het verschil tussen de registratietechnieken zit hem vooral in de invulling en combinatie van de bovenstaande vier componenten.170 Een registratiemethode wordt echter voornamelijk gekarakteriseerd door het type transformatie dat het gebruikt voor een juiste registratie van twee beelden.171 Brown verdeelt de registratiemethoden onder in vier groepen, te weten multimodulaire, template-, standpunt- en tijdelijke registratie. Multimodulaire registratie is een techniek voor het vergelijken van beelden die met verschillende opnameapparatuur zijn gemaakt. Zij wordt vooral toegepast in geneeskundige kringen voor het vergelijken van scans. Templateregistratie probeert aan de hand van een template een passende vergelijking te vinden in een refererend beeld. Deze techniek wordt gebruikt bij patroonherkenning, zoals de verificatie van een signatuur. Standpuntregistratie houdt zich bezig met het vergelijken van beelden die gemaakt zijn vanuit een verschillend standpunt. Het doel is de reconstructie van diepte of driedimensionale objecten. Tijdelijke registratie is de verzamelnaam van technieken die zich bezighouden met het vergelijken van beelden die op verschillende tijdstippen zijn gemaakt. Het gaat hierbij om het detecteren van verandering, zoals groei of beweging.172 Hoewel Browns onderverdeling geen standaard classificatie is, geeft het wel een goed overzicht van de doelen die beeldregistratie voor ogen heeft. Brown, 'A survey', 326. Brown, 'A survey', 326 en Heipke, C., ‘Overview of image matching techniques’, http://dgrwww.epfl.ch/PHOT/workshop/wks96/art_3_1.html (Internet 1996) (12-09-2001) #RTFToC5-#RTFToC6. 171 Brown, 'A survey', 333. 172 Brown, 'A survey', 329. 169 170
73
Met betrekking tot beeldregistratie zijn er nog een drietal definities die voor alle volledigheid enige uitleg behoeven. De definitie van een transformatie is een projectie van locaties van punten in het ene beeld op het andere beeld. Hierbij bestaat er onderscheid tussen globale en lokale projectie. In het eerste geval bestaat er één functie die het totale beeld projecteert. De lokale projectie projecteert verschillende delen van een beeld op een andere manier. De definitie van lokaal is niet eenduidig, maar over het algemeen is het gebied waarnaar wordt verwezen niet groter dan vijftig bij vijftig pixels.173 De definitie van een variatie is het verschil in waarde en plaats van de pixels tussen twee beelden. In de meeste gevallen gaat het om verschillen in intensiteit. Geometrische verstoringen vallen ook onder de variatie tussen twee beelden. Variaties worden veroorzaakt door veranderingen in de scène of door veranderingen in de opnameapparatuur. Ook hier bestaat er een onderscheid tussen globale en lokale variaties. Het gaat er dan om of de variatie kan worden verwijderd met een globale of een lokale transformatie. De laatste definitie is de registratieberekening. Deze verwijst naar de berekeningen die moeten worden uitgevoerd om de parameters van de transformatie te achterhalen. Wanneer een berekening informatie uit het hele beeld nodig heeft, heet zij globaal te zijn, anders lokaal.174 Om de theorie achter beeldregistratie te begrijpen is het noodzakelijk beelden te definiëren als tweedimensionale matrices. B 1 x , y en B 2 x , y vormen de intensiteit van de pixels in punt (x, y) in respectievelijk beeld B1 en beeld B2. De projectie van B1 op B2 is dan in formulevorm B 2 x , y = g B 1 f x , y , waarin f een tweedimensionale ruimtelijke transformatie is en g een ééndimensionale transformatie van de intensiteit. Het doel is het zoeken naar de optimale aansluiting van de beelden op elkaar met als resultaat de transformatieparameters, in het geval van twee gelijke beelden, of het verschil tussen twee beelden, in het geval van bijvoorbeeld tijdelijke registratie. Het vinden van deze parameters is uiteindelijk het belangrijkste onderdeel van het registratieproces.175 Er zijn meerdere soorten transformaties. De meest simpele onder deze is de starre transformatie. Het kenmerk van deze transformatie is, dat de grootte van de objecten relatief gelijk is. Dat betekent dat het opnameapparaat zich over de scène heeft bewogen op constante of variabele afstand van het object. De enige rotatie die mogelijk is binnen de definitie van een starre transformatie, is een draaiing rondom zijn optische as (de as die loodrecht op de lens staat). De hoek tussen de camera en de scène blijft dus altijd hetzelfde. De globale transformatie is bijvoorbeeld star, omdat de relatieve geometrische relatie tussen punten uiteindelijk overal hetzelfde is. Verwante transformaties kunnen een uitgebreider scala aan geometrische verschuivingen aan, zoals de afschuivende transformatie, weergegeven in figuur achttien. Hierbij zijn de objecten in de beelden niet meer 173 174 175
74
Heipke, ‘Overview', #RTFToC5. Brown, 'A survey', 330-331. Ibidem, 333.
relatief gelijk. Daarnaast bestaan er nog ingewikkeldere transformaties die rekening houden met afschuining van beelden, perspectief in beelden en geometrische afwijkingen.176
a
b
Figuur 18: afschuivende transformatie: a geeft het originele beeld weer en b geeft het beeld weer na een afschuivende transformatie.
Brown verdeelt de variaties onder in drie groepen, namelijk corrigeerbare, atmosferische en te detecteren verstoringen. In de eerste plaats zijn er verstoringen die gecorrigeerd kunnen worden. Deze worden veroorzaakt door bijvoorbeeld invloed van de opnameapparatuur. In het optimale geval zou de transformatie dit soort verstoringen moeten kunnen verwijderen. Meestal betreft het geometrische verstoringen. Verstoringen zijn echter niet in alle gevallen te verwijderen. Onder deze tweede groep vallen verstoringen veroorzaakt door belichting en veranderingen in de atmosfeer. Een voorbeeld is hete lucht in de omgeving die in de weergave van de scène golfachtige sporen achterlaat. De derde groep staat volledig los van de voorgaande twee. Het gaat hier om verstoringen die gedetecteerd moeten worden in het registratieproces. Voorbeelden hiervan zijn bewegingen van objecten en groeiprocessen. Naast deze driedeling zijn variaties te verdelen in statisch of dynamisch, intern of extern en geometrisch of fotometrisch. Het verschil tussen statische en dynamische variaties is dat de eerste constant zijn in alle beelden. Dat betekent dat alle beelden op dezelfde manier kunnen worden gecorrigeerd. De oorzaak van interne variaties ligt bij de sensor van de opnameapparatuur, terwijl externe variaties het gevolg zijn van beweging in de scène en het handmatig veranderen van de manier waarop de sensor de beelden registreert. Als laatste hebben geometrische verstoringen invloed op de ruimtelijke indeling van een beeld, dus op de ligging van elke pixel. Fotometrische verstoringen zijn fluctuaties in de intensiteit van het beeld, dus in de waarde van de pixels. Voor alle verstoringen geldt echter: hoe meer er van tevoren over bekend is, hoe beter deze kunnen worden gecorrigeerd en hoe beter het resultaat van de beeldregistratie is.177 5.3.4 Methoden voor beeldregistratie De basistechniek voor beeldregistratie is kruiscorrelatie. Deze techniek is gebaseerd op ABM. Zij vergelijkt twee beelden via een statistische methode. De techniek wordt voornamelijk gebruikt bij templatevergelijking en patroonherkenning. Kruiscorrelatie geeft zelf eigenlijk alleen een indicatie in 176 177
Zie voor een uitgebreide beschrijving van de transformaties: ibidem, 334-336. Ibidem, 336-339.
75
hoeverre twee beelden overeenkomen, maar voor veel registratietechnieken is dit het voornaamste werktuig. Deze technieken zijn vooral gebruikelijk bij kleine starre of verwante transformaties.178 Wanneer de transformatie roteren en/of schalen behoeft, voldoet kruiscorrelatie niet, omdat het aantal berekeningen voor de computer te groot is.179 De correlatiecoëfficiënt wordt met de formules in figuur negentien berekend. Hierin is T de template en I het beeld waarmee de template wordt vergeleken. De template T is altijd kleiner dan het beeld I. Op de plaats waar T de meeste overeenkomst vertoont met het deel van I zal de uitkomst van de berekening het hoogst zijn. Verschil in intensiteit tussen beide beelden speelt geen rol, omdat deze genormaliseerd wordt door de noemer van de breuk in de formule. Aan de grondslag van de berekening van de correlatiecoëfficiënt ligt het berekenen van het totale verschil in het kwadraat tussen de waarden van de pixels in de template en de respectievelijke pixels in het beeld. Het kwadraat van elk verschil is nodig om negatieve verschillen positief te maken, dus om een absoluut verschil te verkrijgen. Op de plaats in het beeld waar de som van de verschillen het kleinst is, komt de template het meest overeen met het beeld.180 Een uitgebreide variant hierop betrekt het gemiddelde en/of de standaarddeviatie van zowel de template als het beeld in de berekening. Deze berekening levert het beste resultaat op wanneer een absolute vergelijking noodzakelijk is.181
C u , v =
a
b
=
∑x ∑ y T x , y I x – u , y – v ∑x ∑ y I 2 x – u , y – v
∑x ∑ y T x , y – aT I x , y – a I ∑x ∑ y T x , y – aT 2 ∑x ∑ y I x , y – a I 2
Figuur 19: formule a voor de berekening van de correlatiecoëfficiënt. T(x, y) verwijst naar de waarde van de pixels in de template. I(x – u, y – v) verwijst naar de waarde van de pixels in het lokale deel (dat even groot is als de template) van het beeld dat wordt vergeleken met de template. Formule b geeft een uitgebreide variant weer in een andere notatie. T(x, y) en I(x, y) zijn respectievelijk de som van de grijswaarden in de template en het corresponderende deel in het beeld. aT en aI zijn respectievelijk de gemiddelden van deze grijswaarden.
Voor de computer is het berekenen van de correlatiecoëfficiënt een intensieve berekening. Een efficiënte methode die gebaseerd is op het correlatieprincipe is de 'sequential similarity detection algorithms' (SSDA’s). Deze algoritmes verbeteren de correlatiealgoritmes op twee punten. In de eerste plaats gebruiken de algoritmes een simpelere gelijkvormigheidsberekening. In plaats van het kwadraat te nemen van de verschillen tussen de pixels, wordt het verschil absoluut gemaakt. Dit is voor de computer een veel gemakkelijkere stap, omdat hij alleen het bit dat aangeeft dat een getal negatief is, moet omzetten. Normalisatie vindt 178 179 180 181
76
Ibidem, 341. Gonzalez, Digital Image, 585. Ibidem, 583-584, zie ook Teuber, Digital image, 147-150. Heipke, ‘Overview', #RTFToC4.
plaats door de gemiddelden van zowel de template, als het lokale deel van het beeld dat wordt vergeleken met de template, in de berekening op te nemen. Uiteindelijk levert dat de formule in figuur twintig op.182
C u , v =
∑x ∑ y ∣T x , y – T – I x – u , y – v I u , v∣
Figuur 20: formule voor de berekening gebruikt door de SSDA’s. De gemiddelden van de template en het lokale deel in het beeld dat wordt vergeleken (aangegeven met de circonflexe) zorgen voor de normalisatie. Deze berekening is voor de computer veel simpeler dan kruiscorrelatie.
De tweede verbetering zit hem in het woord sequentieel. Van tevoren stelt de onderzoeker de voorwaarden op, waaraan de vergelijking van de template met het beeld moet voldoen. Dit kan bijvoorbeeld een waarde zijn die het totale verschil tussen de template en het beeld niet mag overschrijden. Voor elke mogelijke translatie van de template op het beeld wordt de vergelijkingsberekening gemaakt voor elk pixel, totdat de drempelwaarde wordt overschreden. Het algoritme onthoudt hoeveel pixels het bij elke translatie heeft berekend. De translatie waarbij het algoritme de meeste pixels heeft kunnen berekenen is de beste registratie van de template en het beeld. Deze techniek verlaagt het aantal berekeningen dat de computer moet maken drastisch. De drempelwaarde moet echter niet te scherp zijn, want dan bestaat de kans dat goede registraties worden gemist, omdat de marge van het aantal pixels dat überhaupt berekend wordt te klein is.183 Er kleven een aantal nadelen aan de bovenstaande twee methoden. In de eerste plaats zijn beelden in de meeste gevallen tweedimensionale weergaven van driedimensionale scènes. De genoemde twee technieken houden er geen rekening mee dat er diepte of perspectief in het beeld kan zitten.184 Ten tweede hoeft er niet een unieke oplossing te bestaan voor een registratieprobleem. Een patroon kan zich bijvoorbeeld in een beeld herhalen. Bovendien is het ook mogelijk dat de computer geen oplossing vindt, die voldoet aan de gestelde criteria. Ten derde is de techniek niet geschikt voor beelden met weinig structuur. Dit zou ondervangen worden door een grote template te nemen, maar dat vergroot de rekentijd van de computer.185 Beeldpiramiden kunnen helpen bij het oplossen van ambigue vergelijkingen en het uit de hand lopen van het aantal berekeningen dat de computer moet maken. Een beeldpiramide representeert een beeld in verschillende resoluties. Het zoeken naar overeenkomstige punten gebeurt via de beelden met de laagste resolutie. Vervolgens gebruikt de methode de uitkomst van deze vergelijking voor het registreren van de twee beelden in een hogere resolutie. Deze stap wordt Brown, 'A survey', 344. Ibidem, 344. 184 C. Toth en A. Krupnik, ‘Experiences with automatic image patch matching’, http://spatialodyssey.ursus.maine.edu/gisweb/spatdb/acsm/ac94073.html (Internet 1994) (12-09-2001) 644. 185 Heipke, ‘Overview', #RTFToC4 en #RTFToC7. 182 183
77
herhaald, totdat de originele resolutie is bereikt. Deze hiërarchische methode verkleint het aantal berekeningen dat de computer moet maken, omdat deze alleen in de laagste resolutie in de hele overlap zoekt naar de beste vergelijking. Vervolgens is de ligging van de twee beelden ten opzichte van elkaar ongeveer bekend en kan de computer dus in een beperkt gebied zoeken bij de beelden met een hogere resolutie.186
a
b
c
Figuur 21: een beeldpiramide met een diepte van drie. Beeld a is het origineel. Beelden b en c representeren het beeld op een respectievelijk twee en vier keer zo kleine resolutie.
Naast de hiervoor genoemde nadelen hebben kruiscorrelatie en SSDA’s nog een grote tekortkoming: hun onvermogen om ongelijke beelden, zoals beelden met bewegende of groeiende objecten, of beelden op verschillende schaal, te registreren.187 Het verschil tussen de beelden sluit het gebruik van een techniek gebaseerd op gelijkvormigheid uit. Dit geldt ook voor beelden waarbij de belichting of atmosferische omstandigheden verschillen. Dit soort beelden zijn beter te registreren in het frequentiespectrum, ook wel Fourierspectrum genaamd, naar de bedenker van de Fouriertransformatie. De gewoonlijke beeldweergave vindt plaats in het ruimtelijke spectrum. De weergave van een beeld in het frequentiespectrum houdt in, dat het beeldsignaal wordt weergegeven als de som van alle frequenties die het signaal tezamen vormen. Beelden in het ene spectrum kunnen door de computer via een efficiënte berekening, de zogenaamde Fast Fourier Transform (FFT) of de Reverse Fourier Transform (RFT), geconverteerd worden naar het andere domein.188 Beeldregistratie in het Fourierdomein is vooral lucratief bij starre en verwante translaties van een grote template op een groot beeld. Bovendien is het met deze methode mogelijk beelden met verstoringen in een bepaalde smalle bandbreedte in het frequentiespectrum te registreren. Onder deze verstoringen vallen ook verschillen in de belichting, omdat deze terug te vinden zijn in een smalle band in het frequentiespectrum. Een voorbeeld van 186 187 188
78
Ibidem, RTFT0C15. Ibidem, #RTFToC12. Zie Gonzalez, Digital Image, 81-100.
beeldregistratie in het frequentiespectrum is fasecorrelatie. Deze methode is geschikt voor transformaties die bestaan uit een translatie of een rotatie (of beide). Translaties, rotaties en dergelijke transformaties zijn te detecteren in het frequentiespectrum.189 Voorgaande technieken zijn alleen toepasbaar op goedgevormde, duidelijke transformaties zoals rotatie en translatie. Wanneer er sprake is van ingewikkelde of onbekende transformaties, of zelfs van lokale verschillen in de transformatie, dan schieten deze technieken tekort. In deze gevallen kan puntsgewijze registratie een uitkomst bieden. Echter ook bij simpele, bekende transformaties van beelden waarin kleine, lokale verschillen niet gecorrigeerd zijn, is deze techniek bruikbaar. Het principe achter deze techniek is FBM, dus het vinden van overeenkomstige objecten in de te registreren beelden. Deze oriëntatiepunten dienen als uitgangspunt voor de beeldregistratie. Het is met deze techniek bijvoorbeeld mogelijk om beelden met geometrische verstoringen te registreren. Hoe meer deze verstoringen van lokale aard zijn, hoe moeilijker het is de beelden te registreren via een globale transformatie. In dat geval zal er een aantal lokale translaties moeten worden gebruikt.190 Puntsgewijze registratie van beelden met een onbekende transformatie verloopt over het algemeen in drie fasen. De eerste fase bestaat uit de detectie van objecten in het beeld dat als referentie dient. Door bijvoorbeeld hoeken te detecteren, kunnen objecten in een beeld worden gevonden.191 In de tweede fase worden de corresponderende oriëntatiepunten in het tweede beeld opgezocht. In de laatste fase wordt aan de hand van de oriëntatiepunten de transformatie gedefinieerd. Vooral de tweede fase is van cruciaal belang, omdat fouten de registratie doen mislukken.192 Er bestaan twee manieren voor het definiëren van oriëntatiepunten. Extrinsieke punten worden gedefinieerd op basis van de informatie in het beeld. Intrinsieke punten zijn herkenningspunten die vòòr de opname in de scène zijn opgenomen. Deze punten maken in feite geen deel uit van de informatie in een beeld en zijn alleen relevant voor het registratieproces.193 Een gebruiker kan de punten handmatig aangeven, waarbij hij tegelijkertijd het corresponderende punt op het te vergelijken beeld aangeeft. In dit geval zijn de eerste twee fasen samengebald in één proces. Voor een klein aantal beelden is handmatig selecteren van oriëntatiepunten geen tijdrovend werk. Wanneer het echter om een groot project gaat, is het de moeite waard het proces te automatiseren. De computer gaat in dat geval zelf op zoek naar oriëntatiepunten. Brown, 'A survey', 343. Zie voor een uitgebreide technische beschrijving: ibidem, 346347 190 Heipke, ‘Overview', #RTFToC8 en Brown, 'A survey', 348. 191 Zie voor voorbeelden van hoekdetectie algoritmes E. Sojka, 'A new algorithm for detecting corners in digital images' www.cs.vsb.cz/tech_reports/tr-2002-02.pdf (Internet 2002) (16-12-2002). 192 Brown, 'A survey', 348. 193 Ibidem, 439. 189
79
Een groot voordeel hierbij is dat een computer alle beelden tegelijk kan betrekken in de zoektocht naar de beste oplossing. De mens kan daarentegen maximaal twee beelden tegelijk vergelijken.194 Punten waarnaar de computer zoekt zijn bijvoorbeeld hoeken, intersecties van lijnen en punten waar curven maximaal krommen. In globale zin kan de computer zelfs zoeken naar beeldstructuur. In dat geval worden relaties tussen punten betrokken in het registratieproces. De punten moeten uniek en ongevoelig voor verstoringen zijn. Niet alleen de coördinaten van de punten zijn van belang, ook de karakteristieken van een punt zijn belangrijk. Voor een rand is het bijvoorbeeld van belang te weten waar het lichte en het donkere deel zich bevinden en hoe groot de sterkte van de rand is.195 Meerdere oriëntatiepunten verhogen de accuraatheid van de registratie, maar met teveel punten zal de tijd een cruciale rol gaan spelen. Het is dus noodzakelijk een compromis te vinden tussen de accuratesse en de tijdsfactor. Voor het vinden van de overeenkomstige punten via automatische weg, bestaan verschillende technieken. Voor intrinsieke punten wordt over het algemeen kruiscorrelatie gebruikt, omdat deze methode nauwkeurig is. Bovendien is van tevoren bekend hoe de punten er uitzien, omdat deze met opzet in de scène zijn opgenomen. Overeenkomstige extrinsieke punten worden gevonden door hun eigenschappen te vergelijken. Dit kan bijvoorbeeld de kromming van de curve door het punt zijn of de richting van twee kruisende lijnen. Andere technieken combineren fase twee en drie door alle oriëntatiepunten tegelijk te vergelijken en tegelijkertijd de optimale transformatie te vinden.196 Er bestaan een aantal variaties op registratie met behulp van oriëntatiepunten. Het terugkoppelen van resultaten tijdens het zoeken van overeenkomstige punten en het vinden van de optimale transformatie, kan uitkomst bieden bij beelden met oriëntatiepunten die niet uniek zijn of bij beelden met lokale variaties. De techniek maakt gebruik van een aantal oriëntatiepunten. Voor elk punt wordt een transformatie berekend. Vervolgens wordt bekeken in hoeverre de overige oriëntatiepunten overeenkomen en op basis daarvan wordt een cijfer gegeven aan deze transformatie. Deze procedure wordt voor elk punt uitgevoerd en de transformatie met de hoogste waardering is de beste. De berekening van de waardering kan op verschillende manieren plaatsvinden, van de som van de afstand tussen de overige punten tot ingewikkelde statistische berekeningen.197 Puntsgewijze registratie ligt eveneens aan de basis van lokale registratiemethoden. Er bestaat in dat geval niet één globale transformatie waarover de beelden geregistreerd worden, maar er zijn meerdere lokale transformaties nodig om de verschillende delen van de beelden te registreren. De parameters van de transformatie verschillen voor de delen van het beeld. Met 194 195 196 197
80
Toth, ‘Experiences', 645. Heipke, ‘Overview', #RTFToC8. Brown, 'A survey', 349. Zie voor uitgebreide beschrijving: ibidem, 350-351.
deze techniek is het bijvoorbeeld mogelijk om beelden van complexe driedimensionale scènes, gemaakt vanuit verschillende gezichtspunten, te registreren, evenals beelden met bewegende objecten.198 De laatste techniek die nog enige aandacht verdient, is een methode die gebruik maakt van elastische modellen. De techniek modelleert de verstoringen in het beeld als een elastisch materiaal dat met zo min mogelijk buigen en strekken wordt vervormd. De meeste technieken modelleren op basis van het hele beeld, maar sommige gebruiken alleen objecten voor het elastisch model.199 Hoewel de voorgaande technieken laten zien dat er in de loop der jaren veel onderzoek is verricht naar beeldregistratie, is het probleem vooralsnog niet opgelost. Digitale technieken kunnen tot nu toe niet tippen aan het menselijke visuele systeem. Zo is het voor de computer een groot probleem om bijvoorbeeld diepte in een beeld te herkennen.200 5.3.5 Toepassing op de scans van infraroodreflectogrammen Over de beelden die het cluster kunstgeschiedenis maakt met haar opstelling kunnen een aantal opmerkingen worden gemaakt. Hierbij dient in ogenschouw te worden genomen, dat ik er vanaf nu van uitga, dat de beelden al zijn ontdaan van hun zwarte rand via het in paragraaf 5.2 genoemde programma, vipscrop genaamd. In de eerste plaats zijn de beelden geen opnamen van driedimensionale scènes. Dit is een belangrijk punt, want het tweede programma, dat ik vipsmosaic heb genoemd, hoeft bij het zoeken naar de juiste overlap geen rekening te houden met een veranderd perspectief of diepte. In de tweede plaats kan worden aangenomen, dat er zich in het beeld geen geometrische verstoringen meer bevinden. Nadat het programma vipscrop zijn werk heeft gedaan, zijn de verstoringen aan de randen van het beeld verwijderd. Tweederangs verstoringen kunnen zich ook in andere plaatsen in het beeld voordoen, maar deze zijn over het algemeen te verwaarlozen, omdat het om erg kleine verstoringen gaat. Het is bijvoorbeeld mogelijk dat de warmte die het vidiconsysteem genereert, kleine afwijkingen veroorzaakt in het beeld. Deze geometrische afwijkingen hebben echter weinig invloed op het uiteindelijke resultaat, omdat de geometrische verschuivingen klein blijven. Beide voorgaande punten leiden tot de conclusie, dat alle karakteristieke punten in de overlap van beide beelden even ver van elkaar afliggen, en dat de beelden dus eenvormig zijn. Ten derde verschillen de beelden soms wel in lichtheid. Deze verschillen manifesteren zich op twee manieren. In de eerste plaats kan de lichtheid tussen twee beelden verschillen. Het ene beeld is bijvoorbeeld donkerder dan het andere. Ten tweede kan in één beeld een deel donkerder zijn dan een ander deel. In de beelden die het cluster kunstgeschiedenis heeft gemaakt, komt het bijvoorbeeld vaak voor dat de bovenzijde van het beeld lichter is dan de onderzijde. 198 199 200
Ibidem, 356-359. Ibidem, 259-262. Toth, ‘Experiences', 644-645.
81
Als laatste moet worden opgemerkt, dat de structuur van de beelden nooit verschilt. De scène die de onderzoekers fotograferen is statisch. Er vinden dus geen veranderingen plaats. Met betrekking tot de transformatie van twee beelden kan worden geconstateerd dat deze globaal is, omdat de beelden eenvormig zijn. Daarnaast is zij star, omdat de schaal van de beeldstructuur in alle beelden gelijk is. De transformatie behelst alleen een translatie over de x- en de y-as. Roteren en schalen is in dit geval onnodig, omdat deze factoren voor alle beelden hetzelfde zijn. Door de karakteristieken van de beelden is kruiscorrelatie een goed uitgangspunt voor het zoeken naar een algoritme dat de overlap van twee beelden kan bepalen. Zoals in paragraaf 4.3.4 beschreven, is het grootste nadeel van de kruiscorrelatie methode het ontbreken van een detectie van diepte en perspectief. Maar zoals hiervoor is opgemerkt, ontbreekt dit in de beelden. Een tweede mankement is de herkenning van herhalende patronen. Ook dit bezwaar valt weg, omdat er in de beelden geen herhalende identieke patronen aanwezig zijn. Daarnaast hoeft het algoritme geen veranderingen in de scène te detecteren, want deze is statisch. Het laatste bezwaar tegen kruiscorrelatie, namelijk dat kruiscorrelatie niet geschikt is voor beelden met weinig structuur, blijft van toepassing, omdat in sommige overlappen heel weinig structuur te vinden is. Door een zo groot mogelijke template te nemen, wordt de kans dat de template geen structuur bevat kleiner. 0
-1
-1
-1
-1
0
-1
1
1
1
1
-1
-1
1
1
1
1
-1
b
a
-1
1
1
1
1
-1
-1
1
1
1
1
-1
0
-1
-1
-1
-1
0
c
d
Figuur 22: een aantal maskers voor de hoekdetectie. a detecteert een linkerbovenhoek, b een rechterbovenhoek, c een linkeronderhoek en d een rechteronderhoek.
Een andere optie voor het vinden van de beste registratie, zou een algoritme zijn dat hoeken detecteert. Er bestaan maskers hiervoor, figuur 22 geeft er een aantal weer, maar deze werken alleen bij hoeken van negentig graden en gaven met de mij beschikbare beelden onvoldoende resultaat. Er bestaan algoritmes die hoeken van uiteenlopende graden detecteren, maar deze vragen veel rekentijd van de computer en doen wat dat betreft niet onder voor de
82
kruiscorrelatiemethoden.201 Bovendien heeft hoekdetectie in dit geval een aantal zelfde mankementen als kruiscorrelatie. Wanneer het bijvoorbeeld aan beeldstructuur ontbreekt, faalt ook hoekdetectie. Bovendien is de mogelijkheid dat twee hoeken gelijkenis vertonen groter, dan de mogelijkheid dat een template op twee vergelijkbare posities optimaal registreert. Om het aantal berekeningen dat de computer moet maken binnen de perken te houden, maak ik gebruik van een simpele beeldpiramide. Alvorens vipsmosaic een template genereert, verkleint het programma het beeld met een bepaalde factor. Hiervoor gebruik ik de functie im_shrink uit de VIPS bibliotheek. Deze verkleinde beelden dienen als uitgangspunt voor de registratie. Wanneer uiteindelijk het beste punt is gevonden, worden de coördinaten van dit punt vermenigvuldigd met die factor om het originele punt te benaderen. De verkleiningsfactor moet niet te groot zijn, omdat anders de beelden te klein worden om een goede registratie uit te voeren, bijvoorbeeld omdat essentiële beeldstructuren wegvallen. De grootste factor die op de mij beschikbare beelden toegepast kon worden, was acht. Wanneer beelden echter groter of kleiner zijn, dan moet de onderzoeker van tevoren onderzoeken wat de grootste factor is, zonder dat er beeldstructuren verdwijnen. Bij kleinere beelden zal deze factor lager zijn, bij grotere hoger. Zoals beschreven in paragraaf 4.3.4 bestaan er verschillende implementaties van het algoritme dat de correlatiecoëfficiënt berekent. Het snelste algoritme onder hen is de eerder genoemde SSDA. Dit algoritme staat aan de basis van vipsmosaic. Een factor die dit algoritme zo snel maakt, is het laten stoppen van de berekening wanneer deze een bepaald maximum overschrijdt. Doordat vipsmosaic de beelden verkleint, is het voor de onderzoeker van tevoren moeilijk vast te stellen wat een goed maximum is. Hij zou bijvoorbeeld eerst handmatig een aantal verkleinde beelden samen moeten voegen, om de maximumwaarde te bepalen. Dit kost tijd en is in principe niet nodig, omdat juist door de verkleining van de beelden de berekening van de computer binnen de perken blijft. Ik heb er dan ook voor gekozen geen maximale waarde te gebruiken, maar de computer alle pixels te laten berekenen. Doordat de beelden maximaal zijn verkleind, levert dit nauwelijks performanceproblemen op, en worden wel alle mogelijkheden vergeleken. Dit is een veiligere optie en voorkomt dat de onderzoeker een maximale waarde definieert, waaraan geen enkele transformatie voldoet, met het gevolg dat de computer concludeert dat er geen registratie mogelijk is. Voor het bepalen van de positie van een beeld in het mozaïek, moet de onderzoeker de namen van de beeldbestanden aanpassen. Het algoritme bepaalt namelijk aan de hand van de naamgeving op welke plaats een beeld zich bevindt in het totale mozaïek. Het programma stelt daarom een aantal eisen aan de naam Zie bijvoorbeeld A. Alexandrov, 'Corner detection overview and comparison' www.cisnav.com/~alex/cs558/CornerDet.pdf (Internet 2002) (16-12-2002) en E. Sojka, 'A new algorithm for detecting corners in digital images' www.cs.vsb.cz/tech_reports/tr2002-02.pdf (Internet 2002) (16-12-2002) 201
83
van de bestanden. Aangezien de beeldbestanden eerst zijn bewerkt met het programma vipscrop, neemt vipsmosaic aan dat de beelden in het standaard VIPS formaat worden aangeleverd. Dit zijn bestanden met de extensie .v. Wanneer dit niet het geval is, kan de gebruiker aan het programma een masker meegeven als commandline optie. Aan de hand van het masker scant vipsmosaic alle bestanden in de huidige directory. De bestanden die aan het masker voldoen, worden in een matrix gezet. Waar het bestand in de matrix terecht komt, hangt af van een opeenvolgende reeks tekens aan het begin van de bestandsnaam. De naam moet beginnen met een nummer, dat aangeeft wat de x-coördinaat is van het betreffende beeld. Vervolgens moet er een 'x' komen. Na dit karakter volgt er weer een nummer. Dit geeft aan wat de y-coördinaat is. Erachter moet een '.' volgen. Daarna vormt een willekeurige reeks tekens de naam van het bestand. Vipsmosaic neemt hier verder geen notie van, dus de inhoud kan van alles zijn. De extensie van het bestand moet een voor vips herkenbaar formaat zijn, dus . v, .tif(f) en .jpeg.
a
b
Figuur 23: wanneer in eerste instantie over de kortste zijde wordt samengevoegd, dus horizontaal, zal in tweede instantie over de langste zijde worden gecombineerd. Pijl b geeft de zijde aan. Als in eerste instantie verticaal en dan horizontaal wordt gewerkt, geeft pijl a de langste zijde aan. Deze is korter dan pijl b. Dat betekent dat de foutmarge kleiner is.
De matrix dient als uitgangspunt voor het maken van het beeldmozaïek. De gebruiker kan optioneel aangeven of de beelden horizontaal dan wel verticaal moeten worden gecombineerd. Dit is belangrijk, want in principe moet de zijde waarover de beelden worden samengevoegd zo kort mogelijk zijn. Zoals beschreven in hoofdstuk drie, maakt VIPS op deze manier de minste fouten. Dit betekent niet dat altijd voor de kortste zijde moet worden gekozen. Het gaat erom dat het complete mozaïek uiteindelijk over de kortste lengte is samengevoegd. Over een lange zijde bestaat er een grotere kans fouten te maken. In de praktische situatie dat er een mozaïek van twee bij twee beelden in landschapsformaat wordt samengevoegd, kan het beste eerst verticaal worden samengevoegd en vervolgens pas horizontaal. In eerste instantie wordt er dus over de langste zijde samengevoegd en daarna over de kortste zijde. Was er eerst horizontaal samengevoegd en vervolgens verticaal dan was in tweede instantie over de langste zijde samengevoegd. Figuur 23 illustreert dit principe. 84
Vipsmosaic loopt over de matrix van beeldbestanden heen en voegt paren beelden samen. Via een commandline parameter kan de gebruiker aangeven of het programma horizontale of verticale paren moet combineren. Als hij aangeeft dat de beelden in landschapsformaat zijn, dan voegt vipsmosaic de beelden verticaal samen. Wanneer hij aanduidt dat het portretformaat is, voegt het programma ze horizontaal samen. Als de gebruiker niets aangeeft, kijkt het programma zelf wat het formaat van de beelden is. De samengevoegde paren schrijft het programma weg naar de harde schijf met een bepaalde naam, die voldoet aan de eisen die het programma stelt aan de naamgeving. Als het programma klaar is, staan er op de harde schijf van de computer dus een aantal beelden, die weer een mozaïek vormen. De gebruiker kan vipsmosaic vervolgens opnieuw starten met de gewenste parameters, en het programma zal vervolgens dezelfde procedure uitvoeren met de nieuwe beelden. Deze stap kan de gebruiker herhalen, totdat er nog maar één beeld over is. Dit is dan het totale mozaïek. Vipsmosaic voert het samenvoegen van de mozaïeken niet in één keer uit. Daarvoor zijn twee redenen te geven. In de eerste plaats genereert het programma tijdens het samenvoegen van de beelden veel threads. Een programma kan voor bepaalde taken een subproces aanmaken. Dit wordt een thread genoemd. Het besturingssysteem Linux stelt een maximum aan het aantal threads dat één programma mag genereren. Wanneer een mozaïek met een groot aantal beelden in één keer wordt samengevoegd, bereikt vipsmosaic dit maximum en zal Linux het programma afbreken. Het aantal threads dat Linux een programma toestaat aan te maken, kan worden veranderd door de kernel, het hart van het besturingssysteem, te compileren met aangepaste parameters, maar het lijkt mij niet zinvol om dit op elke computer waarop het programma moet draaien te doen. In de tweede plaats is het van belang dat de onderzoeker fouten die het programma kan maken gelijk corrigeert. Gebeurt dit niet, dan kan het uiteindelijke mozaïek rare gebreken vertonen. Elke keer dat het programma beeldparen samenvoegt, moet de onderzoeker even controleren of het resultaat naar wens is. Is dit niet het geval, dan moet hij, voordat hij het programma weer start, de fout corrigeren, door de beelden handmatig samen te voegen en het foute beeld te vervangen door zijn resultaat. Vipsmosaic duidt tenslotte niet aan, dat het niet in staat is een paar beelden samen te voegen. Het programma vindt altijd de laagste correlatiecoëfficiënt. Mocht een onderzoeker zijn geluk willen beproeven, dan kan hij via het script vipsall.sh toch proberen het proces in één keer te doen. Dit script voert alle stappen die nodig zijn om het mozaïek te genereren in één keer uit, inclusief het verwijderen van de zwarte randen. Het samenvoegen van één paar beelden vormt de kern van vipsmosaic. Door een verticaal paar 270 graden te draaien, is het mogelijk van hetzelfde algoritme gebruik te maken. Het roteren van beelden over een veelvoud van negentig graden verandert de waarden van de pixels niet, dus dit is een legitieme manier van werken. In alle gevallen voegt vipsmosaic de beelden dus horizontaal samen. 85
Uit het linkerbeeld neemt het programma een template. De gebruiker kan via een commandline optie aangeven hoe groot de overlap is. Uit dat deel haalt het programma een template die een half keer zo hoog is als het beeld zelf en die iets smaller is dan de overlap. Via een commandline optie kan de gebruiker eveneens aangeven hoe hoog de template moet zijn. In deze template zoekt vipsmosaic naar een contrastrijk punt. Het programma maakt hierbij gebruik van een simpel algoritme dat voor een vierkant van tien bij tien pixels per pixel het verschil uitrekent met zijn rechter- en onderbuur. Het punt met het grootste totaal is contrastrijk. Figuur 24 laat zien hoe deze template van links naar rechts en van boven naar beneden over het overlappende deel van het rechterbeeld schuift. Voor elke positie berekent vipsmosaic de correlatiecoëfficiënt. Het punt met de kleinste correlatiecoëfficiënt geeft de beste plaatsing van de template aan. Vipsmosaic heeft nu twee corresponderende punten en deze geeft hij mee aan de functie im_lrmosaic uit de VIPS bibliotheek. Deze functie handelt de procedure verder af zoals beschreven in hoofdstuk drie en retourneert uiteindelijk het samengevoegde beeld. d a
c
b
c
Figuur 24: de manier van vipsmosaic om te zoeken in de default modus. Het programma neemt aan dat de overlap een derde van het rechterbeeld a is. De template c is iets smaller en de helft van het beeld hoog. Vipsmosaic beweegt vervolgens de template over het linkerbeeld b en berekent op elk punt de correlatiecoëfficiënt. Het punt met de laagste uitkomst is de beste registratie. De verschuiving over de y-as kan dus niet groter zijn dan afstand d, een kwart van de totale hoogte van het beeld.
De manier van implementeren van het algoritme in vipsmosaic impliceert, dat de overlap aan een aantal voorwaarden moet voldoen. Figuur 24 laat zien dat in de standaard modus het programma aanneemt dat de overlap een derde van het totale beeld beslaat. De breedte van de template is een fractie kleiner dan een derde van het beeld. De hoogte van de template is een half keer zo groot als de totale hoogte van het beeld. Met deze template zoekt vipsmosaic in de linkerhelft van het rechterbeeld naar de beste correlatie. In deze standaard modus kan de overlap dus op de x-as niet groter zijn dan de helft van beide beelden. Op de y-as kan de overlap niet meer afwijken dan een kwart van de totale hoogte. De gebruiker kan dit gedrag beïnvloeden met commandline opties, maar over de y-as kan in theorie de afwijking van de overlap niet meer zijn dan de helft van de totale hoogte, omdat vipsmosaic in dat geval geen template kan definiëren. Vipsmosaic geeft de gebruiker controle over de lichtheid van het resultaat. Hij kan via een commandlineparameter aangeven hoe het programma de lichtheid van de beelden ten opzichte van elkaar aanpast. Hiervoor heeft hij vier opties: 86
vipsmosaic past de lichtheid niet aan, past alleen het linkerbeeld aan, past alleen het rechterbeeld aan of past beide beelden aan. In de standaard modus past het beide beelden aan. Vipsmosaic zoekt dan naar de gemiddelde lichtheid en stemt de lichtheid van beide beelden op deze waarde af. Dit levert over het algemeen de mooiste resultaten op. De onderzoeker moet er echter goed op letten dat deze aanpassing niet teveel invloed heeft op de beeldstructuur. Als dit wel het geval is, moet hij een andere optie gebruiken. Achteraf kan de onderzoeker het mozaïek handmatig balanceren met behulp van de interface van VIPS. Figuur 25 illustreert echter dat het globaal balanceren van een mozaïek vaak een vergelijkbaar resultaat geeft als het aanpassen van de lichtheid tijdens het samenvoegen van twee beelden. Als alternatief heeft de gebruiker nog twee manieren om te balanceren. Hij kan ervoor kiezen alleen het rechter- of het linkerbeeld aan te passen. Dit kan handig zijn in het geval dat de beelden bijvoorbeeld boven lichter zijn dan onder. Door alleen het linkerdeel aan te passen aan het rechter, kan de onderzoeker dit compenseren.
a
b
c
d
e
Figuur 25: de resultaten met verschillende manieren van balanceren. Beeld a geeft het resultaat weer zonder balanceren. B is het resultaat van globaal balanceren. C is het resultaat met direct balanceren via vipsmosaic. Van beide beelden past het programma de lichtheid aan. D en e zijn respectievelijk het resultaat van direct alleen links en rechts balanceren. In a blijven de individuele karakteristieken van de afzonderlijke beelden behouden en is dus het meest authentiek. Figuur b en c lijken in grote mate op elkaar. D is te donker, omdat de beelden bovenin lichter zijn dan onderin en juist het bovenste beeld is aangepast aan het onderste. E is het mooiste resultaat, alleen is de bovenzijde erg licht geworden. In dit geval is dat niet heel erg, want er is geen vitale beeldinformatie verdwenen, maar de onderzoeker moet er voor waken dat dit niet gebeurt.
5.3.6 Wanneer kan vipsmosaic de fout ingaan Evenals bij het programma vipscrop geldt dat de computer niet in alle gevallen het juiste antwoord geeft op de vraag van de onderzoeker. De huidige versie van het programma doet het in de helft van de gevallen juist. Dit is geen hoog rendement. Er zijn een aantal redenen hiervoor aan te wijzen. Over het algemeen is dit te wijten aan te weinig beeldstructuur in de overlap. Wanneer een overlap bijvoorbeeld geen herkenbare beeldstructuur bevat, kan het berekenen van de correlatiecoëfficiënt fout gaan. In een egaal vlak zal de berekening over het algemeen overeenkomstige waarden opleveren. De computer ziet de laagste waarde als de juiste, maar dit hoeft niet altijd het geval te zijn wanneer de verschillen tussen de berekeningen heel klein zijn. Ook als de overlap te klein is en vipsmosaic met een kleine template aan de slag moet, kan de berekening de mist ingaan. De template bevat in dat geval te weinig karakteristieke informatie. Omdat de overlap van de mij aangeleverde beelden bijna altijd tussen een derde tot de helft van het beeld ligt, zal dit niet veel problemen opleveren. Echter in veel gevallen is er wel beeldstructuur aanwezig, maar is deze te gering. Het is dus de 87
taak van de onderzoeker goed te controleren of het programma zijn werk correct heeft gedaan. De broncode van vipsmosaic is te vinden in bijlage A2. 5.4 Evaluatie In dit hoofdstuk zijn twee gereedschappen besproken die de VIPS bibliotheek uitbreiden en die het werk van de onderzoeker zouden moeten vergemakkelijken. Uit tests is gebleken dat het eerste deel succesvoller is verlopen dan het tweede. Het programma vipscrop heeft tot nu toe in alle gevallen de juiste resultaten opgeleverd. Het programma kan dus zonder meer worden gebruikt door het cluster kunstgeschiedenis. Het programma vipsmosaic heeft een minder schone staat van dienst. In veel gevallen registreert het de beelden op een verkeerde manier. De onderzoeker dient dus, wanneer hij het programma in gebruik neemt, goed de resultaten te vergelijken met de afzonderlijke beelden om te controleren of de registratie goed is verlopen. Is dit niet het geval, dan moet hij de beelden handmatig monteren. In de conclusie zal dit in de beschrijving van een nieuwe procedure terugkomen.
88
6 Conclusie Alhoewel de schetsen voor de schilder van ondergeschikt belang zijn, hecht de kunsthistoricus grote waarde aan het accuraat achterhalen van deze ondertekening. De grootste angst van de onderzoeker is conclusies te trekken uit een onderzoek dat verkeerde gegevens heeft opgeleverd. Wat betreft de ondertekening betekent dit, dat het hele proces, van het reflectograferen van het schilderij tot het maken van het uiteindelijke fotomozaïek, er in de eerste plaats op gericht is de juiste gegevens te produceren. Ver op de tweede plaats staat het produceren van oogstrelende beelden. Daar de beelden die de onderzoekers in het verleden hebben gemaakt en in de nabije toekomst zullen gaan maken, qua inhoud en vorm niet van elkaar verschillen, hoeft er slechts één herziene procedure te worden beschreven. Aangezien de inhoud van de bestaande procedure al bekend is, zal ik alleen de nieuwe elementen van de vernieuwde methode uitgebreid behandelen. Nadat de keuze voor VIPS was gemaakt, bleken er twee hiaten in het pakket te zitten. De programma's vipscrop en vipsmosaic moeten deze gaten vullen. De nadruk zal liggen op de aanpassingen die essentieel zijn voor een goede integratie van deze programma's in de vernieuwde methode. Waar nodig, zullen er opmerkingen worden gemaakt over specifieke zijwegen die moeten worden bewandeld voor beelden uit verleden of heden. Als laatste zal ik beoordelen in hoeverre beide programma's functioneren in de nieuwe methode. Vanaf het begin van het reflectograferen dient de onderzoeker rekening te houden met de aanpassingen in de procedure. Voor de bestaande beelden kan dit vanzelfsprekend niet meer gelden, maar de onderzoeker kan de resultaten van de programma's direct beïnvloeden door de apparatuur op een bepaalde wijze te bedienen. In de eerste plaats dient de onderzoeker ervoor te zorgen dat de overlap van de verschillende reflectogrammen zo constant mogelijk is. Vipsmosaic gaat er standaard vanuit dat de overlap tussen een half tot een derde van de hoogte en breedte van het reflectogram is. Wanneer de onderzoeker bij het reflectograferen deze maat aanhoudt, hoeft hij bij het monteren van het mozaïek niet te bepalen hoe groot de overlap is en hoeft hij dit ook niet door te geven aan het programma. Mocht een overlap in de standaard maat niet mogelijk zijn, dan is het zaak er toch voor te zorgen dat de overlap tussen de verschillende reflectogrammen gelijk is. In dat geval hoeft de onderzoeker alleen aan vipsmosaic te laten weten hoe groot de overlap is. Het programma doet dan de rest. Als er teveel verschil is in de overlap, dan kan het programma het mozaïek van beelden niet in één keer monteren en moet de onderzoeker tussentijds ingrijpen of de beelden zelfs handmatig monteren. In de praktijk betekent dit dat de apparatuur van het cluster kunstgeschiedenis, bestaande uit een rijdend statief met een camera die via handles bewogen kan worden, het beste aan de hand van een meetlint over de 89
vloer kan worden bewogen. Dit kan bijvoorbeeld op de plank, die een constante afstand tussen de vidicon en het schilderij garandeert, worden bevestigd. Een andere optie zou het aanbrengen van maatstrepen op de plank zijn. Op die manier kan het statief steeds over dezelfde afstand worden verplaatst. Voor het verticaal bewegen moet de onderzoeker elke keer een vaste rotatiehoek gebruiken. Deze werkwijze garandeert dat de overlap overal ongeveer even groot is. Bij het bepalen van de overlap moet de onderzoeker er ook rekening mee houden dat het programma vipscrop standaard een deel van het beeld verwijdert om de geometrische verstoringen aan de randen weg te halen. Dus wanneer hij reflectografeert met een overlap van één derde van het totale beeld, dan zal deze overlap, nadat het beeld is verwerkt met vipscrop, minder zijn. Het veiligste is daarom een overlap van een half beeld aan te houden. Het maakt dan niet uit hoeveel vipscrop van de randen verwijdert, de overlap zal dan altijd een half beeld bedragen. Mocht dit teveel werk opleveren, dan dient de overlap altijd iets groter dan een derde van het beeld gemaakt te worden. Hoe groter de overlap, hoe beter de resultaten van vipsmosaic. Vipsmosaic is geprogrammeerd met in het achterhoofd de gedachte dat de mozaïeken die het moet monteren altijd een rechthoek vormen. Dit betekent dat in elke rij (of in elke kolom) evenveel beelden zitten. Wanneer de onderzoeker, nadat hij een reflectogram van het hele schilderij heeft gemaakt, besluit dat een deel van het schilderij met een hogere resolutie moet worden gereflectografeerd, dient hij ervoor te zorgen dat hij een rechthoekig deel van het doek verwerkt. Wanneer bijvoorbeeld een interessant deel van het schilderij een cirkelvorm heeft, kan de onderzoeker het beste een vierkant om deze cirkel reflectograferen. Vipsmosaic werkt eveneens wanneer dit niet het geval is. Het programma gaat er weliswaar vanuit dat het te monteren mozaïek een rechthoekige vorm heeft, maar als er bij het monteren van één paar beelden van het mozaïek een beeld mist, dan breekt hij de montage van dat paar af en gaat verder met het volgende paar. Voor de beste resultaten is het echter raadzaam een volledige rechthoek van reflectogrammen te hebben. Voor een juiste registratie van de reflectogrammen door vipsmosaic is het van belang dat de beelden egaal zijn. Dat wil zeggen dat de intensiteit van de pixels overal in het beeld gelijk is. Hiervoor moet de onderzoeker verstoringen in de belichting corrigeren door bijvoorbeeld om het half uur (of het hele uur) een wit vel papier te verwerken. Deze kan dan later gebruikt worden om de onevenwichtige belichting te corrigeren. Als de onderzoeker deze handeling niet uitvoert, dan is de kans groot dat vipsmosaic verkeerde resultaten genereert. Het kruiscorrelatiealgoritme dat vipsmosaic gebruikt, gaat er vanuit dat de intensiteit van de pixels relatief gelijk is. Het is dus niet zo erg dat het ene beeld iets donkerder is dan het andere, zolang er maar geen belichtingsverschillen zijn in één beeld. Voor vipscrop is het van belang dat er in de scans van de reflectogrammen een duidelijk onderscheid kan worden gemaakt tussen de achtergrond en het 90
televisiebeeld. Tijdens het scannen moet de onderzoeker er voor zorgen dat aan alle randen de achtergrond zichtbaar is. In het materiaal dat mij als referentie is geleverd is dit niet het geval. Daar ligt het televisiebeeld direct aan de bovenste rand van het beeld. De onderzoeker moet tijdens het scannen het televisiebeeld in het midden van de scan plaatsen. Als aan alle zijden van het beeld de zwarte achtergrond zichtbaar is, dan zijn de resultaten van vipscrop altijd juist. Het programma kan echter ook beelden aan waarbij dit niet het geval is. De bestaande scans kunnen dus ook door vipscrop worden verwerkt. Het programma neemt namelijk het gemiddelde van de pixels in de hoeken als uitgangspunt voor zijn zoektocht naar de rand van het televisiebeeld. Het is dus altijd van belang dat in de hoeken van de scan de achtergrond zichtbaar is. Als dat niet het geval is, dan genereert vipscrop in veel gevallen verkeerde resultaten. De benaming van de bestanden moet ook worden herzien. Vipsmosaic bepaalt namelijk aan de hand van de bestandsnaam de plaats van het beeld in het mozaïek. Dat gebeurt aan de hand van het eerste paar karakters van de naam. Deze begint met een cijfer dat aangeeft welk x-coördinaat het beeld heeft. Dan volgt er een 'x'. Het volgende cijfer geeft aan wat de y-coördinaat van het beeld is. Het afsluitende karakter is een '.'. Na deze punt kan de onderzoeker zijn eigen naamgeving aanhouden. De onderzoeker kan de benaming tegelijk met het scannen aanpassen. Dat betekent dat hij gelijk bepaalt op welk coördinaat het beeld zich bevindt. Een alternatief is, dat hij na het scannen alle bestanden gaat hernoemen. Zoals is gebleken uit de voorgaande hoofdstukken zijn vipscrop en vipsmosaic niet onfeilbaar. Alhoewel vipscrop met al het testmateriaal niet één keer de fout is ingegaan, zijn er natuurlijk altijd uitzonderingen waarbij het wel fout gaat. Het blijft dan ook aan de onderzoeker na elke stap nauwkeurig te controleren of de resultaten juist zijn. Vooral na bewerkingen van het programma vipsmosaic is dit noodzakelijk, want zoals in het vorige hoofdstuk is gebleken, maakt dit programma, door de vele voorwaarden waaraan de beelden moeten voldoen, fouten. Wanneer tijdens het monteren blijkt dat het programma teveel fouten maakt, kan de onderzoeker overwegen om de registratie met de hand te doen via IP of NIP, omdat dit misschien toch de snelste methode is voor het monteren van een mozaïek. De foutmarge van vipscrop is dus nihil. Rest de vraag hoe groot de foutmarge van vipsmosaic is. Vipsmosaic presteerde heel wat minder met het testmateriaal. Hiermee geeft het voor minder dan de helft correcte resultaten. In minder dan de helft van de gevallen leverde vipsmosaic de juiste resultaten op, met het gevolg dat er veel handmatig gecorrigeerd moest worden. De oorzaak van dit falen ligt enerzijds bij de kwaliteit van het testmateriaal. Deze reflectogrammen zijn bijvoorbeeld niet gecorrigeerd voor onevenwichtige belichting en, zoals hierboven vermeld, beïnvloedt dit de beeldregistratie. Anderzijds kan er nog veel verbeterd worden aan het huidige registratiealgoritme. Misschien is kruiscorrelatie niet het 91
beste algoritme voor het zoeken naar de translatie van twee infraroodreflectogrammen. Een alternatief zou bijvoorbeeld kunnen zijn een algoritme dat op zoek gaat naar herkenbare punten, zoals hoeken, lijnen die elkaar kruisen en lijneinden. Wanneer deze in kaart zijn gebracht, kan in het andere beeld naar vergelijkbare structuren worden gezocht. Op deze manier wordt de invloed van de onevenwichtige belichting kleiner. Dit zou met de beelden van het cluster kunstgeschiedenis wellicht betere resultaten opleveren. Ondanks het feit dat er nog een aantal verbeteringen mogelijk zijn aan de procedure denk ik dat de nieuwe methode met als speerpunt de programma's vipscrop en vipsmosaic meer is gestroomlijnd en meer uniformiteit garandeert dan de oude procedure. Daarnaast hoeven de onderzoekers van het cluster kunstgeschiedenis minder handelingen te verrichten, zodat de nieuwe methode de weg naar het gemonteerde mozaïek heeft verkort.
92
7 Literatuurlijst 'About us', http://www.panavue.com/about_us/index.html (Internet 1998) (1207-2001). Aderhold H.C. en W.S. Taft, 'Neutron-Induced Autoradiography used in the Investigation of Modern Pigments in Paintings of Known Composition', http://www.osp.cornell.edu/vpr/ward/niar.html (Internet 2000) (09-05-2001). Aldrovandi, A. e.a., 'Multispectral image processing of paintings', Studies in conservation 33 (1988) 154-159. Alexandrov, A., 'Corner detection overview and comparison' www.cisnav.com/~alex/cs558/CornerDet.pdf (Internet 2002) (16-12-2002). Asperen de Boer, J.R.J. van, 'Infrared reflectography: a method for the examination of paintings', Applied optics 7 (1968) 1711-1714. Asperen de Boer, J.R.J. van, 'Infrared reflectograms of panel paintings', Studies in conservation 11 (1966) 45-46. Asperen de Boer, J.R.J. van, 'Reflectography of paintings using an Infra-red Vidicon Television System', Studies in conservation 14 (1969) 96-118. Asperen de Boer, J.R.J. van, Infrared reflectography. A contribution to the examination of earlier european paintings (Amsterdam 1970). Asperen de Boer, J.R.J. van, 'De ondertekening bij Pieter Saenredam: twee voorbeelden', Bulletin Rijksmuseum 19 (1971) 25-31. Asperen de Boer, J.R.J. van, 'Oppervlakteonderzoek van schilderijen', Chemisch weekblad 67 (1971) K12-K14. Asperen de Boer, J.R.J. van, 'Infraroodreflectografie van schilderijen', Spiegel historiael 7 (1972) 416-421. Asperen de Boer, J.R.J. van, Recent developments in infrared reflectography of paintings and its applications in art history (Amsterdam 1972). Asperen de Boer, J.R.J. van, 'A note on the use of an improved infrared vidicon for reflectography of paintings', Studies in conservation 19 (1974) 97-99.
93
Asperen de Boer, J.R.J. van, 'Examination by infrared radiation', PACT 13 (1986) 109-130. Asperen de Boer, J.R.J. van, 'Infrared reflectography : theory and practice' in: H. Verougstraete-Marcq en R. van Schoute ed., Le dessin sous-jacent dans la peinture. Colloque VI 12-14 septembre 1985. Infrarouge et autres techniques d'examen (Louvain-la-Neuve 1987) 107-112. Bertani, D. e.a., 'A scanning device for infrared reflectography', Studies in conservation 35 (1990) 113-116. Billinge, R. e.a., 'A note on an improved procedure for the rapid assembly of infrared reflectogram mosaics', Studies in conservation 38 (1993) 92-98. Billinge, R., 'Further advances in the computer assisted assembly of infrared reflectogram mosaics', in: H. Verougstraete en R. van Schoute ed., Le dessinsous-jacent dans la peinture. Colloque X 4-7 septembre 1993. Le dessin sous-jacent dans le processus de creation (Louvain-la-Neuve 1995) 77-80. Burmester, A., en F. Bayerer, 'Towards improved infrared reflectograms', Studies in conservation 38 (1993) 145-154. 'Classical feature detection', www.citr.auckland.ac.nz/teaching/papers/775/Lectures/Materials/EdgeDetection.p df (Internet z.j.) (12-09-2001). Coddington, J.L., 'The use of infra-red vidicon and image digitizing software in examining 20th-Century works of art', in: Postprints of the Paintings Specialty Group (Albuquerque 1991). Cupitt, J., R. Billinge and D. Saunders, 'IP users' guide for VIPS 7.6', http://www.vips.ecs.soton.ac.uk/docs/ipguide/ipguide.html (Internet 1999) (0307-2001). Cuppit, J. en K. Martinez, 'Application programmers' guide for VIPS 7.6', http://www.vips.ecs.soton.ac.uk/docs/appguide/appguide.html (Internet 1999) (03-07-2001). Cuppit, J. en K. Martinez, 'Reference guide for VIPS 7.6', http://www.vips.ecs.soton.ac.uk/docs/refguide/refguide.html (Internet 1999) (0307-2001).
94
Cupitt, J. en K. Martinez, 'VIPS: an image processing system for large images', in Very high resolution and quality imaging, Proc. SPIE 2663 (1996) 19-28. Cupitt, J., D. Saunders en K. Martinez, 'Digital imaging in European museums', in Very high resolution and quality imaging II, Proc. SPIE 3025 (1997) 144-151. 'Digital image processing I', http://dynamo.ecn.purdue.edu/~bouman/ee637/notes/pdf/Topology.pdf (Internet 2001) (12-09-2001). Faries, M., Studying underdrawings: notes for the cologne workshop (Bloomington 1991). Gonzalez, R.C. en R.E. Woods, Digital image processing (New York 1992). Gottesfeld Brown, L., ‘A survey of image registration techniques’, ACM computing surveys 24 (1992) 325-276. Heiber, W., 'The use of an infra-red image-converter for the examination of panel paintings', Studies in conservation 13 (1968) 145-149. Heipke, C., ‘Overview of image matching techniques’, http://dgrwww.epfl.ch/PHOT/workshop/wks96/art_3_1.html (Internet 1996) (1209-2001). Jähne, B., Digital image processing. Concepts, algorithms, and scientific applications (Berlijn enz. 1995). Jennings, J., 'Infrared visibility of underdrawing techniques and media', in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sous-jacent dans la peinture. Colloque IX 12-14 septembre 1991. Dessin sous-jacent et pratiques dátelier (Louvain-la-Neuve 1993) 241-252. Mairinger, F., 'Program CECAST', in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sous-jacent dans la peinture. Colloque IX 12-14 septembre 1991. Dessin sous-jacent et pratiques dátelier (Louvain-la-Neuve 1993) 253-266. Maitre H., F.J.M. Schmitt en J.P. Crettez, 'High quality imaging in museum: from theory to practice', in Very high resolution and quality imaging II, Proc. SPIE 3025 (1997) 30-39. Marion, A., An introduction to image processing (Londen enz. 1991).
95
Matteini, M., A. Moles en P. Tiano, 'Infrared colour film as an auxiliary tool for the investigation of paintings' in: ICOM Committee for conservation 5th triennial meeting (Zagreb 1978) 1-9. McCann, J.J., 'High-resolution color photographic reproductions', in Very high resolution and quality imaging II, Proc. SPIE 3025 (1997) 53-59. Metzger, C. e.a., 'A platinum silicide camera applied in the studie of underdrawings', in: H. Verougstraete en R. van Schoute ed., Le dessin sousjacent dans la peinture. Colloque X 4-7 septembre 1993. Le dessin sous-jacent dans le processus de creation (Louvain-la-Neuve 1995) 195-200. Padfield, J., ‘VIPS/ip beginners’ guide. From beginning to end: a beginners' guide to using VIPS/ip 7.6.5 running on SuSE 7.1’, http://www.vips.ecs.soton.ac.uk/docs/appguide/ipdummies.html (Internet 2001) (03-07-2001). PanaVue ImageAssembler Help. Panavue Inc. (2001, Helpbestand bij ImageAssembler). Peyredieu du Charlat, P., 'Assemblage de mosaïques infrarouges en restauration de peintures. Application utilisant les logiciels IPLab Spectrum et Hypercard' in: R. van Schoute en H. Verougstraete ed., Le dessin sous-jacent et la technologie dans la peinture. Colloque XI 14-16 septembre 1995. Dessin sous-jacent et technologie de la peinture. Perspectives (Louvain-la-Neuve 1997) 231-237. Pezatti, L., 'High resolution infrared reflectography', http://www.ino.it/~luca/rifle/ (Internet z.j.) (09-05-2001). 'Products', http://www.panavue.com/products/index.html (Internet 2000) (12-072001) Rigg, J., 'Visual Stitcher 1.05a', http://www.panoguide.com/software/reviews/visualstitcher_v105a.html (Internet 1999) (12-07-2001). Russ, J.C., The image processing handbook (Boca Raton 1999). Russo, T.M., 'Infrared reflectography and computer image processing : new alternatives' in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sousjacent dans la peinture. Colloque IX 12-14 septembre 1991. Dessin sous-jacent et pratiques dátelier (Louvain-la-Neuve 1993) 267-273.
96
Saunders, D., 'Colour change measurement by digital image processing', National gallery technical bulletin 12 (1988) 66-77. Saunders, D., 'Image processing at the National Gallery: the VASARI project', National gallery technical bulletin 14 (1993) 72-85. Saunders, D. en J. Cuppit, 'Elucidating reflectograms by superimposing infra-red and colour images', National Gallery technical bulletin 16 (1995) 61-65. Sayre, E.V. en H.N. Lechtman, 'Neutron activation autoradiography of oil paintings', Studies in conservation 13 (1968) 161-185. Scientific examination of early Netherlandish painting. Applications in art history (Bussum 1976). Sojka, E., 'A new algorithm for detecting corners in digital images' www.cs.vsb.cz/tech_reports/tr-2002-02.pdf (Internet 2002) (16-12-2002) Teuber, J., Digital image processing (Kopenhagen 1989). Toth, C. en A. Krupnik, ‘Experiences with automatic image patch matching’, http://spatialodyssey.ursus.maine.edu/gisweb/spatdb/acsm/ac94073.html (Internet 1994) (12-09-2001). VIPS manual pages, The National Gallery en Birkbeck College (1991, Manpages van VIPS). Wallert, A., 'Elemental imaging of miniatures by energy dispersive X-ray fluorescence : a possible tool for the examination of underdrawings?' in: H. Verougstraete en R. van Schoute ed., Le dessin sous-jacent dans la peinture. Colloque X 4-7 septembre 1993. Le dessin sous-jacent dans le processus de creation (Louvain-la-Neuve 1995) 187-193. Walmsley, E., C. Fletcher en J. Delany , 'Evaluation of system performance of near-infrared imaging devices', Studies in conservation 37 (1992) 120-131. Walmsley, E. e.a., 'Improved visualization of underdrawings with solid-state detectors operating in the infrared', Studies in conservation 39 (1994) 217-231. Wecksung, G. e.a., 'Assembly of infra-red reflectograms by digital image processing using a portable data collecting system' in: ICOM Committee for Conservation 8th Triennial Meeting (Sydney 1987) 107-108.
97
Wecksung, G. e.a., 'Infrared reflectogram assembly by digital image processing' in: R. van Schoute en H. Verougstraete-Marcq ed., Le dessin sous-jacent dans la peinture. Colloque VII 17-19 septembre 1987. Géographie et chronologie du dessin sous-jacent (Louvain-la-Neuve 1989) 131-136. Weiner, C., 'Improved Acquisition of Underdrawings in Oil-Paintings Using IRReflectography', http://www.cis.rit.edu/~cbw3014/thesis/ (Internet 1998) (0205-2001).
98
Bijlagen
A1 Source vipscrop // // // // // //
vipscrop: removing black borders and distortion around a scanned image uses the vips-7.6.5 libraries jan 2002: version 1.0 finished jan 2003: modified to compile against vips-7.8.6 libraries
#include #include #include #include #include #include #include #include
<stdlib.h> <math.h> <sys/types.h>
#include #define #define #define #define
BANDWIDTH 50 NUMOFLINES 128 NUMOFPELS 60 VERSION "1.0.1"
int usage(char const *pname) { cerr << pname << " version " << VERSION << endl << "Usage: " << pname << " [options] [filemask]\n" << " Crops vips, tiff or jpeg images and saves them in vips format.\n" "Where:\n" << " options = four optional arguments that determine the way the\n" " program crops the images. -b999 sets the width of the band\n" " in percents of width or height over which the average is\n" " calculated. This band is used for detecting the border of\n" " the reflectogram from each side of the image. A number\n" " above 100 will be interpreted as 100. " << BANDWIDTH << " percent is\n" << " default. -l999 is the number of lines that will be\n" " calculated from each side. Default is " << NUMOFLINES << ". -s999 represents\n" << " the amount of pixels that is removed from each side after\n" " the black border is deleted. Default is " << NUMOFPELS << ". When the -c\n" << " option is found, the input will only be converted to vips\n" " format. No edge processing will be done. -h displays this\n" " helptext.\n" << " filemask = mask ending with .v .tif(f) .jpeg. Wildcards are\n" " allowed. On some systems quotationmarks must be placed\n" " around the mask. When a mask is omitted *.tif is asumed.\n" << "Example: " << pname << " -b40 -s32 '10*.tif'\n" << " Searches 40 percent of each side for the border of the\n" " reflectogram. After removing the black border 32 more\n" " pixels will be removed from each side. Only tifimages\n" " starting with '10' will be processed.\n" << "Version: " << VERSION << endl; exit(1); }
<< << << << << <<
<<
<<
<< << << <<
<< << <<
void processFile(char const *fname, int bwidth, int maxlines, int npels, bool convertOnly) { VImage in(fname); char ch; // Needed for stripping fname char *fbase, // Base of fname *ofile; // Filename for outputfile (always vipsformat)
int i, // Index width, // Width of inputfile height, // Heigth ... bandwidth, // Width of band for averaging bandheight, // Height of band for averaging x = 0, // X coordinate on inputfile for outputfile y = 0, // Y coordinate ... xx = 0, // X coordinate measured from right side yy = 0, // Y ... bottom side len; double cornerAvg, // Average of 3x3 from each corner prevAvg, thisAvg, nextAvg, // average for prev line, this line, next line diffNow, // Difference between average this and last band diffLast; // ... last and forelast band cout << "."; // Get the base of the filename. The extension is deleted but the '.' stays. fbase = strdup(fname); len = strlen(fbase); ch = fbase[len - 1]; while (ch != '.') { fbase[len - 1] = 0; len = strlen(fbase); ch = fbase[len - 1]; } // Set datafile (add "data") and vips outputfile (add "v") ofile = strdup(fbase); strcat(ofile, "v"); cout << "."; // When convert only (-c) then no edge detection if (!(convertOnly)) { // Set width and height of original image width = in.Xsize(); height = in.Ysize(); bandwidth = bwidth * (width / 100); bandheight = bwidth * (height / 100); /* First time: count average of 3x3 squares * Enter loop, first time calculate average * second line. Avg1 is average of corners, * of first line, Avg3 is average of second * from the side, change variables. */
in corners. for first and Avg2 is average line. When moving
/* Sometimes there is a distorion on the edge of the image. * To calculate the brightness of the virtual edge, the pixels * next to the edge are not taken into account, but the average * is taken ten pixels from the edge. */ try { cornerAvg cornerAvg cornerAvg cornerAvg cornerAvg }
= = = = =
in.extract_area(10, 10, 3, 3).avg(); cornerAvg + in.extract_area(width - 13, 10, 3, 3).avg(); cornerAvg + in.extract_area(width - 13, height - 13, 3, 3).avg(); cornerAvg + in.extract_area(10, height - 13, 3, 3).avg(); cornerAvg / 4;
catch (VError e) { e.perror(fname); } try { // processing left side prevAvg = cornerAvg; // virtual edge thisAvg = in.extract_area(0, (height - bandheight) / 2, 1, bandheight).avg(); diffNow = 0; // init gradient differences diffLast = 0; for (i = 1; i <= maxlines; i++) { nextAvg = in.extract_area(i, (height - bandheight) / 2, 1, bandheight).avg(); diffNow = nextAvg - prevAvg; // calculate gradient for this line, // absoluting not necessary for we // know the direction of the edge prevAvg = thisAvg; // init prev and this line for next round thisAvg = nextAvg; if (diffNow > diffLast) { // if gradient is greater, remember x x = i - 1; // i is at next line, edge must be this line, so -1 diffLast = diffNow; } } cout << "."; // processing right side prevAvg = cornerAvg; // virtual edge thisAvg = in.extract_area(width - 1, (height - bandheight) / 2, 1, bandheight).avg(); diffNow = 0; // init gradient differences diffLast = 0; for (i = 1; i <= maxlines; i++) { nextAvg = in.extract_area(width - i - 1, (height - bandheight) / 2, 1, bandheight).avg (); diffNow = nextAvg - prevAvg; prevAvg = thisAvg; thisAvg = nextAvg; if (diffNow > diffLast) { xx = width - (width - i); // xx must be this line, not next, so no -1 diffLast = diffNow; } } cout << "."; // processing top side prevAvg = cornerAvg; // virtual edge thisAvg = in.extract_area((width - bandwidth) / 2, 0, bandwidth, 1).avg(); diffNow = 0; // init gradient differences diffLast = 0; for (i = 1; i <= maxlines; i++) { nextAvg = in.extract_area((width - bandwidth) / 2, i, bandwidth, 1).avg(); diffNow = nextAvg - prevAvg; prevAvg = thisAvg; thisAvg = nextAvg; if (diffNow > diffLast) { y = i - 1; diffLast = diffNow; } } cout << "."; // processing bottom side prevAvg = cornerAvg; // virtual edge thisAvg = in.extract_area((width - bandwidth) / 2, height - 1, bandwidth, 1).avg(); diffNow = 0; // init gradient differences diffLast = 0; for (i = 1; i < maxlines; i++) { nextAvg = in.extract_area((width - bandwidth) / 2, height - i - 1, bandwidth, 1).avg(); diffNow = nextAvg - prevAvg; prevAvg = thisAvg; thisAvg = nextAvg; if (diffNow > diffLast) { yy = height - (height - i); diffLast = diffNow;
} } // write extracted area to outputfile in.extract_area(x + npels, y + npels, (width - x - xx + 1) - (2 * npels), (height - y - yy + 1) - (2 * npels)).write(ofile); cout << "."; } catch(VError e) { e.perror(fname); } } else in.write(ofile); free(fbase); free(ofile); } int main(int const argc, char const *argv[]) { if (argc > 5) usage(argv[0]); bool co = false; int iProcess, iOptions, bw = BANDWIDTH, sz = NUMOFPELS, nl = NUMOFLINES; glob_t flist; char *patt = {0}, *cbw = {0}, *csz = {0}, *cnl = {0}; // // // // // //
Two options can be given. -s999[%] gives the size of the image. If in percents then that size of the total image without black borders will be returned. Without percents a band with width number of pixels will be removed from each side. -b999 will give the width of the band the average will be calculated for. Always in percents. -c is an option to convert only to vipsformat. There will be no edgeprocessing.
for (iOptions = 1; iOptions < argc; iOptions++) { cout << argv[iOptions] << endl; if (argv[iOptions][0] == '-') { if (argv[iOptions][1] == 'b') cbw = strdup(strpbrk(argv[iOptions], "0123456789")); else if (argv[iOptions][1] == 'l') cnl = strdup(strpbrk(argv[iOptions], "0123456789")); else if (argv[iOptions][1] == 's') csz = strdup(strpbrk(argv[iOptions], "0123456789")); else if (argv[iOptions][1] == 'c') co = true; else if (argv[iOptions][1] == 'h') usage(argv[0]); else { cerr << "Wrong option. Only -b, -l, -s, -c or -h permitted\n"; usage(argv[0]); } } else { if ((!(fnmatch("*.jpeg", argv[iOptions], NULL))) || (!(fnmatch("*.tif", argv[iOptions], NULL))) || (!(fnmatch("*.tiff", argv[iOptions], NULL))) || (!(fnmatch("*.v", argv[iOptions], NULL))))
patt = strdup(argv[iOptions]); else { cerr << "Mask not OK. Mask must end with .v, .tif(f) or .jpeg\n" << "Your mask ended with " << strrchr(argv[iOptions], '.') << endl; usage(argv[0]); } } } // If no mask is given, mask will be *.tif if (!(patt)) { cout << "No mask found, mask will be *.tif.\n"; patt = "*.tif"; } // if not in convert only mode, process available options or set defaults if (!(co)) { if (!(cbw)) cout << "-b option not found, set to default (" << bw << " percent).\n"; else bw = atoi(cbw); if (bw > 100) bw = 100; if (!(csz)) cout << "-s option not found, set to default (" << sz << " pixels).\n"; else sz = atoi(csz); if (!(cnl)) cout << "-l option not found, set to default (" << nl << " lines).\n"; else nl = atoi(cnl); } else cout << "Convert only mode, no edge processing." << endl; glob(patt, NULL, NULL, &flist); // store filenames that match pattern in list // Process all matched files in list for (iProcess = 0; iProcess < flist.gl_pathc; iProcess++) { cout << "Processing file " << (iProcess + 1) << " of " << flist.gl_pathc << " (" << flist.gl_pathv[iProcess] << ")"; processFile(flist.gl_pathv[iProcess], bw, nl, sz, co); cout << " done.\n"; } globfree(&flist); // free memory used by list return(0); }
A2 Source vipsmosaic // vipsmosiac: mosiacs images in a grid // // 18 feb 2003: version 1.0 #include #include #include #include
<stdlib.h> <stdio.h>
#include #define VERSION "1.0" // default values for vipsmosaic. all can be changed with commandline options #define #define #define #define #define #define #define #define #define #define
XSIZE 10 YSIZE 10 HOVERLAP 3 // horizontal overlap (1/HOVELAP of image) VOVERLAP 2 // vertical overlap (1/VOVERLAP of image) SEARCHAREA 0 // number of pixels substracted from template SHRINKFACTOR 8 // factor for shrinking the image HALFCORRELATION 5 // indicator for vipsfunction lr_mosaic HALFAREA 14 // idem BALANCETYPE 0 // balancetype BLENDWIDTH 100 // blend over complete area is -1
// struct to hold a coordinate typedef struct { int x, y; } coordinate; // struct to hold an area typedef struct { int x, y, w, h; } area; // struct to hold imagematrix info typedef struct { int istartx, // first image along x axis istarty, // first image along y axis iwidth, // gridsize along x-axis iheight; // gridsize along y-axis char *fnames[YSIZE][XSIZE]; // two dimensional array (10x10) containing the filenames } imageGrid; // usage function int usage(char const *pname) { cerr << pname << " version " << VERSION << endl << "Usage: " << pname << " [options] [filemask]\n" << " Mosaics a grid of vips, tiff or jpeg images\n" << "Where:\n" << " options = nine possible options that determine how the\n" << " program mosaics the images. The options can be given in\n" <<
" any order.\n" << " b this sets the type of balancing that will be performed\n" << " when the program mosaics the images. 0 means no \n" << " balancing, 1 balance left or bottom image, 2 balance\n" << " right or top image and 3 balance both images. Default\n" << " is " << BALANCETYPE << ".\n" << " c tells the program in which round it is. In one round\n" << " the program only mosaics pairs of images. The user then\n" << " has to check if every pair went right and correct any\n" << " problems. Then he can start the program again, and has\n" << " this option to 2, to tell the program that it is in the\n" << " second round, etc.\n" << " h prints this help.\n" << " l tells program that images are in landscapeformat. This\n" << " has influence on how images are mosaiced. If in land-\n" << " scapeformat the program first mosaics top-bottom.\n" << " p tells the program that images are in portraitformat.\n" << " If in this format the images are first left-right\n" << " mosaiced.\n" << " s this sets the shrinkfactor. The images will be shrinked\n" << " first before the program applies templatecorrelation.\n" << " The searchimage will be 1/s size of original size. The\n" << " default is " << SHRINKFACTOR << ".\n" << " w sets the blendwidth. This is the width in actual pixels\n" << " that the program uses to blend two images. -1 means\n" << " blend over complete overlap. Default is " << BLENDWIDTH << ".\n" << " x this sets the width of the template image. It is 1/x\n" << " part of the imagewidth. Default is " << HOVERLAP << endl << " y this sets the height of the template image. It is 1/y\n" << " part of the imageheight. Default is " << VOVERLAP << endl << " filemask = mask ending with .v, .tif(f) .jpeg. Wildcards\n" << " are allowed. On some systems quotationmarks must be\n" << " placed around the mask to prevent the shell from\n" << " from interpreting the wildcards. Whem a mask is omitted\n" << " *.v is assumed.\n" << "Example: " << pname << " -x3 -y5 -b3 -s6 -w-1 -c2 '*.2.v'\n" << " The template will be 1/3 of imagewidth and 1/5 of\n" << " imageheight. Both images of a pair will be adjusted for\n" << " intensity. Before the correlation takes place the\n" << " are shrinked by a factor 6. Blending takes place over\n" << " complete witdh of the overlap. At last it's the second\n" << " time that the program starts. This is also visible in\n" << " the mask, it ends with .2.v.\n" << "Version: " << VERSION << endl; exit(1); } // fuction for filling the imagematrix information struct imageGrid fillGrid(char const *mask) { int ixi, iyi, ixavg = 0, iyavg = 0; glob_t flist; imageGrid igrid; // initialize structure igrid.istartx = 65536; igrid.istarty = 65536; igrid.iwidth = 0; igrid.iheight = 0; for (iyi = 0; iyi < YSIZE; iyi++) for (ixi = 0; ixi < XSIZE; ixi++) igrid.fnames[iyi][ixi] = NULL;
// get all files which are conform mask, put them in a list glob(mask, NULL, NULL, &flist); // loop over filelist and put images in right place in structure for (ixi = 0; ixi < flist.gl_pathc; ixi++) { int ix, itmp, ixcoor = 0, iycoor = 0; char *sloc, *stemp, sdelim[] = "x", *sxcoor = NULL, *sycoor = NULL; // // // //
get x and y placement of the file This must be in the form 999x999.filename.extension the x must be lowercase always a . between placement and filename
sloc = strdup(flist.gl_pathv[ixi]); stemp = strtok(sloc, sdelim); itmp = strspn(stemp, "0123456789"); // check if x coor is correct if ((itmp == 0) || (itmp != strlen(stemp))) { cout << "Wrong filetype (x coordinate inconsistent): "; cout << flist.gl_pathv[ixi]; cout << endl << "Probably forgotten the \'x\' after the x "; cout << "coordinate." << endl; exit(1); } sxcoor = strdup(stemp); sdelim[1] = '.'; sycoor = strtok(NULL, sdelim); itmp = strspn(sycoor, "0123456789"); // check if y coor is correct if ((itmp == 0) || (itmp != strlen(sycoor))) { cout << "Wrong filetype (y coordinate inconsistent): "; cout << flist.gl_pathv[ixi]; cout << endl << "Probably forgot the \'.\' after the y "; cout << "coordinate." << endl; exit(1); } ixcoor = atoi(sxcoor); iycoor = atoi(sycoor); // if place in matrix contains an image already, something's wrong if (igrid.fnames[iycoor][ixcoor]) { cout << "Found two images on same position in the grid, namely:\n"; cout << igrid.fnames[iycoor][ixcoor] << " and "; cout << flist.gl_pathv[ixi] << endl; cout << "I do not know which one to choose. Aborting program\n"; exit(1); } else igrid.fnames[iycoor][ixcoor] = strdup(flist.gl_pathv[ixi]); cout << igrid.fnames[iycoor][ixcoor] << endl; // set gridsize if (ixcoor > igrid.iwidth) igrid.iwidth = ixcoor; if (iycoor > igrid.iheight)
igrid.iheight = iycoor; if (ixcoor < igrid.istartx) igrid.istartx = ixcoor; if (iycoor < igrid.istarty) igrid.istarty = iycoor; free(sloc); free(sxcoor); } globfree(&flist); // free memory used by list // check if grid consists of more images, // otherwise there's nothing to mosaic if (((igrid.iwidth - igrid.istartx + 1) < 2) && ((igrid.iheight
- igrid.istarty + 1) < 2))
{ cout << "Gridsize: " << igrid.iwidth << "x" << igrid.iheight << endl; cout << "Grid consists of less then two images, "; cout << "nothing to mosiac.\n"; exit(1); }
return(igrid); } // fuction to get the orientation (landscape or portrait) of image bool getOrientation(char const *fname) { VImage in(fname); bool blands; if (in.Xsize() >= in.Ysize()) blands = true; else blands = false; return(blands); } // function to get the area for the template area searchPoint(VImage nin, double dow, double doh) { int iw = nin.Xsize(), ih = nin.Ysize(); area tarea; // template area on image tarea.w tarea.h tarea.x tarea.y
= = = =
(iw / (int)dow) - SEARCHAREA; (ih / (int)doh) - SEARCHAREA; nin.Xsize() - tarea.w - SEARCHAREA; nin.Ysize() - tarea.h - (tarea.h / 2) - SEARCHAREA;
// viout = nin.extract_area(ileft, itop, iareawidth, iareaheight); return(tarea); } // function for moving the template over the reference and find the best // match. returns coordinate of leftupper corner coordinate applyTemplate(VImage vitemp, VImage viref) { double ltotal = 0, // holds minimum outcome of SDDA algoritm itempavg = vitemp.avg(); // average of template int
ixpos, // indexes for forloops iypos, ixi, iyi, ilx = viref.Xsize() / 2 - vitemp.Xsize(), // area in which SDDA search ily = viref.Ysize() - vitemp.Ysize(); // is performed, this is the left // half of the reference. const int itlsize = vitemp.Xsize(), ith = vitemp.Xsize(), irlsize = viref.Xsize(); coordinate tbestcoor; // coordinate where SDDA outcome is the lowest cout << "Searcharea: " << ilx << "x" << ily << endl; // // // // // //
Loop for going through the lefthalf of the reference image and moving the template over it. The boundaries are formed by the left, upper edges and by the bottom and the middle of the image. The right edge of the template will not pass the middle of the image, the bottom side of the template will not pass the bottom of the reference.
tbestcoor.x = 0; tbestcoor.y = 0; for (iypos = 0; iypos < ily; iypos++) { for (ixpos = 0; ixpos < ilx; ixpos++) { double total, irefavg; unsigned char *templine, *refline, *tline, *rline; // Get average of the eare of the reference. // It's the same size as the template. refline = (unsigned char *) viref.data() + iypos * irlsize + ixpos; for (total = 0, iyi = 0; iyi < ith; iyi++) { rline = refline; for (ixi = 0; ixi < itlsize; ixi++) { total += rline[ixi]; } refline += irlsize; } irefavg = total / (itlsize * ith); templine = (unsigned char *) vitemp.data(); refline = (unsigned char *) viref.data() + iypos * irlsize + ixpos; for (total = 0, iyi = 0; iyi < ith; iyi++) { rline = refline; tline = templine; for (ixi = 0; ixi < itlsize; ixi++) { // cout << "Difference at " << iyi << "," << ixi << ": "; // cout << abs(rline[ixi] - tline[ixi]) << endl; total += abs(tline[ixi] - itempavg - rline[ixi] + irefavg); // ixi += 1; } refline += irlsize; templine += itlsize; } if ((iypos == 0) && (ixpos == 0)) // if first time of loop ltotal = total; // initialize last total // if at this position SSDA outcome is lower,
// this position is better if (total < ltotal) { tbestcoor.x = ixpos; tbestcoor.y = iypos; ltotal = total; } } } cout << "Best match at point: " << tbestcoor.x << "," << tbestcoor.y << " - " << ltotal << endl; return(tbestcoor); } /* Function removeBorder removes borders which occur when images are not * precisely overlapping. Where this is the case a black area occurs. This * could influence the rest of the mosaicing and must be deleted. In left * right mosaicing the black areas are formed in the top and bottom. * These borders cn only influence further mosaicing. The overlap is big * enough to remove them. */ VImage removeBorder(VImage in) { unsigned char *tmpline, *iline; int ixs = in.Xsize(), iys = in.Ysize(), it = 0, ib = 0; VImage inrot; // Look from top and bottom corners for black pixels. Remove border. // First do the top. iline = (unsigned char *) in.data(); while ((iline[0] == 0) || (iline[ixs - 1] == 0)) { it++; iline += ixs; } try { // Rotate image and search bottom of image (is now top) inrot = in.rot180(); } catch(VError e) { e.perror("Rotated image"); } // Now process the bottom iline = (unsigned char *) inrot.data(); while ((iline[0] == 0) || (iline[ixs - 1] == 0)) { ib++; iline += ixs; } try { inrot = in.extract_area(0, it, ixs, iys - it - ib); } catch(VError e) { e.perror("Extracted image"); } return(inrot); }
// general function for mosaicing. This function prepares the images for // the mosaicfunction, for example shrink and rotate if nessecary, etc. VImage mosaic(char const *lfname, char const *rfname, int blandsc, double dow, \ double doh, int ibt, int isf, int ibw) { VImage lin(lfname), rin(rfname), lout, rout, itemp, // template image viout, // output image vinoborder; // image with black borders removed coordinate bestcoor; // for storing the best match coordinate area temparea; char *outname; cout << "Try shrinking " << lfname << " and " << rfname << "\n"; try { cout << "Start shrinking by " << isf << ": " << lfname << endl; if (blandsc) { lout = lin.rot270().shrink(isf, isf); rout = rin.rot270().shrink(isf, isf); } else { lout = lin.shrink(isf, isf); rout = rin.shrink(isf, isf); } cout << "lin shrunk, next: " << rfname << endl; cout << "rin shrunk.\n"; } catch (VError e) { e.perror("Shrinking failed\n"); } lout.write("lefts.v"); rout.write("right.v"); cout << "Shrinking done. Start contrast search...\n"; temparea = searchPoint(lout, dow, doh); // get templatearea // extract template area out of left image itemp = lout.extract_area(temparea.x, temparea.y, temparea.w, temparea.h); itemp.write("template.v"); bestcoor = applyTemplate(itemp, rout); // search right image with template cout << "Coordinate found at " << bestcoor.x << "," << bestcoor.y << endl; // mosaic directy the big versions of the images try { if (blandsc) { viout = lin.rot270().lrmosaic( \ rin.rot270(), \ 0, \ temparea.x * isf, \ temparea.y * isf, \ bestcoor.x * isf, \ bestcoor.y * isf, \ HALFCORRELATION, \ HALFAREA, \
ibt, \ ibw); } else { viout = lin.lrmosaic( \ rin, \ 0, \ temparea.x * isf, \ temparea.y * isf, \ bestcoor.x * isf, \ bestcoor.y * isf, \ HALFCORRELATION, \ HALFAREA, \ ibt, \ ibw); } } catch (VError e) { e.perror(rfname); } viout.write("mosaic.v"); vinoborder = removeBorder(viout); vinoborder.write("noborder.v"); cout << "Mosaicing done...\n"; if (blandsc) return(vinoborder.rot90()); else return(vinoborder); } // functio for displaying the grid. only for checking purposes void displayGrid(imageGrid igrid) { int ixi, iyi; cout << "Gridstart: " << igrid.istartx << "," << igrid.istarty << endl; cout << "Gridsize: " << igrid.iwidth << "x" << igrid.iheight << endl; for (iyi = 0; iyi <= igrid.iwidth + 1; iyi++) for (ixi = 0; ixi <= igrid.iheight + 1; ixi++) { cout << "Image at " << ixi << "x" << iyi << ": "; cout << igrid.fnames[iyi][ixi] << endl; } } // main function int main(int argc, char const *argv[]) { // if to much parameters, show help if (argc > 10) usage(argv[0]); imageGrid IGrid; // struct holding imagegrid int iOptions, // index for looping options i1, // index for lopping through images i2, // also, both can be x or y istart1, // indexes for loops istart2, iend1,
iend2, counter, // counter for number of times user starts vipsmosaic in // same directory sf = 1, // shrinkfactor bw, // blendwidth bt; // blendtype char *sow = NULL, // overlap widthfactor *soh = NULL, // overlap heightfactor *sbt = NULL, // blendtype *sc = NULL, // counter for number of loops over directory *ssf = NULL, // shrinkfctor *sbw = NULL, // blendwidth *smask = NULL; // file mask int blandscape = -1; // boolean determens ladscape or portrait images double ow, oh;
// get the commandline options and parse them for (iOptions = 1; iOptions < argc; iOptions++) { cout << argv[iOptions] << endl; if (argv[iOptions][0] == '-') { if (argv[iOptions][1] == 'x') sow = strdup(strpbrk(argv[iOptions], "0123456789.")); else if (argv[iOptions][1] == 'y') soh = strdup(strpbrk(argv[iOptions], "0123456789.")); else if (argv[iOptions][1] == 'b') sbt = strdup(strpbrk(argv[iOptions], "0123")); else if (argv[iOptions][1] == 'c') sc = strdup(strpbrk(argv[iOptions], "0123456789")); else if (argv[iOptions][1] == 's') ssf = strdup(strpbrk(argv[iOptions], "0123456789")); else if (argv[iOptions][1] == 'w') sbw = strdup(strpbrk(argv[iOptions], "0123456789")); else if (argv[iOptions][1] == 'l') blandscape = 1; else if (argv[iOptions][1] == 'p') blandscape = 0; else if (argv[iOptions][1] == 'h') usage(argv[0]); else { cerr << "Wrong option. Only -b, -l, -s, -c, -x, -y, -w, -p or -h permitted\n"; usage(argv[0]); } } else { if ((!(fnmatch("*.jpeg", argv[iOptions], NULL))) || (!(fnmatch("*.tif", argv[iOptions], NULL))) || (!(fnmatch("*.tiff", argv[iOptions], NULL))) || (!(fnmatch("*.v", argv[iOptions], NULL)))) smask = strdup(argv[iOptions]); else { cerr << "Mask not OK. Mask must end with .v, .tif(f) or " << \ ".jpeg\n Your mask ended with " \ << strrchr(argv[iOptions], '.') << endl; usage(argv[0]); } } } cout << "Parsing commandline options done.\n"; // check whichparameters are usergiven, rest is set to default if (!(smask)) {
cout << "No mask found, mask will be *.v.\n"; smask = "*.v"; } if (!(sow)) { ow = HOVERLAP; cout << "-x option not found, set to default (1/" << HOVERLAP \ << " of image width)\n"; } else ow = atoi(sow); if (!(soh)) { oh = VOVERLAP; cout << "-y option not found, set to default (1/" << VOVERLAP \ << " of image height)\n"; } else oh = atoi(soh); if (!(sbt)) { bt = BALANCETYPE; cout << "-b option not found, set to default " << BALANCETYPE << "\n"; } else bt = atoi(sbt); if (!(sc)) counter = 1; else counter = atoi(sc); if (!(ssf)) { sf = SHRINKFACTOR; cout << "-s option not found, set to default " << << " of image size)\n"; } else sf = atoi(ssf); if (!(sbw)) { bw = BLENDWIDTH; cout << "-w option not found, set to default " << } else bw = atoi(sbw);
SHRINKFACTOR \
BLENDWIDTH << "\n";
if ((bt < 0) || (bt > 3)) { cout << "Wrong balancetype: " << bt << ". Balancetype can only be " \ << "0 (no balancing), 1 (adjust contrast of left image to match " \ << "the right, 2 (adjust contrast of right image to match the " \ << "left), 3 (adjust both images to a middle value)." << endl; exit(1); } // Fill the grid structure cout << "Setting options done.\n"; IGrid = fillGrid(smask); // display grid for information, null values can do no harm displayGrid(IGrid); // see if files are landscape or portait oriented if (blandscape == -1) blandscape = getOrientation(IGrid.fnames[1][1]); cout << "Landscape format: " << blandscape << endl;
/* If oreintation is landscape, some initialisation is different. * The imagematrix must be processed top/bottom instead of left right. * The forloops have to be adjusted to get this right. These vars * fullfill that purpose. */ if (blandscape) { iend1 = IGrid.iwidth; iend2 = IGrid.iheight; istart1 = IGrid.istartx; istart2 = IGrid.istarty; } else { iend1 = IGrid.iheight; iend2 = IGrid.iwidth; istart1 = IGrid.istarty; istart2 = IGrid.istartx; } // Loop through the grid mosaicing images bool bisEmpty = 0; // if one of images is empty, skip mosaicing for (i1 = istart1; i1 <= iend1; i1++) { for (i2 = istart2; i2 <= iend2; i2++) { cout << i1 << ", " << i2 << endl; VImage iresult; // if landscape process top/bottom if (blandscape) { cout << "Begin tb mosaicing " << IGrid.fnames[i2][i1] \ << " and " << IGrid.fnames[i2 + 1][i1] \ << " (" << i1 << "," << i2 << "-" << i1 << "," \ << (i2 + 1) << ")" << endl; // if both elements of imagematrix contain image, mosaic if (((IGrid.fnames[i2][i1])) && \ ((IGrid.fnames[i2 + 1][i1]))) { iresult = mosaic(IGrid.fnames[i2][i1], \ IGrid.fnames[i2 + 1][i1], blandscape, ow, oh, \ bt, sf, bw); } else { cout << "Sorry, one of the images is empty, skipping...\n"; bisEmpty = 1; } } // if portrait, process left/right else { cout << "Begin lr mosaicing " << IGrid.fnames[i1][i2] \ << " and " << IGrid.fnames[i1][i2 + 1] \ << " (" << i2 << "," << i1 << "-" << (i2 + 1) << "," \ << (i1) << ")" << endl; // if both elements contain image, mosaic if (((IGrid.fnames[i1][i2])) && \ ((IGrid.fnames[i1][i2 + 1]))) { iresult = mosaic(IGrid.fnames[i1][i2], \ IGrid.fnames[i1][i2 + 1], blandscape, ow, oh, \ bt, sf, bw); } else { cout << "Sorry, one of the images is empty, skipping...\n"; bisEmpty = 1; } } // if one of images was empty, no file needs to be written if (!(bisEmpty)) { char
*sxcoor, *sycoor; char outname[16]; cout << "Preparing name. i2 = " << i2 << ", i1 = " << i1 \ << "\n"; if (blandscape) sprintf(outname, "%dx%d.%d.v", (i1 / 2 + 1), (i2 / 2 + 1), \ counter); else sprintf(outname, "%dx%d.%d.v", (i2 / 2 + 1), (i1 / 2 + 1), \ counter); cout << outname << endl; cout << "Writing file...\n"; try { iresult.write(outname); } catch (VError e) { e.perror(outname); } cout << "File " << outname << " written.\nMosaicing " \ << "completed.\n"; } // restore emptydetector for next round bisEmpty = 0; // skip one row (or column) because two images are mosaiced i2++; } } return(0); }
A3 Manual vipscrop Vipscrop is a program that removes black borders from infraredreflectograms. At the University of Groningen reflectograms are made with a vidiconsystem. This system displays the reflectogram on a monitor, which is photographed with a camera. Then the images are scanned and the result has a (near) black border around it's reflectogram. At the border of the monitor, there is also geometric distortion. This has to be removed in order to get good mosaics. These two tasks will vipscrop perform. The user can give four arguments to vipscrop to control its inner working. -b followed by a number (integer) (example -b50): this option sets the width of the band over which the gradient is determined. From each side of the image a stretched Prewitt mask is calculated. The width of the mask can be set by the –b option. It is a percentage of the width or height of the image. Default is fifty percent. -c tells vipscrop to only convert the images to vips fileformat (with the extension . v). Vipscrop will not perform any edgeprocessing. -h shows a helptext about vipscrop. -l followed by a number (integer) (example –l150): this option sets the amount of lines (in pixels) that will be processed from each side. At a certain amount of pixels from the side resides the edge between the black part of the image and the reflectogram. Vipscrop does not need to look any further. To save time the user can let the program know that the edge has to be in a certain range from the border. The –l option does exactly that. Defaults to 128. -s followed by a number (integer) (example –s200): this option sets the amount of lines that vipscrop removes after the edge is detected. When the edge is detected, there is still the geometric distortion on the edges of the monitor. With this option the user determines how much is removed from the edge of the reflectogram itself. Defaults to sixty. The user can give a filemask as an argument to the program. Then vipscrop processes only the images matching this mask. On some systems this mask must be surrounded by quotationmarks, otherwise the shell will interpret the mask. The default mask is *.tif.
A4 Manual vipsmosaic Vipsmosaic is a program that tries to assemble a mosaic of reflectograms into a seamless image. This is done be cross correlation. The program actually just assembles multiple pairs of images and exits. By starting the program several times, the user can assemble a complete mosaic of reflectograms. How the mosaic must be assembled determines vipsmosaic via the filenames. Therefore, the filenames have to meet certain conditions. The name starts with a number that tells the x position in the mosaic. One is the leftside. This number is followed by an 'x'. Then there must be another number. This tells what the y position of the image in the mosaic is. One is the topside. After that, there must be a dot. Then comes the filename, it does not matter what that is. After that, there is the extension. The next names are valid: 1x1.VanLeysell.v 9x6.Monet.tiff. There is a maximum size of ten by ten images in one mosaic. Of course, there can be more, but than the project has to be split in more projects. Later those different projects can be joined. Invalid names are: 11x13.Monet.tiff 9X9.blaat.jpeg 9x9blaat.jpeg. When the user has given all the images a correct name, he can proceed with the process. He views some of the images and determines how big the overlap is, how big the images are and in what format they are. He needs this information if he wants to instruct vipsmosaic as best as possible. With this information, he prepares the arguments for vipsmosaic. Then he starts the program for the first time. According to his preferences, vipsmosaic assembles the pairs of images and returns the assembled images. Now the user has to check all images if they vipsmosaic assembled them correctly. If this is not the case, the user must manually assemble the faulty ones. Thereafter, he starts the program the second time. He must let this know to vipsmosaic by giving the argument –c2. Also vipsmosaic wrote the assembled images to the disk with a special name. The new images have the following characteristics: mxn.c.v. mxn is the position in the mosaic and c is the counter. In the results of the first time, this number is two. So the user also has to give the right filemask as an argument. In this case *.2.v. In round three it will be *.3.v. In short: first time the user starts the program the option –c may not be used. Filemask is allowed, but not necessary. The next time and all the other next times the program is started in the same project, -c must be set to the right round, and also the filemask must be right. Examples: second time vipsmosaic is started: vipsmosaic –c2 *.2.v, third time: vipsmosaic –c3 *.3.v, etc. Therefore it is recommended that for each project a new directory is created. The user can give nine arguments to vipsmosaic to control its working: -b followed by a number (0, 1, 2 or 3) (example -b0): this sets the type of balancing that will be performed when the program mosaics the images. 0 means
balancing, 1 balance left or bottom image, 2 balance right or top image and 3 balance both images. Default is 0 -c followed by a number (integer) (example –c4): tells the program in which round it is. In one round the program only mosaics pairs of images. The user then has to check if every pair went right and correct any problems. Then he can start the program again, and has this option to 2, to tell the program that it is in the second round, etc. -h prints this help. -l tells the program that the images are in landscapeformat. This has influence on how the images are mosaiced. If in landscapeformat the program first mosaics top-bottom. -p tells the program that the images are in portraitformat. If in this format the images are first left-right mosaiced. -s followed by a number (integer) (example -s5): this sets the shrinkfactor. The images will be shrinked first before the program applies templatecorrelation. The searchimage will be 1/s size of original size. The default is eight. -w followed by a number (integer) (example -w50): sets the blendwidth. This is the width in actual pixels that the program uses to blend two images. -1 means blend over complete overlap. Default is hundred. -x followed by a number (integer) (example -x50): this sets the width of the template image. It is 1/x part of the imagewidth. Default is three. -y followed by a number (integer) (example -y50): this sets the height of the template image. It is 1/y part of the imageheight. Default is two. The user can give a filemask as an argument to the program. Then vipscrop processes only the images matching this mask. On some systems this mask must be surrounded by quotationmarks, otherwise the shell will interpret the mask. The default mask is *.v.