【解決手段】測距補正装置は、ステレオカメラにより撮像された複数の撮像画像からなるステレオ画像を取得する(S1)。そして、ステレオ画像間の垂直方向のずれを補正するための補正パラメータを用いて、S1で取得されたステレオ画像を相互に平行化する。つぎに、S2で平行化されたステレオ画像から、ステレオマッチングによりステレオ画像間の水平視差の分布を算出する(S3)。そして、S1で取得されたステレオ画像と、S3で算出された水平視差の分布とに基づいて、ステレオ画像間の垂直方向のずれの分布を算出し(S4)、その算出した垂直方向のずれの分布に基づいて、既存の補正パラメータを更新する(S6)。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態を図面に基づいて説明する。なお、本発明は下記の実施形態に限定されるものではなく様々な態様にて実施することが可能である。
[測距装置の構成の説明]
本実施形態の測距装置1は、
図1に示すとおり、ステレオカメラ10と、制御装置11とを備える。この測距装置1は、例えば、車両(自動車等)に搭載され、車両前方の物体との距離情報に基づいて車両の運転を支援する運転支援システムとして具現化される。ただし、本発明の実施形態は、車両に搭載されるものに限られない。
【0012】
ステレオカメラ10は、公知のステレオカメラと同様、左カメラ10L及び右カメラ10Rからなる1対の撮像装置を備える。左カメラ10L及び右カメラ10Rは、自車両の進行方向に向けて概ね(所定の取付精度の範囲で)平行等位の位置に配置されている。これらの左カメラ10L及び右カメラ10Rは、互いに共通する領域(自車両の前方領域)を同一タイミングで撮像し、左右一対の画像からなるステレオ画像を表す画像データを制御装置11に入力する。
【0013】
制御装置11は、図示しないCPU,ROM,RAM等を備えるマイクロコンピュータを中心に構成され、測距装置1を統括制御する。制御装置11は、ROM等に記録されたプログラムをCPUにて実行することにより、各種機能を実現する。
【0014】
制御装置11は、機能的構成として、画像平行化処理部12、補正パラメータ記憶部13、視差算出部14、距離算出部15、補正パラメータ算出部16、物体検出部17、安定性判定部18、及び、信頼性判定部19を備える。
【0015】
画像平行化処理部12は、補正パラメータ記憶部13に記憶されている補正パラメータを用いて、ステレオカメラ10から入力されたステレオ画像間の垂直方向のずれを補正し、ステレオ画像を互いに平行化する。具体的には、ステレオ画像間で互いに対応関係にある画像領域(例えば、画素)の高さが水平方向一致するように、補正パラメータに従って画素全体の垂直方向の座標を変換し、ステレオ画像間の垂直方向のずれを補正する。
【0016】
ステレオ画像の平行化に用いられる補正パラメータは、ステレオ画像の画素全体について垂直方向の座標を変換するパラメータであり、画素ごとの補正量を表すテーブル、あるいは定式化された関数として補正パラメータ記憶部13に保存されている。
【0017】
視差算出部14は、画像平行化処理部12によって互いに平行化されたステレオ画像に基づいて、画像全体を所定小区画に分割した画像ブロックごとにステレオ画像間の水平視差を算出し、算出した水平視差を画像上の座標に対応付けた視差マップを作成する。水平視差の算出には、ステレオマッチング等の技法を用いることができる。なお、ステレオマッチングについては公知の技法であるので、ここでの詳しい説明は省略する。
【0018】
距離算出部15は、視差算出部14により作成された視差マップに基づいて、ステレオ画像に写る物体までの距離を算出し、算出した距離を表す距離情報を作成する。周知のとおり、ステレオ画像に写る物体までの距離は、ステレオ画像間の水平視差に反比例する値として表される。
【0019】
補正パラメータ算出部16は、ステレオカメラ10から入力されたステレオ画像と、そのステレオ画像に基づいて視差算出部14により算出された水平視差とに基づいて、ステレオ画像間の垂直方向のずれ(以降、「垂直ずれ」と表記)を算出し、その算出結果に基づいて既存の補正パラメータを更新する。
【0020】
具体的には、補正パラメータ算出部16は、ステレオ画像間のオプティカルフローを最適に求めるアルゴリズムと、ステレオ画像間の水平視差の算出結果と用いて、ステレオ画像間の垂直ずれを算出する。一般的に、画像のオプティカルフローを求める処理は、時間的に連続する画像に対して行うものであるが、本発明は、ステレオ画像を成す左右の画像に対してオプティカルフローを求める処理を適用する点において特徴を有する。ステレオ画像を成す左右の画像は、同一の瞬間を観測したものであるから、互いの水平視差が既知であれば、互いに対応関係にある画素周辺のオプティカルフローを求める手順によってステレオ画像間の垂直ずれを推定できる。なお、ステレオ画像間のオプティカルフローを求める詳細な手順については、後述する。
【0021】
物体検出部17は、ステレオカメラ10から入力されたステレオ画像と、そのステレオ画像に基づいて視差算出部14により算出された水平視差とに基づいて、画像内に写る検出対象物(例えば、道路上の白線等)を、周知の画像認識手法を用いて検出する。安定性判定部18は、物体検出部17による検出状態の安定性を判定する。具体的には、検出と非検出とを繰返すハンチング現象等の不安定な検出が起きているかを判定する。
【0022】
信頼性判定部19は、ステレオ画像の状態や、視差算出部14による水平視差の算出状況、安定性判定部18による物体検出の安定性の判定結果に基づいて、補正パラメータ算出部16おいて算出されるステレオ画像間の垂直ずれに関する信頼性を判定する。そして、信頼性の判定結果に応じて、補正パラメータ算出部16によるステレオ画像間の垂直ずれの算出を、画像全体あるいは部分的に制限する。
【0023】
[補正パラメータ算出処理の説明]
制御装置11が実行する補正パラメータ算出処理の手順について、
図2のフローチャートを参照しながら説明する。
【0024】
まず、S1では、制御装置11は、左カメラ10Lにより撮像された左画像を表す画像データと、右カメラ10Rにより撮像された右画像を表す画像データとを取得する。次のS2では、制御装置11は、補正パラメータ記憶部13に記憶されている既存の補正パラメータを用いて、S1において取得された左右の画像からなるステレオ画像間の垂直方向のずれを補正し、そのステレオ画像を互いに平行化する。なお、S2の処理は、制御装置11の画像平行化処理部12の機能として実現される。
【0025】
次のS3では、制御装置11は、S2において平行化されたステレオ画像間の水平視差を算出し、算出した水平視差を画像上の座標に対応付けた視差マップを作成する。なお、S3の処理は、制御装置11の視差算出部14の機能として実現される。
【0026】
そして、S4では、制御装置11は、S1で取得されたステレオ画像と、そのステレオ画像に基づいてS3において作成された視差マップとに基づいて、ステレオ画像間の垂直ずれを算出する。ここでは、ステレオ画像間のオプティカルフローを最適に求める処理によって、ステレオ画像間の垂直ずれを算出する。
【0027】
オプティカルフローの推定では、ステレオ画像のうちの一方の基準画像と、他方の比較画像とで対応関係にある画素の輝度値が(ほぼ)同じ値になっていると想定する。よって、基準画像と比較画像との間で画素の輝度値の類似性が高い領域を探索することで、対応する画素同士の座標のずれを算出する。ここで、対応する画素同士の座標のずれで表されるベクトルのうち、視差マップで表される水平視差の成分を除いたものを、その画素位置におけるステレオ画像間の垂直ずれとする。制御装置11は、画素ごとの垂直ずれを画像全体について算出し、算出した垂直ずれを画像上の座標に対応付けた垂直ずれマップを作成する。
【0028】
以下、ステレオ画像間の垂直ずれを算出する方法について、具体的に説明する。ここでは、ステレオ画像のうちの左画像の座標(x,y)における輝度値をI
0(x,y)と表し、右画像の座標(x,y)における輝度値を、I
1(x,y)と表す。ただし、xは画像の水平方向の座標であり、yは画像の垂直方向の座標である。
【0029】
仮に、ステレオ画像間の垂直ずれが完全にない状態を想定した場合、左右の画像の輝度値について下記(1)のような関係が成立する。
【0030】
【数1】
なお、上記式(1)において、uは、視差マップで表される水平視差の値(ピクセル数)である。
【0031】
実際には、左右の画像における対応する画素の間には、水平視差の他にステレオカメラ10の歪み等に起因する垂直ずれが存在する。そこで、左画像の座標(x,y)の画素と対応関係にある右画像の画素との間の垂直ずれの値(ピクセル数)をvとすると、下記式(2)のように表される。
【0032】
【数2】
そこで、画素ごとの垂直ずれvを、オプティカルフローの関係式に基づいて算出する。まず、右画像の各画素について、輝度値と座標との対応を下記式(3)のように置き換えて、左右の画像間の水平視差uを相殺した上で、下記式(4)で表されるオプティカルフローの関係式によって垂直ずれvを求める。
【0034】
【数4】
上記式(4)は、右画像の対応点(x,y)から垂直方向にvピクセルずれた画素の輝度値と、左画像の対応点(x,y)の画素の輝度値との差分の2乗の総和で求められる誤差関数が最少となるパラメータvを求める関係式である(Lucas-Kanade法)。上記式(4)は、凸最適化問題であり、“極小値が存在すれば大域的最小値である”ことが知られている。上記式(4)をテーラー展開すると、下記式(5)が得られる。
【0035】
【数5】
また、上記式(5)を変形すると、下記式(6)のように表される。
【0036】
【数6】
さらに、上記式(6)を行列の形式に変換すると、下記式(7)のように表される。
【0037】
【数7】
上記式(7)の最小化は、vの偏微分が0になることであり、下記式(8)のように解くことで、垂直ずれvを求めることができる。
【0038】
【数8】
上記式(8)は最小二乗法によって解けるが、そのためには、複数回の反復計算が必要である。なお、最初の計算時において、vの初期値v
0は全て0に設定されているものとする。そして、その次の計算から過去に推定したvの前回値をv
0に使用する。S4におけるオプティカルフローの計算を、撮影タイミングが異なる複数組のステレオ画像に適用し、それぞれの計算結果を平均化することで、垂直ずれvをロバストに推定できる。
【0039】
図2のフローチャートの説明に戻る。制御装置11は、S4において複数組のステレオ画像からそれぞれ計算された垂直ずれマップを複数保存する。そして、S5では、制御装置11は、蓄積された複数の垂直ずれマップについて、平均化等の統計処理を施す。S6では、制御装置11は、S5において統計処理された垂直ずれマップに基づいて補正パラメータを作成し、その補正パラメータを補正パラメータ記憶部13に記録して、既存の補正パラメータを更新する。なお、S4〜S6の処理は、制御装置11の補正パラメータ算出部16の機能として実現される。
【0040】
上述のS1〜S6の一連の処理のうち、S1〜S3の処理は、水平視差の算出結果を距離の算出や物体検出にリアルタイムに反映するために、所定時間内に処理を完了する必要のあるリアルタイム部分である。一方、S4〜S6は、複数組のステレオ画像に関する垂直ずれマップを蓄積し、それを統計処理して補正パラメータを作成するため、リアルタイム性が要求されない非リアルタイム部分である。
【0041】
[計算事例]
図3(a)は、300フレーム分のステレオ画像から計算された垂直ずれマップを統計処理することで得られた、ステレオ画像間の垂直ずれの分布を表す画像である。この画像は、垂直ずれの大きさを画像の色の濃淡で表現したものであり、色が濃いほど垂直ずれの量が大きいことを表している。
図3(a)の事例では、画像の右上部分及び左下部分において、垂直ずれが大きくなっており、特に、画像の右上部分において顕著である。
【0042】
図3(b)は、
図3(a)で表される垂直ずれを有するステレオカメラ10を用いて撮像された測距対象の画像31について、垂直ずれを補正しないで距離を算出した距離画像32と、垂直ずれを補正した上で距離を算出した距離画像33とを例示した図である。
【0043】
図3(b)に例示されるとおり、垂直ずれの補正を行っていない距離画像32においては、画像の右上における楕円で囲んだ部分に、測距対象の画像31には写っていない不自然な近距離物体が表れている。これに対し、垂直ずれの計算結果に基づいて補正を行った距離画像33においては、前述のような不自然な近距離物体は表れず、測距対象の画像31に写る風景と概ね一致する測距結果が得られている。
【0044】
[補正パラメータの高信頼化・高精度化のための更なる工夫]
信頼性判定部19により、垂直ずれの計算精度の低下が予想される特定の条件を判定し、その条件下において、補正パラメータ算出部16が垂直ずれの算出を制限することで、補正パラメータの精度・信頼性を高めることができる。その場合、垂直ずれの算出を制限する対象は、特定の条件に該当する画素、その画素の周辺領域、あるいは画像全体の何れであってもよい。具体的には、以下の(1)〜(5)の条件下において、垂直ずれの算出を制限することで、補正パラメータの高信頼化・高精度化を実現できる。
【0045】
(1)ステレオカメラ10から入力されたステレオ画像において、白飛び(明るい部分の階調が失われ領域全体が白くなっている状態)や、黒つぶれ(暗い部分の階調が失われ領域全体が黒くなっている状態)が生じている場合、信頼性判定部19は、その部分の画像から得られる垂直ずれの信頼性が低いと判定する。この場合、白飛び及び黒つぶれに該当する画素自体や周辺領域を、垂直ずれを算出する対象から除外することが考えられる。
【0046】
(2)視差算出部14によるステレオマッチングにおいて、左右の画像間のマッチングコスト(相違度)が高い場合、信頼性判定部19は、その部分の画像から得られる垂直ずれの信頼性が低いと判定する。この場合、該当する画素自体や周辺領域を、垂直ずれを算出する対象から除外することが考えられる。
【0047】
(3)ステレオカメラ10の視界に介在する車両のウインドシールドに設けられたワイパ(図示なし)が作動している場合、信頼性判定部19は、そのステレオ画像から得られる垂直ずれの信頼性が低いと判定する。
【0048】
(4)幾何変換により同位置に変換した左右の画像において、一方の画像にハレーション等が起きていて両画像が互いに似ていない場合、信頼性判定部19は、そのステレオ画像から得られる垂直ずれの信頼性が低いと判定する。
【0049】
(5)物体検出部17による検出状態の安定性を判定する安定性判定部18において、検出と未検出とを繰り返す現象(ハンチング)等が検知された場合、信頼性判定部19は、そのステレオ画像から得られる垂直ずれの信頼性が低いと判定する。
【0050】
[効果]
実施形態の測距装置1によれば、以下の効果を奏する。
画像平行化処理部12が、補正パラメータを用いてステレオ画像を相互に平行化することで、ステレオ画像間の垂直ずれを補正できる。その上で、視差算出部14が、ステレオ画像間の水平視差を算出することで、距離算出部15による測距の精度を高めることができる。さらに、補正パラメータ算出部16が、新たに取得されたステレオ画像と、そのステレオ画像から算出された水平視差と基づいて、ステレオ画像間の垂直ずれを算出し、既得の補正パラメータを更新できる。このようにすることで、補正パラメータを最新の状況に応じて随時更新することができるため、測距精度の経時的な低下を防ぎ、測距精度を維持・向上できる。