LoginSignup
0
2

More than 1 year has passed since last update.

HEIC写真をLooking Glass用にRGBD JPEGに変換するクイックアクションを作った

Posted at

ついにLooking Glass Portraitが来た!
ということでさっそくiPhoneのポートレートモード写真を表示しようとしたが、ほとんどHEIC形式で撮ってしまっていたためどうにかしたかった。

結局やったこと

  1. ポートレートモードで撮った写真をiPhoneからMacにAirDrop(どう頑張ってもHEICで転送されてしまう)
  2. HEICファイルからheif-convertコマンドで深度マップを摘出
  3. ImageMagickのconvertコマンドで、RGBと深度マップが横並びになったJPEG画像を作成
  4. HoloPlay Studioに"RGBD Photo And Video"として読み込み

画像の処理は以下よのうなシェルスクリプトでやった。ImageMagickのインストールが必要なことに注意。

TMPDIR=/tmp/depth_heic
mkdir -p $TMPDIR
for f in "$@"
do
    /usr/local/bin/heif-convert $f $TMPDIR/tmp.jpg
    /usr/local/bin/convert -resize 2048x2048 $TMPDIR/tmp.jpg $TMPDIR/tmp-rgb.jpg
    /usr/local/bin/convert -resize 2048x2048 $TMPDIR/tmp-depth.jpg $TMPDIR/tmp-d.jpg
    /usr/local/bin/convert $TMPDIR/tmp-rgb.jpg $TMPDIR/tmp-d.jpg +append $TMPDIR/tmp-rgbd.jpg
    cp $TMPDIR/tmp-rgbd.jpg $f-rgbd.jpg
done
rm -rf $TMPDIR

画像ファイルを右クリックしてこんな感じで実行すれば、HoloPlay Studioに入れられるJPEGができる。

スクリーンショット 2022-01-05 18.04.08.png

詳細

画像の読み込み

Looking Glassの公式ページに書いてあることをやってみたが、

  • 転送設定を「自動」にしてAirDrop → 無事HEICで転送される😇
  • Mailアプリで送信 → JPEGにはなるがHoloPlay Studioによると深度情報がないとのこと

という感じであきらめた。
ちなみに、カメラの設定でもともとJPEGで撮影した写真はそのままAirDropしてHoloPlay Studioで読み込めた。

RGBD写真の作成

RGBDのJPEGってどうやって作るのだろう?と思って調べたがいまいち要領を得なかった。それもそのはずで、RGBD形式なんてものはないのだ!
以下のようにRGB情報と深度マップを並べたものをそう呼んでいるらしい。
IMG_1288.heic-rgbd.jpg

なのでがんばってこういう画像を作る。
まずはheicファイルから深度情報を取り出す。

深度情報の分離
heif-convert your_pic.heic output.jpg
# output.jpgとoutput-depth.jpgができる

これでRGB情報がoutput.jpgに、深度情報がoutput-depth.jpgに出力される。
あとはこれをくっつければいいのだが、RGBと深度で解像度が違うので、きっちり横並びにするには深度のほうを拡大してやる必要がある。
ついでにRGBのほうもLooking Glassの解像度に合わせてリサイズしてみる。

画像のりサイズと結合
convert -resize 2048x2048 output.jpg pic-rgb.jpg
convert -resize 2048x2048 output-depth.jpg pic-d.jpg
convert pic-rgb.jpg pic-d.jpg +append pic-rgbd.jpg

convertコマンドはbrew install imagemagickで使えるようになる。
+appendで横並びに結合するようだ。(縦並びは-appendらしい)

クイックアクション化

シェルスクリプトをいちいち叩くのも面倒なのでクイックアクションにしてみる。
これで上に貼ったように右クリックから変換できる。

クイックアクションはautomatorで作れる。
新規作成でクイックアクションを選択。
スクリーンショット 2022-01-05 18.15.39.png

Finderからのイメージファイルのみ受け入れるようにしておく。
「シェルスクリプトを実行」を追加して、「入力の引き渡し方法」を「引数として」にした。これでシェルスクリプトの引数に選択したファイルのパスが渡される。
中身のスクリプトに書き換えて保存。
スクリーンショット 2022-01-05 19.09.24.png

TMPDIR=/tmp/depth_heic
mkdir -p $TMPDIR
for f in "$@"
do
    /usr/local/bin/heif-convert $f $TMPDIR/tmp.jpg
    /usr/local/bin/convert -resize 2048x2048 $TMPDIR/tmp.jpg $TMPDIR/tmp-rgb.jpg
    /usr/local/bin/convert -resize 2048x2048 $TMPDIR/tmp-depth.jpg $TMPDIR/tmp-d.jpg
    /usr/local/bin/convert $TMPDIR/tmp-rgb.jpg $TMPDIR/tmp-d.jpg +append $TMPDIR/tmp-rgbd.jpg
    cp $TMPDIR/tmp-rgbd.jpg $f-rgbd.jpg
done
rm -rf $TMPDIR

仕組みはわからないが、automatorで保存するとすぐクイックアクションのところに追加される。

HoloPlay Studioに読み込み

できた画像をHoloPlay Studioにドラッグアンドドロップ!
"RGBD Photo And Video"を指定すればよい。

できたもの

こうじゃ!
dog.jpg

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2