PIXELCALC: FORRIT TIL MÆLINGA Á STÆRÐ GOSMAKKA ÚT FRÁ STAFRÆNUM MYNDUM Rögnvaldur Líndal Magnússon Jarðvísindastofnun Háskólans Háskóli Íslands maí 2012 RH-08-2012
1 PixelCalc
Efnisyfirlit 1. PixelCalc 3 2.1 Fræði 3 2.2 Skekkjur 4 3.1 Forrit 5 3.2 Notkun 6 3.3 GPS staðsetningar möguleikinn 6 3.4 Nánar um snið á GPS skrá 7 3.5 Að breyta sjóndeildarhringnum 8 3.6 Aðalgluggi 9 3.7 Options gluggi 10 4.1 Dæmi 11 4.2 Dæmi með GPS skrá 13 Heimildaskrá 15 2
1. PixelCalc Forritið PixelCalc er gert til að meta stærðir á fyrirbærum á stafrænum ljósmyndum. Það var að mestu smíðað á Jarðvísindastofnun Háskólans sumarið 2011. Í forritinu eru mældar stærðir hluta á stafrænum ljósmyndum og raunverulegar vegalengdir reiknaðar. Þetta er hægt að gera ef þekktir eru eiginleikar þeirrar myndavélar sem myndin var tekin með, og einnig að þekkt sé vegalengd frá tökustað að hlutnum sem á að mæla. Með PixelCalc er hægt að gera þetta á mjög fljótlegan og einfaldan máta. Við hönnun forritsins var haft að leiðarljósi að vinnsla með myndasöfn yrði fljótleg og einföld. Til þess að ná þessu markmiði býður forritið upp á Fjarlægðir reiknaðar út frá GPS hnitum Sjálfvirkan lestur á stillingum linsu Fljótleg skrif í log-skrá Sjálfvirk leiðrétting fyrir kúlulögun jarðar þegar mælt er yfir miklar fjarlægðir. 2.1 Fræði Aðferðin byggist á linsueiginleikum myndavélarinnar. Sjónsvið myndavélarinnar fer aðeins eftir tveimur stærðum. Önnur þeirra er brennivídd linsunnar sem oft er stillanleg af notandanum. Hin er stærð skynjarans í tilfelli stafrænnar myndavélar, eða stærð filmunnar í tilfelli gamaldags myndavélar. Þegar sjónsviðið er þekkt og einnig fjarlægðin að viðfangsefninu er auðvelt að finna þær vegalengdir sem myndin spannar í heild sinni. Ef að viðfangsefnið sést í heild sinni á myndinni er hægt að fá stærðir þess sem hlutfall af heildarmynd og þar með er mælingin komin. Sjónsviði myndavélarinnar er hægt að lýsa með eftirfarandi jöfnu [1]: =2tan 2 Þar sem α er sjónsviðið í radiönum, d er stærð filmunnar eða skynjarans, og f er brennivídd linsunnar. Mynd 1: Sjónsvið myndavélar. Við viljum finna lengdina x á mynd 1, sem er í fjarlægð R frá tökustað myndarinnar. Það er fljótgert í ljósi þess að 2 = tan 2 = 2 3
Innleiðum nú tvær stærðir: n er stærð viðfangsefnis á myndinni, m er heildarstærð myndarinnar. Stærðin x er sú vegalengd sem myndin spannar í fjarlægðinni R (fjarlægð að viðfangsefni). Stærð viðfangsefnisins er þá að lokum = Breyturnar n og m geta verið í millimetrum, punktum á myndavélarflögu eða hvaða einingu sem er. 2.2 Skekkjur Þegar þessari aðferð er beitt á gosmökk þarf að hafa í huga þær flóknari aðstæður sem geta myndast og haft áhrif á mælinguna. Á eftirfarandi þremur myndum eru sýnd þrjú mismunandi tilvik og áhrif þeirra á mælinguna á hæð gosmakkarins, h. Mynd 2: Sýnileg hæð á toppi makkar frá tökustað er í sömu fjarlægð og gígurinn, reiknuð hæð er rétt Mynd 3: Sýnileg hæð toppsins frá tökustað er nær en gígurinn. Ofmat á hæð. 4
Mynd 4: Sýnileg hæð toppsins frá tökustað er fjær en gígurinn. Vanmat á hæð. Eins og sjá má getur lögun og afstaða milli tökustaðar og topps makkarins haft töluverð áhrif á mældu hæðina. Forritið tekur ekki tillit til þessara skekkjuvalda og það er því á ábyrgð notandans að varast þá og leiðrétta fyrir þeim, t.d. með því að setja inn fjarlægð R í samræmi við raunverulegan mælistað á hæð makkar. 3.1 Forrit Forritið er skrifað í forritunarmálinu Python [2]. Það er ræst með skránni PixelCalc.exe. Þegar forritið er opnað birtast tveir gluggar, annars vegar console gluggi og hins vegar aðalglugginn. Unnið er í aðalglugganum en console glugginn hefur að geyma ítarlegri upplýsingar en aðalglugginn sem geta stundum verið áhugaverðar. Betur verður útskýrt hvaða upplýsingar birtast hvar þegar virkni forritsins er lýst hér á eftir. Mynd 5: Console glugginn Mynd 6: Aðalglugginn 5
Markmið forritsins er að hægt sé að nota þessa aðferð á einfaldan og hraðvirkan hátt. Þegar það hefur verið stillt að þörfum notanda ætti að vera mjög fljótlegt að vinna úr myndasafni. Mikilvægustu stærðirnar í þessum útreikningum eru víddir skynjarans, vegalengd að viðfangsefni og brennivídd linsu. Víddir skynjarans: Þessa stærð er hægt að finna í handbókum myndavéla eða á netinu. Dugar oftast að leita að fullu nafni myndavélarinnar til þess að fá lista yfir tæknilega eiginleika hennar. Þessi stærð er oftast kölluð sensor dimensions í slíkum listum. Mikilvægt er að þessi stærð sé rétt. Áður en hægt er að nota forritið þarf að setja þessar stærðir inn í Options gluggann. Ólíkt brennivíddinni og vegalengdinni getur forritið ekki fundið þessar upplýsingar sjálft. Setja skal stærðina inn í millimetrum. Brennivídd: Brennivíddin sem linsan var stillt á þegar myndin var tekin (focus). Oftast er þessi stærð geymd í myndinni með EXIF-tag. Sé forritið stillt til að lesa brennivídd úr myndinni mun það finna þessa stærð sjálft í hvert skipti sem hlaðið er inn mynd. Einnig er hægt að setja þessa stærð inn handvirkt ef óskað er eftir því. Þessi stærð skal vera í millimetrum. Fjarlægð: Fjarlægðin að viðfangsefninu sem mæla skal. Hægt er að setja þessa stærð inn handvirkt eða lesa hana sjálfvirkt (úr GPS skrá). Það eru nokkur skilyrði fyrir því að sjálfvirki möguleikinn virki og verður þeim gerð nánari skil í undirkafla. Þessi fjarlægð má vera í hvaða einingu sem er. Niðurstaðan sem forritið skilar er þá í sömu einingu. 3.2 Notkun Þegar forritið er rétt stillt er það tilbúið til að reikna vegalengdir. Þegar búið er að hlaða inn mynd er hægt að velja vegalengd með tveimur músarsmellum sem marka upphafspunkt og endapunkt. Þessir punktar eru merktir með gulum krossum. Þá er hægt að velja milli þriggja leiða til að reikna þessa vegalengd á myndinni í raunvegalengd. Þessir möguleikar eru lárétt (horizontal), lóðrétt (vertical) og absolute (sjá mynd 7). Þegar búið er að merkja inn rétta punkta og velja hvaða vegalengd skal reiknuð er smellt á Calculate hnappinn. Þá birtist niðurstaðan í aðalglugganum (í sömu einingu og notuð var við innsetningu á fjarlægð). Þegar búið er að velja tvo punkta en notandinn vill breyta vali sínu er hægri-smellt Mynd 7: Litmerking á hvaða vegalengd hver möguleiki reiknar til að losna við gömlu punktana. 3.3 GPS staðsetningar möguleikinn Þegar unnið er með myndasyrpu úr flugi eða svipuðum leiðangri þar sem GPS tæki var með í för er hægt að nota GPS skrána úr tækinu til þess að reikna sjálfkrafa fjarlægðina að viðfangsefninu. Fyrir þessu eru nokkur skilyrði: GPS skráin þarf að innihalda tíma og staðsetningarhnit og vera á.txt formi. Á Jarðvísindastofnun er notað Garmin GPS og MapSource. Til þess að geta lesið tímann úr 6
skránni þarf hann að vera á 24 tíma forminu hh:mm:ss. Til þess að geta lesið staðsetningu úr skránni þurfa GPS hnit að koma fram í gráðubrotum með höfuðátt (t.d. N64.23883 W21.12253), og að vera saman í einum dálk. Dálkar í skránni þurfa að vera aðgreindir með Tab. Ef skráin er ekki á réttu formi þarf að útbúa nýja.txt skrá sem uppfyllir kröfurnar úr upprunalegu GPS skránni, t.d. með MapSource fyrir Garmin.gdb skrár. Last modified eiginleiki ljósmyndanna þarf að vera óbreyttur. Forritið les þennan tima og ber saman við GPS skrána. Að öllu óbreyttu mun þessi tími vera sá sami og þegar myndin var tekin. Þetta er vert að athuga áður en hafist er handa. Ef að búið er að eiga við skrána þannig að þessi tími breytist getur forritið ekki unnið rétt úr GPS skránni og niðurstaðan verður röng. Aðgerð sem gæti hafa breytt þessum tíma væri t.d. ef að myndirnar hafa verið stækkaðar/minnkaðar eða búið er að breyta um format á þeim. Ef klukkur myndavélar og GPS tækis hafa ekki verið samstilltar á meðan myndatöku stóð er hægt að lagfæra það með Time offset reitnum í Options. Ef stillt er á eitthvert time offset mun forritið bæta þeim tíma við þann tíma sem lesinn er af myndinni og bera þann lokatíma saman við GPS skrána. Ef að klukkan í myndavélinni hefur verið á undan klukkunni í GPS tækinu þegar á myndatöku stóð þarf að setja inn neikvæða tímahliðrun (time offset) til að fá réttan tíma. Lokatíminn sem borinn er saman við GPS skrána er í = í á +. GPS hnit viðfangsefnisins þurfa að vera þekkt. Þau eru sett inn í Options glugganum undir Latitude of object og Longitude of object. Hvort um sig hefur þrjá reiti: gráður, mínútur og sekúndur. Það er þó engin nauðsyn að hafa hnitin á þessu formi, hægt er að setja inn gráðubrot og hafa þá einfaldlega 0 í hinum reitunum eða mínútubrot ef þess er óskað. Séu þessi skilyrði uppfyllt getur forritið reiknað fjarlægðina sjálft. Allar vegalengdir sem forritið reiknar út frá GPS hnitum eru gefnar í kílómetrum. Dæmi af console glugganum þegar þessi möguleiki er notaður rétt: 3.4 Nánar um snið á GPS-skrá Ef að illa gengur að fá forritið til að lesa GPS skrá þarf að athuga eftirfarandi: Að ekki sé Tab í haus skránnar Að hnitin séu ekki aðskilin með Tab. Þ.e. að þau komi fram sem N64.0 (bil) W24.0, ekki N64.0 (Tab) W24.0 7
Haus skránnar má vera hversu langur sem vera skal ef hvergi er notað Tab í honum. Dæmi um skrá sem inniheldur aðeins það sem forritið notar og uppfyllir allar kröfur þess um snið er eftirfarandi: Header N64.61413 W17.61522 20:58:29 N64.61480 W17.60760 20:58:32 N64.62124 W17.53165 20:59:02 N64.62843 W17.44581 20:59:36 N64.63412 W17.37548 21:00:04 N64.63533 W17.36052 21:00:10 N64.64263 W17.27083 21:00:46 N64.64677 W17.21836 21:01:07 3.5 Að breyta sjóndeildarhringnum Sé myndin tekin þ.a. sjóndeildarhringnum hallar umtalsvert er hægt að leiðrétta það með því að merkja inn nýjan sjóndeildarhring. Þetta er gert með miðju-músarhnappnum eða Control-Click. Smellt er á tvo punkta á hinum raunverulega sjóndeildarhring og forritið mun endurreikna hnitakerfi sitt. Til að losna við þessa leiðréttingu er smellt í þriðja sinn. Þetta hefur aðeins áhrif á þegar reiknað er með Vertical eða Horizontal reiknimöguleikunum. Absolute möguleikinn helst óbreyttur, og alltaf er hægt að nota hann til að fá sömu niðurstöðu ef að t.d. sjóndeildarhringurinn er ekki sýnilegur. Til þess þarf þó að merkja hárrétt inn á myndina upphafspunkt og lokapunkt. 8
3.6 Aðalgluggi: 5. mynd 1. Open: Velja nýja mynd til þess að vinna með. Opnar valglugga. 2. Options: Opnar stilli-glugga. 3. Save: Vistar útkomu í log skrá. Hægt er að velja einingu og log-skrá í options. Log-skráin hefur einfaldan header og vistar skráarnöfn, tíma myndatöku og útkomu. 4. Calculate: Reiknar út úr tölunum sem slegnar hafa verið inn og birtir niðurstöðuna í glugga merktan 9 og console glugga. 5. Variables: Prentar út lista af þeim breytum sem notaðar eru við útreikningana og gildi þeirra. Þessar upplýsingar birtast í console glugganum. 6. Preview: Opnar nýjan glugga þar sem hægt er að skoða minni útgáfu af myndinni sem unnið er með. Gagnlegt þegar myndin er stærri en skjárinn, þar sem ekki er boðið upp á zoom möguleika. 7. Hér er valið hvaða lengd er notuð til útreikninga. Sjá mynd 7 fyrir útskýringu á hvað hver möguleiki mælir. 8. Hér er sett inn fjarlægðin að viðfangsefni ef ekki er verið að vinna með GPS hnit. 9. Hér birtist niðurstaða útreikninga. Hún er einnig birt í console glugganum 10. Hér er hægt að stilla focal length ef ekki er verið að vinna með sjálfvirkan ham. Nákvæmlega sama virkni og sami reitur í Options. 9
3.7 Options gluggi: 1. Reitir fyrir stærðir skynjarans (sensor) fyrir stafrænar myndavélar. 2. Val fyrir hvort PixelCalc á að finna focus stærðina sjálft. Ef valið er Manual þarf að setja þessa stærð inn í millimetrum annað hvort í options glugganum eða aðalglugganum. 3. Val fyrir hvort eigi að nota GPS hnit til að reikna vegalengd. Ef valið er Manual þarf að setja inn vegalengd handvirkt í aðalglugga. Það þarf ekki að setja inn hnit þegar þessi möguleiki er notaður. Ef valið er GPS þarf að setja inn rétt hnit í glugga 7. 4. Staðsetning GPS skrár. Hægt er að nota takka 5 til að finna skrána. Áður en mynd er opnuð þarf að smella á Load til þess að hlaða skránni í minnið. 5. Opnar valglugga fyrir textaskrá. 6. Hleður valinni GPS skrá í minnið svo hægt sé að nota hana til útreikninga. Þetta þarf að gera áður en mynd er hlaðið inn í aðalglugga. 7. Hnitsetning á mælihlut. Takið eftir að bæði er hægt að setja inn gráðubrot og gráðurmínutur-sekúndur. 8. Nafn á log-skrá. Ef að vísað er á skrá sem er ekki til er búin til ný log skrá með þessu nafni. 9. Time offset til að leiðrétta mismun sem gæti verið milli klukkna á GPS tæki og myndavél. Ef klukkan í GPS tækinu er á undan er þetta jákvæð stærð, ef klukkan í myndavélinni er á undan er þetta neikvæð stærð. 10. Eining fyrir log-skrá. Hefur engin áhrif á útreikninga. 11. Leiðrétting fyrir kúlulögun jarðar. Ef myndin er tekin í 100km fjarlægð frá hlut og bæði hlutur og ljósmyndari eru við yfirborð jarðar í sömu hæð er þessi leiðrétting um 0,78km. 12. Lokar glugganum og vistar breytingar. 10
4.1 Dæmi Það á að finna hæð makkarins á ljósmynd: Hér er búið að merkja inn þá vegalengd sem á að mæla. Þar sem við notum ekki upprunalegu myndina eru ekki lengur geymdar upplýsingar um fókus myndavélarinnar og því þarf að setja þá stærð inn handvirkt. Þessar upplýsingar er auðvelt að finna í EXIF-data upprunalegu skránnar. Þannig fæst að Focal length er 27mm á þessari mynd. Fjarlægðin var gefin sem 31km. Nú eru allar upplýsingar komnar og á bara eftir að setja þær inn. 11
1. Options glugginn áður en mynd er hlaðið inn: Athugið að það er ekki búið að setja inn stærð fyrir fókus. Fókus er ekki settur inn fyrr en myndinni hefur verið hlaðið inn, og er þá fljótlegast að nota fókus reitinn í aðalglugganum. 2. Aðalglugginn þegar myndinni hefur verið hlaðið inn og búið er að slá inn 31 (km) fyrir fjarlægð og 27 (mm) fyrir fókus, og merkja inn punkta: 12
Niðurstaðan 4.14km ætti að gefa okkur einhverja hugmynd um hæð makkarins, en þar sem myndin er ekki mjög heppileg er rétt að taka þessu gildi með fyrirvara og reikna með allavega 0.5km í óvissu. 4.2 Dæmi með GPS skrá Í þessu dæmi eru notuð gögn úr flugi yfir Grímsvötnum 2010. GPS tæki var með í fluginu og er sú skrá notuð til að meta fjarlægðina. Myndin sem á að mæla: 1. Options glugginn áður en myndinni er hlaðið inn (ekki má gleyma að smella á Load): 13
2. Aðalglugginn eftir að merkt hefur verið inn á myndina hvaða vegalengd á að mæla (búið er að skeyta saman tveimur myndum vegna stærðar upprunalegu myndarinnar): 3. Console glugginn eftir að mæling hefur verið gerð: Í seinni tveimur myndunum er búið að smella á Calculate til að reikna hæðina, og skilar forritið 12.78km. Þetta er vanmat á hæð makkarins sem nemur um 1-2km vegna þess að ský hylur neðri mörk hans. Til þess að fá hæð yfir sjávarmáli þarf að bæta við 1.5km sem er hæð gosstöðvarinnar. Áætluð hæð makkarins yfir sjávarmáli er því um 15.5-16.5km. Sýnishorn úr GPS skránni: 14
Heimildaskrá [1] Ernest McCollough (1893). "Photographic Topography". Industry: A Monthly Magazine Devoted to Science, Engineering and Mechanic Arts (Industrial Publishing Company, San Francisco): 399 406. [2] www.python.org 15