質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

3044閲覧

Swift:CoreImageでHDRカメラを作る方法

fujico23

総合スコア13

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2017/06/02 06:46

編集2017/06/04 00:10

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

確かに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 のプロジェクトで使って簡単な画像処理をしてみよう! (フェンリル | デベロッパーズブログ)

投稿2017/06/04 09:24

編集2017/06/04 10:35
Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fujico23

2017/06/04 11:07

ご回答あとがとうございます。 参考にしてみます。 OpenCVですが、これは露光を重ね合わせた後の生データを取得することは可能ですか? 初心者で申し訳ないのですが、 提示いただいたコードを見たところ、どのようなデータの形で入力し、どのような形では出力されるのか、わかっていないのですが。。 cv::Matがそれにあたるのでしょうか? よろしくお願いします。
Bongo

2017/06/04 12:00

Matは行列とのことですが、画像もこの行列型で扱うのが正当なやり方のようです。 参考:http://shimikel.hatenablog.com/entry/2015/07/25/190139 HDR画像合成は数段階のステップに分かれていて、OpenCV: High Dynamic Range Imagingのページの「3. Make HDR image」の段階で得られる「Mat hdr;」が合成後の高いダイナミックレンジのデータを格納した画像データとなります。このあとトーンマッピング等を行いLDR画像を作成していますが、その前のHDRデータをそのまま使えばよろしいかと思います。 Swift側にデータを持ち込むにはObjective-Cを介する必要がありそうですが、https://github.com/vsinha/GoScore/blob/master/GoScore/UIImage%2BOpenCV.mmに参考になりそうなコードがありました。 ただし、こちらの方のinitWithCVMatは8ビット/チャンネルのLDR画像を前提としているようですので、HDR画像をCGImageに変換するにはCGImageCreateの引数などに手を加える必要がありそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問