(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、図面を参照して実施形態を説明する。
(構成)
図1は、本実施形態に係わる画像処理装置のブロック図である。
【0012】
画像処理装置1は、2つのカメラ11、12からの画像信号を受信するレクティフィケーション部13と、マッチング部14と、誤差マップ作成部15と、平行化パラメータ誤差判定部16と、パラメータ補正部17と、記憶部18とを含む。画像処理装置1は、マッチング部14等の回路を含む半導体装置である。
【0013】
なお、記憶部18を、マッチング部14等を含む半導体装置とは別の半導体装置(例えばDRAM)にしてもよい。
さらになお、レクティフィケーション部13を、マッチング部14等を含む半導体装置とは別の半導体装置にしてもよい。
【0014】
図1において点線で示すカメラ11、12は、ステレオカメラシステムの一部であり、2つの画像からステレオ計測が可能なように互いに離れて配置されている。各カメラ11,12は、撮像素子として例えばCMOSイメージセンサ11a,12aを有する。
【0015】
レクティフィケーション部13は、平行化パラメータ情報PPを保持し、平行化パラメータ情報PPに基づいて画像G1,G2の平行化処理を行う回路である。平行化パラメータ情報PPは、レクティフィケーション部13のレジスタ13aに保持される。
【0016】
具体的には、平行化パラメータ情報PPは、ステレオカメラの製造のキャリブレーション時に設定される。レクティフィケーション部13は、画像G1,G2上で、2本のエピポーララインをX軸に平行にし、かつ対応するエピポーララインが同一のy座標となるように、画像G1,G2の両方あるいは一方を修正する。このようなエピポーラ拘束を利用して対応点の探索範囲をエピポーラライン上に限定することにより、処理量の削減と誤マッチングの確率を減らしている。
【0017】
すなわち、レクティフィケーション部13は、キャリブレーション時に設定された平行化パラメータ情報PPに基づいて、一方の画像上の点が他方の画像上にあるエピポーラライン上に存在するように、画像G1,G2の一方あるいは両方に対して平行化処理を行う。平行化パラメータ情報PPは、画像G1,G2の一方あるいは両方を回転と平行移動の少なくとも一方を行うための、画素毎あるいはブロック領域毎の補正データからなる。
【0018】
また、レクティフィケーション部13は、補正信号を用いて、平行化パラメータ情報PPを更新する機能も有している。
レクティフィケーション部13は、例えば、平行化パラメータ情報PPに応じて、入力画素と出力画素の対応関係を示すテーブルを選択し、そのテーブルを用いて、画像G1,G2の両方あるいは一方に対して画像変換を行う。画像変換には、ホモグラフィ変換も含まれる。
【0019】
なお、画像変換は、変換式を用いて行ってもよく、その場合は、変換式中のパラメータが、キャリブレーション情報に基づいて変更される。
さらになお、画像変換処理後に、各画像データに対してフィルタリング処理を行ってもよい。
【0020】
レクティフィケーション部13は、平行化処理が施された画像G1c、G2cの画像信号をマッチング部14へ出力する。
マッチング部14は、一方の画像上の各画素が、他方の画像上のどの位置にあるかを判定するためのステレオマッチング処理を実行し、視差情報を出力する回路である。すなわち、マッチング部14は、カメラ11,12により撮像して得られた2つの画像のステレオマッチング処理を行う。
【0021】
具体的には、マッチング部14は、一方の画像上の各画素について、他方の画像上を、複数ラインを含む探索ウインドウを移動させながら、対応画素あるいは対応ブロックとの一致度を算出する。算出された一致度から、マッチング部14は、各画素のx方向の視差情報(以下、x視差という)xp及びy方向の視差情報(以下、y視差という)ypを出力する。x視差xpおよびy視差ypは、例えばピクセル数で示される。
【0022】
なお、マッチング部14は、画素毎の視差情報の変わりに、所定の複数の画素、例えば3行3列の9画素からなるブロック毎の視差情報を出力するようにしてもよい。
【0023】
図2を用いて、x視差及びy視差について説明する。
図2は、2つの画像間の視差を説明するための図である。
画像G1cは、画像G1に対して平行化処理された画像であり、画像G2cは、画像G2に対して平行化処理された画像である。
【0024】
マッチング部14は、矢印Aで示すように、所定サイズのブロック(あるいはウインドウ)Wを画像G2c中で、X方向に移動させ、かつX方向の移動が終了すると、次のラインに移ってX方向に移動させながら、画像G1c中の各画素の一致度を算出していくステレオマッチング処理を行う。マッチング部14は、画像G1c中の全ての画素に対して、画像G2c中における一致度を算出する。所定サイズのブロックWは、x方向およびy方向に複数画素分の長さを有し、例えば、ブロックWは、k×mの画素からなる。k、mは、正の整数である。よって、マッチング部14は、他の画像中において、一方の画像中のある画素と、同一のy座標を通りx軸に平行なラインのみでなく、ブロックWに含まれる上下の数ラインも走査し、求めた対応点のx視差xpとy視差ypを算出する。
【0025】
図3は、ステレオマッチング処理により得られるx視差xpとy視差ypを説明するための図である。
ブロックWは、k×mのブロックであり、ブロックW内で、2つの画像の一方における点(画素)の対応点が、ステレオマッチング処理により検出される。
図3では、一方の画像における点P1と、他方の画像における対応点P2は、斜線で示されている。
【0026】
図3は、対応点P2が、点P1に対し、Y方向に「+1」ピクセル、X方向に「+5」ピクセルの位置にあることを示している。
図3では、x視差xpが「+5」であり、y視差ypは「+1」である。
【0027】
y視差ypは、2つの画像についてのサーチラインとしてのエピポーララインに直交する方向における2つの画像のずれ量を示す。すなわち、ずれ量は、一方の画像中の画素毎の、他方の画像中の対応する画素に対する視差の値である。
なお、ここでは、サーチラインは、X軸に平行であり、ずれ量は、エピポーララインに直交するY軸方向におけるずれ量であるが、サーチラインは、X軸に平行でなくてもよい。
【0028】
よって、マッチング部14は、画像G1c中と画像G2c中の画素間の一致度を算出し、一致度が高い画素を決定すると共に、決定した画素についてのx視差xpとy視差ypを算出して出力する。その結果、マッチング部14から、画像G1cの各画素について、画像G2cにおけるx視差xpとy視差ypが出力される。
【0029】
例えば、
図2に示すように、画像G1c中の人HPの点P1は、画像G2c中の人HPの点P2とは、X方向においてx視差xpだけ、Y方向においてy視差ypだけ、ずれている。
【0030】
マッチング部14から出力されるx視差xpの情報は、距離計測のための他の回路(図示せず)に供給される。正しくキャリブレーションが行われているとき、x視差xpの情報を用いて、各画素の正確な距離情報を得ることができる。
【0031】
以上のように、マッチング部14は、ブロックWを用いたステレオマッチング処理において、x視差xpだけでなく、y視差ypも算出するので、そのy視差ypを用いて、誤差マップが作成される。
【0032】
y視差ypの情報は、誤差マップ作成部15に供給される。
誤差マップ作成部15は、y視差ypを用いて誤差マップを作成する回路である。誤差マップ作成部15は、作成した誤差マップの情報を平行化パラメータ誤差判定部16と、パラメータ補正部17へ出力する。
【0033】
誤差マップMは、X−Y平面上において、y視差ypのデータをx視差xpの画素位置に配置して作成される。誤差マップMは、画像G1c中のライン上の各画素に対する、画像G2c中のその対応画素の位置(x視差xp)の、Y方向におけるずれ量、すなわちy視差yp、を示すマップである。
【0034】
図4は、誤差マップの例を示す図である。なお、
図4は、分かり易くするために、8×10画素の誤差マップを示している。
図4の誤差マップMは、y視差ypが「−2」から「+2」の範囲の値を有している。「−2」は、画像G2c中の対応点が、Y方向においてマイナス2画素分だけずれた位置、言い換えれば下方向に2画素分だけ下がった位置にあることを示している。
【0035】
「+1」は、画像G2c中の対応点が、Y方向においてプラス1画素分だけずれた位置、言い換えれば上方向に1画素分だけ上がった位置にあることを示している。
「0」は、画像G2c中の対応点が、Y方向においてずれがないことを示している。
【0036】
なお、画像G1c、G2cの周辺部では、対応点が存在しない画素があるが、その場合は、近傍の画素のy視差ypの値を、対応点が存在しない画素のy視差ypの値としたり、対応点が存在しないことを示す値で埋めたりするなどの処理が行われる。
【0037】
図4の誤差マップMでは、右側がプラスの誤差を有し、中央部は誤差を有さず、左側がマイナスの誤差を有している。つまり、画像G2cは、画像G1cに対して反時計方向にずれていることを示している。
【0038】
図5は、画像G2cが反時計方向にずれている画像の例を示す図である。
図5では、画像のずれを説明するために、画像G2c中の人HPが、画像G2cの中心点の回りにずれていることが、誇張して示されている。
【0039】
図示しないが、画像G2cが画像G1cに対して時計方向にずれている場合は、誤差マップEMでは、右側がマイナスの誤差を有し、中央部は誤差を有さず、左側がプラス誤差を有する。
【0040】
なお、マッチング部14が一致度を算出するときに、マッチングの確信度を示す情報を出力する場合は、マッチング確信度を重み係数として、y視差ypの値に乗算して、y視差ypを補正するようにしてもよい。
【0041】
図6は、ブロック領域毎のずれ量を示す誤差マップの例を示す。
図6の誤差マップEMは、
図4の誤差マップMを、4×6のブロック領域に分けた場合を示している。
【0042】
図6の誤差マップEMの場合、
図4の誤差マップMを24のブロック領域に分割し、各ブロック領域に含まれるy視差ypの平均値を算出し、算出された平均値をそのブロック領域のy視差ypの値としている。
図6において、太字の数字が、各ブロック領域のy視差ypを示している。すなわち、ずれ量は、各画像において、複数に分割されたブロック領域内の画素毎のずれ量の統計値(ここでは平均値)である。
【0043】
なお、ここでは、各ブロック領域のy視差ypは、各ブロック領域に含まれる複数の画素のy視差ypの平均値であるが、他の統計量を用いてもよい。
さらになお、各ブロック領域に重み付けをしてもよい。例えば、画像の周辺部に近いブロック領域程、重みを大きくし、画像の中央部に近いブロック領域の重みは、小さくするような重み付けを、行ってもよい。
【0044】
誤差マップEMは、平行化パラメータ誤差判定部16とパラメータ補正部17へ供給される。誤差マップEMは、サーチラインに直交する方向における2つの画像のずれ量の分布を示す情報である。なお、誤差マップ作成部15は、誤差マップEMを作成せずに、誤差マップMをそのまま、平行化パラメータ誤差判定部16とパラメータ補正部17へ出力してもよい。
【0045】
以上のように、誤差マップ作成部15は、サーチラインに直交する方向における2つの画像のずれ量を示すずれ量情報を作成するずれ量情報作成部を構成する。
【0046】
平行化パラメータ誤差判定部16は、誤差マップEMに基づいて、平行化の誤差が生じているか否かを判定する回路である。
ここでは、誤差マップEMが入力された場合について説明する。所定の閾値THに基づいて、平行化パラメータ誤差判定部16は、平行化誤差が発生しているか否かを判定する。閾値THは、例えば、プラス又はマイナス方向に余分に探索するライン数である。平行化パラメータ誤差判定部16は、全ブロック領域のy視差ypの和を、ブロック領域数で除してy視差ypの平均値を算出し、y視差ypの平均値の絶対値が閾値TH以上であるか否かを判定する。
【0047】
なお、平行化誤差が発生しているか否かの判定は、y視差ypが閾値TH以上のブロック領域の数が複数あるか否か、周辺部のブロック領域のみについて視差ypが閾値TH以上のブロック領域の数が複数あるか否か、あるいは画像の四隅のブロック領域のみについて視差ypが閾値TH以上のブロック領域の数が複数あるか否か、に基づいて、行うようにしてもよい。
【0048】
以上のように、平行化パラメータ誤差判定部16は、誤差マップEMに基づいて、2つの画像の平行化を行うレクティフィケーションの誤差の有無を判定するレクティフィケーション誤差判定部を構成する。
【0049】
平行化パラメータ誤差判定部16は、平行化誤差が発生していると判定すると、パラメータ補正部17に、補正指示信号CSを出力する。
さらに、平行化パラメータ誤差判定部16は、平行化誤差が発生していると判定したときは、誤差マップEMを、記憶部18に書き込む。よって、記憶部18には、平行化誤差が発生していると判定されたときの誤差マップEMが複数記憶される。
【0050】
なお、平行化パラメータ誤差判定部16は、平行化誤差が発生していると判定したときは、
図1において二点鎖線で示すように、画像処理装置1とは別の液晶表示器などの表示部19に、メッセージ表示などで、ユーザに通知するようにしてもよい。
【0051】
パラメータ補正部17は、補正指示信号CSを受信すると、誤差マップEMを用いて、平行化パラメータ情報PPを補正する補正信号を生成してレクティフィケーション部13へ出力する。レクティフィケーション部13は、その補正信号に基づいて、平行化パラメータ情報PPを更新する。補正信号は、誤差マップEMに基づいて、2つの画像の少なくとも一つの画像に対する平行化を補正するための信号である。
【0052】
なお、ここでは、パラメータ補正部17は、補正信号をレクティフィケーション部13へ出力しているが、補正した平行化パラメータ情報PPをレクティフィケーション部13に書き込むようにしてもよい。
【0053】
また、パラメータ補正部17は、誤差マップEMに加えて、記憶部18に記憶された過去の誤差マップEMの情報も用いて、平行化パラメータ情報PPを更新するようにしてもよい。
【0054】
過去の誤差マップEMも用いることにより、瞬間的なノイズのような大きな誤差により、平行化パラメータ情報PPが補正されるのを防止することができる。例えば、過去の(例えば前回の)誤差マップEMと誤差マップ作成部15からの誤差マップEMとの平均値を用いて平行化パラメータ情報PPを更新する。
【0055】
さらになお、記憶部18に記憶した複数の誤差マップEMの時間平均を取ることにより、過去の誤差マップEMの平滑化を行ってもよい。
また、記憶部18に複数の誤差マップEMとそれに応じた補正情報とを予め登録して記憶しておく。そして、パラメータ補正部17は、誤差マップ作成部15からの誤差マップEMに一致あるいは類似する登録誤差マップ情報を抽出し、抽出された登録誤差マップ情報に対応する補正情報を用いて、平行化パラメータ情報PPを更新するようにしてもよい。なお、登録誤差マップ情報の抽出は、誤差の数値の比較を行うことでもよいし、数値の符号のみの比較を行うことでもよい。
【0056】
さらにまた、過去の誤差マップEMの情報を利用して、平行化パラメータ情報PPの安定度の評価を行い、平行化パラメータ情報PPが不安定なときは、表示部19にその旨のメッセージを表示し、ユーザに通知することもできる。
【0057】
ここで、平行化パラメータ情報PPの更新について説明する。
平行化パラメータ情報PPは、2つの画像G1,G2の一方あるいは両方を回転と並進移動の少なくとも一方を行うためのブロック領域毎の補正データであり、画像G1,G2の一方あるいは両方におけるずれ量を示すデータである。
【0058】
補正指示信号CSを受信したパラメータ補正部17は、平行化パラメータ情報PPに、誤差マップ作成部15から受信した誤差マップEMの情報を加算することにより、2つの画像G1,G2の少なくとも一つにおけるずれ量を更新する。
【0059】
図7は、誤差マップに基づく平行化パラメータ情報の更新処理の例を説明するための図である。なお、
図7は、分かり易くするために、4×5からなる複数のブロック領域の場合の誤差マップを示している。
【0060】
図7の平行化パラメータ情報PPは、画像G1,G2における一方の画像に対する他方の画像のブロック領域毎のずれ量である。平行化パラメータ情報PPは、調整装置の治具などの温度特性、振動特性などや、ステレオカメラの経年変化などにより、正しい値からずれる場合がある。そこで、
図7では、平行化パラメータ情報PPに誤差マップEMがブロック領域毎に加算されて、ずれ量が正しい値に調整される。
【0061】
図8は、誤差マップに基づく平行化パラメータ情報の更新処理の他の例を説明するための図である。
図8の平行化パラメータ情報PPは、画像G1,G2における両方の画像のブロック領域毎のずれ量である。画像G1についての平行化パラメータ情報PP1と画像G2についての平行化パラメータ情報PP2が、ステレオカメラの製造時に決定されている。
【0062】
そこで、
図8では、誤差マップEM中の各ブロック領域の値を1/2にした誤差マップEM1が生成される。そして、平行化パラメータ情報PP1には、誤差マップEM1が加算され、画像G2についての平行化パラメータ情報PP2には、誤差マップEM1が減算されて、ずれ量が正しい値に調整される。
【0063】
なお、ここでは、パラメータ補正部17は、誤差マップEMを用いて、平行化パラメータ情報PPを更新しているが、過去の誤差マップEMpも考慮して、平行化パラメータ情報PPを更新するようにしてもよい。
【0064】
例えば、過去の誤差マップEMpのトレンドから、誤差マップEM中の各値の変化が収束して0に近くなるように、画像G1,G2のブロック領域毎のずれ量に対する加減算の割合を、1/3と2/3、1/4と3/4等に調整するようにしてもよい。
【0065】
(効果)
実施形態によれば、レクティフィケーションのためのパラメータ誤差の有無の判定あるいはパラメータ誤差の補正のための処理負荷が従来に比べて小さい画像処理装置及び画像処理方法を提供することができる。
【0066】
実施形態の画像処理装置によれば、処理負荷が小さいので、オンラインで、すなわちステレオカメラシステムの動作中に動的にキャリブレーションを行うこともできる。また、画像処理装置の回路規模も小さくなる。
【0067】
また、ステレオマッチング処理において算出されるy視差ypを用いて誤差マップMを作成するので、誤差マップ作成の処理が軽い。
【0068】
さらに、平行化パラメータ誤差判定部16は、誤差マップEMに基づいて、平行化の誤差が生じているか否かを判定する。平行化誤差が発生していると判定されたときだけ、パラメータ補正部17はパラメータの補正を行い、常時パラメータ補正処理を実行しない。したがって、消費電力の削減になるだけでなく、リソースを他のアプリケーションが利用できるという効果もある。
【0069】
なお、
図1の画像処理装置1の各ブロックは、ハードウエア回路であるが、中央処理装置(すなわちCPU)と、ROM及びRAMを利用してソフトウエアプログラムで、各ブロックの機能を実現するようにしてもよい。その場合、レクティフィケーション部、マッチング部、誤差マップ作成部、平行化パラメータ誤差判定部、及びパラメータ補正部の各ブロックの機能に対応するプログラムがROMに格納され、CPUが各プログラムをROMから読み出して、RAMに展開して実行することにより、各ブロックに対応する機能が実現される。
【0070】
次に、実施形態の変形例を説明する。
(変形例1)
変形例1として、画像処理装置1が平行化パラメータ誤差判定部16を有さず、パラメータ補正部17が、誤差マップEM1に基づいて常時あるいは周期的にパラメータ補正を行うようにしてもよい。この場合、画像処理装置1は、カメラ11,12からのフレーム毎にレクティフィケーションパラメータの誤差補正処理を行うことができる。
【0071】
(変形例2)
変形例2として、画像処理装置1がパラメータ補正部17を有さず、平行化パラメータ誤差判定部16のみを有し、パラメータ異常を検知できるようにしてもよい。
【0072】
(変形例3)
変形例2として、各画像の中央部を含む所定の割合の部分におけるy視差ypを算出するようにしてもよいし、あるいは各画像の周辺領域の部分におけるy視差ypを算出するようにしてもよい。
【0073】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。