(57)【要約】【課題】ハイダイナミックレンジを有するシーンを撮影して画像データを取得する際に、疑似輪郭の発生を低減しつつ、できるだけ少ない撮影回数及び撮影種類でＨＤＲ画像データを取得可能とする装置を提供すること。【解決手段】本発明は、撮像センサー（図２、２０１）を制御する制御装置であって、画像データを構成する画素毎に、少なくとも２つ以上の異なる露光時間の中から露光時間を選択的に決定し、画素毎の露光時間を示す露光時間データを生成する生成手段（図３、３０９）を備え、前記生成手段は、取得した画像データから出力値を算出し、前記算出した出力値に基づき画素毎の露光時間を決定し、前記算出した出力値に関する誤差を算出し、前記算出した誤差を誤差拡散法により処理対象の画素の周辺の画素に拡散させることを特徴とする。【選択図】図４
2015179968.tif 000002
【特許請求の範囲】
【請求項１】
撮像センサーを制御する制御装置であって、
画像データを構成する画素毎に、少なくとも２つ以上の異なる露光時間の中から露光時間を選択的に決定し、画素毎の露光時間を示す露光時間データを生成する生成手段を備え、
前記生成手段は、取得した画像データから出力値を算出し、前記算出した出力値に基づき画素毎の露光時間を決定し、前記算出した出力値に関する誤差を算出し、前記算出した誤差を誤差拡散法により処理対象の画素の周辺の画素に拡散させることを特徴とする制御装置。
【請求項２】
撮像センサーを制御する制御装置であって、
画像データを構成する画素毎に、少なくとも２つ以上の異なる露光時間の中から露光時間を選択的に決定し、画素毎の露光時間を示す露光時間データを生成する生成手段を備え、
前記生成手段は、取得した画像データから出力値を算出し、前記算出した出力値に基づき画素毎の露光時間を決定し、前記算出した出力値に関する誤差を算出し、前記算出した誤差を誤差拡散法により拡散させて画素の切り替えパターンをブルーノイズパターンにすることを特徴とする制御装置。
【請求項３】
前記生成手段は、本撮影の前に実行する予備撮影により取得した画像データと、前記撮像センサーの特性とに基づき、前記画素毎の露光時間を決定することを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記生成手段は、前記予備撮影により取得した画像データから出力値を算出し、
前記誤差は、前記算出した出力値と、前記撮像センサーの輝度応答特性が線形性を失う値である閾値との差であることを特徴とする請求項３に記載の制御装置。
【請求項５】
撮像センサーを介して被写体を複数回撮影し、前記被写体に対する複数の画像データを取得することにより、ＨＤＲ画像を取得する画像処理装置であって、
撮影回数と、各撮影の露光時間とを算出する撮影回数・露光時間算出手段と、
前記複数の画像データを合成する合成処理手段と、
前記算出した各撮影の露光時間に基づき、ゲイン調整を行うゲイン調整処理手段と
を備えることを特徴とする画像処理装置。
【請求項６】
前記撮影回数・露光時間算出手段は、前記撮像センサーの特性に基づき、撮影回数と、各撮影の露光時間とを算出することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記合成処理手段は、画素位置毎に、前記取得した複数の画像データのうちの何れかの画素値を選択することで、前記複数の画像データを合成することを特徴とする請求項５に記載の画像処理装置。
【請求項８】
前記合成処理手段は、
前記複数の画像データのうちの一つの画像データに対する出力値を計算することと、
前記計算した出力値と、前記複数の画像データの各々の最大の出力画素値に基づく閾値とを比較することと
により、画素位置毎に、前記取得した複数の画像データのうちの何れかの画素値を選択することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記合成処理手段は、
前記計算した出力値と、前記閾値との誤差を算出し、
前記算出した誤差を、誤差拡散法により、処理対象の画素の周辺の画素に拡散することを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
撮像センサーを制御する制御方法であって、
画像データを構成する画素毎に、少なくとも２つ以上の異なる露光時間の中から露光時間を選択的に決定し、画素毎の露光時間を示す露光時間データを生成するステップを備え、
前記生成するステップでは、取得した画像データから出力値を算出し、前記算出した出力値に基づき画素毎の露光時間を決定し、前記算出した出力値に関する誤差を算出し、前記算出した誤差を誤差拡散法により処理対象の画素の周辺の画素に拡散させることを特徴とする制御方法。
【請求項１１】
撮像センサーを制御する制御方法であって、
画像データを構成する画素毎に、少なくとも２つ以上の異なる露光時間の中から露光時間を選択的に決定し、画素毎の露光時間を示す露光時間データを生成するステップを備え、
前記生成するステップでは、取得した画像データから出力値を算出し、前記算出した出力値に基づき画素毎の露光時間を決定し、前記算出した出力値に関する誤差を算出し、前記算出した誤差を誤差拡散法により拡散させて画素の切り替えパターンをブルーノイズパターンにすることを特徴とする制御方法。
【請求項１２】
撮像センサーを介して被写体を複数回撮影し、前記被写体に対する複数の画像データを取得することにより、ＨＤＲ画像を取得する画像処理方法であって、
撮影回数と、各撮影の露光時間とを算出するステップと、
前記複数の画像データを合成するステップと、
前記算出した各撮影の露光時間に基づき、ゲイン調整を行うステップと
を備えることを特徴とする画像処理方法。
【請求項１３】
コンピュータを、請求項１乃至４の何れか一項に記載の制御装置、又は、請求項５乃至９の何れか一項に記載の画像処理装置として機能させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置、方法、及びプログラムに関する。具体的には、本発明は、ハイダイナミックレンジ画像を取得するための装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
一般的に、デジタルカメラなどの撮像装置において用いられる撮像センサーのダイナミックレンジは、自然界のダイナミックレンジと比較して狭いことが知られている。そのため、通常の方法で広いダイナミックレンジ（ハイダイナミックレンジと言う。本明細書では「ＨＤＲ」と略記される。）を有するシーンを撮影した場合には、黒つぶれや白飽和などが発生する。そこで、ＨＤＲ画像データを取得するための様々な手法が検討されている。
【０００３】
一般的な手法として、同一被写体に対して、長い露光時間で撮影した画像（長秒露光画像）と、短い露光時間で撮影した画像（短秒露光画像）とを取得する。そして、暗い領域については長秒露光画像を利用し、明るい領域については短秒露光画像を利用することで、ＨＤＲ画像データを取得する方法がある（特許文献１を参照）。
【０００４】
また、画素ごとに露光時間を制御可能なセンサーを用いて予備撮影結果に基づき各画素の露光時間を決定し、ＨＤＲ画像データを取得する方法がある（特許文献２を参照）。
【０００５】
特許文献１及び特許文献２の方法では、取得した撮影データに対して露光時間に応じたゲイン調整を施し、画素ごとに使用する画像を切り替えることによってＨＤＲ合成を実行する。その際、撮像センサーの輝度応答は線形である必要がある。しかし、図１２に示すように、撮像センサーの輝度応答の立ち上がり付近や飽和付近において非線形な応答があった場合には、切り替え付近でギャップが生じ疑似輪郭が発生してしまう。加えて、立ち上がり付近や飽和付近において、ノイズ特性が異なる場合でも切り替え付近においてノイズ特性のギャップが生じ疑似輪郭を発生させてしまう。そこで、特許文献１では、露光時間を変えて撮影する際に取得する輝度領域を重複させ、画像を切り替える際に加重加算によって滑らかに変化させることで疑似輪郭の発生を軽減する方法を提案している。また、特許文献２のように線形応答領域のみを用いる方法も開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第３４９５７６８号公報
【特許文献２】特開２０１０−１３６２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１のように取得する輝度領域を重複させる方法では、疑似輪郭は軽減できるが、加重加算によるボケが発生する。また、特許文献２のように線形応答領域のみを用いる方法では、取得するダイナミックレンジが狭くなってしまう。その結果、露光時間を変えて撮影する際の、撮影回数や撮影種類の増加を引き起こしてしまう。
【課題を解決するための手段】
【０００８】
本発明は、撮像センサーを制御する制御装置であって、画像データを構成する画素毎に、少なくとも２つ以上の異なる露光時間の中から露光時間を選択的に決定し、画素毎の露光時間を示す露光時間データを生成する生成手段を備え、前記生成手段は、取得した画像データから出力値を算出し、前記算出した出力値に基づき画素毎の露光時間を決定し、前記算出した出力値に関する誤差を算出し、前記算出した誤差を誤差拡散法により処理対象の画素の周辺の画素に拡散させることを特徴とする。
【発明の効果】
【０００９】
本発明により、ハイダイナミックレンジを有するシーンを撮影して画像データを取得する際に、疑似輪郭の発生を低減しつつ、できるだけ少ない撮影回数及び撮影種類でＨＤＲ画像データを取得することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施例１及び実施例２における撮像装置の概略構成図である。
【図２】実施例１及び実施例２における撮像装置の内部構成を示すブロック図である。
【図３】実施例１における画像処理部の内部構成を示すブロック図である。
【図４】実施例１における全体処理のフローチャートである。
【図５】実施例１における露光時間データ生成処理の詳細フローチャートである。
【図６】実施例１における誤差データの更新を説明するための図である。
【図７】実施例１におけるゲイン調整処理の詳細フローチャートである。
【図８】実施例２における画像処理部の内部構成を示すブロック図である。
【図９】実施例２における全体処理のフローチャートである。
【図１０】実施例２における撮影回数・露光時間算出について説明するための図である。
【図１１】実施例２における合成処理の詳細フローチャートである。
【図１２】疑似輪郭の発生原因を説明するための図である。
【発明を実施するための形態】
【００１１】
［実施例１］
まず、実施例１の概要について説明する。本実施例では、画素ごとに複数種類の露光時間を設定可能な撮像センサーを用いて、撮影した画像データに対して画素ごとにゲイン調整を行うことで、ＨＤＲ画像を取得する方法について述べる。その際、画素ごとにどの露光時間を選択するかについて、予備撮影結果と、撮像センサーの輝度応答特性とに基づき誤差拡散法を用いて決定する。これにより、撮像センサーの輝度応答に非線形応答があったとしても、ダイナミックレンジを維持する。加えて、画素ごとに露光時間が異なる撮影条件で撮影する際に画素ごとの露光時間の切り替えパターンを人の知覚しづらい高周波パターン（ブルーノイズパターン）にすることで、非線形な輝度応答に起因して発生する疑似輪郭の発生を抑える。尚、本実施例では簡単のため、撮像センサーは、長秒の露光時間及び短秒の露光時間という２種類の露光時間を設定可能であり、短秒の露光時間は、長秒の露光時間の半分の時間に設定されるものとする。
【００１２】
図１は、本実施例における撮像装置の概略構成図であって、図１（ａ）は正面図であり、図１（ｂ）は背面図である。撮像装置１０１は、光学部１０２と、撮影ボタン１０３と、表示部１０４と、操作ボタン１０５とから構成される。光学部１０２は、ズームレンズと、フォーカスレンズと、ブレ補正レンズと、絞りと、シャッターとから構成されており、集光により被写体の光情報を取得する。撮影ボタン１０３は、ユーザが撮影の開始を撮像装置１０１に指示するためのボタンである。表示部１０４は、液晶ディスプレイなどを用いて実現されており、撮像装置１０１にて処理された画像データや各種データなどを表示する。操作ボタン１０５は、ユーザが撮影条件（具体的には、絞りやシャッタースピードなどの撮影パラメータ）を撮像装置１０１に指示するためのボタンである。
【００１３】
図２は、本実施例における撮像装置１０１の内部構成を示すブロック図である。カラー撮像素子部２０１は、光学部１０２にて取得した光情報を電流値へと変換する素子であり、カラーフィルタなどと組み合わせることで色情報を取得する。カラー撮像素子部２０１は、各画素に対して任意の露光時間を設定可能な撮像センサーであり、本実施例では、撮像センサーは、各画素に対して２種類の露光のうちのどちらかを選択的に設定可能である。２種類の露光のうち、長い露光時間による露光を「長秒露光」、短い露光時間による露光を「短秒露光」と呼ぶ。長秒露光の露光時間は予め設定されている撮影時の基準露光時間とし、短秒露光の露光時間は長秒露光の露光時間の半分とする。ＣＰＵ２０２は、撮像装置１０１内の各構成の処理全てに関わり、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３や、ＲＡＭ（Ｒｏｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０４に格納された命令を順次読み込み、解釈し、その結果に従って処理を実行する。撮像系制御部２０５は、光学部１０２に対する、フォーカスを合わせる、シャッターを開く、絞りを調整するなどのＣＰＵ２０２から指示された制御を行う。制御部２０６は、撮影ボタン１０３や操作ボタン１０５からのユーザ指示によって、撮影動作の開始及び終了の制御を行う。キャラクタージェネレーション部２０７は、文字やグラフィックなどを生成する。Ａ／Ｄ変換部２０８は、光学部１０２及びカラー撮像素子部２０１を介して取得した被写体の光量（アナログ値）をデジタル信号値に変換する。画像処理部２０９は、Ａ／Ｄ変換後の画像データに対して、画像処理を行う。エンコーダ部２１０は、画像処理部２０９にて処理した画像データをＪｐｅｇなどのファイルフォーマットに変換する。メディアＩ／Ｆ２１１は、ＰＣ／メディア２１３（例えば、ハードディスク、メモリカード、ＣＦカード、ＳＤカードなど）に画像データを送受信するためのインターフェースである。システムバス２１２は、それを介して各構成がデータを送受信するためのバスである。
【００１４】
図３は、本実施例における画像処理部２０９の内部構成を示すブロック図である。ＲＡＷ画像データ記憶部３０１は、撮影動作によってカラー撮像素子部２０１が取得した被写体の光情報に対して、Ａ／Ｄ変換部２０８がデジタル信号値化を実行することによって生成した画像データを記憶する。予備撮影画像データ記憶部３０２は、予備撮影によって取得した画像データを記憶する。パラメータ記憶部３０３は、現像処理に必要なパラメータや、露光時間データを生成する際に必要となる閾値データなどを記憶する。尚、露光時間の算出について、詳細は後述する。露光時間データ記憶部３０４は、各画素に対する露光時間を示す露光時間データを記憶する。誤差データ記憶部３０５は、各画素に対する誤差を示す誤差データを記憶する。出力画像データ記憶部３０６は、最終的に出力される画像データを記憶する。ゲイン調整処理部３０７は、露光時間データ記憶部３０４に記憶している露光時間データに基づき入力画像データに対してゲイン調整を行う。現像処理部３０８は、ＲＡＷ画像データ記憶部３０１に記憶しているＲＡＷ画像データに対して、ホワイトバランス、デモザイキング処理、ノイズリダクション、色変換、ガンマ処理などの現像処理を行う。露光時間データ生成部３０９は、予備撮影画像データ記憶部３０２に記憶している予備撮影画像データに基づき各画素に対する露光時間を決定することで、露光時間データを生成する。
【００１５】
図４は、本実施例における全体処理のフローチャートである。
【００１６】
まず、ステップＳ４０１では、ユーザは、操作ボタン１０５を使用してシャッタースピード、絞り値などの撮影パラメータを入力し、撮影条件を設定する。次いで、ステップＳ４０２に進む。
【００１７】
ステップＳ４０２では、ＣＰＵ２０２は、撮影ボタン１０３が押されたかどうかを判定する。判定の結果、撮影ボタン１０３が押された場合には、ステップＳ４０３に進み、撮影ボタン１０３が押されていない場合には、ステップＳ４０１に戻る。
【００１８】
ステップＳ４０３では、画像処理部２０９（露光時間データ生成部３０９）は、画素毎の露光時間を示す露光時間データを生成する（詳細は後述する）。次いで、ステップＳ４０４に進む。
【００１９】
ステップＳ４０４では、撮像装置１０１は、ステップＳ４０１にて設定した撮影条件（撮影パラメータ）に基づき本撮影を行う。本撮影では、撮像系制御部２０５にて、光学部１０２を駆動させることで被写体の光量を取得し、Ａ／Ｄ変換部２０８にて、取得した被写体の光情報をＲＡＷ画像データに変換し、ＲＡＷ画像データをＲＡＷ画像データ記憶部３０１に記憶する。次いで、ステップＳ４０５に進む。
【００２０】
ステップＳ４０５では、画像処理部２０９（ゲイン調整処理部３０７）は、ステップＳ４０４にてＲＡＷ画像データ記憶部３０１に記憶したＲＡＷ画像データに対して、ゲイン調整を行う（詳細は後述する）。次いで、ステップＳ４０６に進む。
【００２１】
ステップＳ４０６では、現像処理部３０８は、ステップＳ４０５にてゲイン調整を行ったＲＡＷ画像データに対して現像処理を行う。現像後の画像データは、出力画像データ記憶部３０６に記憶される。次いで、ステップＳ４０７に進む。
【００２２】
ステップＳ４０７では、表示部１０４は、ステップＳ４０６にて出力画像データ記憶部３０６に記憶した画像データを表示する。ユーザは、表示部１０４に表示された画像データに基づいて、出力する画像データを選択する。次いで、ステップＳ４０８に進む。
【００２３】
ステップＳ４０８では、撮像装置１０１は、ステップＳ４０７にて表示部１０４に表示した画像データを、エンコーダ部２１０によりＪｐｅｇなどのファイルフォーマットに変換し、メディアＩ／Ｆ２１１を介してＰＣ／メディア２１３に出力する。
【００２４】
＜露光時間データ生成＞
図４のステップＳ４０３の露光時間データ生成について詳細に説明する。本処理では、予備撮影結果に基づき、設定した閾値以上の出力値を有する画素については、本撮影時に短秒撮影を行うよう設定する。その際、出力値と、閾値との誤差を周囲の画素に拡散させる。これらの処理により、短秒で撮影する画素と、長秒で撮影する画素との切り替えパターンが人の視覚しづらいブルーノイズパターンとなり、その結果、疑似輪郭の発生を抑制できる。
【００２５】
以下、図５を用いて露光時間データ生成処理について説明する。図５は、ステップＳ４０３の露光時間データ生成処理の詳細フローチャートである。
【００２６】
まず、ステップＳ５０１では、露光時間データ生成部３０９は、ステップＳ４０１にて設定した露光時間を全ての画素に対して設定する。次いで、ステップＳ５０２に進む。
【００２７】
ステップＳ５０２では、撮像装置１０１は、ステップＳ５０１にて設定した露光時間に従って予備撮影を行う。予備撮影の結果取得した画像データは、予備撮影画像データ記憶部３０２に記憶される。次いで、ステップＳ５０３に進む。
【００２８】
ステップＳ５０３では、露光時間データ生成部３０９は、誤差データ記憶部３０５に記憶している誤差データを構成する誤差値Δ（ｘ，ｙ）を全て０に初期化し、さらに閾値ｄを設定する。ここで誤差値Δ（ｘ，ｙ）は、画素位置（ｘ，ｙ）における誤差値である。また、閾値ｄは、撮像センサーの輝度応答特性が線形性を失う値に設定する。次いで、ステップＳ５０４に進む。
【００２９】
ステップＳ５０４では、露光時間データ生成部３０９は、処理対象画素の初期画素位置として（ｘ，ｙ）＝（０，０）をセットする。次いで、ステップＳ５０５に進む。
【００３０】
ステップＳ５０５では、露光時間データ生成部３０９は、予備撮影画像データ記憶部３０２に記憶している予備撮影画像データのうち処理対象画素位置における画素値ｉ（ｘ，ｙ）を読み込む。次いで、ステップＳ５０６に進む。
【００３１】
ステップＳ５０６では、露光時間データ生成部３０９は、出力値Ｏを、誤差データのうち処理対象画素位置における誤差値Δ（ｘ，ｙ）に基づき式（１）を用いて算出する。次いで、ステップＳ５０７に進む。
Ｏ＝ｉ（ｘ，ｙ）＋Δ（ｘ，ｙ）・・・式（１）
【００３２】
ステップＳ５０７では、露光時間データ生成部３０９は、出力値Ｏが閾値ｄ以上かどうかを判定する。判定の結果、出力値Ｏが閾値ｄ以上の場合にはステップＳ５０８に進み、そうでない場合にはステップＳ５０９に進む。
【００３３】
ステップＳ５０８では、露光時間データ生成部３０９は、露光時間データ記憶部３０４に記憶している露光時間データのうち処理対象画素位置（ｘ，ｙ）に対する露光時間を、短秒露光用の露光時間に設定する。次いで、ステップＳ５１０に進む。
【００３４】
ステップＳ５０９では、露光時間データ生成部３０９は、露光時間データ記憶部３０４に記憶している露光時間データのうち処理対象画素位置（ｘ，ｙ）に対する露光時間を、長秒露光用の露光時間に設定する。次いで、ステップＳ５１０に進む。
【００３５】
ステップＳ５１０では、露光時間データ生成部３０９は、誤差データを更新する（詳細は後述する）。次いで、ステップＳ５１１に進む。
【００３６】
ステップＳ５１１では、露光時間データ生成部３０９は、全ての画素位置に対してステップＳ５０５〜Ｓ５１０の処理を実行したかどうかを判定する。判定の結果、全ての画素位置に対してステップＳ５０５〜Ｓ５１０の処理を実行した場合にはステップＳ４０４に進み、そうでない場合にはステップＳ５１２に進む。
【００３７】
ステップＳ５１２では、露光時間データ生成部３０９は、処理対象画素位置を更新する。次いで、ステップＳ５０５に戻る。
【００３８】
＜誤差データの更新＞
図５のステップＳ５１０の誤差データ更新について、図６を用いて詳細に説明する。本実施例では、ステップＳ５０７における閾値処理の後で、出力値と、閾値との誤差Δｄを計算し、この誤差Δｄを誤差拡散法により処理対象画素位置の周辺に拡散しながら、各画素に対する露光時間を設定していく。本処理ではまず、式（２）を用いて処理対象画素位置における誤差Δｄを算出する。
Δｄ＝ｉ（ｘ，ｙ）＋Δ（ｘ，ｙ）−ｄ・・・式（２）
【００３９】
次に、算出した誤差Δｄを周囲の画素に拡散させる。このとき、ＲＡＷ画像データは、各画素が一つの色しか有さないＢａｙｅｒ配列であることが一般的である。そのため、誤差を算出した画素と同一の色を有する画素に誤差Δｄを拡散させる必要がある。図６（ａ）は、処理対象画素が緑（Ｇ）の場合の誤差拡散方法を示している。図６（ａ）では、画素位置（ｘ，ｙ）の緑（Ｇ）の画素をＧ（ｘ，ｙ）と表記している。図６（ａ）に示すように、処理対象画素位置（ｘ，ｙ）における誤差Δｄを、式（３）〜式（６）で示すように拡散させる。
Δ（ｘ＋２，ｙ）＋＝７／１６＊Δｄ・・・式（３）
Δ（ｘ−１，ｙ＋１）＋＝３／１６＊Δｄ・・・式（４）
Δ（ｘ＋１，ｙ＋１）＋＝５／１６＊Δｄ・・・式（５）
Δ（ｘ，ｙ＋２）＋＝１／１６＊Δｄ・・・式（６）
【００４０】
図６（ｂ）は、処理対象画素が赤（Ｒ）の場合の誤差拡散方法を示している。図６（ｂ）では、画素位置（ｘ，ｙ）の赤（Ｒ）の画素をＲ（ｘ，ｙ）と表記している。図６（ｂ）に示すように、処理対象画素位置（ｘ，ｙ）における誤差Δｄを、数（７）〜式（１０）で示すように拡散させる。
Δ（ｘ＋２，ｙ）＋＝７／１６＊Δｄ・・・式（７）
Δ（ｘ−２，ｙ＋２）＋＝３／１６＊Δｄ・・・式（８）
Δ（ｘ，ｙ＋２）＋＝５／１６＊Δｄ・・・式（９）
Δ（ｘ＋２，ｙ＋２）＋＝１／１６＊Δｄ・・・式（１０）
【００４１】
＜ゲイン調整＞
図４のステップＳ４０５のゲイン調整について、図７を用いて詳細に説明する。図７は、ステップＳ４０５のゲイン調整処理の詳細フローチャートである。
【００４２】
まず、ステップＳ７０１では、ゲイン調整処理部３０７は、処理対象画素位置を初期化して（ｘ，ｙ）＝（０，０）に設定する。次いで、ステップＳ７０２に進む。
【００４３】
ステップＳ７０２では、ゲイン調整処理部３０７は、ＲＡＷ画像データ記憶部３０１に記憶しているＲＡＷ画像データのうち処理対象画素位置における画素値ｉ（ｘ，ｙ）を読み込む。次いで、ステップＳ７０３に進む。
【００４４】
ステップＳ７０３では、ゲイン調整処理部３０７は、露光時間データ記憶部３０４に記憶している露光時間データデータのうち処理対象画素位置における露光時間ｔ（ｘ，ｙ）を読み込む。次いで、ステップＳ７０４に進む。
【００４５】
ステップＳ７０４では、ゲイン調整処理部３０７は、画素値ｉ（ｘ，ｙ）、露光時間ｔ（ｘ，ｙ）、及び基準の露光時間ｔ０に基づき、式（１１）を用いて、ゲイン調整後の出力画素値ｏ（ｘ，ｙ）を算出する。ここで本実施例では、基準の露光時間＝長秒露光の露光時間とする。次いで、ステップＳ７０５に進む。
ｏ（ｘ，ｙ）＝ｉ（ｘ，ｙ）／ｔ（ｘ，ｙ）＊ｔ０・・・（式１１）
ステップＳ７０５では、ゲイン調整処理部３０７は、ステップＳ７０４にて算出したゲイン調整後の画素値ｏ（ｘ，ｙ）でＲＡＷ画像データ記憶部３０１に記憶しているＲＡＷ画像データのうち処理対象画素位置における画素値を更新する。次いで、ステップＳ７０６に進む。
【００４６】
ステップＳ７０６では、ゲイン調整処理部３０７は、全ての画素位置に対してステップＳ７０２〜Ｓ７０５の処理を行ったかどうかを判定する。判定の結果、全ての画素位置に対してステップＳ７０２〜Ｓ７０５の処理を行った場合にはステップＳ４０６に進み、そうでない場合にはステップＳ７０７に進む。
【００４７】
ステップＳ７０７では、ゲイン調整処理部３０７は、処理対象画素位置の更新を行う。次いで、ステップＳ７０２に戻る。
【００４８】
以上説明した処理を行うことで、画素ごとに露光時間を制御可能な撮像センサーを用いてＨＤＲ画像データを取得する際に、センサーの輝度に対する非線形応答に起因して生じる疑似輪郭を軽減することが可能となる。
【００４９】
なお、本実施例では、画素ごとに設定可能な露光時間が２つある（即ち、長秒露光の露光時間及び短秒露光の露光時間）場合を例に挙げて説明したが、露光時間は、この例に限定されない。露光時間を３段階、４段階と設定できたとしても、同様の処理で本発明を実現可能である。
【００５０】
また、本実施例では、誤差拡散法を用いて、誤差を処理対象画素の周囲に拡散することで、露光時間の切り替えパターンをブルーノイズパターンとする手法を説明したが、ディザ法などを用いて誤差を処理対象画素の周囲に拡散させる手法であっても構わない。
【００５１】
［実施例２］
実施例１では、画素ごとに露光時間を制御可能な撮像センサーを用いて、ＨＤＲ画像データを取得する方法について説明した。これに対し、本実施例では、一般的な撮像センサーを用いて、露光時間を変えて複数回撮影して取得した複数の画像データを合成することにより、ＨＤＲ画像データを取得する。本実施例に係る撮像装置の構成は実施例１と同じであるので、説明を省略する（図１を参照）。また、本実施例に係る撮像装置の内部構成に関しても実施例１と同じであるので、説明を省略する（図２を参照）。以下、本実施例について、実施例１と相違する点を中心に説明する。
【００５２】
図８は、本実施例における画像処理部２０９の内部構成を示す図である。画像処理部２０９は、実施例１と同様に、ＲＡＷ画像データ記憶部３０１、パラメータ記憶部３０３、露光時間データ記憶部３０４、誤差データ記憶部３０５、出力画像データ記憶部３０６、ゲイン調整処理部３０７、及び現像処理部３０８を備える。しかし、本実施例における画像処理部２０９は、撮影画像データ記憶部８０１、撮影回数記憶部８０２、合成処理部８０３、及び撮影回数・露光時間算出部８０４も備えており、この点において実施例１と異なる。撮影画像データ記憶部８０１は、撮影し現像処理した画像データを記憶する。撮影回数記憶部８０２は、撮影した回数を記憶する。合成処理部８０３は、異なる露光時間で複数回撮影することで取得した複数の撮影画像データを合成する。撮影回数・露光時間算出部８０４は、ＨＤＲ画像データを取得するために必要な撮影回数及び撮影毎の露光時間を算出する。
【００５３】
図９は、本実施例における全体処理のフローチャートである。
【００５４】
まず、ステップＳ９０１では、ユーザは、操作ボタン１０５を使用して、撮影対象であるハイダイナミックレンジを有するシーンを撮影する際にユーザが実現したい最大輝度、絞り値、焦点距離、ＩＳＯ感度などの撮影パラメータを入力し、撮影条件を設定する。次いで、ステップＳ９０２に進む。
【００５５】
ステップＳ９０２では、ＣＰＵ２０２は、撮影ボタン１０３が押されたかどうかを判定する。判定の結果、撮影ボタン１０３が押された場合には、ステップＳ９０３に進み、撮影ボタン１０３が押されていない場合には、ステップＳ９０１に戻る。
【００５６】
ステップＳ９０３では、画像処理部２０９（撮影回数・露光時間算出部８０４）は、本撮影時に必要となる撮影回数及び各撮影の露光時間を算出する（詳細は後述する）。次いで、ステップＳ９０４に進む。
【００５７】
ステップＳ９０４では、撮像装置１０１は、ステップＳ９０３にて算出した撮影回数及び露光時間に基づき本撮影を行う。本撮影では、撮像系制御部２０５にて、光学部１０２を駆動させることで被写体の光量を取得し、Ａ／Ｄ変換部２０８にて、取得した被写体の光情報をＲＡＷ画像データに変換し、ＲＡＷ画像データをＲＡＷ画像データ記憶部３０１に記憶する。次いで、ステップＳ９０５に進む。
【００５８】
ステップＳ９０５では、現像処理部３０８は、ステップＳ９０４にてＲＡＷ画像データ記憶部３０１に記憶した各ＲＡＷ画像データに対して現像処理を行う。現像後の画像データは、撮影画像データ記憶部８０１に記憶される。次いで、ステップＳ９０６に進む。
【００５９】
ステップＳ９０６では、合成処理部８０３は、ステップＳ９０５にて撮影画像データ記憶部８０１に記憶した撮影画像データを合成する合成処理を行う（詳細は後述する）。この合成処理の結果取得した画像データは、出力画像データ記憶部３０６に記憶される。次いで、ステップＳ９０７に進む。
【００６０】
ステップＳ９０７では、表示部１０４は、出力画像データ記憶部３０６に記憶されている画像データを表示する。ユーザは、表示部１０４に表示された画像データに基づいて、出力する画像データを選択する。次いで、ステップＳ９０８に進む。
【００６１】
ステップＳ９０８では、撮像装置１０１は、ステップＳ９０７にて表示部１０４に表示した画像データを、エンコーダ部２１０によりＪｐｅｇなどのファイルフォーマットに変換し、メディアＩ／Ｆ２１１を介してＰＣ／メディア２１３に出力する。
【００６２】
＜撮影回数・露光時間算出＞
図９のステップＳ９０３の撮影回数・露光時間算出について、図１０を用いて説明する。図１０は、撮影回数・露光時間算出を説明するための図である。図１０に示すように、ユーザが指定する最大輝度を取得するためには、ステップＳ９０４の本撮影にて、複数回撮影する必要がある。そこで、ユーザが指定する最大輝度を取得するために要する撮影回数及び各撮影の露光時間を算出する。
【００６３】
１回目の撮影（本明細書及び図１０では撮影１と表記し、２回目以降の撮影に関しても同様に表記する）の露光時間をｔ１、輝度から出力画素値への変換係数をａ、最大値をｂとすると、輝度ｘと、出力画素値ｙとの関係は、式（１２）で示すことができる。
ｙ＝ａ・ｔ１・ｘ  （ｘ≦ｂ／（ａ・ｔ１））
ｙ＝ｂ      （ｘ＞ｂ／（ａ・ｔ１））・・・式（１２）
同様に、撮影１の次の撮影、即ち撮影２の露光時間をｔ２とすると、撮影２における、輝度ｘと、出力画素値ｙとの関係は、式（１３）で示すことができる。
ｙ＝ａ・ｔ２／ｔ１・ｘ  （ｘ≦（ｂ・ｔ１）／（ａ・ｔ２））
ｙ＝ｂ      （ｘ＞（ｄ・ｔ１）／（ａ・ｔ２））・・・式（１３）
ここで、出力画素値の下限の閾値をｃ、上限の閾値をｄ（下限の閾値ｃ及び上限の閾値ｄは、撮像センサーの輝度応答特性の線形性が失われる値である。）とすると、式（１２）より式（１４）の関係が成立する。
ｘ＝ｄ／（ａ・ｔ１）・・・式（１４）
撮影２の直線は（ｄ／（ａ・ｔ１），ｃ）を通るので、露光時間ｔ２は、式（１３）及び式（１４）により、式（１５）に従って、求めることができる。
ｔ２＝ｃ・ｔ１／ｄ・・・式（１５）
同様に、撮影ｎの露光時間ｔｎは、撮影ｎ−１の露光時間ｔｎ−１を用いて式（１６）に従って求めることができる。
ｔｎ＝ｃ・ｔｎ−１／ｄ・・・式（１６）
また、撮影回数ｎは、式（１７）を満足する最小のｎとなる。
ユーザ指定の最大輝度＜ｄ／（ａ・ｔｎ）・・・式（１７）
以上の計算により、撮影回数ｎ及び各撮影の露光時間ｔ１、ｔ２、・・・ｔｎを決定する。
【００６４】
＜合成処理＞
図９のステップＳ９０６の合成処理について、図１１を用いて説明する。図１１は、ステップＳ９０６の合成処理の詳細フローチャートである。本説明では簡単のため、ステップＳ９０３において算出した撮影回数が３回の場合を例に挙げて説明する。
【００６５】
まず、ステップＳ１１０１では、合成処理部８０３は、撮影画像データ記憶部８０１に記憶している撮影画像データを読み込んでセットする。ここでは、セットする撮影画像データを露光時間が長い順に撮影画像１、撮影画像２、撮影画像３とする。次いで、ステップＳ１１０２に進む。
【００６６】
ステップＳ１１０２では、画像処理部２０９（ゲイン調整処理部３０７）は、露光時間データ記憶部３０４に記憶している露光時間データを用いてゲイン調整を行う。次いで、ステップＳ１１０３に進む。
【００６７】
ステップＳ１１０３では、合成処理部８０３は、誤差データを構成する誤差値Δ（ｘ，ｙ）を初期化して全て０に設定する。さらに、合成処理部８０３は、撮影画像１と、撮影画像２とを切り替えるための閾値ｄ１、並びに、撮影画像２と、撮影画像３とを切り替えるための閾値ｄ２を設定する。ここで、閾値ｄ１は撮影画像１の最大出力画素値の９５％とし、閾値ｄ２はゲイン調整後の撮影画像２の最大出力画素値の９５％とする。撮影画像の最大出力画素値とは、撮影画像の中の画素が有する画素値の中で最大のもののことをいう。次いで、ステップＳ１１０４に進む。
【００６８】
ステップＳ１１０４では、合成処理部８０３は、処理対象画素の初期画素位置として（ｘ，ｙ）＝（０，０）をセットする。次いで、ステップＳ１１０５に進む。
【００６９】
ステップＳ１１０５では、合成処理部８０３は、撮影画像１の（ｘ，ｙ）におけるＲＧＢ値を読み込む。次いで、ステップＳ１１０６に進む。
【００７０】
ステップＳ１１０６では、合成処理部８０３は、出力値Ｏを式（１８）に従って計算する。
Ｏ＝（４＊Ｒ＋３＊Ｇ＋Ｂ）／８＋Δ（ｘ，ｙ）・・・式（１８）
ただし、式（１８）において、Ｒ，Ｇ，Ｂはそれぞれ、撮影画像１の(ｘ，ｙ)におけるＲＧＢ値であり、Δ(ｘ，ｙ)は（ｘ，ｙ）における誤差値である。次いで、ステップＳ１１０７に進む。
【００７１】
ステップＳ１１０７では、合成処理部８０３は、ステップＳ１１０６で算出した出力値Ｏと、閾値ｄ１とを比較して、出力値Ｏが閾値ｄ１以上かどうかを判定する。判定の結果、出力値Ｏが閾値ｄ１以上の場合にはステップＳ１１０９に進み、そうでない場合にはステップＳ１１０８に進む。
【００７２】
ステップＳ１１０８では、合成処理部８０３は、処理対象画素位置（ｘ，ｙ）における出力画素値として、撮影画像１の（ｘ，ｙ）における画素値をセットする。次いで、ステップＳ１１１２に進む。
【００７３】
ステップＳ１１０９では、合成処理部８０３は、ステップＳ１１０６で算出した出力値Ｏと、閾値ｄ２とを比較して、出力値Ｏが閾値ｄ２以上かどうかを判定する。判定の結果、出力値Ｏが閾値ｄ２以上の場合には、ステップＳ１１１１に進み、そうでない場合にはステップＳ１１１０に進む。
【００７４】
ステップＳ１１１０では、合成処理部８０３は、処理対象画素位置（ｘ，ｙ）の出力画素値として、撮影画像２の（ｘ，ｙ）における画素値をセットする。次いで、ステップＳ１１１２に進む。
【００７５】
ステップＳ１１１１では、合成処理部８０３は、処理対象画素位置（ｘ，ｙ）の出力画素値として、撮影画像３の（ｘ，ｙ）における画素値をセットする。次いで、ステップＳ１１１２に進む。
【００７６】
ステップＳ１１１２では、合成処理部８０３は、誤差データを更新する（詳細は後述する）。次いで、ステップＳ１１１３に進む。
【００７７】
ステップＳ１１１３では、合成処理部８０３は、全ての画素位置に対してステップＳ１１０５〜Ｓ１１１２の処理を実行したかどうかを判定する。判定の結果、全ての画素位置に対してステップＳ１１０５〜Ｓ１１１２の処理を実行した場合にはステップＳ９０７に進み、そうでない場合には、ステップＳ１１１４に進む。
【００７８】
ステップＳ１１１４では、合成処理部８０３は、処理対象画素位置を更新する。次いで、ステップＳ１１０５に戻る。以降、ステップＳ１１１３において、全ての画素位置に対してステップＳ１１０５〜Ｓ１１１２の処理を実行したと判定されるまで、処理対象画素位置毎に、ステップＳ１１０５〜Ｓ１１１４までの処理を繰り返す。
【００７９】
＜誤差データの更新＞
図１１のステップＳ１１１２の誤差データの更新について説明する。本処理では、ステップＳ１１０６にて算出した出力値Ｏを用いて実施例１における式（２）に従って誤差Δｄを算出する。そして、算出した誤差Δｄを式（１９）〜式（２２）に従い周囲の画素に拡散することで、誤差データの更新を行う。
Δ（ｘ＋１，ｙ）＋＝７／１６＊Δｄ・・・式（１９）
Δ（ｘ−１，ｙ＋１）＋＝３／１６＊Δｄ・・・式（２０）
Δ（ｘ，ｙ＋１）＋＝５／１６＊Δｄ・・・式（２１）
Δ（ｘ＋１，ｙ＋１）＋＝１／１６＊Δｄ・・・式（２２）
【００８０】
以上説明した処理を行うことで、一般的な撮像センサーを用いて、露光時間を変化させて複数回撮影することによりＨＤＲ画像データを取得する際に、センサーの輝度に対する非線形応答に起因して生じる疑似輪郭を軽減することが可能となる。また、本実施例により、図１０に示したように、センサーのダイナミックレンジを最大限に活用することができる。その結果、ハイダイナミックレンジシーンを撮影してＨＤＲ画像データを合成・取得する際にできるだけ少ない撮影回数及び少ない撮影種類による撮影が可能となる。
【００８１】
［その他の実施例］
本発明の目的は、前述した実施例の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システム又は装置に供給し、システム又は装置（具体的にはＣＰＵやＭＰＵ）がプログラムコードを読み出し実行することによっても、達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８２】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ等を用いることが出来る。
【００８３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳが実際の処理の一部又は全部を行っても良い。ＯＳの処理によって前述した実施例の機能が実現される場合も、本発明の範囲に含まれる。
【００８４】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、処理が実行されても良い。また、機能拡張ボードや機能拡張ユニットに備わるＣＰＵが実際の処理の一部又は全部を実行しても良く、機能拡張ボードや機能拡張ユニットに備わるＣＰＵの実行処理によって前述した実施例の機能が実現される場合も、本発明の範囲に含まれる。
【００８５】
また、前述の実施例の機能を実現するためのプログラムコードを、１つのコンピュータ（ＣＰＵ、ＭＰＵ）で実行しても良いし、複数のコンピュータが協働することによって実行しても良い。更に、プログラムコードをコンピュータが実行しても良いし、プログラムコードの機能を実現するための回路等のハードウェアを設けても良い。または、プログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行しても良い。
【図１】
2015179968.tif 000003
【図２】
2015179968.tif 000004
【図３】
2015179968.tif 000005
【図４】
2015179968.tif 000006
【図５】
2015179968.tif 000007
【図６】
2015179968.tif 000008
【図７】
2015179968.tif 000009
【図８】
2015179968.tif 000010
【図９】
2015179968.tif 000011
【図１０】
2015179968.tif 000012
【図１１】
2015179968.tif 000013
【図１２】
2015179968.tif 000014