説明

画像処理装置、画像処理方法

【課題】 露出が異なる画像同士をより正確に位置合わせしてから合成するための技術を提供すること。
【解決手段】 互いに異なる露光時間で撮像された複数の画像を露光時間順に一列に並べた場合に、この一列において隣接する2つの画像毎のセットを設定する(S202)。着目セットに含まれる長画像と短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する(S203,S204)。長画像と短画像とを重ね合わせた場合に、それぞれの共通領域が一致するように、長画像に対する位置ずれ補正量を求める(S206)。位置ずれ補正量に基づいて長画像に対して画像処理を行う(S208)。それぞれのセットについて画像処理を行うことで得られる複数の画像を合成することで合成画像を生成し、生成した合成画像を出力する(S209)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の画像を用いてダイナミックレンジの広い画像を生成するための技術に関するものである。
【背景技術】
【0002】
ユーザが屋外などにおいてデジタルカメラで撮影するとき、撮影シーンの輝度レンジが、撮影可能な輝度レンジより広い場合がある。このとき、撮影可能な輝度レンジ外の被写体については、その階調情報を記録することができないため、白飛び・黒潰れが発生する。例えば、晴天時に屋外で人物を撮影する場合、人物に露出を合わせると背景の空や雲が白飛びしたり、木陰が黒潰れしたりするケースがある。しかし、人間の視覚には、見ている領域の明るさや色に応じて順応状態を切り替える、「局所順応」と呼ばれる特性があり、明るい場所/暗い場所ともに階調を知覚することができる。このため、シーンを見た際の印象と撮影画像を見た際の印象が異なっている場合があり、デジタルカメラユーザの不満となっている。
【0003】
このような問題を解決する技術の1つに、High Dynamic Range Imaging技術(HDR技術)がある。HDR技術は、大きく分けて、HDRキャプチャー技術とHDR再現技術から構成される。
【0004】
HDRキャプチャー技術は、撮影可能なダイナミックレンジを拡大し、白飛び・黒潰れが発生していた輝度レンジの階調情報をも記録するための技術であり、例えば、複数の露出で撮影した画像を合成するなどの方法がある。以下、このHDRキャプチャーにより取得される画像をHDR画像と呼ぶ。
【0005】
一方、HDR再現技術は、ダイナミックレンジの広いHDR画像をダイナミックレンジの狭い表示/出力機器で好ましく再現するための画像処理技術であり、例えば、HDR画像の低周波成分を圧縮するなどの方法がある。このようにHDR技術では、ダイナミックレンジ拡大のためのキャプチャー技術と、ダイナミックレンジの広い撮影画像に対応した再現技術により、白飛び・黒潰れを軽減することができる。
【0006】
上記HDR画像の合成技術において、異なる露出で撮影した画像を合成する際には、合成対象となる画像の重ね合わせ位置を正確に算出する必要がある。しかし、HDR画像は、撮影時刻が異なる画像同士を合成するため、合成対象となるそれぞれの画像は、全画素が同一の画像となり得ない。しかし、短時間のうちに撮影した画像同士であれば、画像同士の相関が高く、多少の合成位置補正を行い、合成することが可能となる。
【0007】
短時間に撮影した画像同士を合成するための合成位置補正には、位置補正を行うための目印が必要となる。つまり、それぞれの画蔵において、同一の対象を撮影した領域が必要である。通常、露出の異なるそれぞれの画像においては、画像に明るさ補正を行うことにより、同一の領域を抽出する(特許文献1)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特願2005−045804号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、露出時間の違いが大きすぎる画像同士を合成する場合、露出補正を行うだけでは、露光時間の短い画像では黒潰れにより、露光時間の長い画像では白とびにより、同一の領域を抽出することは困難となっていた。そのため、白とびの多い画像と、黒潰れの多い画像を、明るさ補正だけでは同時に位置合わせすることは出来なかった。
【0010】
本発明は、上記の問題に鑑みてなされたものであり、露出が異なる画像同士をより正確に位置合わせしてから合成するための技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。即ち、互いに異なる露光時間で撮像された複数の画像を取得する手段と、前記複数の画像を露光時間順に一列に並べた場合に、当該一列において隣接する2つの画像毎のセットを設定する設定手段と、着目セットに含まれる2つの画像のうち露光時間が長い方の画像を長画像、露光時間が短い方の画像を短画像とした場合に、前記長画像と前記短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する特定手段と、前記長画像と前記短画像とを重ね合わせた場合に、前記長画像における前記共通の領域と前記短画像における前記共通の領域とが一致するように、前記長画像に対する位置ずれ補正量を求める計算手段と、前記位置ずれ補正量に基づいて前記長画像に対して画像処理を行う処理手段と、前記処理手段がそれぞれのセットについて処理を行うことで得られる前記複数の画像のそれぞれを合成することで合成画像を生成し、生成した合成画像を出力する手段とを備えることを特徴とする。
【発明の効果】
【0012】
本発明の構成によれば、露出が異なる画像同士をより正確に位置合わせしてから合成することができる。
【図面の簡単な説明】
【0013】
【図1】コンピュータ110の構成とその周辺機器を示す図。
【図2】1枚のHDR画像を生成するための処理のフローチャート。
【図3】(a)は被写体の一例を示す図、(b)は被写体の原輝度分布と露光時間に応じて撮像可能な画素値範囲を示す図。
【図4】(a)は、互いに異なる露光時間で撮像された複数の画像に対して画像セットを設定する処理を説明するための図、(b)は、1つの画像セットを選択するための処理を説明する図。
【図5】(a)はヒストグラムを示す図、(b)はヒストグラムに対する閾値TH0を示す図、(c)はヒストグラムを示す図。
【図6】(a)は閾値TH1の設定方法を説明する図、(b)はヒストグラムを示す図、(c)は閾値TH0の設定方法を説明する図。
【図7】共通領域を特定する為の画素値範囲を設定する処理を説明する図。
【図8】(a)はIM_B0、IM_B1を生成するための処理を説明する為の図、(b)はステップS1205における処理を説明するための図。
【図9】(a)はIM0、IM1’のそれぞれのブロックについて示す図、(b)はIM0についての2値画像IM_B2を説明する図。
【発明を実施するための形態】
【0014】
以下、添付図面を参照し、本発明の実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すものである。
【0015】
[第1の実施形態]
<本実施形態に係る画像処理装置の構成について>
先ずは、本実施形態に係る画像処理装置の構成と、その周辺機器について説明する。図1は、本実施形態に係る画像処理装置としてのコンピュータ110の構成と、その周辺機器を示す図である。100は、本実施形態に係るコンピューティングシステム環境であり、コンピュータ110とその周辺機器とで構成されている。
【0016】
なお、図1に示したコンピューティングシステム環境100は、本実施形態に適切なコンピューティング環境の一例に過ぎず、使用または機能性の範囲について何ら制限を示唆するものではない。また、コンピューティングシステム環境100は、例示的動作環境のコンピューティングシステム環境100に示す構成要素の任意の1つまたは組合せに関連する依存関係または必要性を有するものとも解釈すべきでない。
【0017】
本実施形態は、数多くの他の汎用または特殊目的のコンピューティングシステム環境または構成で動作することができる。本実施形態で使用するのに適している可能性がある周知のコンピューティングシステム、環境、および/または構成の例は、これらに限定するものではなく、その他にも例えば、以下に示す各機器の何れかを含む分散コンピューティング環境などがある。
【0018】
・ パーソナルコンピュータ
・ サーバコンピュータ
・ ハンドヘルド又はラップトップ機器
・ マルチプロセッサシステム
・ マイクロプロセッサを利用したシステム
・ セットトップボックス
・ プログラム可能な家庭用電化製品
・ ネットワークPC(personal computer)
・ ミニコンピュータ、メインフレームコンピュータ
・ 上述のシステムまたはデバイス
また、本実施形態は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明することができる。一般に、プログラムモジュールには、特定タスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本実施形態は、通信ネットワークを通じてリンクされたリモートの処理機器によってタスクを行う分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含むローカルおよびリモート両方のコンピュータ記憶媒体にプログラムモジュールを置くことができる。
【0019】
図1に示す如く、本実施形態に係る画像処理装置として、コンピュータ110(汎用コンピューティングデバイス)を用いる。コンピュータ110の構成要素は、これらに限定しないが、プロセッサ120、システムメモリ130、システムメモリ130を含む各種のシステム構成要素をプロセッサ120に結合するシステムバス121、が含まれる。システムバス121は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数タイプのバス構造のいずれでもよい。
【0020】
コンピュータ110は通例、各種のコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスすることができる任意の利用可能媒体でよく、揮発性および不揮発性の媒体、リムーバブルおよびノンリムーバブル媒体が含まれる。これに限定しないが、例としてコンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術として実装された揮発性および不揮発性の媒体、リムーバブルおよびノンリムーバブル媒体を含む。
【0021】
システムメモリ130は、読み取り専用メモリ(ROM)131、ランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の要素間の情報転送を助ける基本ルーチンを含むBIOS(BasicInput/Output System)133は、通例ROM131に記憶される。RAM132は通例、プロセッサ120から即座にアクセス可能な、かつ/または現在プロセッサ120によって操作中のデータおよび/またはプログラムモジュールを保持する。これらに限定しないが、例として、図1にはオペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、プログラムデータ137を示している。
【0022】
コンピュータ110は、この他のリムーバブル/ノンリムーバブル、揮発性/不揮発性のコンピュータ記憶媒体も含むことができる。単なる例として、図1には、ノンリムーバブル、不揮発性の磁気媒体に対する読み書きを行うハードディスクドライブ141、リムーバブル、不揮発性の磁気ディスク152に対する読み書きを行う磁気ディスクドライブ151を示している。更には、CD−ROMや他の光学媒体などのリムーバブル、不揮発性の光ディスク156に対する読み書きを行う光ディスクドライブ155を示す。
【0023】
この例示的動作環境で使用できる他のリムーバブル/ノンリムーバブル、揮発性/不揮発性のコンピュータ記憶媒体は、これらに限定しない。ハードディスクドライブ141は通例、インタフェース140などのノンリムーバブルメモリインタフェースを通じてシステムバス121に接続されている。また、磁気ディスクドライブ151および光ディスクドライブ155は通例、インタフェース150などのリムーバブルメモリインタフェースによってシステムバス121に接続される。
【0024】
上記で説明し、図1に示すドライブとそれに関連付けられたコンピュータ記憶媒体は、コンピュータ110のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供する。例えば図1では、ハードディスクドライブ141にオペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、プログラムデータ147を記憶している。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、プログラムデータ137と同じものであっても、異なるものであってもよいことに留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、プログラムデータ147には、それらが少なくとも異なるコピーであることを表すために異なる参照符号を付している。
【0025】
ユーザは、キーボード162、および通例はマウス、トラックボール、タッチパッドと称されるポインティングデバイス161などの入力装置を通じてコンピュータ110にコマンドと情報を入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力装置は、システムバス121に結合されたユーザ入力インタフェース160を通じてプロセッサ120に接続することが多い。しかし、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(USB)など他のインタフェースおよびバス構造で接続することも可能である。
【0026】
モニタ191または他のタイプの表示装置も、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。コンピュータ110は、モニタ191に加えて、スピーカ197やプリンタ196など他の周辺出力装置も含むことができ、それらは出力周辺機器インタフェース195を介してシステムバス121に接続することができる。
【0027】
以降の説明に特に重要なものとして、一連の画像193を撮像可能なカメラ192(デジタル/電子静止カメラまたはビデオカメラ、またはフィルム/写真スキャナ)も、コンピュータ110の入力装置として含めることができる。さらに、図1には1つのみのカメラを示しているが、複数のカメラをコンピュータ110の入力装置として含めることもできる。1つまたは複数のカメラからの画像193は、適切なカメラインタフェース194を介してコンピュータ110に入力される。このカメラインタフェース194は、システムバス121に接続され、撮像された一連の画像193は、RAM132またはコンピュータ110に関連付けられた他のデータ記憶装置の1つに転送され、データとして記憶することができる。ただし、画像のデータは、カメラ192の使用を必要とせずに、前述のコンピュータ可読媒体からコンピュータ110に入力することができることに留意されたい。
【0028】
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、あるいはその他の一般的なネットワークノードでよい。図1にはリモートコンピュータ180に接続されているものとしてメモリ記憶装置181のみを示すが、通例はコンピュータ110との関連で上記で挙げた要素の多くまたはすべてを含む。
【0029】
図1に示す論理接続には、ローカルエリアネットワーク(LAN)171とワイドエリアネットワーク(WAN)173が含まれるが、他のネットワークを含むことも可能である。LANネットワーキング環境で使用する場合、コンピュータ110はネットワークインタフェース170(またはアダプタ)を通じてLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は通例、インターネットなどのWAN173を通じて通信を確立するためのモデム172またはその他の手段を含む。モデム172は内蔵型でも外付け型でもよく、ユーザ入力インタフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110との関連で図示したプログラムモジュール、またはその一部はリモートのメモリ記憶装置181に格納することができる。これに限定しないが、例として図1ではリモートアプリケーションプログラム185がメモリ記憶装置181内に保存されている。図1のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用できることは理解されよう。
【0030】
<HDR画像の生成方法>
以下では、図1に示したコンピューティングシステム環境100を用いて、露光時間が異なる複数の画像を合成して、これらの画像よりもダイナミックレンジが広い画像である1枚のHDR画像を生成するための処理について説明する。なお、特に説明がない限りは、以下に説明する各処理の主体はプロセッサ120である。概略的に述べると、本実施形態は、一続きの段階露出画像がシーンおよびカメラの動きを捕捉する場合でも、そのような画像を使用してHDR画像を生成するものである。
【0031】
本実施形態では、HDR画像を生成するためには先ず、露光時間が異なる複数の画像を取得するのであるが、これは、段階露出を使用して撮像することで得られる。ここで、段階露出(bracketing)とは、本来は写真技術で用いられる用語であり、最適な露出レベルの写真を1枚得ることを期待して複数の露出設定で同じシーンの写真を複数枚取ることを意味する。
【0032】
以下の説明では、露出レベルを変化させながらカメラ192によって撮像された画像の集合を、「段階露出画像」と呼称する場合がある。即ち、一連の画像193とは換言すれば、段階露出画像のことである。
【0033】
段階露出を実現する方式の1つは、現在の多くの静止写真カメラに備わる自動段階露出機能を使用すれば良い。あるシーンを自動的に段階露出する際、カメラ192は、現在の測光モードを使用して適正露出を決定し、そのレベルで画像を撮像する。次いで、元の露出を固定された倍数で変倍したさらに多くの露出でもって追加的に撮像する。例えば、そうしたカメラ192の多くは、「適正露出」の画像と比較してより短い露光時間(例えば+1〜2の絞り値)で1つの画像を撮像し、より長い露光時間(例えば−1〜2の絞り値)で1つの画像を撮像する。段階露出したシーケンス中の画像の数と画像間の露光時間の変化は、それらの画像が、画像中に描写されるシーンの実質的にすべての輝度の変化をまとめて捕捉するようなものであることが理想的であることに留意されたい。このようにすると、結果得られるHDR画像は、そのシーンのダイナミックレンジ全体を表す。
【0034】
図2は、露光時間が異なる複数の画像を合成して1枚のHDR画像を生成するための処理のフローチャートである。なお、図2に示したフローチャートに従った処理をプロセッサ120に実行させるためのプログラムやデータ(以降の説明で既知のデータとして説明するものも含む)は、RAM132に格納されており、プロセッサ120による処理対象となる。
【0035】
先ず、カメラ192等から、互いに異なる露光時間で撮像された複数の画像(段階露出画像)が、カメラインタフェース194を介してコンピュータ110に入力される。従って、ステップS201ではプロセッサ120は、これらの画像のデータをRAM132に一時的に格納(取得)する。なお、プロセッサ120は、段階露出した画像を得る方式に関係なく、互いに異なる露光時間で撮像された複数の画像をRAM132に一時的に格納する場合には、これらの画像を、露光時間順に並べ替える。
【0036】
図3(a)は、本実施形態で撮像対象としている被写体の一例を示す図、図3(b)は、被写体の原輝度分布と露光時間に応じて撮像可能な画素値範囲を示す図である。比較的短い露光時間で撮像した場合には、図3(b)において301で示す画素値範囲内の画素値を撮像することができる。即ち、この場合に得られる撮像画像を構成する各画素の画素値は、画素値範囲301内のものである。また、比較的長い露光時間で撮像した場合には、図3(b)において303で示す画素値範囲内の画素値を撮像することができる。即ち、この場合に得られる撮像画像を構成する各画素の画素値は、画素値範囲303内のものである。また、中間的な長さの露光時間で撮像を行った場合には、図3(b)において302で示す画素値範囲内の画素値を撮像することができる。即ち、この場合に得られる撮像画像を構成する各画素の画素値は、画素値範囲302内のものである。
【0037】
図2に戻って、次に、ステップS202では先ず、RAM132内に並び替えられた複数の画像において、隣接する2つの画像毎のセット(画像セット)を設定する。具体的には、複数の画像を露光時間順に一列に並べた場合に、この一列において隣接する2つの画像毎のセット(画像セット)を設定する。ここで、ステップS201でRAM132に一時的に格納した画像群に対して画像セットを設定するための処理について、図4を用いて説明する。
【0038】
図4(a)は、互いに異なる露光時間で撮像された複数の画像に対して画像セットを設定する処理を説明するための図である。図4(a)には、露光時間の順に一列に並べられたn枚の画像が示されており、紙面右側の画像ほど露光時間が長く、左側の画像ほど露光時間は短い。
【0039】
ステップS202では先ず、ステップS201でRAM132に一時的に格納した画像の枚数を計数する。図4の場合、計数の結果はnである。次に、最も露光時間の短い画像と2番目に露光時間が短い画像とを1つの画像セットとして設定する。この設定した画像セットが、「1番目の組み合わせ(セット)」である。次に、最も露光時間の長い画像と2番目に露光時間が長い画像とを1つの画像セットとして設定する。この設定した画像セットが、「2番目の組み合わせ(セット)」である。次に、2番目に露光時間が短い画像と3番目に露光時間が短い画像とを1つの画像セットとして設定する。この設定した画像セットが、「3番目の組み合わせ(セット)」である。以降、同様にして、露光時間が長い画像、露光時間が短い画像の順に組み合わせを選択する。
【0040】
このようにして画像セットの設定が完了すると、次に、ステップS202では、設定した画像セット群から1つの画像セットを選択画像セット(着目セット)として選択し、この選択画像セット中の2つの画像間の位置ずれ補正量を求める処理を行う。図4(b)は、1つの画像セットを選択するための処理を説明する図である。選択順は、画像セットの設定順と同じである。以下の説明では、選択画像セットに含まれている2つの画像のうち、露光時間が短い方の画像(短画像)をIM0、長い方の画像(長画像)をIM1と表記する。
【0041】
図2に戻って、次に、ステップS203では先ず、IM0に含まれている画素値のヒストグラム、IM1に含まれている画素値のヒストグラムを作成する。IM0が露光時間が最も短い画像である場合には、そのヒストグラムは、一般的には図5(a)に示すような逆シグモイド形の山と、画素値の高い部分に小さな山ができる形となり、低い画素値に多くの画素が集まる傾向にある。図5(a)は、露光時間が最も短い画像の一般的な画素値のヒストグラムを示す図である。図5(a)において横軸は画素値、縦軸は画素値の登場頻度を示している。
【0042】
このとき、IM0において、IM1に対する位置ずれ補正量を求める処理で有用な画素の多くは、高い画素値を有する画素の部分にあつまる。そのため、図5(b)に示すように、逆シグモイド形の下限と山の間に閾値TH0を設けるのがよい。図5(b)は、図5(a)に示したヒストグラムに対する閾値TH0を示す図である。なお、この閾値TH0は、大津の方法等を用いて求めることができる。しかし、閾値TH0を求める方法はこれに限定するものではなく、様々な方法が考え得る。従ってステップS203では次に、閾値TH0を求めると共に、最大の画素値(例えば、IM0の画素値が8ビットで表現されている場合には255)から閾値TH0が示す画素値までの間の各画素値の登場頻度の合計値S1を求める。
【0043】
ステップS203では次に、IM1についても同様の閾値TH1を求める。IM1は、中間的な露光時間の画像に相当するため、一般的には、そのヒストグラムは白とび、黒潰れが少ない図5(c)に示すようなものとなる。図5(c)は、中間的な露光時間の画像の一般的な画素値のヒストグラムを示す図である。図5(c)において横軸は画素値、縦軸は画素値の登場頻度を示している。
【0044】
次に、ステップS203では、図8(a)に示す如く、最大の画素値(例えば、IM1の画素値が8ビットで表現されている場合には255)から画素値の低い方向に向かって閾値αを移動させる。そして、閾値αを1移動させる毎に、最大の画素値から閾値αまでの間の各画素値の登場頻度の合計値S2を求める。そして合計値S2が最も上記合計値S1に近くなった時点での閾値αを、最終的な閾値TH1(=α)として設定する。もちろん、閾値TH1の求め方については、これに限定するものではなく、同様の性質を有するのであれば、他の方法を用いて閾値TH1を求めても良い。ここで、以上のようにして先に閾値TH0を求め、後で閾値TH1を求める方法を「方法1」と呼称する。
【0045】
また、IM1が露光時間が最も長い画像である場合には、そのヒストグラムは図6(b)に示す如く、シグモイド形の山と、画素値の低い部分に小さな山ができる形となり、高い画素値に多くの画素が集まる傾向にある。従って、IM1が露光時間が最も長い画像であり、IM0が2番目に露光時間が長い画像である場合、上記のように閾値TH0を先に求め、次に閾値TH1を求めるのではなく、先に閾値TH1を求め、次に閾値TH0を求める方がよい。
【0046】
このとき、閾値TH1は、シグモイド形の下限と山の間になるよう、大津の方法等を用いて求め、更に、最小の画素値(=0)から閾値TH1が示す画素値までの間の各画素値の登場頻度の合計値S3を求める。そして、閾値TH0については、図6(c)に示すように、最小の画素値(=0)から画素値の高い方向に向かって閾値αを移動させる。そして、閾値αを1移動させる毎に、最小の画素値から閾値αまでの間の各画素値の登場頻度の合計値S4を求める。そして合計値S4が最も上記合計値S3に近くなった時点での閾値αを、最終的な閾値TH0(=α)として設定する。もちろん、閾値TH0の求め方については、これに限定するものではなく、同様の性質を有するのであれば、他の方法を用いて閾値TH0を求めても良い。ここで、以上のようにして先に閾値TH1を求め、後で閾値TH0を求める方法を「方法2」と呼称する。
【0047】
なお、最長の露光時間の画像を含む画像セット、最短の露光時間の画像を含む画像セット以外の画像セットについての閾値設定方法については以下の通りである。即ち、「最長の露光時間と最短の露光時間との中間露光時間(若しくはその近傍時間)の画像」から最長の露光時間の画像までのそれぞれを含む画像セットについては方法2を用いる。一方、中間露光時間(若しくはその近傍時間)の画像から最短の露光時間の画像までのそれぞれを含む画像セットについては方法1を用いる。
【0048】
次に、IM0、IM1のそれぞれから、位置ずれ補正量を求めるための基準として用いる領域(共通領域)を、上記閾値TH0,TH1を用いて特定するのであるが、そのためにステップS204では、この領域を特定する為の画素値範囲を設定する処理を行う。
【0049】
ステップS204における処理は、ステップS201でRAM132に一時的に格納した画像の枚数(ステップS202において計数済み)が偶数であるか奇数であるのかに応じて異なる。図7は、共通領域を特定する為の画素値範囲を設定する処理を説明する図である。図7(a)には、画像の枚数が偶数である場合における、共通領域を特定する為の画素値範囲を設定する処理を示している。図7(b)には、画像の枚数が奇数である場合における、共通領域を特定する為の画素値範囲を設定する処理を示している。また、図7(a)、(b)には、図4に示したように、露光時間の順に一列に並べられたn枚の画像が示されている。図7では紙面右側の画像ほど露光時間が長く、左側の画像ほど露光時間は短い。ここで、本説明では、露光時間が最も短い画像から露光時間が最も長い画像に向けて順に画像1、画像2…と呼称する。
【0050】
画像の枚数が偶数である場合には、IM0、IM1のそれぞれに対しては、図7(a)に示す如く、画素値範囲を設定する。即ち、画像1〜画像(n/2−1)を含む各画像セットについて、IM0に対応する画像には閾値TH0から最大の画素値までを画素値範囲として設定し、IM1に対応する画像には閾値TH1から最大の画素値までを画素値範囲として設定する。例えば、画像1(IM0)に対しては、閾値TH0が示す画素値から最大の画素値までを画素値範囲として設定し、画像2(IM1)に対しては、閾値TH1が示す画素値から最大の画素値までを画素値範囲として設定する。
【0051】
一方、画像(n/2+2)〜画像nを含む各画像セットについて、IM0に対応する画像には最小の画素値から閾値TH0までを画素値範囲として設定し、IM1に対応する画像には最小の画素値から閾値TH1までを画素値範囲として設定する。例えば、画像(n−1)(IM0)に対しては、最小の画素値から閾値TH0が示す画素値までを画素値範囲として設定し、画像n(IM1)に対しては、最小の画素値から閾値TH1が示す画素値までを画素値範囲として設定する。
【0052】
また、画像(n/2)と画像(n/2+1)のそれぞれに対して設定する画素値範囲については、上記で説明した画素値範囲のうち、画素値範囲に属する画素の数が多い方を選択する。
【0053】
一方、画像の枚数が奇数である場合には、IM0、IM1のそれぞれに対しては、図7(b)に示す如く、画素値範囲を設定する。即ち、画像1〜画像(n+1)/2を含む各画像セットについて、IM0に対応する画像には閾値TH0から最大の画素値までを画素値範囲として設定し、IM1に対応する画像には閾値TH1から最大の画素値までを画素値範囲として設定する。また、画像(n+1)/2〜画像nを含む各画像セットについて、IM0に対応する画像には最小の画素値から閾値TH0までを画素値範囲として設定し、IM1に対応する画像には最小の画素値から閾値TH1までを画素値範囲として設定する。
【0054】
このような処理を行うことで、IM0、IM1のそれぞれについて画素値範囲が設定される。従って、ステップS204では次に、IM0に対して設定された画素値範囲内の領域(共通領域0)をIM0において特定し(第1の特定)、IM0においてこの特定した領域内の画素値を1、それ以外の領域内の画素値を0とした2値画像IM_B0を生成する。同様に、IM1に対して設定された画素値範囲内の領域(共通領域1)をIM1において特定し(第2の特定)、IM1においてこの特定した領域内の画素値を1、それ以外の領域内の画素値を0とした2値画像IM_B1を生成する。図8(a)は、IM_B0、IM_B1を生成するための処理を説明する為の図である。
【0055】
図8(a)において1201は、IM0に対して設定された画素値範囲内の画素値を有する画素群で構成されている領域(共通領域0)、1202は、IM1に対して設定された画素値範囲内の画素値を有する画素群で構成されている領域(共通領域1)である。そして、IM0において領域1201内の画素値を1、それ以外の領域内の画素値を0としたものが、2値画像IM_B0である。1203は、画素値1で構成されている領域であり、領域1201と位置的に対応する領域である。また同様に、IM1において領域1202内の画素値を1、それ以外の領域内の画素値を0としたものが、2値画像IM_B1である。1204は、画素値1で構成されている領域であり、領域1202と位置的に対応する領域である。
【0056】
図2に戻って、次に、ステップS1205では、IM_B0とIM_B1とを重ね合わせた2値合成画像、即ち、IM_B0とIM_B1とで画素毎にAND演算を行うことで得られる画像を生成する。ここで、この生成した2値合成画像において画素値が1の画素で構成されている領域とは、共通領域0と共通領域1との共通部分(重複部分)である。従ってステップS205では次に、この共通部分のサイズ(共通部分を構成する画素の数)が規定値以上であるか否かを判断する。そして規定値以上であれば、共通領域0と共通領域1とをそれぞれ、位置ずれ補正量を求める処理で用いる領域IM_O0、IM_O1に設定する。
【0057】
図8(b)は、ステップS1205における処理を説明するための図である。図8(b)において1300はIM_B0とIM_B1との2値合成画像で、1301はIM_B0における共通領域、1302はIM_B1における共通領域である。IM_C0は、2値合成画像1300における、共通領域1301と共通領域1302との共通部分で、IM_C0のサイズ(画素数)が規定値以上であれば、共通領域1301をIM_O0、共通領域1302をIM_O1に設定する。
【0058】
次に、ステップS206では、IM0とIM1との位置ずれ補正量を求める。これは、IM1について、IM0に対してどの程度の位置ずれ補正を行えば、IM0とIM1とが一致し、画像合成が精密に行えるのか、の補正量を求める処理に等価である。以下に、この位置ずれ補正量を求める方法について説明する。
【0059】
先ず、IM0と、位置ずれ補正後のIM1と、を重ねた場合にIM_O1とIM_O0とが略一致するように、IM1全体に対して並進、回転、拡大縮小に伴う位置ずれ補正を行う。係る補正には、並進や回転、スケール変換を扱うAffine変換を用いるの容易である。Affine変換による変換方法は次式のように定義される。
【0060】
|x’| |a b||x| |e|
| | = | || |+| |
|y’| |c d||y| |f|
IM0を基準としたときに、IM0に対してのIM1の位置ずれを補正する場合、即ち、IM1に対して上記のAffine変換を施す場合には、(x’,y’)はIM0内のIM_O0の座標位置、(x,y)はIM1内のIM_O1の座標位置となる。(a,b,c,d,e,f)は並進、回転、スケール変換等を表すAffine変換のパラメータである。係る式が成り立つように、このパラメータを求める。
【0061】
しかし、IM0、IM1内で画素位置によって並進量が異なる場合には、以上のAffine変換のみでは位置補正が不十分となる場合がある。例えば、画像中において数画素単位のずれで現れる、被写体の微妙な姿勢の違いは、全体位置補正では十分に補正することはできない。そこで次に、画素単位で微小な位置ずれを補正する、精細位置補正を行う。この精細位置補正は、各画素間での並進量のみを補正することを対象とする。ここでは、ブロックマッチング法を用いた、精細位置補正について説明する。
【0062】
まず、IM1に対して上記処理で求めたパラメータ用いた上記式に基づくAffine変換を行うことで、IM1’を生成する。次に、IM0とIM1’のそれぞれを図9(a)に示す如く、ブロック毎に分割する。図9(a)は、IM0、IM1’のそれぞれのブロックについて示す図である。そしてIM0とIM1’とで位置的に対応するブロック同士で相関度を求め、ブロック中心のずれ量を求める。係る処理を全てのブロック組について行った後、次に、各画素についてのずれ量を算出する。画素単位でのずれ量の見積もりは、ブロック中心に該当する画素が保持するずれ量から線形補間等の補間によって求めればよい。ブロックマッチング法の計算式については周知であり、例えば以下の文献に開示されている。
【0063】
・ 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
このように、各画素についてのずれ量を求めることで、上記Affine変換を行った後のIM1を更に画素毎に補正することができる。従ってステップS206では、Affine変換の上記パラメータと、画素毎のずれ量のセットを、位置ずれ補正量として求める。
【0064】
次に、ステップS207では、位置ずれ補正量の計算を行っていない画像セットが未だあるのか否かを判断する。係る判断の結果、未だある場合には処理をステップS202に戻し、位置ずれ補正量の計算を行っていない画像セットについて以降の処理を行う。一方、全ての画像セットについて位置ずれ補正量の計算を行った場合には処理をステップS208に進める。
【0065】
ステップS208に進んだ時点では、全ての画像セットについて位置ずれ補正量を求めたことになっているので、ステップS208では、それぞれの画像セット内で、IM1に対して、ステップS206で求めた位置ずれ補正量を用いた処理(画像処理)を行う。即ち、Affine変換のパラメータを用いてIM1に対するAffine変換(回転・並進処理)を行った後、画素毎のずれ量を用いて画素毎のずれを補正する。回転の結果、重ね合わせ処理には必要の無い部分、すなわち、画像の端部は、画像の合成には用いない。これにより、IM0とIM1とを重ね合わせた場合に、IM_O0とIM_O1とが略一致することになる。
【0066】
最後に、ステップS209では、ステップS208において位置ずれ補正が成されたそれぞれの画像を合成することで、HDR画像を生成する。なお、本実施形態では、画像の合成を行う際、露出の少ない画像に合成ゲインを乗じ、露出の多い画像に順次合成していくものとする。HDR画像の生成方法については様々なものがあり、特に限定するものではない。例えば、特開2002-290829号公報に開示されている技術を用いても良い。
【0067】
そして生成されたHDR画像は、RAM132やハードディスクドライブ141等の記録装置に出力しても良いし、モニタ191に表示しても良いし、外部にネットワークを介して出力しても良い。
【0068】
以上の説明により、本実施形態によれば、露光時間が異なる複数の画像のそれぞれについて、位置合わせの基準となる共通領域を抽出することができるので、この共通領域を用いて複数の画像のそれぞれの位置合わせ処理を精度良く行うことができる。そしてこれにより、より好適なHDR画像を生成することができる。
【0069】
[第2の実施形態]
以下の説明では、第1の実施形態と異なる点のみについて説明する。本実施形態では、共通領域を特定するための処理が第1の実施形態とは異なる。本実施形態では、例えばIM0における共通領域0を特定する場合、IM0に対してγ変換を行うことでIM0の輝度変換を行い、γ変換後のIM0から共通領域0を第1の実施形態と同様にして求める。 図9(b)は、IM0についての2値画像IM_B2を説明する図である。IM0に対してγ変換を施した結果から共通領域0を特定し、γ変換後のIM0において特定した共通領域0を構成する画素の画素値を1,それ以外の領域を0とした2値画像IM_B2を生成する。1501は、2値画像IM_B2における共通領域0を示す。
【0070】
なお、第1,2の実施形態では、上記各処理はコンピュータにおいて実行するものとして説明したが、カメラが充分な処理能力(処理速度、データ容量)を有するのであれば、このカメラが第1,2の実施形態で説明した各処理を実行するようにしても良い。
【0071】
また、第1,2の実施形態では説明上、画像中に1つの共通領域しか存在しない場合について説明したが、設定された画素値範囲内の画素値を有する画素群で構成される領域は複数存在し得る。
【0072】
[その他の実施形態]
本発明は、前述した実施形態の機能を実現するソフトウェアのコンピュータプログラム、このコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体によっても実現可能である。これは、システムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することで、コンピュータプログラム自体が前述した実施形態の機能を実現することになるからである。然るに、このコンピュータプログラム、及びこのコンピュータプログラムを記録した記憶媒体は本発明を構成することになる。本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。

