画像処理装置および画像処理方法、プログラム
【課題】多眼方式の撮像装置で取得された画像群から、主被写体と背景を含む距離画像を提供する。
【解決手段】本発明に係る画像処理装置は、合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部(401)と、撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部(404)と、合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部(405)と、を備えたことを特徴とする。
【解決手段】本発明に係る画像処理装置は、合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部(401)と、撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部(404)と、合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部(405)と、を備えたことを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多眼方式の撮像装置で取得された画像群から、距離画像を提供するための画像処理装置および画像処理方法、プログラムに関するものである。
【背景技術】
【0002】
従来から、複数の光学系を用いて撮像された視点の異なる複数の画像に基づき、被写体とカメラ間の距離を計測する距離計測装置がある。被写体とカメラ間の距離を計測する方法として、ステレオカメラによって撮像された視差のある複数の画像を用いて、画像間の相関に基づくステレオマッチング処理が知られている。さらに、距離の計測精度を向上させるために、視点の異なる3枚以上の画像を使用して、距離計測する多眼方式のステレオマッチング処理が知られている(例えば、特許文献1参照。)。
【0003】
また、異なる距離計測方式として、フォーカス位置をずらして撮像された複数の被写体画像に基づき、いわゆるコントラスト方式で主被写体とカメラの間の距離を測定する手法が知られている。これを複数の光学系を具備する多眼方式へ拡張して、主被写体とカメラ間の距離を求める手法も提案されている(例えば、特許文献2参照。)。この手法では、フォーカス位置が異なる複数の光学系を具備する撮像装置によって撮像された複数の被写体画像に基づき、コントラスト方式により主被写体までの距離計測がなされる。単眼方式の撮像装置でフォーカス位置を変更しながら複数の被写体画像を取得する方法に比べ、多眼方式による特許文献2の手法では、一回の撮影でフォーカス位置を変化させた複数枚の被写体画像を取得できる利点を有する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−196891号公報
【特許文献2】特開2009−216600号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1で提案される手法では、1)フォーカス位置と異なる画像領域では距離マップの解像度が低下、2)被写界深度を拡大すると距離推定の精度が悪化、という問題がある。前者の問題について、被写体が遠方にある場合など、レンズを駆動してフォーカス位置を調節してほぼピントがあった像を得るが、被写体が近くにある場合、ピントがぼけしまい解像力が低下した画像が撮像されてしまう。このようなピントがぼけた画像に基づいて距離測定を行うと、得られる距離画像の解像度が低下してしまう。後者の問題について、撮影系の被写界深度を拡大するために、レンズ径を小さくし、パンフォーカスの撮影を行うことが考えられるが、レンズ径を小さくすると、レンズへの入射光量が低下し、撮像された画像に含まれるノイズが多くなる。ノイズが多い撮像画像に基づいて距離計測を行うと距離の推定精度が悪化する問題点を有する。
【0006】
また、特許文献2で提案される距離計測手法では、主被写体までの距離計測に限定されており、主被写体とは異なる位置にある背景がある場合、主被写体と背景を含む画像全体について距離計測を実現できない問題点がある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明は、合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部と、撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部と、合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部と、を備えたことを特徴とする。
【発明の効果】
【0008】
本発明は、多眼方式の撮像装置で取得された画像群から、主被写体と背景を含む距離画像を提供する効果を奏する。
【図面の簡単な説明】
【0009】
【図1】複数の撮像部を備えた多眼方式の撮像装置の一例を示した図である。
【図2】多眼方式の撮像装置の内部構成を示すブロック図である。
【図3】撮像部の内部構成を示す図である。
【図4】実施形態1に係る画像処理部の内部構成を示すブロック図である。
【図5】実施形態1に係る画像処理部における処理の流れを示すフローチャートである。
【図6】実施形態1に係る合焦画像選択部の内部構成を示すブロック図である。
【図7】合焦画像選択処理の流れを示すフローチャートである。
【図8】領域分割の一例を示す図である。
【図9】重複領域算出処理の流れを示すフローチャートである。
【図10】重複領域を漏れなく算出するまでのmとnの変遷過程の一例を示す図である。
【図11】重複領域を説明する図である。
【図12】全重複領域を説明する図である。
【図13】実施形態1における重複領域(全重複領域)の一例を示す図である。
【図14】コントラスト算出処理の流れを示すフローチャートである。
【図15】画像選択処理の流れを示すフローチャートである。
【図16】撮像画像と画像領域におけるコントラスト値の一例を示す図である。
【図17】実施形態1に係る距離算出部の内部構成を示すブロック図である。
【図18】距離算出部における処理の流れを示すフローチャートである。
【図19】実施形態1に係る対応点探索処理の流れを示すフローチャートである。
【図20】特徴点の探索処理の流れを示すフローチャートである。
【図21】特徴点の探索処理を説明する図である。
【図22】距離算出処理の流れを示すフローチャートである。
【図23】撮像部の被写界深度の範囲の一例を示す図である。
【図24】実施形態2に係る対応点探索処理の流れを示すフローチャートである。
【図25】ブロックマッチング処理の流れを示すフローチャートである。
【図26】ブロックマッチング処理を説明する図である。
【図27】実施形態3に係る撮像部制御部の内部構成を示すブロック図である。
【図28】実施形態3に係る撮像部制御部における処理の流れを示すフローチャートである。
【図29】撮像のフォーカス位置と前方と後方の被写界深度の一例を示す図であう。
【図30】実施形態3に係る撮像部の被写界深度の範囲の一例を示す図である。
【図31】実施形態4に係る撮像部の内部構成を示す図である。
【発明を実施するための形態】
【0010】
(実施形態1)
図1は、複数の撮像部を備えた多眼方式による撮像装置の一例を示した図である。100は撮像装置の筐体を示す。筐体100は、カラー画像を取得する9個の撮像部101〜109及び撮影ボタン110を備える。9個の撮像部は、正方格子状に均等に配置されている。ユーザが撮影ボタン110を押下すると、撮像部101〜109が備えるセンサ(撮像素子)によって、受光した被写体の光情報をA/D変換して、複数のカラー画像(デジタルデータ)を同時に取得することができる。このような多眼方式の撮像装置により、同一の被写体を複数の視点位置から撮像したカラー画像群を得ることができる。
【0011】
なお、ここでは撮像部の数を9個としたが撮像部の数は9個に限定されない。撮像装置が複数の撮像部を有する限りにおいて本発明は適用可能である。
【0012】
また、ここでは9個の撮像部が正方格子状に均等に配置される例について説明したが、撮像部の配置は任意である。例えば、放射状や直線状に配置してもよいし、まったくランダムに配置してもよい。
【0013】
図2は、撮像装置100の内部構成を示すブロック図である。201は中央処理装置(CPU)であり、以下に述べる各部を統括的に制御する。
【0014】
202はRAMであり、CPU201の主メモリ、ワークエリア等として機能する。
【0015】
203はROMであり、CPU201で実行される制御プラグラム等を格納している。
【0016】
204は各種データの転送経路となるバスである。例えば、撮像部101〜109によって取得されたデジタルデータはこのバス204を介して所定の処理部に送られる。
【0017】
205はユーザの指示を受け取る操作部であり、ボタンやモードダイヤルなどが含まれる。
【0018】
206は撮影画像や文字の表示を行う表示部であり、例えば、液晶ディスプレイが用いられる。表示部206はタッチスクリーン機能を有していても良く、その場合はタッチスクリーンを用いたユーザ指示を操作部205の入力として扱うことも可能である。
【0019】
207は表示制御部207であり、撮影画像や文字を表示部206に表示させるように表示制御を行う。
【0020】
208は撮像部制御部であり、被写体にフォーカスを合わせる、撮像のためにシャッターを開く又は閉じる、絞りを調節するなどの、CPU201からの指示に基づいた撮像系の制御を行う。
【0021】
209はデジタル信号処理部であり、バス204を介して受け取ったデジタルデータに対し、ホワイトバランス処理、ガンマ処理、ノイズ低減処理などの各種処理を行う。
【0022】
210はエンコーダ部であり、デジタルデータをJPEGやMPEGなどのファイルフォーマットに変換する処理を行う。
【0023】
211は外部メモリ制御部であり、PCやその他のメディア(例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリ)に繋ぐためのインターフェースである。
【0024】
212は画像処理部であり、撮像部101〜109で取得されたカラー画像群或いは、デジタル信号処理部208から出力されるカラー画像群から、距離を算出する処理を行う。画像処理部212の詳細については後述する。
【0025】
なお、撮像装置の構成要素は上記以外にも存在するが、本件発明の主眼ではないので、説明を省略する。
【0026】
図3(a)は、撮像部101〜109の内部構成を示す図である。撮像部101〜109はそれぞれ、レンズ301〜303、絞り304、シャッター305、光学ローパスフィルタ306、iRカットフィルタ307、カラーフィルタ308、センサ309及びA/D変換部310を備える。なおレンズ301〜303は、より詳細には、ズームレンズ301、フォーカスレンズ302、ぶれ補正レンズ303から構成される。なお、撮像部101〜109における各フォーカスレンズは、光学系において撮像部ごとに異なる位置に設置されており、従って各撮像部のフォーカス位置が異なる距離になるように設定される。センサ309は、例えばCMOSやCCDなどのセンサである。センサ309で被写体の光量を検知すると、検知された光量がA/D変換部310によってデジタル値に変換され、デジタルデータとなってバス204に出力される。
【0027】
図3(b)は、撮像部101〜103におけるフォーカスレンズ302が配置される位置の一例を示している。撮像部101におけるフォーカスレンズはよりセンサに遠い位置に配置されている。一方、撮像部103におけるフォーカスレンズはよりセンサに近い位置に配置されている。図示しない撮像部104から109のフォーカスレンズの位置も異なる位置に配置させている。
【0028】
図23は、フォーカス位置がそれぞれ異なる撮像部101〜109の被写界深度の範囲(ピントが合っていると判断できる範囲)の一例を示している。
【0029】
図23の左側には、撮像装置100と被写体の位置関係を示す。図23は、三種類の被写体(被写体1、被写体2、被写体3)が撮像装置から異なる位置に存在する場合につて説明するものである。図23に示すように、被写体1が最も撮像部から近い位置にあり、被写体3が最も撮像部から遠い位置にある。
【0030】
図23の右側には、各撮像部の被写界深度の範囲と、各距離において被写界深度の範囲に入っている撮像部の台数とを示している。例えば、被写体1が存在する範囲Aが、撮像部101と105の被写界深度に含まれるように、該撮像部のフォーカス位置が設定されている。また、被写体2が含まれる範囲Bが、撮像部102と106の被写界深度に含まれるように、該撮像部のフォーカス位置が設定されている。また、被写体3が存在する範囲Cが、撮像部103、108、109の被写界深度に含まれるように、該撮像部のフォーカス位置が設定されている。
【0031】
本実施形態では、撮像部から被写体までの任意の距離において、少なくとも2台以上の撮像部の被写界深度が重複するように、各撮像部のフォーカス位置が設定されている。なお、図23に示すように、全ての撮像部のフォーカス位置を完全に不一致にする必要はない。すなわち、複数の撮像部のフォーカス位置が一致する態様であっても構わない。
【0032】
<画像処理部の構成図>
図4は、画像処理部212の内部構成を示したブロック図である。
【0033】
401は画像取得部であり、撮像部101〜109からバス204を経由して供給されるカラー画像群を取得する。402はモノクロ変換部であり、画像取得部401から供給されるカラー画像群をモノクロ画像群に変換する。407はメモリ部であり、モノクロ画像変換部402から供給されるモノクロ画像群を一時的に格納する。403はパラメータ取得部であり、撮影時における撮像部101〜109の各種パラメータを取得する。なお、パラメータには、例えば、撮像部の焦点距離、絞り値(Fナンバー)、センササイズ、センサの画素数、ピント距離(主レンズとセンサの距離)、撮像部間の相対位置などが含まれる。404は合焦画像選択部であり、パラメータ取得部403から供給されるパラメータを用いて、メモリ部407に格納されるモノクロ画像からピントが合っている(以下、「合焦」と呼ぶ)画像を選択する。合焦画像選択部404の詳細については後述する。405は距離算出部であり、パラメータ取得部403から供給されるパラメータ、合焦画像選択部404で合焦と判断された画像、メモリ部407に格納されるモノクロ画像を用いて被写体までの距離を算出し出力する。距離算出部405の詳細については後述する。
【0034】
次に、画像処理部212を構成する各部401−407による画像処理の詳細を説明する。
【0035】
図5は、画像処理部212における画像処理の流れを示すフローチャートである。
【0036】
ステップ501において、画像取得部401は、撮像部101〜109からカラー画像を受け取る。本実施形態では、撮像部は9個であるので、デジタルデータである9枚のカラー画像が入力される。
【0037】
ステップ502において、モノクロ画像変換部402は、入力されたカラー画像をモノクロ画像に変換する。ステップ502では、カラー画像の各画素におけるRGB値を、RGB値に応じた輝度値に変換する。
【0038】
ステップ503において、メモリ部407は、モノクロ画像変換部402で変換されたモノクロ画像を格納し、一時的に保持する。
【0039】
ステップ504において、パラメータ取得部403は、撮像部101〜109に関するパラメータを取得する。
【0040】
ステップ505において、合焦画像選択部404は、取得したパラメータを使用して、モノクロ画像変換部402から供給されるモノクロ画像のうち、合焦している画像を選択する。
【0041】
ステップ506において、距離算出部405は、取得したパラメータと合焦であると判断されたモノクロ画像を用いて被写体までの距離を算出する。
【0042】
最後に、ステップ507において、距離算出部405で生成された距離データが出力されると、本処理は終了する。
【0043】
このように、画像処理部212において画像処理を行うことで、精度の良い距離画像の提供が可能となる。
【0044】
続いて、合焦画像の選択処理(S505)と距離算出処理(S506)の詳細について、順次説明する。
【0045】
<合焦画像選択部404の構成図>
図6は、合焦画像選択部404の内部構成を示したブロック図である。
【0046】
601は画像入力端子であり、メモリ部407に格納されているモノクロ画像のデジタルデータを入力する。602はパラメータ入力端子であり、パラメータ取得部403が取得したパラメータを入力する。603は重複領域算出部であり、パラメータ入力端子602から供給されるパラメータを使用して、各撮像部の画角が重複する領域(以下、「重複領域」と呼ぶ。)を算出する。604は領域分割部であり、重複領域算出部603で算出された画像内を複数のサブ領域に分割する。605はコントラスト算出部であり、領域分割部604で分割された各サブ領域画像内におけるコントラストを算出する。606は画像選択部であり、コントラスト算出部605で算出されたコントラスト値を使用して、分割されたサブ領域毎に合焦している画像を選択する。607は画像出力端子であり、分割された各サブ領域における合焦画像を出力する。
【0047】
次に、合焦画像選択部404を構成する各部601−607によって行なわれる合焦画像を選択する選択処理の詳細を説明する。
【0048】
図7は、合焦画像選択部404における処理の流れを示すフローチャートである。
【0049】
ステップ701において、画像入力端子601は、メモリ部407に格納されているモノクロ画像を入力する。
【0050】
ステップ702において、パラメータ入力端子602は、パラメータ取得部403が取得したパラメータを入力する。
【0051】
ステップ703において、重複領域算出部603は、取得したパラメータを使用して、重複領域を算出する。なお、重複領域の算出方法の詳細については後述する。
【0052】
ステップ704において、領域分割部604は、重複領域算出部603で算出された画像領域をNi×Njのサブ領域に分割する。ここで、Niは縦方向の分割数を示す。また、Njは横方向の分割数を示す。
【0053】
図8は、領域分割部604によって分割された画像の一例を示している。図8では、縦方向に6分割(Ni=6)、横方向に6分割(Nj=6)したときに、画像が分割数に応じて分割されている様子を示している。なお、分割する領域の個数(Ni,Nj)は縦横6分割(Ni=Nj=6)に限定する必要はない。6分割よりも分割数を多くしても良いし、少なくしても構わない。例えば、分割数を16分割に増加させることや4分割に減少させることも構わない。更には、縦横方向の分割数を一致させる必要もない。例えば、縦方向は6分割のままで、横方向を10分割にするなどしても構わない。
【0054】
図7のフローチャートの説明に戻る。ステップ704で画像領域の分割処理が完了すると、ステップ705において、コントラスト算出部605は、各分割領域におけるコントラスト値を算出する。コントラスト値の算出方法の処理については後述する。
【0055】
ステップ706において、画像選択部606は、コントラスト算出部605で算出されたコントラスト値を使用して、分割された領域毎に合焦している画像を選択する。合焦している画像の選択方法の処理については後述する。
【0056】
最後に、ステップ707において、画像出力端子607が、分割された各領域において選択された合焦している画像を組み合わせた合焦画像を出力すると、本処理は終了する。
【0057】
<重複領域の算出処理>
図7のフローチャートのステップ703で行われる重複領域の算出処理の詳細について説明する。図9は、重複領域算出処理の流れを示すフローチャートである。
【0058】
まず、ステップ901において、重複領域算出部603は、パラメータ取得部403から、撮像部101〜109に関する前述のパラメータを受け取る。
【0059】
ステップ902において、重複領域算出部603は、メモリ部407に格納された複数のモノクロ画像群から、重複領域を算出したい基準画像I(i,j,m)を1つ選択する。ここで、(i,j)は画像上の座標位置を表す変数であり、mは初期値0から始まる基準画像の番号を示す変数である。ステップ902で選択される基準画像は最初に選択される基準画像あり、ここでは、I(i,j,0)の画像が選択される。
【0060】
ステップ903において、重複領域算出部603は、基準画像と比較する参照画像I(i,j,n)を1つ選択する。ここで、nは参照画像の番号を示す変数である。ステップ903で選択される参照画像は最初に選択される参照画像であり、nの初期値はn=m+1に設定されているので、ここでは、mの初期値が0のため、I(i,j,1)の画像が選択される。
【0061】
以下に述べるステップ907及びステップ911において、参照画像及び基準画像はそれぞれ更新されることになるが、N個の撮像部を有する多眼方式の撮像装置では、mの最大値はN−2、nの最大値はN−1となる。
【0062】
図10は、図1に示した9個の撮像部を有する撮像装置の場合に重複領域を漏れなく算出するまでのmとnの変遷過程を示したものである。例えば、mが初期値である0のとき、nは1〜8までの値をとり、実線a〜hで示される8つの組み合わせについて重複領域が算出される。そして、mが(9−2=)7になるまでこの処理が繰り返される。既に取得した組み合わせについては重ねて重複領域を算出する必要がないため、mの値が大きくなるにつれて重複領域の算出対象となる組み合わせの数は1ずつ減っていき、mが7のときは破線iで示される1の組み合わせについてのみ重複領域が算出される。
【0063】
図9のフローチャートの説明に戻る。ステップ904において、重複領域算出部603は、選択された基準画像I(i,j,m)と参照画像I(i,j,n)との重複領域を、入力されたパラメータに基づいて算出する。なお、処理開始直後の最初のステップ904では、基準画像(i,j,0)、参照画像(i,j,1)についての重複領域が算出される。
【0064】
図11の(a)〜(c)は、ステップ904で算出される重複領域を説明する図である。説明を簡潔にするため、二次元平面に展開した模式図としている。同図の(a)及び(b)において、基準画像は撮像部101で取得された画像(i,j,0)であり、参照画像は撮像部102で取得された画像(i,j,1)である。
【0065】
図11の(a)は、それぞれ同じスペックであるが合焦位置が異なるように設定されている撮像部101と撮像部102とが、x方向に間隔lxの幅で併置される様子を示している。(Sx,Sy)は、センサの(x,y)方向におけるサイズを示す。dsは、撮像部のピント距離(主レンズとセンサとの間の距離)である。dobjは、仮想ピント位置(カメラとある仮想平面までの距離)である。点線で囲まれる領域はカメラの撮像範囲、すなわち画角であり、センササイズ(Sx,Sy)と焦点距離dsによって決定される。[P10,P21]の線分が重複領域のx(横)方向の辺に当たる部分であり、その距離wxは、式(1)によって求めることができる。
【0066】
【数1】
【0067】
図11の(b)は、撮像部101で撮像された画像(撮像範囲)、撮像部102で撮像された画像(撮像範囲)、及び両画像の重複領域の一例を示している。[P10,P11,P12,P13]の四点で囲まれる領域が撮像部101の撮像範囲である。また、[P20,P21,P22,P23]の4点で囲まれる領域が撮像部102の撮像範囲である。そして、[P10,P21,P22,P13]の4点で囲まれる斜線領域が重複領域である。[P10,P21]の線分がセンサ面上における重複領域のx(横)方向の辺に相当し、その画素数nwは、式2によって求めることができる。
【0068】
【数2】
【0069】
ここで、nxはセンサの横画素数である。
【0070】
前述の通り、撮像部101と撮像部102はx方向に併置されているため、縦方向の重複範囲には、センサの縦画素数nyと同じ画素数分だけ含まれることになる。
【0071】
図11の(c)は、二台のカメラがy方向に併置される場合における重複領域の一例を示している。ここでは、撮像部101で撮像された画像(撮像範囲)、撮像部104で撮像された画像(撮像範囲)、及び両画像の重複領域を示している。[P10,P11,P12,P13]の四点で囲まれる領域が撮像部101の撮像範囲であり、[P30,P31,P32,P33]の4点で囲まれる領域が撮像部104の撮像範囲である。そして、[P30,P31,P12,P13]の4点で囲まれる斜線領域が重複領域である。[P30,P13]の線分がセンサ面上における重複領域のy(縦)方向の辺に相当し、その画素数nhは、式3によって求めることができる。
【0072】
【数3】
【0073】
ここで、nyはセンサの縦画素数である。
【0074】
以上のようにして、ステップ904で基準画像と参照画像との重複領域が算出される。
【0075】
ステップ905において、重複領域算出部603は、算出された重複領域のデータをメモリに格納する。
【0076】
ステップ906において、重複領域算出部603は、全ての参照画像について重複領域の算出が完了したか否か、すなわち、n=N−1に到達したか否かを判定する。すべての参照画像について重複領域の算出が完了していれば、ステップ908に進む。一方、未処理の参照画像がある場合(n<N−1の場合)には、ステップ907に進む。ステップ907において、重複領域算出部603は、nの値をインクリメント(n=n+1)して、参照画像を更新し、ステップ904に戻る。
【0077】
このようにして、n=N−1に到達するまで、ステップ904〜ステップ906の処理が繰り返される。ステップ908において、重複領域算出部603は、1の基準画像I(i,j,m)について得られた重複領域のすべてが重なる共通の領域(以下、「全重複領域」と呼ぶ)を算出する。
【0078】
図12は、全重複領域を説明する図である。ここでは、説明の便宜上、3台の撮像部101、102、104の撮像領域についてしか示していないが、撮像部が9個あればその全ての撮像部における撮像領域に対応する全重複領域が求められることになる。
【0079】
3台の撮像部101、102、104における重複領域は、図11の(b)及び(c)で示したとおりであるので、この2つの重複領域が重なる領域、つまり[Pa,P31,P22,P13]の4点で囲まれる斜線領域がこの場合の全重複領域となる。
【0080】
ステップ909において、重複領域算出部603は、上記のようにして得られた1の基準画像I(i,j,m)に対する全重複領域のデータをメモリに格納する。
【0081】
ステップ910において、重複領域算出部603は、全ての基準画像について全重複領域の算出が完了したか否か、すなわち、m=N−2に到達したか否かを判定する。すべての基準画像について全重複領域の算出が完了していれば、ステップ912に進む。一方、未処理の基準画像がある場合(m<N−2の場合)には、ステップ911に進む。ステップ911において、重複領域算出部603は、mの値をインクリメント(m=m+1)して、基準画像を更新し、ステップ903に戻る。このようにして、m=N−2に到達するまで、ステップ903〜ステップ910の処理が繰り返される。
【0082】
ステップ912において、重複領域算出部603は、各基準画像に対する全重複領域を出力する。このようにして、図7のフローチャートのステップ703における重複領域算出処理が行われる。
【0083】
なお、説明の都合上、図11と図12では、基準画像と参照画像の撮像範囲を図示したが、これは重複領域算出部603における重複領域の算出処理が、基準画像・参照画像となる撮像画像を実際に受け取った上でなされることを必ずしも意味しない。重複領域算出部603は、基準画像・参照画像となる撮像画像を実際に受け取った上で重複領域の算出処理を行ってもよいし、式1〜式3に示される重複領域算出に必要なパラメータのみを受け取って重複領域を算出する構成でも構わない。
【0084】
図13は、撮像部が9個ある場合に得られる重複領域(全重複領域)の一例を示している。図13の(a)は、撮像部と被写体の関係を示しており、三種類の被写体(被写体1、被写体2、被写体3)が撮像部101〜103から異なる距離に離れた位置に存在している。被写体1が最も撮像部から近い位置にあり、被写体3が最も撮像部から遠い位置にある。図13(b)は、9個の撮像部101〜109で撮像された画像内における全重複領域をそれぞれ示している。点線で囲まれる領域が各撮像部における全重複領域であり、このように全重複領域を規定することにより、視点位置の異なる各撮影画像から同一の撮像領域が特定される。
【0085】
<コントラストの算出処理>
図14は、図7のステップ705におけるコントラスト算出処理の流れを示すフローチャートである。
【0086】
まず、ステップ1401において、コントラスト算出部605は、重複領域算出部603で算出された、撮像部101〜109で撮像された各画像における重複領域に係る画像を入力する。
【0087】
ステップ1402において、コントラスト算出部605は、領域分割部604で分割された画像領域に則り、コントラストを算出したい画像領域(ii,jj)を1つ選択する。ここで、(ii,jj)は分割領域の座標位置を表す変数である。図8で説明したように、領域分割部604は、画像を縦方向にNi分割、横方向にNj分割することから、変数iiとjjは、ii=[0,1,・・・,Ni−1],jj=[0,1,・・・,Nj−1]と変化する値である。ここでは、まず始めに(ii,jj)=(0,0)の画像領域が選択される。
【0088】
ステップ1403において、コントラスト算出部605は、コントラストを算出したい基準画像I(i,j,m)を1つ選択する。ここで、(i,j)は画像上の座標位置を表す変数であり、mは初期値0から始まる基準画像の番号を示す変数である。また、コントラスト算出部605が使用する基準画像I(i,j,m)は、画像入力端子601から供給されるモノクロ画像のうち、基準画像の番号mに対応するモノクロ画像のデジタルデータである。テップ1403で選択される基準画像は最初に選択される基準画像あり、ここでは、I(i,j,0)の画像が選択される。
【0089】
ステップ1404において、コントラスト算出部605は、基準画像I(i,j,m)における画像領域(ii,jj)内の各画素の値に基づいてヒストグラムを算出する。
【0090】
ステップ1405において、コントラスト算出部605は、ステップ1404で算出されたヒストグラムに基づいて、画像領域(ii,jj)内におけるモノクロ画素値の最大値Imax(ii,jj,m)を取得する。ステップ1406において、コントラスト算出部605は、ステップ1404で算出されたヒストグラムに基づいて、画像領域(ii,jj)内におけるモノクロ画素値の最小値Imin(ii,jj,m)を取得する。ステップ1407において、コントラスト算出部605は、最大値Imax(ii,jj,m)と最小値Imin(ii,jj,m)を使用して、画像領域(ii,jj)における基準画像mのコントラスト値C(ii,jj,m)を算出する。コントラスト値は式4によって求めることができる。
【0091】
【数4】
【0092】
ステップ1408において、コントラスト算出部605は、全ての基準画像についてコントラスト値の算出が完了したか否か、すなわち、m=N−1に到達したか否かを判定する。すべての基準画像についてコントラスト値の算出が完了していれば、ステップ1410に進む。一方、未処理の基準画像がある場合(m<N−1の場合)には、ステップ1409に進む。
【0093】
ステップ1409において、コントラスト算出部605は、mの値をインクリメント(m=m+1)して、基準画像を更新し、ステップ1404に戻る。このようにして、m=N−1に到達するまで、ステップ1404〜ステップ1408の処理が繰り返される。
【0094】
ステップ1410において、コントラスト算出部605は、図8の画像領域のうち、縦方向iiの画像領域で横方向の分割数Njに到達したか否かを、すなわちjj=Njに到達したか否かを判定する。横方向の分割数に到達していれば、ステップS1412に進む。一方、横方向の分割数Njに到達していない場合(jj<Nj−1)には、ステップ1411に進む。
【0095】
ステップ1411において、コントラスト算出部605は、横方向の画像領域の番号を示すjjの値をインクリメント(jj=jj+1)して、コントラスト値を算出する画像領域(ii,jj)を更新し、ステップ1403に戻る。このようにして、jj=Nj−1に到達するまで、ステップ1404〜ステップ1410の処理が繰り返される。
【0096】
ステップ1412において、コントラスト算出部605は、図8の画像領域のうち、横方向jjの画像領域で縦方向の分割数Niに到達したか否かを、すなわちii=Niに到達したか否かを判定する。縦方向の分割数に到達していれば、ステップS1414に進む。一方、縦方向の分割数Niに到達していない場合(ii<Ni−1)には、ステップ1413に進む。ステップ1413において、コントラスト算出部605は、縦方向の画像領域の番号を示すiiの値をインクリメント(ii=ii+1)して、コントラスト値を算出する画像領域(ii,jj)を更新し、ステップ1403に戻る。このようにして、ii=Ni−1に到達するまで、ステップ1404〜ステップ1412の処理が繰り返される。ステップ1414において、コントラスト算出部605は、コントラスト値C(ii,jj,m)を出力する。このようにして、このようにして、図7のフローチャートのステップ705におけるコントラストの算出処理が行われる。
【0097】
なお、本実施形態におけるコントラスト値の算出方法では式4を使用したが、その他のコントラスト算出方法でも構わない。例えば、コントラスト値を算出したい画像領域内のエッジをフィルタ処理などによって抽出し、そのエッジ成分の強度や総量などの評価値をコントラスト値として扱っても良い。画像のコンロラストや鮮鋭度を定量的に評価できる評価値であれば、その他の算出方法を使用しても構わない。
【0098】
<合焦画像選択処理>
図15は、図7のステップ706における合焦画像選択処理の流れを示すフローチャートである。
【0099】
まず、ステップ1501において、画像選択部606は、コントラスト算出部605で算出されたコントラスト値C(ii,jj,m)を入力する。
【0100】
ステップ1502において、画像選択部606は、領域分割部603で分割された画像領域に則り、合焦画像を選択したい画像領域(ii,jj)を1つ選択する。ステップ1503において、画像選択部606は、合焦画像の枚数を示す値Ncをゼロに設定する(Nc=0)。
【0101】
ステップ1504において、画像選択部606は、選択された画像が合焦しているか否かを判定するための閾値Thに対して初期値を設定する。閾値Thは予めユーザーが設定しても構わない。本実施形態では、閾値の初期値をTh=0.6に設定する。
【0102】
ステップ1505において、画像選択部606は、画像が合焦しているか否かを判定する対象となる基準画像mを1つ選択する。
【0103】
ステップ1506において、画像選択部606は、基準画像mの画像領域(ii,jj)におけるコントラスト値C(ii,jj,m)が閾値Thよりも大きいか否かを判定する。コントラスト値が閾値よりも大きい場合(C(ii,jj,m)>Th)、つまり、画像領域(ii,jj)において基準画像mが合焦となっていると判断されると、ステップ1507に進む。一方、コントラスト値が閾値以下の場合には、ステップ1509に進む。
【0104】
ステップ1507において、画像選択部606は、合焦画像の枚数を示す値Ncをインクリメント(Nc=Nc+1)する。
【0105】
ステップ1508において、画像選択部606は、ステップ1506で合焦していると判断された基準画像mの番号を保持する。
【0106】
ステップ1509において、画像選択部606は、全ての基準画像についてコントラスト値と閾値との比較が完了したか否か、すなわち、m=N−1に到達したか否かを判定する。すべての基準画像についてコントラスト値と閾値との比較が完了していれば、ステップ1505に進む。一方、未処理の基準画像がある場合(m<N−1の場合)には、ステップS1510に進む。ステップ1510において、画像選択部606は、mの値をインクリメント(m=m+1)して、基準画像を更新し、ステップ1506に戻る。
【0107】
このように処理することにより、m=N−1に到達するまで、ステップ1506〜ステップ1509の処理が繰り返される。
【0108】
ステップ1511において、画像選択部606は、合焦と判断された画像枚数Ncが複数あるか否かを判定する。合焦画像が複数枚ある場合(Nc>1)には、ステップ1513に進む。一方、合焦画像が複数枚ないと判定された場合には、ステップ1512に進む。
【0109】
ステップ1512において、画像選択部606は、閾値Thの値を変更する。ステップ1512での閾値Thの変更では、閾値Thを小さくする方向に値を変更する。ここで、閾値Thを小さくするように変更した後、ステップ1505〜ステップ1511の処理が繰り返される。このようにして、画像選択部606は、画像領域(ii,jj)においてコントラスト値が高い画像から、複数枚の合焦画像を得ることが可能となる。
【0110】
ステップ1513からステップ1516は、図14で説明した、コントラスト算出部605における処理の流れを示すフローチャートのステップ1410からステップ1413と同様であるため説明を省略する。
【0111】
最後に、ステップ1517において、画像選択部606は、各画像領域において合焦していると判断された画像の番号、すなわち合焦画像が撮影された撮像部との対応を出力する。このようにして、図7のフローチャートのステップ706における合焦画像の選択処理が行われる。
【0112】
図16は、被写体1〜3を含むシーンの撮影画像と、画像領域A、B、Cの三箇所におけるコントラスト値を示している。図16(a)には、9台の撮像部のうち撮像部101〜103で撮像した撮像画像の一例を示している。
【0113】
撮影画像のうち点線で囲まれた領域が画像領域A、B、Cに該当している。また、図16(b)には、撮像部101〜109で撮像した撮像画像について、画像領域A、B、Cおけるコントラスト値を示している。
【0114】
例えば、画像領域Aについて、撮像部101の撮像画像におけるコントラスト値は、図16(b)に示すように0.783である。同様に、撮像部102と撮像部103の撮像画像について、画像領域Aのコントラスト値は0.333と0.552である。
【0115】
図16(a)に記載されていない、撮像部104から撮像部109のコントラスト値は、図16(b)に示す通りとなっている。先にも述べたとおり、撮影画像のうち分割された画像領域において合焦しているか否かの判断は、このコントラスト値と閾値Thとの大小関係の比較に基づいている。なお、閾値Thは合焦画像の選択を左右するパラメータである。この閾値Thを比較的小さな値に設定すれば、合焦画像として選択される画像枚数は増加する。しかし、画像間の相関による距離推定を用いる本発明の場合には、フォーカスが不十分な画像が含まれることもあり、距離推定の精度が悪化する傾向が強くなる。一方、閾値Thを比較的大きな値に設定すると、合焦画像の選択において、十分なフォーカスを確保できる画像を選ぶことができるが選択される画像枚数が減少し、距離算出時におけるオクルージョン問題が発生する(オクルージョンについては後述する)。本実施形態では、これらのトレードオフを鑑みて、その閾値をTh=0.6と設定している。
【0116】
合焦画像選択部404は、閾値Thの値を超える撮像部101と撮像部105の撮影画像とが画像領域Aにおける合焦画像であると判断される。その他の撮像部による撮影画像の画像領域Aにおけるコントラスト値は閾値(Th=0.6)を下回るため、合焦画像選択部404は、撮像部102〜104、106〜109による撮像画像は画像領域Aにおいて合焦していないと判断する。
【0117】
合焦画像選択部404は画像領域Bと画像領域Cについても同様の処理を行い、各画像領域において合焦画像を提供する撮像部で撮像された画像を選択する。画像領域Bにおいて、合焦画像選択部404は、撮像部102と106の2台の撮像部で撮像された画像を合焦画像として選択する。
【0118】
更に、画像領域Cにおいて、画像選択部404は、撮像部103、108、109の3台の撮像部で撮像された画像を合焦画像として選択する。この結果は、図23で示した、被写体1〜3を被写界深度の範囲に含む撮像部と、合焦画像選択部404が合焦画像であると判断した撮像部とが一致していることが分かる。つまり、コントラスト値を使用することにより、距離算出に対して好適な合焦画像を選択することが可能となる。
【0119】
なお、説明を簡略化するため図16では、三箇所の画像領域について説明したが、図16で説明しなかった分割領域A、B、C以外の分割領域についても、合焦画像選択部404は合焦画像の選択を実施する。
【0120】
<距離算出部の構成図>
図17は、距離算出部405の内部構成を示したブロック図である。
【0121】
1701は合焦画像番号入力端子であり、合焦画像選択部404で選択された各分割領域における合焦画像の番号が入力されることになる。1702は画像領域選択部であり、後述する距離演算を実施したい画像領域を設定する。1703は画像入力端子であり、メモリ部407に格納されるモノクロ画像のデジタルデータが入力されることになる。1704は対応点探索部であり、画像入力端子1703から供給される複数のモノクロ画像における画像間の対応点を探索する。より具体的には、画像領域選択部1702で選択された画像領域において合焦画像選択部404が合焦していると判断した複数の合焦画像について、対応点探索部1704は、画像間における対応点を探索する。1705はパラメータ入力端子であり、パラメータ取得部403が取得したパラメータが入力されることになる。1706は距離演算部であり、対応点探索部1704の結果を使用して、被写体までの距離を演算する。1707は距離合成部であり、距離演算部1706で演算された各画像領域における距離データを合成し、空間的に広がりを持つ距離データ(以下、「距離画像」と呼ぶ)を生成する。1708は距離データの出力端子であり、距離合成部1707で合成された距離画像を出力する。
【0122】
次に、距離算出部405の上記各部によって行なわれる距離算出処理の詳細を説明する。
【0123】
図18は距離算出部405における処理の流れを示すフローチャートである。
【0124】
まず、ステップ1801において、合焦画像番号入力端子1701は、合焦画像選択部404で選択された各分割領域における合焦画像の番号を入力する。
【0125】
ステップ1802において、画像領域選択部1702は、領域分割部603で分割された画像領域に則り、画像領域(ii,jj)を1つ選択する。ここで、(ii,jj)は分割領域の座標位置を表す変数である。
【0126】
ステップ1803において、画像入力端子1703から供給される複数のモノクロ画像における画像間の対応点を探索する。対応点探索処理の詳細については後述する。
【0127】
ステップ1804において、距離演算部1706は、パラメータ入力端子1705から供給されるパラメータと対応点探索部1704との結果を使用して被写体と背景までの距離を演算する。距離演算処理の詳細については後述する。
【0128】
ステップ1805からステップ1808までの処理は、図14で説明した、コントラスト算出処理の流れを示すフローチャートのステップ1410からステップ1413と同様であるため説明を省略する。
【0129】
ステップ1809において、距離合成部1707は、距離演算部1706で距離算出されたデータを合成する。
【0130】
ステップ1809では、空間的に広がりを持つ距離画像として生成するために、各画像領域で算出された距離データを1つの距離データとして合成する。
【0131】
そして、ステップ1810において、距離データ出力端子1708が、距離合成部1707で合成された距離画像を出力すると、本処理は終了する。
【0132】
<対応点探索処理>
図19は、図18のフローチャートのステップ1803における対応点探索処理の流れを示すフローチャートである。
【0133】
対応点探索処理が開始すると、まず、ステップ1901において、対応点探索部1704は、画像領域(ii,jj)における合焦画像を入力する。
【0134】
ステップ1902において、対応点探索部1704は、メモリ部407に格納された複数のモノクロ画像群から、対応探索処理の際の基準となる基準画像I’(i,j,mm)を1つ選択する。(i,j)は画像上の座標位置を表す変数であり、mmは初期値0から始まる基準画像の番号を示す変数である。ステップ1902で選択される基準画像は最初に選択される基準画像あり、ここでは、I(i,j,0)の画像が選択される。
【0135】
ステップ1903において、対応点探索部1704は、基準画像と比較する参照画像I(i,j,nn)を1つ選択する。ここで、nnは参照画像の番号を示す変数である。ステップ1903で選択される参照画像は最初に選択される参照画像であり、nnの初期値はnn=mm+1に設定されているので、ここでは、I(i,j,1)の画像が選択される。以下に述べるステップ1907及びステップ1909において、参照画像及び基準画像はそれぞれ更新されることになる。合焦画像選択部404で選択されたM(ii,jj)個の合焦画像を有する場合では、mの最大値はM(ii,jj)−2、nの最大値はM(ii,jj)−1となる。
【0136】
ステップ1904において、対応点探索部1704は、画像領域(ii,jj)について、基準画像と参照画像の特徴点の対応探索処理を実施する。特徴点の対応探索処理の詳細については後述する。
【0137】
ステップ1905において、対応点探索部1704は、特徴点の対応探索の結果から得られる基準画像と参照画像との対応点の関係を保持する。
【0138】
ステップ1906において、対応点探索部1704は、全ての参照画像について対応点探索が完了したか否か、すなわち、nn=M(ii,jj)−1に到達したか否かを判定する。すべての参照画像について対応点探索が完了していれば、ステップ1908に進む。一方、未処理の参照画像がある場合(nn<M(ii,jj)−1の場合)には、ステップ1907に進む。
【0139】
ステップ1907において、対応点探索部1704は、nnの値をインクリメント(nn=nn+1)して、参照画像を更新し、ステップ1904に戻る。このようにして、nn=M(ii,jj)−1に到達するまで、ステップ1904からステップ1906の処理が繰り返される。ステップ1908において、対応点探索部1704は、全ての基準画像について対応点探索が完了したか否か、すなわち、mm=M(ii,jj)−2に到達したか否かを判定する。すべての基準画像について対応点探索が完了していれば、ステップ1910に進む。一方、未処理の基準画像がある場合(mm<M(ii,jj)−2の場合)には、ステップ1909に進む。
【0140】
ステップ1909において、対応点探索部1704、mmの値をインクリメント(mm=mm+1)して、基準画像を更新し、ステップ1903に戻る。このようにして、mm=M(ii,jj)−2に到達するまで、ステップ1903〜ステップ1908の処理が繰り返される。ステップ1910において、対応点探索部1704は、ステップ1905において保持された基準画像と参照画像との対応点の関係を出力する。このようにして、図18のフローチャートのステップ1803における対応点探索処理が行われる。
【0141】
<特徴点の対応探索処理>
図20は、図19のフローチャートのステップ1904における特徴点の対応探索処理の流れを示すフローチャートである。
【0142】
まず、ステップ2001において、対応点探索部1704は、基準画像と参照画像を入力する。
【0143】
ステップ2002において、対応点探索部1704は、入力された基準画像に対して特徴点を抽出する。特徴点の抽出方法については、一般的に使用されるエッジ検出フィルタ処理を用いる。本実施形態ではエッジ検出フィルタとしてSobelフィルタを使用する(特徴点の抽出に際しては、その他のエッジ検出フィルタを使用しても構わない。例えば、Robinsonのエッジ検出フィルタを使用しても良い。更には、これらのエッジ検出フィルタを組み合わせた方法により特徴点を抽出しても構わない)。
【0144】
ステップ2003において、対応点探索部1704は、対応点を探索するための注目画素の位置(i,j)を基準画像の中から設定する。
【0145】
ステップ2004において、対応点探索部1704は、設定された注目画素を中心とした所定のブロック(差分値を求めるブロック)および該ブロックの中心位置(ci,cj)を参照画像において設定する。
【0146】
ステップ2005において、対応点探索部1704は、基準画像に設定された中心位置(ci,cj)のブロックが特徴点の対応探索に際して有効なブロックか否かを判断する。有効ブロックの判断方法は、対応点探索部1704がステップ2002で実施される特徴点の数をカウントし、その数が予め規定されている数よりも多い場合には、有効ブロックであると判断される。つまり、ステップ2005では、多くの特徴点をブロック内に有するブロックが、対応点探索部1704により有効ブロックとして判定される。有効ブロックであると判定された場合には、ステップ2006に進む。
【0147】
一方、ステップ2005において、対応点探索部1704が、着目しているブロックが有効ブロックでないと判断した場合には、ステップ2007に進む。
【0148】
ステップ2006において、対応点探索部1704は、特徴点の対応探索を行う範囲を設定する。特徴点の対応探索を行う範囲は演算コストを考慮して任意の大きさに設定すればよいが、注目画素の位置(i,j)をその中に含むことが条件となる。一般的に、視差が大きい場合には特徴点の対応探索を行う範囲を大きく設定することが好ましく、逆に視差が小さい場合には特徴点の対応探索を行う範囲は小さくても足りる。より具体的には、基準画像と参照画像が、図1で示される撮像装置において、隣接する撮像部によって取得された画像である場合には、特徴点の対応探索を行う範囲を小さくすることが好ましい。逆に、基準画像と参照画像が空間的に離れた位置にある撮像部によって取得された画像である場合には、特徴点の対応探索を行う範囲を大きくすることが好ましい。
【0149】
図21は、注目画素の位置(i,j)、参照画像に設定されたブロック、該ブロックの中心位置、および設定された特徴点の対応探索を行う範囲を示す図である。この場合においてブロックは、縦方向に2wi+1画素、横方向に2wj+1画素で確定される大きさであり、wi、wjはそれぞれゼロ以上の整数値である。
【0150】
図20のフローチャートの説明に戻る。ステップ2007において、対応点探索部1704は、基準画像における注目画素の位置(i,j)に対応する点が参照画像には無いと判断する。ここで対応点が無いと判断された画素位置における距離データは、対応点の探索が成功した近傍画素から得られる距離データから補間処理によって求めることになる。距離データの補間処理については後述する。
【0151】
ステップ2008において、対応点探索部1704は、設定されたブロックの範囲の基準画像と参照画像を用いて、差分値の平均値を計算する。式(5)は、ブロックの中心位置(ci,cj)における、差分値の平均値Eave(ci,cj,nn)を求める演算式である。
【0152】
【数5】
【0153】
ここで、I’(i,j,mm)は基準画像における重複領域の画像、I’(i,j,nn)は参照画像における重複領域の画像を表している。mmとnnはそれぞれ、基準画像と参照画像の番号を示す変数ある。
【0154】
ステップ2009において、対応点探索部1704は、設定された特徴点の対応探索の範囲内における全てのブロックについて、差分値の平均値を求める処理が完了したか否かを判定する。すべてのブロックについて差分値の平均値を求める処理が完了していればステップ2011に進む。一方、未処理のブロックがある場合にはステップ2010に進む。
【0155】
ステップ2010において、対応点探索部1704は、ブロックの中心位置(ci,cj)を更新して、まだ差分値の平均値を求めていないブロック位置にブロック位置を変更する。ブロック位置を変更すると、ステップ2008に戻る。
【0156】
ステップ2011において、対応点探索部1704は、差分値の平均値が最小となるブロックの中心位置(ci_min,cj_min)を求め、設定された特徴点の対応探索の範囲内において差分値の平均値が最小となるブロック位置を対応点として選択する。すなわち、基準画像mmの画像位置(i,j)に対応する参照画像nnでの画素位置は(ci_min,cj_min)として選択される。選択たれた対応点の結果は、
Ei(i,j,mm)={nn,ci_min}
Ej(i,j,mm)={nn,cj_min}
で構成される配列に保持する。Ei(i,j,mm)は、基準画像mmの画素位置(i,j)における、参照画像nnの縦方向における対応画素の位置ci_minを表す。同様に、Ej(i,j,mm)は、基準画像mmの画素位置(i,j)における、参照画像nnの横方向における対応画素の位置cj_minを表す。
【0157】
ステップ2012において、対応点探索部1704は、参照画像内の全ての画素について差分値の平均値を求める処理が完了したか否かを判定する。すべての画素について差分値の平均値を求める処理が完了していればステップ2013に進む。一方、未処理の画素がある場合にはステップ2014に進む。
【0158】
ステップ2014において、対応点探索部1704は、注目画素の位置(i,j)を更新して、まだ差分値の平均値を求めていない画素位置に注目画素の位置を変更する。注目画素の位置を変更すると、ステップ2004に戻る。ステップ2013において、対応点探索部1704は、上記のようにして得られた基準画像と参照画像の対応点を出力すると、本処理は終了する。
【0159】
なお、本実施形態における特徴点の対応探索処理では、式5に示されるように、基準画像と参照画像の差分値の平均値に基づいて画像間の対応点を探索したが、その他の値を使用しても構わない。例えば、相関係数など、注目画素近傍における画像間の類似度を知り得る値であれば、対応点の探索時に使用しても構わない。
【0160】
<距離算出部の構成図>
図22は、図18のフローチャートのステップ1804における距離算出処理の流れを示すフローチャートである。
【0161】
まず、ステップ2201において、距離演算部1706は、対応点探索部1704で求められた対応点の結果を入力する。
【0162】
ステップ2202において、距離演算部1706は、パラメータ入力端子1705から供給されるパラメータを取得する。
【0163】
ステップ2203において、距離演算部1706は、距離算出の際の基準となる基準画像mmを1つ選択する。ステップ2203で選択される基準画像は最初に選択される基準画像あり、ここでは、mm=0の画像が選択される。
【0164】
ステップ2204において、距離演算部1706は、基準画像を比較する参照画像nnを1つ選択する。ステップ2204で選択される参照画像は最初に選択される参照画像であり、nnの初期値はnn=mm+1に設定されているので、ここでは、nn=1の画像が選択される。基準画像と参照画像の番号を表す値であるmmとnnの扱い方は、図19で説明した対応点探索処理と同様であるため説明を省略する。
【0165】
ステップ2205において、距離演算部1706は、距離推定を行うための注目画素の位置(i,j)を基準画像の中から設定する。
【0166】
ステップ2206において、距離演算部1706は、注目画素の位置(i,j)において、基準画像と参照画像との間に対応点が有るか否かを判断する。対応画素があると判断された場合にはステップ2207に進む。
【0167】
ステップ2207において、距離演算部1706は、基準画像上での注目画素の位置(i,j)と、対応する参照画像の画素位置の画像上での距離Δx(i,j, mm,nn)を算出する。
【0168】
【数6】
【0169】
ここで、(ci_min,cj_min)は、基準画像mmの画素位置(i,j)に対応する、参照画像nn上での画素位置である。ステップ2208において、距離演算部1706は、画像上での距離Δx(i,j, mm, nn)を使用して、注目位置(i,j)における距離d(i,j,mm, nn)を三角測量法により算出する。距離の算出方法は式(7)に従う。
【0170】
【数7】
【0171】
ここで、ds(mm)は、基準画像mmが取得される撮像部のピント距離である。l(mm,nn)は、基準画像mmが取得される撮像部と参照画像nnが取得される撮像部とのカメラの間隔である。本実施形態では、ピントが異なる位置に設定された複数の撮像部により画像取得を行うため、個眼のピント距離が異なる。したがって、基準画像mmに対応する距離算出の場合には、基準画像が取得された撮像部のピント距離であるds(mm)を使用している。一方、ステップ2206において、距離演算部1706が、基準画像の注目画素について参照画像内に対応画素が無いと判断した場合には、ステップ2009に進む。
【0172】
ステップ2009において、距離演算部1706は、注目画素の近傍にて算出された距離データを使用して、補間処理によって注目画素の位置における距離d(i,j,mm,nn)を算出する。補間処理としては、線形補間やスプライン補間など、一般的に使用される補間処理で対応する。ステップ2210からステップ2213までの処理は、図19の対応点探索処理のフローチャートにおけるステップ1906からステップ1909と同様であるため説明を省略する。ステップ2214において、距離演算部1706は、基準画像上の注目画素(i,j)における距離データの平均値dave(i,j)を求める演算式である。距離データの平均値の算出方法は、式(8)の通りである。
【0173】
【数8】
【0174】
ここで距離データの平均値を求める理由は、距離データの精度を向上させるためである。複数の画像間の視差に基づいて距離算出を行う場合、前方にある被写体の遮蔽によって、ある撮像部で撮像される背景部が、別の撮像部では撮像されないという現象がある。この現象はオクルージョンと呼ばれている。このオクルージョンが発生する画像領域においては、画像間の対応点が得られず、正確な距離算出ができない問題が生じる。この問題を解決するためには、本実施形態で採用するような多眼方式の撮像装置を使用するなどして、撮像部の台数を増やし、オクルージョンが発生する画像領域を減らす必要がある。更には、様々な視点から計測された距離データを加味して、最終的な距離データを生成する手法が効果的である。その効果を得るため、式8に示すように、複数の撮像部から得られる距離データを平均化する。注目画素位置における距離データとしては、平均値以外にも、入力された複数の距離データの中央値などを採用しても構わない。最後に、ステップ2215において、距離演算部1706は、距離データdave(i,j)を出力して、本処理を完了する。
【0175】
本実施形態では、図2に示すように、カラー画像の撮像部を複数有する多眼式の撮像装置によって得られるカラー画像による、距離画像の提供方法について言及した。撮像部101〜109の一部、或いは全部を、モノクロ画像を撮像する多眼式の撮像装置に変更しても差支えない。その場合には、図3のカラーフィルタ308、図4のモノクロ画像変換部402、図5のモノクロ画像への変換処理(ステップ502)を省略した構成となる。
【0176】
以上説明したように、本実施形態によれば、多眼方式の撮像装置で取得された画像群から、精度の高い距離画像を提供することが可能となる。
【0177】
(実施形態2)
実施形態1では、距離算出時に使用される対応点探索の処理は、距離算出に使用される基準画像において特徴点が存在する画素位置に対してのみ参照画像との対応点の探索を行っていた。次に、基準画像から特徴点を得ることなく参照画像との対応点の探索を行う態様について、実施形態2として説明する。なお、実施形態1と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【0178】
図24は、本実施形態に係る対応点処理部1704における処理の流れを示すフローチャートである。ステップ2401から2403までの処理は、実施形態1に係る図19のフローチャートにおけるステップ1901から1903と同様である。ステップ2404において、対応点処理部1704は、画像領域(ii,jj)について、基準画像と参照画像のブロックマッチング処理を実施する。ブロックマッチング処理の詳細については後述する。ステップ2406から2410までの処理は、実施形態1に係る図19のフローチャートにおけるステップ1906から1910と同様である。
【0179】
<ブロックマッチング処理>
図25は、図24のフローチャートのステップ2404におけるブロックマッチング処理の流れを示すフローチャートである。
【0180】
ステップ2501において、対応点探索部1704は、基準画像と参照画像を入力する。ステップ2502において、対応点探索部1704は、入力された基準画像を複数のブロックに領域分割する。ステップ2503において、対応点探索部1704は、分割された複数のブロックの中から注目ブロックを設定する。
【0181】
図26にはブロック分割された基準画像と注目ブロックの位置(bi,bj)を示している。基準画像に対するブロック分割は縦方向にMi分割、横方向にMj分割している。したがって、注目ブロックの位置を示す変数biとbjは、bi=[0,1,・・・,Mi−1]、bj=[0,1,・・・,Mj−1]と変化する変数である。対応点探索部1704は、最初に選択する注目ブロックを、ブロック分割された基準画像のうち左上のブロックを選択するので(bi,bj)=(0,0)となる。
【0182】
図25のフローチャートの説明に戻る。ステップ2504において、対応点探索部1704は、注目ブロックがブロックマッチングを行う範囲を設定する。図21との特徴点の探索範囲を決定する場合と同様に、ブロックマッチングを行う範囲は演算コストを考慮して任意の大きさに設定すればよいが、注目ブロックの位置(bi,bj)をその中に含むことが条件となる。ステップ2505において、対応点探索部1704は、ブロックマッチング処理演算を行う注目画素の位置(ci,cj)を、ブロックマッチングを行う範囲に設定する。ステップ2505において、対応点探索部1704は、設定されたブロックの範囲の基準画像と参照画像を用いて、差分値の平均値を計算する。式(9)は、ブロックの中心位置(bi,bj)における、差分値の平均値Eave(bi,bj,nn)を求める演算式である。
【0183】
【数9】
【0184】
ここで、I’(i,j,mm)は基準画像における重複領域の画像、I’(i,j,nn)は参照画像における重複領域の画像を表している。mmとnnはそれぞれ、基準画像と参照画像の番号を示す変数ある。ステップ2509において、対応点探索部1704は、設定されたマッチング範囲内における全ての画素位置について、差分値の平均値を求める処理が完了したか否かを判定する。すべての画素位置について差分値の平均値を求める処理が完了していればステップ2508に進む。一方、未処理の画素位置がある場合にはステップ2507に進む。
【0185】
ステップ2507において、対応点探索部1704は、参照画像内に設定されたブロックマッチング範囲内において、差分値の平均値の算出が未処理の画素位置に注目画素の位置(a,b)を変更する。注目画素の位置を変更すると、ステップ2505に戻り、ブロックマッチング範囲内における全ての画素について処理が完了するまで、ステップ2505、2506の処理を繰り返し行う。
【0186】
ステップ2508において、対応点探索部1704は、差分値の平均値が最小となる画素位置(ci_min,cj_min)を求め、設定されたブロックマッチングの範囲内において差分値の平均値が最小となるブロック位置を対応点として選択する。つまり、基準画像mmのブロックの位置(bi,bj)に対応する参照画像nnでの画素位置は(ci_min,cj_min)となる。選択たれた対応点の結果は、
Ei(bi,bj,mm)={nn,ci_min}
Ej(bi,bj,mm)={nn,cj_min}
で構成される配列に保持する。Ei(bi,bj,mm)は、基準画像mmのブロック位置(bi,bj)における、参照画像nnにおける縦方向の対応画素の位置ci_minを表す。同様に、Ej(bi,bj,mm)は、基準画像mmの画素位置(i,j)における、参照画像nnにおける横方向の対応画素の位置cj_minを表す。
【0187】
ステップ2509において、対応点探索部1704は、図26で示される全てのブロックについて差分値の平均値を求める処理が完了したか否かを判定する。すべてのブロックについて差分値の平均値を求める処理が完了していればステップ2511に進む。一方、未処理のブロックがある場合にはステップ2510に進む。
【0188】
ステップ2510において、対応点探索部1704は、注目画素の位置(bi,bj)を更新して、まだ差分値の平均値を求めていないブロックに注目ブロックの位置を変更する。注目ブロックの位置を変更すると、ステップ2504に戻り、全てのブロックに対してブロックマッチング処理が完了するまでステップ2504〜2509までの処理を繰り返し行う。ステップ2511において、対応点探索部1704は、上記のようにして得られた基準画像と参照画像の対応点を出力すると、本処理は終了する。本実施形態のブロックマッチング処理では、ブロックマッチングで選択されたブロックの中心座標位置に対応する、参照画像上での探索点の探索は完了した。ブロックの中心座標以外の画素に対する対応点は、対応点がない画素として出力する。対応点がない画素については、実施形態1と同様に、距離演算部1706が、対応点の探索が完了している近傍画素の結果を用いて対応画素を求める。
【0189】
以上説明したように、本実施形態によれば、特徴点を得ることなく対応点の探索処理を行うので、画像処理部212で行う処理を簡略化できる。
【0190】
(実施形態3)
実施形態1乃2では、予めフォーカス位置が規定された複数の撮像部によって取得された撮影画像に基づき、距離画像を生成していた。次に、撮影対象の被写体の距離に応じて各撮像部のフォーカス位置を制御して距離画像を生成する態様について、実施形態3として説明する。なお、実施形態1或いは実施形態2と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【0191】
<撮像部制御部の構成図>
図27は、撮影対象の被写体の距離に応じて各撮像部のフォーカス位置を制御するための撮像部制御部208に関する内部構成を示したブロック図である。
【0192】
2701は距離算出範囲取得部であり、バス204を経由して供給される距離算出範囲を取得する。距離算出範囲は、ユーザの指示によって操作部205から与えられる。2702はパラメータ取得部であり、撮影時における撮像部101〜109の各種パラメータを取得する。2703はフォーカス位置設定部であり、距離算出取得部で得られた距離算出範囲に基づき、各撮像部のフォーカス位置を設定する。2704は被写界深度演算部であり、パラメータ取得部2702から供給される撮像部の各種パラメータとフォーカス位置設定部2703で設定されたフォーカス位置とを使用して、各撮像部の被写界深度を演算する。2705はフォーカス位置制御部であり、フォーカス位置設定部2703で決定された結果に基づいて、各撮像部のフォーカス位置を制御する。
【0193】
本実施形態における画像処理部212の内部構成及び処理の流れは、実施形態1乃至実施形態2と同様であるため説明を省略する。
【0194】
図28は撮像部制御部208における処理の流れを示すフローチャートである。ステップ2801において、パラメータ取得部2702は、撮像部101〜109に関する前述のパラメータを受け取る。
【0195】
ステップ2802において、距離算出範囲取得部2701は、距離算出を実施する距離算出範囲を取得する。本実施形態では、ユーザ指示に基づき1m〜3mの被写体距離を距離算出する範囲として設定する。
【0196】
ステップ2803において、フォーカス位置設定部2703は、フォーカス位置を設定する撮像部を選択する。最初にフォーカス位置を設定する撮像部として撮像部101を選択する。
【0197】
ステップ2804において、フォーカス位置設定部2703は、ステップ2803で選択された撮像部に対して最初の被写体距離を設定する。ここでは、ステップ2802で取得された距離算出範囲において、最も前方の距離、つまり1mを最初の被写体距離として設定する。
【0198】
ステップ2805において、被写界深度演算部2804は、設定された被写体距離における前方の被写界深度と後方の被写界深度を計算する。式10は、前方の被写界深度dfの算出式、式11は、後方の被写界深度dbの算出式を示す。
【0199】
【数10】
【0200】
【数11】
【0201】
ここで、fは撮像部の焦点距離、Fは撮像部のFナンバーである。εは許容錯乱円の直径である。dobjは撮像部から被写体までの距離である。焦点距離とFナンバーは撮像部のパラメータであり、パラメータ取得部2702から供給される値である。説明の都合上、本実施形態では全ての撮像部の焦点距離とFナンバーは一致させる設定とし、f=35mm、F=5.6に設定している。
【0202】
焦点距離とFナンバーは、各撮像部によって異なるパラメータ設定でも構わない。全て異なるパラメータとして設定しても構わないし、一部の撮像部のパラメータは一致するように設定し、その他の撮像部のパラメータは一致させないような設定でも良い。
【0203】
許容錯乱円の直径εは被写界深度の範囲を左右するパラメータのひとつである。比較的大きい値にて許容錯乱円の直径εを設定すると、被写界深度の範囲は拡大するが、画像間の相関による距離推定を用いる本発明の場合には、被写界深度の端部において距離推定の精度が悪化する傾向が強くなる。
【0204】
一方、比較的小さい値にて許容錯乱円の直径εを設定すると、被写界深度の端部における距離推定の精度が悪化は抑制できるが、被写界深度の範囲が狭くなるため、広い範囲での距離算出が難しくなる。本実施形態では、これらのトレードオフを鑑みて、許容錯乱円の直径をε=40umに設定した。許容錯乱円の直径の大きさは固定値でも良いし、外部入力によりユーザが設定できる構成でも構わない。
【0205】
ステップ2804で定めた被写体距離dobj=1mを代入する。これらのパラメータを式(10)、(11)に代入すると、前方の被写界深度dfと後方の被写界深度dbは、df=0.85m、db=1.21mとなる。
【0206】
ステップ2806において、フォーカス位置設定部2703は、次に被写界深度を算出する被写体距離を設定する。ここでは、ステップ2805で算出された後方の被写界深度dbを次の被写体距離に設定する。この場合、1.21mが次の被写体距離dobjに設定される。ステップ2807において、フォーカス位置設定部2703は、設定された被写体距離dobjがステップ2802に定められた距離算出範囲の外側に位置するか否かを判定する。被写体距離dobjが距離算出範囲(1m〜3m)の外側にあると判定された場合には、ステップ2809に進む。
【0207】
ステップ2807で、被写体距離dobjが距離算出範囲の内側にあると判定された場合には、ステップ2808に進む。
【0208】
ステップ2808において、フォーカス位置設定部2703は、次にフォーカス位置を設定する撮像部を選択するため、対象とする撮像部を変更し、ステップ2805に戻る。
【0209】
ステップ2809において、フォーカス位置設定部2703は、全ての撮像部についてフォーカス位置の設定が完了したか否かを判定する。全ての撮像部に対して処理が完了した場合にはステップ2811に進む。未処理の撮像部がある場合にはステップ2810に進む。
【0210】
ステップ2810において、フォーカス位置設定部2703は、撮像部を更新しステップ2804に戻る。全ての撮像部に対してフォーカス位置の設定が完了するまで、ステップ2804から2809までの処理を繰り返し行う。ステップ2811において、フォーカス位置制御部2705が、各撮像部について設定されたフォーカス位置に基づき、各撮像部に対してフォーカス位置を制御すると、本処理は終了する。
【0211】
なお、ステップ2803において、フォーカス位置設定部は、最初にフォーカス位置を設定する撮像部として撮像部101を選択したが、その他の撮像部を選択しても構わない。撮像部109を選択しも良い。また、ステップ2808における撮像部の変更処理においても、撮像部の番号順に従わない変更順序でも構わない。撮像部109を最初にフォーカス位置を設定する撮像部として定めた場合には、撮像部の番号の降順としても良いし、ランダムに変更しても構わない。
【0212】
更に、ステップ2804において、フォーカス位置設定部2703は、最初の被写体距離を、離計測範囲における最も前方の距離として設定したが、最初の被写体距離はこれに限定されない。離計測範囲における最も後方の距離を最初の被写体距離として設定しても良い。その場合、ステップ2806において、前方の被写界深度を次の被写体距離として設定とするように処理を変更する。
【0213】
図29には、図28の処理フローに従って導出された撮像部101〜109のフォーカス位置と前方と後方の被写界深度を示している。撮像部101〜105のフォーカス位置と被写界深度は、距離算出範囲として定めた1m〜3mが包含されていることが分かる。撮像部106〜109は、撮像部101〜105で包含された距離算出範囲をさらに包含するように該撮像部のフォーカス位置を設定している。
【0214】
図30には、図29で示された撮像部101〜109のフォーカス位置と前方と後方の被写界深度に基づき、各撮像部の被写界深度の範囲と、各距離において被写界深度の範囲に入っておりピントが合っている撮像部の台数を示している。
【0215】
図30において、被写体1が含まれる範囲Aは、4台の撮像部の被写界深度が含まれるように、各撮像部のフォーカス位置が設定されている。更に、被写体2が含まれる範囲Bは、3台の撮像部の被写界深度が含まれるように、各撮像部のフォーカス位置が設定されている。
【0216】
一方、実施形態1の図23では、2台の撮像部の被写界深度が範囲A、範囲Bに含まれるように、各フォーカス位置が設定されていた。距離算出範囲を定めることにより、同一の被写体をより多くの撮像部が合焦している画像(被写界深度内に被写体が含まれる画像)として撮影することが可能となる、より精度の高い距離画像を得ることができる。
【0217】
以上説明したように、本実施形態によれば、距離算出範囲に応じて撮像部のフォーカス位置を設定することにより、更に精度の高い距離画像を提供することが可能となる。
【0218】
(実施形態4)
実施形態1から実施形態3では、各撮像部がレンズとセンサを個々に具備する撮像装置であった。次に、撮像装置のセンサが一体化されて1個に集約される態様について、実施形態4として説明する。なお、実施形態1から実施形態3と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【0219】
図31は、撮像装置の内部構成を示す図である。撮像部101〜109は、図3と同様に、レンズ、絞り、シャッター、光学ローパスフィルタ、iRカットフィルタ、カラーフィルタ、センサおよびA/D変換部で構成されるが、センサの構成が異なる。
【0220】
3100は撮像装置のセンサである。3101〜3103は撮像部101〜103のレンズである。センサ3100は、撮像部101〜109で取得される被写体像を1枚のセンサ内で撮像する。センサ3100で撮影された1枚の画像から、各撮像部で撮影された画像領域を対応付け、撮像部101〜109で撮影された画像として抽出する。その後、画像処理部212にて、先に述べた距離算出手法に従って被写体までの距離算出を行う。このような構成にすることで、撮像装置の構成をより簡素化することができる。
【0221】
以上説明したように、本実施形態によれば、小型化された撮像装置により距離画像を提供することが可能となる。
【0222】
(その他の実施形態)
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【技術分野】
【0001】
本発明は、多眼方式の撮像装置で取得された画像群から、距離画像を提供するための画像処理装置および画像処理方法、プログラムに関するものである。
【背景技術】
【0002】
従来から、複数の光学系を用いて撮像された視点の異なる複数の画像に基づき、被写体とカメラ間の距離を計測する距離計測装置がある。被写体とカメラ間の距離を計測する方法として、ステレオカメラによって撮像された視差のある複数の画像を用いて、画像間の相関に基づくステレオマッチング処理が知られている。さらに、距離の計測精度を向上させるために、視点の異なる3枚以上の画像を使用して、距離計測する多眼方式のステレオマッチング処理が知られている(例えば、特許文献1参照。)。
【0003】
また、異なる距離計測方式として、フォーカス位置をずらして撮像された複数の被写体画像に基づき、いわゆるコントラスト方式で主被写体とカメラの間の距離を測定する手法が知られている。これを複数の光学系を具備する多眼方式へ拡張して、主被写体とカメラ間の距離を求める手法も提案されている(例えば、特許文献2参照。)。この手法では、フォーカス位置が異なる複数の光学系を具備する撮像装置によって撮像された複数の被写体画像に基づき、コントラスト方式により主被写体までの距離計測がなされる。単眼方式の撮像装置でフォーカス位置を変更しながら複数の被写体画像を取得する方法に比べ、多眼方式による特許文献2の手法では、一回の撮影でフォーカス位置を変化させた複数枚の被写体画像を取得できる利点を有する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−196891号公報
【特許文献2】特開2009−216600号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1で提案される手法では、1)フォーカス位置と異なる画像領域では距離マップの解像度が低下、2)被写界深度を拡大すると距離推定の精度が悪化、という問題がある。前者の問題について、被写体が遠方にある場合など、レンズを駆動してフォーカス位置を調節してほぼピントがあった像を得るが、被写体が近くにある場合、ピントがぼけしまい解像力が低下した画像が撮像されてしまう。このようなピントがぼけた画像に基づいて距離測定を行うと、得られる距離画像の解像度が低下してしまう。後者の問題について、撮影系の被写界深度を拡大するために、レンズ径を小さくし、パンフォーカスの撮影を行うことが考えられるが、レンズ径を小さくすると、レンズへの入射光量が低下し、撮像された画像に含まれるノイズが多くなる。ノイズが多い撮像画像に基づいて距離計測を行うと距離の推定精度が悪化する問題点を有する。
【0006】
また、特許文献2で提案される距離計測手法では、主被写体までの距離計測に限定されており、主被写体とは異なる位置にある背景がある場合、主被写体と背景を含む画像全体について距離計測を実現できない問題点がある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明は、合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部と、撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部と、合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部と、を備えたことを特徴とする。
【発明の効果】
【0008】
本発明は、多眼方式の撮像装置で取得された画像群から、主被写体と背景を含む距離画像を提供する効果を奏する。
【図面の簡単な説明】
【0009】
【図1】複数の撮像部を備えた多眼方式の撮像装置の一例を示した図である。
【図2】多眼方式の撮像装置の内部構成を示すブロック図である。
【図3】撮像部の内部構成を示す図である。
【図4】実施形態1に係る画像処理部の内部構成を示すブロック図である。
【図5】実施形態1に係る画像処理部における処理の流れを示すフローチャートである。
【図6】実施形態1に係る合焦画像選択部の内部構成を示すブロック図である。
【図7】合焦画像選択処理の流れを示すフローチャートである。
【図8】領域分割の一例を示す図である。
【図9】重複領域算出処理の流れを示すフローチャートである。
【図10】重複領域を漏れなく算出するまでのmとnの変遷過程の一例を示す図である。
【図11】重複領域を説明する図である。
【図12】全重複領域を説明する図である。
【図13】実施形態1における重複領域(全重複領域)の一例を示す図である。
【図14】コントラスト算出処理の流れを示すフローチャートである。
【図15】画像選択処理の流れを示すフローチャートである。
【図16】撮像画像と画像領域におけるコントラスト値の一例を示す図である。
【図17】実施形態1に係る距離算出部の内部構成を示すブロック図である。
【図18】距離算出部における処理の流れを示すフローチャートである。
【図19】実施形態1に係る対応点探索処理の流れを示すフローチャートである。
【図20】特徴点の探索処理の流れを示すフローチャートである。
【図21】特徴点の探索処理を説明する図である。
【図22】距離算出処理の流れを示すフローチャートである。
【図23】撮像部の被写界深度の範囲の一例を示す図である。
【図24】実施形態2に係る対応点探索処理の流れを示すフローチャートである。
【図25】ブロックマッチング処理の流れを示すフローチャートである。
【図26】ブロックマッチング処理を説明する図である。
【図27】実施形態3に係る撮像部制御部の内部構成を示すブロック図である。
【図28】実施形態3に係る撮像部制御部における処理の流れを示すフローチャートである。
【図29】撮像のフォーカス位置と前方と後方の被写界深度の一例を示す図であう。
【図30】実施形態3に係る撮像部の被写界深度の範囲の一例を示す図である。
【図31】実施形態4に係る撮像部の内部構成を示す図である。
【発明を実施するための形態】
【0010】
(実施形態1)
図1は、複数の撮像部を備えた多眼方式による撮像装置の一例を示した図である。100は撮像装置の筐体を示す。筐体100は、カラー画像を取得する9個の撮像部101〜109及び撮影ボタン110を備える。9個の撮像部は、正方格子状に均等に配置されている。ユーザが撮影ボタン110を押下すると、撮像部101〜109が備えるセンサ(撮像素子)によって、受光した被写体の光情報をA/D変換して、複数のカラー画像(デジタルデータ)を同時に取得することができる。このような多眼方式の撮像装置により、同一の被写体を複数の視点位置から撮像したカラー画像群を得ることができる。
【0011】
なお、ここでは撮像部の数を9個としたが撮像部の数は9個に限定されない。撮像装置が複数の撮像部を有する限りにおいて本発明は適用可能である。
【0012】
また、ここでは9個の撮像部が正方格子状に均等に配置される例について説明したが、撮像部の配置は任意である。例えば、放射状や直線状に配置してもよいし、まったくランダムに配置してもよい。
【0013】
図2は、撮像装置100の内部構成を示すブロック図である。201は中央処理装置(CPU)であり、以下に述べる各部を統括的に制御する。
【0014】
202はRAMであり、CPU201の主メモリ、ワークエリア等として機能する。
【0015】
203はROMであり、CPU201で実行される制御プラグラム等を格納している。
【0016】
204は各種データの転送経路となるバスである。例えば、撮像部101〜109によって取得されたデジタルデータはこのバス204を介して所定の処理部に送られる。
【0017】
205はユーザの指示を受け取る操作部であり、ボタンやモードダイヤルなどが含まれる。
【0018】
206は撮影画像や文字の表示を行う表示部であり、例えば、液晶ディスプレイが用いられる。表示部206はタッチスクリーン機能を有していても良く、その場合はタッチスクリーンを用いたユーザ指示を操作部205の入力として扱うことも可能である。
【0019】
207は表示制御部207であり、撮影画像や文字を表示部206に表示させるように表示制御を行う。
【0020】
208は撮像部制御部であり、被写体にフォーカスを合わせる、撮像のためにシャッターを開く又は閉じる、絞りを調節するなどの、CPU201からの指示に基づいた撮像系の制御を行う。
【0021】
209はデジタル信号処理部であり、バス204を介して受け取ったデジタルデータに対し、ホワイトバランス処理、ガンマ処理、ノイズ低減処理などの各種処理を行う。
【0022】
210はエンコーダ部であり、デジタルデータをJPEGやMPEGなどのファイルフォーマットに変換する処理を行う。
【0023】
211は外部メモリ制御部であり、PCやその他のメディア(例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリ)に繋ぐためのインターフェースである。
【0024】
212は画像処理部であり、撮像部101〜109で取得されたカラー画像群或いは、デジタル信号処理部208から出力されるカラー画像群から、距離を算出する処理を行う。画像処理部212の詳細については後述する。
【0025】
なお、撮像装置の構成要素は上記以外にも存在するが、本件発明の主眼ではないので、説明を省略する。
【0026】
図3(a)は、撮像部101〜109の内部構成を示す図である。撮像部101〜109はそれぞれ、レンズ301〜303、絞り304、シャッター305、光学ローパスフィルタ306、iRカットフィルタ307、カラーフィルタ308、センサ309及びA/D変換部310を備える。なおレンズ301〜303は、より詳細には、ズームレンズ301、フォーカスレンズ302、ぶれ補正レンズ303から構成される。なお、撮像部101〜109における各フォーカスレンズは、光学系において撮像部ごとに異なる位置に設置されており、従って各撮像部のフォーカス位置が異なる距離になるように設定される。センサ309は、例えばCMOSやCCDなどのセンサである。センサ309で被写体の光量を検知すると、検知された光量がA/D変換部310によってデジタル値に変換され、デジタルデータとなってバス204に出力される。
【0027】
図3(b)は、撮像部101〜103におけるフォーカスレンズ302が配置される位置の一例を示している。撮像部101におけるフォーカスレンズはよりセンサに遠い位置に配置されている。一方、撮像部103におけるフォーカスレンズはよりセンサに近い位置に配置されている。図示しない撮像部104から109のフォーカスレンズの位置も異なる位置に配置させている。
【0028】
図23は、フォーカス位置がそれぞれ異なる撮像部101〜109の被写界深度の範囲(ピントが合っていると判断できる範囲)の一例を示している。
【0029】
図23の左側には、撮像装置100と被写体の位置関係を示す。図23は、三種類の被写体(被写体1、被写体2、被写体3)が撮像装置から異なる位置に存在する場合につて説明するものである。図23に示すように、被写体1が最も撮像部から近い位置にあり、被写体3が最も撮像部から遠い位置にある。
【0030】
図23の右側には、各撮像部の被写界深度の範囲と、各距離において被写界深度の範囲に入っている撮像部の台数とを示している。例えば、被写体1が存在する範囲Aが、撮像部101と105の被写界深度に含まれるように、該撮像部のフォーカス位置が設定されている。また、被写体2が含まれる範囲Bが、撮像部102と106の被写界深度に含まれるように、該撮像部のフォーカス位置が設定されている。また、被写体3が存在する範囲Cが、撮像部103、108、109の被写界深度に含まれるように、該撮像部のフォーカス位置が設定されている。
【0031】
本実施形態では、撮像部から被写体までの任意の距離において、少なくとも2台以上の撮像部の被写界深度が重複するように、各撮像部のフォーカス位置が設定されている。なお、図23に示すように、全ての撮像部のフォーカス位置を完全に不一致にする必要はない。すなわち、複数の撮像部のフォーカス位置が一致する態様であっても構わない。
【0032】
<画像処理部の構成図>
図4は、画像処理部212の内部構成を示したブロック図である。
【0033】
401は画像取得部であり、撮像部101〜109からバス204を経由して供給されるカラー画像群を取得する。402はモノクロ変換部であり、画像取得部401から供給されるカラー画像群をモノクロ画像群に変換する。407はメモリ部であり、モノクロ画像変換部402から供給されるモノクロ画像群を一時的に格納する。403はパラメータ取得部であり、撮影時における撮像部101〜109の各種パラメータを取得する。なお、パラメータには、例えば、撮像部の焦点距離、絞り値(Fナンバー)、センササイズ、センサの画素数、ピント距離(主レンズとセンサの距離)、撮像部間の相対位置などが含まれる。404は合焦画像選択部であり、パラメータ取得部403から供給されるパラメータを用いて、メモリ部407に格納されるモノクロ画像からピントが合っている(以下、「合焦」と呼ぶ)画像を選択する。合焦画像選択部404の詳細については後述する。405は距離算出部であり、パラメータ取得部403から供給されるパラメータ、合焦画像選択部404で合焦と判断された画像、メモリ部407に格納されるモノクロ画像を用いて被写体までの距離を算出し出力する。距離算出部405の詳細については後述する。
【0034】
次に、画像処理部212を構成する各部401−407による画像処理の詳細を説明する。
【0035】
図5は、画像処理部212における画像処理の流れを示すフローチャートである。
【0036】
ステップ501において、画像取得部401は、撮像部101〜109からカラー画像を受け取る。本実施形態では、撮像部は9個であるので、デジタルデータである9枚のカラー画像が入力される。
【0037】
ステップ502において、モノクロ画像変換部402は、入力されたカラー画像をモノクロ画像に変換する。ステップ502では、カラー画像の各画素におけるRGB値を、RGB値に応じた輝度値に変換する。
【0038】
ステップ503において、メモリ部407は、モノクロ画像変換部402で変換されたモノクロ画像を格納し、一時的に保持する。
【0039】
ステップ504において、パラメータ取得部403は、撮像部101〜109に関するパラメータを取得する。
【0040】
ステップ505において、合焦画像選択部404は、取得したパラメータを使用して、モノクロ画像変換部402から供給されるモノクロ画像のうち、合焦している画像を選択する。
【0041】
ステップ506において、距離算出部405は、取得したパラメータと合焦であると判断されたモノクロ画像を用いて被写体までの距離を算出する。
【0042】
最後に、ステップ507において、距離算出部405で生成された距離データが出力されると、本処理は終了する。
【0043】
このように、画像処理部212において画像処理を行うことで、精度の良い距離画像の提供が可能となる。
【0044】
続いて、合焦画像の選択処理(S505)と距離算出処理(S506)の詳細について、順次説明する。
【0045】
<合焦画像選択部404の構成図>
図6は、合焦画像選択部404の内部構成を示したブロック図である。
【0046】
601は画像入力端子であり、メモリ部407に格納されているモノクロ画像のデジタルデータを入力する。602はパラメータ入力端子であり、パラメータ取得部403が取得したパラメータを入力する。603は重複領域算出部であり、パラメータ入力端子602から供給されるパラメータを使用して、各撮像部の画角が重複する領域(以下、「重複領域」と呼ぶ。)を算出する。604は領域分割部であり、重複領域算出部603で算出された画像内を複数のサブ領域に分割する。605はコントラスト算出部であり、領域分割部604で分割された各サブ領域画像内におけるコントラストを算出する。606は画像選択部であり、コントラスト算出部605で算出されたコントラスト値を使用して、分割されたサブ領域毎に合焦している画像を選択する。607は画像出力端子であり、分割された各サブ領域における合焦画像を出力する。
【0047】
次に、合焦画像選択部404を構成する各部601−607によって行なわれる合焦画像を選択する選択処理の詳細を説明する。
【0048】
図7は、合焦画像選択部404における処理の流れを示すフローチャートである。
【0049】
ステップ701において、画像入力端子601は、メモリ部407に格納されているモノクロ画像を入力する。
【0050】
ステップ702において、パラメータ入力端子602は、パラメータ取得部403が取得したパラメータを入力する。
【0051】
ステップ703において、重複領域算出部603は、取得したパラメータを使用して、重複領域を算出する。なお、重複領域の算出方法の詳細については後述する。
【0052】
ステップ704において、領域分割部604は、重複領域算出部603で算出された画像領域をNi×Njのサブ領域に分割する。ここで、Niは縦方向の分割数を示す。また、Njは横方向の分割数を示す。
【0053】
図8は、領域分割部604によって分割された画像の一例を示している。図8では、縦方向に6分割(Ni=6)、横方向に6分割(Nj=6)したときに、画像が分割数に応じて分割されている様子を示している。なお、分割する領域の個数(Ni,Nj)は縦横6分割(Ni=Nj=6)に限定する必要はない。6分割よりも分割数を多くしても良いし、少なくしても構わない。例えば、分割数を16分割に増加させることや4分割に減少させることも構わない。更には、縦横方向の分割数を一致させる必要もない。例えば、縦方向は6分割のままで、横方向を10分割にするなどしても構わない。
【0054】
図7のフローチャートの説明に戻る。ステップ704で画像領域の分割処理が完了すると、ステップ705において、コントラスト算出部605は、各分割領域におけるコントラスト値を算出する。コントラスト値の算出方法の処理については後述する。
【0055】
ステップ706において、画像選択部606は、コントラスト算出部605で算出されたコントラスト値を使用して、分割された領域毎に合焦している画像を選択する。合焦している画像の選択方法の処理については後述する。
【0056】
最後に、ステップ707において、画像出力端子607が、分割された各領域において選択された合焦している画像を組み合わせた合焦画像を出力すると、本処理は終了する。
【0057】
<重複領域の算出処理>
図7のフローチャートのステップ703で行われる重複領域の算出処理の詳細について説明する。図9は、重複領域算出処理の流れを示すフローチャートである。
【0058】
まず、ステップ901において、重複領域算出部603は、パラメータ取得部403から、撮像部101〜109に関する前述のパラメータを受け取る。
【0059】
ステップ902において、重複領域算出部603は、メモリ部407に格納された複数のモノクロ画像群から、重複領域を算出したい基準画像I(i,j,m)を1つ選択する。ここで、(i,j)は画像上の座標位置を表す変数であり、mは初期値0から始まる基準画像の番号を示す変数である。ステップ902で選択される基準画像は最初に選択される基準画像あり、ここでは、I(i,j,0)の画像が選択される。
【0060】
ステップ903において、重複領域算出部603は、基準画像と比較する参照画像I(i,j,n)を1つ選択する。ここで、nは参照画像の番号を示す変数である。ステップ903で選択される参照画像は最初に選択される参照画像であり、nの初期値はn=m+1に設定されているので、ここでは、mの初期値が0のため、I(i,j,1)の画像が選択される。
【0061】
以下に述べるステップ907及びステップ911において、参照画像及び基準画像はそれぞれ更新されることになるが、N個の撮像部を有する多眼方式の撮像装置では、mの最大値はN−2、nの最大値はN−1となる。
【0062】
図10は、図1に示した9個の撮像部を有する撮像装置の場合に重複領域を漏れなく算出するまでのmとnの変遷過程を示したものである。例えば、mが初期値である0のとき、nは1〜8までの値をとり、実線a〜hで示される8つの組み合わせについて重複領域が算出される。そして、mが(9−2=)7になるまでこの処理が繰り返される。既に取得した組み合わせについては重ねて重複領域を算出する必要がないため、mの値が大きくなるにつれて重複領域の算出対象となる組み合わせの数は1ずつ減っていき、mが7のときは破線iで示される1の組み合わせについてのみ重複領域が算出される。
【0063】
図9のフローチャートの説明に戻る。ステップ904において、重複領域算出部603は、選択された基準画像I(i,j,m)と参照画像I(i,j,n)との重複領域を、入力されたパラメータに基づいて算出する。なお、処理開始直後の最初のステップ904では、基準画像(i,j,0)、参照画像(i,j,1)についての重複領域が算出される。
【0064】
図11の(a)〜(c)は、ステップ904で算出される重複領域を説明する図である。説明を簡潔にするため、二次元平面に展開した模式図としている。同図の(a)及び(b)において、基準画像は撮像部101で取得された画像(i,j,0)であり、参照画像は撮像部102で取得された画像(i,j,1)である。
【0065】
図11の(a)は、それぞれ同じスペックであるが合焦位置が異なるように設定されている撮像部101と撮像部102とが、x方向に間隔lxの幅で併置される様子を示している。(Sx,Sy)は、センサの(x,y)方向におけるサイズを示す。dsは、撮像部のピント距離(主レンズとセンサとの間の距離)である。dobjは、仮想ピント位置(カメラとある仮想平面までの距離)である。点線で囲まれる領域はカメラの撮像範囲、すなわち画角であり、センササイズ(Sx,Sy)と焦点距離dsによって決定される。[P10,P21]の線分が重複領域のx(横)方向の辺に当たる部分であり、その距離wxは、式(1)によって求めることができる。
【0066】
【数1】
【0067】
図11の(b)は、撮像部101で撮像された画像(撮像範囲)、撮像部102で撮像された画像(撮像範囲)、及び両画像の重複領域の一例を示している。[P10,P11,P12,P13]の四点で囲まれる領域が撮像部101の撮像範囲である。また、[P20,P21,P22,P23]の4点で囲まれる領域が撮像部102の撮像範囲である。そして、[P10,P21,P22,P13]の4点で囲まれる斜線領域が重複領域である。[P10,P21]の線分がセンサ面上における重複領域のx(横)方向の辺に相当し、その画素数nwは、式2によって求めることができる。
【0068】
【数2】
【0069】
ここで、nxはセンサの横画素数である。
【0070】
前述の通り、撮像部101と撮像部102はx方向に併置されているため、縦方向の重複範囲には、センサの縦画素数nyと同じ画素数分だけ含まれることになる。
【0071】
図11の(c)は、二台のカメラがy方向に併置される場合における重複領域の一例を示している。ここでは、撮像部101で撮像された画像(撮像範囲)、撮像部104で撮像された画像(撮像範囲)、及び両画像の重複領域を示している。[P10,P11,P12,P13]の四点で囲まれる領域が撮像部101の撮像範囲であり、[P30,P31,P32,P33]の4点で囲まれる領域が撮像部104の撮像範囲である。そして、[P30,P31,P12,P13]の4点で囲まれる斜線領域が重複領域である。[P30,P13]の線分がセンサ面上における重複領域のy(縦)方向の辺に相当し、その画素数nhは、式3によって求めることができる。
【0072】
【数3】
【0073】
ここで、nyはセンサの縦画素数である。
【0074】
以上のようにして、ステップ904で基準画像と参照画像との重複領域が算出される。
【0075】
ステップ905において、重複領域算出部603は、算出された重複領域のデータをメモリに格納する。
【0076】
ステップ906において、重複領域算出部603は、全ての参照画像について重複領域の算出が完了したか否か、すなわち、n=N−1に到達したか否かを判定する。すべての参照画像について重複領域の算出が完了していれば、ステップ908に進む。一方、未処理の参照画像がある場合(n<N−1の場合)には、ステップ907に進む。ステップ907において、重複領域算出部603は、nの値をインクリメント(n=n+1)して、参照画像を更新し、ステップ904に戻る。
【0077】
このようにして、n=N−1に到達するまで、ステップ904〜ステップ906の処理が繰り返される。ステップ908において、重複領域算出部603は、1の基準画像I(i,j,m)について得られた重複領域のすべてが重なる共通の領域(以下、「全重複領域」と呼ぶ)を算出する。
【0078】
図12は、全重複領域を説明する図である。ここでは、説明の便宜上、3台の撮像部101、102、104の撮像領域についてしか示していないが、撮像部が9個あればその全ての撮像部における撮像領域に対応する全重複領域が求められることになる。
【0079】
3台の撮像部101、102、104における重複領域は、図11の(b)及び(c)で示したとおりであるので、この2つの重複領域が重なる領域、つまり[Pa,P31,P22,P13]の4点で囲まれる斜線領域がこの場合の全重複領域となる。
【0080】
ステップ909において、重複領域算出部603は、上記のようにして得られた1の基準画像I(i,j,m)に対する全重複領域のデータをメモリに格納する。
【0081】
ステップ910において、重複領域算出部603は、全ての基準画像について全重複領域の算出が完了したか否か、すなわち、m=N−2に到達したか否かを判定する。すべての基準画像について全重複領域の算出が完了していれば、ステップ912に進む。一方、未処理の基準画像がある場合(m<N−2の場合)には、ステップ911に進む。ステップ911において、重複領域算出部603は、mの値をインクリメント(m=m+1)して、基準画像を更新し、ステップ903に戻る。このようにして、m=N−2に到達するまで、ステップ903〜ステップ910の処理が繰り返される。
【0082】
ステップ912において、重複領域算出部603は、各基準画像に対する全重複領域を出力する。このようにして、図7のフローチャートのステップ703における重複領域算出処理が行われる。
【0083】
なお、説明の都合上、図11と図12では、基準画像と参照画像の撮像範囲を図示したが、これは重複領域算出部603における重複領域の算出処理が、基準画像・参照画像となる撮像画像を実際に受け取った上でなされることを必ずしも意味しない。重複領域算出部603は、基準画像・参照画像となる撮像画像を実際に受け取った上で重複領域の算出処理を行ってもよいし、式1〜式3に示される重複領域算出に必要なパラメータのみを受け取って重複領域を算出する構成でも構わない。
【0084】
図13は、撮像部が9個ある場合に得られる重複領域(全重複領域)の一例を示している。図13の(a)は、撮像部と被写体の関係を示しており、三種類の被写体(被写体1、被写体2、被写体3)が撮像部101〜103から異なる距離に離れた位置に存在している。被写体1が最も撮像部から近い位置にあり、被写体3が最も撮像部から遠い位置にある。図13(b)は、9個の撮像部101〜109で撮像された画像内における全重複領域をそれぞれ示している。点線で囲まれる領域が各撮像部における全重複領域であり、このように全重複領域を規定することにより、視点位置の異なる各撮影画像から同一の撮像領域が特定される。
【0085】
<コントラストの算出処理>
図14は、図7のステップ705におけるコントラスト算出処理の流れを示すフローチャートである。
【0086】
まず、ステップ1401において、コントラスト算出部605は、重複領域算出部603で算出された、撮像部101〜109で撮像された各画像における重複領域に係る画像を入力する。
【0087】
ステップ1402において、コントラスト算出部605は、領域分割部604で分割された画像領域に則り、コントラストを算出したい画像領域(ii,jj)を1つ選択する。ここで、(ii,jj)は分割領域の座標位置を表す変数である。図8で説明したように、領域分割部604は、画像を縦方向にNi分割、横方向にNj分割することから、変数iiとjjは、ii=[0,1,・・・,Ni−1],jj=[0,1,・・・,Nj−1]と変化する値である。ここでは、まず始めに(ii,jj)=(0,0)の画像領域が選択される。
【0088】
ステップ1403において、コントラスト算出部605は、コントラストを算出したい基準画像I(i,j,m)を1つ選択する。ここで、(i,j)は画像上の座標位置を表す変数であり、mは初期値0から始まる基準画像の番号を示す変数である。また、コントラスト算出部605が使用する基準画像I(i,j,m)は、画像入力端子601から供給されるモノクロ画像のうち、基準画像の番号mに対応するモノクロ画像のデジタルデータである。テップ1403で選択される基準画像は最初に選択される基準画像あり、ここでは、I(i,j,0)の画像が選択される。
【0089】
ステップ1404において、コントラスト算出部605は、基準画像I(i,j,m)における画像領域(ii,jj)内の各画素の値に基づいてヒストグラムを算出する。
【0090】
ステップ1405において、コントラスト算出部605は、ステップ1404で算出されたヒストグラムに基づいて、画像領域(ii,jj)内におけるモノクロ画素値の最大値Imax(ii,jj,m)を取得する。ステップ1406において、コントラスト算出部605は、ステップ1404で算出されたヒストグラムに基づいて、画像領域(ii,jj)内におけるモノクロ画素値の最小値Imin(ii,jj,m)を取得する。ステップ1407において、コントラスト算出部605は、最大値Imax(ii,jj,m)と最小値Imin(ii,jj,m)を使用して、画像領域(ii,jj)における基準画像mのコントラスト値C(ii,jj,m)を算出する。コントラスト値は式4によって求めることができる。
【0091】
【数4】
【0092】
ステップ1408において、コントラスト算出部605は、全ての基準画像についてコントラスト値の算出が完了したか否か、すなわち、m=N−1に到達したか否かを判定する。すべての基準画像についてコントラスト値の算出が完了していれば、ステップ1410に進む。一方、未処理の基準画像がある場合(m<N−1の場合)には、ステップ1409に進む。
【0093】
ステップ1409において、コントラスト算出部605は、mの値をインクリメント(m=m+1)して、基準画像を更新し、ステップ1404に戻る。このようにして、m=N−1に到達するまで、ステップ1404〜ステップ1408の処理が繰り返される。
【0094】
ステップ1410において、コントラスト算出部605は、図8の画像領域のうち、縦方向iiの画像領域で横方向の分割数Njに到達したか否かを、すなわちjj=Njに到達したか否かを判定する。横方向の分割数に到達していれば、ステップS1412に進む。一方、横方向の分割数Njに到達していない場合(jj<Nj−1)には、ステップ1411に進む。
【0095】
ステップ1411において、コントラスト算出部605は、横方向の画像領域の番号を示すjjの値をインクリメント(jj=jj+1)して、コントラスト値を算出する画像領域(ii,jj)を更新し、ステップ1403に戻る。このようにして、jj=Nj−1に到達するまで、ステップ1404〜ステップ1410の処理が繰り返される。
【0096】
ステップ1412において、コントラスト算出部605は、図8の画像領域のうち、横方向jjの画像領域で縦方向の分割数Niに到達したか否かを、すなわちii=Niに到達したか否かを判定する。縦方向の分割数に到達していれば、ステップS1414に進む。一方、縦方向の分割数Niに到達していない場合(ii<Ni−1)には、ステップ1413に進む。ステップ1413において、コントラスト算出部605は、縦方向の画像領域の番号を示すiiの値をインクリメント(ii=ii+1)して、コントラスト値を算出する画像領域(ii,jj)を更新し、ステップ1403に戻る。このようにして、ii=Ni−1に到達するまで、ステップ1404〜ステップ1412の処理が繰り返される。ステップ1414において、コントラスト算出部605は、コントラスト値C(ii,jj,m)を出力する。このようにして、このようにして、図7のフローチャートのステップ705におけるコントラストの算出処理が行われる。
【0097】
なお、本実施形態におけるコントラスト値の算出方法では式4を使用したが、その他のコントラスト算出方法でも構わない。例えば、コントラスト値を算出したい画像領域内のエッジをフィルタ処理などによって抽出し、そのエッジ成分の強度や総量などの評価値をコントラスト値として扱っても良い。画像のコンロラストや鮮鋭度を定量的に評価できる評価値であれば、その他の算出方法を使用しても構わない。
【0098】
<合焦画像選択処理>
図15は、図7のステップ706における合焦画像選択処理の流れを示すフローチャートである。
【0099】
まず、ステップ1501において、画像選択部606は、コントラスト算出部605で算出されたコントラスト値C(ii,jj,m)を入力する。
【0100】
ステップ1502において、画像選択部606は、領域分割部603で分割された画像領域に則り、合焦画像を選択したい画像領域(ii,jj)を1つ選択する。ステップ1503において、画像選択部606は、合焦画像の枚数を示す値Ncをゼロに設定する(Nc=0)。
【0101】
ステップ1504において、画像選択部606は、選択された画像が合焦しているか否かを判定するための閾値Thに対して初期値を設定する。閾値Thは予めユーザーが設定しても構わない。本実施形態では、閾値の初期値をTh=0.6に設定する。
【0102】
ステップ1505において、画像選択部606は、画像が合焦しているか否かを判定する対象となる基準画像mを1つ選択する。
【0103】
ステップ1506において、画像選択部606は、基準画像mの画像領域(ii,jj)におけるコントラスト値C(ii,jj,m)が閾値Thよりも大きいか否かを判定する。コントラスト値が閾値よりも大きい場合(C(ii,jj,m)>Th)、つまり、画像領域(ii,jj)において基準画像mが合焦となっていると判断されると、ステップ1507に進む。一方、コントラスト値が閾値以下の場合には、ステップ1509に進む。
【0104】
ステップ1507において、画像選択部606は、合焦画像の枚数を示す値Ncをインクリメント(Nc=Nc+1)する。
【0105】
ステップ1508において、画像選択部606は、ステップ1506で合焦していると判断された基準画像mの番号を保持する。
【0106】
ステップ1509において、画像選択部606は、全ての基準画像についてコントラスト値と閾値との比較が完了したか否か、すなわち、m=N−1に到達したか否かを判定する。すべての基準画像についてコントラスト値と閾値との比較が完了していれば、ステップ1505に進む。一方、未処理の基準画像がある場合(m<N−1の場合)には、ステップS1510に進む。ステップ1510において、画像選択部606は、mの値をインクリメント(m=m+1)して、基準画像を更新し、ステップ1506に戻る。
【0107】
このように処理することにより、m=N−1に到達するまで、ステップ1506〜ステップ1509の処理が繰り返される。
【0108】
ステップ1511において、画像選択部606は、合焦と判断された画像枚数Ncが複数あるか否かを判定する。合焦画像が複数枚ある場合(Nc>1)には、ステップ1513に進む。一方、合焦画像が複数枚ないと判定された場合には、ステップ1512に進む。
【0109】
ステップ1512において、画像選択部606は、閾値Thの値を変更する。ステップ1512での閾値Thの変更では、閾値Thを小さくする方向に値を変更する。ここで、閾値Thを小さくするように変更した後、ステップ1505〜ステップ1511の処理が繰り返される。このようにして、画像選択部606は、画像領域(ii,jj)においてコントラスト値が高い画像から、複数枚の合焦画像を得ることが可能となる。
【0110】
ステップ1513からステップ1516は、図14で説明した、コントラスト算出部605における処理の流れを示すフローチャートのステップ1410からステップ1413と同様であるため説明を省略する。
【0111】
最後に、ステップ1517において、画像選択部606は、各画像領域において合焦していると判断された画像の番号、すなわち合焦画像が撮影された撮像部との対応を出力する。このようにして、図7のフローチャートのステップ706における合焦画像の選択処理が行われる。
【0112】
図16は、被写体1〜3を含むシーンの撮影画像と、画像領域A、B、Cの三箇所におけるコントラスト値を示している。図16(a)には、9台の撮像部のうち撮像部101〜103で撮像した撮像画像の一例を示している。
【0113】
撮影画像のうち点線で囲まれた領域が画像領域A、B、Cに該当している。また、図16(b)には、撮像部101〜109で撮像した撮像画像について、画像領域A、B、Cおけるコントラスト値を示している。
【0114】
例えば、画像領域Aについて、撮像部101の撮像画像におけるコントラスト値は、図16(b)に示すように0.783である。同様に、撮像部102と撮像部103の撮像画像について、画像領域Aのコントラスト値は0.333と0.552である。
【0115】
図16(a)に記載されていない、撮像部104から撮像部109のコントラスト値は、図16(b)に示す通りとなっている。先にも述べたとおり、撮影画像のうち分割された画像領域において合焦しているか否かの判断は、このコントラスト値と閾値Thとの大小関係の比較に基づいている。なお、閾値Thは合焦画像の選択を左右するパラメータである。この閾値Thを比較的小さな値に設定すれば、合焦画像として選択される画像枚数は増加する。しかし、画像間の相関による距離推定を用いる本発明の場合には、フォーカスが不十分な画像が含まれることもあり、距離推定の精度が悪化する傾向が強くなる。一方、閾値Thを比較的大きな値に設定すると、合焦画像の選択において、十分なフォーカスを確保できる画像を選ぶことができるが選択される画像枚数が減少し、距離算出時におけるオクルージョン問題が発生する(オクルージョンについては後述する)。本実施形態では、これらのトレードオフを鑑みて、その閾値をTh=0.6と設定している。
【0116】
合焦画像選択部404は、閾値Thの値を超える撮像部101と撮像部105の撮影画像とが画像領域Aにおける合焦画像であると判断される。その他の撮像部による撮影画像の画像領域Aにおけるコントラスト値は閾値(Th=0.6)を下回るため、合焦画像選択部404は、撮像部102〜104、106〜109による撮像画像は画像領域Aにおいて合焦していないと判断する。
【0117】
合焦画像選択部404は画像領域Bと画像領域Cについても同様の処理を行い、各画像領域において合焦画像を提供する撮像部で撮像された画像を選択する。画像領域Bにおいて、合焦画像選択部404は、撮像部102と106の2台の撮像部で撮像された画像を合焦画像として選択する。
【0118】
更に、画像領域Cにおいて、画像選択部404は、撮像部103、108、109の3台の撮像部で撮像された画像を合焦画像として選択する。この結果は、図23で示した、被写体1〜3を被写界深度の範囲に含む撮像部と、合焦画像選択部404が合焦画像であると判断した撮像部とが一致していることが分かる。つまり、コントラスト値を使用することにより、距離算出に対して好適な合焦画像を選択することが可能となる。
【0119】
なお、説明を簡略化するため図16では、三箇所の画像領域について説明したが、図16で説明しなかった分割領域A、B、C以外の分割領域についても、合焦画像選択部404は合焦画像の選択を実施する。
【0120】
<距離算出部の構成図>
図17は、距離算出部405の内部構成を示したブロック図である。
【0121】
1701は合焦画像番号入力端子であり、合焦画像選択部404で選択された各分割領域における合焦画像の番号が入力されることになる。1702は画像領域選択部であり、後述する距離演算を実施したい画像領域を設定する。1703は画像入力端子であり、メモリ部407に格納されるモノクロ画像のデジタルデータが入力されることになる。1704は対応点探索部であり、画像入力端子1703から供給される複数のモノクロ画像における画像間の対応点を探索する。より具体的には、画像領域選択部1702で選択された画像領域において合焦画像選択部404が合焦していると判断した複数の合焦画像について、対応点探索部1704は、画像間における対応点を探索する。1705はパラメータ入力端子であり、パラメータ取得部403が取得したパラメータが入力されることになる。1706は距離演算部であり、対応点探索部1704の結果を使用して、被写体までの距離を演算する。1707は距離合成部であり、距離演算部1706で演算された各画像領域における距離データを合成し、空間的に広がりを持つ距離データ(以下、「距離画像」と呼ぶ)を生成する。1708は距離データの出力端子であり、距離合成部1707で合成された距離画像を出力する。
【0122】
次に、距離算出部405の上記各部によって行なわれる距離算出処理の詳細を説明する。
【0123】
図18は距離算出部405における処理の流れを示すフローチャートである。
【0124】
まず、ステップ1801において、合焦画像番号入力端子1701は、合焦画像選択部404で選択された各分割領域における合焦画像の番号を入力する。
【0125】
ステップ1802において、画像領域選択部1702は、領域分割部603で分割された画像領域に則り、画像領域(ii,jj)を1つ選択する。ここで、(ii,jj)は分割領域の座標位置を表す変数である。
【0126】
ステップ1803において、画像入力端子1703から供給される複数のモノクロ画像における画像間の対応点を探索する。対応点探索処理の詳細については後述する。
【0127】
ステップ1804において、距離演算部1706は、パラメータ入力端子1705から供給されるパラメータと対応点探索部1704との結果を使用して被写体と背景までの距離を演算する。距離演算処理の詳細については後述する。
【0128】
ステップ1805からステップ1808までの処理は、図14で説明した、コントラスト算出処理の流れを示すフローチャートのステップ1410からステップ1413と同様であるため説明を省略する。
【0129】
ステップ1809において、距離合成部1707は、距離演算部1706で距離算出されたデータを合成する。
【0130】
ステップ1809では、空間的に広がりを持つ距離画像として生成するために、各画像領域で算出された距離データを1つの距離データとして合成する。
【0131】
そして、ステップ1810において、距離データ出力端子1708が、距離合成部1707で合成された距離画像を出力すると、本処理は終了する。
【0132】
<対応点探索処理>
図19は、図18のフローチャートのステップ1803における対応点探索処理の流れを示すフローチャートである。
【0133】
対応点探索処理が開始すると、まず、ステップ1901において、対応点探索部1704は、画像領域(ii,jj)における合焦画像を入力する。
【0134】
ステップ1902において、対応点探索部1704は、メモリ部407に格納された複数のモノクロ画像群から、対応探索処理の際の基準となる基準画像I’(i,j,mm)を1つ選択する。(i,j)は画像上の座標位置を表す変数であり、mmは初期値0から始まる基準画像の番号を示す変数である。ステップ1902で選択される基準画像は最初に選択される基準画像あり、ここでは、I(i,j,0)の画像が選択される。
【0135】
ステップ1903において、対応点探索部1704は、基準画像と比較する参照画像I(i,j,nn)を1つ選択する。ここで、nnは参照画像の番号を示す変数である。ステップ1903で選択される参照画像は最初に選択される参照画像であり、nnの初期値はnn=mm+1に設定されているので、ここでは、I(i,j,1)の画像が選択される。以下に述べるステップ1907及びステップ1909において、参照画像及び基準画像はそれぞれ更新されることになる。合焦画像選択部404で選択されたM(ii,jj)個の合焦画像を有する場合では、mの最大値はM(ii,jj)−2、nの最大値はM(ii,jj)−1となる。
【0136】
ステップ1904において、対応点探索部1704は、画像領域(ii,jj)について、基準画像と参照画像の特徴点の対応探索処理を実施する。特徴点の対応探索処理の詳細については後述する。
【0137】
ステップ1905において、対応点探索部1704は、特徴点の対応探索の結果から得られる基準画像と参照画像との対応点の関係を保持する。
【0138】
ステップ1906において、対応点探索部1704は、全ての参照画像について対応点探索が完了したか否か、すなわち、nn=M(ii,jj)−1に到達したか否かを判定する。すべての参照画像について対応点探索が完了していれば、ステップ1908に進む。一方、未処理の参照画像がある場合(nn<M(ii,jj)−1の場合)には、ステップ1907に進む。
【0139】
ステップ1907において、対応点探索部1704は、nnの値をインクリメント(nn=nn+1)して、参照画像を更新し、ステップ1904に戻る。このようにして、nn=M(ii,jj)−1に到達するまで、ステップ1904からステップ1906の処理が繰り返される。ステップ1908において、対応点探索部1704は、全ての基準画像について対応点探索が完了したか否か、すなわち、mm=M(ii,jj)−2に到達したか否かを判定する。すべての基準画像について対応点探索が完了していれば、ステップ1910に進む。一方、未処理の基準画像がある場合(mm<M(ii,jj)−2の場合)には、ステップ1909に進む。
【0140】
ステップ1909において、対応点探索部1704、mmの値をインクリメント(mm=mm+1)して、基準画像を更新し、ステップ1903に戻る。このようにして、mm=M(ii,jj)−2に到達するまで、ステップ1903〜ステップ1908の処理が繰り返される。ステップ1910において、対応点探索部1704は、ステップ1905において保持された基準画像と参照画像との対応点の関係を出力する。このようにして、図18のフローチャートのステップ1803における対応点探索処理が行われる。
【0141】
<特徴点の対応探索処理>
図20は、図19のフローチャートのステップ1904における特徴点の対応探索処理の流れを示すフローチャートである。
【0142】
まず、ステップ2001において、対応点探索部1704は、基準画像と参照画像を入力する。
【0143】
ステップ2002において、対応点探索部1704は、入力された基準画像に対して特徴点を抽出する。特徴点の抽出方法については、一般的に使用されるエッジ検出フィルタ処理を用いる。本実施形態ではエッジ検出フィルタとしてSobelフィルタを使用する(特徴点の抽出に際しては、その他のエッジ検出フィルタを使用しても構わない。例えば、Robinsonのエッジ検出フィルタを使用しても良い。更には、これらのエッジ検出フィルタを組み合わせた方法により特徴点を抽出しても構わない)。
【0144】
ステップ2003において、対応点探索部1704は、対応点を探索するための注目画素の位置(i,j)を基準画像の中から設定する。
【0145】
ステップ2004において、対応点探索部1704は、設定された注目画素を中心とした所定のブロック(差分値を求めるブロック)および該ブロックの中心位置(ci,cj)を参照画像において設定する。
【0146】
ステップ2005において、対応点探索部1704は、基準画像に設定された中心位置(ci,cj)のブロックが特徴点の対応探索に際して有効なブロックか否かを判断する。有効ブロックの判断方法は、対応点探索部1704がステップ2002で実施される特徴点の数をカウントし、その数が予め規定されている数よりも多い場合には、有効ブロックであると判断される。つまり、ステップ2005では、多くの特徴点をブロック内に有するブロックが、対応点探索部1704により有効ブロックとして判定される。有効ブロックであると判定された場合には、ステップ2006に進む。
【0147】
一方、ステップ2005において、対応点探索部1704が、着目しているブロックが有効ブロックでないと判断した場合には、ステップ2007に進む。
【0148】
ステップ2006において、対応点探索部1704は、特徴点の対応探索を行う範囲を設定する。特徴点の対応探索を行う範囲は演算コストを考慮して任意の大きさに設定すればよいが、注目画素の位置(i,j)をその中に含むことが条件となる。一般的に、視差が大きい場合には特徴点の対応探索を行う範囲を大きく設定することが好ましく、逆に視差が小さい場合には特徴点の対応探索を行う範囲は小さくても足りる。より具体的には、基準画像と参照画像が、図1で示される撮像装置において、隣接する撮像部によって取得された画像である場合には、特徴点の対応探索を行う範囲を小さくすることが好ましい。逆に、基準画像と参照画像が空間的に離れた位置にある撮像部によって取得された画像である場合には、特徴点の対応探索を行う範囲を大きくすることが好ましい。
【0149】
図21は、注目画素の位置(i,j)、参照画像に設定されたブロック、該ブロックの中心位置、および設定された特徴点の対応探索を行う範囲を示す図である。この場合においてブロックは、縦方向に2wi+1画素、横方向に2wj+1画素で確定される大きさであり、wi、wjはそれぞれゼロ以上の整数値である。
【0150】
図20のフローチャートの説明に戻る。ステップ2007において、対応点探索部1704は、基準画像における注目画素の位置(i,j)に対応する点が参照画像には無いと判断する。ここで対応点が無いと判断された画素位置における距離データは、対応点の探索が成功した近傍画素から得られる距離データから補間処理によって求めることになる。距離データの補間処理については後述する。
【0151】
ステップ2008において、対応点探索部1704は、設定されたブロックの範囲の基準画像と参照画像を用いて、差分値の平均値を計算する。式(5)は、ブロックの中心位置(ci,cj)における、差分値の平均値Eave(ci,cj,nn)を求める演算式である。
【0152】
【数5】
【0153】
ここで、I’(i,j,mm)は基準画像における重複領域の画像、I’(i,j,nn)は参照画像における重複領域の画像を表している。mmとnnはそれぞれ、基準画像と参照画像の番号を示す変数ある。
【0154】
ステップ2009において、対応点探索部1704は、設定された特徴点の対応探索の範囲内における全てのブロックについて、差分値の平均値を求める処理が完了したか否かを判定する。すべてのブロックについて差分値の平均値を求める処理が完了していればステップ2011に進む。一方、未処理のブロックがある場合にはステップ2010に進む。
【0155】
ステップ2010において、対応点探索部1704は、ブロックの中心位置(ci,cj)を更新して、まだ差分値の平均値を求めていないブロック位置にブロック位置を変更する。ブロック位置を変更すると、ステップ2008に戻る。
【0156】
ステップ2011において、対応点探索部1704は、差分値の平均値が最小となるブロックの中心位置(ci_min,cj_min)を求め、設定された特徴点の対応探索の範囲内において差分値の平均値が最小となるブロック位置を対応点として選択する。すなわち、基準画像mmの画像位置(i,j)に対応する参照画像nnでの画素位置は(ci_min,cj_min)として選択される。選択たれた対応点の結果は、
Ei(i,j,mm)={nn,ci_min}
Ej(i,j,mm)={nn,cj_min}
で構成される配列に保持する。Ei(i,j,mm)は、基準画像mmの画素位置(i,j)における、参照画像nnの縦方向における対応画素の位置ci_minを表す。同様に、Ej(i,j,mm)は、基準画像mmの画素位置(i,j)における、参照画像nnの横方向における対応画素の位置cj_minを表す。
【0157】
ステップ2012において、対応点探索部1704は、参照画像内の全ての画素について差分値の平均値を求める処理が完了したか否かを判定する。すべての画素について差分値の平均値を求める処理が完了していればステップ2013に進む。一方、未処理の画素がある場合にはステップ2014に進む。
【0158】
ステップ2014において、対応点探索部1704は、注目画素の位置(i,j)を更新して、まだ差分値の平均値を求めていない画素位置に注目画素の位置を変更する。注目画素の位置を変更すると、ステップ2004に戻る。ステップ2013において、対応点探索部1704は、上記のようにして得られた基準画像と参照画像の対応点を出力すると、本処理は終了する。
【0159】
なお、本実施形態における特徴点の対応探索処理では、式5に示されるように、基準画像と参照画像の差分値の平均値に基づいて画像間の対応点を探索したが、その他の値を使用しても構わない。例えば、相関係数など、注目画素近傍における画像間の類似度を知り得る値であれば、対応点の探索時に使用しても構わない。
【0160】
<距離算出部の構成図>
図22は、図18のフローチャートのステップ1804における距離算出処理の流れを示すフローチャートである。
【0161】
まず、ステップ2201において、距離演算部1706は、対応点探索部1704で求められた対応点の結果を入力する。
【0162】
ステップ2202において、距離演算部1706は、パラメータ入力端子1705から供給されるパラメータを取得する。
【0163】
ステップ2203において、距離演算部1706は、距離算出の際の基準となる基準画像mmを1つ選択する。ステップ2203で選択される基準画像は最初に選択される基準画像あり、ここでは、mm=0の画像が選択される。
【0164】
ステップ2204において、距離演算部1706は、基準画像を比較する参照画像nnを1つ選択する。ステップ2204で選択される参照画像は最初に選択される参照画像であり、nnの初期値はnn=mm+1に設定されているので、ここでは、nn=1の画像が選択される。基準画像と参照画像の番号を表す値であるmmとnnの扱い方は、図19で説明した対応点探索処理と同様であるため説明を省略する。
【0165】
ステップ2205において、距離演算部1706は、距離推定を行うための注目画素の位置(i,j)を基準画像の中から設定する。
【0166】
ステップ2206において、距離演算部1706は、注目画素の位置(i,j)において、基準画像と参照画像との間に対応点が有るか否かを判断する。対応画素があると判断された場合にはステップ2207に進む。
【0167】
ステップ2207において、距離演算部1706は、基準画像上での注目画素の位置(i,j)と、対応する参照画像の画素位置の画像上での距離Δx(i,j, mm,nn)を算出する。
【0168】
【数6】
【0169】
ここで、(ci_min,cj_min)は、基準画像mmの画素位置(i,j)に対応する、参照画像nn上での画素位置である。ステップ2208において、距離演算部1706は、画像上での距離Δx(i,j, mm, nn)を使用して、注目位置(i,j)における距離d(i,j,mm, nn)を三角測量法により算出する。距離の算出方法は式(7)に従う。
【0170】
【数7】
【0171】
ここで、ds(mm)は、基準画像mmが取得される撮像部のピント距離である。l(mm,nn)は、基準画像mmが取得される撮像部と参照画像nnが取得される撮像部とのカメラの間隔である。本実施形態では、ピントが異なる位置に設定された複数の撮像部により画像取得を行うため、個眼のピント距離が異なる。したがって、基準画像mmに対応する距離算出の場合には、基準画像が取得された撮像部のピント距離であるds(mm)を使用している。一方、ステップ2206において、距離演算部1706が、基準画像の注目画素について参照画像内に対応画素が無いと判断した場合には、ステップ2009に進む。
【0172】
ステップ2009において、距離演算部1706は、注目画素の近傍にて算出された距離データを使用して、補間処理によって注目画素の位置における距離d(i,j,mm,nn)を算出する。補間処理としては、線形補間やスプライン補間など、一般的に使用される補間処理で対応する。ステップ2210からステップ2213までの処理は、図19の対応点探索処理のフローチャートにおけるステップ1906からステップ1909と同様であるため説明を省略する。ステップ2214において、距離演算部1706は、基準画像上の注目画素(i,j)における距離データの平均値dave(i,j)を求める演算式である。距離データの平均値の算出方法は、式(8)の通りである。
【0173】
【数8】
【0174】
ここで距離データの平均値を求める理由は、距離データの精度を向上させるためである。複数の画像間の視差に基づいて距離算出を行う場合、前方にある被写体の遮蔽によって、ある撮像部で撮像される背景部が、別の撮像部では撮像されないという現象がある。この現象はオクルージョンと呼ばれている。このオクルージョンが発生する画像領域においては、画像間の対応点が得られず、正確な距離算出ができない問題が生じる。この問題を解決するためには、本実施形態で採用するような多眼方式の撮像装置を使用するなどして、撮像部の台数を増やし、オクルージョンが発生する画像領域を減らす必要がある。更には、様々な視点から計測された距離データを加味して、最終的な距離データを生成する手法が効果的である。その効果を得るため、式8に示すように、複数の撮像部から得られる距離データを平均化する。注目画素位置における距離データとしては、平均値以外にも、入力された複数の距離データの中央値などを採用しても構わない。最後に、ステップ2215において、距離演算部1706は、距離データdave(i,j)を出力して、本処理を完了する。
【0175】
本実施形態では、図2に示すように、カラー画像の撮像部を複数有する多眼式の撮像装置によって得られるカラー画像による、距離画像の提供方法について言及した。撮像部101〜109の一部、或いは全部を、モノクロ画像を撮像する多眼式の撮像装置に変更しても差支えない。その場合には、図3のカラーフィルタ308、図4のモノクロ画像変換部402、図5のモノクロ画像への変換処理(ステップ502)を省略した構成となる。
【0176】
以上説明したように、本実施形態によれば、多眼方式の撮像装置で取得された画像群から、精度の高い距離画像を提供することが可能となる。
【0177】
(実施形態2)
実施形態1では、距離算出時に使用される対応点探索の処理は、距離算出に使用される基準画像において特徴点が存在する画素位置に対してのみ参照画像との対応点の探索を行っていた。次に、基準画像から特徴点を得ることなく参照画像との対応点の探索を行う態様について、実施形態2として説明する。なお、実施形態1と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【0178】
図24は、本実施形態に係る対応点処理部1704における処理の流れを示すフローチャートである。ステップ2401から2403までの処理は、実施形態1に係る図19のフローチャートにおけるステップ1901から1903と同様である。ステップ2404において、対応点処理部1704は、画像領域(ii,jj)について、基準画像と参照画像のブロックマッチング処理を実施する。ブロックマッチング処理の詳細については後述する。ステップ2406から2410までの処理は、実施形態1に係る図19のフローチャートにおけるステップ1906から1910と同様である。
【0179】
<ブロックマッチング処理>
図25は、図24のフローチャートのステップ2404におけるブロックマッチング処理の流れを示すフローチャートである。
【0180】
ステップ2501において、対応点探索部1704は、基準画像と参照画像を入力する。ステップ2502において、対応点探索部1704は、入力された基準画像を複数のブロックに領域分割する。ステップ2503において、対応点探索部1704は、分割された複数のブロックの中から注目ブロックを設定する。
【0181】
図26にはブロック分割された基準画像と注目ブロックの位置(bi,bj)を示している。基準画像に対するブロック分割は縦方向にMi分割、横方向にMj分割している。したがって、注目ブロックの位置を示す変数biとbjは、bi=[0,1,・・・,Mi−1]、bj=[0,1,・・・,Mj−1]と変化する変数である。対応点探索部1704は、最初に選択する注目ブロックを、ブロック分割された基準画像のうち左上のブロックを選択するので(bi,bj)=(0,0)となる。
【0182】
図25のフローチャートの説明に戻る。ステップ2504において、対応点探索部1704は、注目ブロックがブロックマッチングを行う範囲を設定する。図21との特徴点の探索範囲を決定する場合と同様に、ブロックマッチングを行う範囲は演算コストを考慮して任意の大きさに設定すればよいが、注目ブロックの位置(bi,bj)をその中に含むことが条件となる。ステップ2505において、対応点探索部1704は、ブロックマッチング処理演算を行う注目画素の位置(ci,cj)を、ブロックマッチングを行う範囲に設定する。ステップ2505において、対応点探索部1704は、設定されたブロックの範囲の基準画像と参照画像を用いて、差分値の平均値を計算する。式(9)は、ブロックの中心位置(bi,bj)における、差分値の平均値Eave(bi,bj,nn)を求める演算式である。
【0183】
【数9】
【0184】
ここで、I’(i,j,mm)は基準画像における重複領域の画像、I’(i,j,nn)は参照画像における重複領域の画像を表している。mmとnnはそれぞれ、基準画像と参照画像の番号を示す変数ある。ステップ2509において、対応点探索部1704は、設定されたマッチング範囲内における全ての画素位置について、差分値の平均値を求める処理が完了したか否かを判定する。すべての画素位置について差分値の平均値を求める処理が完了していればステップ2508に進む。一方、未処理の画素位置がある場合にはステップ2507に進む。
【0185】
ステップ2507において、対応点探索部1704は、参照画像内に設定されたブロックマッチング範囲内において、差分値の平均値の算出が未処理の画素位置に注目画素の位置(a,b)を変更する。注目画素の位置を変更すると、ステップ2505に戻り、ブロックマッチング範囲内における全ての画素について処理が完了するまで、ステップ2505、2506の処理を繰り返し行う。
【0186】
ステップ2508において、対応点探索部1704は、差分値の平均値が最小となる画素位置(ci_min,cj_min)を求め、設定されたブロックマッチングの範囲内において差分値の平均値が最小となるブロック位置を対応点として選択する。つまり、基準画像mmのブロックの位置(bi,bj)に対応する参照画像nnでの画素位置は(ci_min,cj_min)となる。選択たれた対応点の結果は、
Ei(bi,bj,mm)={nn,ci_min}
Ej(bi,bj,mm)={nn,cj_min}
で構成される配列に保持する。Ei(bi,bj,mm)は、基準画像mmのブロック位置(bi,bj)における、参照画像nnにおける縦方向の対応画素の位置ci_minを表す。同様に、Ej(bi,bj,mm)は、基準画像mmの画素位置(i,j)における、参照画像nnにおける横方向の対応画素の位置cj_minを表す。
【0187】
ステップ2509において、対応点探索部1704は、図26で示される全てのブロックについて差分値の平均値を求める処理が完了したか否かを判定する。すべてのブロックについて差分値の平均値を求める処理が完了していればステップ2511に進む。一方、未処理のブロックがある場合にはステップ2510に進む。
【0188】
ステップ2510において、対応点探索部1704は、注目画素の位置(bi,bj)を更新して、まだ差分値の平均値を求めていないブロックに注目ブロックの位置を変更する。注目ブロックの位置を変更すると、ステップ2504に戻り、全てのブロックに対してブロックマッチング処理が完了するまでステップ2504〜2509までの処理を繰り返し行う。ステップ2511において、対応点探索部1704は、上記のようにして得られた基準画像と参照画像の対応点を出力すると、本処理は終了する。本実施形態のブロックマッチング処理では、ブロックマッチングで選択されたブロックの中心座標位置に対応する、参照画像上での探索点の探索は完了した。ブロックの中心座標以外の画素に対する対応点は、対応点がない画素として出力する。対応点がない画素については、実施形態1と同様に、距離演算部1706が、対応点の探索が完了している近傍画素の結果を用いて対応画素を求める。
【0189】
以上説明したように、本実施形態によれば、特徴点を得ることなく対応点の探索処理を行うので、画像処理部212で行う処理を簡略化できる。
【0190】
(実施形態3)
実施形態1乃2では、予めフォーカス位置が規定された複数の撮像部によって取得された撮影画像に基づき、距離画像を生成していた。次に、撮影対象の被写体の距離に応じて各撮像部のフォーカス位置を制御して距離画像を生成する態様について、実施形態3として説明する。なお、実施形態1或いは実施形態2と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【0191】
<撮像部制御部の構成図>
図27は、撮影対象の被写体の距離に応じて各撮像部のフォーカス位置を制御するための撮像部制御部208に関する内部構成を示したブロック図である。
【0192】
2701は距離算出範囲取得部であり、バス204を経由して供給される距離算出範囲を取得する。距離算出範囲は、ユーザの指示によって操作部205から与えられる。2702はパラメータ取得部であり、撮影時における撮像部101〜109の各種パラメータを取得する。2703はフォーカス位置設定部であり、距離算出取得部で得られた距離算出範囲に基づき、各撮像部のフォーカス位置を設定する。2704は被写界深度演算部であり、パラメータ取得部2702から供給される撮像部の各種パラメータとフォーカス位置設定部2703で設定されたフォーカス位置とを使用して、各撮像部の被写界深度を演算する。2705はフォーカス位置制御部であり、フォーカス位置設定部2703で決定された結果に基づいて、各撮像部のフォーカス位置を制御する。
【0193】
本実施形態における画像処理部212の内部構成及び処理の流れは、実施形態1乃至実施形態2と同様であるため説明を省略する。
【0194】
図28は撮像部制御部208における処理の流れを示すフローチャートである。ステップ2801において、パラメータ取得部2702は、撮像部101〜109に関する前述のパラメータを受け取る。
【0195】
ステップ2802において、距離算出範囲取得部2701は、距離算出を実施する距離算出範囲を取得する。本実施形態では、ユーザ指示に基づき1m〜3mの被写体距離を距離算出する範囲として設定する。
【0196】
ステップ2803において、フォーカス位置設定部2703は、フォーカス位置を設定する撮像部を選択する。最初にフォーカス位置を設定する撮像部として撮像部101を選択する。
【0197】
ステップ2804において、フォーカス位置設定部2703は、ステップ2803で選択された撮像部に対して最初の被写体距離を設定する。ここでは、ステップ2802で取得された距離算出範囲において、最も前方の距離、つまり1mを最初の被写体距離として設定する。
【0198】
ステップ2805において、被写界深度演算部2804は、設定された被写体距離における前方の被写界深度と後方の被写界深度を計算する。式10は、前方の被写界深度dfの算出式、式11は、後方の被写界深度dbの算出式を示す。
【0199】
【数10】
【0200】
【数11】
【0201】
ここで、fは撮像部の焦点距離、Fは撮像部のFナンバーである。εは許容錯乱円の直径である。dobjは撮像部から被写体までの距離である。焦点距離とFナンバーは撮像部のパラメータであり、パラメータ取得部2702から供給される値である。説明の都合上、本実施形態では全ての撮像部の焦点距離とFナンバーは一致させる設定とし、f=35mm、F=5.6に設定している。
【0202】
焦点距離とFナンバーは、各撮像部によって異なるパラメータ設定でも構わない。全て異なるパラメータとして設定しても構わないし、一部の撮像部のパラメータは一致するように設定し、その他の撮像部のパラメータは一致させないような設定でも良い。
【0203】
許容錯乱円の直径εは被写界深度の範囲を左右するパラメータのひとつである。比較的大きい値にて許容錯乱円の直径εを設定すると、被写界深度の範囲は拡大するが、画像間の相関による距離推定を用いる本発明の場合には、被写界深度の端部において距離推定の精度が悪化する傾向が強くなる。
【0204】
一方、比較的小さい値にて許容錯乱円の直径εを設定すると、被写界深度の端部における距離推定の精度が悪化は抑制できるが、被写界深度の範囲が狭くなるため、広い範囲での距離算出が難しくなる。本実施形態では、これらのトレードオフを鑑みて、許容錯乱円の直径をε=40umに設定した。許容錯乱円の直径の大きさは固定値でも良いし、外部入力によりユーザが設定できる構成でも構わない。
【0205】
ステップ2804で定めた被写体距離dobj=1mを代入する。これらのパラメータを式(10)、(11)に代入すると、前方の被写界深度dfと後方の被写界深度dbは、df=0.85m、db=1.21mとなる。
【0206】
ステップ2806において、フォーカス位置設定部2703は、次に被写界深度を算出する被写体距離を設定する。ここでは、ステップ2805で算出された後方の被写界深度dbを次の被写体距離に設定する。この場合、1.21mが次の被写体距離dobjに設定される。ステップ2807において、フォーカス位置設定部2703は、設定された被写体距離dobjがステップ2802に定められた距離算出範囲の外側に位置するか否かを判定する。被写体距離dobjが距離算出範囲(1m〜3m)の外側にあると判定された場合には、ステップ2809に進む。
【0207】
ステップ2807で、被写体距離dobjが距離算出範囲の内側にあると判定された場合には、ステップ2808に進む。
【0208】
ステップ2808において、フォーカス位置設定部2703は、次にフォーカス位置を設定する撮像部を選択するため、対象とする撮像部を変更し、ステップ2805に戻る。
【0209】
ステップ2809において、フォーカス位置設定部2703は、全ての撮像部についてフォーカス位置の設定が完了したか否かを判定する。全ての撮像部に対して処理が完了した場合にはステップ2811に進む。未処理の撮像部がある場合にはステップ2810に進む。
【0210】
ステップ2810において、フォーカス位置設定部2703は、撮像部を更新しステップ2804に戻る。全ての撮像部に対してフォーカス位置の設定が完了するまで、ステップ2804から2809までの処理を繰り返し行う。ステップ2811において、フォーカス位置制御部2705が、各撮像部について設定されたフォーカス位置に基づき、各撮像部に対してフォーカス位置を制御すると、本処理は終了する。
【0211】
なお、ステップ2803において、フォーカス位置設定部は、最初にフォーカス位置を設定する撮像部として撮像部101を選択したが、その他の撮像部を選択しても構わない。撮像部109を選択しも良い。また、ステップ2808における撮像部の変更処理においても、撮像部の番号順に従わない変更順序でも構わない。撮像部109を最初にフォーカス位置を設定する撮像部として定めた場合には、撮像部の番号の降順としても良いし、ランダムに変更しても構わない。
【0212】
更に、ステップ2804において、フォーカス位置設定部2703は、最初の被写体距離を、離計測範囲における最も前方の距離として設定したが、最初の被写体距離はこれに限定されない。離計測範囲における最も後方の距離を最初の被写体距離として設定しても良い。その場合、ステップ2806において、前方の被写界深度を次の被写体距離として設定とするように処理を変更する。
【0213】
図29には、図28の処理フローに従って導出された撮像部101〜109のフォーカス位置と前方と後方の被写界深度を示している。撮像部101〜105のフォーカス位置と被写界深度は、距離算出範囲として定めた1m〜3mが包含されていることが分かる。撮像部106〜109は、撮像部101〜105で包含された距離算出範囲をさらに包含するように該撮像部のフォーカス位置を設定している。
【0214】
図30には、図29で示された撮像部101〜109のフォーカス位置と前方と後方の被写界深度に基づき、各撮像部の被写界深度の範囲と、各距離において被写界深度の範囲に入っておりピントが合っている撮像部の台数を示している。
【0215】
図30において、被写体1が含まれる範囲Aは、4台の撮像部の被写界深度が含まれるように、各撮像部のフォーカス位置が設定されている。更に、被写体2が含まれる範囲Bは、3台の撮像部の被写界深度が含まれるように、各撮像部のフォーカス位置が設定されている。
【0216】
一方、実施形態1の図23では、2台の撮像部の被写界深度が範囲A、範囲Bに含まれるように、各フォーカス位置が設定されていた。距離算出範囲を定めることにより、同一の被写体をより多くの撮像部が合焦している画像(被写界深度内に被写体が含まれる画像)として撮影することが可能となる、より精度の高い距離画像を得ることができる。
【0217】
以上説明したように、本実施形態によれば、距離算出範囲に応じて撮像部のフォーカス位置を設定することにより、更に精度の高い距離画像を提供することが可能となる。
【0218】
(実施形態4)
実施形態1から実施形態3では、各撮像部がレンズとセンサを個々に具備する撮像装置であった。次に、撮像装置のセンサが一体化されて1個に集約される態様について、実施形態4として説明する。なお、実施形態1から実施形態3と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【0219】
図31は、撮像装置の内部構成を示す図である。撮像部101〜109は、図3と同様に、レンズ、絞り、シャッター、光学ローパスフィルタ、iRカットフィルタ、カラーフィルタ、センサおよびA/D変換部で構成されるが、センサの構成が異なる。
【0220】
3100は撮像装置のセンサである。3101〜3103は撮像部101〜103のレンズである。センサ3100は、撮像部101〜109で取得される被写体像を1枚のセンサ内で撮像する。センサ3100で撮影された1枚の画像から、各撮像部で撮影された画像領域を対応付け、撮像部101〜109で撮影された画像として抽出する。その後、画像処理部212にて、先に述べた距離算出手法に従って被写体までの距離算出を行う。このような構成にすることで、撮像装置の構成をより簡素化することができる。
【0221】
以上説明したように、本実施形態によれば、小型化された撮像装置により距離画像を提供することが可能となる。
【0222】
(その他の実施形態)
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【特許請求の範囲】
【請求項1】
合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部と、
前記撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部と、
前記合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部と、
を備えたことを特徴とする画像処理装置。
【請求項2】
予め規定された距離算出範囲に基づいての光学系の合焦位置が決定される撮像部制御部を備える多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部と、
前記撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部と、
前記合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部と、
を備えたことを特徴とする画像処理装置。
【請求項3】
前記複数の画像それぞれについて、複数の画像領域に分割する領域分割部をさらに備え、
前記合焦画像選択部は、前記合焦画像となる領域を、前記複数の画像領域から選択する
ことを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記画像選択部は、前記複数の画像に対して定量的な評価を行うことにより、複数の前記合焦画像を選択することを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
【請求項5】
前記距離算出部は、前記複数の画像領域ごとに距離を算出することを特徴とする請求項3または請求項4に記載の画像処理装置。
【請求項6】
前記距離算出部は、前記複数の画像領域について算出された距離を合成する距離合成部を備えることを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記距離算出部は、前記合焦画像選択部で選択された複数の前記合焦画像の間の対応点を求めることによって距離を算出することを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項8】
合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得工程と、
前記撮像装置によって撮像された複数の画像それぞれについて、合焦画像となる領域を選択する合焦画像選択工程と、
前記合焦画像選択工程で選択された複数の合焦画像を使用して距離を算出する距離算出工程と、
を備えたことを特徴とする画像処理方法。
【請求項9】
予め規定された距離算出範囲に基づいての光学系の合焦位置が決定される撮像部制御部を備える多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得工程と、
前記撮像装置によって撮像された複数の画像それぞれについて、合焦画像となる領域を選択する合焦画像選択工程と、
前記合焦画像選択工程で選択された複数の合焦画像を使用して距離を算出する距離算出工程と、
を備えたことを特徴とする画像処理方法。
【請求項10】
コンピュータに請求項8又は9に記載の画像処理方法を実行させるためのプログラム。
【請求項1】
合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部と、
前記撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部と、
前記合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部と、
を備えたことを特徴とする画像処理装置。
【請求項2】
予め規定された距離算出範囲に基づいての光学系の合焦位置が決定される撮像部制御部を備える多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得部と、
前記撮像装置によって撮像された複数の画像それぞれについて合焦画像となる領域を選択する合焦画像選択部と、
前記合焦画像選択部で選択された複数の合焦画像を使用して距離を算出する距離算出部と、
を備えたことを特徴とする画像処理装置。
【請求項3】
前記複数の画像それぞれについて、複数の画像領域に分割する領域分割部をさらに備え、
前記合焦画像選択部は、前記合焦画像となる領域を、前記複数の画像領域から選択する
ことを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記画像選択部は、前記複数の画像に対して定量的な評価を行うことにより、複数の前記合焦画像を選択することを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
【請求項5】
前記距離算出部は、前記複数の画像領域ごとに距離を算出することを特徴とする請求項3または請求項4に記載の画像処理装置。
【請求項6】
前記距離算出部は、前記複数の画像領域について算出された距離を合成する距離合成部を備えることを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記距離算出部は、前記合焦画像選択部で選択された複数の前記合焦画像の間の対応点を求めることによって距離を算出することを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項8】
合焦位置が異なる複数の光学系を有する多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得工程と、
前記撮像装置によって撮像された複数の画像それぞれについて、合焦画像となる領域を選択する合焦画像選択工程と、
前記合焦画像選択工程で選択された複数の合焦画像を使用して距離を算出する距離算出工程と、
を備えたことを特徴とする画像処理方法。
【請求項9】
予め規定された距離算出範囲に基づいての光学系の合焦位置が決定される撮像部制御部を備える多眼方式の撮像装置によって撮像された複数の画像を取得する画像取得工程と、
前記撮像装置によって撮像された複数の画像それぞれについて、合焦画像となる領域を選択する合焦画像選択工程と、
前記合焦画像選択工程で選択された複数の合焦画像を使用して距離を算出する距離算出工程と、
を備えたことを特徴とする画像処理方法。
【請求項10】
コンピュータに請求項8又は9に記載の画像処理方法を実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【公開番号】特開2013−40791(P2013−40791A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−176117(P2011−176117)
【出願日】平成23年8月11日(2011.8.11)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成23年8月11日(2011.8.11)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]