本実施形態に係る画像処理装置は、車両に搭載され、車両周囲に存在する物体が立体であるか若しくは平面体であるか、又は他の線状平面体と共通であるか、その他の物体の属性を判定する装置である。
図1は、画像処理装置100を含む車載装置1000のブロック構成の一例を示す図である。図1に示すように、本実施形態の車載装置1000は、画像処理装置100と、この画像処理装置100に車両情報を提供する車両コントローラ200と、その車両情報を検出する各種センサ210と、画像処理装置100の判定結果に基づく情報を出力する出力装置300と、同じく画像処理装置100の判定結果に基づいて走行支援を行う走行支援装置400とを備える。画像処理装置100、車両コントローラ200、出力装置300、走行支援装置400は、CPU、MPU、DSP、FPGAなどの動作回路を組み合わせて構成される。また、これらは、CAN(Controller Area Network)などの車載LANにより接続される。
また、本実施形態の画像処理装置100は、撮像手段の一態様としてのカメラ10と、移動情報算出部20と、判定部30を備える。さらに、本実施形態の画像処理装置100は、カメラ10の撮像データを記憶する画像メモリ11、判定部30の判定結果を出力情報として編集する編集部40とを備える。
本実施形態の画像処理装置100は、車両に搭載されたカメラ10により取得された画像に含まれる物体に対応する画素の移動情報を算出し、移動情報の共通する画素が縦方向に連続する「立体特徴領域」を抽出し、この抽出された「立体特徴領域」と、車両の速度に基づいて予め取得された、移動情報算出部20が立体に対応する画素の移動情報を算出できない「立体観測不能領域」との位置関係を判断し、その物体の属性を判定する。
以下、画像処理装置100が備える各構成について説明する。
カメラ10は、例えばCCD(Charge-Coupled Devices)やCMOS(Complementary Metal-Oxide Semiconductor)などの撮像素子を有するカメラである。本実施形態のカメラ10は、車両周囲(車両前方、車両後方、車両側方など)に存在する物体(立体、路面上の平面体を含む)を所定周期で撮像し、フレーム毎に撮像された画像を画像メモリ11に出力する。画像メモリ11は、カメラ10により撮像された画像をアクセス可能な状態で記憶する。
図2は、カメラ10の設置例を示す。図2(A)はカメラを搭載する車両を側面から見た図、図2(B)はカメラを搭載する車両を上方から見た図である。図2に示すように、本実施形態では、1つのカメラ10を車両に設置する。つまり、本実施形態では、単眼のカメラ10で車両周囲を撮像する。本実施形態では、カメラ10を車両の室内上部に車両前方に向けて設置する。そして、カメラ10の光軸LSが、車両の走行方向(ドライバ正面方向)のZ方向に向くように調整し、撮像面の水平軸Xが路面と平行となるように調整し、さらに、撮像面の垂直軸Yが路面と垂直になるように調整する。
図3は、本実施形態のカメラ10を用いて車両前方を撮像する画像の例である。カメラ10による撮像画像は、画像左上の頂点を原点とするxy座標系によって表される。そして、原点から右方向へ延在する軸をx軸とし、原点から下へ延在する軸をy軸とする。なお、図3に示す撮像画像には、立体の物体(立体)としてのポールと、平面の物体(平面体)としての路上の白線(白色以外の線も含む)が含まれている。
次に、移動情報算出部20について説明する。この移動情報算出部20は、特徴抽出部21と算出部22を備え、カメラ10により撮像された物体(ポール、白線等を含む)の画像の情報に基づいて、画像中の物体に対応する画素の移動情報を算出する。
この特徴抽出部21は、カメラ10が撮像する各画像データ(フレーム)から、撮像された物体の画像上の動きを観測するため、物体の外延、物体の特徴的な部分を含む特徴部を抽出する。本実施形態の特徴抽出部21は、カメラ10で撮像された画像を画像メモリ11から読み込み、読み込んだ撮像画像を所定の閾値を用いて2値化し、画像内に存在する物体のエッジを抽出する。このエッジ成分に基づいて、特徴部を抽出する。
本実施形態の特徴抽出部21は、カメラ10で撮像された画像を画像メモリ11から読み込み、読み込んだ撮像画像を所定の閾値を用いて2値化することによって、画像内に存在する物体のエッジを抽出する。図4(a)に抽出された垂直方向のエッジの例を示す。次に、抽出された各エッジに対して、細線化処理を行ってエッジ幅を絞り、エッジの中心を正確に設定する(図4(b)参照)。さらに、細線化されたエッジのエッジ幅が一定の幅となるように、例えば3画素分の幅となるように、エッジを水平方向に膨張させる(図4(c)参照)。この操作により、抽出したエッジが正規化され、各エッジが均一の幅を持つエッジ画像を得る。
算出部22は、特徴抽出部21により抽出されたエッジから求められた特徴部の画素の速度を算出する。求めた特徴部の移動速度と移動方向は、撮像タイミング識別子又はフレーム識別子と対応づけて記憶する。この画素の移動情報は、画素の特定情報とともに、「画素の移動速度」と「画素の移動方向」とを含む。なお、一の画像データ中に複数の特徴部が存在する場合は、すべての特徴部について速度を算出する。
以下、本実施形態の移動情報算出部20が行う、具体的な移動速度算出手法を説明する。
本実施形態の算出部22は、カメラ10により撮像された物体の画像の情報に基づいて、物体の外延に対応するエッジが検出された位置の画素のカウント値をカウントアップし、このカウント値の傾きに基づいて、エッジの移動速度及び移動方向を算出する。
本実施形態の移動情報算出部20は、撮像タイミングが異なる画像データについて、各画像データに含まれるエッジに対応する画素の画素カウンタのカウンタ値を所定の手法で更新する。ここで、画素カウンタとは、各画素に設定されたカウンタであり、画素がエッジに対応する場合は画素カウンタのカウンタ値を+1加算し、画素がエッジに対応しない場合は画素カウンタのカウンタ値を0とする(初期化する)カウンタである。このカウンタ値の更新処理を、カメラ10により所定周期で繰り返し撮像されるフレーム毎に行う。この操作を行うと、エッジに対応する時間が長い画素は、対応する画素カウンタのカウンタ値が大きくなり、他方、エッジに対応する時間が短い画素は、対応する画素カウンタのカウンタ値が小さくなる。
この画素カウンタのカウンタ値の変化は、エッジの移動方向と移動量を表していることになる。このため、このカウンタ値に基づいて、撮像画像上におけるエッジの移動方向と移動速度とを算出する。画像の座標系は方位を表しているため、エッジ、及びこのエッジに対応する特徴部の移動方向と移動速度を求めることができる。
さらに、図4に基づいて、算出部22が行う移動情報の算出手法を説明する。図4は移動情報の算出処理を説明するための図、すなわち、抽出されたエッジが正規化されたエッジ画像を取得し、エッジのカウンタ値(滞留時間)から移動方向と移動速度を算出する処理を具体的に説明するための図である。
まず、特徴抽出部21は、エッジ画像に対して2値化処理を行う。2値化処理とはエッジの検出された位置の画素を1とし、エッジの検出されなかった位置の画素を0とする処理である。図4(a)は抽出された垂直方向のエッジの2値化画像例を示す。
次に、図4(b)に示すように、生成された2値化画像に対して、細線化処理を行う。細線化処理とは、検出されたエッジのエッジ幅を所定画素幅になるまで縮小する処理である。つまり、抽出された各エッジに対して細線化処理を行ってエッジ幅を絞る。本例では、図4(b)に示すように、所定画素幅として1画素になるまでエッジのエッジ幅を細線化する。このようにエッジを所定の画素幅になるまで細線化することによって、エッジの中心となる中心位置を設定する。なお、本例では、1画素に細線化する例を示すが、細線化する画素数は特に限定されない。
次に、細線化されたエッジのエッジ幅を膨張させる膨張処理を行う。膨張処理とは、細線化によって設定された中心位置からエッジの移動方向に向かってエッジ幅が一定の幅となるように膨張させるとともに、中心位置からエッジの移動方向と反対方向にもエッジ幅を膨張させる処理である。本例では、細線化されたエッジのエッジ幅が3画素分の幅となるように、エッジを水平方向に膨張させる。この処理により、抽出されたエッジを正規化し、各エッジの幅が均一なエッジ画像を得る。具体的に、図4(c)に示すように、エッジの中心位置x0からエッジの移動方向(x軸の正方向)に1画素膨張させるとともに、エッジの中心位置x0からエッジの移動方向と反対方向(x軸の負方向)に1画素膨張させて、エッジ幅を3画素に膨張させる。
このように細線化処理と膨張処理とを行うことによって、抽出されたエッジ画像のエッジ幅を、エッジの移動方向に向かって所定の幅に統一し、規格化する。
次に、算出部22が移動情報を算出するために行う、カウントアップ処理について説明する。ここに言うカウントアップ処理とは、エッジが検出された画素の位置に対応するメモリアドレスの値をカウントアップし、エッジが検出されなかった画素の位置に対応するメモリアドレスの値を初期化する処理である。
以下、図4(c)〜(f)に基づいて算出部22によるエッジのカウントアップ処理について説明する。説明の便宜のため、ここでは、エッジがx軸の正方向に移動する場合を例にして説明する。エッジがx軸の負方向やy軸方向、あるいは2次元的に移動する場合においても、基本的な処理手法は共通する。
図4(c)に示すように、エッジはあるフレームにおいて位置x0にエッジの中心位置がある。そして、その中心位置からエッジの移動方向に1画素の位置x0+1に膨張され、同様に、中心位置からエッジの移動方向と反対方向に1画素の位置x0−1に膨張されている。
このようなエッジが検出された位置、「x0−1」、「x0」、「x0+1」に対応するメモリアドレスのカウント値は「+1」カウントアップされる。他方、エッジが検出されなかった位置に対応するメモリアドレスのカウント値は、リセットされる。
例えば、図4(d)では、時刻tにおいて、位置「x0−1」、「x0」、「x0+1」にエッジが検出されている。このため、それぞれの位置に対応するメモリアドレスのカウント値が各「1」カウントアップされる。その結果、位置「x0+1」のカウント値は「1」、位置「x0」のカウント値は「3」、位置「x0−1」のカウント値は「5」である。
次に、図4(e)に示すように、時刻t+1になってもエッジが移動していないので、位置「x0−1」、「x0」、「x0+1」の各位置でエッジが検出される。このため、位置「x0−1」、「x0」、「x0+1」のカウント値をさらに1ずつカウントアップする。その結果、位置「x0+1」のカウント値は2、位置「x0」のカウント値は4、位置「x0−1」のカウント値は6となる。
さらに、図4(f)に示すように、時刻t+2では、エッジがx軸の正方向に1画素シフトして位置「x0」、「x0+1」、「x0+2」の位置でエッジが検出される。このため、エッジが検出された位置「x0」、「x0+1」、「x0+2」に対応するメモリアドレスのカウント値はカウントアップされる。他方、エッジが検出されなかった位置「x0−1」のカウント値はリセットされ、「ゼロ」となる。その結果、図4(f)に示すように位置「x0+2」のカウント値は1、位置「x0+1」のカウント値は3、位置「x0」のカウント値は5となる。さらに、エッジが検出されなかった位置「x0−1」のカウント値はリセットされ、「0」になっている。
このように、算出部22は、エッジが検出された位置に対応するメモリアドレスのカウント値をカウントアップし、エッジの検出されなかった位置に対応するメモリアドレスのカウント値をリセットする。
なお、図4に基づく説明においては、カウント値を検出する位置として、エッジの中心位置「x0」と、この中心位置からエッジの移動方向へ1画素の位置「x0+1」と、中心位置からエッジの移動方向と反対方向に1画素の位置「x0−1」の3箇所でカウント値を検出するが、後述するカウント値の傾きが求められれば、カウント値を検出するポイントの配置、数は限定されない。つまり、エッジの移動方向に対して2箇所以上においてカウント値を検出できれば、カウント値の検出箇所はいくつであってもよい。
また、物体が自車に対して一定角度で近づく場合、連続するフレーム間において、エッジは同じ位置で複数回検出される。例えば、図4の例では、連続する時刻tのフレームと時刻t+1のフレームにおいて、エッジは位置x0において2回検出される。したがって、エッジが検出された位置に対応するメモリアドレスのカウント値をカウントアップしていくと、そのカウント値はその位置においてエッジが検出されている時間(フレーム数、滞留時間)と相関する。
次に、本実施形態における、エッジの移動速度、移動方向及び位置の算出手法について説明する。本実施形態では、カウント値の傾きを算出し、この傾きに基づいて、エッジの移動速度、移動方向及び位置を算出する。
例えば、図4(e)の場合では、位置「x0−1」、「x0」、「x0+1」のカウント値がそれぞれ「6」、「4」、「2」である。位置「x0−1」のカウント値「6」から「x0+1」のカウント値「2」を引くと、カウント値の傾きHは、H=(6−2)/2=2と算出できる。
これは、H={(エッジが位置x0−1に移動してから現在までの時間)−(エッジが位置x0+1に移動した後の時間)}/(2画素)を意味する。つまり、傾きHを算出することにより、エッジが、位置x0にある1画素を通過するのに要する時間(フレーム数)を算出することになる。
したがって、カウント値の傾きHは、エッジが1画素移動するために何フレームを要するかに相当し、このカウント値の傾きHに基づいてエッジの移動速度1/Hを算出する。図4(e)では1画素移動するのに2フレームを要することになるので、エッジの移動速度は1/2(画素/フレーム)と算出する。
続いて、カウント値の大小に基づいて、エッジの移動方向を判断する手法について説明する。エッジの無い位置にエッジが移動し、新たにエッジが検出された位置のカウント値は1となるから、各位置のカウント値の中では最も小さな値となる。したがって、エッジが移動する方向のカウント値は小さく、エッジが移動する方向と反対方向のカウント値は大きくなる。この傾向を利用して、エッジの移動方向を判断することができる。
以上のことから、エッジが検出された位置に対応するメモリアドレスのカウント値をカウントアップし、カウントアップされたカウント値の傾きに基づいてエッジの移動速度及び移動方向を算出することができる。
また、算出部22は、撮像画像上に存在するエッジの移動情報を所定の階級値に分類し、移動情報の特徴を表現する移動画像を生成する。図5に移動画像の一例を示す。図5に示すように、本実施形態の移動画像では、移動情報が検出されたエッジの画素を丸印で表し、移動速度が速い画素ほど点を大きい丸印で表すことにより、画素の速度情報を表現する。また、移動方向が右、すなわち右方向へ移動する画素を塗りつぶした黒印で表し、移動方向が左、すなわち左方向へ移動する画素を色抜きの白印で表すことにより、画素の移動方向を表現する。このように、移動画像は、速度情報と移動方向を含む移動情報を表現できる。
ところで、車両が純粋に直進する場合、平面体の移動速度を検出することはない。しかしながら、通常の走行環境においては、直進以外の車両挙動が発生する。本実施形態では、通常の走行において発生する車両挙動に伴って生じるカメラ10の挙動に基づいて、擬似的な速度を算出する。
図6は、車両にピッチング挙動が発生した場合の平面体(白線)の画像上の動きを説明するための図である。車両にピッチング挙動が発生したことにより、図6に示すaの位置にあった白線は、次のフレームでbの位置に画像上移動する。ピッチングによって白線が動いたとき、画像上における白線の動きは実線矢印Qの方向であるが、本実施形態の算出部22は横方向の破線矢印qの方向の移動情報を算出する。このように、横方向の移動情報を算出するのは、後述する判定部30において、立体の横方向の移動画像は「共通の速度情報を持つ画素が縦に連続して存在する」という特徴に基づいて、物体の属性を判定するためである。
次に、判定部30について説明する。判定部30は、各画素の移動情報に基づいて、撮像された物体の属性を判定し、その判定結果を出力する。本実施形態の判定部30は、立体特徴領域抽出部31と、平面体判定部32と、立体判定部33と、共通線状体判定部34と、記憶部35とを備える。
以下、判定部30が備える各構成について説明する。
まず、立体特徴領域抽出部31は、移動情報算出部20により算出された特徴部の各画素の移動情報に基づいて、移動情報の共通する画素が縦方向に連続する立体特徴領域を抽出する。「縦方向に移動情報が共通する画素が連続する」という特徴は、立体の画像上の特徴である。
特に限定されないが、立体特徴領域を抽出するにあたり、画像中に特徴部が検出された位置の画素のカウント値をカウントアップしたカウント値の傾きに基づいて算出された移動情報を用いることができる。
立体特徴領域の抽出手法の一例を、図7に基づいて説明する。図7に示すように、まず、移動画像(図5参照)を縦方向(y軸方向)に探索する。移動情報を持った画素Aが見つかった場合、画素Aに隣接する画素Bを探索する。画素Bが移動情報を有し、かつ画素Aと画素Bの速度方向の差(E2−E1)が閾値Re以内であり、かつ、画素Aと画素Bの速度の大きさの差(V2−V1)が閾値Tv以内であれば、縦に連続していると判断する。次に、画素Bに隣接する画素Cについても同様に移動情報の有無を判断し、画素Aと画素Cの速度の方向(E3−E1が閾値Tv以内か)が閾値Re以内か、速度の大きさの差(V3−V1)が閾値Tv以内かを判断する。以後、いずれかの条件を満たさなくなるまで繰り返す。
図7に示すように画素Nの次の画素で条件を満たさなくなった場合、それまでに条件を満たす画素の数をカウントする。そのカウント値が閾値TH以上であれば、画素Aから画素Nまでの縦連続成分を立体特徴領域として抽出する。この縦連続成分を含む立体特徴領域は、立体の移動画像における特徴を備えているから、画素Aから画素Nまでの立体特徴領域に対応する物体を立体として抽出することも可能である。
平面体判定部32は、移動情報算出部20により算出された物体の移動情報に基づいて、物体が平面体であるか否かを判定する。
本実施形態の平面体判定部32は、予め、画像処理装置100が搭載された車両の速度に基づいて、移動情報算出部20が立体に対応する画素の移動情報を算出できない立体観測不能領域361を取得する。この立体観測不能領域は予め記憶部351に記憶されている。もちろん、平面体の判定を行う際に、平面体判定部32が立体観測不能領域361を算出してもよい。
次に、図8に基づいて、この立体観測不能領域36の算出手法例を説明する。図8の(A)に示すように、各種センサ210で検出され、車両コントローラ200を介して取得した車速がVcのとき、Pの位置にある静止立体は、単位時間、例えば1フレーム当りの時間t後には、距離Vc・tだけ移動し、P´の位置に存在する。カメラ10の光軸とP又はP´のなす角が、A1、A2であるとき、A3=A2−A1がカメラ10の水平方向角度分解能Rhよりも大きいとき、Pの移動速度は観測できる最大の速度を超える。
Tan-1(X/(Z−Vc*t))−Tan-1(X/Z) > Rh… (式1)
つまり、車速Vcのとき、式1を満たすXとZにおいて、Pの速度は観測できる最大の速度を超える。つまり、この条件下においては、立体に対応する画素の移動情報を算出できない。本実施形態では、式1を満たすXとZの領域を求め、それを式2によって、画像座標であるX´−Y座標へ変換する。これを図8(B)に示す。
Y=Tan-1(Hc/Z)/Rh
X´=Mh/2−Tan-1(X/Z)Rh (式2)
ここで、Hcはカメラ10の取り付け地上高、Rhはカメラの垂直方向角度分解能、Mhはカメラの水平方向画素数である。
これにより、図8(B)に示すように、立体を観測することができない立体観測不能領域を定義できる。
そして、平面体判定部32は、立体特徴領域抽出部31が抽出する立体特徴領域が、立体観測不能領域内に含まれる場合、その立体特徴領域に対応する物体は平面体であると判定し、その立体特徴領域に平面体フラグを付加する。
このように、本実施形態では、立体の画像の特徴を有する立体特徴領域が検出されたとしても、これを直ちに立体と判定するのではなく、立体特徴領域が立体観測不能領域内に含まれるか否かを判断し、立体が測定されない領域内に含まれる立体特徴領域は平面体と判定する。これにより、高い精度で物体の属性(立体か平面体か)を判定することができる。
なお、物体が平面体であるか否かを判定する手法は特に限定されず、本例のように立体観測不能領域を用いて判定する手法に限定されない。
例えば、本実施形態の平面体判定部32は、立体に対応する画素の移動速度が所定値以上となる立体判定領域を算出し、この立体判定領域を参照して、この立体判定領域内に移動速度が所定値未満である画素が含まれる場合、この画素に対応する物体は平面体であると判定する。なお、この画素には立体特徴領域を含む。
次に、共通線状体判定部34について説明する。本実施形態の共通線状判定部34は、傾き比較部341と速度比較部342とを備え、判定の対象となる2以上の立体特徴領域について、傾きを比較すること又は速度を比較することにより、その立体特徴領域が属する平面体の共通性を判定する。特に、本実施形態では、平面体のうち、路上の白線(他の色の線も含む)などの平面線状体の共通性を判定する。
まず、物体に係る「傾き」の観点から、その同一性を判定する手法について説明する。傾き比較部341は、平面体であると判定された2以上の物体の外延の傾きをそれぞれ算出し、比較する。平面体の外延の傾きを算出する手法は、特に限定されず、立体特徴領域の縦方向に連続する画素の端部の画素を基点とし、共通の移動速度を有しかつエッジの端部に位置する画素を辿り、その軌跡を平面体の外延の傾きとして算出することもできる。
図9に基づいて、本実施形態の平面体の傾きの算出手法を具体的に説明する。
傾き比較部341は、平面体であると判定された2以上の物体の立体特徴領域に含まれ、縦方向に連続する縦連続成分(立体特徴領域)のうち上端部(下端部でもよい)に位置する基点画素Mを基準とし、基点画素Mの移動情報と共通する移動情報を有する画素の数を縦方向(矢印A方向)及び横方向(矢印B方向)にカウントし、横方向の隣接画素の数を縦方向の隣接画素の数で除する。この値が白線(線状平面体)の傾きとなる。このとき、左方向のカウントと右方向のカウントのうち、カウント数の大きいほうの長さをBとし、縦方向のカウント数をAとする場合、線状平面体の傾きは、「直線の傾きα=A/B」として求めることが出来る。
傾き比較部341は、他の立体特徴領域についても、基点画素M´を基準として、線上平面体の傾きを算出する。そして、2以上の物体の傾きを比較する。比較処理に際し、傾き比較部341は、傾きの共通性を導くため、傾きの差分が所定閾値以内であるか否かを求めることができる。
次に、物体に係る「速度」の観点から、その同一性を判定する手法について説明する。速度比較部342は、平面体であると判定された2以上の物体の立体特徴領域について、立体特徴領域に含まれる縦方向に連続する速度共通の画素のうち端部に位置する基点画素の移動情報を算出し、これらを比較する。比較の対象となる移動情報は、移動方向、移動速度、又は移動方向及び移動速度である。
平面体の速度成分の大きさはカメラからの距離によらず一定になる。つまり、同じ平面体であれば、各平面体の立体特徴領域の移動情報は共通する。このため、本実施形態では、立体特徴領域に含まれる縦方向に連続する速度共通の画素のうち、最下端部に位置する基点画素の移動情報を比較する。この移動情報を比較することにより、物体の共通性を判定できる。
本実施形態の速度比較部342は、平面体であると判定された2以上の物体の立体特徴領域について、立体特徴領域に含まれる縦方向に連続する画素のうち端部に位置する第1基点画素の移動情報を算出する。また、この基点画素の移動情報と共通する移動情報を有する画素の数を縦方向及び横方向にカウントし、横方向の隣接画素の数を縦方向の隣接画素の数で除した傾きαを算出する。この傾きとして、傾き比較部341が算出する値を用いることができる。そして、第1基点画素を通る傾きαの直線の近傍にある他の立体特徴領域の第2基点画素について移動情報を算出し、両移動速度を比較する。
図10に基づいて、本実施形態の平面体の速度情報の算出手法を具体的に説明する。図10に示すように、平面体と判定された物体の立体特徴領域について、縦方向に連続する速度共通の画素成分(立体特徴領域)L1の最下端部Kを通り、傾き比較部341が算出する傾きαの直線の近傍には、同じ物体の立体特徴領域の最下端部K´が存在すると予測できる。もし、物体が同じ線状平面体であるならば、最下端部Kを含む立体特徴領域の速度情報と最下端部K´を含む立体特徴領域の速度情報は共通する。
速度比較部342は、立体特徴領域L1の最下端部Kの速度情報を取得するとともに、立体特徴領域の最上点が消失線よりも下にあり、かつ、最下端部Kを通る傾きαの直線の近傍にある他の立体特徴領域L2を抽出する。そして、L1の立体特徴領域の平均速度Va1とL2の立体特徴領域の平均速度Va2を比較し、その差が閾値TVa未満であるか否かを算出する。
共通線状体判定部34は、立体特徴領域の平均速度Va1とL2の立体特徴領域の平均速度Va2の比較の結果、その差が閾値TVa未満である場合(Va1−Va2<TVa)、L1とL2は共通の線状平面体(白線)に属する速度成分と判定し、L2に対して平面体フラグを付加する。この場合、L2に対してL1と共通の線状平面体である旨のフラグを付加してもよい。他方、Va1とVa2の差がTVaよりも大きいとき、L1とL2は共通の線状平面体(白線)には属さないと判定する。
立体判定部33は、平面体であると判定された物体以外の物体であって、立体特徴領域に対応する物体は立体であると判定する。この平面体には共通線状体と判定された物体も含む。
また、立体判定部33は、車両の速度に基づいて、予め取得された、立体に対応する画素の移動速度が所定値以上となる立体判定領域352を参照し、立体判定領域352内に移動速度が所定値未満である画素(立体特徴領域を含む)が含まれる場合、その画素に対応する物体は平面体であると判定する。立体判定領域352の算出手法は、特に限定されず、通常の手法を用いることができる。なお、立体判定領域352は、予め取得して、記憶部35に記憶させておくことができる。
判定部30(平面体判定部32、立体判定部33、共通線状体判定部34)は、判定結果を、編集部40、走行支援装置400、又は出力装置300に向けて出力する。
編集部40は、判定部30の判定結果に基づいて、物体の属性、つまり物体が平面体である、物体が立体である、検出された複数の物体は共通する線状体であるといった、物体の属性に関する情報を、出力用の情報に編集する。編集部40は、編集した情報を、出力装置300又は走行支援装置400へ出力する。出力装置300は、物体の属性に関する情報を、ディスプレイ・スピーカを介して出力する。走行支援装置400は、物体の属性に関する情報を利用して、車両の走行支援を行う。なお、判定部30は、編集部40を介することなく、判定結果を出力装置300又は走行支援装置400へ出力することもできる。
続いて、本実施形態の画像処理装置100の画像処理手順を図11に基づいて説明する。図11は本実施形態の画像処理装置100の画像処理手順を示すフローチャート図である。
イグニションスイッチ(図示省略)がオンされ、車載装置1000が起動すると、この処理用のプログラムが実行される。
まず、カメラ10は、所定の周期で車両周囲を撮像する(S101)。撮像された画像は画像メモリ11に蓄積される。移動情報算出部20の特徴抽出部21は、画像に対してエッジ抽出処理を行い、撮像画像内に存在する物体の輪郭をエッジ画像として抽出するとともにエッジ画像の正規化を行う(S102)。算出部22は、エッジの移動情報を算出する(S103)。そして、算出された移動情報を所定の階調で表された移動画像(図5参照)を作成する。
判定部30の立体特徴領域抽出部31は、移動画像を参照し、移動情報の共通する画素が縦方向に連続する立体特徴領域を抽出する(S104)。立体特徴領域抽出部31は、すべての画像に対し抽出処理が完了したかを確認し、YESの場合はステップS106へ、そうでない場合はS104へ移行する(S105)。
ステップS106では、平面体判定部32が、S104で抽出された立体特徴領域の、あるX座標のうち最もY座標の値の大きい最下端部をさらに抽出し、立体観測不能領域との位置関係に基づいて、立体が平面体であるか否かを判定する(S106)。抽出された立体特徴領域の最下端部が立体観測不能領域内に含まれる場合、最下端部を含む立体特徴領域の速度成分は、平面体の速度と判定する。そして、この立体特徴領域に対応する物体は平面体と判定する(S107)。平面体の速度と判定された場合はS108へ進む。他方、抽出された立体特徴領域の最下端部が立体観測不能領域内に含まれない場合、S114へ進む。
ステップS108では、平面体の速度と判定された立体特徴領域の画素データに対して「平面体である」旨の識別フラグを付加する。
ステップS109では、ステップS108で平面体フラグが付加された立体特徴領域について、この立体特徴領域が属する線状平面体(白線)の傾きαを求める(S109)。
ステップS110では、S108で平面体フラグが付加された立体特徴領域について、S109で求めた、立体特徴領域が属する線状平面体(白線)の傾きαを用いて、同じ線状平面体(白線)に属する可能性の高い立体特徴領域候補の抽出処理を行う(S110)。例えば、傾き比較部341は、立体特徴領域の下端部を通り、傾きαの直線上近傍に、下端部が位置する立体特徴領域を抽出する。
平面フラグが付加された立体特徴領域の傾きと、S110で抽出された立体特徴領域候補の傾きを比較し、傾きの差が所定値未満(差が小さい)場合、両者は共通の線状平面体(物体)と判定してもよいが、本実施形態では、さらに、移動情報の観点から物体の共通性について検討を加える。
ステップS111では、S108で平面フラグが付加された立体特徴領域の移動情報を求め、S110で抽出された共通の立体特徴領域候補の移動情報を求める。そして、両者の移動情報を比較する。移動情報(移動速度、移動方向を含む)の差が所定値未満(差が小さい)場合、両者は共通の線状平面体(物体)と判定する。物体が共通の白線(線状平面体)であると判定された場合はS112へ進み、そうでない場合はS113へ処理を進む。
ステップS112では、S111で共通の白線(線状平面体)であると判定された立体特徴領域に対して平面体フラグを付加する処理を行う。
ステップS113では、S110で抽出された全ての立体特徴領域候補についてS111の判定処理を行ったか否かを判断する。全て立体特徴領域候補についてS111の判定処理を行った場合はステップS114へ進み、全ての立体特徴領域候補についてS111の判定処理が行われていない場合は、S111の処理を実行する。
ステップS114では、S106で抽出された立体特徴領域の最下端部の全てについてS107からS113までの処理が行われたかを判断する。全ての立体特徴領域の最下端部について処理が終わっている場合はS115へ進み、全ての立体特徴領域の最下端部について処理が行われていない場合はS107へ処理を進める。
続いて、ステップS115では、S104で抽出された立体特徴領域のうち、平面体フラグが付加されていない立体特徴領域に対応する物体を、立体と判定する処理を行う(S115)。
ステップS116では、車両のイグニションスイッチがOFFされているかを判断し、OFFされている場合はS117へ進み処理を終了する。他方、車両のイグニションスイッチがONの場合はS101へ処理を進める。
本実施形態の画像処理装置100は以上のとおり構成され、動作するので、以下の効果を奏する。
本実施形態の車両用の画像処理装置100は、カメラ10の画像から取得された移動情報に基づいて物体の属性を判定するので、距離情報に依存しないで物体の属性を判定することができる。また、ステレオカメラなどの距離情報を得るための構成を必要としないため、画像処理装置100を簡易な構成とすることができる。
加えて、本実施形態の車両用の画像処理装置100は、単眼のカメラ10の画像から取得された移動情報に基づいて物体の属性を判定するので、画像処理におけるミスマッチングによる誤測距が発生しないため、高い精度で物体の属性を判定することができる。つまり、距離情報に基づいて物体の属性を判定する手法、例えばステレオ視の画像に基づいて物体の属性を判定する手法においては、ミスマッチングにより誤った距離情報が与えられる場合がある。距離情報に誤りがあると、二次元の物体を誤って立体として判定する誤判定が生じるが、本実施形態の画像処理装置100は距離情報に依存せずに物体の属性を判定するため、誤った距離情報に基づく誤検出の発生を低減し、精度の高い判定を行う画像処理を行うことができる。
本実施形態の画像処理装置100は、車両の速度に基づいて、移動情報算出部20が立体に対応する画素の移動情報を算出できない立体観測不能領域を予め取得し、この立体観測不能領域と、立体特徴領域との位置関係に基づいて物体の属性を判定するため、平面体を立体と誤って判定することがなく、高い精度で物体の属性を判定する画像処理を行うことができる。
また、立体特徴領域を有する物体から、上述の判定に基づいて平面体と判定された物体を除いた物体を、立体と判定するため、平面体を立体と誤って判定することがなく、高い精度で物体の属性を判定する画像処理を行うことができる。
そして、物体に対応する画素の移動情報を算出するにあたり、移動情報算出部20は、カメラ10の撮像された物体の画像の情報に基づいて、物体に対応する特徴部が検出された位置の画素のカウント値をカウントアップし、カウント値の傾きに基づいて、特徴部の移動情報を算出するため、簡易な手法で画素の移動情報を取得することができる。また、このような画像処理により、移動情報の共通する画素が縦方向に連続する立体特徴領域という、立体の特徴点を容易に導出できる。
さらに、本実施形態は、平面体であると判定された2以上の物体の傾きの共通性に基づいて、平面体が共通の線状平面体であるか否かを判定するため、簡易な手法で共通の白線(線状平面体)を高い精度で検出する画像処理を行うことができる。また、平面体であると判定された物体に絞って、白線の共通性を判定するため、高い処理効率と高い精度をもって白線の共通性を判定する画像処理を行うことができる。これにより、正確な白線認識を導く画像処理を行うことができる。
特に、立体特徴領域の端部に位置する基点画素を基準とし、この基点画素の移動情報と共通する移動情報を有する画素の数の縦横比から平面体の傾きを求めることにより、簡易な手法で、物体が白線などの路上にある線状平面体であるか否かを判定する画像処理を行うことができる。路上の線状平面体である白線は、所定の傾きを有することから、画像上における傾きを比較することにより、高い精度で白線の共通性を判定することができる。
さらに、本実施形態では、平面体の移動情報(移動速度成分、移動方向成分)はカメラからの距離に関わらず一定になる特徴を利用し、平面体であると判定された2以上の物体の立体特徴領域の端部に位置する基点画素の移動情報の共通性に基づいて、平面体が共通の線状平面体であるか否かを判定することができる。このように、移動情報に基づいて線状平面体の共通性を判定するため、簡易な手法で、物体が共通の白線(線状平面体)であるか否かを高い精度で判定する画像処理を行うことができる。
また、本実施形態においては、平面体と判定された一の立体特徴領域の移動情報と、その立体特徴領域の最下端部Kを通り、傾きαの直線の近傍の立体特徴領域の最下端部K´を含む立体特徴領域の移動情報とを比較することにより、物体が共通の線状平面体であるか否かを判定することができる。本手法によれば、線状平面体の共通性を、移動情報と傾きの両方から検討することができ、より高い精度で線状平面体の共通性を判定する画像処理を行うことができる。加えて、傾き比較部341により算出された傾きに基づいて、移動速度を算出する立体特徴領域の候補を抽出するため、立体観測不能領域以外の領域にある平面体についても、高い精度で平面体であるか否かの判定、及び共通する線状平面体であるか否かの判定をすることができる。
また、車両の速度に基づいて、予め取得された、立体に対応する立体特徴領域の移動速度が所定値A以上となる立体判定領域を参照し、この立体判定領域内に含まれる移動速度が所定値A未満の立体特徴領域に対応する物体は、平面体であると判定する。このため、カメラ10の近傍に存在する物体の速度成分について、それが立体の速度成分であるか、平面体の速度成分であるかを判定し、その物体の属性を判定することができる。また、立体特徴領域内だけを探索するという簡易な処理により、物体の属性の判定の精度を向上させる画像処理を行うことができる。
なお、以上説明した実施形態は、本発明の理解を容易にするために記載されたものであって、本発明を限定するために記載されたものではない。したがって、上記の実施形態に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物をも含む趣旨である。