実施形態の移動量推定方法においては、複数のカメラが取り付けられている移動体の移動量が推定される。このとき、移動量推定装置は、複数のカメラによりそれぞれ得られる映像を利用して、その移動体の移動量を推定する。
移動体の「移動量」は、並進移動量(移動距離および移動方向)および回転量(ヨー回転)により表わされる。すなわち、移動量推定装置は、移動体の並進移動量および回転量を推定する。ただし、移動量推定装置は、移動体の並進移動量または回転量の一方を推定するようにしてもよい。なお、移動量を推定する対象の移動体は、特に限定されるものではないが、例えば、乗用車を含む車両、工場等で使用される搬送台車等である。また、移動体は、路面上を移動(例えば、走行)するものとする。
図1は、移動体に取り付けられるカメラとその視野について示す。図1に示すように、移動体1には、カメラ2a〜2dが取り付けられている。カメラ2aは、移動体1の前部に取り付けられ、移動体1の前方の映像を取得する。また、カメラ2bは、移動体1の後部に取り付けられ、移動体1の後方の映像を取得する。さらに、カメラ2c、2dは、それぞれ、移動体1の右側部および左側部に取り付けられ、移動体1の右方および左方の映像を取得する。なお、移動体1の進行方向を「前方」と呼ぶことにする。
カメラ2a、カメラ2b、カメラ2c、カメラ2dは、それぞれ視野領域3a、3b、3c、3dを有する。視野領域は、対応するカメラにより映像が取得される領域である。ここで、各カメラ2a〜2dは、いずれも広角カメラであり、大きな視野角を有する。図1に示す例では、各カメラ2a〜2dの視野角は、約180度である。
このため、視野領域3a、3b、3c、3dは、互いに一部が重なり合う。例えば、共通視野領域4eは、カメラ2aの視野領域3aおよびカメラ2cの視野領域3cが互いに重なり合う領域である。すなわち、共通視野領域4eの映像は、カメラ2aおよびカメラ2cの双方により取得される。同様に、共通視野領域4fは、カメラ2bの視野領域3bおよびカメラ2cの視野領域3cが互いに重なり合う領域であり、共通視野領域4gは、カメラ2aの視野領域3aおよびカメラ2dの視野領域3dが互いに重なり合う領域であり、共通視野領域4hは、カメラ2bの視野領域3bおよびカメラ2dの視野領域3dが互いに重なり合う領域である。なお、各共通視野領域4e〜4hは、図1では、斜線領域で表わされている。
実施形態の移動量推定方法は、共通視野領域4e〜4hの少なくとも1つの映像を利用して、移動体1の移動量を推定する。なお、実施形態の移動量推定方法は、移動体1に4台のカメラが取り付けられている場合にのみ適用されるものではなく、移動体1に2台以上のカメラが取り付けられている場合に適用可能である。
<<第1の実施形態>>
図2は、第1の実施形態の移動量推定装置の機能ブロック図である。第1の実施形態の移動量推定装置10は、画像入力部11、同期制御部12、路面投影部13、路面模様抽出部14、移動量推定部15を備える。また、移動量推定装置10には、カメラ2a〜2dからそれぞれ映像データが入力される。さらに、移動量推定装置10は、映像データDB16に接続されている。なお、路面投影部13、路面模様抽出部14、移動量推定部15は、それぞれ、発明に係る投影部、抽出部、推定部の一例である。
カメラ2a〜2dは、図1に示すように移動体1に取り付けられており、それぞれ映像データを取得する。映像データは、特に限定されるものではないが、例えば、30フレーム/秒の動画像データである。
画像入力部11は、同期制御部12により生成される同期信号に従って、カメラ2a〜2dの映像データを取り込む。ここで、同期制御部12は、例えば、カメラの映像同期信号に合わせて、あるいはタイマまたはカウンタを備え、所定の時間間隔で同期信号を出力する。第1の実施形態では、一例として、カメラ2aからの映像同期信号と同期させることを想定して、カメラ2aから映像信号を同期制御部12に入力する形態を示したが、映像同期信号を入力するためのカメラは、カメラ2b〜2dの他のカメラとしても良い。また、カメラからの映像同期信号を用いず、同期制御部12が備えるタイマまたはカウンタで同期信号を出力する場合は、カメラからの映像同期信号の入力を用いなくとも良い。そして、画像入力部11は、同期信号を受信する毎に、カメラ2a〜2dの映像データから、フレーム内の各画素の画素値を含むデジタル情報を生成する。すなわち、画像フレームを表す2次元配列の各要素にそれぞれ画素値を有するデジタル画像情報が生成される。画素値は、輝度値および/または色情報で表わされる。
なお、同期制御部12は、必ずしも一定の時間間隔で同期信号を出力しなくてもよい。例えば、同期制御部12は、移動体1の移動速度に応じて同期信号を生成する時間間隔を決定してもよい。この場合、同期制御部12は、移動体1の移動速度が速いときに短い時間間隔で同期信号を生成し、移動体1の移動速度が遅いときに長い時間間隔で同期信号を生成してもよい。
路面投影部13は、画像入力部11から入力されるデジタル画像を移動体1の走行路面に投影することにより、路面投影像を生成する。すなわち、路面投影部13は、各カメラ2a〜2dの映像データをそれぞれ路面投影像に変換する。そして、路面投影部13は、生成した路面投影像を映像データDB16に記録する。なお、以下の説明では、移動体1の走行路面を単に「路面」を呼ぶことにする。
路面模様抽出部14は、路面投影部13によって生成される複数の路面投影像の共通視野領域において、共通視野を有する路面投影像間で互いに一致する画像パターンを抽出する。抽出される画像パターンは、路面上の模様(以下、路面模様)を表す。そして、路面模様抽出部14は、抽出した路面模様を含む路面模様画像を映像データDB16に記録する。
映像データDB16は、例えば半導体メモリであり、各カメラ2a〜2dの路面投影像および各共通視野領域の路面模様画像を格納する。ここで、映像データDB16は、最新の路面投影像および路面模様画像に加えて、少なくとも直前の路面投影像および路面模様画像を保持する。また、映像データDB16は、後述する統合路面投影画像を格納してもよい。
移動量推定部15は、映像データDB16に記録されている最新の路面模様画像および直前の路面模様画像に基づいて、移動体1の移動量を推定する。すなわち、移動量推定部15は、路面模様画像の時間変化に基づいて移動体1の移動量を推定する。なお、移動量推定部15は、路面模様画像だけでなく、路面投影像も利用して移動体1の移動量を推定するようにしてもよい。
このように、移動量推定装置10においては、路面投影部13は、カメラ2a〜2dの映像データからそれぞれ路面投影像を生成する。また、路面模様抽出部14は、複数の路面投影像の共通視野領域において、共通視野を有する路面投影像間で互いに一致する画像パターンを抽出する。このとき、後で詳しく説明するが、共通視野領域から立体物は抽出されず、路面に形成されている路面模様が抽出される。そして、移動量推定部15は、路面模様画像の時間変化に基づいて移動体1の移動量を推定する。すなわち、移動体1の移動量を推定する処理において、映像データ中の立体物の影響が除去されるので、移動量推定装置10は、移動体1の移動量を精度よく推定できる。
次に、路面投影部13、路面模様抽出部14、移動量推定部15の動作を具体的に説明する。なお、以下の説明では、図3に示す直交座標系を利用する。この座標系では、移動体1の進行方向をz方向と定義する。また、z方向に直交し、且つ移動体1の横方向(図3では、進行方向に対して右向き)にx方向が定義される。さらに、z方向に直交し、且つ移動体1の高さ方向(図3では、下向き)にy方向が定義される。
<路面投影部13の動作>
路面投影部13は、同期制御部12から同期信号を受信したタイミングおいて、カメラ2a〜2dの映像データからそれぞれ路面投影像を生成する。このとき、路面投影像を生成する領域は、移動体1の位置を基準として予め決められているものとする。すなわち、路面投影部13は、図4において破線で囲まれた領域について、入力映像データから路面投影像を生成する。ただし、図4に示す破線で囲まれた領域内であっても、カメラ2a〜2dの視野領域でない領域(例えば、移動体1の直下領域)については、映像データが生成されないので、路面投影像も生成されない。
図4に示す例では、路面投影部13は、カメラ2aにより得られる視野領域3aの映像データから、領域R1、R2、R3の路面投影像を生成する。同様に、路面投影部13は、カメラ2cにより得られる視野領域3cの映像データから領域R3、R4、R5の路面投影像を生成し、カメラ2bにより得られる視野領域3bの映像データから領域R5、R6、R7の路面投影像を生成し、カメラ2dにより得られる視野領域3dの映像データから領域R7、R8、R1の路面投影像を生成する。
このとき、各共通視野領域4e〜4hにおいては、それぞれ路面投影像が重複して生成される。例えば、カメラ2a、2cの共通視野領域4eにおいては、カメラ2aの映像データから領域R3の路面投影像が生成されると共に、カメラ2cの映像データからも領域R3の路面投影像が生成される。
このように、路面投影部13は、各カメラ2a〜2dの映像データからそれぞれ路面投影像を生成する。ここで、カメラ2a〜2dの映像データから路面投影像を生成する処理は、生成される路面投影像の各画素について、入力映像の対応する画素を特定する処理に相当する。そこで、以下では、図5に示すように、入力映像の画素(sx,sy)が、路面投影像の画素(u,v)に投影されるものとする。この場合、i(i=2a,2b,2c,2d)番目のカメラの映像に対応する路面投影像の画素(u,v)の画素値Qi(u,v)は、下記(1)式で与えられる。
Qi(u,v)=INTERP(Ii, (sx,sy)) ・・・(1)
「INTERP()」は、補間演算を表す。「Ii」は、i番目のカメラからの映像を表す。
ここで、路面投影像のサイズをPW×PH画素とする。例えば、図4に示す例では、波線で囲まれる領域が、PW×PH画素の画像で表わされる。なお、PWおよびPHは、それぞれ路面投影像の幅および高さであり、下式で表わされる。
PW=2×ww+1
PH=2×hh+1
ww、hhは、下式で表わされる。
ww=MX/rx
hh=MY/ry
MX、MY(ミリメートル)は、それぞれ、路面投影像を生成する領域の幅および高さの2分の1に相当する。rx、ry(ミリメートル/ピクセル)は、1画素当たりの投影サイズを表す。
また、i番目のカメラの配置は、下式で表わされるものとする。なお、Tiは、i番目のカメラが取り付けられている位置を表す。Riは、i番目のカメラの光軸方向を表す。
上記条件の下では、i番目のカメラにより撮影される任意の目標物の座標は下記(2)式で表わされる。
Lx=r11{(u−ww)rx−Ti x}+r12{−(v−hh)ry−Ti y}+r13(−Ti z)
Ly=r21{(u−ww)rx−Ti x}+r22{−(v−hh)ry−Ti y}+r23(−Ti z)
Lz=r31{(u−ww)rx−Ti x}+r32{−(v−hh)ry−Ti y}+r33(−Ti z) ・・・(2)
次に、上記(2)式から下記の定義を導入する。
そうすると、路面投影像の画素(u,v)に対応する入力映像の画素(sx,sy)は、下記(3)式で得られる。
sx=fx×p+cx
sy=fy×p+cy ・・・(3)
なお、fx、fyは、それぞれ、カメラの横方向および縦方向の焦点距離を表す。また、cx、cyは、図5に示すように、入力映像データの画像中心位置を表す。
上記(2)(3)式において、Ti、Riは、カメラ2a〜2dの配置に応じて決まる。また、fx、fyは、カメラ2a〜2dの仕様であり、定数である。ここで、カメラ2a〜2dの配置を表す情報(Ti、Ri)、及びカメラ2a〜2dの焦点距離(fx、fy)を含むカメラの仕様に係わる情報は、カメラ情報として移動量推定装置10がアクセス可能なメモリに格納されている。そして、路面投影部13は、図2に示すように、そのカメラ情報を参照することができる。ww、hh、rx、ryは、いずれも予め設定される定数であり、これらの情報も移動量推定装置10がアクセス可能なメモリに格納されている。したがって、路面投影部13は、路面投影像の画素(u,v)に対して、入力映像内の対応する座標(sx,sy)を一意に算出することができる。
ただし、路面投影像の画素(u,v)に対して特定される入力映像内の座標(sx,sy)は、必ずしも1つの画素を指し示すものではない。たとえば、図6に示す例では、路面投影像の画素(u,v)に対して、入力映像内の座標(51.7, 45.6)が算出されている。この場合、路面投影像の画素(u,v)の画素値Qi(u,v)は、座標(sx,sy)に隣接する4つの画素P1〜P4の画素値に基づく補間演算で算出される。補間演算は、例えば、画素P1〜P4の画素値の重み付け平均により実現される。
このように、路面投影部13は、カメラ2a〜2dの映像データに基づいて、路面投影像の各画素の画素値を算出する。これにより、路面投影像が生成される。
なお、路面投影部13は、上述のようにして生成される路面投影像に対してSobel演算等の微分処理を実行してもよい。画像に対して微分処理を実行すると、模様の輪郭が強調され、各カメラ2a〜2dの特性の差異、あるいは映像の濃淡値の時間変化による影響が抑制される。したがって、以下の説明では、上述の投影処理によって得られた画像に対してさらに微分処理を実行した後の画像を路面投影像と呼ぶことにする。
路面投影部13は、上述のようにして生成した路面投影像を映像データDB16に記録する。すなわち、同期制御部12から同期信号が出力される毎に、カメラ2a〜2dの映像データから生成される4つの路面投影像が映像データDB16に記録される。
<路面模様抽出部14の動作>
路面模様抽出部14は、路面投影部13により生成される複数の路面投影像の共通視野領域において、共通視野を有する路面投影像間で互いに一致する画像パターンを路面模様として抽出する。以下、1つの例として、図1または図4に示すカメラ2a、2cの共通視野領域4eについて説明する。なお、路面模様を抽出する方法は、他の共通視野領域4f〜4hについても同様である。
図7は、移動体1の周辺の環境の一例を示す図である。ここで、図7は、移動体1およびその周辺を上方から見たときの様子を表している。そして、図7に示す例では、移動体1の右斜め前方に、路面模様21および立体物22が存在している。路面模様21は、路面に形成されている模様であり、例えば、横断歩道あるいは道路標識などの路面に描かれている模様である。なお、路面模様21は、路面に対して「高さ」を有していないものとする。立体物22は、路面に対して「高さ」を有する物体である。この例では、立体物22は、路面に対して垂直に立てられた板状の物体(例えば、立て看板など)である。
移動体1には、上述したように、カメラ2a、2cが取り付けられている。そして、図7に示す時刻において、路面模様21および立体物22は、カメラ2aの視野範囲内に位置しており、且つ、カメラ2cの視野範囲内にも位置している。すなわち、路面模様21および立体物22は、図1または図4に示す共通視野領域4eの中に位置している。
図8は、撮影された立体物の路面投影像について説明する図である。ここでは、カメラ2aにより立体物22が撮影されたものとする。なお、図8において路面模様21は省略されている。ここで、立体物22は、図8(a)に示すように、路面に対して垂直に立てられた板状の物体である。この場合、カメラ2aにより得られる映像データを路面に投影すると、図8(b)に示す路面投影像が生成される。即ち、映像データ内の立体物の「高さ」は、路面投影像においては「奥行き」として表わされる。このため、立体物22は、図8(b)に示す路面投影像においては、斜線領域で示すように、立体物22と路面とが接する直線23から、カメラ2aを原点として放射状に広がる画像パターンとして表わされる。さらに、図8(b)に示す画像に対して微分処理を実行すると、図8(c)に示すように、輪郭が強調された路面投影像が得られる。
図9(a)は、図7においてカメラ2aにより得られる映像データから生成される路面投影像を示す。図9(b)は、図7においてカメラ2cにより得られる映像データから生成される路面投影像を示す。なお、図9(a)および図9(b)に示す路面投影像は、微分処理が実行された後の状態を表している。したがって、図7に示す路面模様21は、路面投影像においては、その輪郭のみが現れている。
立体物22は、路面投影像においては、図8を参照しながら説明したように、立体物22が置かれている位置からカメラを原点として放射状に広がる画像パターンとして表わされる。このため、カメラ2aの路面投影像においては、立体物22は、図9(a)に示すように、画像パターン24a、25a、26aで表わされる。同様に、カメラ2cの路面投影像においては、立体物22は、図9(b)に示すように、画像パターン24c、25c、26cで表わされる。このように、立体物22の路面投影像は、カメラの位置に応じて異なる画像パターンとして表わされる。
路面模様抽出部14は、カメラ2aの路面投影像とカメラ2cの路面投影像とを比較して、それらの路面投影像間で互いに一致する画像パターンを路面模様として抽出する。すなわち、路面模様抽出部14は、図9(a)および図9(b)に示す路面投影像を比較する。
図10は、図9(a)に示すカメラ2aの路面投影像および図9(b)に示すカメラ2cの路面投影像を重ね合わせた状態を表している。この場合、路面模様21は、2つの路面投影像間で互いに一致する。しかし、立体物22は、カメラ2aの路面投影像においては画像パターン24a、25a、26aで表わされ、カメラ2cの路面投影像においては画像パターン24c、25c、26cで表わされる。ここで、画像パターン24a、24cは、2つの路面投影像間で互いに一致する。しかし、画像パターン25a、25cは互いに異なり、また、画像パターン26a、26cも互いに異なる。
路面模様抽出部14は、上記2つの路面投影像間で互いに一致する画像パターンを路面模様として抽出する。そうすると、図11に示すように、路面模様21に対応する画像パターンが抽出される。このとき、画像パターン24a、24cも抽出される。なお、画像パターン24a、24cは、立体物22と路面との境界線に相当する。この結果、路面投影像から立体物が除去された画像が生成される。以下、このようにして生成される画像を路面模様画像と呼ぶことがある。
図12は、路面投影像間で互いに一致する画像パターンを抽出する処理を説明する図である。路面模様抽出部14は、比較する2つの路面投影像(または、2つの路面投影像の互いに重なり合う領域)をそれぞれ複数の小領域(以下、画像ブロック)に分割する。図12に示す例では、カメラ2aの路面投影像が画像ブロックA1〜A9に分割され、カメラ2cの路面投影像が画像ブロックC1〜C9に分割されている。画像ブロックA1〜A9および画像ブロックC1〜C9は、互いに対応する領域を表している。なお、画像ブロックのサイズは、特に限定されるものではないが、たとえば、4×4画素、8×8画素、16×16画素などとすることができる。
路面模様抽出部14は、2つの路面投影像間で対応する画像ブロックの画像パターンを比較する。例えば、路面模様抽出部14は、SAD(Sum of Absolute Difference)を用いて画像パターンを比較する。すなわち、路面模様抽出部14は、対応する2つの画像ブロック間で、対応する画素の画素値の差分絶対値をそれぞれ算出し、それら差分絶対値の総和を求める。そして、この差分絶対値の総和が予め決められた閾値よりも小さければ、2つの画像ブロックの画像パターンが互いに一致すると判定される。一方、差分絶対値の総和が予め決められた閾値以上であれば、2つの画像ブロックの画像パターンが互いに一致しないと判定される。
図12において、まず、画像ブロックA1、C1が比較される。ここで、画像ブロックのA1の画像は「△」であり、画像ブロックのC1の画像も「△」である。したがって、画像ブロックA1、C1の画像パターンが互いに一致すると判定される。そうすると、路面模様抽出部14は、路面模様画像の対応する画像ブロックT1の画像データとして、画像ブロックA1、C1のいずれか一方の画像データを出力する。ここで、画像ブロックA1、C1の画像パターンは互いに一致しているので、面模様抽出部14は、画像ブロックA1、C1のいずれの画像データを出力してもよい。
続いて、画像ブロックA2、C2が比較される。ここで、画像ブロックのA2の画像は「○」であり、画像ブロックのC2の画像は「☆」である。したがって、画像ブロックA2、C2の画像パターンが互いに一致しないと判定される。そうすると、路面模様抽出部14は、路面模様画像の対応する画像ブロックT2の画像データとして、「ゼロ」を出力する。「ゼロ」は、画像ブロック内のすべての画素の画素値がゼロである画像データである。
同様に、路面模様画像の画像ブロックT3〜T9が生成される。なお、上記2つの路面投影像の対応する画像ブロックがいずれも「無模様」であるときは、画像パターンが互いに一致し得る。例えば、画像ブロックA7、C7の画像パターンは互いに一致すると判定される。この場合、路面模様抽出部14は、路面模様画像の対応する画像ブロックT7の画像データとして、画像ブロックA7、C7のいずれか一方の画像データを出力する。
このように、路面模様抽出部14は、路面投影像間で対応する画像ブロックの画像パターンが互いに異なるときに、「ゼロ」を出力する。これにより、立体物が除去された路面模様画像が生成される。
路面模様抽出部14は、各共通視野領域に対して、上述の路面模様画像を生成する。この結果、路面模様抽出部14は、図13に示す全体路面模様画像を得る。全体路面模様画像は、共通視野領域R1、R3、R5、R7には、図12に示す方法で生成された路面模様画像を有する。また、全体路面模様画像の他の領域R2、R4、R6、R8、R9の各画素には、「ゼロ」が与えられる。なお、以下の説明では、全体路面模様画像のことを単に「路面模様画像」と呼ぶことがある。
さらに、路面模様抽出部14は、図14に示す統合路面投影画像を生成する。統合路面投影画像は、共通視野領域R1、R3、R5、R7には、図12に示す方法で生成された路面模様画像を有する。また、単独視野領域R2、R4、R6、R8には、対応するカメラの路面投影像が割り当てられる。例えば、単独視野領域R2は、カメラ2aのみにより映像データが生成される。この場合、単独視野領域R2には、カメラ2aの映像データから生成される路面投影像が割り当てられる。なお、いずれのカメラ2a〜2dの視野範囲でない領域R9の各画素には、「ゼロ」が与えられる。
このように、路面模様抽出部14は、路面投影部13により得られる路面投影像に基づいて、路面模様画像および統合路面投影画像を生成する。また、路面模様抽出部14は、生成した路面模様画像および統合路面投影画像を映像データDB16に記録する。なお、路面模様抽出部14は、例えば、所定の時間間隔で路面模様画像および統合路面投影画像を生成して映像データDB16に記録する。そして、映像データDB16は、最新の路面模様画像および統合路面投影画像に加えて、過去の路面模様画像および統合路面投影画像(少なくとも、直前の路面模様画像および統合路面投影像)を保持する。
<移動量抽出部15の動作>
移動量抽出部15は、路面模様抽出部14により生成された路面模様画像の時間変化に基づいて、移動体1の移動量を推定する。図15は、移動量抽出部15の処理の概略を示すフローチャートである。
ステップS1において、移動量抽出部15は、共通視野領域から抽出された路面模様の時間変化に基づいて、移動体1の移動量を推定する。つづいて、移動量推定部15は、ステップS2において、統合路面投影画像およびステップS1の推定結果を用いて、より高い精度で移動体1の移動量を推定する。すなわち、移動量推定部15は、統合路面投影画像を利用して、ステップS1で得られた移動量を補正する。
図16は、図15に示すステップS1の処理を示すフローチャートである。このフローチャートの処理は、移動量推定部15によって実行される。また、移動量推定部15は、映像データDB16に記録されている路面模様画像を利用して、移動体1の移動量を推定する。ここで、移動量推定部15は、時刻t1の映像データに基づいて生成された路面模様画像C(t1)、および時刻t2の映像データに基づいて生成された路面模様画像C(t2)を映像データDB16から取得するものとする。なお、時刻t2は、この例では、現在時刻である。時刻t1は、時刻t2に対して所定時間だけ過去の時刻である。時刻t1と時刻t2との間の時間間隔は、特に限定されるものではないが、例えば、カメラ2a〜2dのフレーム間隔(1/30秒)、またはその整数倍である。そして、移動量推定部15は、時刻t1と時刻t2との間における移動体1の移動量を推定する。
ステップS11において、移動量推定部15は、変数Mmaxをゼロに初期化する。変数Mmaxは、時刻t1の画像と時刻t2の画像との間の照合度(或いは、相関)の最大値を表す。
ステップS12において、移動量推定部15は、回転角aを「−A」に初期化する。回転角aは、移動体1の移動量の1つの要素である平面回転(或いは、ヨー回転)の回転量を表す変数である。
ステップS13において、移動量推定部15は、前時刻の路面模様画像C(t1)を角度aだけ回転変換することにより、回転路面模様画像D(t1)を生成する。なお、画像の回転変換は、例えば、各画素の座標を回転行列で演算することに実現される。
ステップS14において、移動量推定部15は、ステップS13で得られた回転路面模様画像D(t1)と、現在時刻の路面模様画像C(t2)との間で、最大照合度Mmaxを与える並進変位(DXmax、DYmax)を特定する。ステップS14の処理については、後で詳しく説明する。
ステップS15において、移動量推定部15は、予め決められた所定の角度Δaを回転角aに加算する。なお、角度Δaは、回転角aを−Aから+Aまでスキャンするための角度ステップを表す。そして、ステップS16において、移動量推定部15は、回転角aがA以下であるか否かを判定する。回転角aがA以下であれば、移動量推定部15の処理はステップS13に戻る。
このように、移動量推定部15は、回転路面模様画像D(t1)の回転角aを−Aから+Aまでスキャンしながら、回転路面模様画像D(t1)と路面模様画像C(t2)との間で最大照合度Mmaxを与える並進変位(DXmax、DYmax)を特定する。そして、回転角aがAよりも大きくなると(ステップS16:No)、移動量推定部15は、ステップS17において、移動体1の移動量の推定結果として、最大照合度Mmaxを与える並進変位(DXmax、DYmax)および回転角(Amax)を出力する。なお、ステップS17の出力は、時刻t1〜時刻t2における移動体1の移動量の推定値である。
次に、ステップS14に示す処理を詳しく説明する。ここでは、下記の変数が使用される。
dx:回転路面模様画像D(t1)のX方向の変位量を表す
dy:回転路面模様画像D(t1)のY方向の変位量を表す
mmax:ステップ22〜S30の処理ループの中で照合スコアScの最大値を表す
dxmax:ステップ22〜S30の処理ループの中で照合スコアScが最大となるX方向の変位量を表す
dymax:ステップ22〜S30の処理ループの中で照合スコアScが最大となるY方向の変位量を表す
Mmax:回転角aを−Aから現在の角度までスキャンした処理の中での照合スコアScの最大値を表す
DXmax:Mmaxを与えるX方向の変位量を表す
DYmax:Mmaxを与えるY方向の変位量を表す
Amax:Mmaxを与える回転角を表す
図17は、図16のステップS14の処理を示すフローチャートである。なお、図17に示すフローチャートの処理は、回転路面模様画像D(t1)の回転角aを−Aから+Aまでスキャンする手順において、与えられた回転角aに対して実行される。
ステップS21において、移動量推定部15は、変数mmaxをゼロに初期化する。ステップS22において、移動量推定部15は、変位量dyを「−DY」に初期化する。ステップS23において、移動量推定部15は、変位量dxを「−DX」に初期化する。
ステップS24において、移動量推定部15は、変位量dxおよび変位量dyに従って回転路面模様画像D(t1)の座標をシフトさせる。すなわち、移動量推定部15は、回転路面模様画像D(t1)を(dx,dy)だけシフトさせる。そして、移動量推定部15は、路面模様画像C(t2)と、(dx,dy)だけシフトした回転路面模様画像D(t1)との間で画像照合を実行して照合スコアScを算出する。
照合スコアScは、路面模様画像C(t2)、および(dx,dy)だけシフトした回転路面模様画像D(t1)が互いに重なり合う領域(図18に示す斜線領域)について下記の処理を実行することで算出される。
S=0, N=0
IF (C(x,y)!=0 && D(x+dx,y+dy)!=0) THEN
S=S+{C(x,y)−D(x+dx,y+dy)}の絶対値
N=N+1
ENDIF
Sc=LV−(S/N)
すなわち、画素値の差分絶対値の累積加算値を表す変数S、および重なり領域内の画素の個数をカウントする変数Nが初期化される。続いて、重なり領域内の各画素について、路面模様画像C(t2)の画素値C(x,y)がゼロではなく、且つ、回転路面模様画像D(t1)の画素値D(x+dx,y+dy)もゼロでないときに、画素値C(x,y)と画素値D(x+dx,y+dy)との間の差分絶対値が累積加算される。さらに、定数LVから、1画素当たりの画素値の差分絶対値を減算することにより、照合スコアScが得られる。なお、定数LVは、2つの画像の相関が高いほど照合スコアScが大きな正値となるように決定される。例えば、画素値が0〜255で表わされるときは、「LV>255」であり、一例としては「LV=300」である。
図17に戻る。ステップS25において、移動量推定部15は、ステップS24で算出された照合スコアScが変数mmaxよりも大きいか否かを判定する。そして、照合スコアScが変数mmaxよりも大きければ、移動量推定部15は、ステップS26において変数mmax、変数dxmax、変数dymaxを下記のように更新する。なお、照合スコアScが変数mmax以下であれば、ステップS26はスキップされる。
mmax←Sc
dxmax←dx
dymax←dy
すなわち、新たに算出された照合スコアScは、現時点までの照合スコアScの最大値を表す変数mmaxとして保持される。また、照合スコアScの最大値を与える変位量は、変数dxmax、dymaxとして保持される。
ステップS27において、移動量推定部15は、変位量dxにΔdxを加算する。ここで、Δdxは、X方向の変位量dxを−DXから+DXまでスキャンするための変位量のステップを表す。そして、移動量推定部15は、ステップS28において、ステップS27で更新された変位量dxがDX以下であるか否かを判定する。変数量dxがDX以下であれば、移動量推定部15の処理はステップS24に戻る。
変数量dxがDXを超えていれば、移動量推定部15は、ステップS29において、変位量dyにΔdyを加算する。ここで、Δdyは、Y方向の変位量dyを−DYから+DYまでスキャンするための変位量のステップを表す。そして、移動量推定部15は、ステップS30において、ステップS29で更新された変位量dyがDY以下であるか否かを判定する。変数量dyがDY以下であれば、移動量推定部15の処理はステップS23に戻る。
変数量dyがDYを超えていれば、移動量推定部15は、ステップS31において、変数mmaxと変数Mmaxとを比較する。そして、「mmax>Mmax」であれば、移動量推定部15は、ステップS32において、Mmax、DXmax、DYmax、Amaxを下記のように更新する。なお、「mmax>Mmax」でなければ、ステップS32はスキップされる。
Mmax←mmax
DXmax←dxmax
DYmax←dymax
Amax←a
すなわち、回転角aを−Aから現在の角度までスキャンした処理の中での算出された照合スコアScの最大値がMmaxとして保存される。また、Mmaxを与えるX方向変位量、Y方向変位量、回転角は、それぞれDXmax、DYmax、Amaxとして保存される。
このように、移動量推定部15は、図16〜図17に示す処理を実行することにより、回転路面模様画像D(t1)と路面模様画像C(t2)との間で最大照合度Mmaxを与える移動量(DXmax、DYmax、Amax)を算出する。ここで、このようにして算出される移動量は、路面模様の配置(位置および/または角度)の時間変化に相当する。すなわち、移動量推定部15は、路面模様の時間変化に基づいて、移動体1の移動量を推定する。
なお、図16〜図17に示すフローチャートで使用する「DX」「DY」「A」は、移動体1の仕様または性能に応じて決定される。例えば、「DX」「DY」は、移動体1の許容最高速度に応じて決定してもよい。
移動量推定部15は、図15に示すステップS1に続いて、ステップS2の処理を実行する。すなわち、移動量推定部15は、図14に示す統合路面投影画像を利用して、ステップS1で得られた移動体1の移動量を補正する。
図19は、図15に示すステップS2の処理を示すフローチャートである。移動量推定部15は、図19に示すステップS41〜S47を実行する。ステップS41〜S47の処理の流れは、図16に示すステップS11〜S17とほぼ同じである。ただし、ステップS11〜S17とステップS41〜S47とでは、処理対象の画像、初期値、いくつかの変数などが異なる。以下、ステップS11〜S17とステップS41〜S47との間の差異について説明する。
ステップS42において、移動量推定部15は、回転角aの初期値を「Amax−A2」に設定する。Amaxは、ステップS11〜S17の処理により得られる。A2は、ステップS11〜S17で使用する「A」よりも小さい定数である。
ステップS43において、移動量推定部15は、前時刻の統合路面投影画像E(t1)を角度aだけ回転変換することにより、回転統合路面投影画像F(t1)を生成する。なお、統合路面投影画像は、図14を参照しながら説明した通りであり、映像データDB16に記録されている。そして、ステップS44において、移動量推定部15は、ステップS43で得られた回転統合路面投影画像F(t1)と、現在時刻の統合路面投影画像E(t2)との間で、最大照合度Mmaxを与える並進変位(DXmax2、DYmax2)を特定する。
ステップS45において、移動量推定部15は、角度Δa2を回転角aに加算する。なお、角度Δa2は、回転角aをAmax−A2からAmax+A2までスキャンするための角度ステップを表す。また、Δa2は、ステップS11〜S17で使用するΔaよりも小さい角度ステップである。そして、ステップS46において、回転角aがAmax+A2以下であれば、移動量推定部15の処理はステップS43に戻る。
このように、移動量推定部15は、ステップS43〜S46において回転統合路面投影画像F(t1)の回転角aをAmax−A2からAmax+A2までスキャンしながら、回転統合路面投影画像F(t1)と統合路面投影画像E(t2)との間で最大照合度Mmaxを与える並進変位(DXmax2、DYmax2)を特定する。そして、回転角aがAmax+A2よりも大きくなると、移動量推定部15は、ステップS47において、移動体1の移動量のより詳細な推定結果として、最大照合度Mmaxを与える並進変位(DXmax2、DYmax2)および回転角(Amax2)を出力する。
図20は、図19のステップS44の処理を示すフローチャートである。なお、図20に示すフローチャートの処理は、統合回転路面投影画像F(t1)の回転角aをAmax−A2からAmax+A2までスキャンする手順において、与えられた回転角aに対して実行される。
図20に示すステップS51〜S62の処理の流れは、図17に示すステップS21〜S32とほぼ同じである。ただし、ステップS21〜S32とステップS51〜S62とでは、処理対象の画像、初期値、いくつかの変数などが異なる。以下、ステップS21〜S32とステップS51〜S62との間の差異について説明する。
ステップS51〜S62においては、変位dxは、dxmax±DX2の範囲でスキャンされる。変位dxを変化させるステップΔdx2は、ステップS21〜S32で使用するΔdxよりも小さい。また、変位dyは、dymax±DY2の範囲でスキャンされる。変位dyを変化させるステップΔdy2は、ステップS21〜S32で使用するΔdyよりも小さい。
更に、ステップS61において「mmax>Mmax」であれば、移動量推定部15は、ステップS62において、Mmax、DXmax2、DYmax2、Amax2を下記のように更新する。
Mmax←mmax
DXmax2←dxmax
DYmax2←dymax
Amax2←a
移動量推定部15は、移動体1の並進移動量の推定値としてDXmax2、DYmax2を出力する。また、移動量推定部15は、移動体1の回転量の推定値としてAmax2を出力する。
このように、第1の実施形態の移動量推定装置10(または、移動量推定方法)は、まず、路面模様画像を利用して移動体1の移動量を推定する。その後、移動量推定装置10は、路面模様画像に基づく推定結果および統合路面投影画像を利用して、移動体1の移動量をより詳細に推定する。
ここで、路面模様画像は、カメラ映像を路面に投影する処理の中で立体物の画像を除去することで得られる。したがって、第1の実施形態によれば、立体物の影響を受けることなく、移動体1の移動量を精度よく推定できる。
ただし、除去される立体物の画像領域が大きいときは、路面模様画像に含まれる特徴の数が少なくなるおそれがある。このため、移動量推定装置10は、共通視野領域でない領域の路面投影像も利用してさらに推定を行う。これにより、移動量の推定精度の低下を防ぐことができる。
なお、移動量推定装置10は、必ずしも、路面模様画像に基づく推定処理の後に統合路面投影画像を利用した推定を実行しなくてもよい。例えば、除去される立体物の画像領域が小さいときは、統合路面投影画像を利用するステップS2の処理を省略してもよい。
<<第2の実施形態>>
図21は、第2の実施形態の移動量推定装置の機能ブロック図である。第2の実施形態の移動量推定装置20は、画像入力部11、同期制御部12、路面投影部13、路面模様抽出部14、回転角入力部21、移動量推定部22を備える。ここで、画像入力部11、同期制御部12、路面投影部13、路面模様抽出部14の動作は、実質的に第1の実施形態と同じである。また、移動量推定装置20には、カメラ2a〜2dから映像データが入力され、回転角センサ5から回転データが入力される。さらに、移動量推定装置20は、映像データDB16に接続されている。
回転角センサ5は、移動体1に取り付けられており、移動体1の路面上における回転量(ヨー回転量)を表す回転データを出力する。なお、回転角センサ5は、例えば、ジャイロセンサである。
回転角入力部21は、回転角センサ5から出力される回転データに基づいて、所定の時間における移動体1の回転量を算出する。具体的には、回転角入力部21は、同期制御部12により生成される同期信号とその直前の同期信号との間での移動体1の回転量を算出する。そして、回転角入力部21は、算出した回転角を移動量推定部22に通知する。
移動量推定部22は、路面模様画像、統合路面投影画像、および回転角入力部21により算出される回転角に基づいて、移動体1の移動量を推定する。このとき、移動量推定部22は、第1の実施形態と同様に、図15に示すステップS1〜S2を実行することにより、移動体1の移動量を推定する。ただし、第2の実施形態では、移動体1の移動量のうち、移動体1の回転量については回転角センサ5により検出される。したがって、移動量推定部22は、移動体1の並進移動量を推定する。
図22は、第2の実施形態で実行されるステップS1の処理を示すフローチャートである。第2の実施形態では、移動量推定部22は、図15のステップS1の処理として、ステップS11、S12−2、S13−2、S14、S17−2を実行する。なお、ステップS11、S14の処理は、第1の実施形態と同じなので、説明を省略する。
ステップS12−2において、移動量推定部22は、移動体1の回転角aとして、回転角入力部21から通知される「Asen」を設定する。続いて、ステップS13−2において、移動量推定部22は、前時刻の路面模様画像C(t1)を角度Asenだけ回転変換することにより、回転路面模様画像D(t1)を生成する。そして、移動量推定部22は、ステップS14を実行した後、ステップS17−2において、移動体1の移動量の推定結果として最大照合度Mmaxを与える並進変位(DXmax、DYmax)を出力する。このとき、移動量推定部22は、回転角入力部21から通知される回転量Asenも合わせて出力する。
図23は、第2の実施形態で実行されるステップS2の処理を示すフローチャートである。第2の実施形態では、移動量推定部22は、図15のステップS2の処理として、ステップS41、S42−2、S43−2、S44、S47−2を実行する。なお、ステップS41、S44の処理は、第1の実施形態と同じなので、説明を省略する。
ステップS42−2において、移動量推定部22は、移動体1の回転角aとして、回転角入力部21から通知される「Asen」を設定する。続いて、ステップS43−2において、移動量推定部22は、前時刻の統合路面投影画像E(t1)を角度Asenだけ回転変換することにより、回転統合路面投影画像F(t1)を生成する。そして、移動量推定部22は、ステップS44を実行した後、ステップS47−2において、移動体1の移動量の推定結果として、最大照合度Mmaxを与える並進変位(DXmax2、DYmax2)を出力する。このとき、移動量推定部22は、回転角入力部21から通知される回転量Asenも合わせて出力する。
このように、第2の実施形態の移動量推定装置20は、回転角センサ5を利用して移動体1の回転量を取得する。すなわち、移動量推定装置20は、路面模様画像および統合路面投影画像の回転角をスキャンする処理を実行することなく、移動体1の並進移動量を推定できる。したがって、第2の実施形態においては、第1の実施形態と比較して、移動体1の移動量を推定するための演算量が少なくなる。
<<第3の実施形態>>
上述のように、実施形態(例えば、第1の実施形態)の移動量推定方法においては、立体物の画像を除去した路面投影像(すなわち、路面模様画像)を利用して移動量1の移動量が推定される。これにより、立体物の影響を受けることなく、移動体1の移動量が精度よく推定される。
第3の実施形態では、図24に示すように、複数のカメラの共通視野領域においては路面模様画像を使用すると共に、他の視野領域においては移動体1の近傍領域の路面投影像を使用する。図24に示す例では、領域R1、R3、R5、R7は、それぞれ対応する2台のカメラの共通視野領域であって、図12に示す方法で生成された路面模様画像を有する。ここで、領域R1、R3、R5、R7においては、立体物に対応する画像は除去されている。一方、領域R2、R4、R6、R8は、それぞれ対応する1台のカメラ2a、2c、2b、2dの視野領域であり、路面投影像を有する。ただし、第3の実施形態では、領域R2の路面投影像に対して、移動体1に近接する領域R2x以外の領域の各画素の画素値をゼロに置き換える処理が実行される。また、領域R4、R6、R8においても、移動体1に近接する領域R4x、R6x、R8x以外の領域の各画素の画素値をゼロに置き換える処理が実行される。以下、このようにして生成される図24に示す画像を近傍統合投影画像と呼ぶことがある。
領域R2x、R4x、R6x、R8xは、移動体1に近接しているので、その中に立体物が存在する可能性は低い。したがって、領域R2x、R4x、R6x、R8xの画像を利用して移動体1の移動量を推定しても、立体物の影響を受ける可能性は低い。なお、領域R2x、R4x、R6x、R8xは、移動体1からの距離範囲(例えば、移動体1から500mm以下の範囲)を指定することで生成される。
第3の実施形態の移動量推定装置の構成は、第1の実施形態の移動量推定装置10と実質的に同じである。ただし、第3の実施形態の移動量推定部の処理は、第1の実施形態の移動量推定部15と異なる。
図25は、第3の実施形態の移動量推定部の処理を示すフローチャートである。第3の実施形態の移動量推定部は、図25に示すステップS71〜S77を実行して移動体1の移動量を推定する。ここで、ステップS71〜S77の処理の流れは、第1の実施形態のステップS11〜S17とほぼ同じである。ただし、第1の実施形態では路面模様画像を利用するのに対して、第3の実施形態では図24に示す近傍統合投影画像を利用して移動体1の移動量を推定する。
このように、第3の実施形態の推定方法は、図24に示す近傍統合投影画像を利用して図25に示すフローチャートに従って移動体1の移動量を推定する。ここで、第1の実施形態の推定方法は、図15に示すステップS1で移動量を推定した後、さらにステップS2でその移動量を補正する処理を実行する。したがって、第3の実施形態の推定方法は、第1の実施形態と比較して演算量が少なくなる。
また、第1の実施形態で実行されるステップS1は、共通視野領域の路面模様を利用して移動量を推定する。これに対して、第3の実施形態の推定方法は、共通視野領域の路面模様に加えて、非共通視野領域内の立体物が存在する可能性の低い路面投影像も利用して移動量を推定する。したがって、第3の実施形態の推定方法は、第1の実施形態においてステップS1のみを実行する場合と比較すると、推定精度が高くなる。
<<第4の実施形態>>
第4の実施形態の移動量推定装置の構成は、第2の実施形態の移動量推定装置20と実質的に同じである。すなわち、第4の実施形態においても、移動体1の回転量は、回転角センサ5を使用して検出される。ただし、第4の実施形態の移動量推定部の処理は、第2の実施形態の移動量推定部22と異なる。具体的には、第4の実施形態の推定方法は、第3の実施形態と同様に、図24に示す近傍統合投影画像を利用して移動体1の移動量(ただし、並進移動量)を推定する。
図26は、第4の実施形態の移動量推定部の処理を示すフローチャートである。第4の実施形態の移動量推定部は、ステップS71、S72−2、S73−2、S74、S77−2を実行して移動体1の移動量を推定する。ここで、ステップS71、S72−2、S73−2、S74、S77−2の処理の流れは、図22に示す第2の実施形態のステップS11、S12−2、S13−2、S14、S17−2とほぼ同じである。ただし、第2の実施形態では路面模様画像を利用するのに対して、第4の実施形態では図24に示す近傍統合投影画像を利用して移動体1の移動量を推定する。
このように、第4の実施形態の移動量推定方法は、回転角センサ5を利用して移動体1の回転量を取得する。すなわち、第4の実施形態の移動量推定方法は、近傍統合投影画像の回転角をスキャンする処理を実行することなく、移動体1の並進移動量を推定できる。したがって、第4の実施形態においては、第3の実施形態と比較すると、移動体1の移動量を推定するための演算量が少なくなる。
<移動量推定装置のハードウェア構成>
図27は、第1〜第4の実施形態の移動量推定方法がソフトウェアで実現されるときに、移動量推定装置10、20を実現するためのコンピュータシステム100のハードウェア構成を示す図である。コンピュータシステム100は、図27に示すように、CPU101、メモリ102、記憶装置103、読み取り装置104、通信インタフェース106、および入出力装置107を備える。なお、CPU101、メモリ102、記憶装置103、読み取り装置104、通信インタフェース106、入出力装置107は、例えば、バス108を介して互いに接続されている。
CPU101は、メモリ102を利用して上述の移動量推定方法の手順を記述したプログラムを実行することにより、画像入力部11、路面投影部13、路面模様抽出部14、移動量推定部15、22、回転角入力部21の一部または全部の機能を提供する。
メモリ102は、例えば半導体メモリであり、RAM領域およびROM領域を含んで構成される。記憶装置103は、例えばハードディスクであり、実施形態の移動量推定に係わるプログラムを格納する。なお、記憶装置103は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置103は、外部記録装置であってもよい。図2または図21に示す映像データDB16は、例えば、記憶装置103に形成される。図2または図21に示すカメラ情報は、例えば、記憶装置103に格納される。
読み取り装置104は、CPU101の指示に従って着脱可能記録媒体105にアクセスする。着脱可能記録媒体105は、たとえば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。通信インタフェース106は、CPU101の指示に従ってネットワークを介してデータを送受信する。入出力装置107は、例えば、ユーザからの指示を受け付けるデバイス、カメラ2a〜2dと接続するためのインタフェース、回転角センサ5と接続するためのインタフェースに相当する。
実施形態の移動量推定に係わるプログラムは、例えば、下記の形態でコンピュータシステム100に提供される。
(1)記憶装置103に予めインストールされている。
(2)着脱可能記録媒体105により提供される。
(3)プログラムサーバ110からダウンロードする。
なお、実施形態の移動量推定装置は、例えば、移動量を推定する対象の移動体に搭載される。ここで、移動量推定装置がプロセッサで移動量推定プログラムを実行することにより実現される場合には、移動量推定のための専用プロセッサで移動量推定プログラムを実行してもよいし、他の用途にも用いる共用プロセッサで移動量推定プログラムを実行してもよい。
また、実施形態の移動量推定装置は、移動量を推定する対象の移動体の外部に設けるようにしてもよい。この場合、移動体に取り付けられている各カメラの映像データは、無線リンクを介して移動量推定装置へ送信される。そして、移動量推定装置は、無線リンクを介して受信する映像データを利用して移動体の移動量を推定する。この場合、移動量推定装置は、移動量の推定結果を、無線リンクを介して移動体に送信するようにしてもよい。
さらに、移動量推定装置は、ハードウェアで実現してもよい。或いは、移動量推定装置は、ソフトウェアとハードウェアとの組合せで実現してもよい。