iOSのデプスで自動背景合成する際に、カメラに超近接する物体が背景となってしまう問題
リアルタイムにデプスを活用する場合のユースケースの多くは背景自動合成(クロマキー合成的な)ではないかと思う。で、それを本気でプロダクションレベルに持っていこうとするとこの問題にぶち当たると思うのだけど、デプスを実際に実装してみて自分でこの問題にぶち当たった人にしか伝わらないと思うので自分用メモとして雑に書く。
ちなみにTrueDepthのフロントカメラ側でデプスデータを利用する場合の話。あとARKit使用時ではなくAVFoundationからカメラを利用する場合の話。
問題: ものすごく近くにあるものが背景と判定される
手をカメラから10センチぐらいまで近づけると、その手の領域が背景と同化する。
それは「しきい値処理が悪いんじゃないの」と思われるかもしれないが、AVCaptureDepthDataOutputが返してくるデプスデータの段階で既に背景と同じ1.0にされてしまっているのだ。
データとして存在しないんじゃどうしようもない。
どういうケースで困るのか?
これは実際に仕事上であったケースなのだが、商品紹介動画を録れるiOSアプリがあるとして、デプス利用により自動で背景を合成できる機能が売りだとする。
商品をよく見てもらうためにカメラに近づけると・・・
「背景に合成されて商品が消えた」となる。
いや、商品紹介動画に限らず、カメラに近づけるという行為は「視聴者にもっとよく見てもらいたい」という動機である場合がほとんどで、それが背景が合成されて消えてしまうというのは致命的な問題だと思う。
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/