画像処理装置および方法、プログラム
【課題】 撮像画像データ中に鏡面反射光の成分が含まれている場合であっても、被写体までの距離を高精度に推定することを目的とする。
【解決手段】 偏光面が角度が異なる偏光フィルタが装着された複数のカメラにより撮像された複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定し、その結果に基づいて被写体までの距離を推定する。
【解決手段】 偏光面が角度が異なる偏光フィルタが装着された複数のカメラにより撮像された複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定し、その結果に基づいて被写体までの距離を推定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のカメラにより撮像された複数の画像データを処理する画像処理装置および方法、プログラムに関する。
【背景技術】
【0002】
従来、ステレオカメラ、又は複数のカメラを格子上に配置した多眼方式の撮像装置を用いて、対象物体までの距離を推定する距離推定技術がある。この距離推定技術は視差を用いて測定する方法である。この測定ではカメラの位置と、複数枚画像の重なった領域での画像間の対応点探索が必要となる。
しかし、撮像条件の影響により対応点探索の際の誤差が大きくなる。例えば、夜間の撮影画像は可視光情報が少ないため、対応点探索の誤差が大きくなる。夜間の可視光情報が少ない条件に対して対応点探索の誤差を削減するために、複数台カメラの中で可視光カメラと赤外線カメラを分け、2値化された可視画像と赤外画像から車両を認識する手法が提案されている。(特許文献1)
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−255019
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1は異なる波長の画像を合成する手法であって、光の偏光に対する処理は行っていない。従って、ガラス、水面、プラスチックなどの表面で起きる鏡面反射の部分は、異なる波長の画像間では対応点付けができず、距離の推定精度が落ちるという課題がある。
そこで本発明では、撮像画像データ中に鏡面反射光の成分が含まれる場合であっても、被写体までの距離を高精度に推定することを目的とする。
【課題を解決するための手段】
【0005】
上記の目的を達成するために本発明の画像処理装置は、複数のカメラにより撮像された複数の画像データを処理する画像処理装置であって、偏光面の角度が異なる偏光フィルタが装着された前記複数のカメラにより撮像された複数の偏光画像データを取得する偏光画像取得手段と、前記複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定する鏡面反射光推定手段と、前記鏡面反射光推定手段による推定結果に基づいて、被写体までの距離を推定する距離推定手段と、を有することを特徴とする。
【発明の効果】
【0006】
本発明によれば、撮像画像データ中に鏡面反射光の成分が含まれる場合であっても、被写体までの距離を高精度に推定することが可能となる。
【図面の簡単な説明】
【0007】
【図1】多眼方式の撮像装置に偏光フィルタを装着したイメージ図である。
【図2】実施例1のシステム構成図である。
【図3】撮像部101〜109のシステム構成図である。
【図4】実施例1の示すブロック図である。
【図5】実施例1の効果を示す図である。
【図6】実施例1の動作を示すフローチャートである。
【図7】鏡面反射光の奥行き算出部410の動作を示すフローチャートである。
【図8】実施例1の撮像画像のイメージ図である。
【図9】鏡面反射光推定部406の動作を示すフローチャートである。
【図10】実施例1の偏光画像と測距画像のイメージ図である。
【図11】偏光フィルタに対する鏡面反射光の入射・透過光の性質を示す図である。
【図12】測距画像生成部407の動作を示すフローチャートである。
【発明を実施するための形態】
【0008】
[実施例1]
本実施例では、多眼方式の撮像装置に偏光面の角度が異なる偏光フィルタをN個(本実施例ではN=3)配置する。偏光フィルタに対する偏光した光の入射・透過光の性質を用いて、被写体における鏡面反射光の強度と偏光面の角度を高精度に推定することにより、距離推定精度を向上することができる。また、カメラの数が増えると装着できる偏光フィルタの数も増えて、鏡面反射光の強度と偏光面の角度の推定精度が向上する。
【0009】
図1は、多眼方式の撮像装置に偏光フィルタを装着したイメージ図である。図1(a)は複数のカメラにより構成される多眼方式の撮像装置の一例を示している。9個のカメラ101〜109は3行3列の正方格子上に配置されている。すべてのカメラは筺体110の同一平面上に配置され、その光軸はすべて略平行であり、配置された平面に垂直である。本実施例では、複数台のカメラにおいて、測距カメラと撮像カメラを区別して使う。図1(a)は、測距カメラと撮像カメラの配置を一例として示している。本実施例では、図1(a)に示すように測距カメラは距離推定精度を向上するために、偏光フィルタを装着する。図1(a)の測距カメラ中央の斜線は、装着した偏光フィルタの偏光面の角度を表す線である。
【0010】
図1(b)、(c)は被写体を撮影した画像のイメージ図である。図1(b)は偏光フィルタ無しの撮像カメラにより取得した撮像画像のイメージ図を示している。図1(c)は偏光フィルタ有りの測距カメラにより取得した偏光画像のイメージ図を示している。図1(b)の偏光フィルタ無しの場合、撮像画像上に被写体の反射光に対応する領域(鏡面反射領域)がある。一方、図1(c)の偏光フィルタ有りの場合、鏡面反射領域は偏光フィルタにより除去でき、撮像画像上に鏡面反射領域は無い。
【0011】
本実施例のシステム構成を図2を用いて説明する。撮像部101〜109は、被写体からの光情報をセンサで受光しA/D変換を施しデータ転送経路であるバス214にデジタルデータを出力する。フラッシュ201は、被写体に光を照射する。ROM202とRAM203は、撮像や画像処理に必要なプログラム、データ、作業領域などをCPU204に提供する。CPU204はRAM203をワークメモリとして、ROM202やRAM203に格納されたプログラムを実行し、バス214を介して各構成を制御する。これにより、後述する様々な処理が実行される。撮像装置制御部205は、フォーカスを合わせる、シャッターを開く、絞りを調節するなどの、CPU204から指示された撮像系の制御を行う。操作部206は、ボタンやモードダイヤルなどが該当し、これらを介して入力されたユーザ指示を受け取る。CG生成部207は、文字やグラフィックなどを生成する。表示部208は、一般的には液晶ディスプレイが広く用いられており、CG生成部207や後述のデジタル信号処理部209、画像処理部213から受け取った撮影画像データが示す画像や文字の表示を行う。また、タッチスクリーン機能を有していても良く、その場合は、ユーザ指示を操作部206の入力として扱うことも可能である。デジタル信号処理部209は、デジタル値にホワイトバランス処理、ガンマ処理、ノイズ低減処理などを行い、デジタル画像データを生成する。圧縮・伸張部210は、上記デジタル値をJpegやMpegなどのファイルフォーマットに変換する処理を行う。外部メモリ制御部211は、PCその他メディア212(例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリ)につなぐためのインターフェースである。画像処理部213は、撮像部101〜109から得られたデジタル画像データ或いは、デジタル信号処理部から出力されるデジタル画像データ群を利用して新たな画像データを生成し、その結果をバス214へ出力する。
【0012】
図3を用いて、撮像部101〜109の詳細を説明する。撮像部101〜103は、装着フィルタ301(本実施例では偏光フィルタ)を有する一方、撮像部104〜109は偏光フィルタ301を有しない。更に、撮像部101〜109は、レンズ302、絞り303、シャッター304、光学フィルタ305、センサ306などから構成され、被写体の光量を検知する。A/D変換部307は被写体の光量をデジタル値に変換し、バス214にデジタルデータを出力する。
【0013】
なお、装置の構成要素は上記以外にも存在するが、本実施例の主眼ではないので、説明を省略する。
【0014】
図4は、本実施例を適用できる画像処理装置の実施の一形態を示すブロック図である。入力された偏光画像データ群は入力端子401から画像処理部213へ入力される。入力された偏光画像データ群に対応した偏光フィルタ角度情報は入力端子402から入力される。同じく撮像画像データ群は入力端子403から画像処理部213へ入力される。偏光画像データ群と撮像画像データ群のカメラパラメータは入力端子404から画像処理部213へ入力される。
【0015】
偏光画像取得部405は、入力端子401から入力された偏光画像データを取得する。同様に、撮像画像取得部409は、入力端子403から入力された撮像画像データを取得する。取得された撮像画像データは高輝度部の奥行き算出部410に入力され、高輝度部にピントを合わせた時の奥行きを算出する。算出した高輝度部の奥行きと偏光画像取得部405で取得した偏光画像データは、鏡面反射光推定部406に入力され、鏡面反射光強度と偏光面の角度を推定する。推定した鏡面反射光強度と偏光面の角度は、測距画像生成部407に入力され、鏡面反射光を除去した画像データを測距画像データとして生成する。距離推定部408は、測距画像生成部407で生成された測距画像データから距離推定を行う。その結果は画像合成部411に入力され、撮像画像取得部409で取得された撮像画像データと合成され、精度の高い3次元画像データ(合成画像データ)を生成する。画像合成部411で合成された合成画像データは出力端子412から出力される。
【0016】
本実施例を適用すると、図5に示すように、偏光画像データが示す偏光画像(図5(a))上にある異なる偏光面の角度を持つ鏡面反射光を除去又は低減した測距画像データが示す測距画像(図5(b))を得ることができる。この鏡面反射光の影響を除去又は低減した測距画像データによれば非常に精度の高い距離推定を実現することができる。高輝度部の奥行き算出部410においても高輝度部の奥行きを推定することができる。しかしながら、鏡面反射光による影響が残った撮像画像データに基づく距離推定であることから、高輝度部の奥行き算出部410による距離推定は距離推定部408による距離推定ほどの推定精度はない。尚、本実施例では鏡面反射光強度と偏光面の角度を推定しているので、画像上の鏡面反射光を任意の重み付けで付加・除去加工することができる。
【0017】
〔画像処理部213の動作〕
図6は、本実施例の画像処理方法を示すフローチャートである。詳細には、図6のフローチャートに示す手順を記述したコンピュータで実行可能なプログラムをROM202からRAM203上に読み込んだ後に、CPU204によって該プログラムを実行することによって当該処理が実施される。
【0018】
以下、図6に示す各処理について説明する。撮像画像取得部409は、撮像画像データをROM202またはRAM203等の記憶領域に入力する(S601)。偏光画像取得部405は、偏光画像データを記憶領域に入力する(S602)。ステップS603では、ステップS601、S602で入力された撮像画像と偏光画像を撮像する際のカメラパラメータを記憶領域に入力する。カメラパラメータは各カメラの焦点距離や光軸ずれを表す内部パラメータと、各カメラの3次元座標を表す外部パラメータ(各カメラの配置と向き情報を含むパラメータ)等から成る。高輝度部の奥行き算出部410は、ステップS601で入力された撮像画像データが示す撮像画像上にある高輝度部にピントを合わせた時の奥行きデータを算出する(S604)。奥行きデータとは、高輝度部に対応する被写体の実空間上での位置とカメラとの距離である。高輝度部の奥行きデータの算出方法の詳細は図7を用いて後述する。算出した高輝度部の奥行きデータは、高輝度部の画素領域と対応付けて記憶領域に記憶させる。鏡面反射光推定部406は、ステップS604で算出された高輝度部の奥行きデータが記憶領域に有るかどうかを調べることにより、撮像画像上に高輝度部が有るかどうかを判定する(S605)。高輝度部の奥行きデータが有る場合は、高輝度部が有ると判定し、ステップS606へ移行する。高輝度部の奥行きデータが無い場合は、高輝度部が無いと判定し、ステップS609へ移行する。また、鏡面反射光推定部406は、ステップS602で入力された偏光画像データに対応する偏光フィルタ装着角度を記憶領域に入力する(S606)。ステップS602で入力された偏光画像データから、鏡面反射光強度と偏光面の角度を推定する(S607)。鏡面反射光の推定には、ステップS604で算出された高輝度部の奥行きデータと、ステップS606で入力した偏光フィルタ角度を用いる。鏡面反射光の推定方法の詳細は図9を用いて後述する。推定結果は記憶領域に記憶させる。測距画像生成部407は、ステップS602で入力された偏光画像データから鏡面反射光による影響を除去・低減した測距画像データを生成する(S608)。測距画像生成方法の詳細は図12を用いて後述する。生成した測距画像データは記憶領域に記憶させる。距離推定部408は、ステップS608で生成された測距画像データを用いて距離を推定する(S609)。ステップS605で高輝度部が無かった場合は、ステップS602で入力した偏光画像データを用いて距離を推定する。距離推定結果は記憶領域に記憶させる。画像合成部411は、ステップS601で入力した撮像画像データと、ステップS609で推定した距離推定結果を用いて画像合成処理を行い、処理を終了する(S610)。
【0019】
〔高輝度部の奥行き算出部410の動作〕
以下では、ステップS604の高輝度部の鏡面反射光の奥行き算出の詳細について、図7のフローチャートを用いて説明する。ここでは撮像カメラがM台(本実施例ではM=6)あるとし、各撮像カメラ104〜109で撮影した撮像画像は撮像画像1,撮像画像2,・・・,撮像画像Mと番号が付いているものとする。
【0020】
ステップS701では、撮像画像の番号iに対して、i=1に初期化する。ステップS702では、ステップS601で入力した撮像画像iのRGB値をYCbCrに変換する。変換した画像データは記憶領域に記憶させる。ステップS703では、ステップS702で変換した撮像画像iにおいて、Y値がY>Ythを満たす画素が有るかどうかを判定する。本実施例では、例えばYth=150とする。Y>Ythを満たす画素が有る場合は、ステップS704へ移行する。Y>Ythを満たす画素が無い場合は、高輝度部が無いと判定して、ステップS707へ移行する。ステップS704では撮像画像iにおいて、S>Sthを満たす領域が有るかどうかを判定する。SはステップS703で、Y>Ythを満たすと判定した画素が集まっている領域内の画素数である。即ち、Sは、Y>Ythを満たす画素が互いに縦横斜め何れかで隣接している画素からなる画素領域である。本実施例では、例えばSth=10[pixel]とする。S>Sthを満たす画素領域が有る場合は、高輝度部が有ると判定して、ステップS705へ移行する。S>Sthを満たす領域が無い場合は、高輝度部が無いと判定して、ステップS707へ移行する。このステップS704の処理により撮像画像i上の画素ノイズを除去することができる。ステップS705では、ステップS704で高輝度部と判定した各画素領域に対して、図8(a)に示すように、高輝度部Ri1,Ri2,・・・と番号を割り振る。ステップS706では、ステップS705で番号を割り振った高輝度部Ri1,Ri2,・・・と画素領域を対応付けて記憶領域に記憶させる。ステップS707では、撮像画像の番号iに対して、i=i+1に更新する。ステップS708では、撮像画像の番号iがi≧Mを満たすかどうかを判定する。i≧Mを満たす場合は、M枚全ての撮像画像について処理を終了したと判定し、ステップS709へ移行する。i≧Mを満たさない場合は、ステップS702へ移行する。ステップS709では、ステップS706で記憶した各撮像画像iの高輝度部Ri1,Ri2,・・・の画素領域に対して、テンプレートマッチングを用いて位置合わせを行う。位置合わせができた各撮像画像間の画素ズレ量は、高輝度部の番号と対応付けて記憶領域に記憶させる。ステップS710では、ステップS709で複数の撮像画像間で位置合わせできた高輝度部Ri1,Ri2,・・・に対して、図8(b)に示すようにR´1,R´2,・・・R´L(本実施例ではL=2)と再度番号を割り振る。ステップS711では、ステップS710で番号を割り振った高輝度部R´1,R´2,・・・R´Lと画素領域、及びステップS709で記憶した画素ズレ量を対応付けて記憶領域に記憶させる。また、位置合わせできた高輝度部の数Lも記憶領域に記憶させる。ステップS712では、ステップS711で記憶した高輝度部R´1,R´2,・・・R´Lに対応する画素ズレ量と、ステップS603で入力したカメラパラメータから、各高輝度部にピントを合わせた時の奥行きデータを算出する。算出した奥行きは、高輝度部の奥行きとして、高輝度部R´1,R´2,・・・R´Lと対応付けて記憶領域に記憶し、高輝度部の奥行き算出処理を終了する。
【0021】
尚、本実施例では複数の撮像画像上に写り、距離推定に大きく影響する鏡面反射光を除去・低減する手法について取り扱っている。撮像画像データ群の内、ある1枚の画像に写る鏡面反射光については、例えば鏡面反射光が写らなかった撮像画像の画素値を用いて、鏡面反射光を除去すれば良い。
【0022】
〔鏡面反射光推定部406の動作〕
以下では、ステップS607の鏡面反射光推定処理の詳細について、図9のフローチャートを用いて説明する。ここでは測距カメラがN台(本実施例ではN=3)あるとし、各測距カメラ101〜103で撮影した偏光画像は偏光画像1,偏光画像2,・・・,偏光画像Nと番号が付いているものとする。図10(a)に示すように、各偏光画像は高輝度部R´1,R´2,・・・R´Lが画像上に写っている。但し、図8(b)の撮像画像と比較して、偏光フィルタの角度により高輝度部の輝度が変化している点が異なる。
【0023】
ステップS901では、高輝度部R´jの番号jに対して、j=1に初期化する。ステップS902では、ステップS712で算出した高輝度部の奥行きと、ステップS603で入力したカメラパラメータから、偏光画像1,偏光画像2,・・・,偏光画像Nの画素ズレ量を算出する。算出した画素ズレ量は、各偏光画像と対応付けて記憶領域に記憶させる。ステップS903では、ステップS711で記憶した高輝度部R´jに対応する画素領域と、ステップS902で算出した画素ズレ量から、偏光画像1,偏光画像2,・・・,偏光画像N上における高輝度部R´jの画素領域を算出する。算出した偏光画像上における高輝度部R´jの画素素領域は、各偏光画像と対応付けて記憶領域に記憶させる。ステップS904では、ステップS602で入力した偏光画像と、ステップS902で算出した画素ズレ量から、偏光画像1,偏光画像2,・・・,偏光画像Nの位置合わせを行う。位置合わせした偏光画像は、図10(b)に示すように、高輝度部R´j(図10(b)ではj=2)にピントが合っており、他の高輝度部はボケた画像となる。位置合わせができるかどうかは、ステップS903で算出した各偏光画像に対する高輝度部R´jの画素領域が、偏光画像の画像内に収まるかどうかを調べれば良い。位置合わせできた偏光画像は、高輝度部R´jと対応付けて記憶領域に記憶させる。ステップS905では、高輝度部R´jに対して、ステップS904で位置合わせができた偏光画像の枚数kjをカウントする。カウント数kjは、高輝度部R´jと対応付けて記憶領域に記憶させる。ステップS906では、ステップS905でカウントしたkjが、kj≧3を満たすかどうかを判定する。kj≧3を満たす場合は、ステップS907へ移行する。kj≧3を満たさない場合は、高輝度部R´jの鏡面反射光を推定できないと判定し、ステップS908へ移行する。ステップS907では、ステップS904で記憶した偏光画像から、高輝度部R´j内の各画素について鏡面反射光強度と偏光面の角度を推定する。推定した鏡面反射光の強度と偏光面の角度は、高輝度部R´j内の各画素位置と対応付けて記憶領域に記憶させる。鏡面反射光の推定方法の詳細は後述する。ステップS908では、高輝度部R´jの番号jに対して、j=j+1に更新する。ステップS909では、高輝度部R´jの番号jがj≧Lを満たすかどうかを判定する。i≧Lを満たす場合は、L個全ての高輝度部について処理を実行したと判定し、鏡面反射光推定処理を終了する。j≧Lを満たさない場合は、ステップS902へ移行する。
【0024】
以下、ステップS907の鏡面反射光推定方法の詳細について説明する。鏡面反射光の推定には、図11に示す偏光フィルタに対する鏡面反射光の入射・透過光の性質を用いる。一般的に鏡面反射光は、反射面に平行な角度に偏光した光(s偏光)を多く含む。従って、カメラに偏光フィルタを装着すると、装着方向によりカメラに写る鏡面反射光の強度が変化する(図11(a))。偏光フィルタに入射する鏡面反射光の偏光面と、偏光フィルタの偏光面との間をなす角をθとすると、偏光フィルタを透過する鏡面反射光の電場の振幅は入射光の電場の余弦成分となる(図11(b))。偏光フィルタに入射する鏡面反射光の入射光強度をI0、偏光フィルタを透過してカメラに到達する鏡面反射光の透過光強度をI1とすると、以下の式(1)が成り立つ。
【0025】
【数1】
【0026】
式(1)の関係を用いることで、高輝度部R´jの鏡面反射光強度と偏光面の角度を高精度に推定することができる。
【0027】
以下、図10(b)を用いて、kj≧3を満たしている高輝度部R´j(図10(b)ではj=2)内の点Pを例に、鏡面反射光の推定方法を説明する。ステップS904で記憶した偏光画像0、偏光画像1、・・・偏光画像N上の点PのRGB値をそれぞれ(r0,g0,b0),(r1,g1,b1),・・・(rN,gN,bN)と表す。また、各偏光画像の水平方向に対する偏光フィルタ角度を、それぞれ0°,α,・・・Nαとする。本実施例では、α=10°とする。点Pでの鏡面反射光のRGB値を(rA,gA,bA)、鏡面反射光以外の主に物体色を表すRGB値を(rC,gC,bC)とする。更に、鏡面反射光の偏光面と偏光画像0に対応する偏光フィルタとの間をなす角をθとするとR値について以下の式(2)が求まる。
【0028】
【数2】
【0029】
式(2)から未知数はrA,rC,θの3つなので、kj≧3を満たす高輝度部R´j上の点Pにおいて、鏡面反射光強度rAと偏光面の角度θを最小二乗法を用いて推定することができる。G値、B値についても以下の式(3)、式(4)が得られる。同様にしてG値、B値の鏡面反射光強度gA,bAと偏光面の角度θを推定することができる。
【0030】
【数3】
【0031】
【数4】
【0032】
推定した鏡面反射光の強度のRGB値(rA,gA,bA)と、偏光面の角度θは、高輝度部R´j内の点Pと対応付けて記憶領域に記憶させる。以上、式(2)〜式(4)の計算を高輝度部R´j内の画素領域全てに対して実施することで、高輝度部R´j内の鏡面反射光を画素単位で推定することができる。尚、鏡面反射光の推定精度を向上する為に、高輝度部R´jが鏡面反射光又は光源の光かどうかを判定する処理を設けても良い。具体的には、推定した鏡面反射光と物体色のRGB値をYCbCr値に変換し、それぞれのY値を比較することで判定する。鏡面反射光のY値が物体色のY値に比べて十分小さい場合、高輝度部R´jは、光源の光であると判定し、鏡面反射光のRGB値を(0,0,0)とすれば良い。
【0033】
〔測距画像生成部407の動作〕
以下では、ステップS608の測距画像の生成処理の詳細について、図12のフローチャートを用いて説明する。
【0034】
ステップS1201では、高輝度部R´jの番号jに対して、j=1に初期化する。ステップS1202では、ステップS905でカウントしたkjが、kj≧3を満たすかどうかを判定する。kj≧3を満たす場合は、ステップS1203へ移行する。kj≧3を満たさない場合は、高輝度部R´jの測距画像を生成できないと判定し、ステップS1205へ移行する。ステップS1203では、ステップS907で推定した、高輝度部R´j内の各画素位置に対応した鏡面面反射光強度のRGB値(rA,gA,bA)と、偏光面の角度θを記憶領域に入力する。ステップS1204では、ステップS1203で入力した鏡面反射光強度と偏光面の角度から、ステップS904で記憶した各偏光画像が示す画像中の被写体の鏡面反射光に対応する高輝度部R´jから、鏡面反射光による影響を差し引く。高輝度部R´j内の鏡面反射成分を差し引いた偏光画像1,偏光画像2,・・・,偏光画像Nは、記憶領域にて上書き記憶させる。ステップS1205では、高輝度部R´jの番号jに対して、j=j+1に更新する。ステップS1206では、高輝度部R´jの番号jがj≧Lを満たすかどうかを判定する。i≧Lを満たす場合は、L個全ての高輝度部について差分処理が終了したと判定し、ステップS1207へ移行する。j≧Lを満たさない場合は、ステップS1202へ移行する。ステップS1207では、ステップS1204で上書き記憶した偏光画像1,偏光画像2,・・・,偏光画像Nを、測距画像1,測距画像2,・・・,測距画像Nとして記憶領域に記憶し、測距画像生成処理を終了する。生成した測距画像は、図10(c)に示すように、偏光画像1,偏光画像2,・・・,偏光画像Nからkj≧3を満たす高輝度部R´1,R´2,・・・R´L(本実施例ではN=3,L=2)を除去した画像となる。
【0035】
以上説明した偏光フィルタによる鏡面反射光推定処理を行うことで、多眼方式の撮像装置における距離推定精度を向上することができる。
【0036】
本実施例では、偏光フィルタ角度を0°,10°,20°としたが、等間隔にする必要は無く、3つ以上異なる角度が存在する限りにおいて、任意の値をとって良い。例えば偏光画像に写る鏡面反射光の画素値が飽和しないように、偏光フィルタ角度として0°,10°,20°と、それに直交する90°,100°,110°の計6つ設けても良い。
【0037】
また、本実施例では、式(2)〜式(4)で求まるθは理論的に等しいので、θの値が等しくなるように繰り返し演算することで、鏡面反射光を高精度に推定しても良い。
【0038】
更に、奥行きの変化が大きい鏡面反射光を推定する為に、高輝度部R´jを奥行き毎に分割し、鏡面反射光の推定処理をしても良い。例えば、撮像画像でピントを合わせる奥行きをΔz[mm]ずつ走査する。各奥行きに対してピントが合った高輝度領域を、高輝度部R´jとして抽出し、鏡面反射光を推定すれば良い。
【0039】
以上の通り、本実施例によれば、撮像画像データ中に鏡面反射光の成分が含まれる場合であっても、被写体までの距離を高精度に推定することが可能となる。
【0040】
<変形例>
・本実施例では、各処理が図2に示されるような撮像装置により実施されるとしたが、これに限らない。例えば、偏光画像データ及び撮像画像データの撮像は多眼方式の撮像装置によってなされるものの、画像処理部213の各処理は情報処理装置(例えば、パーソナルコンピュータ)により実現されても良い。
・本実施例では、画像合成部411は、撮像画像データと距離推定結果とを用いて画像合成処理を行うとした。しかし、画像合成を行うにあたり、撮像画像データに加えて偏光画像データを用いても良い。
・本実施例では、測距画像推定の際に偏光画像データのみを用いるとした。しかしながら、撮像画像データを用いて、測距画像推定を行っても良い。
【技術分野】
【0001】
本発明は、複数のカメラにより撮像された複数の画像データを処理する画像処理装置および方法、プログラムに関する。
【背景技術】
【0002】
従来、ステレオカメラ、又は複数のカメラを格子上に配置した多眼方式の撮像装置を用いて、対象物体までの距離を推定する距離推定技術がある。この距離推定技術は視差を用いて測定する方法である。この測定ではカメラの位置と、複数枚画像の重なった領域での画像間の対応点探索が必要となる。
しかし、撮像条件の影響により対応点探索の際の誤差が大きくなる。例えば、夜間の撮影画像は可視光情報が少ないため、対応点探索の誤差が大きくなる。夜間の可視光情報が少ない条件に対して対応点探索の誤差を削減するために、複数台カメラの中で可視光カメラと赤外線カメラを分け、2値化された可視画像と赤外画像から車両を認識する手法が提案されている。(特許文献1)
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−255019
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1は異なる波長の画像を合成する手法であって、光の偏光に対する処理は行っていない。従って、ガラス、水面、プラスチックなどの表面で起きる鏡面反射の部分は、異なる波長の画像間では対応点付けができず、距離の推定精度が落ちるという課題がある。
そこで本発明では、撮像画像データ中に鏡面反射光の成分が含まれる場合であっても、被写体までの距離を高精度に推定することを目的とする。
【課題を解決するための手段】
【0005】
上記の目的を達成するために本発明の画像処理装置は、複数のカメラにより撮像された複数の画像データを処理する画像処理装置であって、偏光面の角度が異なる偏光フィルタが装着された前記複数のカメラにより撮像された複数の偏光画像データを取得する偏光画像取得手段と、前記複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定する鏡面反射光推定手段と、前記鏡面反射光推定手段による推定結果に基づいて、被写体までの距離を推定する距離推定手段と、を有することを特徴とする。
【発明の効果】
【0006】
本発明によれば、撮像画像データ中に鏡面反射光の成分が含まれる場合であっても、被写体までの距離を高精度に推定することが可能となる。
【図面の簡単な説明】
【0007】
【図1】多眼方式の撮像装置に偏光フィルタを装着したイメージ図である。
【図2】実施例1のシステム構成図である。
【図3】撮像部101〜109のシステム構成図である。
【図4】実施例1の示すブロック図である。
【図5】実施例1の効果を示す図である。
【図6】実施例1の動作を示すフローチャートである。
【図7】鏡面反射光の奥行き算出部410の動作を示すフローチャートである。
【図8】実施例1の撮像画像のイメージ図である。
【図9】鏡面反射光推定部406の動作を示すフローチャートである。
【図10】実施例1の偏光画像と測距画像のイメージ図である。
【図11】偏光フィルタに対する鏡面反射光の入射・透過光の性質を示す図である。
【図12】測距画像生成部407の動作を示すフローチャートである。
【発明を実施するための形態】
【0008】
[実施例1]
本実施例では、多眼方式の撮像装置に偏光面の角度が異なる偏光フィルタをN個(本実施例ではN=3)配置する。偏光フィルタに対する偏光した光の入射・透過光の性質を用いて、被写体における鏡面反射光の強度と偏光面の角度を高精度に推定することにより、距離推定精度を向上することができる。また、カメラの数が増えると装着できる偏光フィルタの数も増えて、鏡面反射光の強度と偏光面の角度の推定精度が向上する。
【0009】
図1は、多眼方式の撮像装置に偏光フィルタを装着したイメージ図である。図1(a)は複数のカメラにより構成される多眼方式の撮像装置の一例を示している。9個のカメラ101〜109は3行3列の正方格子上に配置されている。すべてのカメラは筺体110の同一平面上に配置され、その光軸はすべて略平行であり、配置された平面に垂直である。本実施例では、複数台のカメラにおいて、測距カメラと撮像カメラを区別して使う。図1(a)は、測距カメラと撮像カメラの配置を一例として示している。本実施例では、図1(a)に示すように測距カメラは距離推定精度を向上するために、偏光フィルタを装着する。図1(a)の測距カメラ中央の斜線は、装着した偏光フィルタの偏光面の角度を表す線である。
【0010】
図1(b)、(c)は被写体を撮影した画像のイメージ図である。図1(b)は偏光フィルタ無しの撮像カメラにより取得した撮像画像のイメージ図を示している。図1(c)は偏光フィルタ有りの測距カメラにより取得した偏光画像のイメージ図を示している。図1(b)の偏光フィルタ無しの場合、撮像画像上に被写体の反射光に対応する領域(鏡面反射領域)がある。一方、図1(c)の偏光フィルタ有りの場合、鏡面反射領域は偏光フィルタにより除去でき、撮像画像上に鏡面反射領域は無い。
【0011】
本実施例のシステム構成を図2を用いて説明する。撮像部101〜109は、被写体からの光情報をセンサで受光しA/D変換を施しデータ転送経路であるバス214にデジタルデータを出力する。フラッシュ201は、被写体に光を照射する。ROM202とRAM203は、撮像や画像処理に必要なプログラム、データ、作業領域などをCPU204に提供する。CPU204はRAM203をワークメモリとして、ROM202やRAM203に格納されたプログラムを実行し、バス214を介して各構成を制御する。これにより、後述する様々な処理が実行される。撮像装置制御部205は、フォーカスを合わせる、シャッターを開く、絞りを調節するなどの、CPU204から指示された撮像系の制御を行う。操作部206は、ボタンやモードダイヤルなどが該当し、これらを介して入力されたユーザ指示を受け取る。CG生成部207は、文字やグラフィックなどを生成する。表示部208は、一般的には液晶ディスプレイが広く用いられており、CG生成部207や後述のデジタル信号処理部209、画像処理部213から受け取った撮影画像データが示す画像や文字の表示を行う。また、タッチスクリーン機能を有していても良く、その場合は、ユーザ指示を操作部206の入力として扱うことも可能である。デジタル信号処理部209は、デジタル値にホワイトバランス処理、ガンマ処理、ノイズ低減処理などを行い、デジタル画像データを生成する。圧縮・伸張部210は、上記デジタル値をJpegやMpegなどのファイルフォーマットに変換する処理を行う。外部メモリ制御部211は、PCその他メディア212(例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリ)につなぐためのインターフェースである。画像処理部213は、撮像部101〜109から得られたデジタル画像データ或いは、デジタル信号処理部から出力されるデジタル画像データ群を利用して新たな画像データを生成し、その結果をバス214へ出力する。
【0012】
図3を用いて、撮像部101〜109の詳細を説明する。撮像部101〜103は、装着フィルタ301(本実施例では偏光フィルタ)を有する一方、撮像部104〜109は偏光フィルタ301を有しない。更に、撮像部101〜109は、レンズ302、絞り303、シャッター304、光学フィルタ305、センサ306などから構成され、被写体の光量を検知する。A/D変換部307は被写体の光量をデジタル値に変換し、バス214にデジタルデータを出力する。
【0013】
なお、装置の構成要素は上記以外にも存在するが、本実施例の主眼ではないので、説明を省略する。
【0014】
図4は、本実施例を適用できる画像処理装置の実施の一形態を示すブロック図である。入力された偏光画像データ群は入力端子401から画像処理部213へ入力される。入力された偏光画像データ群に対応した偏光フィルタ角度情報は入力端子402から入力される。同じく撮像画像データ群は入力端子403から画像処理部213へ入力される。偏光画像データ群と撮像画像データ群のカメラパラメータは入力端子404から画像処理部213へ入力される。
【0015】
偏光画像取得部405は、入力端子401から入力された偏光画像データを取得する。同様に、撮像画像取得部409は、入力端子403から入力された撮像画像データを取得する。取得された撮像画像データは高輝度部の奥行き算出部410に入力され、高輝度部にピントを合わせた時の奥行きを算出する。算出した高輝度部の奥行きと偏光画像取得部405で取得した偏光画像データは、鏡面反射光推定部406に入力され、鏡面反射光強度と偏光面の角度を推定する。推定した鏡面反射光強度と偏光面の角度は、測距画像生成部407に入力され、鏡面反射光を除去した画像データを測距画像データとして生成する。距離推定部408は、測距画像生成部407で生成された測距画像データから距離推定を行う。その結果は画像合成部411に入力され、撮像画像取得部409で取得された撮像画像データと合成され、精度の高い3次元画像データ(合成画像データ)を生成する。画像合成部411で合成された合成画像データは出力端子412から出力される。
【0016】
本実施例を適用すると、図5に示すように、偏光画像データが示す偏光画像(図5(a))上にある異なる偏光面の角度を持つ鏡面反射光を除去又は低減した測距画像データが示す測距画像(図5(b))を得ることができる。この鏡面反射光の影響を除去又は低減した測距画像データによれば非常に精度の高い距離推定を実現することができる。高輝度部の奥行き算出部410においても高輝度部の奥行きを推定することができる。しかしながら、鏡面反射光による影響が残った撮像画像データに基づく距離推定であることから、高輝度部の奥行き算出部410による距離推定は距離推定部408による距離推定ほどの推定精度はない。尚、本実施例では鏡面反射光強度と偏光面の角度を推定しているので、画像上の鏡面反射光を任意の重み付けで付加・除去加工することができる。
【0017】
〔画像処理部213の動作〕
図6は、本実施例の画像処理方法を示すフローチャートである。詳細には、図6のフローチャートに示す手順を記述したコンピュータで実行可能なプログラムをROM202からRAM203上に読み込んだ後に、CPU204によって該プログラムを実行することによって当該処理が実施される。
【0018】
以下、図6に示す各処理について説明する。撮像画像取得部409は、撮像画像データをROM202またはRAM203等の記憶領域に入力する(S601)。偏光画像取得部405は、偏光画像データを記憶領域に入力する(S602)。ステップS603では、ステップS601、S602で入力された撮像画像と偏光画像を撮像する際のカメラパラメータを記憶領域に入力する。カメラパラメータは各カメラの焦点距離や光軸ずれを表す内部パラメータと、各カメラの3次元座標を表す外部パラメータ(各カメラの配置と向き情報を含むパラメータ)等から成る。高輝度部の奥行き算出部410は、ステップS601で入力された撮像画像データが示す撮像画像上にある高輝度部にピントを合わせた時の奥行きデータを算出する(S604)。奥行きデータとは、高輝度部に対応する被写体の実空間上での位置とカメラとの距離である。高輝度部の奥行きデータの算出方法の詳細は図7を用いて後述する。算出した高輝度部の奥行きデータは、高輝度部の画素領域と対応付けて記憶領域に記憶させる。鏡面反射光推定部406は、ステップS604で算出された高輝度部の奥行きデータが記憶領域に有るかどうかを調べることにより、撮像画像上に高輝度部が有るかどうかを判定する(S605)。高輝度部の奥行きデータが有る場合は、高輝度部が有ると判定し、ステップS606へ移行する。高輝度部の奥行きデータが無い場合は、高輝度部が無いと判定し、ステップS609へ移行する。また、鏡面反射光推定部406は、ステップS602で入力された偏光画像データに対応する偏光フィルタ装着角度を記憶領域に入力する(S606)。ステップS602で入力された偏光画像データから、鏡面反射光強度と偏光面の角度を推定する(S607)。鏡面反射光の推定には、ステップS604で算出された高輝度部の奥行きデータと、ステップS606で入力した偏光フィルタ角度を用いる。鏡面反射光の推定方法の詳細は図9を用いて後述する。推定結果は記憶領域に記憶させる。測距画像生成部407は、ステップS602で入力された偏光画像データから鏡面反射光による影響を除去・低減した測距画像データを生成する(S608)。測距画像生成方法の詳細は図12を用いて後述する。生成した測距画像データは記憶領域に記憶させる。距離推定部408は、ステップS608で生成された測距画像データを用いて距離を推定する(S609)。ステップS605で高輝度部が無かった場合は、ステップS602で入力した偏光画像データを用いて距離を推定する。距離推定結果は記憶領域に記憶させる。画像合成部411は、ステップS601で入力した撮像画像データと、ステップS609で推定した距離推定結果を用いて画像合成処理を行い、処理を終了する(S610)。
【0019】
〔高輝度部の奥行き算出部410の動作〕
以下では、ステップS604の高輝度部の鏡面反射光の奥行き算出の詳細について、図7のフローチャートを用いて説明する。ここでは撮像カメラがM台(本実施例ではM=6)あるとし、各撮像カメラ104〜109で撮影した撮像画像は撮像画像1,撮像画像2,・・・,撮像画像Mと番号が付いているものとする。
【0020】
ステップS701では、撮像画像の番号iに対して、i=1に初期化する。ステップS702では、ステップS601で入力した撮像画像iのRGB値をYCbCrに変換する。変換した画像データは記憶領域に記憶させる。ステップS703では、ステップS702で変換した撮像画像iにおいて、Y値がY>Ythを満たす画素が有るかどうかを判定する。本実施例では、例えばYth=150とする。Y>Ythを満たす画素が有る場合は、ステップS704へ移行する。Y>Ythを満たす画素が無い場合は、高輝度部が無いと判定して、ステップS707へ移行する。ステップS704では撮像画像iにおいて、S>Sthを満たす領域が有るかどうかを判定する。SはステップS703で、Y>Ythを満たすと判定した画素が集まっている領域内の画素数である。即ち、Sは、Y>Ythを満たす画素が互いに縦横斜め何れかで隣接している画素からなる画素領域である。本実施例では、例えばSth=10[pixel]とする。S>Sthを満たす画素領域が有る場合は、高輝度部が有ると判定して、ステップS705へ移行する。S>Sthを満たす領域が無い場合は、高輝度部が無いと判定して、ステップS707へ移行する。このステップS704の処理により撮像画像i上の画素ノイズを除去することができる。ステップS705では、ステップS704で高輝度部と判定した各画素領域に対して、図8(a)に示すように、高輝度部Ri1,Ri2,・・・と番号を割り振る。ステップS706では、ステップS705で番号を割り振った高輝度部Ri1,Ri2,・・・と画素領域を対応付けて記憶領域に記憶させる。ステップS707では、撮像画像の番号iに対して、i=i+1に更新する。ステップS708では、撮像画像の番号iがi≧Mを満たすかどうかを判定する。i≧Mを満たす場合は、M枚全ての撮像画像について処理を終了したと判定し、ステップS709へ移行する。i≧Mを満たさない場合は、ステップS702へ移行する。ステップS709では、ステップS706で記憶した各撮像画像iの高輝度部Ri1,Ri2,・・・の画素領域に対して、テンプレートマッチングを用いて位置合わせを行う。位置合わせができた各撮像画像間の画素ズレ量は、高輝度部の番号と対応付けて記憶領域に記憶させる。ステップS710では、ステップS709で複数の撮像画像間で位置合わせできた高輝度部Ri1,Ri2,・・・に対して、図8(b)に示すようにR´1,R´2,・・・R´L(本実施例ではL=2)と再度番号を割り振る。ステップS711では、ステップS710で番号を割り振った高輝度部R´1,R´2,・・・R´Lと画素領域、及びステップS709で記憶した画素ズレ量を対応付けて記憶領域に記憶させる。また、位置合わせできた高輝度部の数Lも記憶領域に記憶させる。ステップS712では、ステップS711で記憶した高輝度部R´1,R´2,・・・R´Lに対応する画素ズレ量と、ステップS603で入力したカメラパラメータから、各高輝度部にピントを合わせた時の奥行きデータを算出する。算出した奥行きは、高輝度部の奥行きとして、高輝度部R´1,R´2,・・・R´Lと対応付けて記憶領域に記憶し、高輝度部の奥行き算出処理を終了する。
【0021】
尚、本実施例では複数の撮像画像上に写り、距離推定に大きく影響する鏡面反射光を除去・低減する手法について取り扱っている。撮像画像データ群の内、ある1枚の画像に写る鏡面反射光については、例えば鏡面反射光が写らなかった撮像画像の画素値を用いて、鏡面反射光を除去すれば良い。
【0022】
〔鏡面反射光推定部406の動作〕
以下では、ステップS607の鏡面反射光推定処理の詳細について、図9のフローチャートを用いて説明する。ここでは測距カメラがN台(本実施例ではN=3)あるとし、各測距カメラ101〜103で撮影した偏光画像は偏光画像1,偏光画像2,・・・,偏光画像Nと番号が付いているものとする。図10(a)に示すように、各偏光画像は高輝度部R´1,R´2,・・・R´Lが画像上に写っている。但し、図8(b)の撮像画像と比較して、偏光フィルタの角度により高輝度部の輝度が変化している点が異なる。
【0023】
ステップS901では、高輝度部R´jの番号jに対して、j=1に初期化する。ステップS902では、ステップS712で算出した高輝度部の奥行きと、ステップS603で入力したカメラパラメータから、偏光画像1,偏光画像2,・・・,偏光画像Nの画素ズレ量を算出する。算出した画素ズレ量は、各偏光画像と対応付けて記憶領域に記憶させる。ステップS903では、ステップS711で記憶した高輝度部R´jに対応する画素領域と、ステップS902で算出した画素ズレ量から、偏光画像1,偏光画像2,・・・,偏光画像N上における高輝度部R´jの画素領域を算出する。算出した偏光画像上における高輝度部R´jの画素素領域は、各偏光画像と対応付けて記憶領域に記憶させる。ステップS904では、ステップS602で入力した偏光画像と、ステップS902で算出した画素ズレ量から、偏光画像1,偏光画像2,・・・,偏光画像Nの位置合わせを行う。位置合わせした偏光画像は、図10(b)に示すように、高輝度部R´j(図10(b)ではj=2)にピントが合っており、他の高輝度部はボケた画像となる。位置合わせができるかどうかは、ステップS903で算出した各偏光画像に対する高輝度部R´jの画素領域が、偏光画像の画像内に収まるかどうかを調べれば良い。位置合わせできた偏光画像は、高輝度部R´jと対応付けて記憶領域に記憶させる。ステップS905では、高輝度部R´jに対して、ステップS904で位置合わせができた偏光画像の枚数kjをカウントする。カウント数kjは、高輝度部R´jと対応付けて記憶領域に記憶させる。ステップS906では、ステップS905でカウントしたkjが、kj≧3を満たすかどうかを判定する。kj≧3を満たす場合は、ステップS907へ移行する。kj≧3を満たさない場合は、高輝度部R´jの鏡面反射光を推定できないと判定し、ステップS908へ移行する。ステップS907では、ステップS904で記憶した偏光画像から、高輝度部R´j内の各画素について鏡面反射光強度と偏光面の角度を推定する。推定した鏡面反射光の強度と偏光面の角度は、高輝度部R´j内の各画素位置と対応付けて記憶領域に記憶させる。鏡面反射光の推定方法の詳細は後述する。ステップS908では、高輝度部R´jの番号jに対して、j=j+1に更新する。ステップS909では、高輝度部R´jの番号jがj≧Lを満たすかどうかを判定する。i≧Lを満たす場合は、L個全ての高輝度部について処理を実行したと判定し、鏡面反射光推定処理を終了する。j≧Lを満たさない場合は、ステップS902へ移行する。
【0024】
以下、ステップS907の鏡面反射光推定方法の詳細について説明する。鏡面反射光の推定には、図11に示す偏光フィルタに対する鏡面反射光の入射・透過光の性質を用いる。一般的に鏡面反射光は、反射面に平行な角度に偏光した光(s偏光)を多く含む。従って、カメラに偏光フィルタを装着すると、装着方向によりカメラに写る鏡面反射光の強度が変化する(図11(a))。偏光フィルタに入射する鏡面反射光の偏光面と、偏光フィルタの偏光面との間をなす角をθとすると、偏光フィルタを透過する鏡面反射光の電場の振幅は入射光の電場の余弦成分となる(図11(b))。偏光フィルタに入射する鏡面反射光の入射光強度をI0、偏光フィルタを透過してカメラに到達する鏡面反射光の透過光強度をI1とすると、以下の式(1)が成り立つ。
【0025】
【数1】
【0026】
式(1)の関係を用いることで、高輝度部R´jの鏡面反射光強度と偏光面の角度を高精度に推定することができる。
【0027】
以下、図10(b)を用いて、kj≧3を満たしている高輝度部R´j(図10(b)ではj=2)内の点Pを例に、鏡面反射光の推定方法を説明する。ステップS904で記憶した偏光画像0、偏光画像1、・・・偏光画像N上の点PのRGB値をそれぞれ(r0,g0,b0),(r1,g1,b1),・・・(rN,gN,bN)と表す。また、各偏光画像の水平方向に対する偏光フィルタ角度を、それぞれ0°,α,・・・Nαとする。本実施例では、α=10°とする。点Pでの鏡面反射光のRGB値を(rA,gA,bA)、鏡面反射光以外の主に物体色を表すRGB値を(rC,gC,bC)とする。更に、鏡面反射光の偏光面と偏光画像0に対応する偏光フィルタとの間をなす角をθとするとR値について以下の式(2)が求まる。
【0028】
【数2】
【0029】
式(2)から未知数はrA,rC,θの3つなので、kj≧3を満たす高輝度部R´j上の点Pにおいて、鏡面反射光強度rAと偏光面の角度θを最小二乗法を用いて推定することができる。G値、B値についても以下の式(3)、式(4)が得られる。同様にしてG値、B値の鏡面反射光強度gA,bAと偏光面の角度θを推定することができる。
【0030】
【数3】
【0031】
【数4】
【0032】
推定した鏡面反射光の強度のRGB値(rA,gA,bA)と、偏光面の角度θは、高輝度部R´j内の点Pと対応付けて記憶領域に記憶させる。以上、式(2)〜式(4)の計算を高輝度部R´j内の画素領域全てに対して実施することで、高輝度部R´j内の鏡面反射光を画素単位で推定することができる。尚、鏡面反射光の推定精度を向上する為に、高輝度部R´jが鏡面反射光又は光源の光かどうかを判定する処理を設けても良い。具体的には、推定した鏡面反射光と物体色のRGB値をYCbCr値に変換し、それぞれのY値を比較することで判定する。鏡面反射光のY値が物体色のY値に比べて十分小さい場合、高輝度部R´jは、光源の光であると判定し、鏡面反射光のRGB値を(0,0,0)とすれば良い。
【0033】
〔測距画像生成部407の動作〕
以下では、ステップS608の測距画像の生成処理の詳細について、図12のフローチャートを用いて説明する。
【0034】
ステップS1201では、高輝度部R´jの番号jに対して、j=1に初期化する。ステップS1202では、ステップS905でカウントしたkjが、kj≧3を満たすかどうかを判定する。kj≧3を満たす場合は、ステップS1203へ移行する。kj≧3を満たさない場合は、高輝度部R´jの測距画像を生成できないと判定し、ステップS1205へ移行する。ステップS1203では、ステップS907で推定した、高輝度部R´j内の各画素位置に対応した鏡面面反射光強度のRGB値(rA,gA,bA)と、偏光面の角度θを記憶領域に入力する。ステップS1204では、ステップS1203で入力した鏡面反射光強度と偏光面の角度から、ステップS904で記憶した各偏光画像が示す画像中の被写体の鏡面反射光に対応する高輝度部R´jから、鏡面反射光による影響を差し引く。高輝度部R´j内の鏡面反射成分を差し引いた偏光画像1,偏光画像2,・・・,偏光画像Nは、記憶領域にて上書き記憶させる。ステップS1205では、高輝度部R´jの番号jに対して、j=j+1に更新する。ステップS1206では、高輝度部R´jの番号jがj≧Lを満たすかどうかを判定する。i≧Lを満たす場合は、L個全ての高輝度部について差分処理が終了したと判定し、ステップS1207へ移行する。j≧Lを満たさない場合は、ステップS1202へ移行する。ステップS1207では、ステップS1204で上書き記憶した偏光画像1,偏光画像2,・・・,偏光画像Nを、測距画像1,測距画像2,・・・,測距画像Nとして記憶領域に記憶し、測距画像生成処理を終了する。生成した測距画像は、図10(c)に示すように、偏光画像1,偏光画像2,・・・,偏光画像Nからkj≧3を満たす高輝度部R´1,R´2,・・・R´L(本実施例ではN=3,L=2)を除去した画像となる。
【0035】
以上説明した偏光フィルタによる鏡面反射光推定処理を行うことで、多眼方式の撮像装置における距離推定精度を向上することができる。
【0036】
本実施例では、偏光フィルタ角度を0°,10°,20°としたが、等間隔にする必要は無く、3つ以上異なる角度が存在する限りにおいて、任意の値をとって良い。例えば偏光画像に写る鏡面反射光の画素値が飽和しないように、偏光フィルタ角度として0°,10°,20°と、それに直交する90°,100°,110°の計6つ設けても良い。
【0037】
また、本実施例では、式(2)〜式(4)で求まるθは理論的に等しいので、θの値が等しくなるように繰り返し演算することで、鏡面反射光を高精度に推定しても良い。
【0038】
更に、奥行きの変化が大きい鏡面反射光を推定する為に、高輝度部R´jを奥行き毎に分割し、鏡面反射光の推定処理をしても良い。例えば、撮像画像でピントを合わせる奥行きをΔz[mm]ずつ走査する。各奥行きに対してピントが合った高輝度領域を、高輝度部R´jとして抽出し、鏡面反射光を推定すれば良い。
【0039】
以上の通り、本実施例によれば、撮像画像データ中に鏡面反射光の成分が含まれる場合であっても、被写体までの距離を高精度に推定することが可能となる。
【0040】
<変形例>
・本実施例では、各処理が図2に示されるような撮像装置により実施されるとしたが、これに限らない。例えば、偏光画像データ及び撮像画像データの撮像は多眼方式の撮像装置によってなされるものの、画像処理部213の各処理は情報処理装置(例えば、パーソナルコンピュータ)により実現されても良い。
・本実施例では、画像合成部411は、撮像画像データと距離推定結果とを用いて画像合成処理を行うとした。しかし、画像合成を行うにあたり、撮像画像データに加えて偏光画像データを用いても良い。
・本実施例では、測距画像推定の際に偏光画像データのみを用いるとした。しかしながら、撮像画像データを用いて、測距画像推定を行っても良い。
【特許請求の範囲】
【請求項1】
複数のカメラにより撮像された複数の画像データを処理する画像処理装置であって、
偏光面の角度が異なる偏光フィルタが装着された前記複数のカメラにより撮像された複数の偏光画像データを取得する偏光画像取得手段と、
前記複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定する鏡面反射光推定手段と、
前記鏡面反射光推定手段による推定結果に基づいて、被写体までの距離を推定する距離推定手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記複数のカメラは、3つ以上の異なる偏光面の角度で偏光フィルタが装着されていることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記複数のカメラにより撮像された撮像画像データから、被写体における鏡面反射光に対応する領域までの距離を算出する奥行き算出手段を更に有し、
前記鏡面反射光推定手段は、前記奥行き算出手段により算出された距離と前記複数の偏光画像データとに基づいて、前記被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定することを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記距離推定手段は、前記鏡面反射光推定手段による推定結果に基づいて、偏光画像データが示す画像中の被写体の鏡面反射光に対応する領域から、鏡面反射光による影響を差し引くことを特徴とする請求項1乃至3の何れか1項に記載の画像処理装置。
【請求項5】
請求項1乃至4の何れか1項の画像処理装置を有する撮像装置。
【請求項6】
複数のカメラにより撮像された複数の画像データを処理する画像処理方法であって、
偏光面の角度が異なる偏光フィルタが装着された前記複数のカメラにより撮像された複数の偏光画像データを取得する偏光画像取得工程と、
前記複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定する鏡面反射光推定工程と、
前記鏡面反射光推定工程の推定結果に基づいて、被写体までの距離を推定する距離推定工程と、
を有することを特徴とする画像処理方法。
【請求項7】
コンピュータを請求項1乃至4のいずれか1項に記載の画像処理装置として機能させるためのプログラム。
【請求項1】
複数のカメラにより撮像された複数の画像データを処理する画像処理装置であって、
偏光面の角度が異なる偏光フィルタが装着された前記複数のカメラにより撮像された複数の偏光画像データを取得する偏光画像取得手段と、
前記複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定する鏡面反射光推定手段と、
前記鏡面反射光推定手段による推定結果に基づいて、被写体までの距離を推定する距離推定手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記複数のカメラは、3つ以上の異なる偏光面の角度で偏光フィルタが装着されていることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記複数のカメラにより撮像された撮像画像データから、被写体における鏡面反射光に対応する領域までの距離を算出する奥行き算出手段を更に有し、
前記鏡面反射光推定手段は、前記奥行き算出手段により算出された距離と前記複数の偏光画像データとに基づいて、前記被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定することを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記距離推定手段は、前記鏡面反射光推定手段による推定結果に基づいて、偏光画像データが示す画像中の被写体の鏡面反射光に対応する領域から、鏡面反射光による影響を差し引くことを特徴とする請求項1乃至3の何れか1項に記載の画像処理装置。
【請求項5】
請求項1乃至4の何れか1項の画像処理装置を有する撮像装置。
【請求項6】
複数のカメラにより撮像された複数の画像データを処理する画像処理方法であって、
偏光面の角度が異なる偏光フィルタが装着された前記複数のカメラにより撮像された複数の偏光画像データを取得する偏光画像取得工程と、
前記複数の偏光画像データに基づき、被写体の鏡面反射光の強度と偏光面の角度との少なくとも何れか一方を推定する鏡面反射光推定工程と、
前記鏡面反射光推定工程の推定結果に基づいて、被写体までの距離を推定する距離推定工程と、
を有することを特徴とする画像処理方法。
【請求項7】
コンピュータを請求項1乃至4のいずれか1項に記載の画像処理装置として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−44597(P2013−44597A)
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願番号】特願2011−181564(P2011−181564)
【出願日】平成23年8月23日(2011.8.23)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願日】平成23年8月23日(2011.8.23)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]