HDR nedir? – Yüksek dinamik aralıklı görüntüleme

Fotoğraf: Ahmet Oğuz Akyüz, Tübingen, Almanya (CC-BY-NC)

Bu yazımızda son zamanlarda sıkça duymaya başladığımız yüksek dinamik aralıklı (YDA) görüntülemenin ne olduğu, hangi uygulama alanlarında ve ne amaçlarla kullanıldığı üzerinde duracağız. Belki bu terimin Türkçesinden çok İngilizcesini yani “High Dynamic Range” HDR terimini duymuş olabilirsiniz. Günümüzde satılan birçok televizyon YDA özelliğine sahip olarak tanıtılıyor ve bu özellik çarpıcı görüntülerle özdeşleştiriliyor. Benzer şekilde YDA  görüntü çekebildiği iddia edilen akıllı telefonlar gittikçe yaygınlaşıyor ve yine bu özellik bir pazarlama unsuru olarak karşımıza çıkıyor. Gelin beraberce YDA’nın ne olduğunu inceleyelim.

Yüksek dinamik aralığın ne olduğunu anlayabilmek için öncelikle dinamik aralık terimini tanımlayalım. Dinamik aralık (DA) bir sinyalin alabileceği en büyük ve en küçük değerlerin bir oranı olarak tanımlanır. Bu sinyali ışık olarak düşünecek olursak bir ortamdaki dinamik aralığı o ortamda bulunan en kuvvetli ışık ile en zayıf ışığın oranı olarak tanımlayıp, aşağıdaki denklemle ifade edebiliriz:

Bu denklemde geçen $L_{max}$ ve $L_{min}$ terimleri bir ortamda bulunan en kuvvetli ve en zayıf ışıklılık (İng. luminance) seviyelerine karşılık geliyor. Biz kolay anlaşılır olması açısından bu yazımızda ışıklılık yerine sadece ışık, ışık seviyesi ya da ışık kuvveti ifadelerini kullanacağız.

Bazı ortamlarda dinamik aralık o kadar yüksektir ki, tek bir fotoğrafta hem en karanlık hem de an parlak bölgeleri yakalamak mümkün olmaz. Bunun için Şekil 1’deki fotoğrafları inceleyelim.

Şekil 1. Hem çok karanlık hem de çok parlak bölgeler içeren sahnelerde tek bir fotoğraf ile tüm detayları yakalamak mümkün olmaz. Soldaki fotoğraf düşük poz süresi ile çekilmiş olup dışarıdaki detayları göstermekte, sağdaki fotoğraf ile yüksek poz süresi ile çekilmiş olup içerideki detayları göstermektedir. Fotoğraf: Ahmet Oğuz Akyüz – Amasra (CC-BY-NC)

Burada soldaki fotoğraf kameranın düşük poz süresi ayarında çekilmiştir. Bu sebeple daha düşük ışık gelen yerler (kapının içi gibi) tamamen karanlık, dış ortam gibi yüksek ışık gelen yerler ise normal seviyede çıkmıştır. Sağdaki fotoğraf ise kameranın poz süresini artırarak elde edilmiştir. Bu fotoğrafta iç mekandaki detaylar görünür hale gelmiş, ancak bu defa dış ortam yüksek ışıktan dolayı yanmıştır. İşte biz tek bir fotoğrafta tüm detaylarını yakalamamızın mümkün olmadığı sahnelere yüksek dinamik aralıklı sahneler diyoruz.

Şekil 2. Normal hayatta sıklıkla karşılaştığımız ışık seviyeleri

İnsan gözü yüksek dinamik aralığı nasıl algılar?

Şekil 2’de bir gün içerisinde sıklıkla karşılaştığımız ışık seviyeleri gösterilmiştir. Buna göre parlak güneş ışığından zayıf yıldız ışıklarına kadar dünyada yaklaşık 1010 katlık bir dinamik aralık vardır. İnsan gözü bu dinamik aralığın tümünü aynı zamanda algılayamasa da, bu aralığın farklı bölgelerine zaman içinde uyum sağlayabilir. İnsan gözünün tek bir ortam içerisinde yaklaşık 105’lik bir dinamik aralığı algılayabildiği bilinmektedir. Görsel uyum sayesinde hassas olduğumuz bu aralık karanlık veya aydınlık bölgelere kayabilir. Bu durum Şekil 3’te gösterilmiştir.

