(57)【要約】【課題】  露出が異なる画像同士をより正確に位置合わせしてから合成するための技術を提供すること。【解決手段】  互いに異なる露光時間で撮像された複数の画像を露光時間順に一列に並べた場合に、この一列において隣接する２つの画像毎のセットを設定する（Ｓ２０２）。着目セットに含まれる長画像と短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する（Ｓ２０３，Ｓ２０４）。長画像と短画像とを重ね合わせた場合に、それぞれの共通領域が一致するように、長画像に対する位置ずれ補正量を求める（Ｓ２０６）。位置ずれ補正量に基づいて長画像に対して画像処理を行う（Ｓ２０８）。それぞれのセットについて画像処理を行うことで得られる複数の画像を合成することで合成画像を生成し、生成した合成画像を出力する（Ｓ２０９）。【選択図】  図２
2011004353.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる露光時間で撮像された複数の画像を取得する手段と、
前記複数の画像を露光時間順に一列に並べた場合に、当該一列において隣接する２つの画像毎のセットを設定する設定手段と、
着目セットに含まれる２つの画像のうち露光時間が長い方の画像を長画像、露光時間が短い方の画像を短画像とした場合に、前記長画像と前記短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する特定手段と、
前記長画像と前記短画像とを重ね合わせた場合に、前記長画像における前記共通の領域と前記短画像における前記共通の領域とが一致するように、前記長画像に対する位置ずれ補正量を求める計算手段と、
前記位置ずれ補正量に基づいて前記長画像に対して画像処理を行う処理手段と、
前記処理手段がそれぞれのセットについて処理を行うことで得られる前記複数の画像のそれぞれを合成することで合成画像を生成し、生成した合成画像を出力する手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記特定手段は、
前記長画像の画素値の分布に基づいて設定された閾値に応じて決まる画素値範囲内の画素値を有する領域を前記長画像から特定する第１の特定手段と、
前記短画像の画素値の分布に基づいて設定された閾値に応じて決まる画素値範囲内の画素値を有する領域を前記短画像から特定する第２の特定手段とを備え、
前記長画像と前記短画像とを重ね合わせた場合に、前記第１の特定手段が特定した領域と、前記第２の特定手段が特定した領域とが、規定値以上の重複部分を有する場合には、前記第１の特定手段、前記第２の特定手段が特定したそれぞれの領域を前記共通の領域とすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記計算手段は、
前記長画像に対してＡｆｆｉｎｅ変換を行うことで得られる画像における前記共通の領域が、前記短画像における前記共通の領域と一致するように、Ａｆｆｉｎｅ変換のパラメータを求める手段と、
前記長画像に対してＡｆｆｉｎｅ変換を行うことで得られる画像が、前記短画像と一致するように、画素毎の位置ずれ量を求める手段とを備え、
前記Ａｆｆｉｎｅ変換のパラメータと前記画素毎の位置ずれ量とを、前記位置ずれ補正量として得ることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記合成画像は、前記画像に比べて、ダイナミックレンジが広い画像であることを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
互いに異なる露光時間で撮像された複数の画像を取得する工程と、
前記複数の画像を露光時間順に一列に並べた場合に、当該一列において隣接する２つの画像毎のセットを設定する設定工程と、
着目セットに含まれる２つの画像のうち露光時間が長い方の画像を長画像、露光時間が短い方の画像を短画像とした場合に、前記長画像と前記短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する特定工程と、
前記長画像と前記短画像とを重ね合わせた場合に、前記長画像における前記共通の領域と前記短画像における前記共通の領域とが一致するように、前記長画像と前記短画像との位置ずれ補正量を求める計算工程と、
前記位置ずれ補正量に基づいて前記長画像、前記短画像の何れかに対して画像処理を行う処理工程と、
前記処理工程でそれぞれのセットについて処理を行うことで得られる前記複数の画像のそれぞれを合成することで合成画像を生成し、生成した合成画像を出力する工程と
を備えることを特徴とする画像処理方法。
【請求項６】
コンピュータを、請求項１乃至４の何れか１項に記載の画像処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項７】
請求項６に記載のコンピュータプログラムを格納した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像を用いてダイナミックレンジの広い画像を生成するための技術に関するものである。
【背景技術】
【０００２】
ユーザが屋外などにおいてデジタルカメラで撮影するとき、撮影シーンの輝度レンジが、撮影可能な輝度レンジより広い場合がある。このとき、撮影可能な輝度レンジ外の被写体については、その階調情報を記録することができないため、白飛び・黒潰れが発生する。例えば、晴天時に屋外で人物を撮影する場合、人物に露出を合わせると背景の空や雲が白飛びしたり、木陰が黒潰れしたりするケースがある。しかし、人間の視覚には、見ている領域の明るさや色に応じて順応状態を切り替える、「局所順応」と呼ばれる特性があり、明るい場所／暗い場所ともに階調を知覚することができる。このため、シーンを見た際の印象と撮影画像を見た際の印象が異なっている場合があり、デジタルカメラユーザの不満となっている。
【０００３】
このような問題を解決する技術の１つに、High Dynamic Range Imaging技術（HDR技術）がある。HDR技術は、大きく分けて、HDRキャプチャー技術とHDR再現技術から構成される。
【０００４】
HDRキャプチャー技術は、撮影可能なダイナミックレンジを拡大し、白飛び・黒潰れが発生していた輝度レンジの階調情報をも記録するための技術であり、例えば、複数の露出で撮影した画像を合成するなどの方法がある。以下、このHDRキャプチャーにより取得される画像をHDR画像と呼ぶ。
【０００５】
一方、HDR再現技術は、ダイナミックレンジの広いHDR画像をダイナミックレンジの狭い表示／出力機器で好ましく再現するための画像処理技術であり、例えば、HDR画像の低周波成分を圧縮するなどの方法がある。このようにHDR技術では、ダイナミックレンジ拡大のためのキャプチャー技術と、ダイナミックレンジの広い撮影画像に対応した再現技術により、白飛び・黒潰れを軽減することができる。
【０００６】
上記HDR画像の合成技術において、異なる露出で撮影した画像を合成する際には、合成対象となる画像の重ね合わせ位置を正確に算出する必要がある。しかし、HDR画像は、撮影時刻が異なる画像同士を合成するため、合成対象となるそれぞれの画像は、全画素が同一の画像となり得ない。しかし、短時間のうちに撮影した画像同士であれば、画像同士の相関が高く、多少の合成位置補正を行い、合成することが可能となる。
【０００７】
短時間に撮影した画像同士を合成するための合成位置補正には、位置補正を行うための目印が必要となる。つまり、それぞれの画蔵において、同一の対象を撮影した領域が必要である。通常、露出の異なるそれぞれの画像においては、画像に明るさ補正を行うことにより、同一の領域を抽出する（特許文献１）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特願２００５−０４５８０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、露出時間の違いが大きすぎる画像同士を合成する場合、露出補正を行うだけでは、露光時間の短い画像では黒潰れにより、露光時間の長い画像では白とびにより、同一の領域を抽出することは困難となっていた。そのため、白とびの多い画像と、黒潰れの多い画像を、明るさ補正だけでは同時に位置合わせすることは出来なかった。
【００１０】
本発明は、上記の問題に鑑みてなされたものであり、露出が異なる画像同士をより正確に位置合わせしてから合成するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。即ち、互いに異なる露光時間で撮像された複数の画像を取得する手段と、前記複数の画像を露光時間順に一列に並べた場合に、当該一列において隣接する２つの画像毎のセットを設定する設定手段と、着目セットに含まれる２つの画像のうち露光時間が長い方の画像を長画像、露光時間が短い方の画像を短画像とした場合に、前記長画像と前記短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する特定手段と、前記長画像と前記短画像とを重ね合わせた場合に、前記長画像における前記共通の領域と前記短画像における前記共通の領域とが一致するように、前記長画像に対する位置ずれ補正量を求める計算手段と、前記位置ずれ補正量に基づいて前記長画像に対して画像処理を行う処理手段と、前記処理手段がそれぞれのセットについて処理を行うことで得られる前記複数の画像のそれぞれを合成することで合成画像を生成し、生成した合成画像を出力する手段とを備えることを特徴とする。
【発明の効果】
【００１２】
本発明の構成によれば、露出が異なる画像同士をより正確に位置合わせしてから合成することができる。
【図面の簡単な説明】
【００１３】
【図１】コンピュータ１１０の構成とその周辺機器を示す図。
【図２】１枚のＨＤＲ画像を生成するための処理のフローチャート。
【図３】（ａ）は被写体の一例を示す図、（ｂ）は被写体の原輝度分布と露光時間に応じて撮像可能な画素値範囲を示す図。
【図４】（ａ）は、互いに異なる露光時間で撮像された複数の画像に対して画像セットを設定する処理を説明するための図、（ｂ）は、１つの画像セットを選択するための処理を説明する図。
【図５】（ａ）はヒストグラムを示す図、（ｂ）はヒストグラムに対する閾値ＴＨ０を示す図、（ｃ）はヒストグラムを示す図。
【図６】（ａ）は閾値ＴＨ１の設定方法を説明する図、（ｂ）はヒストグラムを示す図、（ｃ）は閾値ＴＨ０の設定方法を説明する図。
【図７】共通領域を特定する為の画素値範囲を設定する処理を説明する図。
【図８】（ａ）はＩＭ＿Ｂ０、ＩＭ＿Ｂ１を生成するための処理を説明する為の図、（ｂ）はステップＳ１２０５における処理を説明するための図。
【図９】（ａ）はＩＭ０、ＩＭ１’のそれぞれのブロックについて示す図、（ｂ）はＩＭ０についての２値画像ＩＭ＿Ｂ２を説明する図。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すものである。
【００１５】
［第１の実施形態］
＜本実施形態に係る画像処理装置の構成について＞
先ずは、本実施形態に係る画像処理装置の構成と、その周辺機器について説明する。図１は、本実施形態に係る画像処理装置としてのコンピュータ１１０の構成と、その周辺機器を示す図である。１００は、本実施形態に係るコンピューティングシステム環境であり、コンピュータ１１０とその周辺機器とで構成されている。
【００１６】
なお、図１に示したコンピューティングシステム環境１００は、本実施形態に適切なコンピューティング環境の一例に過ぎず、使用または機能性の範囲について何ら制限を示唆するものではない。また、コンピューティングシステム環境１００は、例示的動作環境のコンピューティングシステム環境１００に示す構成要素の任意の１つまたは組合せに関連する依存関係または必要性を有するものとも解釈すべきでない。
【００１７】
本実施形態は、数多くの他の汎用または特殊目的のコンピューティングシステム環境または構成で動作することができる。本実施形態で使用するのに適している可能性がある周知のコンピューティングシステム、環境、および／または構成の例は、これらに限定するものではなく、その他にも例えば、以下に示す各機器の何れかを含む分散コンピューティング環境などがある。
【００１８】
・  パーソナルコンピュータ
・  サーバコンピュータ
・  ハンドヘルド又はラップトップ機器
・  マルチプロセッサシステム
・  マイクロプロセッサを利用したシステム
・  セットトップボックス
・  プログラム可能な家庭用電化製品
・  ネットワークＰＣ（personal computer）
・  ミニコンピュータ、メインフレームコンピュータ
・  上述のシステムまたはデバイス
また、本実施形態は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明することができる。一般に、プログラムモジュールには、特定タスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本実施形態は、通信ネットワークを通じてリンクされたリモートの処理機器によってタスクを行う分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含むローカルおよびリモート両方のコンピュータ記憶媒体にプログラムモジュールを置くことができる。
【００１９】
図１に示す如く、本実施形態に係る画像処理装置として、コンピュータ１１０（汎用コンピューティングデバイス）を用いる。コンピュータ１１０の構成要素は、これらに限定しないが、プロセッサ１２０、システムメモリ１３０、システムメモリ１３０を含む各種のシステム構成要素をプロセッサ１２０に結合するシステムバス１２１、が含まれる。システムバス１２１は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数タイプのバス構造のいずれでもよい。
【００２０】
コンピュータ１１０は通例、各種のコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる任意の利用可能媒体でよく、揮発性および不揮発性の媒体、リムーバブルおよびノンリムーバブル媒体が含まれる。これに限定しないが、例としてコンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術として実装された揮発性および不揮発性の媒体、リムーバブルおよびノンリムーバブル媒体を含む。
【００２１】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１、ランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ１１０内の要素間の情報転送を助ける基本ルーチンを含むＢＩＯＳ（BasicInput/Output System）１３３は、通例ＲＯＭ１３１に記憶される。ＲＡＭ１３２は通例、プロセッサ１２０から即座にアクセス可能な、かつ／または現在プロセッサ１２０によって操作中のデータおよび／またはプログラムモジュールを保持する。これらに限定しないが、例として、図１にはオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、プログラムデータ１３７を示している。
【００２２】
コンピュータ１１０は、この他のリムーバブル／ノンリムーバブル、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。単なる例として、図１には、ノンリムーバブル、不揮発性の磁気媒体に対する読み書きを行うハードディスクドライブ１４１、リムーバブル、不揮発性の磁気ディスク１５２に対する読み書きを行う磁気ディスクドライブ１５１を示している。更には、ＣＤ−ＲＯＭや他の光学媒体などのリムーバブル、不揮発性の光ディスク１５６に対する読み書きを行う光ディスクドライブ１５５を示す。
【００２３】
この例示的動作環境で使用できる他のリムーバブル／ノンリムーバブル、揮発性／不揮発性のコンピュータ記憶媒体は、これらに限定しない。ハードディスクドライブ１４１は通例、インタフェース１４０などのノンリムーバブルメモリインタフェースを通じてシステムバス１２１に接続されている。また、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通例、インタフェース１５０などのリムーバブルメモリインタフェースによってシステムバス１２１に接続される。
【００２４】
上記で説明し、図１に示すドライブとそれに関連付けられたコンピュータ記憶媒体は、コンピュータ１１０のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供する。例えば図１では、ハードディスクドライブ１４１にオペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、プログラムデータ１４７を記憶している。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、プログラムデータ１３７と同じものであっても、異なるものであってもよいことに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、プログラムデータ１４７には、それらが少なくとも異なるコピーであることを表すために異なる参照符号を付している。
【００２５】
ユーザは、キーボード１６２、および通例はマウス、トラックボール、タッチパッドと称されるポインティングデバイス１６１などの入力装置を通じてコンピュータ１１０にコマンドと情報を入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力装置は、システムバス１２１に結合されたユーザ入力インタフェース１６０を通じてプロセッサ１２０に接続することが多い。しかし、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス（ＵＳＢ）など他のインタフェースおよびバス構造で接続することも可能である。
【００２６】
モニタ１９１または他のタイプの表示装置も、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。コンピュータ１１０は、モニタ１９１に加えて、スピーカ１９７やプリンタ１９６など他の周辺出力装置も含むことができ、それらは出力周辺機器インタフェース１９５を介してシステムバス１２１に接続することができる。
【００２７】
以降の説明に特に重要なものとして、一連の画像１９３を撮像可能なカメラ１９２（デジタル／電子静止カメラまたはビデオカメラ、またはフィルム／写真スキャナ）も、コンピュータ１１０の入力装置として含めることができる。さらに、図１には１つのみのカメラを示しているが、複数のカメラをコンピュータ１１０の入力装置として含めることもできる。１つまたは複数のカメラからの画像１９３は、適切なカメラインタフェース１９４を介してコンピュータ１１０に入力される。このカメラインタフェース１９４は、システムバス１２１に接続され、撮像された一連の画像１９３は、ＲＡＭ１３２またはコンピュータ１１０に関連付けられた他のデータ記憶装置の１つに転送され、データとして記憶することができる。ただし、画像のデータは、カメラ１９２の使用を必要とせずに、前述のコンピュータ可読媒体からコンピュータ１１０に入力することができることに留意されたい。
【００２８】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、あるいはその他の一般的なネットワークノードでよい。図１にはリモートコンピュータ１８０に接続されているものとしてメモリ記憶装置１８１のみを示すが、通例はコンピュータ１１０との関連で上記で挙げた要素の多くまたはすべてを含む。
【００２９】
図１に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１とワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークを含むことも可能である。ＬＡＮネットワーキング環境で使用する場合、コンピュータ１１０はネットワークインタフェース１７０（またはアダプタ）を通じてＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は通例、インターネットなどのＷＡＮ１７３を通じて通信を確立するためのモデム１７２またはその他の手段を含む。モデム１７２は内蔵型でも外付け型でもよく、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０との関連で図示したプログラムモジュール、またはその一部はリモートのメモリ記憶装置１８１に格納することができる。これに限定しないが、例として図１ではリモートアプリケーションプログラム１８５がメモリ記憶装置１８１内に保存されている。図１のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用できることは理解されよう。
【００３０】
＜ＨＤＲ画像の生成方法＞
以下では、図１に示したコンピューティングシステム環境１００を用いて、露光時間が異なる複数の画像を合成して、これらの画像よりもダイナミックレンジが広い画像である１枚のＨＤＲ画像を生成するための処理について説明する。なお、特に説明がない限りは、以下に説明する各処理の主体はプロセッサ１２０である。概略的に述べると、本実施形態は、一続きの段階露出画像がシーンおよびカメラの動きを捕捉する場合でも、そのような画像を使用してＨＤＲ画像を生成するものである。
【００３１】
本実施形態では、ＨＤＲ画像を生成するためには先ず、露光時間が異なる複数の画像を取得するのであるが、これは、段階露出を使用して撮像することで得られる。ここで、段階露出（ｂｒａｃｋｅｔｉｎｇ）とは、本来は写真技術で用いられる用語であり、最適な露出レベルの写真を１枚得ることを期待して複数の露出設定で同じシーンの写真を複数枚取ることを意味する。
【００３２】
以下の説明では、露出レベルを変化させながらカメラ１９２によって撮像された画像の集合を、「段階露出画像」と呼称する場合がある。即ち、一連の画像１９３とは換言すれば、段階露出画像のことである。
【００３３】
段階露出を実現する方式の１つは、現在の多くの静止写真カメラに備わる自動段階露出機能を使用すれば良い。あるシーンを自動的に段階露出する際、カメラ１９２は、現在の測光モードを使用して適正露出を決定し、そのレベルで画像を撮像する。次いで、元の露出を固定された倍数で変倍したさらに多くの露出でもって追加的に撮像する。例えば、そうしたカメラ１９２の多くは、「適正露出」の画像と比較してより短い露光時間（例えば＋１〜２の絞り値）で１つの画像を撮像し、より長い露光時間（例えば−１〜２の絞り値）で１つの画像を撮像する。段階露出したシーケンス中の画像の数と画像間の露光時間の変化は、それらの画像が、画像中に描写されるシーンの実質的にすべての輝度の変化をまとめて捕捉するようなものであることが理想的であることに留意されたい。このようにすると、結果得られるＨＤＲ画像は、そのシーンのダイナミックレンジ全体を表す。
【００３４】
図２は、露光時間が異なる複数の画像を合成して１枚のＨＤＲ画像を生成するための処理のフローチャートである。なお、図２に示したフローチャートに従った処理をプロセッサ１２０に実行させるためのプログラムやデータ（以降の説明で既知のデータとして説明するものも含む）は、ＲＡＭ１３２に格納されており、プロセッサ１２０による処理対象となる。
【００３５】
先ず、カメラ１９２等から、互いに異なる露光時間で撮像された複数の画像（段階露出画像）が、カメラインタフェース１９４を介してコンピュータ１１０に入力される。従って、ステップＳ２０１ではプロセッサ１２０は、これらの画像のデータをＲＡＭ１３２に一時的に格納（取得）する。なお、プロセッサ１２０は、段階露出した画像を得る方式に関係なく、互いに異なる露光時間で撮像された複数の画像をＲＡＭ１３２に一時的に格納する場合には、これらの画像を、露光時間順に並べ替える。
【００３６】
図３（ａ）は、本実施形態で撮像対象としている被写体の一例を示す図、図３（ｂ）は、被写体の原輝度分布と露光時間に応じて撮像可能な画素値範囲を示す図である。比較的短い露光時間で撮像した場合には、図３（ｂ）において３０１で示す画素値範囲内の画素値を撮像することができる。即ち、この場合に得られる撮像画像を構成する各画素の画素値は、画素値範囲３０１内のものである。また、比較的長い露光時間で撮像した場合には、図３（ｂ）において３０３で示す画素値範囲内の画素値を撮像することができる。即ち、この場合に得られる撮像画像を構成する各画素の画素値は、画素値範囲３０３内のものである。また、中間的な長さの露光時間で撮像を行った場合には、図３（ｂ）において３０２で示す画素値範囲内の画素値を撮像することができる。即ち、この場合に得られる撮像画像を構成する各画素の画素値は、画素値範囲３０２内のものである。
【００３７】
図２に戻って、次に、ステップＳ２０２では先ず、ＲＡＭ１３２内に並び替えられた複数の画像において、隣接する２つの画像毎のセット（画像セット）を設定する。具体的には、複数の画像を露光時間順に一列に並べた場合に、この一列において隣接する２つの画像毎のセット（画像セット）を設定する。ここで、ステップＳ２０１でＲＡＭ１３２に一時的に格納した画像群に対して画像セットを設定するための処理について、図４を用いて説明する。
【００３８】
図４（ａ）は、互いに異なる露光時間で撮像された複数の画像に対して画像セットを設定する処理を説明するための図である。図４（ａ）には、露光時間の順に一列に並べられたｎ枚の画像が示されており、紙面右側の画像ほど露光時間が長く、左側の画像ほど露光時間は短い。
【００３９】
ステップＳ２０２では先ず、ステップＳ２０１でＲＡＭ１３２に一時的に格納した画像の枚数を計数する。図４の場合、計数の結果はｎである。次に、最も露光時間の短い画像と２番目に露光時間が短い画像とを１つの画像セットとして設定する。この設定した画像セットが、「１番目の組み合わせ（セット）」である。次に、最も露光時間の長い画像と２番目に露光時間が長い画像とを１つの画像セットとして設定する。この設定した画像セットが、「２番目の組み合わせ（セット）」である。次に、２番目に露光時間が短い画像と３番目に露光時間が短い画像とを１つの画像セットとして設定する。この設定した画像セットが、「３番目の組み合わせ（セット）」である。以降、同様にして、露光時間が長い画像、露光時間が短い画像の順に組み合わせを選択する。
【００４０】
このようにして画像セットの設定が完了すると、次に、ステップＳ２０２では、設定した画像セット群から１つの画像セットを選択画像セット（着目セット）として選択し、この選択画像セット中の２つの画像間の位置ずれ補正量を求める処理を行う。図４（ｂ）は、１つの画像セットを選択するための処理を説明する図である。選択順は、画像セットの設定順と同じである。以下の説明では、選択画像セットに含まれている２つの画像のうち、露光時間が短い方の画像（短画像）をＩＭ０、長い方の画像（長画像）をＩＭ１と表記する。
【００４１】
図２に戻って、次に、ステップＳ２０３では先ず、ＩＭ０に含まれている画素値のヒストグラム、ＩＭ１に含まれている画素値のヒストグラムを作成する。ＩＭ０が露光時間が最も短い画像である場合には、そのヒストグラムは、一般的には図５（ａ）に示すような逆シグモイド形の山と、画素値の高い部分に小さな山ができる形となり、低い画素値に多くの画素が集まる傾向にある。図５（ａ）は、露光時間が最も短い画像の一般的な画素値のヒストグラムを示す図である。図５（ａ）において横軸は画素値、縦軸は画素値の登場頻度を示している。
【００４２】
このとき、ＩＭ０において、ＩＭ１に対する位置ずれ補正量を求める処理で有用な画素の多くは、高い画素値を有する画素の部分にあつまる。そのため、図５（ｂ）に示すように、逆シグモイド形の下限と山の間に閾値ＴＨ０を設けるのがよい。図５（ｂ）は、図５（ａ）に示したヒストグラムに対する閾値ＴＨ０を示す図である。なお、この閾値ＴＨ０は、大津の方法等を用いて求めることができる。しかし、閾値ＴＨ０を求める方法はこれに限定するものではなく、様々な方法が考え得る。従ってステップＳ２０３では次に、閾値ＴＨ０を求めると共に、最大の画素値（例えば、ＩＭ０の画素値が８ビットで表現されている場合には２５５）から閾値ＴＨ０が示す画素値までの間の各画素値の登場頻度の合計値Ｓ１を求める。
【００４３】
ステップＳ２０３では次に、ＩＭ１についても同様の閾値ＴＨ１を求める。ＩＭ１は、中間的な露光時間の画像に相当するため、一般的には、そのヒストグラムは白とび、黒潰れが少ない図５（ｃ）に示すようなものとなる。図５（ｃ）は、中間的な露光時間の画像の一般的な画素値のヒストグラムを示す図である。図５（ｃ）において横軸は画素値、縦軸は画素値の登場頻度を示している。
【００４４】
次に、ステップＳ２０３では、図８（ａ）に示す如く、最大の画素値（例えば、ＩＭ１の画素値が８ビットで表現されている場合には２５５）から画素値の低い方向に向かって閾値αを移動させる。そして、閾値αを１移動させる毎に、最大の画素値から閾値αまでの間の各画素値の登場頻度の合計値Ｓ２を求める。そして合計値Ｓ２が最も上記合計値Ｓ１に近くなった時点での閾値αを、最終的な閾値ＴＨ１（＝α）として設定する。もちろん、閾値ＴＨ１の求め方については、これに限定するものではなく、同様の性質を有するのであれば、他の方法を用いて閾値ＴＨ１を求めても良い。ここで、以上のようにして先に閾値ＴＨ０を求め、後で閾値ＴＨ１を求める方法を「方法１」と呼称する。
【００４５】
また、ＩＭ１が露光時間が最も長い画像である場合には、そのヒストグラムは図６（ｂ）に示す如く、シグモイド形の山と、画素値の低い部分に小さな山ができる形となり、高い画素値に多くの画素が集まる傾向にある。従って、ＩＭ１が露光時間が最も長い画像であり、ＩＭ０が２番目に露光時間が長い画像である場合、上記のように閾値ＴＨ０を先に求め、次に閾値ＴＨ１を求めるのではなく、先に閾値ＴＨ１を求め、次に閾値ＴＨ０を求める方がよい。
【００４６】
このとき、閾値ＴＨ１は、シグモイド形の下限と山の間になるよう、大津の方法等を用いて求め、更に、最小の画素値（＝０）から閾値ＴＨ１が示す画素値までの間の各画素値の登場頻度の合計値Ｓ３を求める。そして、閾値ＴＨ０については、図６（ｃ）に示すように、最小の画素値（＝０）から画素値の高い方向に向かって閾値αを移動させる。そして、閾値αを１移動させる毎に、最小の画素値から閾値αまでの間の各画素値の登場頻度の合計値Ｓ４を求める。そして合計値Ｓ４が最も上記合計値Ｓ３に近くなった時点での閾値αを、最終的な閾値ＴＨ０（＝α）として設定する。もちろん、閾値ＴＨ０の求め方については、これに限定するものではなく、同様の性質を有するのであれば、他の方法を用いて閾値ＴＨ０を求めても良い。ここで、以上のようにして先に閾値ＴＨ１を求め、後で閾値ＴＨ０を求める方法を「方法２」と呼称する。
【００４７】
なお、最長の露光時間の画像を含む画像セット、最短の露光時間の画像を含む画像セット以外の画像セットについての閾値設定方法については以下の通りである。即ち、「最長の露光時間と最短の露光時間との中間露光時間（若しくはその近傍時間）の画像」から最長の露光時間の画像までのそれぞれを含む画像セットについては方法２を用いる。一方、中間露光時間（若しくはその近傍時間）の画像から最短の露光時間の画像までのそれぞれを含む画像セットについては方法１を用いる。
【００４８】
次に、ＩＭ０、ＩＭ１のそれぞれから、位置ずれ補正量を求めるための基準として用いる領域（共通領域）を、上記閾値ＴＨ０，ＴＨ１を用いて特定するのであるが、そのためにステップＳ２０４では、この領域を特定する為の画素値範囲を設定する処理を行う。
【００４９】
ステップＳ２０４における処理は、ステップＳ２０１でＲＡＭ１３２に一時的に格納した画像の枚数（ステップＳ２０２において計数済み）が偶数であるか奇数であるのかに応じて異なる。図７は、共通領域を特定する為の画素値範囲を設定する処理を説明する図である。図７（ａ）には、画像の枚数が偶数である場合における、共通領域を特定する為の画素値範囲を設定する処理を示している。図７（ｂ）には、画像の枚数が奇数である場合における、共通領域を特定する為の画素値範囲を設定する処理を示している。また、図７（ａ）、（ｂ）には、図４に示したように、露光時間の順に一列に並べられたｎ枚の画像が示されている。図７では紙面右側の画像ほど露光時間が長く、左側の画像ほど露光時間は短い。ここで、本説明では、露光時間が最も短い画像から露光時間が最も長い画像に向けて順に画像１、画像２…と呼称する。
【００５０】
画像の枚数が偶数である場合には、ＩＭ０、ＩＭ１のそれぞれに対しては、図７（ａ）に示す如く、画素値範囲を設定する。即ち、画像１〜画像（ｎ／２−１）を含む各画像セットについて、ＩＭ０に対応する画像には閾値ＴＨ０から最大の画素値までを画素値範囲として設定し、ＩＭ１に対応する画像には閾値ＴＨ１から最大の画素値までを画素値範囲として設定する。例えば、画像１（ＩＭ０）に対しては、閾値ＴＨ０が示す画素値から最大の画素値までを画素値範囲として設定し、画像２（ＩＭ１）に対しては、閾値ＴＨ１が示す画素値から最大の画素値までを画素値範囲として設定する。
【００５１】
一方、画像（ｎ／２＋２）〜画像ｎを含む各画像セットについて、ＩＭ０に対応する画像には最小の画素値から閾値ＴＨ０までを画素値範囲として設定し、ＩＭ１に対応する画像には最小の画素値から閾値ＴＨ１までを画素値範囲として設定する。例えば、画像（ｎ−１）（ＩＭ０）に対しては、最小の画素値から閾値ＴＨ０が示す画素値までを画素値範囲として設定し、画像ｎ（ＩＭ１）に対しては、最小の画素値から閾値ＴＨ１が示す画素値までを画素値範囲として設定する。
【００５２】
また、画像（ｎ／２）と画像（ｎ／２＋１）のそれぞれに対して設定する画素値範囲については、上記で説明した画素値範囲のうち、画素値範囲に属する画素の数が多い方を選択する。
【００５３】
一方、画像の枚数が奇数である場合には、ＩＭ０、ＩＭ１のそれぞれに対しては、図７（ｂ）に示す如く、画素値範囲を設定する。即ち、画像１〜画像（ｎ＋１）／２を含む各画像セットについて、ＩＭ０に対応する画像には閾値ＴＨ０から最大の画素値までを画素値範囲として設定し、ＩＭ１に対応する画像には閾値ＴＨ１から最大の画素値までを画素値範囲として設定する。また、画像（ｎ＋１）／２〜画像ｎを含む各画像セットについて、ＩＭ０に対応する画像には最小の画素値から閾値ＴＨ０までを画素値範囲として設定し、ＩＭ１に対応する画像には最小の画素値から閾値ＴＨ１までを画素値範囲として設定する。
【００５４】
このような処理を行うことで、ＩＭ０、ＩＭ１のそれぞれについて画素値範囲が設定される。従って、ステップＳ２０４では次に、ＩＭ０に対して設定された画素値範囲内の領域（共通領域０）をＩＭ０において特定し（第１の特定）、ＩＭ０においてこの特定した領域内の画素値を１、それ以外の領域内の画素値を０とした２値画像ＩＭ＿Ｂ０を生成する。同様に、ＩＭ１に対して設定された画素値範囲内の領域（共通領域１）をＩＭ１において特定し（第２の特定）、ＩＭ１においてこの特定した領域内の画素値を１、それ以外の領域内の画素値を０とした２値画像ＩＭ＿Ｂ１を生成する。図８（ａ）は、ＩＭ＿Ｂ０、ＩＭ＿Ｂ１を生成するための処理を説明する為の図である。
【００５５】
図８（ａ）において１２０１は、ＩＭ０に対して設定された画素値範囲内の画素値を有する画素群で構成されている領域（共通領域０）、１２０２は、ＩＭ１に対して設定された画素値範囲内の画素値を有する画素群で構成されている領域（共通領域１）である。そして、ＩＭ０において領域１２０１内の画素値を１、それ以外の領域内の画素値を０としたものが、２値画像ＩＭ＿Ｂ０である。１２０３は、画素値１で構成されている領域であり、領域１２０１と位置的に対応する領域である。また同様に、ＩＭ１において領域１２０２内の画素値を１、それ以外の領域内の画素値を０としたものが、２値画像ＩＭ＿Ｂ１である。１２０４は、画素値１で構成されている領域であり、領域１２０２と位置的に対応する領域である。
【００５６】
図２に戻って、次に、ステップＳ１２０５では、ＩＭ＿Ｂ０とＩＭ＿Ｂ１とを重ね合わせた２値合成画像、即ち、ＩＭ＿Ｂ０とＩＭ＿Ｂ１とで画素毎にＡＮＤ演算を行うことで得られる画像を生成する。ここで、この生成した２値合成画像において画素値が１の画素で構成されている領域とは、共通領域０と共通領域１との共通部分（重複部分）である。従ってステップＳ２０５では次に、この共通部分のサイズ（共通部分を構成する画素の数）が規定値以上であるか否かを判断する。そして規定値以上であれば、共通領域０と共通領域１とをそれぞれ、位置ずれ補正量を求める処理で用いる領域ＩＭ＿Ｏ０、ＩＭ＿Ｏ１に設定する。
【００５７】
図８（ｂ）は、ステップＳ１２０５における処理を説明するための図である。図８（ｂ）において１３００はＩＭ＿Ｂ０とＩＭ＿Ｂ１との２値合成画像で、１３０１はＩＭ＿Ｂ０における共通領域、１３０２はＩＭ＿Ｂ１における共通領域である。ＩＭ＿Ｃ０は、２値合成画像１３００における、共通領域１３０１と共通領域１３０２との共通部分で、ＩＭ＿Ｃ０のサイズ（画素数）が規定値以上であれば、共通領域１３０１をＩＭ＿Ｏ０、共通領域１３０２をＩＭ＿Ｏ１に設定する。
【００５８】
次に、ステップＳ２０６では、ＩＭ０とＩＭ１との位置ずれ補正量を求める。これは、ＩＭ１について、ＩＭ０に対してどの程度の位置ずれ補正を行えば、ＩＭ０とＩＭ１とが一致し、画像合成が精密に行えるのか、の補正量を求める処理に等価である。以下に、この位置ずれ補正量を求める方法について説明する。
【００５９】
先ず、ＩＭ０と、位置ずれ補正後のＩＭ１と、を重ねた場合にＩＭ＿Ｏ１とＩＭ＿Ｏ０とが略一致するように、ＩＭ１全体に対して並進、回転、拡大縮小に伴う位置ずれ補正を行う。係る補正には、並進や回転、スケール変換を扱うＡｆｆｉｎｅ変換を用いるの容易である。Ａｆｆｉｎｅ変換による変換方法は次式のように定義される。
【００６０】
｜ｘ’｜      ｜ａ  ｂ｜｜ｘ｜  ｜ｅ｜
｜    ｜  ＝  ｜      ｜｜  ｜＋｜  ｜
｜ｙ’｜      ｜ｃ  ｄ｜｜ｙ｜  ｜ｆ｜
ＩＭ０を基準としたときに、ＩＭ０に対してのＩＭ１の位置ずれを補正する場合、即ち、ＩＭ１に対して上記のＡｆｆｉｎｅ変換を施す場合には、（ｘ’，ｙ’）はＩＭ０内のＩＭ＿Ｏ０の座標位置、（ｘ，ｙ）はＩＭ１内のＩＭ＿Ｏ１の座標位置となる。（ａ，ｂ，ｃ，ｄ，ｅ，ｆ）は並進、回転、スケール変換等を表すＡｆｆｉｎｅ変換のパラメータである。係る式が成り立つように、このパラメータを求める。
【００６１】
しかし、ＩＭ０、ＩＭ１内で画素位置によって並進量が異なる場合には、以上のＡｆｆｉｎｅ変換のみでは位置補正が不十分となる場合がある。例えば、画像中において数画素単位のずれで現れる、被写体の微妙な姿勢の違いは、全体位置補正では十分に補正することはできない。そこで次に、画素単位で微小な位置ずれを補正する、精細位置補正を行う。この精細位置補正は、各画素間での並進量のみを補正することを対象とする。ここでは、ブロックマッチング法を用いた、精細位置補正について説明する。
【００６２】
まず、ＩＭ１に対して上記処理で求めたパラメータ用いた上記式に基づくＡｆｆｉｎｅ変換を行うことで、ＩＭ１’を生成する。次に、ＩＭ０とＩＭ１’のそれぞれを図９（ａ）に示す如く、ブロック毎に分割する。図９（ａ）は、ＩＭ０、ＩＭ１’のそれぞれのブロックについて示す図である。そしてＩＭ０とＩＭ１’とで位置的に対応するブロック同士で相関度を求め、ブロック中心のずれ量を求める。係る処理を全てのブロック組について行った後、次に、各画素についてのずれ量を算出する。画素単位でのずれ量の見積もりは、ブロック中心に該当する画素が保持するずれ量から線形補間等の補間によって求めればよい。ブロックマッチング法の計算式については周知であり、例えば以下の文献に開示されている。
【００６３】
・  E. De Castro and C. Morandi ”Registration of Translated and Rotated Images Using Finite Fourier Transforms”, IEEE Transactions on pattern analysis and machine intelligence, Sept. 1987
このように、各画素についてのずれ量を求めることで、上記Ａｆｆｉｎｅ変換を行った後のＩＭ１を更に画素毎に補正することができる。従ってステップＳ２０６では、Ａｆｆｉｎｅ変換の上記パラメータと、画素毎のずれ量のセットを、位置ずれ補正量として求める。
【００６４】
次に、ステップＳ２０７では、位置ずれ補正量の計算を行っていない画像セットが未だあるのか否かを判断する。係る判断の結果、未だある場合には処理をステップＳ２０２に戻し、位置ずれ補正量の計算を行っていない画像セットについて以降の処理を行う。一方、全ての画像セットについて位置ずれ補正量の計算を行った場合には処理をステップＳ２０８に進める。
【００６５】
ステップＳ２０８に進んだ時点では、全ての画像セットについて位置ずれ補正量を求めたことになっているので、ステップＳ２０８では、それぞれの画像セット内で、ＩＭ１に対して、ステップＳ２０６で求めた位置ずれ補正量を用いた処理（画像処理）を行う。即ち、Ａｆｆｉｎｅ変換のパラメータを用いてＩＭ１に対するＡｆｆｉｎｅ変換（回転・並進処理）を行った後、画素毎のずれ量を用いて画素毎のずれを補正する。回転の結果、重ね合わせ処理には必要の無い部分、すなわち、画像の端部は、画像の合成には用いない。これにより、ＩＭ０とＩＭ１とを重ね合わせた場合に、ＩＭ＿Ｏ０とＩＭ＿Ｏ１とが略一致することになる。
【００６６】
最後に、ステップＳ２０９では、ステップＳ２０８において位置ずれ補正が成されたそれぞれの画像を合成することで、ＨＤＲ画像を生成する。なお、本実施形態では、画像の合成を行う際、露出の少ない画像に合成ゲインを乗じ、露出の多い画像に順次合成していくものとする。ＨＤＲ画像の生成方法については様々なものがあり、特に限定するものではない。例えば、特開２００２-２９０８２９号公報に開示されている技術を用いても良い。
【００６７】
そして生成されたＨＤＲ画像は、ＲＡＭ１３２やハードディスクドライブ１４１等の記録装置に出力しても良いし、モニタ１９１に表示しても良いし、外部にネットワークを介して出力しても良い。
【００６８】
以上の説明により、本実施形態によれば、露光時間が異なる複数の画像のそれぞれについて、位置合わせの基準となる共通領域を抽出することができるので、この共通領域を用いて複数の画像のそれぞれの位置合わせ処理を精度良く行うことができる。そしてこれにより、より好適なＨＤＲ画像を生成することができる。
【００６９】
［第２の実施形態］
以下の説明では、第１の実施形態と異なる点のみについて説明する。本実施形態では、共通領域を特定するための処理が第１の実施形態とは異なる。本実施形態では、例えばＩＭ０における共通領域０を特定する場合、ＩＭ０に対してγ変換を行うことでＩＭ０の輝度変換を行い、γ変換後のＩＭ０から共通領域０を第１の実施形態と同様にして求める。  図９（ｂ）は、ＩＭ０についての２値画像ＩＭ＿Ｂ２を説明する図である。ＩＭ０に対してγ変換を施した結果から共通領域０を特定し、γ変換後のＩＭ０において特定した共通領域０を構成する画素の画素値を１，それ以外の領域を０とした２値画像ＩＭ＿Ｂ２を生成する。１５０１は、２値画像ＩＭ＿Ｂ２における共通領域０を示す。
【００７０】
なお、第１，２の実施形態では、上記各処理はコンピュータにおいて実行するものとして説明したが、カメラが充分な処理能力（処理速度、データ容量）を有するのであれば、このカメラが第１，２の実施形態で説明した各処理を実行するようにしても良い。
【００７１】
また、第１，２の実施形態では説明上、画像中に１つの共通領域しか存在しない場合について説明したが、設定された画素値範囲内の画素値を有する画素群で構成される領域は複数存在し得る。
【００７２】
［その他の実施形態］
本発明は、前述した実施形態の機能を実現するソフトウェアのコンピュータプログラム、このコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体によっても実現可能である。これは、システムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することで、コンピュータプログラム自体が前述した実施形態の機能を実現することになるからである。然るに、このコンピュータプログラム、及びこのコンピュータプログラムを記録した記憶媒体は本発明を構成することになる。本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図１】
2011004353.tif 000003
【図２】
2011004353.tif 000004
【図３】
2011004353.tif 000005
【図４】
2011004353.tif 000006
【図５】
2011004353.tif 000007
【図６】
2011004353.tif 000008
【図７】
2011004353.tif 000009
【図８】
2011004353.tif 000010
【図９】
2011004353.tif 000011