Specialmotiv
Vill man få med så mycket som möjligt i en bild ställs man inför precis samma problem som när jordklotet ska återges på en karta. Vid fotografering sitter man istället inne i sfären (klotet) och tittar ut.
Innehåll
Cylindrisk längdriktig projektion
Van der Grintens projektion
Azimutal längdriktig projektion (fisheye)
Gnomomisk projektion (raktecknande)
Perspektivkorrigering för fisheye
Referenser/länkar
Cylindrisk längdriktig projektion
Finns i olika varianter, men här är det den enklaste där jordklotets vinkelkoordinater (latitud och longitud) översätts direkt till den plana kartans/bildens höjd- och breddkoordinater. Namn för denna är kvadratisk plattkarta eller på engelska "equirectangular projection". Upptill och nertill motsvarar hela sidan varsin enda punkt (nordpol/sydpol) medan kortsidorna passar ihop.
Förvrängningen blir förstås stor nära polerna. På latitud 60° (strax norr om Uppsala eller i bilden här delningen en sjättedel från toppen) blir skalan i breddled dubbelt så stor (1/cos60°=2) som skalan i höjdled, som är konstant över hela kartan. Dvs. meridianerna är längdriktiga - därav namnet på projektionen.
Vid fotografering är denna projektion vanlig när man sätter ihop så kallade sfäriska panoramor. Sfärisk är därför ytterligare ett namn som används för projektionen.
Vertikala linjer ska alltså avbildas korrekt. Att min exempelbild inte riktigt ger det intrycket beror på att jag inte lyckats hundraprocentigt med hopfogningen av de sex plus två delbilderna i panoramat.
Van der Grintens projektion
Beskuren upptill och nertill är den här projektionen vanlig för världskartor. Fördel jämfört med den sfäriska projektionen är som synes att ytorna upptill och nedtill avbildas mindre förvrängda och nackdel är att färre raka linjer avbildas raka.
Jag har roat mig åt att försöka skriva ett litet program (för PC, 310 kB) som skapar "grinten-bilder" från sfäriska.
Azimutal längdriktig projektion (fisheye)
Här två konstgjorda fisheyebilder med bildvinkeln 180° som tillsammans rymmer samma info som de två tidigare bilderna. Spelar ju inte riktigt i samma division eftersom det inte är en sammanhängande bild. Fast det går att få det också om man i datorn väljer bildvinkeln till 360°.
Ett kul resultat, men förvrängningen är minst sagt extrem i kanterna som här motsvarar en enda punkt (mitten i högra fisheyebilden ovan).
Denna ideala fisheye-projektion avbildar vinkelskillnader längs räta linjer genom bildens mitt likadant över hela bilden. Vanlig beteckning för halva bildvinkeln är θ (theta). Med brännvidden f fås bildens radie R = f·θ (vinkeln mätt i radianer).
Räknar man på detta finner man att det inte stämmer riktigt att ett 15-16 mm-objektiv tecknar ut 180° på en småbildsdiagonal (43 mm). Ett mer korrekt uttryck är istället R = 2·f·sin(θ/2). Exempel med Sigmas 8 mm-objektiv som anges teckna en 22,08 mm stor cirkel med bildvinkeln 180°. Man får då f = 11,04/(2·sin(π/4)) ≈ 7,8.
Med Panorama Tools filter "correct" och "radial shift" omvandlar man enkelt en bild som följer 2·f·sin(θ/2)-projektion till ideal "f-theta-projektion" med koefficienterna a=0, b=-0,11, c=0 och d=1,11 i polynomet r_src = d·r_dest+c·r_dest²+b·r_dest³+a·r_dest^4. Koefficienterna kommer ur enkel McLaurinutveckling av sinusfunktionen skalad för att passa korrektionspolynomet. d=π(√2)/4 och b=(√2)π³/(6·4³).
Åter till den ideala projektionen, med den är det alltså inget skalfel radiellt. Däremot vinkelrätt mot detta, dvs. tangentiellt, är skalfelet θ/sinθ, en funktion som går från 1 (inget fel) då θ=0 till oändligheten då θ=π. För θ=π/2, (vid bildkanten med bildvinkeln 180°) är felet dock inte större än π/2≈1,6.
Gnomomisk projektion (raktecknande)
Skalfelet (för vinkelavbildning) för ett idealt raktecknande objektiv fås av uttrycken 1/cos²θ (radiellt) 1/cosθ (tangentiellt). Om man inte ska tillåta ett större radiellt skalfel än det tangentiella felet som blir i kanten för en 180-graders fisheyebild (dvs π/2≈1,6) kan man inte använda ett objektiv som ger större bildvinkel än 74°.
För ett raktecknande objektiv gäller att R = f·tanθ. Om man låter långsidan för småbild (36 mm) motsvara bildvinkeln 74° ger det ett objektiv med brännvidden 24 mm (18/tan37°). För att det är kul med siffror - tittar man bara på det tangentiella felet för den raktecknade bilden får man brännvidden 15 mm istället...
Om vinkelskalfelet vore enda faktorn som styrde om en vidvinklig bild såg bra ut skulle man alltså alltid använda fisheye, men så är det ju inte. Oftast är det betydligt viktigare att raka linjer avbildas raka.
De två kvadraterna har bildvinkeln 172° på bredden och höjden och 2·arctan[√(2)·tan(172/2)] = 174° på diagonalen. Hade varit kul om jag lyckats med panoramat så att inte husen spretat i sidorna, men jag tycker ändå det är en fascinerande effekt att få upp husens sidor i gränden på det här sättet - jämför med de två fisheye-cirklarna!
Tittar man på fönstrena ser man att avståndet mellan dem i bilden är stämmer med det verkliga avståndet på väggen, bortsett från att bilden spretar i kanterna. Ett objektiv som inte gör denna avbildning helt korrekt missar också att få alla linjer raka (tunnformad/kuddformad distorsion).
Genom att fota ett måttband liggandes i skärpeplanet med noga passning så det blir precis samma skala i båda ändorna kan man med enkel matrisberäkning (minsta kvadratmetoden) få fram koefficienter till korrektionsfiltret i Panorama Tools plugin som jag nämnde ovan. Brasklapp för att distorsionen varierar med avståndsinställningen.
Perspektivkorrigering för fisheye
Böjd horisont känns ju inte direkt naturligt.
Här korrigerad med Panorama Tools filter "Perspective" (turn to vertical 17 och rotate -6 med HFOV 132). Lite surt om man hade tänkt sig att bilden skulle vara rektangulär, men en annorlunda ram behöver inte vara fel alla gånger!
Vid fisheyefotografering som inte har som syfte att förvränga verkligheten mer än nödvändigt behöver man tack vare datorn alltså inte alltid placera sina raka linjer så de går genom bildens mitt.
När det gäller perspektivkorrigering av raktecknade bilder kan man få en bra förståelse för hur det fungerar om man snurrar runt lite i ett sfäriskt panorama. Zooma först in det motiv du vill ha, sedan zoomar du ut och byter vinkel så de störtande linjerna blir raka. Tänk till sist en beskärning motsvarande det du zoomade in.
Referenser/länkar
MathWorld
cylindrisk längdriktig
van der Grinten
azimutal längdriktig
gnomomisk
Lantmäteriet
(har nedgraderat sina sidor sedan jag skrev artikeln)
Motor
Panorama Tools
mitt eget "grinten-program" för PC (310 kB)
10 Kommentarer
Logga in för att kommentera
Möjligen kanske texten inte går att göra mer lättläst(/förståerlig) men då kan man ju fundera på om inte viss reservation inledningvis nämns i att man bör vara mycket matematiskt kunnig för att helt kunna ta del av artikeln.
Jag kan hålla med om att det är en fördel om man har lite mattekunskaper, men första halvan och slutet har ju ingen matte i sig ;-) Hittade en länk till http://www.theducation.se/kurser/umaprep/4_trigonometri/gymad/teori/index.asp>"mattekunskapskrav för artikeln".
Att göra tydligare pedagogiska illustreringar går säkert (inget jag är bra på), jag är (förstås) nöjd med gränden som motivval.
Orkade inte putsa på källkoden för allmänt betraktande. Får duga att e-posta den till dem som är särskilt nyfikna! Inte mycket att se heller... För varje pixel i den resulterande bilden hämtas ett värde från sfäriska bilden med hjälp av Grinten-inversformel och en medelvärdestagning mellan de maximalt fyra aktuella pixlarna.
thanks again( u missed 2 marks cuz of d language)
http://www.lantmateriet.se/templates/LMV_Page.aspx?id=3003