Standart bir dijital (ya da film) kamera ise tek bir ortam içerisinde yalnızca 102 – 103 seviyelerinde bir dinamik aralığı kaydedebilir. Bu aralığın merkezi kameranın poz ayarları ile oynanarak sola ya da sağa kaydırılabilir.

Şekil 3. İnsan gözü tek bir ortamda yaklaşık 105’lik bir dinamik aralığı algılayabilmektedir. Bu aralığın merkezi görsel uyum mekanizmasıyla değişebilir. Standart bir kamera ise tek bir ortamda sadece 102 veya 103’lük bir dinamik aralığı algılayabilir. Poz ayarları ile oynanarak bu aralığın merkezi değiştirilebilir.

Yani biz aslında kameralarımız ile normal bir fotoğraf çektiğimiz zaman kameraya gelen ışık seviyelerinden sadece (Şekil 3’te kameranın algısı kadar) bir kesit alıp, bunu JPEG gibi standart bir dosya formatında her bir renk kanalı için [0, 255] aralığında 8-bitlik doğal sayılar ile ifade ediyoruz. Oysa en azından insan gözünün algılayabildiği aralıktaki bilgiyi saklayabilirsek gerçeğe çok daha yakın görüntülerden bahsedebiliriz.  Peki eğer yüksek dinamik aralıklı bir imge elde etmek istersek ne yapmamız gerekir?

YDA bir imge nasıl elde edilir?

Normal kullanıcılar için yüksek dinamik aralıklı bir imge elde etmenin en yaygın olarak kullanılan yöntemi, tek bir fotoğraf çekmek yerine Şekil 1’de gösterdiğimiz gibi düşük dinamik aralıklı (DDA) (İng. low dynamic range, LDR) birçok fotoğraf çekmek ve bunları bir art işleme (İng. post processing) işlemi ile birleştirmektir. Buna çoklu pozlama tekniği diyoruz. Şekil 4’te YDA bir imge oluşturmak için girdi olarak kullanılabilecek bir DDA fotoğraf dizisinin örneği verilmiştir.

Şekil 4. Aynı sahnenin farklı poz ayarlarında çekilmesi ile elde edilen fotoğraflar bir art işleme işlemi ile birleştirilerek HDR imgeler elde edilebilir. Bu şekildeki fotoğraflar sırası ile 1/4000, 1/2000, 1/1000, 1/500 ve 1/250 saniye poz süreleri ile çekilmiştir. Fotoğraf: Ahmet Oğuz Akyüz – West Palm Beach (CC-BY-NC)

Aynı sahnenin birden çok pozu bu şekilde çekildikten sonra, bu fotoğrafları YDA bir imgede birleştirmek için ağırlıklandırılmış bir toplama işlemi yapabiliriz. Ancak bu işlem sırasında kameradan gelen görüntülerin doğrusal olmadığını unutmamamız gerekir (örneğin ışık değerinin iki katına çıkması piksel değerinin iki katına çıkması anlamına gelmez). Bu nedenle birleştirme işlemi öncesinde görüntüleri doğrusallaştırmamız gerekir. Anlaşılır olması açısından çeşitli kameralara ait transfer eğrileri Şekil 5’te gösterilmiştir.

Şekil 5. Çeşitli kameralara ait transfer eğrileri. Burada x-ekseni kameranın aldığı ışığı, y-ekseni ise kameranın ürettiği piksel değerlerini göstermektedir ve ikisi arasındaki ilişki doğrusal değildir. İki eksen de [0, 1] aralığına sıkıştırılmıştır.  Kameraların transfer eğrilerine ait veriler http://www.cs.columbia.edu/CAVE/databases adresinden alınmıştır.
Son olarak birleştirme işlemi sırasında her piksele aynı ağırlığı vermeyiz. Bazı pikseller yandığı ya da çok karanlık olduğu için faydalı bilgiler içermezler. Bunun için genellikle merkezi 127,5 olan, 0 ve 255 değerlerine doğru doğrusal ya da yumuşak bir şekilde azalan fonksiyonlar kullanılır.  Yani özetle DDA görüntülerden YDA bir görüntü elde etmek için farklı poz seviyelerinde birden çok fotoğraf çekip bunları birleştirebiliriz. Bu yöntem cep telefonlarımızda HDR modunda fotoğraf çektiğimizde biz fark etmesek de arka planda çalışarak YDA görüntü elde etmemizi sağlamaktadır.

