Lite fördjupning om HDR
Ni som följer tråden och använder forumbilder har säkert märkt att på vissa bilder dyker det upp en HDR-ikon i nedre vänstra hörnet när en bild öppnas. Jag tänkte skriva lite mer om detta för er som är intresserade av fördjupad information.
Vi börjar med två bildexempel. Ni som har en bildvisare som är kapabel att återge ett stort dynamiskt omfång (t.ex. iPhones med AMOLED, den senaste Macbook Pro-lineupen med Retina XDR-skärm eller iPad Pro 12" med XDR) och använder webbläsaren Safari kommer se en stor skillnad mellan hur dessa två bilder återges:
Taget med Apple iPhone 14 Pro Max (HDR, ProRAW, Stock camera, 1x, 0.2s, ISO 2000, 12.19MP)
Taget med Apple iPhone 14 Pro Max (ProRAW, Stock camera, 1x, 0.2s, ISO 2000, 12.19MP)
(Klicka på bilderna och titta i ett mörkt rum för att se skillnaden)
Det är faktiskt exakt samma bild men den första återges med "HDR" - High Dynamic Range och den andra visas precis som allt annat innehåll på webben - i "SDR" - Standard Dynamic Range. Den praktiska skillnaden blir att SDR-versionen ser plattare och tråkigare ut, medans HDR har ett ljus som mer efterliknar det ögat ser i verkligheten.
Ögat har ett närmast obegränsat dynamiskt omfång - det vill säga skillnaden i det mörkaste och ljusaste som vi kan uppfatta på samma gång. Du kan stå ute på natten och beskåda stjärnhimlen samtidigt som du ser dina billyktor som lyser bländande starkt och en skylt bredvid vägen i mörkret klart och tydligt. På samma gång.
När vi fotograferar denna vy blir det inte alls samma upplevelse som det vi såg i verkligheten. Billyktorna lyser inte lika starkt. Stjärnorna syns inte och skylten bredvid vägen är omöjlig att se. Kameror och bildskärmar har ett patetiskt dynamiskt omfång när vi jämför med våra ögon.
Lösningen på problemet, eller i vilket fall en förbättring av situationen, är det som kallas för HDR. HDR är egentligen två olika saker - det är dels hur vi fångar bilden med vår kamera. Men det är också hur vi visar bilden på vår bildskärm. För att komma så nära ögats egenskaper som möjligt så behöver vi HDR både när bilden fångas och när den återges.
När HDR omnämns i kamerasammanhang tänker vi ofta på funktionen som funnits i många år - knappen i kameramjukvaran som gör att himmelen inte blir överexponerad och att de mörka delarna i fotografierna inte blir helt mörka när vi fotograferar t.ex. en solnedgång. Den fungerar på följande sätt: När du tar en bild på ett motiv som har både ljusa och mörka partier så tar kameran egentligen flera bilder på kort tid. Dessa bilder exponeras olika. Vissa överexponeras för att fånga detaljer i de mörka delarna. Andra underexponeras för att fånga detaljer i de ljusa delarna. Sedan slås dessa bilder ihop till en bild med perfekt exponering i alla delar. Det är steg ett och så långt är nästan alla mobilkameror med i matchen idag.
Men när filen sen ska lagras på din telefon så görs det vanligtvis i ett bildformat som gör att det dynamiska omfånget begränsas. Informationen som säger exakt hur ljus solen var i ditt fotografi, eller hur mörkt det var under parkbänken i solnedgången går förlorad och kastas bort. Sedan iPhone Xs har Apple varit den enda mobiltillverkaren som inkluderar denna "extrainformation" i bildfilerna. Det går alltså att läsa ut hur de olika delarna av den sammanslagna bilden har exponerats och hur ljusa de ska vara i förhållande till varandra. Denna information är avgörande för att inte bara kunna undvika över/underexponering utan för att också kunna visa bilden på en bildskärm precis som verkligheten såg ut.
Så om man har använt en iPhone av nyare snitt för att ta bilden så finns informationen där. Men hur återger vi den i HDR? Apple har redan löst detta med "Photos"/"Bilder" på telefonen. Den känner av när en bild har ett stort dynamiskt omfång och kalibrerar då om skärmen så att de delar av bilden som behöver återges ljusare än omfånget för SDR (Standard Dynamic Range) kan göra det. Ni har säkert märkt detta på alla vackra solnedgångar som får ett nästan bländande starkt ljus när man tittar på den i bildgalleriet på telefonen medans bildens mörkare delar förblir mörka. Fantastiskt bra, tills du skickar bilden till någon eller lägger ut den på nätet. Då återges den bara i begränsat dynamiskt omfång och ser mycket tråkigare ut.
Just detta problemet försöker jag råda bot på med den nya funktionen på forumbilder.
För att lösa problemet har jag använt ett antal fula trick. Det finns nämligen ingen standard för att få en webbläsare att visa bilder i stort dynamiskt omfång. Lösningen som jag hittat är att ta en videofil som är kodad i HDR med storleken 1x1 pixel och visa den på samma sida som fotografiet. Webbläsaren förstår då att den ska byta till HDR-läge och sen kan jag presentera bilden i HDR. För att bilden ska visas korrekt tar jag DNG-filen (Apple ProRAW) som innehåller all den information jag behöver för att kunna avgöra vilka delar av bilden som utnyttjar det större dynamiska omfånget och räknar ut vilken ljusstyrka varje pixel i bilden behöver ha för att återges med utökat omfång. Detta är tyvärr inte "lossless". Det enda sättet att föra över själva bilden till webbläsaren är i ett utrymme som är begränsat till SDR (JPEG). Jag får alltså klämma ihop ~120% data i ett utrymme som maximalt kan bära 100%. I praktiken innebär det ingen synbar försämring. De delar av bilden som inte behöver det större omfånget återges helt korrekt medans vissa delar kan boostas till de högre ljusnivåerna.
Det här är inte helt enkelt och jag kommer behöva trimma det rätt mycket innan jag är helt nöjd och kan aktivera det för alla ProRAW-uppladdningar. Men jag tror att det kommer göra det mycket roligare att titta på bilder som är tagna med en iPhone (om man har en kompatibel bildvisare, det vill säga).
Nästa steg är att göra tekniken kompatibel med Chrome och Windows. Det kommer inte vara några problem.
Sen såklart att fortsätta trimma mina algoritmer så att jag kan koda bilderna optimalt.
Kända problem: När man pinch-zoomar på mobiltelefon försvinner HDR-visningen (lösning på g).
Stay tuned, som man säger.
Last edited: 21 sept 2022