Depth Map pada iPhone 15 Pro
(tech.marksblogg.com)- Sejak 2017, iPhone telah menyimpan Depth Map bersama gambar yang diambil melalui LiDAR, 3D time-of-flight, dan pemindaian 3D structured-light, dan data ini juga dapat diekstrak dari file HEIC iPhone 15 Pro
- Kontainer HEIC/HEIF dapat memuat bukan hanya gambar asli, tetapi juga HDR gain map, Depth Map, dan metadata dalam jumlah besar, sehingga menyimpan lebih banyak informasi untuk dianalisis dibanding JPEG sederhana
- HEIC Shenanigans dari Finn Jaeger adalah kumpulan skrip Python untuk memisahkan gambar dan metadata di dalam HEIC serta mengonversinya ke EXR; pada saat penulisan, ukurannya 374 baris
- Dari contoh HEIC berukuran 1,57MB dihasilkan base TIFF 71MB, HDR gain map TIFF 5,9MB, depth TIFF 433KB, dan metadata JSON 14KB; resolusi Depth Map adalah 768×576, lebih rendah dari gambar asli 5712×4284
- Konversi OpenEXR menggabungkan kanal SDR, HDR gain map, dan Depth Map melalui OpenImageIO, OpenColorIO, serta konfigurasi ACES, dan file EXR akhir membesar hingga 468MB
Cara penyimpanan Depth Map di dalam foto iPhone
- Sejak 2017, Apple mendukung Depth Map pada gambar yang diambil dengan iPhone
- Metode yang didukung mencakup pemindai LiDAR, 3D time-of-flight scanner-less LIDAR, dan pemindaian 3D structured-light
- Depth Map dan gambar lain disimpan bersama dalam file kontainer HEIF
- HEIF dapat memuat banyak gambar dan banyak metadata
- Format ini dirancang pada 2013–2015, dan Apple mengadopsi varian HEIC pada 2017
- Sejak itu, gambar yang diambil dengan iPhone secara default disimpan dalam kontainer HEIC
- Jika Depth Map dan HDR tidak diperlukan, format JPEG juga dapat digunakan
Memisahkan gambar internal dengan HEIC Shenanigans
- Finn Jaeger memublikasikan tangkapan layar yang menunjukkan iPhone menghasilkan beberapa Depth Map
- HEIC Shenanigans menyediakan skrip untuk memisahkan gambar dan metadata dari kontainer HEIC serta mengonversinya menjadi file EXR
- Pada saat penulisan, proyek ini memiliki 374 baris kode Python
- Contohnya menggunakan gambar HEIC yang diambil dengan iPhone 15 Pro untuk mengikuti codebase Finn
Lingkungan eksekusi dan alat yang perlu disiapkan
- Untuk menjalankannya diperlukan Python 3.12.3 dan beberapa alat CLI
jqopenexrlibimage-exiftool-perllibopenexr-devpython3-pippython3.12-venv
- Paket
libimage-exiftool-perlmemasang exiftool 12.76+dfsg-1- Versi ini dirilis pada akhir Januari 2024
- Setelah itu, ada setidaknya 10 rilis yang mencakup perbaikan atau peningkatan untuk masalah dukungan HEIC
- Versi tersebut sudah cukup untuk langkah-langkah contoh, tetapi jika masalah muncul kemudian, mungkin sudah diselesaikan di exiftool terbaru
- JSON Convert
jcdigunakan untuk mengubah output berbagai alat CLI menjadi JSON - Gambar EXR diperiksa dengan DJV v2.0.8
Mengekstrak Gain Map dan Depth Map dari HEIC
- Ukuran file HEIC contoh adalah 1,57MB
- Menjalankan
gain_map_extract.pymenghasilkan file-file berikutIMG_E2153_metadata.json: 14KBIMG_E2153_depth_0.tiff: 433KBIMG_E2153_hdrgainmap_48.tiff: 5,9MBIMG_E2153_base.tiff: 71MB
- Metadata EXIF pada base TIFF memiliki karakteristik berikut
- Format file: TIFF
- Kompresi: Uncompressed
- Warna: RGB
- Ukuran gambar: 5712×4284
- Megapiksel: 24,5
- Bits Per Sample: 8 8 8
- HDR Gain Map dan Depth Map memiliki resolusi lebih rendah daripada gambar asli
- Gambar asli: 5712×4284
- HDR Gain Map: 2856×2142
- Depth Map: 768×576
- Metadata JSON mencakup
aux,nclx_profile,primary,xmp, dan lainnya- Item
urn:com:apple:photo:2020:aux:hdrgainmapmemiliki nilai[48] - Ukuran
primaryditampilkan sebagai[5712, 4284]
- Item
- Tiga issue GitHub telah didaftarkan untuk meminta nilai yang dienkode base64 didekode ke bentuk yang bisa dibaca manusia
Alur konversi HEIC ke OpenEXR
- Academy Software Foundation mensponsori proyek dan standar open source yang digunakan di industri film, TV, dan kreatif
- Anggotanya mencakup Academy of Motion Picture Arts and Sciences, Disney, Nvidia, Netflix, dan lainnya
- OpenEXR adalah format file gambar HDR
- Pertama kali dikembangkan oleh Industrial Light and Magic pada 1999
- Dirilis sebagai open source pada 2003
- Digunakan dalam produksi efek visual dan rendering 3D
- Menjalankan
heic_to_exr.pymengonversi gambar HEIC iPhone 15 Pro menjadi file OpenEXR- Ukuran file hasilnya adalah 468MB
- Skrip konversi memanggil
oiiotool, alat pemrosesan gambar dari OpenImageIO, beberapa kali
Komposisi kanal pada tahap pembuatan EXR
- Pertama, ukuran gambar sumber diperiksa dengan
oiiotool --info - Gambar base memberi nama kanal RGB sebagai
sdr.R,sdr.G,sdr.Bdan mengonversi ruang warna- Dari kurva sRGB melalui Linear Rec.709
- Dari Linear P3-D65 dikonversi ke ACEScg
- File konfigurasi OpenColorIO digunakan untuk konversi warna
- File OCIO yang digunakan adalah
studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio - File tersebut berbasis teks dan terdiri dari 1.242 baris
- Deskripsinya mencakup
Academy Color Encoding System - Studio Config [COLORSPACES v1.0.0] [ACES v1.3] [OCIO v2.1]
- File OCIO yang digunakan adalah
- HDR gain map dibuat sebagai EXR menggunakan kanal Y dari TIFF
- Diberi nama kanal
gainmap.Y - Ukurannya diubah menjadi 4032×3024
- Dikonversi dari kurva Rec.709 ke Linear
- Diberi nama kanal
- Gain map diubah menjadi RGB dengan menggandakan kanal Y tiga kali
gainmap.Rgainmap.Ggainmap.B
- Setelah nilai
HDRGainMapHeadroomdiekstrak denganexiftool, gain map diskalakan menggunakan kebalikan dari nilai headroom tersebut - Gambar HDR base dibuat dengan mengalikan gambar base dan gain map yang telah diskalakan
- Depth Map membuat kanal
depth.Ydalam format EXR dari kanal Y TIFF- Ukurannya diubah menjadi 4032×3024
- File EXR akhir disusun dengan menambahkan beberapa kanal secara berurutan
R,G,Bdari HDR basesdr.R,sdr.G,sdr.Bdari SDR basegainmap.R,gainmap.G,gainmap.Bdari gain mapdepth.Ydari Depth Map
- Jika gambar sumber memiliki matte, layer matte juga diproses dan ditambahkan pada tahap tersebut
- File akhir
final.exrdipindahkan ke samping gambar sumber dengan nama<prefix>_acesCG.exr
1 komentar
Opini Hacker News
Seperti yang ditunjukkan komentar lain dengan tepat, resolusi LIDAR terlalu rendah untuk dipakai sebagai data utama peta kedalaman.
Setahu saya, iPhone memperoleh data kedalaman kira-kira lewat empat cara, tergantung model dan kameranya. Dulu peta kedalaman seperti ini hanya disimpan dalam mode Potret, tetapi iPhone terbaru tampaknya juga menyimpannya pada foto biasa.
Gambar bantu di artikel yang menandai orang, kacamata, rambut, dan kulit dengan warna putih disebut Apple sebagai portrait effects mattes, dan dibuat dengan machine learning.
Dulu saya pernah membuat aplikasi yang memakai peta kedalaman dan portrait effects mattes dari foto Potret untuk membuat filter kreatif, dan itu cukup menyenangkan, tetapi sekarang sudah ditarik. Ada banyak kemungkinan artistik baru dalam peta kedalaman.
Saya penasaran apa nama aplikasi itu dan apakah masih ada videonya. Saya juga membuat alat kecil bernama Matte Viewer sebagai bagian dari rangkaian alat foto; tidak ada efek, hanya mendukung melihat dan mengekspor: https://apps.apple.com/us/app/matte-viewer/id6476831058
Artikel yang menarik. Peta kedalaman seperti ini tampaknya dipakai untuk blur latar depth of field pada mode “Potret”, alias bokeh palsu.
Saya selalu menganggap menarik bahwa setelah mengambil foto pun kita bisa mengubah fokus dan mengatur depth of field dengan “aperture”, tetapi bentuk bokeh palsu itu kurang bagus. Selalu terlihat seperti Photoshop yang kasar.
Sepertinya ada salah ketik dalam penulisan format file: “HEIC” 14 kali, “HIEC” 3 kali.
Rasanya bisa dibuat aplikasi kamera yang lebih baik dengan matematika aperture yang benar, tetapi saya penasaran apakah orang mau membayar untuk itu, atau apakah pengguna ponsel tidak merasakan perbedaannya dan tidak peduli.
Jika ingin foto potret yang indah, membeli atau meminjam DSLR murah akan memberi hasil 100 kali lebih baik.
Reality Composer untuk iOS punya fitur khusus untuk menangkap objek dengan LIDAR.
Saya kecewa saat mengetahui bahwa pada perangkat Apple tanpa LIDAR, fitur itu tidak digantikan dengan fotogrametri. Ini bisa menjadi referensi bagi orang seperti saya yang ingin mengerjakan pemodelan 3D atau fotogrametri.
Untuk memindai objek kecil, saya membeli Creality Ferret SE di TikTok seharga sekitar 100 dolar, dan hasilnya sangat bagus.
Saya juga mendengar ulasan bagus bahwa Canvas membutuhkan LiDAR, sedangkan Scaniverse menjadikan LiDAR opsional.
Peta kedalaman dan peta semantik cukup menyenangkan untuk dilihat, dan jika dimasukkan ke program seperti TouchDesigner, Blender, atau Cinema 4D, kita bisa membuat efek kedalaman yang keren dari foto.
Ini juga bisa dipakai untuk pemrosesan foto, dan pada akhirnya Apple juga menggunakannya untuk tujuan semacam itu.
Dulu data ini hanya disimpan dalam mode Potret, tetapi iPhone terbaru hampir otomatis menyimpannya jika orang atau hewan peliharaan terdeteksi dalam adegan.
Saya sedang membuat aplikasi dan alat foto (https://heliographe.net), dan salah satunya, Matte Viewer, adalah alat untuk melihat dan mengekspor data seperti ini: https://apps.apple.com/us/app/matte-viewer/id6476831058
Resolusi LIDAR itu sendiri jauh lebih rendah daripada peta kedalaman yang ditampilkan dalam artikel. Itu harus dibuat dengan menggabungkan data LIDAR dan kamera biasa.
Artikel ini membahas HDR gain map cukup panjang, tetapi saya kurang paham apa kaitannya dengan depth map
Saya penasaran apakah pemrosesan terkait HDR gain map bisa dilewati sambil tetap mempertahankan depth map
Secara pribadi saya tidak suka tampilan HDR di iPhone. Karena itu menaikkan kecerahan layar melebihi batas maksimum yang ditetapkan pengguna. Di foto saya, saya berusaha menghapus HDR gain map
HDR lama berarti mengambil tiga foto lalu menggabungkannya sambil menghilangkan bagian yang underexposed dan overexposed, dan gambar hasilnya tidak membawa informasi terpisah bahwa dirinya HDR
Saya penasaran apakah depth map bisa dipakai untuk membuat stereogram atau SIRDS. Saya ingat dulu pernah membuat stereogram dari gambar grayscale yang sangat mirip
Jika foto di album memiliki depth map, atau resolusinya cukup tinggi sehingga pendekatan machine learning bisa cukup baik, foto itu bisa dikonversi ke “Spatial Format”
EXIF juga dibaca untuk “menskalakan” ukuran fisik gambar sesuai sudut pandang pengambilan aslinya. Jadi foto wide-angle terlihat jauh lebih besar secara fisik di ruang VR dibandingkan foto telephoto
Bagi saya pribadi, tombol dan fitur ini saja sudah membenarkan 4.000 dolar yang saya keluarkan untuk perangkat itu. Melihat foto yang saya ambil dengan Nikon D7 pada 2007 dalam 3D penuh dan skala yang benar membuat nostalgia dan ingatan lama yang sudah terlupakan muncul kembali, cukup emosional
Apple keliru karena tidak menjadikan ini sebagai nilai jual utama Vision Pro. Ini benar-benar luar biasa
Saya penasaran apakah Apple memakai ini untuk fitur “create sticker”, yaitu menekan lama subjek dalam foto untuk menjadikannya stiker atau menyalinnya ke gambar lain
Informasi kedalaman pun kemungkinan besar sebenarnya tidak banyak membantu. Kalau begitu, lantai atau meja tempat subjek berada akan ikut hampir semuanya
Ini kemungkinan adalah pendekatan segmentasi semantik yang hanya memakai machine learning
Saya menunggu hari ketika semua hardware ponsel secara bawaan bisa mengambil gambar 3D dengan Gaussian splatting tanpa sensor mahal
Biaya komputasinya mungkin besar, tetapi barangkali tetap lebih murah daripada menambahkan sensor mahal dan menambah bobot
Situsnya berperilaku aneh di Chrome iOS. Saat halaman digulir ke bawah, ukuran font membesar, lalu saat digulir ke atas kembali mengecil, cukup membingungkan
Meski begitu, saya baru tahu tentang oiiotool, dan itu sangat keren