Hayalet kusurları neden olur, nasıl engellenir?

YDA imge oluştururken dikkat etmemiz gereken üç önemli husus daha var:

  • Kamerayı bir üçayak (İng. tripod) üzerinde sabitleyerek çekim sırasında hareket etmesini engellemek
  • Sahne içerisinde hareketli nesnelerin olmaması
  • Çekim işlemini kısa bir sürede tamamlayarak olası ışık değişimlerinden etkilenmemek

Bu koşullara dikkat etmezsek çektiğimiz fotoğraflarda birbirlerine karşılık gelen pikseller farklı nesne ya da ışık değerlerini kaydedeceği için bunları tek bir imgede birleştirirken sorun yaşayabiliriz. Buna bir örnek Şekil 6’da verilmiştir. Burada kamera elle tutulduğu için nesneler her girdi fotoğrafta farklı bir pozisyona kaymış ve birleştirme sırasında kusurlar oluşmuştur. Bunlar YDA literatüründe hayalet (İng. ghosting) kusurları olarak adlandırılır. Bu kusurları düzeltmek için yapılmış ve yapılmakta olan birçok akademik çalışma mevcuttur.

Şekil 6. YDA görüntü oluştururken kullanılan girdi fotoğraflar birbirleri ile hizalı değilse oluşabilecek hayalet kusurlarına bir örnek. Sağdaki görüntüde kırmızı karedeki bölge yüksek çözünürlükte gösterilmiştir. Fotoğraf: Ahmet Oğuz Akyüz – Llandudno (CC-BY-NC)

Son olarak, YDA imge elde etmek ile ilgili popüler olan farklı bir yaklaşımdan bahsedelim. Eğer amacımız gerçekten YDA bir imge elde etmek değil de hem karanlık hem de aydınlık bölgelerdeki detayların görülebildiği düşük dinamik aralıklı bir imge elde etmek ise, poz tümleştirme (İng. exposure fusion) adı verilen yöntemler kullanmak mümkündür. Bu yöntemler, girdi fotoğraflardaki piksel değerlerinin doygunluğuna (çok karanlık ya da çok parlak olması durumu) bakarak maskeler üretip, bu maskeler aracılığı ile girdi fotoğrafları tek bir görüntü içerisinde birleştirmeyi amaçlar.

YDA bir imge nasıl kaydedilir?

Şimdi de YDA bir görüntü elde ettikten sonra bu görüntüyü bilgisayarlarımızda nasıl saklayabileceğimizi inceleyelim. Daha önce düşük dinamik aralıklı bir imgenin JPEG gibi standart bir dosya formatında her bir renk kanalı için [0, 255] aralığında 8-bitlik doğal sayılar ile ifade edildiğini söylemiştik. YDA görüntüler çok küçük ve çok büyük piksel değerleri içerebilen ve bilgisayarda kayan virgüllü (İng. floating point) olarak ifade edilen reel sayılardan oluşur. Böylece içerlerinde çok daha fazla bilgiyi barındırabilirler. Bu yüzden bu görüntüleri doğrudan JPEG, PNG gibi standart dosya formatlarında tutmak mümkün değildir. YDA görüntüler için günümüzde en yaygın olarak kullanılan dosya formatının OpenEXR olduğu söylenebilir. Buna ek olarak YDA görüntüleri TIFF ve RGBE formatlarında da saklamak mümkündür.

Gittikçe önem kazanan diğer bir yaklaşım ise YDA görüntüleri geçmişle uyumlu (İng. backward compatible) olarak tanımlanan dosya formatları içerisinde tutmaktır. Bu dosya formatları ana görüntü olarak ton eşlenmiş (bkz. bir sonraki bölüm) DDA bir imge tutarken, YDA imge oluşturabilecek ek bilgileri de üst-veri (İng. meta-data) olarak saklarlar. Böyle bir imge YDA’dan haberi olmayan bir program tarafından açılırsa sadece ana imge gösterilirken, YDA özelliğine sahip bir program tarafından üst veri kullanılarak orijinal YDA görüntüye dönüştürülebilir. Bu yaklaşımı statik görüntüler için JPEG-XT ve videolar için MPEG-HDR adları altında standartlaştırma çalışmaları devam etmektedir.