【特許請求の範囲】
【請求項1】
互いに異なる露光時間で撮像された複数の画像を取得する手段と、
前記複数の画像を露光時間順に一列に並べた場合に、当該一列において隣接する2つの画像毎のセットを設定する設定手段と、
着目セットに含まれる2つの画像のうち露光時間が長い方の画像を長画像、露光時間が短い方の画像を短画像とした場合に、前記長画像と前記短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する特定手段と、
前記長画像と前記短画像とを重ね合わせた場合に、前記長画像における前記共通の領域と前記短画像における前記共通の領域とが一致するように、前記長画像に対する位置ずれ補正量を求める計算手段と、
前記位置ずれ補正量に基づいて前記長画像に対して画像処理を行う処理手段と、
前記処理手段がそれぞれのセットについて処理を行うことで得られる前記複数の画像のそれぞれを合成することで合成画像を生成し、生成した合成画像を出力する手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記特定手段は、
前記長画像の画素値の分布に基づいて設定された閾値に応じて決まる画素値範囲内の画素値を有する領域を前記長画像から特定する第1の特定手段と、
前記短画像の画素値の分布に基づいて設定された閾値に応じて決まる画素値範囲内の画素値を有する領域を前記短画像から特定する第2の特定手段とを備え、
前記長画像と前記短画像とを重ね合わせた場合に、前記第1の特定手段が特定した領域と、前記第2の特定手段が特定した領域とが、規定値以上の重複部分を有する場合には、前記第1の特定手段、前記第2の特定手段が特定したそれぞれの領域を前記共通の領域とすることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記計算手段は、
前記長画像に対してAffine変換を行うことで得られる画像における前記共通の領域が、前記短画像における前記共通の領域と一致するように、Affine変換のパラメータを求める手段と、
前記長画像に対してAffine変換を行うことで得られる画像が、前記短画像と一致するように、画素毎の位置ずれ量を求める手段とを備え、
前記Affine変換のパラメータと前記画素毎の位置ずれ量とを、前記位置ずれ補正量として得ることを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記合成画像は、前記画像に比べて、ダイナミックレンジが広い画像であることを特徴とする請求項1乃至3の何れか1項に記載の画像処理装置。
【請求項5】
互いに異なる露光時間で撮像された複数の画像を取得する工程と、
前記複数の画像を露光時間順に一列に並べた場合に、当該一列において隣接する2つの画像毎のセットを設定する設定工程と、
着目セットに含まれる2つの画像のうち露光時間が長い方の画像を長画像、露光時間が短い方の画像を短画像とした場合に、前記長画像と前記短画像とで共通の領域を、それぞれの画像の画素値の分布に基づいて特定する特定工程と、
前記長画像と前記短画像とを重ね合わせた場合に、前記長画像における前記共通の領域と前記短画像における前記共通の領域とが一致するように、前記長画像と前記短画像との位置ずれ補正量を求める計算工程と、
前記位置ずれ補正量に基づいて前記長画像、前記短画像の何れかに対して画像処理を行う処理工程と、
前記処理工程でそれぞれのセットについて処理を行うことで得られる前記複数の画像のそれぞれを合成することで合成画像を生成し、生成した合成画像を出力する工程と
を備えることを特徴とする画像処理方法。
【請求項6】
コンピュータを、請求項1乃至4の何れか1項に記載の画像処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項7】
請求項6に記載のコンピュータプログラムを格納した、コンピュータ読み取り可能な記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−4353(P2011−4353A)
【公開日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2009−147950(P2009−147950)
【出願日】平成21年6月22日(2009.6.22)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】