【文献】
福嶋慶繁、外3名,“Multi−Pass Dynamic Programmingによる光線空間補間”,電子情報通信学会論文誌,2007年 7月 1日,Vol.J90-D, No.7,p.1721-1725,ISSN:1880-4535
【文献】
Jae Chul Kim, et al.,"A Dense Stereo Matching Using Two-Pass Dynamic Programming with Generalized Ground Control Points",Proceedings of the 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05),2005年 6月20日,ISSN:1063-6919, DOI:10.1109/CVPR.2005.22
【文献】
三田誠一,“車両の走行環境認識技術とその応用”,第4回ZMPフォーラム,[online],2012年 7月26日,[平成29年9月21日検索],インターネット<URL:http://www.zmp.co.jp/forum/pdf/4th/mita_1.pdf>,<URL:http://www.zmp.co.jp/forum/pdf/4th-program.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下に本発明にかかる実施の形態を図面と共に説明する。
[本実施形態の構成]
本発明が適用された距離検出装置1は、複数の撮像画像の視差を検出することによって撮像画像中の各点(物標)までの距離を検出する装置である。特に、本実施形態の距離検出装置1では、動的計画法であるビタビアルゴリズムを複数の方向に適用することで複数の撮像画像を構成する画素間の対応関係(視差)を高精度に求めることができるよう配慮されている。
【0012】
詳細には、距離検出装置1は、乗用車等の車両に搭載されており、
図1に示すように、処理部10と、2つの撮像部21,22と、車両制御部30とを備えている。なお、撮像部は2つに限られることなく、3以上設けられていてもよい。
【0013】
撮像部21,22は、それぞれ車両の進行方向が撮像範囲内となる周知のカメラとして構成されている。撮像部21,22は、中心軸が平行かつ水平方向に所定の距離だけ離れて配置されたステレオカメラを構成している。これらの撮像部21,22は、予め決まった時間で周期的に同時に撮像を行うよう設定されている。
【0014】
処理部10は、CPU11と、ROM、RAM等のメモリ12とを備えた周知のコンピュータとして構成されている。処理部10(CPU11)は、撮像部21,22によって撮像された撮像画像を取得する。そして、メモリ12に格納されたプログラムに基づいて後述する距離演算処理等の各種処理を実行する。
【0015】
車両制御部30は、処理部10による処理結果を利用して車両を制御する処理を行う。例えば、車両制御部30は、撮像部21,22による撮像範囲内の各点(各画素)における距離の情報を処理部10から取得し、この距離の情報に基づいて物標位置および相対速度を認識する。そして、物標が走行に支障を来す虞がある場合、走行軌道を変更する車両制御を行う。
【0016】
[本実施形態の処理]
このように構成された距離検出装置1において、処理部10(CPU11)は、
図2以下に示す距離演算処理を実施する。距離演算処理は、撮像画像中の各点までの距離を演算する処理である。距離演算処理は、例えば距離検出装置1の電源が投入されると開始され、その後、一定周期毎に繰り返し実施される。
【0017】
この処理では、まず、撮像部21,22によって撮像された撮像画像を取得する(S110)。続いて、撮像された画像を平行化する(S120)。ここで、画像の平行化とは、撮像画像のレンズによる画像の歪みや姿勢のずれを補正する処理等を示す。
【0018】
続いて、対応点探索処理を実施する(S130)。対応点探索処理は、基準画像(例えば撮像部21による撮像画像)を構成する各画素と比較画像(例えば撮像部22による撮像画像)を構成する各画素との対応関係、すなわち、同じものが写っている場所を関連付ける処理である。
【0019】
詳細には
図3に示すように、まず、節点のコストを算出する(S210)。ここで、節点とは、
図4(a)に示すように、基準画像の画素位置を横軸に取り、基準画像の画素位置と比較画像の画素位置との視差を縦軸に取ったマトリクスにおいて、このマトリクスを構成する要素(基準画像の画素位置と視差との関係)の1つ1つを示す。なお、この処理では、基準画像の画素位置毎に、比較画像の視差探索する範囲内にある画素に対するコストを算出する。
【0020】
ここで、ピクセル位置p,視差upのときの節点のコストをD(p,up)と表現する。また、コストD(p,up)は、下記SSIM(Structual Similarity)を用いて求める。
【0021】
【数1】
なお、上記数式における各記号の定義については、
図5に示す。また、上記数式中のα、β、γは、任意の定数である。
【0022】
次に、ビタビアルゴリズムによるコストを求める(S220〜S260)。S220の処理では、コストExを下記の手順を実施することで求める。
[手順1−1]
まず、基準画像の画素については、基準画像の左上の画素から右方向に順に選択し、右端まで選択し終わると、1段下の左端の画素を選択し、再び右方向に順に選択する処理を繰り返す。この際、比較画像については、基準画像の選択中の画素と同じ高さ(鉛直方向の位置)にある比較画像の画素を、左から右に向かう方向(右方向)に左端から右端まで順次選択する。すなわち、
図4(b)に示すように、基準画像および比較画像についてそれぞれ水平方向(X方向)について選択する画素の座標を遷移させる。
【0023】
そして、比較画像の各画素について、視差(基準画像の画素の位置と比較画像の画素の位置の差)が大きくなるにつれてコストが大きくなるよう予め設定された関数を用いて視差コストS(up,uq)を求める。なお、S(up,uq)は、pからqに視差が変化する際の視差コストを示す。
【0024】
[手順1−2]
そして、節点のコストD(p,up)と、視差コストS(up,uq)とについてビタビアルゴリズムを適用する。
【0025】
【数2】
上記式(ビタビアルゴリズムの式)では、前述のある節点について、
図4(a)に示すマトリクスにおける左端の何れかの節点からその節点(ある節点)に至るまでの、節点のコストD(p,up)と、視差コストS(up,uq)との和、を示している。
【0026】
ここでは、節点毎に、このE(up)が最小となる節点コストおよび視差コストの組み合わせをビタビアルゴリズムを用いて求める。この演算によって得られるこれらのデータを右方向のコストとする。
【0027】
[手順1−3]
上記[手順1−1]〜[手順1−2]と同様の方法を、右から左に向かう方向(左方向)に適用することによって、ビタビアルゴリズムのコストを得る。この演算によって得られるこれらのデータを左方向のコストとする。
【0028】
[手順1−4]
上記の手順にて求めた右方向のコストと左方向のコストとを対応する節点同士で加算し、得られたデータを左右方向のコストExとしてメモリ12に記録させる。
【0029】
続いて、S230の処理では、コストEyを下記の手順を実施することで求める。
[手順2−1]
まず、
図6(b)に示すように、各節点について、Y方向(画像の鉛直方向)からみた仮想的な平面を準備する。そしてこの平面に対応する画素を選択する。すなわち、基準画像の画素については、基準画像の左上の画素から下方向に順に選択し、下端まで選択し終わると、1段右側の上端の画素を選択し、再び下方向に順に選択する処理を繰り返す。この際、比較画像については、基準画像のうちの選択中の画素と同じ左右位置(水平方向の位置)にある比較画像の画素を、上から下に向かう方向(下方向)に上端から下端まで順次選択する。
【0030】
そして、この際の視差コストS(up,uq)を求める。
[手順2−2]
そして、計算済みの節点のコストD(p,up)と、視差コストS(up,uq)とについてビタビアルゴリズムを適用する。
【0031】
ここでは、
図6(a)に示すように、前述のビタビアルゴリズムの式を利用して、節点毎に、このE(up)が最小となる節点コストおよび視差コストの組み合わせを求める。この演算によって得られるこれらのデータを下方向のコストとする。
【0032】
[手順2−3]
上記[手順2−1]〜[手順2−2]と同様の方法を、下から上に向かう方向(上方向)に適用することによって、ビタビアルゴリズムのコストを得る。この演算によって得られるこれらのデータを上方向のコストとする。
【0033】
[手順2−4]
上記の手順にて求めた下方向のコストと上方向のコストとを対応する節点同士で加算し、得られたデータを上下方向のコストEyとしてメモリ12に記録させる。
【0034】
続いて、S240の処理では、コストEx−yを下記の手順を実施することで求める。
[手順3−1]
まず、
図7(b)に示すように、各節点について、XY方向(画像の左下から45度斜め右上方向)からみた仮想的な平面を準備する。そしてこの平面に対応する画素を選択する。すなわち、基準画像の画素については、基準画像の左上の画素を選択し、45度右上の画素を順に選択する。
【0035】
そして、端部まで選択し終わると、左端の画素のうちの最も上段の画素を選択し、再び45度右上に順に選択する処理を繰り返す。この際、比較画像については、基準画像のうちの選択中の画素と対応する斜め方向に位置する画素を左下端から右上端まで順次選択する。
【0036】
そして、この際の視差コストS(up,uq)を求める。
[手順3−2]
そして、計算済みの節点のコストD(p,up)と、視差コストS(up,uq)とについてビタビアルゴリズムを適用する。
【0037】
ここでは、
図7(a)に示すように、前述のビタビアルゴリズムの式を利用して、節点毎に、このE(up)が最小となる節点コストおよび視差コストの組み合わせを求める。この演算によって得られるこれらのデータを右斜め上方向のコストとする。
【0038】
[手順3−3]
上記[手順3−1]〜[手順3−2]と同様の方法を、右上から左斜め下に向かう方向に適用することによって、ビタビアルゴリズムのコストを得る。この演算によって得られるこれらのデータを右斜め下方向のコストとする。
【0039】
[手順3−4]
上記の手順にて求めた右斜め下方向のコストと右斜め上方向のコストとを対応する節点同士で加算し、得られたデータを右斜め方向のコストEx−yとしてメモリ12に記録させる。
【0040】
[手順4]
続いて、S250の処理では、コストEx+yを下記の手順を実施することで求める。この際には、[手順3−1]〜[手順3−4]と同様に、左斜め方向のコストEx+yを求め、メモリ12に記録させる。
【0041】
ここで、上記の各処理において、ビタビアルゴリズムのコストE(p,u)(Ex、Ey、Ex−y、Ex+y)は以下の式(11)で求められる。
【0042】
【数3】
ただし、E(p,u)は、ピクセル位置p、ピクセル位置p−1との視差uの際のビタビアルゴリズムによるコスト、s(u,v)は、ピクセル位置p−1からピクセル位置pになるときに、視差がvからuに変化する際のコスト、D(p,u)は、ピクセル位置p、視差uのときの節点のコストを表す。
【0043】
図8に示す例では、例えば、左から右方向に向けて、ピクセル位置p-1からpへのビタビアルゴリズムのコストを演算する例を示している。ピクセル位置p, 視差uのビタビアルゴリズムのコストは、ピクセル位置p−1にある全ての節点から接続される経路の内で、最も小さい{Ep−1,v}+s(u,v)}に自ノードのD(p,u)を足したものになる。
【0044】
ここで、取り得る視差の範囲をm, 探索範囲(
図8での矢印の本数)をn個とすると、ピクセル位置p−1からpへ遷移するためには、m×n回の探索を行う必要があるといえる。
【0045】
しかしながら、本実施形態においては、下記式を用いてE(p,u)を求める。
【0046】
【数4】
この式(12)では、視差(u−1)かつピクセル位置pでのコストと、視差u、ピクセル位置(p−1)のコストと、節点のコストD(p,u)とを利用して、最適解を求めている。
【0047】
本実施形態において式(11)の代わりに式(12)を用いるのは、式(11)と式(12)とが等価であるからである。式(11)と式(12)とが等価であることを以下に証明する。
【0048】
【数5】
式(13)について、E(p,u)は上記のように,minの部分について,{v=0,…,u−1}の範囲と{v=u}のときの2項比較と等価となる。また、式(14)は、式(11)におけるuを(u−1)に置換した定義と同様の式である。
【0049】
【数6】
上記式(14)の右辺のDを左辺に移項し,両辺に−s(u−1,v)+s(u,v)を足すと以下の式(16)が得られる。
【0050】
【数7】
そして、式(13)の右辺のmin{E(p−1,v)+s(u,v)}の部分を式(16)の左辺に置き換えると、E(p,u)は上記の式(12)で表される。つまり、2項の比較演算(min部分)と節点コストDとの足し算により算出できることが分かる。
【0051】
なお、上記においては、s(u, v)=u−vとしている。このように式(11)に換えて式(12)を用いてコストE(p,u)を求めることで、m×n回の探索を2m回の探索とすることができる。すなわち、処理を高速化することができる。
【0052】
詳細には、式(12)を用いた本実施形態の処理(FastVitarbi)では、
図9に示すように、式(11)を採用した例(NormalVitarbi)と比較して、処理時間が1/3〜1/10程度に短縮できることが分かる。なお、
図9における数値は相対的な処理時間を表しており、
図9では参考のために適当な3〜5点の分岐先に限定して演算を行った例(NormalVitarbiCost)についても記載している。
【0053】
続いて、
図3に戻り、
方向毎に演算された最小コストを互いに加算した値を最小値とする(S260)。そして、コストE(E(p,u))に従って、最小となる視差を選択し(S270)、基準画像における各画素と比較画像における各画素との対応関係をメモリ12に記録し(S280)、対応点探索処理を終了する。
【0054】
このような対応点探索処理が終了すると、
図2に戻り、各画素における対応点の視差に応じて各画素に写っている物標までの距離を算出する(S140)。そして、これらの画素と距離との対応データを車両制御装置30に対して出力し(S150)、距離演算処理を終了する。
【0055】
[本実施形態による効果]
上記距離検出装置1において処理部10は、複数の画像のうちの基準画像中のある画素を表す基準画素における画素情報(輝度、明暗、分散)と、基準画像を除く他の画像(比較画像)中の画素を表す比較画素における画素情報と、の差異に基づく画素コストを、基準画素および比較画素を変更しつつ、基準画素毎に演算する(S210)。そして、基準画素を変更する際において基準画素と比較画素との座標差である視差の変化量に対するコストを表す視差コストを、基準画素毎に演算し、各基準画素に対して、画素コストと視差コストとの和を表す合計コストが最小値となる際の比較画素との組み合わせを演算する(S220〜S260)。この際、基準画素および比較画素を複数の方向に沿って順に変更したときにおける合計コストが最小となるときの最小コストを演算し、方向毎に演算された最小コストを互いに加算した値を最小値とする。さらに、各基準画素に対応する比較画素を、各基準画素に対応する対応点として設定する(S270)。
【0056】
このような距離検出装置1によれば、最小コストを演算する際に、1方向だけでなく複数の方向に沿って比較画素を変更させ、この際のコストをそれぞれ求めるので、1方向だけではエッジ部が抽出できない場合であっても、複数方向でエッジ部を探索することができるので、エッジ部を抽出しやすくすることができる。
【0057】
よって、複数の画像間でエッジ部を対応付けやすくすることができるので、複数の画像間の対応点を探索する際に、より精度よく対応点の探索を行うことができる。そして、この対応点の探索結果を利用して物標までの距離を測定するので、距離の測定精度を向上させることができる。
【0058】
より詳細には、例えば
図10(a)に示すような撮像画像において、水平方向1方向だけの視差を考慮した場合には、
図10(b)の破線で囲われた領域において示すように、距離が正確に求められていない部位が比較的多く存在する。しかし、本実施形態のように複数の方向についての視差を考慮した場合には、
図10(c)に示すように、水平方向1方向だけの視差を考慮した場合に距離が正確に求められなかった部位においても正確に距離が求められていることが分かる。
【0059】
また、上記距離検出装置1において処理部10は、基準画素および比較画素を複数の方向に沿って比較画像の一方の端部から他方の端部まで順に変更したときにおける最小コストを方向毎に演算し、方向毎に演算された最小コストを加算した値を最小値とする。
【0060】
このような距離検出装置1によれば、方向毎により広範囲の比較画素について探索を行うので、視差が大きな場合にも対応点の探索を良好に行うことができる。
上記距離検出装置1において処理部10は、基準画素および比較画素を第1方向に沿って順に変更したときにおける最小コストを演算し、基準画素および比較画素を、第1方向とは異なる1または複数の方向を表す第2方向に沿って順に変更したときにおける最小コストを方向毎に演算する。そして、各最小コストを加算した値を前記最小値とする。
【0061】
特に、上記距離検出装置1において処理部10は、動的計画法によって各方向の最小コストを演算し、新たに得られた最小コストを用いて既に得られた最小コストの補正を行う。
【0062】
このような距離検出装置1によれば、ある方向について求めた最小コストに誤りがあるとしても、他の方向について求めた最小コストでこの誤りをより確からしい値に補正することができる。よって、より対応点の探索精度を向上させることができる。
【0063】
[その他の実施形態]
本発明は、上記の実施形態によって何ら限定して解釈されない。また、上記の実施形態の構成の一部を、課題を解決できる限りにおいて省略した態様も本発明の実施形態である。また、上記の複数の実施形態を適宜組み合わせて構成される態様も本発明の実施形態である。また、特許請求の範囲に記載した文言のみによって特定される発明の本質を逸脱しない限度において考え得るあらゆる態様も本発明の実施形態である。また、上記の実施形態の説明で用いる符号を特許請求の範囲にも適宜使用しているが、各請求項に係る発明の理解を容易にする目的で使用しており、各請求項に係る発明の技術的範囲を限定する意図ではない。
【0064】
例えば、上記実施形態において、車両に適用したが、車両以外にも適用可能である。また、上記実施形態においては、多数の方向についてビタビアルゴリズムを適用したが、少なくとも2方向においてビタビアルゴリズムを適用すればよい。
【0065】
さらに、上記実施形態においては、画像の端部から反対側の端部までビタビアルゴリズムを適用したが、端部までに限らず、予め設定された領域内(あるピクセル数等)においてビタビアルゴリズムを適用すればよい。
【0066】
[実施形態の構成と本発明の手段との対応関係]
上記実施形態の処理部10が実施する処理において、S130の処理は本発明でいう対応点探索方法および画素対応手段に相当し、本実施形態のS140の処理は本発明でいう測定手段に相当する。また、本実施形態のS210の処理は本発明でいう画素コスト演算工程に相当し、本実施形態のS220〜S260の処理は本発明でいう最小コスト画素演算工程に相当する。
【0067】
さらに、本実施形態のS220の処理は本発明でいう第1コスト演算工程に相当し、本実施形態のS230〜S250の処理は本発明でいう第2コスト演算工程に相当する。また、本実施形態のS260の処理は本発明でいうコスト加算工程に相当する。
【0068】
さらに、本実施形態のS270の処理は本発明でいう対応点設定工程に相当する。