画像中には、様々な姿勢の被撮影物が存在する。このような被撮影物の姿勢を、より詳細に判別する要求がある。
そこで、本発明は、オプティカルフローを利用して、被撮影物の様々な姿勢を判別可能な画像処理装置及び画像処理方法を提供することを目的とする。
上述した目的を達成するために、本発明に係る画像処理装置は、異なる時刻に得られた複数の画像データを取得する画像取得手段と、画像データに基づいて移動ベクトルを算出するオプティカルフロー算出手段と、オプティカルフロー算出手段により算出された移動ベクトルを所定方向に偏微分して、移動ベクトルの偏微分値を算出する偏微分手段と、偏微分手段により算出された偏微分値に基づいて、被撮影物を構成する面の姿勢を判定する姿勢判定手段と、を備えることを特徴とする。
この構成によれば、画像処理装置は、移動ベクトルを所定方向に偏微分して、移動ベクトルの偏微分値を算出し、さらに偏微分値に基づいて被撮影物を構成する面の姿勢を判定する。ここでは、移動ベクトルの偏微分値を利用して被撮影物を構成する面の姿勢を判定することにより、被撮影物を構成する面の姿勢を詳しく求めることができる。例えば、被撮影物を構成する面は、上向き、右向き、左向きなどの複数の姿勢をとり得るが、被撮影物を構成する面の実際の姿勢を判定することができる。
ここで、移動ベクトルの偏微分値とは、例えば、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値、移動ベクトルの横成分を横方向に偏微分して得た偏微分値、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値である。姿勢判定手段は、これらの偏微分値の1つのみを利用して被撮影物の姿勢を判定してもよいし、複数の偏微分値を利用して被撮影物の姿勢を判定してもよい。
特に、上述した画像処理装置において、姿勢判定手段は、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値、移動ベクトルの横成分を横方向に偏微分して得た偏微分値、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値、及び移動ベクトルの縦成分を横方向に偏微分して得た偏微分値の組み合わせに基づいて、被撮影物を構成する面の姿勢を判定することが好ましい。この構成によれば、被撮影物を構成する面の姿勢は4つの偏微分値の組み合わせに一義的に対応するため、4つの偏微分値の組み合わせに基づいて、被撮影物を構成する面の姿勢を判定することができる。
また、上述した画像処理装置において、姿勢判定手段は、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値が略0であり、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値が略0であり、移動ベクトルの横成分を横方向に偏微分して得た偏微分値と、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値とが略同一である場合に、被撮影物を構成する面が、光軸に対して垂直であることが好ましい。この構成によれば、被撮影物を構成する面が、画像データの光軸に対して垂直であることを判定することができる。
また、上述した画像処理装置において、姿勢判定手段は、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値が略0であり、移動ベクトルの横成分を横方向に偏微分して得た偏微分値が、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値の略2倍である場合に、被撮影物を構成する面が、画像データの光軸及び縦方向に平行であることを判定することが好ましい。この構成によれば、被撮影物を構成する面が、画像データの光軸及び縦方向に平行であることを判定することができる。
また、上述した画像処理装置において、姿勢判定手段は、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値が略0であり、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値が、移動ベクトルの横成分を横方向に偏微分して得た偏微分値の略2倍である場合に、被撮影物を構成する面が、画像データの光軸及び横方向に平行であることを判定することが好ましい。この構成によれば、被撮影物を構成する面が、画像データの光軸及び横方向に平行であることを判定することができる。
なお、上述した姿勢判定手段の判定条件において、偏微分値の略0とは、偏微分値が0に近い値であることを意味している。姿勢判定手段の具体的な処理では、偏微分値の大きさが略0判定用の閾値より小さい場合に、偏微分値が略0であると判定される。
また、偏微分値の略同一とは、2つの偏微分値が近い値であることを意味している。姿勢判定手段の具体的な処理では、2つの偏微分値の差分が略同一判定用の閾値より小さい場合に、偏微分値が略同一であると判定される。
また、偏微分値の略2倍とは、2つの偏微分値のうち一方が他方の2倍に近い値であることを意味している。姿勢判定手段の具体的な処理では、一方の偏微分値から他方の偏微分値の2倍を減じて得た差分が略2倍判定用の閾値より小さい場合に、偏微分値が略2倍であると判定される。
また、上述した画像処理装置は、画像データの撮影位置の高さのデータを記憶しており、撮影位置の高さと、移動ベクトルとに基づいて、画像データの撮影位置と被撮影物との相対速度を算出する速度算出手段を、さらに備えることが好ましい。この構成によれば、撮影位置と被撮影物との相対速度を算出することができる。
さらに、上述した画像処理装置は、速度算出手段により算出された相対速度と、移動ベクトルとに基づいて、画像データの撮影位置から被撮影物までの距離を算出する距離算出手段を、さらに備えることが好ましい。この構成によれば、画像データの撮影位置から被撮影物までの距離を算出することができる。
また、上述した画像処理装置は、オプティカルフロー算出手段が画像データに基づいて移動ベクトルを算出する前に、当該画像データを処理する前処理手段であって、移動物体に対応する画像領域を、当該移動物体の速度固有値VX/VZ及びVY/VZ(ここで、VXは移動物体の横方向速度,VYは移動物体の縦方向速度,VZは移動物体の光軸方向速度)を用いて平行移動させる前処理手段を、さらに備えることが好ましい。この構成によれば、移動物体に対応する画像領域を、当該移動物体の速度固有値を用いて平行移動させるため、被撮影物が移動している状況でも、画像処理装置による処理を好適に行うことができる。
さらに、上述した画像処理装置において、前処理手段は、速度固有値VX/VZ及びVY/VZが共通する画像領域ごとに区分し、区分された画像領域ごとに速度固有値VX/VZ及びVY/VZを用いて平行移動させることが好ましい。ここで、速度固有値VX/VZ及びVY/VZが共通する画像領域ごとに区分するためには、ハフ変換処理、ランダムサンプルコンセンサス(RANdom SAmple Consensus:RANSAC)処理などを行えばよい。
また、上述した目的を達成するために、本発明に係る画像処理方法は、被撮影物を構成する面の姿勢を判定するための画像処理方法であって、異なる時刻に得られた複数の画像データを取得する画像取得ステップと、画像データに基づいて移動ベクトルを算出するオプティカルフロー算出ステップと、移動ベクトルを所定方向に偏微分して、移動ベクトルの偏微分値を算出する偏微分ステップと、偏微分値に基づいて、被撮影物を構成する面の姿勢を判定する姿勢判定ステップと、を含む方法である。
本発明に係る画像処理装置及び画像処理方法によれば、オプティカルフローを利用して、被撮影物の様々な姿勢を判別することができる。
以下、図面を参照して、本発明の画像処理装置の好適な実施形態について説明する。本実施形態において、画像処理装置は車両に搭載されている。
図1に示すように、画像処理装置20には、撮像手段としてカメラ10が接続されている。カメラ10は、例えば、CCD[ChargeCoupled Device]カメラ10であり、画像処理装置20を搭載する自動車の前方かつ中央に取り付けられる。カメラ10は、所定時間が経過する度に、自動車の前方を撮像して、複数の画素データからなる画像データを生成する。カメラ10は、生成された画像データを、画像処理装置20に逐次送信する。
カメラ10により撮影される周辺環境の3次元座標系は、カメラ10の位置を原点とし、カメラ10の横方向(水平方向)をX軸とし、カメラ10の縦方向(鉛直方向)をY軸とし、カメラ光軸をZ軸とするワールド座標系である。3次元座標系では、カメラ10は光軸方向に移動しており、道路やその周囲の他の物体は静止しているものとされる。また、カメラ10により撮影された画像の2次元座標系は、カメラ光軸に対応する位置を原点とし、画像面の横方向をx軸とし、画像面の縦方向をy軸としている。ここで、x軸はX軸と平行であり、y軸はY軸と平行である。
画像処理装置20は、カメラ10から画像データを取り込んで、画像データを処理して車両の制御に有用な情報を求める。画像処理装置20は、物理的には、CPU、ROM、RAM等で構成されている。また、画像処理装置20は、機能的には、画像取得部22と、オプティカルフロー算出部24と、偏微分部26と、姿勢判定部28とを備えている。さらに、画像処理装置20は、後述する第1変形例で説明するように、実速度算出部30と、実距離算出部32とを備える場合もある。また、画像処理装置20は、後述する第2変形例で説明するように、前処理部34を備える場合もある。
画像取得部22は、カメラ10から送られてきた画像データを取り込んで、画像データを後の処理に適した状態とする。オプティカルフロー算出部24は、所定時間前後する画像データから、勾配法によって、オプティカルフローの移動ベクトルを算出する。より詳しく説明すると、オプティカルフロー算出部24は、画像内で着目している画素の近傍の画素は同じ運動を行うためオプティカルフローが一定である、という仮定(前提条件)から導出される次の数式(1)を利用して、全ての画素についてラスタスキャンを行って、移動ベクトルの横成分u及び縦成分vを算出する。
図2には、カメラ10により撮影された画像データに、オプティカルフローの移動ベクトルを重畳表示した一例が示されている。なお、オプティカルフロー算出部24は、他の方法により移動ベクトルを算出してもよい。例えば、オプティカルフロー算出部24は、画像から特徴点を抽出し、その特徴点を追跡することにより、移動ベクトルを算出してもよい。
偏微分部26は、オプティカルフロー算出部24により算出された移動ベクトルを所定方向に偏微分して、移動ベクトルの偏微分値を算出する。より詳しく説明すると、偏微分部26は、(I)移動ベクトルの横成分uを縦方向に偏微分して得た偏微分値、(II)移動ベクトルの横成分uを横方向に偏微分して得た偏微分値、(III)移動ベクトルの縦成分vを縦方向に偏微分して得た偏微分値、(IV)移動ベクトルの縦成分vを横方向に偏微分して得た偏微分値を算出する。具体的には、図3に示されるように、画素位置(x−1,y),(x+1,y),(x,y−1)(x,y+1)における移動ベクトルの横成分u及び縦成分vから、次の数式(2)によって画素位置(x,y)における(I)〜(IV)の偏微分値を算出する。
姿勢判定部28は、偏微分部26により算出された偏微分値に基づいて、被撮影物を構成する面の姿勢を判定する。より詳しく説明すると、姿勢判定部28は、上述した4つの偏微分値(I)〜(IV)の組み合わせに対して被撮影物を構成する面の姿勢を一義的に対応させたマップデータを記憶しており、4つの偏微分値を算出するとこのマップデータを参照して被撮影物を構成する面の姿勢を求める。そして、姿勢判定部28は、被撮影物に対応する画素位置に、被撮影物を構成する面の姿勢を特定する情報を関連付けるラベリング処理を行う。
上述したマップデータは、理論的な演算により求められる。即ち、画像データの各画素に、様々な姿勢の物体が現れたことを想定し、様々な姿勢の物体のそれぞれについて、オプティカルフローの移動ベクトルを算出し、移動ベクトルの4つの偏微分値を算出する。そして、算出された4つの偏微分値を、物体の姿勢と対応付けてROM等に記憶する。上述した一連の演算により、画像データの各画素ごとに、被撮影物を構成する面の姿勢が、4つの偏微分値に対応付けて記憶されたマップデータを得ることができる。なお、マップデータにおいて、被撮影物を構成する面の姿勢は、当該面の傾斜角度、当該面の垂線方向などで特定されればよい。上述した演算では理論的にマップデータを得ているが、実際に様々な姿勢の物体をカメラ10で撮影して、実験的にマップデータを得てもよい。
上述した画像処理装置20の処理を、図4のフローチャートを参照して説明する。先ず、画像処理装置20は、カメラ10から画像データを取り込んで、画像データの各領域についてオプティカルフローの移動ベクトルを算出する(S401)。次に、画像処理装置20は、移動ベクトルの横成分及び縦成分のそれぞれを横方向及び縦方向に偏微分して、移動ベクトルの偏微分値を算出する(S402)。次に、画像処理装置20は、算出された偏微分値に基づいて、画像データの各領域ごとに、被撮影物を構成する面の姿勢を判定し、ラベリングする(S403)。
上述した実施形態によれば、画像処理装置20は、移動ベクトルを所定方向に偏微分して、移動ベクトルの偏微分値を算出し、さらに偏微分値に基づいて被撮影物を構成する面の姿勢を判定する。ここでは、移動ベクトルの偏微分値を利用して被撮影物を構成する面の姿勢を判定することにより、被撮影物を構成する面の姿勢を詳しく求めることができる。例えば、被撮影物を構成する面は、上向き、右向き、左向き、斜め向きなどの複数の姿勢をとり得るが、被撮影物を構成する面の実際の姿勢を判定することができる。
なお、上述した処理では、姿勢判定部28は、4つの偏微分値の組み合わせに基づいて被撮影物を構成する面の姿勢を判定しているが、別の処理では、姿勢判定部28は、4つの偏微分値の1つのみを利用して被撮影物の姿勢を判定してもよいし、2つ又は3つの偏微分値を利用して被撮影物の姿勢を判定してもよい。姿勢判定部28が、3つの偏微分値を利用して被撮影物の姿勢を判定する処理を、図5のフローチャートを参照して、説明する。
図5に示される判定処理では、先ず、姿勢判定部28は、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値が略0であり、且つ、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値が略0である、という判定条件が満たされているか否かを判定する(S501)。ここで、判定条件が満たされている場合には、次に、姿勢判定部28は、移動ベクトルの横成分を横方向に偏微分して得た偏微分値と、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値とが略同一である、という判定条件が満たされているか否かを判定する(S502)。ここで、判定条件が満たされている場合には、姿勢判定部28は、被撮影物を構成する面が、画像データのカメラ光軸に対して垂直な面(以下、前方垂直面と呼ぶ)であると判定して、ラベリングする(S503)。一方、判定条件が満たされていない場合には、姿勢判定部28は、被撮影物を構成する面がその他の姿勢であると判定して、ラベリングする(S510)。
ステップ501の判定条件が満たされていない場合には、姿勢判定部28は、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値が略0である、という判定条件が満たされているか否かを判定する(S504)。ここで、判定条件が満たされている場合には、次に、姿勢判定部28は、移動ベクトルの横成分を横方向に偏微分して得た偏微分値が、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値の略2倍である、という判定条件が満たされているか否かを判定する(S505)。ここで、判定条件が満たされている場合には、姿勢判定部28は、被撮影物を構成する面が画像データのカメラ光軸及び縦方向Xに平行な面(以下、左右垂直面と呼ぶ)であると判定して、ラベリングする(S506)。一方、判定条件が満たされていない場合には、姿勢判定部28は、被撮影物を構成する面がその他の姿勢であると判定して、ラベリングする(S510)。
ステップ504の判定条件が満たされていない場合には、姿勢判定部28は、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値が略0である、という判定条件が満たされているか否かを判定する(S507)。ここで、判定条件が満たされている場合には、次に、姿勢判定部28は、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値が、移動ベクトルの横成分を横方向に偏微分して得た偏微分値の略2倍である、という判定条件が満たされているか否かを判定する(S508)。ここで、判定条件が満たされている場合には、姿勢判定部28は、被撮影物を構成する面が画像データのカメラ光軸及び横方向Yに平行な面(以下、水平面と呼ぶ)であると判定して、ラベリングする(S509)。一方、判定条件が満たされていない場合には、姿勢判定部28は、被撮影物を構成する面がその他の姿勢であると判定して、ラベリングする(S510)。
上述した判定処理において用いられた、被撮影物の姿勢判定の原理について解説する。ワールド座標系において位置(X,Y,Z)に存在する被撮影物は、次の数式(3)で表される画素位置(x,y)に投影される。
移動ベクトル(u,v)は、上の数式(3)を考慮すると、次の数式(4)で表されるように変換できる。
図6に示されるように、前方垂直面のZ軸方向の位置は一定であり、カメラ10のZ軸方向の移動速度Vzは一定とみなせるため、前方垂直面の移動ベクトル(u,v)は、Vz/Zを定数として、次の数式(5)で表される。
同様に、左右垂直面のX軸方向の位置は一定であり、カメラ10のZ軸方向の移動速度Vzは一定とみなせるため、左右垂直面の移動ベクトル(u,v)は、Vz/Xを定数として、次の数式(6)で表される。
同様に、水平面のY軸方向の位置は一定であり、カメラ10のZ軸方向の移動速度Vzは一定とみなせるため、水平面の移動ベクトル(u,v)は、Vz/Yを定数として、次の数式(7)で表される。
さらに、上の数式(5),(6),(7)から、前方垂直面、左右垂直面及び水平面のそれぞれの4つの偏微分値は、次の数式(8)で表される。
このため、次の数式(9)のような判定が可能となる。
即ち、移動ベクトルの横成分を横方向に偏微分して得た偏微分値が定数aであり、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値が定数0であり、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値が0であり、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値が定数aである場合に、被撮影物を構成する面が前方垂直面であることを判定可能である。
また、移動ベクトルの横成分を横方向に偏微分して得た偏微分値が定数aの2倍であり、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値が定数0であり、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値が別の定数bであり、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値が定数aである場合に、被撮影物を構成する面が左右垂直面であることを判定可能である。
また、移動ベクトルの横成分を横方向に偏微分して得た偏微分値が定数aであり、移動ベクトルの横成分を縦方向に偏微分して得た偏微分値が別の定数bであり、移動ベクトルの縦成分を横方向に偏微分して得た偏微分値が0であり、移動ベクトルの縦成分を縦方向に偏微分して得た偏微分値が定数aの2倍である場合に、被撮影物を構成する面が水平面であることを判定可能である。
次に、上述した実施形態に係る画像処理装置20の第1変形例について説明する。前述したように、第1変形例において、画像処理装置20は、実速度算出部30と実距離算出部32とを備えている(図1参照)。
実速度算出部30は、画像データの撮影位置と被撮影物との相対速度を算出する処理を行う。より詳しく説明すると、実速度算出部30は、画像内で車両の下方に広がる水平面を判定すると、その水平面を路面であると判断する。そして、実速度算出部30は、上記の数式(7)を利用して、その水平面の画像領域のオプティカルフローから水平面の定数Vz/Yを算出する。具体的には、画素座標(x,y)について算出されたオプティカルフローの横成分uをx・yで除算して定数Vz/Yを算出してもよいし、オプティカルフローの縦成分vをy2で除算して定数Vz/Yを算出してもよい。さらには、水平面領域の全画素について定数Vz/Yを算出し、それらの平均値を求めてもよい。ここで、実速度算出部30は、カメラ10の取り付け高さY(例えば1.5m)、言い換えれば、画像データの撮影位置の路面からの高さYのデータを記憶しており、算出された定数Vz/Yに高さYを乗じることで、画像データの撮影位置と被撮影物とのカメラ光軸方向の相対速度Vzを算出する。
実距離算出部32は、画像データの撮影位置から被撮影物までの距離を算出する処理を行う。より詳しく説明すると、実距離算出部32は、画像内で前方垂直面を判定すると、上記の数式(5)を利用して、前方垂直面の画像領域におけるオプティカルフローから前方垂直面の定数Vz/Zを算出する。具体的には、画素座標(x,y)について算出されたオプティカルフローの横成分uをxで除算して定数Vz/Zを算出してもよいし、オプティカルフローの縦成分vをyで除算して定数Vz/Zを算出してもよい。さらには、前方垂直面領域の全画素について定数Vz/Zを算出し、それらの平均値を求めてもよい。そして、実距離算出部32は、実速度算出部30により算出されたカメラ光軸方向の相対速度Vzを定数Vz/Zで除算することで、画像データの撮影位置から前方垂直面までのカメラ光軸方向の距離Zを算出する。
また、実距離算出部32は、画像内で左右垂直面を判定すると、上記の数式(6)を利用して、左右垂直面の画像領域におけるオプティカルフローから左右垂直面の定数Vz/Xを算出する。具体的には、画素座標(x,y)について算出されたオプティカルフローの横成分uをx2で除算して定数Vz/Xを算出してもよいし、オプティカルフローの縦成分vをx・yで除算して定数Vz/Xを算出してもよい。さらには、左右垂直面領域の全画素について定数Vz/Xを算出し、それらの平均値を求めてもよい。そして、実距離算出部32は、実速度算出部30により算出されたカメラ光軸方向の相対速度Vzを定数Vz/Xで除算することで、画像データの撮影位置から左右垂直面までの横軸方向の距離Xを算出する。
第1変形例に係る画像処理装置20の処理を、図7のフローチャートを参照して説明する。先ず、画像処理装置20は、既述の処理と同様に、画像データを取り込むと、オプティカルフローを算出してからその偏微分値を算出し、偏微分値に基づいて被撮影物の姿勢を判定してラベリングする(S701〜S703)。次に、画像処理装置20は、オプティカルフローに基づいて、次の数式(10)に示される定数を算出する。
即ち、画像データの水平面領域についてVz/Yに相当する定数を算出し、前方垂直面領域について定数Vz/Zに相当する定数を算出し、左右垂直面領域についてVz/Xに相当する定数を算出する(S704)。そして、画像処理装置20は、画像データの撮影位置と被撮影物とのカメラ光軸方向の相対速度Vzを算出する処理を行ってから、画像データの撮影位置から前方垂直面及び左右垂直面までの距離Z,Xを算出する処理を行う(S705)。
従来技術では、例えば、モーションステレオ法などの手法を用いて被撮影物までの距離を算出していた。しかし、モーションステレオ法などの手法では、スケールファクタが不明であるため、画像データの撮影位置から前方垂直面及び左右垂直面までの実際の距離を算出することができなかった。これに対して、上述した第1変形例によれば、画像データの撮影位置の路面からの高さYのデータを記憶しているため、この高さデータを利用して、画像データの撮影位置と被撮影物との相対速度Vz、及び、画像データの撮影位置から被撮影物までの正確な距離Z,Xを算出することができる。
次に、上述した実施形態に係る画像処理装置20の第2変形例について説明する。前述したように、第2変形例において、画像処理装置20は、移動ベクトルが算出される前に、画像データを処理する前処理部34を備えている(図1参照)。
先ず、前処理部34が設けられた理由について説明する。被撮影物が移動する移動物体であり、X軸方向の移動速度成分がVXであり、Y軸方向の移動速度成分がVYであり、Z軸方向の移動速度成分がVZである状況では、移動物体の画像領域における移動ベクトル(u,v)は、次の数式(11)で表される。しかし、移動物体はカメラ光軸方向に移動しなことから、数式(11)で表される移動ベクトル(u,v)は、前述の数式(5)で表される移動ベクトル(u,v)と式の形が異なり、画像処理装置20による既述の処理に適していない。前処理部34は、このような問題を解消するために設けられている。
次に、前処理部34による処理について説明する。前処理部34は、全ての画素に関して、次の数式(12)を利用した処理を行うことで、異なる移動物体ごとに画像を分割する処理を行う。
上の数式(12)において、前述したように、xは、画素の横位置であり、yは、画素の縦位置である。また、uは、移動ベクトルの横成分であり、vは、移動ベクトルの縦成分である。これらの値x,y,u,vは、画素ごとに算出されることにより、既知である。よって、上の数式(12)は、画像データの各画素について、横軸S及び縦軸Tからなる座標系において、v/uを傾きとし、v/u・x−yを切片とする直線を表している。ここで、図8に示されるように、同一の移動物体を撮影した画素のそれぞれについて数式(12)の直線を求めると、それらの直線は同一点で交差しており、移動物体の数だけ交点が存在する。即ち、交差した座標値S,Tは、移動物体の速度固有値となる。
前処理部34は、このように共通の速度固有値S,Tをもつ画素群をハフ変換、ランダムサンプルコンセンサス(RANdom SAmple Consensus:RANSAC)等の手法を用いて求め、共通の速度固有値S,Tをもつ画像領域ごとに分割する。より具体的には、前処理部34は、横軸S及び縦軸Tからなる座標系を、横軸方向及び縦軸方向に細かくメッシュ分割する。そして、前処理部34は、直線が通過するメッシュ領域に投票する処理を、全ての画素の直線について行う。これにより、投票数の多いメッシュ領域を速度固有値S,Tと判断することができ、その速度固有値S,Tを通過する直線の画素群を単一の移動物体であると判断することができる。このようにして、異なる移動物体ごとに画像が分割される。
そして、前処理部34は、異なる移動物体の画像領域ごとに、画素位置を平行移動させる処理を行う。より詳しく説明すると、前処理部34は、次の数式(13)に示されるように、速度固有値S,Tをもつ画像領域を構成する画素について、画素の横位置xに速度固有値Sを加算して、画素の縦位置yに速度固有値Tを加算する。これにより、平行移動後の画素の横位置x’及び画素の縦位置y’が算出される。
第2変形例に係る画像処理装置20の処理を、図9のフローチャートを参照して説明する。先ず、画像処理装置20は、画像データを取り込むと、前処理を行う。この前処理において、画像処理装置20は、動きが異なる画像領域を分割し、各領域ごとに平行移動処理を行う(S901,S902)。その後、画像処理装置20は、既述の処理と同様に、オプティカルフローの移動ベクトルを算出してからその偏微分値を算出し、偏微分値に基づいて被撮影物の姿勢を判定してラベリングする(S903〜S905)。
次に、第2変形例の利点を説明するために、上述した前処理の原理について解説する。上の数式(11)から、次の数式(14)が求められる。さらに、数式(14)を変形すると、次の数式(15)が求められる。
図8に示されるように、VX/VZを横軸とし、VY/VZを縦軸とする空間を想定する。ある特定の移動物体がある場合に、その移動物体に対応する画素群については、VX/VZ,VY/VZは共通する速度固有値となり、数式(15)が満足される。ここで、数式(15)は前述した数式(12)に相当し、速度固有値VX/VZ,VY/VZは速度固有値S,Tに相当する。このことから、前述した数式(13)は、次の数式(16)に変換できる。
即ち、第2変形例では、動きが異なる画像領域ごとに画素位置x,yを速度固有値VX/VZ,VY/VZを用いて平行移動している。移動ベクトル(u’,v’)は、次の数式(17)で表される。
上の数式(17)の移動ベクトル(u’,v’)は、前述の数式(5)で表される移動ベクトル(u,v)と、式の形が同じであるため、被撮影物が移動している状況でも、画像処理装置20による処理を好適に行うことができる。具体的には、前述した図5に示される被撮影物の姿勢判定処理を好適に行うことができる。
なお、上述した処理に加えて、画像処理装置20は、速度固有値S(=VX/VZ)に、カメラ光軸方向の速度Vzを乗算することで、移動物体の横方向の速度VXを算出してもよい。また、画像処理装置20は、速度固有値T(=VY/VZ)に、カメラ光軸方向の速度Vzを乗算することで、移動物体の縦方向の速度VYを算出してもよい。
10…カメラ、20…画像処理装置、22…画像取得部、24…オプティカルフロー算出部、26…偏微分部、28…姿勢判定部、30…実速度算出部、32…実距離算出部、34…前処理部。