- iPhone 15 Pro डिफ़ॉल्ट रूप से ऐसी HEIC फ़ॉर्मैट इमेज सेव करता है जिनमें depth map शामिल होता है
- HEIC फ़ाइल में कई इमेज और विशाल metadata साथ में सेव होते हैं, जबकि JPEG चुनने पर depth map, HDR आदि शामिल नहीं होते
- ओपन सोर्स प्रोजेक्ट HEIC Shenanigans के ज़रिए HEIC फ़ाइल से इमेज और metadata निकालकर उन्हें EXR फ़ॉर्मैट में बदला जा सकता है
- कन्वर्ज़न प्रक्रिया में OpenEXR, OpenImageIO, OpenColorIO जैसे फ़िल्म/TV इंडस्ट्री में इस्तेमाल होने वाले विभिन्न standards और tools का उपयोग होता है
- नतीजतन iPhone 15 Pro फ़ोटो की HDR, SDR, Gain Map, Depth Map जानकारी को EXR फ़ॉर्मैट में अलग करके इस्तेमाल किया जा सकता है
iPhone 15 Pro depth map सपोर्ट की पृष्ठभूमि
- 2017 से Apple अपने iPhone में LiDAR scanner, 3D Time-of-Flight, Structured-Light scanning का उपयोग करके कैमरा इमेज में depth map जानकारी शामिल कर रहा है
- ये depth map, metadata और इमेज के कई versions HEIF(HEIC) फ़ॉर्मैट में सेव किए जाते हैं
- HEIC एक efficient image storage format है, जिसे 2017 के बाद iPhone के डिफ़ॉल्ट image format के रूप में अपनाया गया
- JPEG फ़ॉर्मैट इस्तेमाल करने पर depth map और HDR जैसी उन्नत सुविधाएँ उपलब्ध नहीं होतीं
HEIC में depth map देखने का उदाहरण
- जर्मनी के हैम्बर्ग स्थित फ़िल्म प्रोडक्शन कंपनी Replayboys के VFX प्रमुख Finn Jaeger ने iPhone से बने multiple depth maps के screenshots और प्रोजेक्ट की प्रगति साझा की
- Finn Jaeger का HEIC Shenanigans प्रोजेक्ट HEIC container से individual images और metadata निकालकर उन्हें EXR files में बदलने वाली 374-line Python script उपलब्ध कराता है
डेवलपमेंट environment जानकारी
- इस्तेमाल किया गया workstation Ryzen 9 9950X 16-core CPU, 96GB DDR5 RAM, 4TB NVMe SSD, ASRock X870E Nova 90 motherboard और Windows 11 Pro environment पर Ubuntu 24 LTS(WLS2) के साथ चलाया गया
- Nvidia GTX 1080 के उपयोग आदि के कारण Windows मुख्य environment है, और कुछ software compatibility वजहों से इसे चुना गया
मुख्य tools और libraries की तैयारी
- Python 3.12.3 environment तथा अन्य CLI, image conversion/processing libraries की स्थापना आवश्यक है
- exiftool HEIC सपोर्ट में महत्वपूर्ण भूमिका निभाता है, और नवीनतम version में अधिक features और bug fixes शामिल हो सकते हैं
- jc(JSON Convert) CLI output को JSON में बदलकर pipeline usability बढ़ाता है
- HEIC Shenanigans repository को clone करके Python virtual environment में dependencies install की जाती हैं
- अंतिम EXR images को DJV viewer में देखा जा सकता है
कन्वर्ज़न डेमो और sample image
- ArcGIS product suite के विशेषज्ञ Joel Joseph द्वारा भारत के मुंबई में iPhone 15 Pro से ली गई HEIC image sample का उपयोग किया गया
HEIC → EXR कन्वर्ज़न और workflow
- Academy Software Foundation फ़िल्म/TV/digital post-production में इस्तेमाल होने वाले open source projects और standards का नेतृत्व करता है
- इसके प्रोजेक्ट्स में OpenEXR एक high dynamic range(HDR) image format है, जिसे ILM के नेतृत्व में 1999 में विकसित किया गया, 2003 में open source किया गया, और visual effects व 3D rendering आदि में उपयोग होता है
EXR कन्वर्ज़न के ठोस चरण
- heic_shenanigans की heic_to_exr.py script का उपयोग करके input HEIC image को EXR file में बदला जाता है
- कन्वर्ज़न का परिणाम(EXR) 468MB आकार का है और इसमें विभिन्न image/map जानकारी एक ही file में शामिल है
oiiotool script का उपयोग
- image size निकालना
- sRGB image को Linear P3 → ACEScg में color space और gamma सहित बदलना
- OpenColorIO(OCIO) config file का उपयोग करके color profile, colorspace conversion आदि करना
- HDR Gain Map को Rec709 से Linear में बदलना और Y channel → RGB में expand करना
- Gain Map के headroom value को निकालकर inverse scale लागू करना
- HDR base image को Gain Map के साथ multiplication operation के ज़रिए बनाना
- depth map के Y channel को निकालकर EXR फ़ॉर्मैट में सेव करना
- अंतिम चरण में बने प्रत्येक channel(RGB, SDR, Gain Map, Depth Map) को EXR file के अंदर अलग channels के रूप में जोड़ना
EXR के अंदर channel संरचना
- EXR में नीचे दी गई जानकारी channels के अनुसार सेव होती है
- HDR base image का RGB
- SDR channel(अलग से सेव)
- Gain Map
- Depth Map
- Matte layer होने पर उसे अतिरिक्त रूप से शामिल किया जा सकता है
उपयोग और संदर्भ बिंदु
- इस प्रक्रिया के ज़रिए iPhone 15 Pro से ली गई इमेज की depth, HDR जैसी मिश्रित जानकारी को professional format(EXR) में अलग करके उपयोग किया जा सकता है
- यह machine learning, 3D rendering, फ़िल्म·VFX जैसे विभिन्न data pipelines में iPhone से ली गई इमेज के कुशल उपयोग की संभावना दिखाता है
1 टिप्पणियां
Hacker News राय
जैसा कि दूसरों ने बताया, मैं यह ज़ोर देकर कहना चाहूँगा कि iPhone का LIDAR depth map के मुख्य data source के रूप में इस्तेमाल करने के लिए काफ़ी low-resolution है। वास्तव में iPhone model या इस्तेमाल किए जा रहे camera के अनुसार लगभग चार तरह से depth data निकालता है। पहले यह सिर्फ़ portrait mode फ़ोटो पर लागू होता था, लेकिन हाल के iPhone सामान्य फ़ोटो में भी depth map रिकॉर्ड करते हैं।
लेख में आने वाली subject separation और चश्मा, बाल, त्वचा आदि की पहचान के लिए सहायक images (portrait effect matte) machine learning का output हैं।
मैंने भी portrait के depth map और matte images का इस्तेमाल करके एक creative filter app बनाया था। अब वह नहीं है, लेकिन वह सचमुच बहुत मज़ेदार अनुभव था। depth map का उपयोग करने वाले कलात्मक ideas की कोई सीमा नहीं है.
हाल के iPhone में, जब subject (इंसान या पालतू जानवर) पहचाना जाता है, तो main photo mode में भी depth map अपने-आप रिकॉर्ड हो जाता है। पहले depth map और portrait effect matte के साथ creative filter app विकसित करने का अनुभव रहा है, इसलिए जानना चाहता हूँ कि उस app का नाम और उससे जुड़े वीडियो देखे जा सकते हैं या नहीं।
संदर्भ के लिए, मैंने Matte Viewer नाम का एक utility tool भी बनाया था, लेकिन वह सिर्फ़ matte और depth map देखने के लिए है (Matte Viewer ऐप)
मैं यह रेखांकित करना चाहूँगा कि LIDAR full-resolution depth map बनाने के लिए नहीं, बल्कि autofocus (AF) और low-light माहौल में तेज़ focusing के लिए optimized hardware है
तीसरा तरीका 5 साल पुरानी बात है, इसलिए हाल के machine learning आधारित depth estimation open source को देखना बेहतर होगा (ml-depth-pro)
यह भी जानना चाहूँगा कि चौथा TrueDepth तरीका security apps में liveness detection के लिए इस्तेमाल किया जा सकता है या नहीं
यह वाकई बहुत दिलचस्प लेख था। यह प्रभावशाली है कि इस तरह का depth map data आख़िरकार background blur (depth of field, यानी faux bokeh) लागू करने में इस्तेमाल होता है।
फ़ोटो लेने के बाद भी focus और depth area, यानी aperture, को बाद में adjust किया जा सकता है, यह काफ़ी अद्भुत है, लेकिन artificial bokeh मुझे ज़्यादा पसंद नहीं। यह नकली लगता है, इतना कि Photoshop के नतीजों से भी कमतर महसूस होता है।
और लेख में file format की typo भी कुछ जगह दिखीं (HEIC 14 बार, HIEC 3 बार)
file format typo की ओर ध्यान दिलाने के लिए बस संक्षेप में बताना चाहता हूँ कि मैंने उसे ठीक कर दिया है
मुझे लगता है कि artificial bokeh थोड़ा कमज़ोर इसलिए लगता है क्योंकि यह optics और aperture की mathematics को सही तरह से नहीं दर्शाता, और product perspective से इसे इस तरह approximate किया गया है कि 80% users संतुष्ट हो जाएँ। सही aperture mathematics लागू करके शायद बेहतर camera app बनाया जा सकता है, लेकिन क्या consumers वास्तव में फ़र्क समझेंगे और उसके लिए भुगतान करेंगे, यह सवाल है
depth map और semantic segmentation map सिर्फ़ देखने में ही मज़ेदार हैं, और इन्हें TouchDesigner, Blender, Cinema 4D जैसे apps में import करके फ़ोटो पर तरह-तरह के depth effects लगाए जा सकते हैं।
वास्तव में Apple भी photo post-processing (जैसे photo correction) में इन data का उपयोग करता है।
पहले यह सिर्फ़ portrait mode में capture होते थे, लेकिन हाल में subject (इंसान, पालतू जानवर) detect होने पर सामान्य shooting में भी अपने-आप रिकॉर्ड हो जाते हैं।
मैं भी photo app और tool developer हूँ, और मेरा Matte Viewer depth map और portrait matte images को inspect और export करने के लिए खास तौर पर बनाया गया है (Heliographe टूल जानकारी, Matte Viewer ऐप)
उम्मीद है कि कभी न कभी सभी smartphones महंगे sensors के बिना भी Gaussian splatting आधारित 3D images को default रूप से support करेंगे। computation भले भारी हो, लेकिन sensor जोड़ने की लागत और वजन से बचने के लिहाज़ से यह ज़्यादा व्यावहारिक लगता है
हो सकता है मैं कुछ भूल रहा हूँ, लेकिन लेख में HDR gain map की बात काफ़ी लंबी है, और समझ नहीं आता कि उसका depth map से क्या संबंध है।
मुझे iPhone का HDR display (auto brightness की ज़रूरत से ज़्यादा adjustment) पसंद नहीं, इसलिए मैं अपनी फ़ोटो से HDR gain map manually हटा देता हूँ।
पहले HDR में अलग-अलग exposure वाली 3 फ़ोटो को मिलाकर सिर्फ़ कमज़ोर हिस्सों को ठीक किया जाता था, और यह बात बेहतर थी कि final result में 'HDR' जैसी कोई ठोस property शामिल नहीं होती थी
संदर्भ के लिए, iPhone की photo settings में
화면 HDR 밝기 강화feature को बंद किया जा सकता है, यह जानकारी जोड़ रहा हूँलेख पढ़ते समय मेरे मन में भी यही बात आई। depth map overview अच्छा था, लेकिन बीच के बाद HDR gain map मुख्य विषय बन गया, जिससे सामग्री थोड़ा बिखरी हुई लगी। कुल मिलाकर अच्छा था, लेकिन thread का flow कुछ हद तक अव्यवस्थित लगा
LIDAR वास्तव में लेख में दिखाए गए depth map की तुलना में बहुत कम resolution का होता है।
असली depth map LIDAR और camera data को मिलाकर तैयार किया जाता है
क्या Apple इस तकनीक को ‘sticker creation’ feature में भी इस्तेमाल करता है, जहाँ फ़ोटो के subject को long-press करके sticker निकाला जाता है या दूसरी फ़ोटो पर copy किया जाता है?
क्या depth map का उपयोग stereogram या SIRDS (single-image random dot stereogram) बनाने के लिए किया जा सकता है? कभी grayscale images से stereogram बनाने की यादें हैं
EXIF जानकारी से field-of-view data map करके VR में उसे मूल दृश्य के physical size के हिसाब से scale किया जाता है।
व्यक्तिगत रूप से, सिर्फ़ इस एक feature के लिए ही Vision Pro पर $4000 खर्च करना सार्थक लगा। पुराने Nikon D7 से ली गई फ़ोटो को VR में सही आकार और 3D में देखना गहरी nostalgia जगाता है।
अफ़सोस है कि Apple इसे Vision Pro की मुख्य features में ज़्यादा प्रमुखता से नहीं दिखाता। यह सचमुच कमाल का feature है
iOS के लिए Reality Composer में object capture सिर्फ़ LIDAR समर्थित devices पर संभव है, लेकिन LIDAR न होने वाले devices में photogrammetry (synthetic 3D reconstruction) का backup feature नहीं है। 3D काम करते समय यह कमी खली थी
3D scanning के काम में Heges app सबसे ज़्यादा सफल रहा। LIDAR कार जैसी बड़ी objects के लिए प्रभावी है, और Face ID depth camera छोटी objects के लिए उपयोगी।
Creality Ferret SE scanner (TikTok पर लगभग $100 में खरीदा) से छोटे 3D scans की कोशिश की, और वह उम्मीद से कहीं बेहतर निकला
Polycam, LIDAR unsupported devices पर photogrammetry से विकल्प के रूप में काम करता है।
Canvas (अलग LIDAR चाहिए), Scaniverse (LIDAR optional) भी सुझाए गए थे
हर बार title देखते ही दिमाग़ में यह ‘death maps’ जैसा पढ़ा जाता है, और यह अजीब तरह से मज़ेदार लगता है