Bir YDA imge ekranda nasıl gösterilir?

YDA bir imgeyi nasıl çekip nasıl kaydedebileceğimizi kısaca inceledik. Şimdi de son olarak YDA bir görüntüyü bir televizyon ya da bilgisayar ekranında nasıl gösterebileceğimizi inceleyelim. Günlük yaşamda standart olarak kullandığımız ekran teknolojileri YDA özellikli değildir. Yani bu ekranlara gerçek bir YDA verisi veremeyiz. YDA görüntülerin yine bu ekranların anlayabileceği renk kanalı başına 8-bitlik DDA görüntülere dönüştürülmesi gerekir. Biz bu işleme ton eşleme (İng. tone mapping) diyoruz. Ton eşleme temel olarak YDA bir görüntüdeki piksel değerlerini kontrollü bir şekilde sıkıştırarak DDA bir görüntü üretmeyi hedefler. Ton eşlemeye olan ihtiyaç Şekil 7’de gösterilmektedir.

Şekil 7. (a) YDA imgedeki 255’i geçen değerlerin 255’e sabitlenmesi ile elde edilen DDA görüntü. (b) YDA imgedeki değerlerin tümünün [0, 255] aralığına doğrusal olarak sıkıştırılması ile elde edilen görüntü. (c) İyi bir ton eşleme algoritması kullanılarak YDA’dan DDA’ya dönüştürülen görüntü. Fotoğraf: Ahmet Oğuz Akyüz – Orlando, University of Central Florida (CC-BY -NC)
Başka bir örnek olarak Şekil 4’te paylaşılan girdi görüntülerinden oluşturulan bir YDA görüntünün ton eşlenmiş hali Şekil 8’da gösterilmiştir.

Şekil 8. Şekil 4’te gösterilen girdi görüntülerinden oluşturulan YDA görüntünün ton eşlenerek DDA’ya dönüştürülmüş bir örneği. Fotoğraf: Ahmet Oğuz Akyüz – West Palm Beach

Ton eşleme sonucunda YDA görüntü her ne kadar tekrar DDA uzayına çekilmiş de olsa, girdi olarak kullanılan fotoğrafların hiçbirisinde tek başına görünmeyen detayları içerebilir. Okuyucularımız Şekil 4’teki girdi fotoğraflar ile Şekil 8’daki ton eşlenmiş imgeyi karşılaştırarak bunu kendileri gözlemleyebilir.

