概要
- AppleのiPhone は2017年以降、 深度マップ付き画像 をHEIF形式で保存
- HEIC Shenanigans プロジェクトで画像やメタデータ抽出・EXR変換が可能
- PythonスクリプトとCLIツール を組み合わせた変換手順
- OpenEXRやOpenColorIOなど 映画業界標準技術 の活用
- 実際の変換コマンド例 とワークフローの解説
iPhone画像の深度マップとHEICフォーマット
- 2017年以降のiPhone では、LiDARや構造化光3Dスキャンによる 深度マップ撮影 が可能
- 画像と深度マップは HEIFコンテナ(HEIC形式) に保存
- HEICファイル は複数画像や豊富なメタデータを格納可能
- JPEG形式 も選択可能だが、深度マップやHDRは非対応
- Finn Jaeger(Replayboys社VFX責任者) がHEIC Shenanigansプロジェクトを公開
HEIC Shenanigansプロジェクトの概要
- HEIC Shenanigans は画像・メタデータ抽出やEXR変換のスクリプト群
- Python(374行) で実装
- 画像や深度マップを個別に抽出し、 OpenEXR形式 に変換可能
作業環境と前提条件
- AMD Ryzen 9 9950X(16コア/32スレッド) 搭載ワークステーション
- DDR5 96GB RAM、Crucial T700 4TB NVMe SSD 構成
- Ubuntu 24 LTS(Windows 11 Pro上でWSL利用) 環境
- Nvidia GTX 1080 利用理由:Windowsのドライバ互換性とArcGIS ProのWindows専用性
必要なツールのインストール
- Python 3.12.3、 jq、 openexr、 libimage-exiftool-perl、 libopenexr-dev、 python3-pip、 python3.12-venv をインストール
$ sudo add-apt-repository ppa:deadsnakes/ppa$ sudo apt update$ sudo apt install jq openexr libimage-exiftool-perl libopenexr-dev python3-pip python3.12-venv
- Exiftool のバージョン注意:HEIC対応の最新版推奨
- jc(JSON Convert) のインストール
$ wget https://github.com/kellyjonbrazil/jc/releases/download/v1.25.2/jc_1.25.2-1_amd64.deb$ sudo dpkg -i jc_1.25.2-1_amd64.deb
- HEIC Shenanigansリポジトリのクローン
$ git clone https://github.com/finnschi/heic-shenanigans ~/heic-shenanigans
- Python仮想環境のセットアップと依存モジュールインストール
$ python3 -m venv ~/.iphone_depth$ source ~/.iphone_depth/bin/activate$ python3 -m pip install -r ~/heic-shenanigans/requirements.txt$ python3 -m pip install OpenImageIO
- DJV v2.0.8 でEXR画像の表示
iPhone 15 Pro画像のサンプル
- Joel Joseph(ArcGIS Desktop製品の専門家) 提供のHEIC画像を使用
HEICからOpenEXRへの変換ワークフロー
- Academy Software Foundation のオープンソース規格(OpenEXR、OpenColorIOなど)を活用
- OpenEXR はILMが開発したHDR画像フォーマットで、VFXや3Dレンダリングで広く利用
- 変換コマンド例
$ python ~/heic-shenanigans/heic_to_exr.py IMG_E2153.HEIC- 結果ファイルは 468MB のEXRファイル
スクリプトによる処理手順(主なコマンド)
- 画像サイズ取得
$ oiiotool --info /tmp/tmpc3kmiaka/input_base.tiff
- sRGB→Linear P3→ACEScg変換のベース画像作成
$ oiiotool /tmp/tmpc3kmiaka/input_base.tiff --ch R,G,B --chnames sdr.R,sdr.G,sdr.B --colorconfig studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio --colorconvert 'sRGB - Texture' 'Linear Rec.709 (sRGB)' --colorconvert 'Linear P3-D65' 'ACES - ACEScg' -o /tmp/tmpc3kmiaka/base.exr
- HDRゲインマップの生成とRGB化
$ oiiotool /tmp/tmpc3kmiaka/input_hdrgainmap_50.tiff --ch Y --chnames gainmap.Y --resize 4032x3024 --colorconfig studio-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio --ocionamedtransform 'Rec.709 - Curve' -o /tmp/tmpc3kmiaka/gainmap.exr$ oiiotool /tmp/tmpc3kmiaka/gainmap.exr --ch gainmap.Y,gainmap.Y,gainmap.Y --chnames gainmap.R,gainmap.G,gainmap.B -o /tmp/tmpc3kmiaka/gainmap_rgb.exr
- HDRゲインマップのヘッドルーム値抽出とスケーリング
$ exiftool -HDRGainMapHeadroom -b /tmp/tmpc3kmiaka/input_base.tiff$ oiiotool /tmp/tmpc3kmiaka/gainmap_rgb.exr --mulc -0.12135654640000004 --addc 1.0 -o /tmp/tmpc3kmiaka/gainmap_scaled.exr
- HDRベース画像作成
$ oiiotool /tmp/tmpc3kmiaka/base.exr /tmp/tmpc3kmiaka/gainmap_scaled.exr --mul --chnames R,G,B
- 深度マップのEXR化
$ oiiotool /tmp/tmpc3kmiaka/input_depth_0.tiff --ch Y --chnames depth.Y --resize 4032x3024 -o /tmp/tmpc3kmiaka/depth.exr
- 最終EXRファイルへの各チャンネル追加
- RGB(HDRベース画像)、SDR、ゲインマップ、深度マップの順に siappend で追加
$ oiiotool /tmp/tmpc3kmiaka/final.exr /tmp/tmpc3kmiaka/base.exr --ch sdr.R,sdr.G,sdr.B --siappend -o /tmp/tmpc3kmiaka/final.exr$ oiiotool /tmp/tmpc3kmiaka/final.exr /tmp/tmpc3kmiaka/gainmap_rgb.exr --ch gainmap.R,gainmap.G,gainmap.B --siappend -o /tmp/tmpc3kmiaka/final.exr$ oiiotool /tmp/tmpc3kmiaka/final.exr /tmp/tmpc3kmiaka/depth.exr --ch depth.Y --siappend -o /tmp/tmpc3kmiaka/final.exr
- 最終ファイル名 は
<prefix>_acesCG.exrとして保存
まとめとサービス案内
- HEIC Shenanigans を活用することで、iPhoneのHEIC画像を 映画業界標準のEXR形式 へ変換可能
- コンサルティングや開発支援 の提供(北米・欧州対応)
- お問い合わせはLinkedIn経由 で受付