(57)【特許請求の範囲】
【請求項１】
車両に設けられたカメラが所定のフレーム周期で前記車両の周囲を撮像するステップと、
前記カメラにより撮像された複数の画像間の動きベクトルを検出するステップと、
検出された動きベクトルから自車の移動パラメータを求めるステップと、
前記自車の移動パラメータを求める際に利用された前記複数の画像の撮像の後に前記カメラにより撮像された新たな画像を用いて新たに動きベクトルを検出するステップと、
前記新たな画像を用いて前記新たに検出された動きベクトルのうち、前記複数の画像を利用して求められた前記自車の移動パラメータに対応する自車の移動ベクトルとの比較で所定の閾値以内であるものを背景ベクトルとして検出するステップと、
この背景ベクトルを用いて新たに自車の移動パラメータを求めるステップと、
を有する自車移動推定方法。
【請求項２】
前記自車の移動パラメータに対応する自車の移動ベクトルは、
前記車両から所定の距離離れた位置としてもしくは路面上として求められる、
請求項１記載の自車移動推定方法。
【請求項３】
前記車両の周囲を撮像するステップは、
前記車両に設けられた魚眼カメラが所定のフレーム周期で前記車両の正面画像、左画像および右画像を含む魚眼画像を撮像するステップであり、
前記検出された動きベクトルから自車の移動パラメータを求めるステップは、
前記魚眼画像に含まれる前記正面画像、左画像および右画像のそれぞれから前記自車の移動パラメータを求めるステップであり、
前記背景ベクトルとして検出するステップは、
前記正面画像、左画像および右画像のそれぞれから前記背景ベクトルを検出するステップであり、
前記新たに自車の移動パラメータを求めるステップは、
前記正面画像、左画像および右画像のそれぞれから検出された前記背景ベクトルから自車の移動パラメータを求め、この前記正面画像、左画像および前記右画像のそれぞれから求められた自車の移動パラメータにもとづいて新たに自車の移動パラメータを求めるステップである、
請求項１または２に記載の自車移動推定方法。
【請求項４】
前記新たに自車の移動パラメータを求めるステップは、
前記背景ベクトルのうち、全ての前記背景ベクトルの平均から所定の範囲内にある背景ベクトルを用いて新たに自車の移動パラメータを求めるステップである、
請求項１ないし３のいずれか１項に記載の自車移動推定方法。
【請求項５】
前記車両の周囲の画像を複数に分割し、分割領域ごとに前記背景ベクトルを検出するステップと、
前記分割領域ごとに検出された前記背景ベクトルにもとづいて前記自車の移動パラメータのうち並進成分の前記車両の進行方向成分および前記自車の移動パラメータのうち回転成分の路面法線方向軸周り成分を求める仮パラメータ算出ステップと、
前記並進成分の前記車両の進行方向成分および前記回転成分の路面法線方向軸周り成分の値が前記仮パラメータ算出ステップで求められた値からそれぞれ所定の値以内となるよう、前記新たに求められた自車の移動パラメータを制限するステップと、
をさらに有する、
請求項１ないし４のいずれか１項に記載の自車移動推定方法。
【請求項６】
前記車両の挙動上の制限を用いて前記新たに求められた自車の移動パラメータを制限するステップ、
をさらに有する、
請求項１ないし５のいずれか１項に記載の自車移動推定方法。
【請求項７】
前記車両の周囲の画像のうち下側の画像領域に含まれる前記車両近傍の画像から車両近傍路面の動きベクトルを取得するステップと、
前記車両近傍路面の動きベクトルを用いて前記新たに求められた自車の移動パラメータを補正するステップと、
をさらに有する、
請求項１ないし６のいずれか１項に記載の自車移動推定方法。
【請求項８】
前記車両近傍路面の動きベクトルを用いて前記新たに求められた自車の移動パラメータを補正するステップを実行した後に新たに検出された動きベクトルのうち、前記補正後の自車の移動パラメータに対応する自車の移動ベクトルとの比較で前記所定の閾値よりも小さい差以内であるものを背景ベクトルとして検出するステップ、
をさらに有する、
請求項７記載の自車移動推定方法。
【請求項９】
前記車両の複数個所に設けられた複数のカメラのそれぞれにより、互いに異なる前記車両の周囲画像が撮像されるステップ、
をさらに有し、
前記複数のカメラのそれぞれに撮像された画像にもとづいて得られる複数の自車の移動パラメータの１つを前記新たに求められた自車の移動パラメータとする、
請求項１ないし８のいずれか１項に記載の自車移動推定方法。
【請求項１０】
コンピュータに、
車両に設けられたカメラが所定のフレーム周期で撮像した前記車両の周囲の画像を取得するステップと、
前記カメラにより撮像された複数の画像間の動きベクトルを検出するステップと、
検出された動きベクトルから自車の移動パラメータを求めるステップと、
前記自車の移動パラメータを求める際に利用された前記複数の画像の撮像後に前記カメラにより撮像された新たな画像を用いて新たに動きベクトルを検出するステップと、
前記新たな画像を用いて前記新たに検出された動きベクトルのうち、前記複数の画像を利用して求められた前記自車の移動パラメータに対応する自車の移動ベクトルとの比較で所定の閾値以内であるものを背景ベクトルとして検出するステップと、
この背景ベクトルを用いて新たに自車の移動パラメータを求めるステップと、
を実行させるための自車移動推定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、自車移動推定方法および自車移動推定プログラムに関する。
【背景技術】
【０００２】
最近、自動車などの車両の運転を支援するための技術として、たとえば、車載カメラにより撮像された画像にもとづいて車両と対象物との衝突可能性を判定する技術がある。この種の技術において、車載カメラにより撮像された画像から対象物を抽出するためには、自車の並進成分および回転成分（以下、自車移動パラメータという）の情報が必要となる。
【０００３】
自車移動パラメータを推定する方法としては、たとえば車載カメラにより撮像された画像から動きベクトルを検出し、この検出した動きベクトルから推定する方法が知られている。この方法では、車載カメラにより撮像された画像内の被写体は静止物が支配的であり、画像から検出される動きベクトルは静止物の動きベクトルであるという前提のもと、検出した動きベクトルから自車移動パラメータを推定するようになっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特願２００８−２０３９９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、車載カメラにより撮像された画像内において大きな物体が横切ると、検出される動きベクトルは自車の移動方向とは無関係の方向をもつものが多くなってしまい、自車移動パラメータを推定することが難しくなってしまう。また、車載カメラにより撮像された画像内において車両の近くに大きな物体が存在すると、この物体の位置の検出誤差が自車移動パラメータの精度に大きく影響し、自車移動パラメータを推定することが難しくなってしまう。
【課題を解決するための手段】
【０００６】
本発明の一実施形態に係る自車移動推定方法は、上述した課題を解決するために、車両に設けられたカメラが所定のフレーム周期で前記車両の周囲を撮像するステップと、前記カメラにより撮像された複数の画像間の動きベクトルを検出するステップと、検出された動きベクトルから自車の移動パラメータを求めるステップと、前記自車の移動パラメータを求める際に利用された前記複数の画像の撮像の後に前記カメラにより撮像された新たな画像を用いて新たに動きベクトルを検出するステップと、前記新たな画像を用いて前記新たに検出された動きベクトルのうち、前記複数の画像を利用して求められた前記自車の移動パラメータに対応する自車の移動ベクトルとの比較で所定の閾値以内であるものを背景ベクトルとして検出するステップと、この背景ベクトルを用いて新たに自車の移動パラメータを求めるステップと、を有する方法である。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態に係る自車移動推定方法を実施するための自車移動推定装置の一例を示すブロック図。
【図２】図１に示す主制御部のＣＰＵにより初期の自車移動パラメータを求める際の手順を示すフローチャート。
【図３】座標系と回転方向の関係の一例を示す説明図。
【図４】空間上の特徴点の位置ｚと路面との関係の一例を示す説明図。
【図５】図１に示す主制御部のＣＰＵにより画像内に大きな物体が存在しても正確に自車移動パラメータを推定する際の手順を示すフローチャート。
【図６】図５のＳ１５で背景ベクトル検出部により実行される背景ベクトル判定処理の手順の一例を示すサブルーチンフローチャート。
【図７】（ａ）は、魚眼カメラの左１／４視野および右１／４視野をｙｚ平面に平行に配置された左画面および右画面にそれぞれ射影する例を示す説明図、（ｂ）は、魚眼カメラの左１／４視野および右１／４視野をｙ軸に並行かつｙｚ平面に対して所定の傾きを持つよう配置された左画面および右画面にそれぞれ投影する例を示す説明図、（ｃ）は、魚眼カメラの左１／４視野および右１／４視野をそれぞれｘｚ平面に平行に配置された左画面および右画面にそれぞれ射影する例を示す説明図。
【図８】図７（ａ）に示す場合における動きベクトルの算出方法を説明するための図。
【発明を実施するための形態】
【０００８】
本発明に係る自車移動推定方法および自車移動推定プログラムの実施の形態について、添付図面を参照して説明する。
【０００９】
図１は、本発明の一実施形態に係る自車移動推定方法を実施するための自車移動推定装置１０の一例を示すブロック図である。
【００１０】
自車移動推定装置１０は、カメラ１１、主制御部１２、記憶部１３、灯火装置１６、クラクション１７、スピーカ１８および表示装置１９を有する。
【００１１】
カメラ１１は、ＣＣＤ（Charge Coupled Device）イメージセンサやＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサにより構成され、自家用自動車等の車両の周囲の映像を取り込んで画像データを生成して主制御部１２に与える。
【００１２】
たとえば後方を監視する場合、カメラ１１は車両後部のナンバープレート付近に路面と平行な線からやや下向きに配設される。カメラ１１には、より広範な車両外画像が取得可能なように広角レンズや魚眼レンズが取り付けられてもよい。また、車両の側方を監視する場合、カメラ１１はサイドミラー付近に配設される。また、複数のカメラ１１を用いることにより広範な車外周囲画像を取り込むようにしてもよい。
【００１３】
主制御部１２は、たとえばＣＰＵ、ＲＡＭ、ＲＯＭを備えたマイクロコントローラにより構成される。主制御部１２のＣＰＵは、ＲＯＭなどの記憶媒体に記憶された自車移動推定プログラムおよびこのプログラムの実行のために必要なデータをＲＡＭへロードし、このプログラムに従って画像内に大きな物体が存在しても正確に自車移動パラメータを推定する処理を実行する。主制御部１２のＲＡＭは、ＣＰＵが実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。主制御部１２のＲＯＭなどの記憶媒体は、自車移動推定プログラムや、これらのプログラムを実行するために必要な各種データを記憶する。
【００１４】
なお、ＲＯＭをはじめとする記憶媒体は、磁気的もしくは光学的記録媒体または半導体メモリなどの、ＣＰＵにより読み取り可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は図示しないネットワーク接続部を介して電子ネットワークを介してダウンロードされるように構成してもよい。
【００１５】
なお、この場合、ネットワーク接続部は、ネットワークの形態に応じた種々の情報通信用プロトコルを実装し、この各種プロトコルに従って主制御部１２と他の車両のＥＣＵなどの電気機器とを電子ネットワークを介して接続する。この接続には、電子ネットワークを介した電気的な接続などを適用することができる。ここで電子ネットワークとは、電気通信技術を利用した情報通信網全般を意味し、無線／有線ＬＡＮ（Local Area Network）やインターネット網のほか、電話通信回線網、光ファイバ通信ネットワーク、ケーブル通信ネットワークおよび衛星通信ネットワークなどを含む。
【００１６】
記憶部１３は、主制御部１２によるデータの読み書きが可能な不揮発性のメモリであり、あらかじめ、過去フレームまでの自車移動パラメータ、角度閾値ＴｈＡ、差閾値ＴｈＳおよび比閾値ＴｈＲを記憶している。また、新たに得られた背景ベクトルもここに記憶される。これらの情報は、電子ネットワークを介してまたは光ディスクなどの可搬型記憶媒体を介して更新されてもよい。
【００１７】
灯火装置１６は、一般的なヘッドライトにより構成され、主制御部１２により制御されて点滅（いわゆるパッシング）を行うことにより、たとえば自車両の外部に対して警告を行う。
【００１８】
クラクション１７は、主制御部１２により制御されて自車両の外部に対して警告音を出力する。
【００１９】
スピーカ１８は、自車両の車内に設けられ、主制御部１２により制御されて自車両の運転者に対してビープ音や危険が迫っていることを知らせるための情報などの各種情報に対応した音声を出力する。
【００２０】
表示装置１９は、運転者が視認可能な位置に設けられ、車載用の一般的なディスプレイやカーナビゲーションシステム、ＨＵＤ（ヘッドアップディスプレイ）などの表示出力装置を用いることができ、主制御部１２の制御に従って、カメラ１１の撮像画像や危険が迫っていることを知らせるための情報などの各種情報を表示する。
【００２１】
続いて、主制御部１２のＣＰＵによる機能実現部の構成について説明する。
【００２２】
図１に示すように、主制御部１２のＣＰＵは、自車移動推定プログラムによって、少なくとも平面画像生成部２１、動きベクトル検出部２２、背景ベクトル検出部２３、自車移動算出部２４および物体ベクトル処理部２５として機能する。この各部２１−２５は、ＲＡＭの所要のワークエリアを、データの一時的な格納場所として利用する。なお、これらの機能実現部は、ＣＰＵを用いることなく回路などのハードウエアロジックによって構成してもよい。
【００２３】
平面画像生成部２１は、カメラ１１により撮像された画像にもとづいて平面画像を生成する。たとえばカメラ１１に魚眼レンズが取り付けられている場合は、平面画像生成部２１は、カメラ１１により撮像された魚眼画像を通常の２次元画像に正規化するとともに、この正規化画像にもとづいて、あらかじめ定められた視点の平面画像を生成する。
【００２４】
動きベクトル検出部２２は、ブロックマッチング法や勾配法などを用いて、平面画像生成部２１により生成された複数の平面画像から画素ごとに動きベクトルを算出する。
【００２５】
背景ベクトル検出部２３は、自車移動算出部２４により算出された自車の移動パラメータ（自車の並進成分Ｔおよび回転成分Ｒ）にもとづいて自車の移動ベクトルを算出する。そして、この自車の移動ベクトルと、自車の移動パラメータの算出に用いられたフレームよりも後に撮影されたフレーム画像から動きベクトル検出部２２により検出された動きベクトルと、を比較し、所定の閾値以内にある動きベクトルを背景ベクトルとして検出する。
【００２６】
背景ベクトル検出部２３は、この所定の閾値として、記憶部１３に記憶された角度閾値ＴｈＡ、差閾値ＴｈＳおよび比閾値ＴｈＲを用いることができる。
【００２７】
自車移動算出部２４は、まず、動きベクトルにもとづいて、初期の自車移動パラメータを算出する。もしくは初期状態は停車していると判断して、自車移動パラメータを０または小さいパラメータにしておく。次に、背景ベクトル検出部２３によってこの初期の自車移動パラメータにもとづいて背景ベクトルが検出されると、この検出された背景ベクトルにもとづいて、新たに自車移動パラメータを算出する。そして、この新たに算出したパラメータを、背景ベクトル検出部２３に与える。
【００２８】
物体ベクトル処理部２５は、背景ベクトル検出部２３により背景ベクトルとして検出されなかった動きベクトルを物体ベクトルとしてあつかい、この物体ベクトルから得られた物体の接近状況に応じて灯火装置１６、クラクション１７、スピーカ１８および表示装置１９の少なくとも１つを介して運転者に対して警告を行う。
【００２９】
次に、本実施形態に係る自車移動推定装置１０の動作の一例について説明する。
【００３０】
図２は、図１に示す主制御部１２のＣＰＵにより初期の自車移動パラメータを求める際の手順を示すフローチャートである。図２において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００３１】
まず、ステップＳ１において、カメラ１１は、少なくとも路面を含む車両周囲の画像を取り込んで画像信号を生成して平面画像生成部２１に与える
【００３２】
次に、ステップＳ２において、平面画像生成部２１は、カメラ１１により撮像された画像にもとづいて平面画像を生成する。
【００３３】
次に、ステップＳ３において、動きベクトル検出部２２は、平面画像生成部２１により生成された複数の平面画像から画素ごとに動きベクトルを算出する。
【００３４】
次に、ステップＳ４において、自車移動算出部２４は、ステップＳ２で算出された動きベクトルにもとづいて、初期の自車移動パラメータを算出する。
【００３５】
以上の手順により、初期の自車移動パラメータを求めることができる。
【００３６】
ここで、背景ベクトル検出部２３による自車移動パラメータにもとづく自動移動ベクトルの算出方法について説明する。
【００３７】
図３は、座標系と回転方向の関係の一例を示す説明図である。以下の説明では、図３に示すように、進行方向をｚ軸、路面法線方向をｙ軸、進行方向および路面法線方向に互いに直交する方向をｘ軸とする座標系を用いる場合の例について示す。このとき、水平線を真横に見えるようにし進行方向をｚ軸からずらしても良い。また、動きベクトルのｘ、ｙ、ｚ成分をそれぞれｕ、ｖ、ｗとあらわすものとする。また、図３においては、ｘ軸、ｙ軸、ｚ軸周りの回転をそれぞれＲｘ、Ｒｙ、Ｒｚとして示した。
【００３８】
カメラ１１により撮像された画像は、平面画像生成部２１により、理想的にはｚ＝ｆで表されるカメラ投影面３１に展開されることになる。ここで、ｆはカメラ１１の焦点距離であるものとする。
【００３９】
自車移動での画面の回転方向および並進方向をそれぞれＲ（Ｒｘ、Ｒｙ、Ｒｚ）およびＴ（Ｔｘ、Ｔｙ、Ｔｚ）とする。このとき、自車移動の回転方向と並進方向は（−Ｒｘ、−Ｒｙ、−Ｒｚ）および（−Ｔｘ， −Ｔｙ， −Ｔｚ）となる。
【００４０】
公知の式により、自車移動ベクトル（ｘ、ｙ、ｃｕ、ｃｖ）＝（ｘ座標位置、ｙ座標位置、ｘ方向ベクトル、ｙ方向ベクトル）は、自車移動パラメータから次のように求めることができる。
wu = -(x・y / f)・Rx + ((f・f + x・x) / f)・Ry - y・Rz
wv = -((f・f + y・y) / f)・Rx + (x・y / f )・Ry + x・Rz
tu = (f・Tx - x・Tz) / z
tv = (f・Ty - y・Tz) / z
cu = tu + wu
cv = tv + wv
【００４１】
ここで、ｔｕ，ｔｖは並進成分、ｗｕ，ｗｖは回転成分をそれぞれ表す。このときｚは地面外ではある値（Ｚｍａｘ）で制限（たとえば全ての特徴点がＺｍａｘにあるものと仮定）し、地面はその値より小さくする。収束点ＦＯＥ（ＦＯＥｘ、ＦＯＥｙ）とするとき、計算を簡単にするために水平線の傾きは無し、ＦＯＥｘ＝０とし、ＦＯＥｙはある程度地面方向の解像度を上げるためにずらすのを許容して計算する。そのために、平面画像生成部２１は、水平線が真横となるよう、かつ収束点がｘ＝０の位置になるように平面画像を生成することが好ましい。
【００４２】
図４は、空間上の特徴点の位置ｚと路面との関係の一例を示す説明図である。
【００４３】
背景が遠すぎる場合、並進移動をしても動きベクトルはとても小さい。しかし、それ以外の場合は、特徴点の動きベクトルはある程度の大きさを持つ。図４に示すように、カメラから路面までの距離をＤｇｎｄとすると、例えばＤｇｎｄまでの距離の１０倍以上を背景とみなす場合には、Ｄｇｎｄ＝Ｚｍａｘ／１０とする。
【００４４】
画像から検出した動きベクトルのｚ座標は、次のように計算できる。
z = (Dgnd・f / cos(θgnd)) / (y - FOEy)  (zはZmaxで制限)
θgnd = atan(FOEy / f)
【００４５】
図５は、図１に示す主制御部１２のＣＰＵにより画像内に大きな物体が存在しても正確に自車移動パラメータを推定する際の手順を示すフローチャートである。図５において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００４６】
ステップＳ１１において、背景ベクトル検出部２３は、自車移動パラメータにもとづいて自車移動ベクトルを算出する。この自車移動パラメータとしては、たとえば図２のステップＳ４で算出される初期の自車移動パラメータを用いることができる。
【００４７】
次に、ステップＳ１２において、カメラ１１は、少なくとも路面を含む車両周囲の画像を取り込んで画像信号を生成して平面画像生成部２１に与える。このとき取り込まれる画像は、初期の移動パラメータの算出に用いられた画像よりも後に撮影されたものとなる。換言すれば、この後のステップで利用される自車の移動パラメータは、このステップＳ１２で取り込まれるフレームよりも過去のフレームにもとづいて算出されたものである。
【００４８】
次に、ステップＳ１３において、平面画像生成部２１は、ステップＳ１２でカメラ１１により撮像された画像にもとづいて平面画像を生成する。
【００４９】
次に、ステップＳ１４において、動きベクトル検出部２２は、平面画像生成部２１により生成された複数の平面画像から画素ごとに動きベクトルを算出する。
【００５０】
次に、ステップＳ１５において、背景ベクトル検出部２３は、過去のフレームにもとづいて自車移動算出部２４により算出された自車移動パラメータから自車の移動ベクトルを算出する。そして、背景ベクトル検出部２３は、この自車の移動ベクトルと、自車の移動パラメータの算出に用いられたフレームよりも後に撮影されたフレーム画像から動きベクトル検出部２２により検出された動きベクトルと、を比較し、所定の閾値以内にある動きベクトルを背景ベクトルとして検出する。
【００５１】
より具体的には、ステップＳ１１で算出された自車移動ベクトル（ｃｕ、ｃｖ）＝（ｘ方向ベクトル、ｙ方向ベクトル）と、ステップＳ１４で画像から検出される動きベクトル（ｐｕ、ｐｖ）＝（ｘ方向ベクトル、ｙ方向ベクトル）とを比較し、この動きベクトルが所定の閾値以内にあるか否か、すなわち背景ベクトルとして検出するか否かを判定する。
【００５２】
なお、回転成分をキャンセルした状態でのベクトルである（ｐｕ−ｗｕ、ｐｖ−ｗｖ）と（ｔｕ、ｔｖ）とを比較しても良い。
【００５３】
ステップＳ１５において背景ベクトルであると判定された動きベクトルは、背景ベクトル検出部２３により記憶部１３に格納される（ステップＳ１６）。
【００５４】
一方、ステップＳ１５において背景ベクトルではないと判定された動きベクトルは、物体ベクトルとして物体ベクトル処理部２５に与えられる。物体ベクトル処理部２５は、この物体ベクトルから物体を検出する処理を行い（ステップＳ１７）、得られた物体の接近状況に応じて灯火装置１６、クラクション１７、スピーカ１８および表示装置１９の少なくとも１つを介して運転者に対して警告を行う（ステップＳ１８）。なお、背景ベクトルと物体ベクトルの閾値付近は、どちらにもせず捨てても良い。
【００５５】
次に、ステップＳ１９において、背景ベクトル検出部２３は、動きベクトルを全て検出したか否かを判定する。未検出の動きベクトルがある場合はステップＳ１４に戻り、全て検出している場合はステップＳ２０に進む。
【００５６】
そして、ステップＳ２０において、自車移動算出部２４は、記憶部１３に記憶された背景ベクトルを用いて、自車移動パラメータを算出する。この背景ベクトルを用いた自車移動パラメータの算出方法の詳細については後述する。
【００５７】
以上の手順により、画像内に大きな物体が存在しても正確に自車移動パラメータを推定することができる。
【００５８】
本実施形態に係る自車移動推定装置１０は、ある程度遠い位置にある特徴点、あるいは地面の特徴点の背景ベクトルのみを用いて自車移動パラメータを算出する。このため、たとえば画面上に大きな物体がある場合や、画面内を大きな物体が横切る場合でも、これらの物体の動きベクトルは背景ベクトルとしては検出されず、正確に自車移動パラメータを算出することができる。また、背景ベクトルのみを計算に用いるため、非常に計算が軽いとともに、画像以外の入力情報を必要としない。
【００５９】
続いて、画像から検出された動きベクトルを背景ベクトルとして検出するか否かの判定方法について、より詳細に説明する。
【００６０】
図６は、図５のＳ１５で背景ベクトル検出部２３により実行される背景ベクトル判定処理の手順の一例を示すサブルーチンフローチャートである。
【００６１】
背景ベクトル検出部２３は、画像から検出された動きベクトルと自車移動ベクトルとの比較により、近い動きベクトルであれば次のフレームで使用する自車移動パラメータを計算するための背景ベクトルとする。判断する順番としては、たとえば、角度で比較し、差で比較し、比で比較する。なお、処理の開始時は通常止まったところから始まるが、そうでない場合がある。そのため少しの時間の間は、背景ベクトルとなりやすいように条件を変更してもよいし、物体を検出しないようにしても良い。
【００６２】
ステップＳ３１において、背景ベクトル検出部２３は、画像から検出された動きベクトルと自車移動ベクトルの角度差が、記憶部１３にあらかじめ記憶された角度閾値ＴｈＡ以下であるか否かを判定する。
【００６３】
角度の比較の方法は、検出された動きベクトルのままでの角度比較と、回転成分をキャンセルしたベクトルでの角度比較を行う。つまり、下記の２通りのベクトル角度比較を行う。
(pu、pv)と(tu + wu、tv + wv)
(pu - wu、pv - wv)と(tu、tv)
【００６４】
ＦＯＥ付近では、自車移動パラメータの誤差によってベクトルの向きがずれるため、どちらの角度比較でも角度がずれているときに背景ベクトルとはせず物体のベクトルと判定する（ステップＳ３１のＮＯ）。この結果、背景ベクトルとしてふさわしくない動きベクトルを検出してしまうことを防ぐことができる。また、動きベクトルの検出精度が高い場合には、どちらかの角度がずれているときのみ物体ベクトルとして検出してもよい。
【００６５】
なお、動きベクトルが小さいと、ノイズの影響が大きくなり動きベクトルの向きがばらばらになってしまう。一方、ある程度大きければ、向きに関してはノイズの影響を受けにくくなる。したがって、角度の比較は、動きベクトルの大きさが所定の大きさ以上の場合のみ行うようにするとよい。
【００６６】
角度閾値ＴｈＡより大きな角度差がある場合は、ステップＳ３２に進み、物体ベクトルと判定して図５のステップＳ１７に進む。一方、角度差が角度閾値ＴｈＡ以下である場合は、ステップＳ３３に進む。
【００６７】
次に、ステップＳ３３において、背景ベクトル検出部２３は、画像から検出された動きベクトルと自車移動ベクトルの大きさの差が、記憶部１３にあらかじめ記憶された差閾値ＴｈＳ以下であるか否かを判定する。
【００６８】
大きさの比較においても、回転成分をキャンセルした状態で比較しても良い。また、大きさの差の比較においては、計算を簡略化するために、ｕ（ｘ方向のベクトル）かｖ（ｙ方向のベクトル）の自車移動ベクトルの大きいほうのみで計算しても良い。
【００６９】
大きさの差が閾値ＴｈＳ以下である場合は、ステップＳ３４に進みこの動きベクトルを背景ベクトルと判定して図５のステップＳ１６に進む。一方、大きさの差が差閾値ＴｈＳより大きい場合は、ステップＳ３５に進み比の判定を行う。
【００７０】
なお、背景ベクトルの誤検出を防ぐよう、差閾値ＴｈＳは次のように重み付けするとよい。
【００７１】
まず、自車移動パラメータが大きい場合、振動などにより自車移動パラメータの変化量が大きくなる。このため、自車移動パラメータが大きい場合には、差閾値を大きくする。このとき最大値制限をしてもよい。
s1 = ThS・|R|・|T| / (|Rs|・|Ts|)
(s1がThSより小さい場合はs1 = ThS)
|R|：自車移動パラメータの回転成分の大きさ
|T|：自車移動パラメータの並進成分の大きさ
|Rs|：大きいとする自車移動パラメータの回転成分の大きさ
|Ts|：大きいとする自車移動パラメータの並進成分の大きさ
【００７２】
また、画面の中心より外側になるにしたがい、検出した動きベクトルまでの距離が遠くなる。このため、ノイズの影響がその分増幅されやすくなり、動きベクトルの検出精度が悪くなることになる。したがって、距離が遠いほど差閾値を大きくする。
s2 = s1・(√(f・f + x・x + y・y)) / f
【００７３】
さらに、画面の下になるに従い路面となり、自車に近づく。このため、ｚの値が小さくなり、自車移動ベクトルの影響が大きくなる。したがって、自車移動パラメータがずれていた場合の影響度が大きくなる。そこで、ｚが近いほど差閾値を大きくする。
s3 = s2・Zmax / z
【００７４】
また、この乗算分をさらに乗じて、より誤差があっても背景ベクトルとなりやすくしてもよい。
【００７５】
角度の比較で物体ベクトルとならず、かつ大きさの差の比較で背景ベクトルとならなかった動きベクトルについて、ステップＳ３５において、背景ベクトル検出部２３は、画像から検出された動きベクトルと自車移動ベクトルの比が、記憶部１３にあらかじめ記憶された比閾値ＴｈＲ以下であるか否かを判定する。比の１からの差が比閾値ＴｈＲ以下である場合は、ステップＳ３４に進みこの動きベクトルを背景ベクトルと判定して図５のステップＳ１６に進む。一方、比の１からの差が比閾値ＴｈＲより大きい場合はステップＳ３２に進み、物体ベクトルと判定して図５のステップＳ１７に進む。
【００７６】
なお、比の比較においても、回転成分をキャンセルした状態で比較しても良い。たとえば比が１に近ければ背景とみなし、そうでなければ背景とはしない。また、計算を簡略化するために、ｕ（ｘ方向のベクトル）かｖ（ｙ方向のベクトル）の自車移動ベクトルの大きいほうのみで計算しても良い。
【００７７】
次に、カメラ１１が左右の領域を撮影可能に構成される場合について説明する。
【００７８】
魚眼レンズを用いる場合など、カメラ１１が左右の領域を撮影可能である場合、正面だけではなく、左右にも画像を用意しておいてもよい。このとき、自車移動パラメータを左右の方向に展開できるように、画像を真横に設置するか、斜めなどでの画像で取得したベクトルを真横の平面に射影変換させる。
【００７９】
例えば左画像の場合、回転パラメータＲｌ（Ｒｌｘ、Ｒｌｙ、Ｒｌｚ）は正面の回転パラメータを使用して次のように書ける。
Rlx = Rz
Rly = Ry
Rlz = -Rx
【００８０】
同様に、左画像の並進パラメータＴｌ（Ｔｌｘ、Ｔｌｙ、Ｔｌｚ）は正面の並進パラメータを使用して次のように書ける。
Tlx = Tz
Tly = Ty
Tlz = -Tx
【００８１】
となる。右画像の場合、回転パラメータをＲｒ（Ｒｒｘ、Ｒｒｙ、Ｒｒｚ）、並進パラメータをＴｒ（Ｔｒｘ、Ｔｒｙ、Ｔｒｚ）とすると、正面のパラメータより下記のようになる。
Rrx = -Rz
Rry = Ry
Rrz = Rx
Trx = -Tz
Try = Ty
Trz = Tx
【００８２】
求めたい左側のｚは、正面画像のＦＯＥｙの位置より、画面の右側を＋ｘとすると、次のように表せる。
z = (Dgnd・f / cos(θgnd)) / (y - FOEy・x / f)  (zはZmaxで制限)
θgnd = atan(FOEy / f)
【００８３】
同様に画面の右側を＋ｘとすると、右側のｚは次のように表せる。
z = (Dgnd・f / cos(θgnd)) / (y + FOEy・x / f)  (zはZmaxで制限)
θgnd = atan(FOEy / f)
【００８４】
以上のパラメータを使用して、正面の画像と同様の処理を行い、背景ベクトルを検出することができる。また、左右画像から検出した背景ベクトルは、自車移動パラメータの計算に用いてもよい。また、回転成分の計算は並進成分の計算と見分けがつきやすい正面のみとしても良い。それぞれの方向によって得られた自車移動パラメータは、最後に正面の方向のパラメータとして一つにする。その場合、平均でもいいし、ベクトル数で重み付けしても良い。
【００８５】
続いて、図５のステップＳ２０で自車移動算出部２４により実行される、背景ベクトルを用いた自車移動パラメータの算出方法の詳細について説明する。
【００８６】
まず、自車移動パラメータの回転成分Ｒを計算する。得られた背景ベクトルを（ｘ１、ｙ１、ｕ１、ｖ１）・・・（ｘｎ、ｙｎ、ｕｎ、ｖｎ）＝（ｘ座標位置、ｙ座標位置、ｘ方向ベクトル、ｙ 方向ベクトル）とした場合、下記の計算式の最小２乗解を求めればよい。ただし、ｎは１以上の整数を表す。
【００８７】
【数１】
0005833887.tif 000002
【００８８】
次に上記の公知の回転成分計算により得られたＲを使用し、並進成分Ｔの計算を行う。得られた背景ベクトルを（ｘ１、ｙ１、ｚ１、ｕ１、ｖ１）・・・（ｘｎ、ｙｎ、ｚｎ、ｕｎ、ｖｎ）＝（ｘ座標位置、ｙ座標位置、ｚ座標位置、ｘ方向ベクトル、ｙ方向ベクトル）とした場合、下記の計算式の最小２乗解を求めればよい。ただしｎは１以上の整数を表す。
【００８９】
【数２】
0005833887.tif 000003
【００９０】
次に、上記の公知の回転成分計算により得られたＲを使用し、収束点ＦＯＥ（ＦＯＥｘ、ＦＯＥｙ）の計算を行う。得られた背景ベクトルを（ｘ１、ｙ１、ｕ１、ｖ１）・・・（ｘｎ、ｙｎ、ｕｎ、ｖｎ） ＝ （ｘ座標位置、ｙ座標位置、ｘ方向ベクトル、ｙ 方向ベクトル）とした場合、下記の計算式の最小２乗解を求めればよい。ただしｎは１以上の整数を表す。
【００９１】
【数３】
0005833887.tif 000004
【００９２】
さらに、以下の条件を加えることにより、上記の公知の計算を単純化することができる。なお、以下の条件は、得られる背景ベクトルが少ない場合に使用してもよい。
FOEx = 0
FOEy = 一定(キャリブレーション必須)
Rx = 0
Ry = 可変(計算する対象)
Rz = (-FOEy / f)・Ry
Tx = 0
Ty = (FOEy / f)・Tz
Tz = 可変(計算する対象)
【００９３】
ＦＯＥｙに値を持たせるのは、ある程度地面方向にし、地面側の解像度を上げて、障害物を検出しやすくするためである。計算を単純化するために、ＦＯＥｙ ＝ −ｆ ／ ２やＦＯＥｙ ＝ −ｆとしてもよい。
【００９４】
また、ＦＯＥｘが０ではない場合、下記のようにして計算しても良い。
Rx = (-FOEx / f)・Ry
Tx = (FOEx / f)・Tz
【００９５】
上記の計算式で得られる結果は、ばらつきが大きい。そのため、自車が動いているほど自車パラメータの変化量が大きいと判断し、得られたベクトル（ｕ、ｖ）の大きさの平均に定数を乗じてベクトルの制限を入れてもよい。このとき画面の端ほど遠いためベクトルが大きくなることを考慮し、ｆ／（√(ｆ・ｆ ＋ ｘ・ｘ ＋ ｙ・ｙ)）をかけてもよい。また、地面はベクトルが大きくなることを考慮し、ベクトルの大きさにｚ／Ｚｍａｘをかけても良い。また、回転成分をキャンセルした（ｕ−ｗｕ、ｖ−ｗｖ）を使用してもよい。以上をすべて考慮した場合のベクトルの大きさの平均を求めると下記のようになる。
Ans = (1 / n)・Σ((√(X・X + Y・Y))・(f / F)・(z / Zmax))
X = u - wu
Y = v - wv
F = √(f・f + x・x + y・y)
wu = -(x・y / f)・Rx + ((f・f + x・x) / f)・Ry - y・Rz
wv = -((f・f + y・y) / f)・Rx + (x・y / f)・Ry + x・Rz
上記により得られた結果によっては、ほとんど動かない場合や動きすぎる場合がある。このため、最大最小制限を入れる。次に、それぞれの自車移動パラメータに固有の比例定数をかけて、それを制限とする。また、最初にキャリブレーションするなどして初期値がある程度信用できる場合は、初期値側（止まっている側）への変化量の制限を、２倍ゆるくするなどで緩和して、初期値側へ行きやすくしてもよい。
【００９６】
次に、フレーム画像を複数領域に分割して背景ベクトルを検出する方法について説明する。
【００９７】
図７（ａ）は、魚眼カメラの左１／４視野および右１／４視野をｙｚ平面に平行に配置された左画面４２および右画面４３にそれぞれ射影する例を示す説明図であり、（ｂ）は、魚眼カメラの左１／４視野および右１／４視野をｙ軸に並行かつｙｚ平面に対して所定の傾きを持つよう配置された左画面４２および右画面４３にそれぞれ投影する例を示す説明図であり、（ｃ）は、魚眼カメラの左１／４視野および右１／４視野をそれぞれｘｚ平面に平行に配置された左画面４２および右画面４３にそれぞれ射影する例を示す説明図である。図７（ａ）〜（ｃ）のいずれにおいても、魚眼カメラの正面左１／４視野および正面右１／４視野は正面４１に投影されるものとする。
【００９８】
また、図８は、図７（ａ）に示す場合における動きベクトルの算出方法を説明するための図である。
【００９９】
図７に示すように、１８０度見渡せる魚眼カメラのようなカメラを用いる場合、図８に示すように画像を正面４１、左画面４２および右画面４３に３分割し、各面において背景ベクトルを取得してもよい。このとき水平線あたりのみとしてもよい。また、路面でのベクトルを使用するのであれば（ｚ ／ Ｚｍａｘ）で乗算し正規化しておく。また、違う画面方向や円筒状の画像や球状の画像を平面に引き伸ばした画像で得られたベクトルを射影変換などして正面と真横の面でのベクトルにしてもよい。このときＦＯＥは正面画像の中心とし水平線は真横になるように画像またはベクトルを射影変換する。得られたベクトルを横方向のみとし、画面の横ほどベクトルが大きくなるので小さくし、地面ほどベクトルが大きくなるので小さくする。以上で得られたベクトルを４５度ごとの４つの領域に分けて平均化する。
【０１００】
たとえば図７（ａ）に示す場合、得られるベクトルをそれぞれ、正面左がＵｆｌ、正面右がＵｆｒ、左横がＵｓｌ、右横がＵｓｒとし、得られる角度をそれぞれ正面左がθｆｌ、正面右がθｆｒ、左横がθｓｌ、右横がθｓｒするとき、まず、画面の右を＋ｘとすると、正面画像に対しては次式が成り立つ。
【０１０１】
Ufl = (1 / n)・Σ(u・(f / √(f・f + x・x))・(z / Zmax))
θfl = (1 / n)・Σacos(x / f) (= 90°〜135°)
Ufr = (1 / n)・Σ(u・(f / √(f・f + x・x))・(z / Zmax))
θfr = (1 / n)・Σacos(x / f) (= 45°〜90°)
【０１０２】
また、画面の右を＋ｘとすると、左画面に対しては次式が成り立つ。
Usl = (1 / n)・Σ(u・(f / √(f・f + x・x))・(z / Zmax))
θsl = 180°- (1 / n)・Σasin(x / f) (= 135°〜180°)
【０１０３】
また、画面の右を＋ｘとすると、右画面に対しては次式が成り立つ。
Usr = (1 / n)・Σ(u・(f / √(f・f + x・x))・(z / Zmax))
θsr = -(1 / n)・Σasin(x / f) (= 0°〜45°)
【０１０４】
なお、ここでは図７（ａ）で示す場合について、すなわち画像面を真正面と真横とする場合について計算しているが、図７（ｂ）や（ｃ）などの違う向きで画像取得しても、半円上でのベクトルの長さとする計算にすればよい。また、円柱状を平面に引き伸ばした画像でベクトルを取得した場合にはｘ方向が角度となるため、距離での正規化（ｆ ／ √（ｆ・ｆ ＋ ｘ・ｘ））はせず、角度もそのまま平均とすればよい。
【０１０５】
得られた結果は大雑把なベクトルであるため、ｙ軸回転成分Ｒｙとｚ方向成分Ｔｚのみを計算する。４つのベクトルは円上のベクトルとなる。そのベクトルをＲｙとＴｚのみで構成されていると仮定しているので、回転成分をＵｒｏとすると下記の式が得られる。
f・Tz / Zmax = -(Ufl - Uro) / cos(θfl)
f・Tz / Zmax = -(Ufr - Uro) / cos(θfr)
f・Tz / Zmax = -(Usl - Uro) / cos(θsl)
f・Tz / Zmax = -(Usr - Uro) / cos(θsr)
Ry = Uro / f
【０１０６】
上記より２点を選べばＲｙとＴｚが連立方程式により導き出される。
【０１０７】
上記の計算精度が上がるように、並進成分が小さく見えるＵｆｌとＵｆｒによりＲｙを導き、そのＲｙを使用して、並進成分の大きくなるＵｓｌとＵｓｒにより導き出したＴｚを平均化してＴｚとしても良い。
【０１０８】
また、背景ベクトルに近い物体のベクトルを背景ベクトルとしてしまっている可能性を考慮し、４つのベクトルをすべて使用して計算しても良い。その場合、ＵｆｌとＵｆｒにより導出したＲｙと、ＵｓｌとＵｓｒにより導出したＲｙを平均化したものをＲｙとする。そして、それぞれの計算式にＲｙを代入しそれぞれのＴｚを導き出し、平均化したものをＴｚとする。または、最小２乗解を導き出してもよい。
【０１０９】
また、２点による解は６通りで導き出すことができるが、導き出した解の中間の値（たとえば真中２点の平均）をＲｙとＴｚとしてもよい。この場合、背景ベクトルに近い物体ベクトルを背景ベクトルとしてしまっている場合にも、ある程度無視することができるようになる。
【０１１０】
また、計算を単純化するために、ベクトル平均の位置を下記のように４分割した中間の位置とし、計算で使用する位置としてもよい。
θsr = 45°/ 2
θfr =θsr + 45°
θfl =θfr + 45°
θsl =θfl + 45°
【０１１１】
上記のように単純化した角度だとすると、ベクトルがＲｙとＴｚのみで構成されていると仮定しているため、左右対称の位置にあるベクトルを平均するとＲｙ成分のみとなる。また、Ｒｙ成分をキャンセルすると左右対称の位置にあるベクトルは極性が逆で同じ大きさになる。
【０１１２】
Ｒｙを計算するためには並進成分の影響を受けにくい正面２つのベクトルの平均（（Ｕｆｌ＋Ｕｆｒ）／２）を使用しても良い。また、物体のベクトルに結果がひきずられるのを防ぐために、４つのベクトルすべての平均（（Ｕｆｌ＋Ｕｆｒ＋Ｕｓｌ＋Ｕｓｒ）／４）を使用してもよい。また、たとえば正面でベクトルが得られなかった場合には、横の２つのベクトルの平均（（Ｕｓｌ＋Ｕｓｒ）／２）を用いても良い。得られた平均値Ｕｒｏは回転成分のみであるとみなし、
Ry = Uro / f
【０１１３】
となる。次にＴｚを計算する。４箇所のベクトルの回転成分をキャンセルすると、
Ufl = Ufl - Uro
Ufr = Ufr - Uro
Usl = Usl - Uro
Usr = Usr - Uro
【０１１４】
が得られる。得られた結果は理想的には並進成分のみとなり、θ＝２２．５°とすると次のようになる。
Ufl ≒ -Ufr
Usl ≒ -Usr
Usl / cos(θ) ≒ Ufl / cos(90°-θ)
→Usl ≒ Ufl / tan(θ)
Usl / cos(θ) = f・Tz / Zmax
→Tz = Zmax・Usl / (f・cos(θ))
【０１１５】
よって並進成分は大きくなりやすいＵｓｌとＵｓｒを使用し、
Tz = Zmax・((Usl-Usr)/2) / (f・cos(θ))
【０１１６】
としても良いし、４つのベクトルのすべてを使用し、
Tz = Zmax・((Usl-Usr+(Ufl-Ufr)/tan(θ))/4) / (f・cos(θ))
【０１１７】
としても良いし、Ｕｓｌだけを使用して
Tz = Zmax・Usl / (f・cos(θ))
【０１１８】
としても良いし、Ｕｓｒだけを使用して
Tz = -Zmax・Usr / (f・cos(θ))
【０１１９】
としても良い。また、ベクトルが２箇所からしか得られなかった場合には、回転成分をＵｒｏとすると、
Ufl - Uro ≒ -(Ufr - Uro)
Usl - Uro ≒ -(Usr - Uro)
Usl - Uro ≒ (Ufl - Uro) / tan(θ)
【０１２０】
より、Ｕｒｏを連立方程式で計算して導き出し、ＲｙとＴｚを計算しても良い。
【０１２１】
以上により得られたＲｙとＴｚの付近になるように、自車移動パラメータに制限を入れる。また、Ｒｘ、Ｒｚ、Ｔｘ、Ｔｙも下記の式により導かれた値で、その付近になるように自車移動パラメータに制限を入れる。
Rx = (-FOEx / f)・Ry
Rz = (-FOEy / f)・Ry
Tx = (FOEx / f)・Tz
Ty = (FOEy / f)・Tz
【０１２２】
また、水平線を真横ではない状態から真横になるように変換しているのであれば、その分逆回転させる。
【０１２３】
なお、ここで得られたパラメータを制限としては使用せずに、そのまま自車移動パラメータとして使用してもよい。また、４分割したが、８分割などもっと細かくしても良いし、２分割や３分割に荒くしても良い。また、４５度ごとの領域ではなく、３０度などの別の角度としても良いし、領域ごとに角度を変えても良い。この場合、左右で同じ角度領域であることが望ましい。
【０１２４】
次に、車両の挙動上の制約による制限について説明する。
【０１２５】
車の挙動には制約があるため、この制約に応じた制限を加えてもよい。たとえば、滑りがない場合、回転するためにはタイヤが前後についているためある程度並進する必要があるという制限がある。これらの制限１−９を以下に例示する。また、パラメータが異常値の可能性もあるため、制限の変化量に制限を入れても良い。
【０１２６】
制限１は、ＦＯＥｙのずれ分ＲｙがあればＲｚがある、という制限である。
Rz = (-FOEy / f)・Ry
【０１２７】
同様に下記のように、変数の位置を変えたパラメータに関しても制限を入れてもよい。
Ry = Rz / (-FOEy / f)
FOEy = -f・Rz / Ry
【０１２８】
制限２は、ＦＯＥｙのずれ分ＴｚがあればＴｙがある、という制限である。
Ty = (FOEy / f)・Tz
【０１２９】
同様に、変数の位置を変えたパラメータに関しても制限を入れてもよい。
【０１３０】
制限３は、ＦＯＥｘのずれ分ＲｙがあればＲｘがある、という制限である。
Rx = (-FOEx / f)・Ry
【０１３１】
同様に、変数の位置を変えたパラメータに関しても制限を入れてもよい。
【０１３２】
制限４は、ＦＯＥｘのずれ分ＴｚがあればＴｘがある、という制限である。
Tx = (FOEx / f)・Tz
【０１３３】
同様に、変数の位置を変えたパラメータに関しても制限を入れてもよい。
【０１３４】
制限５は、ＲｙがあればＴｚがある、という制限である。
画面方向へ前進中 Tz = -A・|Ry|
画面方向から後進中 Tz = A・|Ry|
【０１３５】
Ａは最大に陀角を持たせたときの比例定数である。Ｔｚの大きさがここでの値より小さい場合の制限とする。前進か後進かはＣＡＮ（Communication Area Network）による情報や、Ｔｚの符号が変わらない方向とすればよい。
【０１３６】
制限６は、ＴｘはＴｚが必要である、という制限である。
B = A・|Tz|
【０１３７】
Ａをある程度小さい値にしておいて、（ＦＯＥｘ／ｆ）・Ｔｚ±Ｂの間になるようにＴｘを制限する。
【０１３８】
制限７は、ＴｙはＴｚが必要である、という制限である。
B = A・|Tz|
【０１３９】
Ａをある程度小さい値にしておいて、（ＦＯＥｙ／ｆ）・Ｔｚ±Ｂの間になるようにＴｙを制限する。
【０１４０】
制限８は、逆方向への進行は少し許容されるが大きい値とはならない、という制限である。例えば、自車が後進する場合にのみバックカメラの撮像画像を表示装置１９に表示しない場合などでも、坂などでブレーキを踏まなかった場合では、画面への前進方向のみの極性のＴｚとならない場合がある。だが、大きい値とはならない。そのため逆の極性となった場合の大きさに制限を入れる。
画面方向へ前進中 Tz < A
画面方向から後進中 Tz > -A
Aは小さい正の値となる。
【０１４１】
制限９は、Ｒｙ、Ｔｚがある閾値より小さい場合には、停車していると判定する、という制限である。
Rx = 0
Ry = 0
Rz = 0
Tz = A
Tx = (FOEx / f)・Tz
Ty = (FOEy / f)・Tz
【０１４２】
Ａは小さい値にするが、Ｔｚは画面方向へ前進中はマイナス、画面方向から後進中はプラスにする。前進か後進かはＣＡＮによる情報や、Ｔｚの符号が変わらない方向とすればよい。また、ベクトルの角度比較をする場合を考慮し、パラメータを０とはせず小さい値を入れる。
【０１４３】
次に、路面ベクトルによる制限について説明する。
【０１４４】
前進している場合でも背景が遠すぎる場合には背景がほとんど動かない一方で、ｚ座標のリミットを入れているためにパラメータが大きくずれてしまう。このため、路面に描かれた線などが物体と誤判定されたり、路面にある物体が路面の模様である背景ベクトルと誤判定されたりする場合がある。
【０１４５】
この誤判定を回避するために、まず、物体は路面と接地していて、接地位置ではベクトルが得られるという前提にする。そして画面の下から動きベクトルを検出し、水平線より下の指定した角度以下である程度の大きさがあり背景ベクトルとなったベクトル数が指定した数となったら、後述する計算で自車移動パラメータを補正する。背景ベクトルの誤検出を考慮し、自車移動パラメータの変化量に制限を入れる。変化量の制限内で補正しきれた場合には、補正後に検出される動きベクトルを背景ベクトルと判定する際の基準を厳しくして、物体として検出しやすくさせる。具体的には、たとえば差閾値ＴｈＳをＳ１−Ｓ３へ大きく重み付けする処理を実行しない、あるいはその影響度を小さくするとよい。
【０１４６】
また、左右の画像より得られたベクトルを使用して画像を補正してもよい。その場合ベクトルを射影変換させる。左右の画像を使用することにより、正面画像では見えない真横の画像を使用することができる。また、逆に下記の式を左右の画像での自車移動パラメータにして計算し、正面の画像での自車移動パラメータに変換してもよい。
【０１４７】
補正する処理の前提として、自車の挙動上補正するパラメータはＲｙ、Ｔｚのみとし、Ｒｘ、Ｒｚ、Ｔｘ、Ｔｙは、
Rx = (-FOEx / f)・Ry
Rz = (-FOEy / f)・Ry
Tx = (FOEx / f)・Tz
Ty = (FOEy / f)・Tz
【０１４８】
で導き出すことにする。そのため導き出したいパラメータはΔＲｙとΔＴｚとなる。
【０１４９】
これらのパラメータΔＲｙおよびΔＴｚを連立方程式で解く場合、公知の式である、
wu = -(x・y / f)・Rx + ((f・f + x・x) / f)・Ry - y・Rz
wv = -((f・f + y・y) / f)・Rx + (x・y / f )・Ry + x・Rz
tu = (f・Tx - x・Tz) / z
tv = (f・Ty - y・Tz) / z
【０１５０】
より、
Axr = -FOEy / f
Axt = FOEy / f
ΔRx = Axr・ΔRy
ΔTx = Axt・ΔTz
Ayr = -FOEy / f
Ayt = FOEy / f
ΔRz = Ayr・ΔRy
ΔTy = Ayt・ΔTz
【０１５１】
を代入すると、
Δwu = (-(x・y / f) ・Axr + (f・f + x・x) / f - y・Ayr)・ΔRy
Δwv = (-((f・f + y・y) / f) ・Axr + x・y / f  + x・Ayr)・ΔRy
Δtu = (f・Axt - x)・ΔTz / z
Δtv = (f・Ayt - y)・ΔTz / z
【０１５２】
正しい背景としているため、下記の条件が満たされる。
u - (wu + Δwu) = tu + Δtu
v - (wv + Δwv) = tv + Δtv
【０１５３】
以上の条件より、連立方程式でΔＲｙとΔＴｚが導かれる。指定数分のベクトルで同じ処理を行い、得られたΔＲｙとΔＴｚを平均化するなどする。得られたΔＲｙとΔＴｚによりΔＲｘとΔＲｚとΔＴｘとΔＴｙも作り出し、補正する。
【０１５４】
上記の連立方程式による計算は煩雑であり重い。そこで、より簡単な処理となるよう、縦成分は並進成分、横成分は回転成分とみなしてパラメータΔＲｙおよびΔＴｚを導いてもよい。すなわち、自車に近い地面の検出されるベクトルは、縦成分がほぼ並進成分（Ｔｙ，Ｔｚ）となるため、並進成分の変化量ΔＲｙを無視し、下記のような補正量になる。
v - wv = tv
→v - (-((f・f + y・y) / f) ・Axr + x・y / f  + x・Ayr)・Ry= (f・Ayt - y)・(Tz + ΔTz) / z
→ΔTz = (v - (-((f・f + y・y) / f) ・Axr + x・y / f  + x・Ayr)・Ry)・z / (f・Ayt - y) - Tz
【０１５５】
以上により得られたΔＴｚより横成分を計算してΔＲｙを導くと、
u - wu = tu
→u - (-(x・y / f) ・Axr + (f・f + x・x) / f - y・Ayr)・(Ry + ΔRy) = (f・Axt - x)・(Tz + ΔTz) / z
→ΔRy = (u - (f・Axt - x)・(Tz + ΔTz) / z) / (-(x・y / f) ・Axr + (f・f + x・x) / f - y・Ayr) - Ry
【０１５６】
となる。指定数分のベクトルで同じ処理を行い、得られたΔＲｙとΔＴｚを平均化するなどする。得られたΔＲｙとΔＴｚによりΔＲｘとΔＲｚとΔＴｘとΔＴｙも作り出し、補正する。
【０１５７】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１５８】
たとえば、別の場所に取り付けられた複数のカメラによって得られた複数の画像を用いて、並列に処理を行ってもよい。この場合、物体に周りを囲まれた場合であっても、どこかのカメラによって自車移動パラメータを特定することができる可能性が高くなる。
【０１５９】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【０１６０】
１０  自車移動推定装置
１１  カメラ
１２  主制御部
１３  記憶部
２１  平面画像生成部
２２  動きベクトル検出部
２３  背景ベクトル検出部
２４  自車移動算出部
２５  物体ベクトル処理部
【図１】
0005833887.tif 000005
【図２】
0005833887.tif 000006
【図３】
0005833887.tif 000007
【図４】
0005833887.tif 000008
【図５】
0005833887.tif 000009
【図６】
0005833887.tif 000010
【図７】
0005833887.tif 000011
【図８】
0005833887.tif 000012