YDA konusunda son yıllarda yaşanan heyecan verici bir gelişme gerçek anlamda YDA özelliğine sahip televizyonların üretilmeye başlanmış olmasıdır. Burada kastedilen girdi olarak YDA formatında bir imge ya da video alan ve çıktı olarak da gerçek dünyadakine yakın seviyelerde ışık üretebilen bir ekran teknolojisidir. Böyle bir ekranda YDA bir imgeye ya da videoya bakıldığında bir ekrana bakmak yerine pencereden dışarıya, yani gerçek dünyaya bakıyormuş izlenimini almak mümkündür. Bu konuda İtalyan SIM2 firması (http://hdr.sim2.it/) uzun süredir aktif olarak çalışmakta ve çeşitli YDA ekranlar üretmektedir.

Burada dikkat edilmesi gereken önemli bir nokta ekranın sadece yüksek parlaklık üretebilmesi değil, aynı zamanda karanlık pikselleri de çok düşük ışık seviyelerinde gösterebilmesidir. SIM2’nin ürettiği YDA ekranlar yaklaşık 105’lik bir dinamik aralığa sahiptir. Bu da ilk kısımda değindiğimiz gibi insan gözünün tek bir ortam içerisinde algılayabildiği dinamik aralığa karşılık gelmektedir.

SIM2’ya ek olarak LG, Samsung ve Sony gibi büyük oyuncular da artık gerçek anlamda YDA özellikli televizyon modellerini piyasaya sürmeye başlamıştır. Bu televizyonların YDA özelliğinden tam olarak faydalanabilmek için kendilerine verilen yayının da YDA özellikli bir yayın olması gerekir. Bunu sağlayabilmek için HDR10, HDR10+ ya da Dolby Vision adları verilen çeşitli standartlar tanımlanmıştır. Bu standartlar yukarıda bahsettiğimiz MPEG-HDR’a benzer bir şekilde üst-veri kullanımı ile DDA olarak tutulan ana görüntünün televizyon içerisinde YDA’ya dönüştürülmesine olanak tanır. Youtube ve Amazon Prime Video gibi popüler video servisleri artık bu formatta yayınları izleyiciler ile buluşturmaktadır.

Yüksek dinamik aralıklı görüntüleme çeşitli aşamalardan oluşan, her aşamasında çözüldüğü kadar henüz çözülememiş problemler de barındıran, hem endüstriyel hem de akademik açıdan zengin ve önemli bir çalışma konusudur. Nasıl ki siyah beyaz kamera ve televizyonlardan renkli cihazlara geçilmesi çok önemli bir kilometre taşı olduysa, yakın bir gelecekte de düşük dinamik aralıklı görüntü teknolojilerinden yüksek dinamik aralıklı görüntü teknolojilere geçilmesinin benzer derecede önemli bir adım olacağı beklenmektedir.

Ahmet Oğuz Akyüz
Orta Doğu Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

İleri okuma

YDA konusunu merak eden ve bu yazıyı okuduktan sonra bu konuda ellerini kirletmek isteyen okuyucularımız için birkaç ufak öneri ve referanslarla yazımızı tamamlayalım. Öncelikle YDA görüntüler oluşturmak ve bu görüntüleri incelemek için hangi araçları kullanabiliriz, kısaca bir göz atalım. YDA özellikli yazılımların genel bir listesi Star Trek, Lost, 24 gibi birçok bilinen projede görev almış bir görsel efekt sanatçısı olan Christian Bloch tarafından  http://www.hdrlabs.com/tools/links.html adresinde tutuluyor. Buradaki birçok yazılım ücretsiz olarak indirilip kullanılabilir. Bu yazılımlardan birisi olan Bracket, kendi geliştirdiğim ve 2012 yılında kullanıma sunduğum bir program. İlk zamanlarda birden fazla işletim sisteminde (Microsoft Windows, Mac OS X ve Linux) çalışabilen bu yazılım, teknolojinin hızlı değişiminden ötürü günümüzde en kolay olarak Microsoft Windows işletim sistemlerinde kurulabiliyor.

Matlab programında YDA imgeler ile ilgili denemeler yapmak isteyen okuyucularımız İtalya’daki ISTI-CNR araştırma merkezinde çalışan Dr. Francesco Banterle tarafından geliştirilen HDR Toolbox’ı oldukça faydalı bulabilirler. Programlama konusunda deneyimli ve C/C++ gibi dilleri kullanmak isteyen okuyucularımız ise Cambridge Üniversitesi’nde öğretim üyesi olarak çalışan Dr. Rafal Mantiuk tarafından geliştirilen PFSTools kütüphanesinden yararlanabilirler. Son olarak Warwick Üniversitesi’nden Dr. Alan Chalmers ve ekibi tarafından hayata geçirilen İnternet tabanlı YDA görüntü gösterme arayüzü olan OpenHDR Viewer ile hiçbir program kurmaya gerek olmadan YDA görüntüleri inceleyebilirler.

Yazımızı YDA konusunda daha çok bilgi edinmek isteyen okuyucularımız için birkaç kitap önerisi ile sonlandıralım. Bu kitaplardan birincisi YDA görüntüleme konusunda çok büyük katkıları olan araştırmacılar tarafından yazılmış olan “High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting” adlı eserdir. Diğer bir eser yine YDA konusuna büyük katkılar yapmış olan bir ekip tarafından yazılmış olan “Advanced High Dynamic Range Imaging” kitabıdır. Son olarak akademik olmaktan ziyade daha çok son kullanıcı bakış açısından yazılmış olan “The HDRI Handbook 2.0: High Dynamic Range Imaging for Photographers and CG Artists” kitabı da okuyucularımız için faydalı olabilecek son derece pratik bilgiler içermektedir.