質問: XCodeでHDRカメラ機能の作ろうとしています。 端末で撮影した画像をリアルタイムでHDR生成したいです。 最終目標は、露出合成した画像の生データを取得することです。 今のところ、AVFoundationを用いて撮影し、露出設定はAVCaptureAutoExposureBracketedStillImageSettingsで、異なる露出の画像を撮影するプログラムはできています。 この画像たちをCoreImageで露出統合することは可能でしょうか。 色々調べたのですがよくわかりません。 参考になるURLなど教えていただけたら幸いです。 よろしくおねがいします。 参考URL:https://stackoverflow.com/questions/8145148/hdr-with-avfoundation https://stackoverflow.com/questions/38967896/hdr-images-through-core-image
回答: 確かにCore ImageによるHDR合成の情報はなかなか見つかりませんね...出来合いのフィルタはあきらめて自作した方がいいでしょうか。Quartz 2Dでは32ビット浮動小数点数のグラフィックスコンテキストも使用可能のようですので、自前でCIFilterを作って合成することも可能のように思います。 参考:init(data:width:height:bitsPerComponent:bytesPerRow:space:bitmapInfo:) - CGContext | Apple Developer Documentation 参考:Graphics Contexts - Supported Pixel Formats 参考:Core Image Programming Guide - Apple Developer 別の案として、OpenCV 3で合成してみるというのもいいかもしれません。こちらには複数のイメージからHDRイメージを生成する機能があるようですので、案外手軽に機能を実現できるのではないでしょうか。 参考:OpenCV: High Dynamic Range Imaging 参考:OpenCVとPythonでHigh Dynamic Range Image (HDR)を作ってみる(Mertens, Robertson, Debevec) - Qiita 参考:iOS + Swift で OpenCV を使う - Qiita UIImageでの表示用にLDR変換する際は、以下などがご参考になるかもしれません。 swift - High dynamic range imaging using openCV on iOS produces garbled output - Stack Overflow [追記] OpenCVの導入に関して、より新しい記事もありましたので追加します。 参考:OpenCV 3.2 を Swift のプロジェクトで使って簡単な画像処理をしてみよう! (フェンリル | デベロッパーズブログ)