iPhone 15 Pro'nun Depth Map'i
(tech.marksblogg.com)- iPhone, 2017'den beri LiDAR, 3D time-of-flight ve yapılandırılmış ışıkla 3D tarama kullanarak çekilen görüntülerle birlikte Depth Map de kaydediyor; bunu iPhone 15 Pro'nun HEIC dosyalarından da çıkarıp görmek mümkün
- HEIC/HEIF kapsayıcısı yalnızca orijinal görüntüyü değil, HDR gain map, Depth Map ve büyük miktarda meta veriyi de barındırabildiği için, basit bir JPEG'e kıyasla analiz edilecek çok daha fazla bilgi sunuyor
- Finn Jaeger'in HEIC Shenanigans aracı, HEIC içindeki görüntüleri ve meta verileri ayırıp EXR'ye dönüştüren bir Python betikleri koleksiyonu; yazının kaleme alındığı sırada toplam 374 satırdan oluşuyor
- 1.57MB'lık örnek bir HEIC dosyasından base TIFF 71MB, HDR gain map TIFF 5.9MB, depth TIFF 433KB ve metadata JSON 14KB üretildi; Depth Map çözünürlüğü de orijinal 5712×4284 yerine daha düşük olan 768×576 seviyesinde
- OpenEXR dönüşümü, OpenImageIO, OpenColorIO ve ACES ayarları üzerinden SDR, HDR gain map ve Depth Map kanallarını birleştiriyor; ortaya çıkan son EXR dosyası 468MB'a kadar büyüyor
iPhone fotoğraflarında Depth Map nasıl saklanıyor?
- Apple, 2017'den beri iPhone ile çekilen görüntülerde Depth Map desteği sunuyor
- Desteklenen yöntemler arasında LiDAR tarayıcı, 3D time-of-flight scanner-less LIDAR ve structured-light 3D tarama yer alıyor
- Depth Map ve diğer görüntüler birlikte HEIF kapsayıcı dosyasında saklanıyor
- HEIF, birden fazla görüntü ve çok sayıda meta veri taşıyabiliyor
- Biçim 2013–2015 arasında tasarlandı ve Apple 2017'de HEIC varyantını benimsedi
- iPhone ile çekilen görüntüler o tarihten sonra varsayılan olarak HEIC kapsayıcısında kaydediliyor
- Depth Map ve HDR gerekmiyorsa JPEG biçimi de kullanılabiliyor
HEIC Shenanigans ile iç görüntüleri ayırma
- Finn Jaeger, iPhone'un birden fazla Depth Map oluşturduğunu gösteren ekran görüntüleri paylaştı
- HEIC Shenanigans, HEIC kapsayıcısından görüntüleri ve meta verileri ayırıp EXR dosyasına dönüştüren betikler sağlıyor
- Yazının kaleme alındığı sırada projede 374 satırlık Python kodu bulunuyor
- Örnek, iPhone 15 Pro ile çekilmiş bir HEIC görüntüsü üzerinden Finn'in kod tabanını takip ediyor
Çalışma ortamı ve gerekli araçlar
- Çalıştırmak için Python 3.12.3 ve çeşitli CLI araçları gerekiyor
jqopenexrlibimage-exiftool-perllibopenexr-devpython3-pippython3.12-venv
libimage-exiftool-perlpaketi exiftool 12.76+dfsg-1 sürümünü kuruyor- Bu sürüm 2024 Ocak ayının sonunda yayımlandı
- Sonrasında HEIC desteğindeki hata düzeltmeleri veya iyileştirmeleri içeren en az 10 sürüm daha çıktı
- Örnek adımlar için bu sürüm yeterli, ancak sonrasında sorun yaşanırsa çözüm yeni exiftool sürümlerinde gelmiş olabilir
- JSON Convert
jc, çeşitli CLI araçlarının çıktısını JSON'a dönüştürmek için kullanılıyor - EXR görüntüleri DJV v2.0.8 ile incelendi
HEIC'ten Gain Map ve Depth Map çıkarma
- Örnek HEIC dosyasının boyutu 1.57MB
gain_map_extract.pyçalıştırıldığında şu dosyalar üretiliyorIMG_E2153_metadata.json: 14KBIMG_E2153_depth_0.tiff: 433KBIMG_E2153_hdrgainmap_48.tiff: 5.9MBIMG_E2153_base.tiff: 71MB
- Base TIFF'in EXIF meta verisi şu özelliklere sahip
- Dosya biçimi: TIFF
- Sıkıştırma: Uncompressed
- Renk: RGB
- Görüntü boyutu: 5712×4284
- Megapiksel: 24.5
- Bits Per Sample: 8 8 8
- HDR Gain Map ve Depth Map, orijinalden daha düşük çözünürlüklü
- Orijinal görüntü: 5712×4284
- HDR Gain Map: 2856×2142
- Depth Map: 768×576
- JSON meta verisinde
aux,nclx_profile,primary,xmpgibi alanlar yer alıyorurn:com:apple:photo:2020:aux:hdrgainmapgirdisi[48]değerine sahipprimaryboyutu[5712, 4284]olarak görünüyor
- Base64 ile kodlanmış değerlerin insan tarafından okunabilir biçimde çözümlenmesini isteyen 3 GitHub issue açıldı
HEIC'ten OpenEXR'ye dönüştürme akışı
- Academy Software Foundation, sinema, TV ve yaratıcı endüstrilerde kullanılan açık kaynak projeleri ve standartları destekliyor
- Üyeleri arasında Academy of Motion Picture Arts and Sciences, Disney, Nvidia ve Netflix de bulunuyor
- OpenEXR, bir HDR görüntü dosyası biçimi
- İlk olarak 1999'da Industrial Light and Magic tarafından geliştirildi
- 2003'te açık kaynak olarak yayımlandı
- Görsel efekt ve 3D render üretiminde kullanılıyor
heic_to_exr.pyçalıştırıldığında iPhone 15 Pro HEIC görüntüsü bir OpenEXR dosyasına dönüştürülüyor- Ortaya çıkan dosyanın boyutu 468MB
- Dönüştürme betiği, OpenImageIO'nun görüntü işleme aracı
oiiotoolu birden fazla kez çağırıyor
EXR oluşturma aşamasındaki kanal yapısı
- Önce
oiiotool --infoile kaynak görüntünün boyutu kontrol ediliyor - Base görüntüdeki RGB kanalları
sdr.R,sdr.G,sdr.Bolarak adlandırılıyor ve renk uzayı dönüştürülüyor- sRGB eğrisinden Linear Rec.709'a geçiliyor
- Linear P3-D65'ten ACEScg'ye dönüştürülüyor
- Renk dönüşümünde OpenColorIO yapılandırma dosyası kullanılıyor
- Kullanılan OCIO dosyası
studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio - Bu dosya metin tabanlı ve 1.242 satırdan oluşuyor
- Açıklamasında
Academy Color Encoding System - Studio Config [COLORSPACES v1.0.0] [ACES v1.3] [OCIO v2.1]ifadesi yer alıyor
- Kullanılan OCIO dosyası
- HDR gain map, TIFF içindeki Y kanalı kullanılarak EXR olarak oluşturuluyor
gainmap.Ykanalı adı veriliyor- Boyut 4032×3024 olarak yeniden ölçeklendiriliyor
- Rec.709 eğrisinden Linear'a dönüştürülüyor
- Gain map, Y kanalının üç kez kopyalanmasıyla RGB'ye dönüştürülüyor
gainmap.Rgainmap.Ggainmap.B
exiftoolileHDRGainMapHeadroomdeğeri çıkarıldıktan sonra gain map, bu headroom değerinin tersi kullanılarak ölçekleniyor- HDR base görüntü, base görüntü ile ölçeklenmiş gain map'in çarpılmasıyla oluşturuluyor
- Depth Map, TIFF içindeki Y kanalıyla EXR biçiminde
depth.Ykanalı olarak üretiliyor- Boyut 4032×3024 olarak yeniden ölçeklendiriliyor
- Son EXR dosyası, birden fazla kanalın sırayla eklenmesiyle oluşturuluyor
- HDR base'in
R,G,Bkanalları - SDR base'in
sdr.R,sdr.G,sdr.Bkanalları - Gain map'in
gainmap.R,gainmap.G,gainmap.Bkanalları - Depth Map'in
depth.Ykanalı
- HDR base'in
- Kaynak görüntüde matte varsa bu aşamada matte katmanı da işlenip ekleniyor
- Son
final.exrdosyası, kaynak görüntünün yanına<prefix>_acesCG.exradıyla taşınıyor
1 yorum
Hacker News yorumları
Diğer yorumların doğru şekilde belirttiği gibi LIDAR çözünürlüğü, derinlik haritasının ana verisi olarak kullanılmak için fazla düşük.
Bildiğim kadarıyla iPhone, modele ve kameraya bağlı olarak derinlik verisini kabaca dört yöntemle elde ediyor. Eskiden bu tür derinlik haritaları yalnızca portre fotoğrafı modunda kaydedilirdi, ancak yeni iPhone’lar normal fotoğraflarda da kaydediyor gibi görünüyor.
Yazıda görülen; insanları, gözlükleri, saçları ve cildi beyazla gösteren yardımcı görüntülere Apple portrait effects mattes diyor ve bunlar makine öğrenmesiyle üretiliyor.
Eskiden portre fotoğraflarındaki derinlik haritası ve portrait effects mattes verilerini kullanarak yaratıcı filtreler yapan bir uygulama geliştirmiştim; oldukça eğlenceliydi ama artık yayında değil. Derinlik haritalarında yeni sanatsal olanak çok fazla.
O uygulamanın adının ne olduğunu ve geriye bir videosu kalıp kalmadığını merak ediyorum. Ben de fotoğraf araçları serimin bir parçası olarak Matte Viewer adlı küçük bir araç yaptım; efekt yok, yalnızca görüntüleme ve dışa aktarma destekliyor: https://apps.apple.com/us/app/matte-viewer/id6476831058
İlginç bir yazı. Bu tür derinlik haritaları “portre fotoğrafı” modundaki alan derinliği arka plan bulanıklığı, yani sahte bokeh için kullanılıyor gibi görünüyor.
Fotoğrafı çektikten sonra bile odağı değiştirebilmek ve “diyafram” ile alan derinliğini ayarlayabilmek her zaman ilginç gelmiştir, ama sahte bokeh’in görünümü pek iyi değil. Her zaman kötü yapılmış Photoshop gibi duruyor.
Dosya biçimi yazımında bir yazım hatası var gibi: “HEIC” 14 kez, “HIEC” 3 kez
Doğru diyafram matematiğiyle daha iyi bir kamera uygulaması yapılabilir gibi, ama insanların bunun için para ödeyip ödemeyeceğini ya da telefon kullanıcılarının farkı görmeyip umursamayacağını merak ediyorum.
Güzel portre fotoğrafları istiyorsanız ucuz bir DSLR almak ya da kiralamak, 100 kat daha iyi sonuç verir.
iOS için Reality Composer’da LIDAR kullanarak nesne yakalamaya yönelik özel bir özellik var.
LIDAR olmayan Apple cihazlarında bunun fotogrametriyle ikame edilmediğini öğrenince hayal kırıklığına uğradım. Benim gibi 3D modelleme veya fotogrametri işi yapmak isteyenler için not düşülebilir.
Küçük nesne taraması için TikTok’tan yaklaşık 100 dolara Creality Ferret SE aldım, çok iyi.
Canvas’ın LiDAR gerektirdiğini, Scaniverse içinse LiDAR’ın isteğe bağlı olduğuna dair iyi yorumlar duydum.
Derinlik haritaları ve anlamsal haritalar bakması oldukça keyifli şeyler; TouchDesigner, Blender, Cinema 4D gibi programlara aktarıldıklarında fotoğraflarla harika derinlik efektleri yapılabiliyor.
Fotoğraf işlemede de kullanılabiliyorlar; zaten Apple da sonunda bu amaçla kullanıyor.
Eskiden yalnızca portre fotoğrafı modunda kaydedilirlerdi, ancak yeni iPhone’lar sahnede insan veya evcil hayvan algılandığında neredeyse otomatik olarak kaydediyor.
Fotoğraf uygulamaları ve araçları geliştiriyorum (https://heliographe.net); bunlardan Matte Viewer, bu verileri görüntülemek ve dışa aktarmak için bir araç: https://apps.apple.com/us/app/matte-viewer/id6476831058
LIDAR’ın kendi çözünürlüğü, yazıda gösterilen derinlik haritasından çok daha düşük. LIDAR ile normal kamera verilerinin birleştirilmesiyle oluşturuluyor olmalı.
Yazı HDR gain map konusunu epey uzun ele alıyor; bunun derinlik haritasıyla neden ilgili olduğunu pek anlamadım
HDR gain map ile ilgili işlemleri atlayıp derinlik haritasını korumanın mümkün olup olmadığını merak ediyorum
Kişisel olarak iPhone’un HDR gösterimini sevmiyorum. Çünkü ekran parlaklığını kullanıcının belirlediği maksimum parlaklığın üzerine çıkarıyor. Kendi fotoğraflarımda HDR gain map’i kaldırmaya çalışıyorum
Eskiden HDR, üç kare çekip birleştirerek az ve fazla pozlanmış kısımları ortadan kaldırmak anlamına gelirdi; ortaya çıkan görüntü de HDR olduğuna dair ayrı bir bilgi taşımazdı
Derinlik haritasıyla stereogram ya da SIRDS yapılabilir mi merak ediyorum. Eskiden çok benzer gri tonlamalı görüntülerden stereogram oluşturduğumu hatırlıyorum
Albümdeki fotoğrafta derinlik haritası varsa ya da çözünürlük makine öğrenimiyle yapılan yaklaşımın yeterince iyi çalışmasına yetecek kadar yüksekse, “Spatial Format”a dönüştürülebiliyor
EXIF’i de okuyup görüntünün fiziksel boyutunu, orijinal çekim görüş açısına uyacak şekilde “ölçekliyor”. Bu yüzden geniş açı fotoğraflar VR alanında telefoto fotoğraflardan fiziksel olarak çok daha büyük görünüyor
Kişisel olarak sırf bu düğme ve özellik bile cihaza harcadığım 4.000 doları haklı çıkarıyor. 2007’de Nikon D7 ile çektiğim fotoğrafları tam 3D ve doğru ölçekle görmek, uzun süredir unutulmuş nostalji ve anıları canlandırdığı için epey duygusaldı
Apple’ın bunu Vision Pro’nun temel satış noktalarından biri olarak öne çıkarmaması bir hata. Gerçekten inanılmaz
Apple’ın fotoğraftaki özneyi uzun basarak çıkartma yapmaya veya başka bir görüntüye kopyalamaya yarayan “create sticker” özelliğinde bunu kullanıp kullanmadığını merak ediyorum
Derinlik bilgisinin de gerçekte pek yardımcı olmaması muhtemel. Öyle olsaydı öznenin bulunduğu zemin ya da masa da neredeyse tamamen dahil edilirdi
Bu muhtemelen yalnızca makine öğrenimi kullanan bir semantik segmentasyon yaklaşımıdır
Pahalı sensörler olmadan tüm telefon donanımlarının varsayılan olarak Gaussian splatting kullanarak 3D görüntüler çektiği günü bekliyorum
Hesaplama maliyeti yüksek olabilir, ama pahalı sensörler ekleyip ağırlığı artırmaktan muhtemelen daha ucuz olabilir
Site iOS Chrome’da garip davranıyor. Sayfayı aşağı kaydırınca yazı tipi boyutu büyüyor, yukarı kaydırınca tekrar küçülüyor; bu da epey kafa karıştırıcı
Yine de oiiotool’u ilk kez öğrendim, çok harika