以下、本発明の例示的な実施形態について、図面を参照しながら詳細に説明する。以下の説明では、本発明が適用される移動体が車両である場合を例にとり説明するが、本発明が適用される移動体は車両に限定される趣旨ではない。本発明は、例えば船舶、航空機、ロボット等に適用されてもよい。車両には、例えば自動車、電車、無人搬送車等の車輪を有する乗り物が広く含まれる。
また、以下の説明では、車両の直進進行方向であって、運転席からハンドルに向かう方向を「前方向」とする。また、車両の直進進行方向であって、ハンドルから運転席に向かう方向を「後方向」とする。また、車両の直進進行方向及び鉛直線に垂直な方向であって、前方向を向いている運転者の右側から左側に向かう方向を「左方向」とする。また、車両の直進進行方向及び鉛直線に垂直な方向であって、前方向を向いている運転者の左側から右側に向かう方向を「右方向」とする。なお、前後左右の方向は、単に説明のために用いられる名称であって、実際の位置関係及び方向を限定する趣旨ではない。
<<A.第1実施形態>>
<1.移動体制御システム>
図1は、本発明の第1実施形態に係る移動体制御システムSYS1の構成を示すブロック図である。本実施形態において移動体は車両であり、移動体制御システムSYS1は車両制御システムである。図1に示すように、移動体制御システムSYS1は、異常検出システムSYS2と、自動運転制御装置5と、表示装置6とを備える。後述のように、異常検出システムSYS2は異常検出装置1を備える。換言すると、移動体制御システムSYS1は、異常検出装置1と自動運転制御装置5とを備える。
自動運転制御装置5は、移動体の自動運転を制御する。自動運転制御装置5は、各移動体に搭載される。詳細には、自動運転制御装置5は、車両の駆動部と、制動部と、操舵部とを制御するECU(Electronic Control Unit)である。駆動部には、例えばエンジンやモータが含まれる。制動部にはブレーキが含まれる。操舵部には、ステアリングホイール(ハンドル)が含まれる。自動運転制御装置5による制御動作のオンオフは、異常検出装置1からの指示によって切替可能に設けられている。自動運転制御装置5による制御が開始されると、アクセル、ブレーキ、および、ハンドルが運転者の操作によらず自動で行われる。なお、自動運転制御装置5による制御動作のオンオフは、運転者によって切替可能であることが好ましい。
表示装置6は、各移動体に搭載される。詳細には、表示装置6は、車両の室内に、表示面が運転者から見える位置に配置される。表示装置6は、例えば液晶表示装置、有機EL表示装置、プラズマ表示装置等であってよい。表示装置6は、車両に固定される装置であってもよいが、車両外に持ち出すことが可能な装置であってもよい。
<2.異常検出システム>
図1に示すように、異常検出システムSYS2は、異常検出装置1と、撮影部2と、センサ部3とを備える。なお、本実施形態において、異常は、車両に搭載されるカメラの取付けのずれ(以下、「カメラずれ」と表現する)が生じた状態を指す。すなわち、異常検出システムSYS2は、車両に搭載されるカメラのカメラずれを検出するシステムである。詳細には、異常検出システムSYS2は、例えば、工場出荷時における車両へのカメラの取付け状態等の基準となる取付け状態からのカメラずれを検出するシステムである。カメラずれには、軸ずれや、軸周りの回転によるずれ等が広く含まれる。軸ずれには、取付け位置のずれや取付け角度のずれ等が含まれる。
撮影部2は、車両周辺の状況を認識する目的で車両に設けられる。撮影部2はカメラ21を備える。カメラ21は車載カメラである。カメラ21は例えば魚眼レンズを用いて構成される。カメラ21は、異常検出装置1に有線又は無線により接続され、撮影画像を異常検出装置1に出力する。
なお、本実施形態では、撮影部2は複数のカメラ21を備える。複数のカメラ21は、フロントカメラ、バックカメラ、左サイドカメラ、右サイドカメラの4つのカメラである。フロントカメラは車両の前方を撮影するカメラである。バックカメラは車両の後方を撮影するカメラである。左サイドカメラは車両の左方を撮影するカメラである。右サイドカメラは車両の右方を撮影するカメラである。4つのカメラ21により、車両の水平方向における全周囲を撮影することができる。これにより、車両の駐車支援を安全に行うことができる。ただし、撮影部2が備えるカメラ21の数は単数でもよいし、4つ以外の複数であってもよい。
異常検出装置1は、移動体に搭載されるカメラ21の異常を検出する装置である。詳細には、異常検出装置1は、車両に搭載されたカメラ21からの情報に基づき当該カメラ21自身のカメラずれを検出する。すなわち、異常検出装置1はカメラずれ検出装置である。異常検出装置1を用いることによって、車両を走行させながらカメラずれを迅速に検出することができる。異常検出装置1により、例えば、カメラずれが生じた状態で駐車支援等の運転支援が行われることを防止できる。
本実施形態では、異常検出装置1は、カメラずれの検出対象となるカメラを搭載する車両に搭載される。以下、異常検出装置1を搭載する車両のことを自車両と呼ぶことがある。ただし、異常検出装置1は、カメラずれの検出対象となるカメラを搭載する車両以外の場所に配置されてもよい。例えば、異常検出装置1は、カメラ21を有する車両と通信可能なデータセンタ等に配置されてもよい。
本実施形態では、撮影部2が複数のカメラ21を有するために、異常検出装置1は、カメラ21毎にカメラずれの検出を行う。異常検出装置1は、自動運転制御装置5および表示装置6と有線又は無線により接続され、これらの装置5、6と情報のやりとりを行う。異常検出装置1の詳細については後述する。
センサ部3は、カメラ21が搭載される車両に関する情報を検出する複数のセンサを有する。本実施形態では、センサ部3は、速度センサ31と舵角センサ32とを含む。速度センサ31は、車両の速度を検出し、その検出値に応じた電気信号を出力する。舵角センサ32は、車両のステアリングホイール(ハンドル)の回転角を検出し、その検出値に応じた電気信号を出力する。速度センサ31および舵角センサ32は、通信バス4を介して異常検出装置1に接続される。すなわち、速度センサ31で取得された車両の速度情報は、通信バス4を介して異常検出装置1に入力される。舵角センサ32で取得された車両のステアリングホイールの回転角情報は、通信バス4を介して異常検出装置1に入力される。なお、通信バス4は、例えばCAN(Controller Area Network)バスであってよい。
<3.異常検出装置>
図1に示すように、異常検出装置1は、画像取得部11と、制御部12と、記憶部13とを備える。
画像取得部11は、自車両のカメラ21からアナログ又はデジタルの撮影画像(フレーム画像)を所定周期(例えば1/30秒周期)で周期的に取得する。本実施形態では、撮影部2が複数のカメラ21を有するために、画像取得部11は各カメラ21からフレーム画像を取得する。取得したフレーム画像がアナログの場合には、そのアナログのフレーム画像をデジタルのフレーム画像に変換(A/D変換)する。画像取得部11は、取得したフレーム画像に対して所定の画像処理を行い、処理後のフレーム画像を制御部12に出力する。
制御部12は、例えばマイクロコンピュータであり、異常検出装置1の全体を統括的に制御する。制御部12は、CPU、RAMおよびROM等を備える。記憶部13は、例えば、フラッシュメモリ等の不揮発性のメモリであり、各種の情報を記憶する。記憶部13は、各種のコンピュータプログラム131やデータ(不図示)を記憶する。制御部12の各種の機能は、CPUが記憶部13に記憶されるコンピュータプログラム131に従って演算処理を行うことによって実現される。なお、画像取得部11は、制御部12のCPUがコンピュータプログラム131に従って演算処理を行うことによって実現される構成でもよい。
本実施形態では、制御部12は、カメラ21の異常の有無を、カメラ21で撮影された撮影画像から抽出される特徴点の位置の時間変化に基づき判定する判定処理を実行する。判定処理は、第1処理モードと第2処理モードとを選択可能に設けられる。すなわち、制御部12は、第1処理モードに従ってカメラずれの有無を判定する場合と、第2処理モードにしたがってカメラずれの有無を判定する場合とがある。なお、本実施形態では、撮影部2が複数のカメラ21を備えるために、各カメラ21に対してカメラ21の異常の有無を判定する判定処理が行われる。
第1処理モードでは、特徴点を抽出する閾値が第1閾値とされる。一方、第2処理モードでは、特徴点を抽出する閾値が第1閾値より小さい第2閾値とされる。第1処理モードと第2処理モードとでは、特徴点の抽出結果に差が生じる。
特徴点は、フレーム画像中のエッジの交点など、フレーム画像において際立って検出できる点である。特徴点は、例えば白線等で描かれる路面標示のコーナー、路面上のひび、路面上のしみ、路面上の砂利等から抽出される。特徴点は、例えば、ハリスオペレータ等の公知の手法を用いて抽出することができる。
本実施形態では、制御部12は、フレーム画像を構成する画素それぞれについて特徴量を算出し、特徴量が所定の閾値を超える画素を特徴点として抽出する。特徴量は、画素がどれだけ特徴的であるかの指標であり、例えばいわゆるコーナーらしさを示すコーナー度である。所定の閾値は、第1処理モードと第2処理モードとで異なる。
本実施形態では、特徴量の算出には、KLT法(Kanade-Lucus-Tomasi tracker)が用いられる。特徴量の算出にあたって、フレーム画像上にxy座標系が規定され、各画素について、ソベルフィルタを用いて、以下の3つのパラメータG11、G12、G22が求められる。
なお、G11は、x方向の微分結果の2乗値である。G12は、x方向の微分結果とy方向の微分結果の積である。G22は、y方向の微分結果の2乗値である。
ソベルフィルタを用いた処理により、各画素について以下の行列Mが得られる。
行列M(式(4))の固有値λは、Iを単位行列として、下記の式(5)から求められる。
式(5)の解は、2次方程式の解として下記の式(6)、(7)に示すλ1と、λ2として求められる。
本実施形態では、以下の式(8)を満たす画素を特徴点として抽出する。極小値となる固有値λ1を特徴量とする。式(8)において、Tは特徴点を検出するための所定の閾値である。詳細には、所定の閾値Tは、第1処理モードでは第1閾値T1、第2処理モードでは第2閾値T2とされる。第2閾値T2は第1閾値T1より小さい。第1閾値T1は、例えば白線のコーナーのような非常に大きな特徴量を有する特徴点のみが抽出されるように設定される。第2閾値T2は、路面の細かい凹凸に由来する特徴点が多数抽出されるように設定される。
第1処理モードは、第2処理モードに比べて、移動体(車両)の速度が高速である場合に使用される。第1処理モードでは、白線のコーナーのような非常に大きな特徴量を有する特徴点を利用して特徴点の追跡を行うことができる。このために、車両の速度がある程度速い場合でも、特徴点の位置の時間変化を精度良く求めることができ、カメラずれの有無の判定精度の低下を抑制できる。一方、第2処理モードは、特徴点の数が多数となるが、特徴量の小さな特徴点を多く含む。車両の速度が速くなると、特徴量の小さな特徴点は追跡が難しくなる。このために、第2処理モードは、車両が低速の場合に適したモードである。すなわち、第1処理モードは高速走行用の処理モードであり、第2処理モードは低速走行用の処理モードである。
本実施形態の構成によれば、車両が高速走行する場合には第1処理モードによってカメラずれの判定処理を行い、車両が低速走行する場合には第2処理モードによってカメラずれの判定処理を行うことができる。すなわち、走行速度に適した手法でカメラずれの判定を行うことができ、カメラずれの誤検出を低減することができる。
本実施形態では、詳細には、第1処理モードは、通常時に使用される処理モードである。第2処理モードは、第1処理モードによって所定の処理結果が得られた場合に使用される処理モードである。すなわち、異常検出装置1は、原則として、高速で走行する車両から得られる情報を用いて、第1処理モードによりカメラずれの有無を判定する。そして、異常検出装置1は、特定の条件の場合に限って、例外的に第1処理モードから第2処理モードに切り替え、低速で走行する車両から得られる情報を用いてカメラずれの有無を判定する。本実施形態によれば、低速走行時にカメラずれの検出に関わる処理が行われることを抑制することができ、低速走行時にカメラずれの検出とは関係のない処理を実行することができる。
本実施形態では、制御部12は、移動体(車両)の周辺環境をカメラ21で撮影された撮影画像に基づき認識する認識処理を実行可能に設けられる。当該認識処理は、例えばフレーム画像からエッジを抽出し、車両周辺の移動物や静止物を認識する処理である。例えば、公知のパターンマッチング処理やニューラルネットワークを用いた演算処理等により、移動物や静止物の認識が行われる。換言すると、制御部12は、カメラ21の異常を検出する装置としての機能以外の機能を備える。本実施形態では、制御部12は、駐車支援を行う装置としての機能も備える。
制御部12は、通常時において、移動体(車両)の速度が第2処理モードに対応する速度である場合には、車両の周辺環境を認識する認識処理を、カメラ21の異常の有無を判定する判定処理よりも優先する。本実施形態では、通常時においては、制御部12は、低速走行時に周辺環境の認識処理を優先して行い、高速走行時にカメラずれの有無を判定する判定処理を優先して行う。これによれば、制御部12の処理が一時期に過度に集中することを抑制することができ、制御部12の処理負荷を低減することができる。車両の駐車支援のための周辺環境の認識処理は低速走行時に行われるために、本実施形態の構成は、制御部12が駐車支援を行う装置としての機能も備える場合に好適である。
図2は、第1実施形態の異常検出装置1によるカメラずれの検出フローの一例を示すフローチャートである。カメラずれの検出処理は、例えば、所定期間毎(1週間毎等)、所定走行距離毎(100km毎等)、エンジン起動毎(イグニッション(IG)オン毎)、エンジン起動が所定回数に達した時点毎等に実行されてよい。なお、本実施形態では、撮影部2が4つのカメラ21を備えるために、各カメラ21について、図2に示すカメラずれの検出フローが実施される。重複説明を避けるために、ここでは、カメラ21がフロントカメラである場合を代表例として、カメラずれの検出フローを説明する。
図2に示すように、まず、制御部12は、カメラ21を搭載する車両が直進しているか否かを監視する(ステップS1)。車両が直進しているか否かは、例えば、舵角センサ32から得られるステアリングホイールの回転角情報に基づいて判断することができる。なお、直進には、前進方向の直進と、後退方向の直進との両方が含まれる。
制御部12は、車両の直進を検出するまで、ステップS1の監視を繰り返す。すなわち、制御部12は、車両が直進走行を行っていることを条件としてカメラずれに関する処理を進める。これによれば、車両の進行方向が曲がっている場合の情報を用いることなくカメラずれの検出に関する処理を行うことができるために、情報処理が複雑になることを避けられる。
車両が直進していると判断される場合(ステップS1でYes)、制御部12は、車両の速度が第1速度範囲内であるか否かを確認する(ステップS2)。第1速度範囲は、例えば時速15km以上30km以下としてよい。第1速度範囲は、車両の駐車支援が行われる速度より速い速度に設定されることが好ましい。なお、車両の速度が速くなりすぎると、特徴点の追跡が困難になるために、車両の速度は速すぎないことが好ましい。
制御部12は、車両の速度が第1速度範囲外である場合(ステップS2でNo)、ステップS1に戻る。すなわち、制御部12は、車両が直進走行を行っていること、および、車両の速度が第1速度範囲内であることを条件としてカメラずれに関する処理を進める。本実施形態では、原則として低速走行の場合にはカメラずれに関する処理が開始されないために、車両の周辺環境の認識処理とカメラずれに関する処理とが同時に進められることを避けることができ、制御部12の処理負荷が一時に集中することを抑制することができる。
車両が第1速度範囲内で走行していると判断される場合(ステップS2でYes)、制御部12は、第1処理モードによるカメラずれの有無の判定処理を行う(ステップS3)。なお、ステップS1とステップS2とは、順番が入れ替わってもよい。
図3は、第1実施形態の異常検出装置1における第1処理モードによるカメラずれの有無の判定処理の一例を示すフローチャートである。図3に示すように、制御部12は、フレーム画像から特徴点を抽出する処理を行う(ステップS31)。第1処理モードでは、特徴点を抽出するための第1閾値T1が高い値に設定されている。このために、抽出される特徴点は、コーナーらしさを示す特徴量が大きな特徴点である。
図4は、特徴点FPを抽出する手法を説明するための図である。図4は、カメラ21(フロントカメラ)で撮影されたフレーム画像Pを模式的に示す。図4に示すように、制御部12は、フレーム画像Pに所定の抽出領域ERを設定する。制御部12は、所定の抽出領域ERから特徴点FPを抽出する。所定の抽出領域ERは、路面RS部分が映る位置に設定される。所定の抽出領域ERは、フレーム画像Pの中心部Cを含む広範囲に設定されることが好ましい。これにより、特徴点FPの発生箇所が均一でなく偏った範囲に偏在する場合でも、特徴点FPを抽出することができる。
なお、図4においては、特徴点FPの数は2つとされているが、この数は便宜的なものであり、実際の数を示すものではない。複数の特徴点FPが抽出される場合もあれば、1つの特徴点FPのみしか抽出されない場合もある。また、特徴点FPが抽出されない場合もある。
図3に戻って、特徴点FPの抽出処理が行われると、特徴点数が所定数以上であるか否かが確認される(ステップS32)。特徴点数が所定数に満たない場合には(ステップS32でNo)、制御部12はカメラずれの有無が判定できないと判断し(ステップS37)、第1処理モードによる判定処理を終了する。一方、特徴点数が所定数以上である場合には(ステップS32でYes)、所定の時間間隔をあけて入力された2つのフレーム画像間における特徴点FPの動きを示すオプティカルフローの算出が行われる(ステップS33)。なお、所定数は、1つ以上であればよく、その数は、例えば実験やシミュレーション等によって決定してよい。
図5は、オプティカルフローOFを求める手法を説明するための図である。図5は、図4と同様に便宜的に示された模式図である。図5は、図4に示すフレーム画像(前回フレーム画像)Pの撮影後、所定の撮影時間間隔(1周期に相当)が経過した後にカメラ21で撮影されたフレーム画像(今回フレーム画像)P´である。図4に示すフレーム画像Pの撮影後、所定時間間隔が経過するまでの間に、自車両は後退している。図5に示す破線の丸印は、図4に示す前回フレーム画像Pにおいて抽出された特徴点FPの位置を示す。
図5に示すように、自車両が後退すると、自車両の前方に存在する特徴点FPは自車両から離れる。すなわち、特徴点FPは、今回フレーム画像P´と前回フレーム画像Pとで異なる位置に現れる。制御部12は、今回フレーム画像P´の特徴点FPと前回フレーム画像Pの特徴点FPとを、その近傍の画素値も考慮に入れて対応付け、対応付けた特徴点FPのそれぞれの位置に基づいてオプティカルフローOFを求める。なお、制御部12は、前回フレーム画像(1周期前のフレーム画像)がない場合にはオプティカルフローOFの算出処理を行わない。この場合もカメラずれの有無は判定されない。また、フレーム画像Pから複数の特徴点FPが抽出された場合には、各特徴点FPに対してオプティカルフローOFの算出処理が行われる。
図3に戻って、特徴点FPのオプティカルフローOFが算出されると、制御部12は、カメラ座標系で与えられるオプティカルフローOFの座標変換を行って移動ベクトルVを算出する(ステップS34)。座標変換は、カメラ座標系を路面上の座標系に変換する処理である。なお、制御部12は、フレーム画像Pから抽出された特徴点FPの座標について先に路面上の座標に変換し、オプティカルフローOFを求めることなく移動ベクトルを求めてもよい。
図6は、座標変換処理を説明するための図である。図6に示すように、制御部12は、カメラ21の位置(視点VP1)から見たオプティカルフローOFを、自車両が存在する路面RSの上方の視点VP2から見た移動ベクトルVに変換する。制御部12は、フレーム画像上のオプティカルフローOFを、路面に相当する仮想平面RS_Vに投影することで移動ベクトルVに変換する。移動ベクトルVの大きさは、自車両の路面RS上の移動量(移動距離)を示す。なお、本実施形態では、カメラ21が魚眼レンズであるために座標変換処理には歪補正が含まれることが好ましい。また、複数のオプティカルフローOFが求められた場合には、各オプティカルフローOFに対して移動ベクトルVの算出処理が行われる。
図3に戻って、路面RS上の動きを示す移動ベクトルVが算出されると、制御部12は、移動ベクトルVに基づき移動量(移動距離)の推定値を求める(ステップS35)。本実施形態では、制御部12は、移動ベクトルVの前後方向成分の長さを前後方向の移動量の推定値とする。また、制御部12は、移動ベクトルVの左右方向成分の長さを左右方向の移動量の推定値とする。
なお、移動ベクトルVの数が複数である場合には、前後方向および左右方向のそれぞれについて、各移動ベクトルVから求められる長さの平均値を推定値としてよい。また、移動ベクトルVの数が複数である場合には、特徴量が最も大きい特徴点FPから得られた移動ベクトルVのみを用いて前後方向および左右方向の移動量の推定値を求めてもよい。また、移動ベクトルVの数が多数である場合には、後述のヒストグラムを用いた統計処理によって前後方向および左右方向の移動量の推定値を求めてもよい。
移動量の推定値が得られると、制御部12は、当該推定値と、センサ部3からの情報によって得られる比較値とを比較してカメラずれの有無を判定する(ステップS36)。本実施形態では、前後方向の移動量について推定値と比較値との比較が行われる。また、左右方向の移動量について推定値と比較値との比較が行われる。比較値を正解値として、当該正解値に対する推定値のずれの大きさを判断する。当該ずれの大きさが所定の閾値を超える場合に、カメラずれが発生していると判断される。
前後方向の比較値(移動量)は、オプティカルフローOFを導出するための2つのフレーム画像の撮影時間間隔と、当該時間間隔における速度センサ31から得られる自車両の速度とによって算出することができる。また、本実施形態では、自車両が前後方向に直進している場合に得られるフレーム画像に基づいてカメラずれの有無が判定される。このために、左右方向の比較値(移動量)はゼロになる。
なお、比較値は、センサ部3以外からの情報に基づいて求められてもよい。例えば、GPSセンサや、カメラずれの判定対象以外のカメラから得られる情報に基づいて比較値が求められてもよい。また、推定値および比較値は、移動量でなくてもよく、例えば速度であってもよい。
図7は、第1実施形態における制御部12によって行われるずれ判定の一例を示すフローチャートである。なお、図7に示す処理は、図3のステップS36の詳細処理例である。
まず、制御部12は、自車両の前後方向の移動量について、推定値と比較値との差の大きさ(前後方向のずれ量)が、第1ずれ閾値より小さいか否かを確認する(ステップS361)。前後方向のずれ量が第1ずれ閾値以上である場合(ステップS361でNo)、制御部12は、カメラずれ有りと判定する(ステップS364)。
一方、前後方向のずれ量が第1ずれ閾値より小さい場合(ステップS361でYes)、制御部12は、自車両の左右方向の移動量について、推定値と比較値との差の大きさ(左右方向のずれ量)が、第2ずれ閾値より小さいか否かを確認する(ステップS362)。左右方向のずれ量が第2ずれ閾値以上である場合(ステップS362でNo)、制御部12は、カメラずれ有りと判定する(ステップS364)。
一方、左右方向のずれ量が第2ずれ閾値より小さい場合(ステップS362でYes)、制御部12はカメラずれ無しと判定する(ステップS363)。
本実施形態では、前後方向の移動量および左右方向の移動量のうち、いずれか1つでも、ずれ量が大きくなると、カメラずれが発生していると判定する。これによれば、カメラずれが発生しているにもかかわらず、カメラずれが発生していないと判定する可能性を低減できる。ただし、これは例示である。例えば、前後方向の移動量および左右方向の移動量の両方においてずれ量が大きくなった場合に限って、カメラずれが発生していると判定する構成としてもよい。また、カメラずれの判定は、前後方向および左右方向の移動量だけでなく、例えばこれらを組み合わせた指標(例えば、前後方向の移動量の二乗値と、左右方向の移動量の二乗値との和)に基づいて判定されてもよい。カメラずれの判定は、前後方向の移動量と、左右方向の移動量とのいずれか一方のみを用いて判定されてもよい。
また、本実施形態では、前後方向の移動量および左右方向の移動量について、順番に比較を行う構成としたが、これらの比較は同じタイミングで行われてもよい。また、前後方向の移動量および左右方向の移動量について順番に比較を行う構成の場合、その順番は特に限定されず、図7に示す順番とは異なる順番で比較が行われてもよい。また、以上では、1つのフレーム画像の処理結果に基づきカメラずれの有無を判定する構成としているが、これは例示にすぎない。複数のフレーム画像の処理結果に基づきカメラずれの有無を判定する構成としてもよい。これにより、カメラずれの有無を誤判定する可能性を低減することができる。
図2に戻って、第1処理モードによるカメラずれの有無の判定処理が終了すると、制御部12は、処理結果が所定の処理結果であるか否かを判定する(ステップS4)。処理結果が所定の処理結果である場合(ステップS4でYes)、第1処理モードから第2処理モードに切り替えてカメラずれの有無の判定処理を行う必要があると判断する(ステップS5)。一方、処理結果が所定の処理結果でない場合(ステップS4でNo)、ステップS1に戻り、ステップS1以降の処理が繰り返される。
図8は、第1処理モードによる処理結果が所定の処理結果であるか否かを判断する処理の詳細例を示すフローチャートである。図8は、図2のステップS4の詳細例を示すフローチャートである。図8に示すように、第1処理モードによる判定処理によりカメラずれ有りと判定されたか否かが確認される(ステップS41)。
カメラずれ有りと判定された場合(ステップS41でYes)、図2に示すステップS5に進む。一方、カメラずれ有りと判定されなかった場合(ステップS41でNo)、所定期間判定が未判定か否かが確認される(ステップS42)。第1処理モードにおいて、所定の複数フレームにわたって連続してカメラずれの有無の判定が行われていない場合、所定期間未判定と判定される。
所定期間未判定である場合(ステップS42でYes)、図2に示すステップS5に進む。一方、所定期間未判定でない場合には(ステップS42でNo)、カメラずれ無しとの判定を確定し(ステップS43)、ステップS1に戻ってステップS1以降の処理を繰り返す。
以上のように、本実施形態では、図2のステップS4に示す所定の処理結果には、カメラ21に異常が有る(カメラずれ有り)との処理結果が含まれる。これによれば、高速走行時に行われる第1処理モードでカメラずれが認められた場合に、低速走行による第2処理モードでのカメラずれの判定処理が行われるために、カメラずれの誤検出を低減することができる。
また、本実施形態では、図2のステップS4に示す所定の処理結果には、カメラ21の異常の有無(カメラずれの有無)を所定期間判定することができていないとの処理結果が含まれる。特徴点FPが所定数以上検出されないという事態は、白線のコーナーのような高い特徴量を示す特徴点FPが存在しない場合の他に、カメラ21の取付けが大きくずれている場合にも起こる。第1処理モードだけでは、この差を明確に区別することができない。本実施形態のように、カメラずれの有無の判定ができない状態が繰り返される場合に、特徴点FPを抽出するための閾値を下げる第2処理モードによる判定処理が行われることによって、カメラずれを適切に検出することができる。
図2に戻って、制御部12は、ステップS5以降の第2処理モードが実行される場合に、カメラ21を用いた車両の周辺環境の認識処理よりもカメラ21の異常(カメラずれ)の判定処理を優先する。これによれば、車両の低速走行時において、カメラずれが生じている可能性がある場合に限って周辺環境の認識処理よりもカメラずれの判定処理が優先される。このために、カメラ21の車両への搭載目的に応じた処理(周辺環境の認識処理)をできる限り優先しつつ、カメラ21の異常を適切に検出することができる。
本実施形態では、制御部12は、第1処理モードから第2処理モードに切り替える場合に、自動運転制御装置5に対して自動運転を要求する。当該要求により、移動体制御システムSYS1は、第2処理モードでカメラ21の異常(カメラずれ)の有無を判定する判定処理を行う場合に、移動体(車両)を自動運転させる。なお、自動運転は、第1処理モードから第2処理モードに切り替える必要があると判断された後、安全を確保できるタイミングで開始されることが好ましい。この判断は、自動運転制御装置5によって行われてよく、自動運転制御装置5は、自動運転の開始を制御部12に通知する。例えば、自動運転は、車両の発進や停車のタイミングで一時的に行われる。
本実施形態によれば、車両を所定の速度範囲で低速走行させつつ、ハンドルを一定として直線走行させることを精度良く行わせることができ、第2処理モードによるカメラずれの有無の判定処理を精度良く行うことができる。
第2処理モードでの判定処理のための自動運転が開始されると、第1処理モードの場合と同様に、直進走行しているか否かが確認される(ステップS6)。そして、直進走行している場合(ステップS6でYes)には、制御部12は、車両の速度が第2速度範囲内であるか否かを確認する(ステップS7)。第2速度範囲は、例えば時速3km以上5km以下としてよい。
制御部12は、車両の速度が第2速度範囲外である場合(ステップS7でNo)、ステップS6に戻る。すなわち、制御部12は、車両が直進走行を行っていること、および、車両の速度が第2速度範囲内であることを条件としてカメラずれに関する処理を進める。車両が第2速度範囲内で走行していると判断される場合(ステップS7でYes)、制御部12は、第2処理モードによるカメラずれの有無の判定処理を行う(ステップS8)。
図9は、第1実施形態の異常検出装置における第2処理モードによるカメラずれの有無の判定処理の一例を示すフローチャートである。なお、第2処理モードによる判定処理は、図3で示した第1処理モードによる判定処理と似ている。図3と処理内容が同様であるものについては、詳細な説明を省略する。
図9に示すように、制御部12は、フレーム画像から特徴点FPを抽出する処理を行う(ステップS81)。第2処理モードでは、第2閾値T2を超える特徴量を有する画素が特徴点FPとして抽出される。第2閾値T2は第1閾値T1(第1処理モードの閾値)に比べて低い値に設定されている。このために、路面の細かな凹凸に由来する特徴点FPが多数抽出される。例えばアスファルト路面のように表面に凹凸が多い路面からは多くの特徴点FPが抽出される。なお、例えばコンクリート路面のような平滑な路面では特徴点FPの数が少なくなる傾向がある。すなわち、路面の状態によっては、抽出される特徴点数が十分に得られないことも起こり得る。このような点を考慮して、第2処理モードにおいても第1処理モードと同様に、特徴点数が所定数に満たない場合には判定不能として、判定処理をやり直す構成としてもよい。
特徴点FPの抽出処理が行われると、制御部12はオプティカルフローOFを算出する(ステップS82)。オプティカルフローOFが算出されると、制御部12は、オプティカルフローOFの座標変換を行って移動ベクトルVを算出する(ステップS83)。これらの処理は、第1処理モードと同様である。
移動ベクトルVが算出されると、制御部12は、複数の移動ベクトルVに基づいてヒストグラムを生成する(ステップS84)。本実施形態では、制御部12は、各移動ベクトルVを前後方向と左右方向との2成分に分けて、第1ヒストグラムと第2ヒストグラムとを生成する。制御部12は、第1ヒストグラムと第2ヒストグラムとを用いて移動量の推定値を算出する(ステップS85)。
図10は、制御部12によって生成された第1ヒストグラムHG1の一例を示す図である。図11は、制御部12によって生成された第2ヒストグラムHG2の一例を示す図である。なお、制御部12は、ヒストグラムHG1、HG2の生成の前後において、先に求められた全ての移動ベクトルVの中から所定の条件に該当する移動ベクトルVを処理対象から除外する処理を行ってもよい。例えば、自車両の速度、舵角、シフトレバー位置等から予想される大きさや方向と大きくずれる移動ベクトルVは除外されてよい。また、例えば、ヒストグラムHG1、HG2において、度数が極端に低い階級に属する移動ベクトルVは除外されてよい。
図10に示す第1ヒストグラムHG1は、移動ベクトルVの前後方向成分に基づいて得られたヒストグラムである。第1ヒストグラムHG1は、移動ベクトルVの数を度数とし、前後方向への移動量(移動ベクトルの前後方向成分の長さ)を階級とするヒストグラムである。図11に示す第2ヒストグラムHG2は、移動ベクトルVの左右方向成分に基づいて得られたヒストグラムである。第2ヒストグラムHG2は、移動ベクトルVの数を度数とし、左右方向への移動量(移動ベクトルの左右方向成分の長さ)を階級とするヒストグラムである。
図10および図11は、自車両が後方に直進した場合に得られたヒストグラムである。図10および図11は、カメラずれが生じていない場合のヒストグラムの一例である。第1ヒストグラムHG1は、後方側の特定の移動量(階級)に偏って度数が多くなる正規分布形状になっている。一方、第2ヒストグラムHG2は、移動量ゼロの近傍の階級に偏って度数が多くなる正規分布形状になっている。カメラずれが生じると、ヒストグラムの形状に変化が見られる。
本実施形態では、制御部12は、第1ヒストグラムHG1の中央値(メジアン)を前後方向の移動量の推定値とする。制御部12は、第2ヒストグラムHG2の中央値を左右方向の移動量の推定値とする。ただし、制御部12による推定値の決定方法は、これに限定されない。制御部12は、例えば、各ヒストグラムHG1、HG2の度数が最大となる階級の移動量(最頻値)を推定値としてもよい。
移動量の推定値が得られると、制御部12は、第1処理モードの場合と同様に、当該推定値と、センサ部3からの情報によって得られる比較値とを比較してカメラずれの有無を判定する(ステップS86)。カメラずれの有無の判定は、図7に示す処理と同様であるために、詳細説明は省略する。第2処理モードでは、多数の特徴点を用いて移動量の推定を行うことができるために、第1処理モードに比べてカメラずれの有無の判定処理の精度を向上することができる。第2処理モードにおいても、第1処理モードと同様に、複数のフレーム画像の処理結果に基づきカメラずれの有無を判定する構成としてもよい。
第2処理モードでカメラずれ有りとの判定が行われた場合に、異常検出装置1はカメラずれを検出する。カメラずれが検出された場合、異常検出装置1は、表示装置6にカメラずれの発生を表示させるための処理を行い、運転者等にカメラ21の異常を報知することが好ましい。また、異常検出装置1は、カメラ21からの情報を用いて運転支援を行う機能(例えば自動駐車機能等)を停止(オフ)するための処理を行うことが好ましい。この際、運転支援機能を停止したことを表示装置6に表示させることが好ましい。車両に複数のカメラ21が搭載される場合、複数のカメラ21のうちの1つでもカメラずれが発生した場合には、上述した運転者等への報知処理、および、運転支援装機能の停止処理を行うことが好ましい。
第2処理モードでカメラずれ無しとの判定が行われた場合には、異常検出装置1はカメラずれが検出されなかったとして一旦、カメラずれの検出処理を終了する。そして、その後、所定のタイミングでカメラずれの検出処理を再度開始する。
本実施形態では、通常は、高速走行でカメラずれの有無を判定する第1処理モードを使用し、第1処理モードでカメラずれの発生が疑われる結果が得られた場合のみ、低速走行でカメラずれの有無の判定を行う第2処理モードを使用する。このために、低速走行時においては、原則として、カメラずれの検出処理に邪魔されることなく、カメラ21による周辺環境の認識処理を行うことができる。また、2つの処理モードを用いてカメラずれの判定を行うことができるために、カメラずれを誤検出する可能性を低減することができる。
また、本実施形態では、カメラ21の取付け状態が大きくずれたことも適切に検出することができる。これについて、図12および図13を参照して説明する。図12は、大きなカメラずれを生じたカメラ21によって撮影された撮影画像Pを例示する模式図である。図13は、大きなカメラずれを生じたカメラ21によって撮影された撮影画像Pに基づいて生成された第1ヒストグラムHG1を例示する図である。
図12に示す例では、カメラ21が大きくずれて、特徴点の抽出領域ER内には、空および遠方の建物(立体物)が主として映っている。通常、空や遠方の立体物の特徴点FPは、特徴量が小さいために、大きな閾値が設定される第1処理モードでは特徴点FPとして抽出されない。すなわち、大きなカメラずれが生じている場合には、第1処理モードでは、特徴点FPが所定数以上抽出されず、カメラずれの判定ができない状態が所定期間以上続く。この結果、第1処理モードから第2処理モードに切り替わってカメラずれの判定処理が行われる。第2処理モードでは、特徴点FPを抽出するための閾値が小さくされるために、空や遠方の立体物に由来する特徴点FPが抽出される。
図13に示すように、空および遠方の立体物に由来する特徴点FPの移動ベクトルVは、車両が移動しているにもかかわらず、ベクトルの大きさはゼロ又はゼロ近傍の値になる。これは、空および遠方の立体物に由来する特徴点FPは、自車両から非常に遠い位置に存在するためである。この結果、大きなカメラずれが生じた場合には、推定値と比較値との値が大きくずれ、カメラずれを検出することができる。
以上に説明した通り、本実施形態では、第1処理モードによる判定処理と、第2処理モードによる判定処理とのいずれにおいても、特徴点の位置の時間変化から車両(移動体)の移動情報(例えば移動量)の推定値が求められる。そして、いずれの判定処理においても、移動情報の推定値に基づきカメラ21の異常の有無が判定される。すなわち、本構成によれば、第1処理モードと第2処理モードとのいずれにおいても、カメラ21の異常の有無を判定するに際して、車両の移動情報の推定値を得ることができる。
<4.変形例>
以上においては、第2処理モードでカメラずれの有無の判定処理を行う場合に、自動運転が行われる構成としたが、これは例示にすぎない。第2処理モードでカメラずれの有無の判定処理を行う場合に、運転者による運転(手動運転)が行われてもよい。この場合には、制御部12は、第1処理モードから第2処理モードへの切り替えを行う場合に、移動体(車両)に搭載される表示装置6に、第2処理モードに適した運転を行うことを促すメッセージを表示させる処理を行うことが好ましい。表示画面の表示内容には、例えば、カメラずれの判定処理を行う必要があること、および、当該判定処理のために、どのような運転をする必要があるかが含まれてよい。表示装置6による表示処理によって、運転者はカメラずれの判定を行うことが必要であることを認識して、それに応じた運転を開始することができる。なお、画面によるメッセージに加えて、或いは、画面によるメッセージに替えて、例えば音声により第2処理モードに適した運転を促す構成としてもよい。また、第1処理モードで判定処理が行われる場合においても、表示装置6に、第1処理モードに適した運転を行うことを促すメッセージを表示させる構成としてもよい。また、場合によっては、第1処理モードでカメラずれの有無の判定処理を行う場合に、自動運転が行われる構成としてもよい。
また、以上においては、通常時は第1処理モードが使用され、第2処理モードは、第1処理モードで所定の処理結果が得られた場合にのみ使用される構成としたが、これは例示である。第2処理モードは、第1処理モードの処理結果と関係なく、使用されてもよい。例えば、ナビゲーション装置等によって自車両が駐車場以外の場所を走行していると判断される場合には、自車両が低速走行(例えば時速3km以上5km以下)をしていることを条件として、第1処理モードの代わりに第2処理モードを用いたカメラずれの検出処理が行われてよい。
また、以上においては、判定処理のために切り替えて使用可能な処理モードの数を2つとしたが、処理モードの数は3つ以上であってもよい。
また、以上においては、カメラ21の異常検出に用いるデータは、自車両が直進走行している場合に収集される構成とした。ただし、これは例示であり、カメラ21の異常検出に用いるデータは、自車両が直進走行していない場合に収集されてもよい。
<<B.第2実施形態>>
<1.異常検出システム>
次に、第2実施形態について説明する。第2実施形態の説明にあたって、第1実施形態と重複する内容については、特に必要がない場合には、その説明を省略する。また、第1実施形態と重複する部分には、同じ符号を付す。
図14は、本発明の第2実施形態に係る異常検出システムSYS2Aの構成を示すブロック図である。第2実施形態の異常検出システムSYS2Aは、第1実施形態の異常検出システムSYS2と同様に、異常検出装置1Aと、撮影部2と、センサ部3とを備える。異常検出システムSYS2Aも、第1実施形態と同様に、カメラずれを検出するシステムである。なお、撮影部2およびセンサ部3の構成は、第1実施形態と同様であるために、その説明は省略する。
<2.異常検出装置>
異常検出装置1Aは、第1実施形態と同様に、カメラを搭載する車両ごとに備えられる。異常検出装置1Aは、カメラで撮影された撮影画像に基づいて異常を検出する装置(カメラずれ検出装置)である。
図14に示すように、異常検出装置1Aは、画像取得部111と、制御部12Aと、記憶部13Aと、を備える。画像取得部111の構成は、第1実施形態と同様であるために、その説明は省略する。
制御部12Aは、第1実施形態と同様に、例えば、CPU、RAMおよびROM等を備えるコンピュータであり、異常検出装置1Aの全体を統括的に制御する。また、記憶部13Aは、第1実施形態と同様に、不揮発性のメモリであり、ファームウェアとしてのプログラムを含む各種の情報を記憶する。制御部12Aの各種の機能は、CPUが記憶部13Aに記憶されるコンピュータプラグラムに従って演算処理を行うことによって実現される。
第2実施形態においても、第1実施形態と同様に、制御部12Aは、カメラ21の異常の有無を、カメラ21で撮影された撮影画像から抽出される特徴点の位置の時間変化に基づき判定する判定処理を実行する。判定処理は、第1処理モードと第2処理モードとを選択可能に設けられる。ただし、判定処理の方式、および、処理モードの選択方式が第1実施形態と異なる。以下、この相違点を中心に説明する。なお、本実施形態においてもカメラ21の数は複数であり、各カメラ21について判定処理が行われる。
制御部12Aは、モード選択部120、抽出部121、特定部122、推定部123、及び判定部124を備える。モード選択部120、抽出部121、特定部122、推定部123、及び判定部124は、概念的な構成要素である。1つの構成要素が実行する機能を複数の構成要素に分散させたり、複数の構成要素が有する機能を1つの構成要素に統合させたりしてよい。
モード選択部120は、第1処理モードと、第2処理モードとを選択する。詳細には、モード選択部120は、車両の速度に応じて第1処理モードと第2処理モードとを選択する。第1処理モードは、第2処理モードに比べて車両の速度が高速である場合に使用される。
抽出部121は、カメラ21からの撮影画像から第1特徴点及び第2特徴点を含む複数の特徴点を抽出する。抽出部121は、撮影画像を構成する画素それぞれについて特徴量を算出し、特徴量が所定の閾値を超える画素を特徴点として抽出する。所定の閾値は、第1処理モードでは第1閾値、第2処理モードでは第2閾値とされる。第2閾値は第1閾値より小さい。第1閾値は、例えば白線のコーナーのような非常に大きな特徴量を有する特徴点のみが抽出されるように設定される。第2閾値は、路面の細かい凹凸に由来する特徴点が多数抽出されるように設定される。抽出部121は、路面上の特徴点の中から第1特徴点及び第2特徴点を選定する。なお、本実施形態では、所定の平面として路面を想定する。
特定部122は、異なる時刻で撮影された2つの撮影画像から抽出された第1特徴点及び第2特徴点の各オプティカルフローを導出する。オプティカルフローは、異なる時刻で撮影された2つの撮影画像間における特徴点の動きを示す動きベクトルである。異なる時刻の間隔は、画像取得部11のフレーム周期と同一であってもよく、画像取得部11のフレーム周期の複数倍であってもよい。
特定部122は、第1特徴点及び第2特徴点の各オプティカルフローを用いて、異なる時刻で撮影された2つの撮影画像から抽出された第1特徴点及び第2特徴点の各位置変化を算出する。特定部122は、第1特徴点の位置変化及び第2特徴点の位置変化に基づき、所定の平面との交線が互いに平行となる面の組を2組特定する。なお、特定部122の処理は、第1処理モードと第2処理モードとで同じであってよい。
推定部123は、特定部122で特定した面の組に基づきカメラの姿勢(カメラの取付け角度)を推定する。例えば抽出部121がフロントカメラから第1特徴点及び第2特徴点を抽出した場合、推定部123はフロントカメラの姿勢(カメラの取付け角度)を推定する。なお、推定部123の処理は、第1処理モードと第2処理モードとで同じであってよい。
判定部124は、推定部123によって推定されたカメラ21の姿勢に基づき、カメラずれの有無を判定する。カメラずれ有りと判定されると、異常検出装置1Aがカメラ21の異常を検出したことになる。例えば、この異常を異常検出装置1Aが車両のユーザに報知することで、車両のユーザはディーラによるカメラの取付調整を依頼する等の対策をとることが可能となる。なお、判定部124の処理は、第1処理モードと第2処理モードとで同じであってよい。
なお、画像取得部11、モード選択部120、抽出部121、特定部122、及び推定部123によって姿勢推定装置14が構成される。姿勢推定装置14との観点からは、制御部12Aは、車両(移動体)に搭載されるカメラ21で撮影された撮影画像から抽出される特徴点の位置の変化に基づきカメラ21の姿勢を推定する推定処理を実行する。推定処理は、第1処理モードと第2処理モードとを選択可能に設けられる。姿勢推定装置14を備える異常検出装置1Aは、姿勢推定装置14による推定処理に基づいてカメラ21の異常の有無を判定する。
図15は、本発明の第2実施形態に係る異常検出装置1Aにおけるカメラずれの検出フローの一例を示すフローチャートである。カメラずれの検出処理は、例えば、イグニッションオン(電気自動車の場合パワーオン)の後、所定のタイミングで繰り返し行われる。以下、カメラ21がフロントカメラである場合を例に挙げてカメラずれの検出処理を説明する。
図15に示すように、まず、制御部12Aは、カメラ21を搭載する車両が直進しているか否かを監視する(ステップS101)。当該監視は、第1実施形態の場合と同様である。制御部12Aは、車両が直進走行を開始するまでカメラずれの有無の判定を行わない。なお、後述するステップS104の処理において、互いに重なっていない第1特徴点のオプティカルフローと第2特徴点のオプティカルフローが導出できればカメラの姿勢を推定することができるので、本実施形態とは異なり車両の進行方向が曲がっているときにカメラずれの判定を行ってもよい。
本実施形態では、車両が直進していると判断される場合(ステップS101でYes)、モード選択部120により判定処理の処理モードの選択が行われる(ステップS102)。図16は、処理モードの選択処理の一例を示すフローチャートである。図16は、図15のステップS102の詳細例を示すフローチャートである。
まず、モード選択部120は、車両の速度が第1速度範囲内か否かを確認する(ステップS1021)。車両の速度は、例えば速度センサ31から得られる。第1速度範囲は、例えば時速5km以上30km未満とされる。
車両の速度が第1速度範囲内である場合(ステップS1021でYes)、モード選択部120は第1処理モードを選択する(ステップS1022)。一方、車両の速度が第1速度範囲外である場合(ステップS1021でNo)、モード選択部120は、車両の速度が第2速度範囲内か否かを確認する(ステップS1023)。第2速度範囲は、例えば時速3km以上5km未満とされる。
車両の速度が第2速度範囲内である場合(ステップS1023でYes)、モード選択部120は第2処理モードを選択する(ステップS1024)。一方、車両の速度が第2速度範囲外である場合(ステップS1023でNo)、処理モードの選択を行わず、ステップS101に戻る。例えば、車両の速度が時速30km以上である場合や、時速3km未満の場合にステップS101に戻る。車両の速度が速すぎると、特徴点の動きを追えない可能性があり、車両の速度が遅すぎるとオプティカルフローの長さが短くなって判定の精度が低下する可能性があることを考慮するものである。
なお、本実施形態では、第1速度範囲内か否かが確認された後に第2速度範囲内か否かが確認される構成としたが、これは例示にすぎない。例えば、第2速度範囲内か否かが確認された後に第1速度範囲内か否かが確認される構成としてもよい。
図15に戻って、処理モードが選択されると、抽出部121によって特徴点の抽出が行われる(ステップS103)。特徴点の抽出方法は第1実施形態と同様である。第1処理モードが選択された場合、白線のコーナーのようなコーナー度が高い特徴点のみが抽出される。一方、第2処理モードが選択された場合、白線のコーナーのようなコーナー度が高い特徴点以外に、例えば路面(例えばアスファルト路面)の凹凸に由来する特徴点が多数得られる。
なお、特徴点の抽出前に撮影画像に対して前処理が行われてよい。例えば、第1処理モードが選択された場合に、追跡精度が悪い特徴点が誤って抽出されないように、特徴点の抽出前に撮影画像にノイズを除去する処理が施されてよい。また、抽出部121による特徴点の抽出処理によって、以下の処理に必要となる特徴点が得られない場合が起こり得る。このような場合には、カメラずれの有無が判定できないと判断されて、カメラずれの検出処理が一旦終了されてよい。
本実施形態では、抽出部121は、第1特徴点FP1と第2特徴点FP2とを抽出する。図17は、抽出部121によって抽出された第1特徴点FP1と第2特徴点FP2とを例示する図である。なお、図17は、カメラ21で撮影された撮影画像Pを模式的に示した図である。撮影画像Pは、車両のボディが映り込む領域BOを含む。第1特徴点FP1及び第2特徴点FP2は路面RS上に存在する。図17においては、路面に描かれている制限速度を示す数字の部分に第1特徴点FP1及び第2特徴点FP2が存在する。
なお、抽出部121で抽出される特徴点の数は2つより多いことがある。特に、第2処理モードでは多数の特徴点が抽出される。特徴点が2つより多く抽出された場合には、複数の特徴点の中から、以下の処理に適した2つの特徴点を選定する構成としてよい。また、第1特徴点FP1と第2特徴点FP2との組を2つ以上抽出して、それぞれに対して以下の処理を行ってもよい。
図15に戻って、第1特徴点FP1及び第2特徴点FP2が抽出されると、特定部122は、第1特徴点FP1のオプティカルフローOF1と、第2特徴点FP2のオプティカルフローOF2と、を導出する(ステップS104)。
図18は、第1特徴点FP1のオプティカルフローOF1及び第2特徴点FP2のオプティカルフローOF2を導出する手法を説明するための図である。図18は、図17と同様に便宜的に示された模式図である。図18は、図17に示す撮影画像(前フレームP)の撮影後、所定時間が経過した後にカメラ21で撮影された撮影画像(現フレームP’)である。図17に示す撮影画像Pの撮影後、所定時間が経過するまでの間に、車両は前方に直進している。図18に示す丸印FP1Pは、図17に示す撮影画像Pの撮影時点における第1特徴点FP1の位置を示す。図18に示す丸印FP2Pは、図17に示す撮影画像Pの撮影時点における第2特徴点FP2の位置を示す。
図18に示すように、車両が前方に直進すると、車両の前方に存在する第1特徴点FP1及び第2特徴点FP2は車両に近づく。すなわち、第1特徴点FP1及び第2特徴点FP2は、現フレームP’と前フレームPとで異なる位置に現れる。特定部122は、現フレームP’の第1特徴点FP1と前フレームPの第1特徴点FP1とを、その近傍の画素値に基づいて対応付け、対応付けた第1特徴点FP1のそれぞれの位置に基づいて、第1特徴点FP1のオプティカルフローOF1を導出する。同様に、特定部122は、現フレームP’の第2特徴点FP2と前フレームPの第2特徴点FP2とを、その近傍の画素値に基づいて対応付け、対応付けた第2特徴点FP2のそれぞれの位置に基づいて、第2特徴点FP2のオプティカルフローOF2を導出する。
第1特徴点FP1のオプティカルフローOF1と第2特徴点FP2のオプティカルフローOF2が導出されると、特定部122は、特徴点に対し、記憶部13Aに記憶されているカメラ21に内部パラメータを用いて座標変換を行う。座標変換では、カメラ21の収差補正と、歪補正とが行われる。収差補正は、カメラ21の光学系の収差による歪みを補正するために行われる。具体的には樽型歪みや糸巻歪みなど歪曲収差の補正である。歪み補正は、カメラ21の光学系そのものの歪みを補正するために行われる。具体的には魚眼補正などである。座標変換により、特徴点の座標は、被写体が透視投影によって撮影された場合に二次元画像上で得られる座標に変換される。
特徴点の座標変換が行われると、特定部122は、図19に示すように、第1特徴点FP1のオプティカルフローOF1の始点を頂点SP1、第1特徴点FP1のオプティカルフローOF1の終点を頂点EP1、第2特徴点FP2のオプティカルフローOF2の始点を頂点SP2、及び第2特徴点FP2のオプティカルフローOF2の終点を頂点EPとする四角形QLを仮想的に形成する(ステップS105、図15参照)。以降、説明のために四角形や、該四角形の辺などの幾何的要素を仮想的に形成して用いる。しかし、実際の処理では、特徴点の座標や直線の方向などのベクトル演算に基づき、同等の作用を持つ幾何的要素に基づかない処理としてもよい。
四角形QLが仮想的に形成されると、図20に示すように、特定部122は、四角形QLと、記憶部13Aに記憶されているカメラ21の内部パラメータとを用いて、三次元空間におけるカメラ21の投影面IMG上に四角形QLを移動させ、投影面IMG上での四角形QL1を仮想的に生成する(ステップS106)。
なお説明のため、以下のように辺を定義する。四角形QL1の第1辺SD1は、四角形QL(図19参照)において、頂点SP1および頂点SP2を結んだ辺に対応する。つまり、前フレームPにおける第1特徴点FP1と第2特徴点FP2を結んだ辺に相当する。同様に、四角形QL1の第2辺SD2は、四角形QLにおいて、頂点SP2および頂点EP2を結んだ辺に対応する。つまり、第2特徴点FP2のオプティカルフローOF2に相当する。同様に、四角形QL1の第3辺SD3は、四角形QLにおいて、頂点EP1および頂点EP2を結んだ辺に対応する。つまり、現フレームP’における第1特徴点FP1と第2特徴点FP2とを結んだ辺に相当する。同様に、四角形QL1の第4辺SD4は、四角形QLにおいて、頂点SP1および頂点EP1を結んだ辺に対応する。つまり、第1特徴点FP1のオプティカルフローOF1に相当する。
また、以下のように面を定義する(図20参照)。四角形QL1の第1辺SD1とカメラ21の光学中心OCとが含まれる面を第1面F1とする。同様に、四角形QL1の第2辺SD2とカメラ21の光学中心OCとが含まれる面を第2面F2とする。同様に、四角形QL1の第3辺SD3とカメラ21の光学中心OCとが含まれる面を第3面F3とする。同様に、四角形QL1の第4辺SD4とカメラ21の光学中心OCとが含まれる面を第4面F4とする。
次に、特定部122は、所定の平面との交線が互いに平行になる面の組を2組特定する(ステップS107)。所定の平面とはあらかじめ平面の法線が分かっている面である。具体的には車両が移動を行っている平面であり、つまり路面である。所定の平面は、厳密な平面でなくてもよく、特定部122が所定の平面との交線が互いに平行になる面の組を2組特定する際に平面とみなすことができるものであればよい。
本実施形態では、異常検出装置1Aは、車両が直進している場合に、異なる時刻に撮影された2つの画像から特徴点を抽出し、該特徴点のオプティカルフローを算出する。また、該特徴点は路面などの所定の平面上に位置している静止物から抽出される。したがって、算出されるオプティカルフローは実世界上では、車両に対する静止物の相対的な位置変化を表す。つまり向きが逆となった車両の移動ベクトルである。
四角形QL1の第2辺SD2と第4辺SD4とは、共に特徴点のオプティカルフローに対応するので、共に実世界上では車両の移動ベクトルに相当する。したがって、路面上では互いに平行となると想定される。
また、四角形QL1の第1辺SD1と第3辺SD3とは、共に特徴点同士の位置関係なので、実世界上では車両の移動に伴う静止物同士の位置関係に相当する。移動前の位置関係が第1辺SD1に相当し、移動後の位置関係が第3辺SD3に相当する。このとき静止物の位置は変わらないため、移動前後で位置関係は変わらない。したがって、路面上ではこれも互いに平行となると想定される。
したがって、特定部122は、路面との交線が平行な面として、第2面F2と第4面F4との組と、第1面F1と第3面F3との組と、の2つの組を特定する。つまり、特定部122は、オプティカルフローを含む面同士を1つの組とし、同時刻に撮影された特徴点を含む面同士を他の組として、計2つの組を特定する。
なお、図20において四角形QL2は、現フレームP’の撮影時点での第1特徴点FP1の3次元空間(実世界)上の位置、現フレームP’の撮影時点での第2特徴点FP2の3次元空間上の位置、前フレームPの撮影時点での第1特徴点FP1の3次元空間上の位置、及び前フレームPの撮影時点での第2特徴点FP2の3次元空間上の位置を頂点とする四角形である。第1面F1は、四角形QL2の第1辺SD11を含む。同様に、第2面F2は四角形QL2の第2辺SD12を含み、第3面F3は四角形QL2の第3辺SD13を含み、第4面F4は四角形QL2の第4辺SD14を含む。このとき、上記のように四角形QL2は路面上に形成される平行四辺形であると想定される。
次に、推定部123は、路面の法線を算出する(ステップS108)。まず、推定部123は、特定部122で特定した面の組の一方である第1面F1と第3面F3とに基づき、面同士の交線の方向を求める。詳細には、第1面F1と第3面F3との交線CL1の向きを求める(図21参照)。交線CL1の方向ベクトルV1は、第1面F1の法線ベクトル及び第3面F3の法線ベクトルそれぞれと垂直なベクトルである。したがって、推定部123は、第1面F1の法線ベクトルと第3面F3の法線ベクトルとの外積により、交線CL1の方向ベクトルV1を求める。第1面F1と第3面F3は、路面との交線が平行となるため、方向ベクトルV1は路面と平行になる。
同様に、推定部123は、特定部122で特定した面の組の他方である第2面F2と第4面F4との交線の方向を求める。詳細には第2面F2と第4面F4との交線CL2の向きを求める(図22参照)。交線CL2の方向ベクトルV2は、第2面F2の法線ベクトル及び第4面F4の法線ベクトルそれぞれと垂直なベクトルである。したがって、推定部123は、第2面F2の法線ベクトルと第4面F4の法線ベクトルとの外積により、交線CL2の方向ベクトルV2を求める。第2面F2と第4面F4も同様に、路面との交線が平行となるため、方向ベクトルV2は路面と平行になる。
推定部123は、方向ベクトルV1と方向ベクトルV2との外積により、四角形QL2の面の法線、すなわち路面の法線を算出する。推定部123が算出した路面の法線はカメラ21のカメラ座標系で算出されるため、実際の路面の法線である垂直方向との違いから3次元空間の座標系を求め、路面に対するカメラ21の姿勢を推定することができる。その推定結果から推定部123は車両に対するカメラ21の姿勢を推定する(ステップS109)。なお、ステップS108の算出処理は、例えば公知のARToolkitを利用して実行することができる。
カメラ21の姿勢推定を行うと、判定部124は、推定部123によって推定されたカメラ21の姿勢に基づき、カメラずれの有無を判定する(ステップS110)。カメラ21の取付時の姿勢は、予め記憶部13Aに記憶されており、記憶部13Aに記憶されるデータとの比較によりカメラずれの有無を判定することができる。ステップS110におけるカメラずれの有無の判定が完了すると、図15に示すフローが終了する。
以上からわかるように、本実施形態の異常検出装置1Aによれば、車両(移動体)の速度が速い場合と遅い場合とで、カメラずれ(カメラ21の異常)の有無を判定する判定処理の処理モードを変更する。これにより、車両の速度に合った適切な判定処理を行うことができる。例えば出庫時や狭い道を走行する場合等の低速で走行する場合には、第2処理モードが利用される。このようなシーンでは、コーナー度が高い特徴点を見つけ難い可能性が高く、特徴点の抽出閾値を下げる第2処理モードを利用した判定処理は適切と言える。一方、車両がある程度の速度で走行するシーンでは、道路に白線表示が記載されていることが多く、特徴点の追跡を行い易く判定精度を向上できる第1処理モードを利用した判定処理は適切と言える。本実施形態によれば、判定精度をなるべく良くしつつ、カメラ21の異常の有無を判定する機会を増やすことができる。
また、本実施形態の姿勢推定装置14によれば、車両(移動体)の速度が速い場合と遅い場合とで、カメラ21の姿勢を推定する推定処理の処理モードを変更する。これにより、車両の速度に合った適切な推定処理を行うことができる。例えば出庫時や狭い道を走行する場合等の低速で走行するシーンでは、コーナー度が高い特徴点を見つけ難可能性が高く、特徴点の抽出閾値を下げる第2処理モードを利用した推定処理は適切と言える。一方、車両がある程度の速度で走行するシーンでは、道路に白線表示が記載されていることが多く、特徴点の追跡を行い易く推定精度を向上できる第1処理モードを利用した推定処理は適切と言える。本実施形態によれば、姿勢推定の精度をなるべく良くしつつ、カメラ21の姿勢推定の機会を増やすことができる。
また、本実施形態では、第1処理モードによる判定処理と、第2処理モードによる判定処理とのいずれにおいても、特徴点の位置の時間変化からカメラ21の姿勢が推定される。そして、いずれの判定処理においても、推定されたカメラ21の姿勢に基づきカメラ21の異常の有無が判定される。すなわち、本構成によれば、第1処理モードと第2処理モードとのいずれにおいても、カメラ21の異常の有無を判定するに際して、カメラ21の姿勢の推定値を得ることができる。
<3.変形例>
上記の説明ではカメラ21の光学中心OCと、四角形QL1の1つの辺を含む平面を特定するとしたがこの限りではない。当該平面の法線方向の特定をもって平面を特定することとしてもよい。例えば光学中心OCから各頂点への方向ベクトルの外積により平面の法線方向を求め、該法線方向によって面を特定するとしてもよい。この場合、第1面F1の法線方向と第3面F3の法線方向とを1つの組とし、第2面F2の法線方向と第4面F4の法線方向とを他の組として2つの組を特定するとよい。
また、面は平行移動させてもよい。例えば第1面F1の代わりに、第1面F1を平行移動させた面を第3面F3と組としてもよい。平行移動しても所定の平面との交線の向きは変わらないからである。
また、第1処理モードによる判定処理と、第2処理モードによる判定処理とのいずれにおいても、特徴点の位置の時間変化から車両の移動情報の推定値が求められ、移動情報の推定値に基づきカメラ21の異常の有無が判定されてもよい。
<<C.第3実施形態>>
<1.異常検出システム>
次に、第3実施形態について説明する。第3実施形態の説明にあたって、第1実施形態および第2実施形態と重複する内容については、特に必要がない場合には、その説明を省略する。また、第1実施形態および第2実施形態と重複する部分には、同じ符号を付す。
図23は、本発明の第3実施形態に係る異常検出システムSYS2Bの構成を示すブロック図である。第3実施形態の異常検出システムSYS2Bは、第1実施形態の異常検出システムSYS2および第2実施形態の異常検出システムSYS2Aと同様に、異常検出装置1Bと、撮影部2と、センサ部3とを備える。異常検出システムSYS2Bも、第1実施形態および第2実施形態と同様に、カメラずれを検出するシステムである。なお、撮影部2およびセンサ部3の構成は、第1実施形態および第2実施形態と同様であるために、その説明は省略する。
<2.異常検出装置>
異常検出装置1Bは、第1実施形態および第2実施形態と同様に、カメラを搭載する車両ごとに備えられる。異常検出装置1Bは、カメラで撮影された撮影画像に基づいて異常を検出する装置(カメラずれ検出装置)である。
図23に示すように、異常検出装置1Bは、画像取得部111と、制御部12Bと、記憶部13Bと、を備える。画像取得部111の構成は、第1実施形態および第2実施形態と同様であるために、その説明は省略する。制御部12Bおよび記憶部13Bについて、第1実施形態および第2実施形態と異なる部分を有する。なお、記憶部13Bは、制御部12Bの機能を実現するためのプログラムについて、第1実施形態および第2実施形態と異なるものを記憶する。
第3実施形態においても、第1実施形態および第2実施形態と同様に、制御部12Bは、カメラ21の異常の有無を、カメラ21で撮影された撮影画像から抽出される特徴点の位置の時間変化に基づき判定する判定処理を実行する。判定処理は、第1処理モードと第2処理モードとを選択可能に設けられる。ただし、例えば判定処理の方式が第1実施形態および第2実施形態と異なる。また、第3実施形態では、車両が移動中だけでなく、車両が停車中においてもカメラ21の異常の有無を検出することができる。この点においても、第3実施形態は、第1実施形態および第2実施形態と異なる。なお、本実施形態においてもカメラ21の数は複数であり、各カメラ21について判定処理が行われる。
図24は、本発明の第3実施形態に係る異常検出装置1Bにおけるカメラずれの検出フローの一例を示すフローチャートである。カメラずれの検出処理は、例えば、イグニッションオン(電気自動車の場合パワーオン)の後、所定のタイミングで繰り返し行われる。以下、カメラ21がフロントカメラである場合を例に挙げてカメラずれの検出処理を説明する。
図24に示すように、まず、制御部12Bは、カメラ21を搭載する車両が停車中であるか否かを確認する(ステップS201)。車両が停車中であるか否かについては、例えば速度センサ31から得られる速度情報により確認することができる。
車両が停車中である場合(ステップS201でYes)、制御部12Bは停車時用判定処理を実行する(ステップS202)。停車時用判定処理は、特徴点の位置の時間変化に基づきカメラ21の異常の有無を判定する判定処理とは異なる処理でカメラ21の異常の有無(カメラずれの有無)を判定する。
これによれば、車両が移動している場合だけでなく、車両が停止している場合にもカメラ21の異常の有無を判定することができるために、判定の機会を増やすことができる。すなわち、カメラ21の異常に素早く気付くことができる。カメラずれは、車両が駐車中等にカメラ21に物体がぶつかって生じることがある。このために、車両の停車中にもカメラずれの判定を行うことは有効である。
本実施形態においては、停車時用判定処理においては、カメラ21で撮影された撮影画像から得られる車両(移動体)のボディのエッジ画像に基づきカメラ21の異常の有無が判定される。例えば上述した図4や図17等に示すように、カメラ21の撮影画像には車両のボディが映る。カメラずれが生じると、ボディの映り方が変化する。このために、ボディのエッジ画像を利用してカメラずれを検出することができる。
図25は、停車時用判定処理を用いたカメラずれの検出フローの一例を示すフローチャートである。図25は、図24のステップS202の詳細例を示すフローチャートである。
制御部12Bは、車両が停車中にカメラ21から取得した撮影画像に対して、前処理(ぼかし)を行う(ステップS2021)。前処理は、撮影画像を平滑化する処理であり、ノイズを低減する目的で行われる。前処理は、例えば、ガウシアンフィルタ処理やメディアンフィルタ処理であってよい。また、前処理は、撮影画像の部位ごとに処理条件を変更して実施されてもよい。例えば、撮影画像の中央側が先鋭であり、端側がぼやけた印象である場合には、画像の真ん中側のぼかしが端側より強調された処理となるように、撮影画像の部位ごとに処理条件が変更されてよい。
制御部12Bは、前処理を行った撮影画像に対して、エッジ検出を行う(ステップS2022)。エッジは、画像内の画素の画素値が急激に変化している部分であり、画像内のオブジェクトの輪郭を表す線である。制御部12Bは、撮影画像内の画素の画素値を微分処理することにより、撮影画像内のエッジを検出する。撮影画像内の画素の画素値を微分処理すると、撮影画像内の画素の画素値が急激に変化している部分の微分値が大きくなる。制御部12Bは、予め決められた基準に基づいて、微分値が大きい部分をエッジとして検出する。なお、エッジ検出の手法としては、例えばCanny法等が用いられてよい。
制御部12Bは、エッジ検出を行って得られたエッジ画像に対して、マスク処理を行う(ステップS2023)。制御部12Bは、車種毎のボディ形状に応じて予め設定される車両のエッジの探索領域を除いて画像のマスク処理を行う。これにより、例えば風景等の不要なエッジを適切に除去することができ、ボディのエッジを誤検出する可能性を低減することができる。また、これにより、カメラずれの判定のための画像を迅速に取得することができる。マスク処理は行われなくてもよい。
制御部12Bは、マスク処理後に得られるエッジ画像に対して、不要なエッジを除去する処理を行う(ステップS2024)。例えば、制御部12Bは、マスク処理後に得られるエッジ画像のうち、車両のボディの設計値から想定されるエッジと異なると判断されるエッジを除去する処理を行う。
制御部12Bは、取得したボディのエッジ画像と、基準画像とのパターンマッチング処理を行う(ステップS2025)。基準画像は、予め記憶部13Bに記憶された画像であり、カメラ21が車両に正しく取り付けられた状態の撮影画像から得られた比較用の画像である。
制御部12Bは、パターンマッチング処理が終了すると、パターンマッチング処理の結果に基づいてカメラずれの判定を行う(ステップS2026)。制御部12Bは、例えば、取得されたエッジ画像の基準画像に対する一致率を算出して、一致率に基づいてカメラずれの有無を判定する。
図24に戻って、車両が停車中でない場合(ステップS201でNo)、制御部12Bは車両が直進しているか否かを確認する(ステップS203)。車両が直進しているか否かの確認手法は、第1実施形態と同様であってよい。車両が直進していないと判断される場合(ステップS203でNo)、ステップS201に戻る。
車両が直進していると判断される場合(ステップS203でYes)、制御部12Bは、車両の速度が第1速度範囲内か否かを確認する(ステップS204)。車両の速度は、例えば速度センサ31から得られる。第1速度範囲は、例えば時速5km以上30km未満とされる。
車両の速度が第1速度範囲内である場合(ステップS204でYes)、制御部12Bは、第1処理モードによる判定処理を実行する(ステップS205)。第1処理モードによる判定処理は、カメラ21の撮影画像からカメラ21の姿勢を推定する姿勢推定処理の結果に基づいてカメラずれの有無を判定する処理である。当該判定処理は、第2実施形態で説明した処理と同様であるために、詳細な説明は省略する。なお、第1処理モードであるために、カメラ21の姿勢推定に用いられる特徴点はコーナー度が高く、特徴点の抽出誤差を少なくできる。すなわち、カメラ21の姿勢の推定処理の精度を良くして、カメラずれの判定の精度も向上することができる。
車両の速度が第1速度範囲外である場合(ステップS204でNo)、制御部12Bは、車両の速度が第2速度範囲内か否かを確認する(ステップS206)。第2速度範囲は、例えば時速3km以上5km未満とされる。車両の速度が第2速度範囲外である場合(ステップS206でNo)、カメラずれの判定が行われることなく、ステップS201に戻る。
車両の速度が第2速度範囲内である場合(ステップS206でYes)、制御部12Bは、第2処理モードによる判定処理を実行する(ステップS207)。第2処理モードによる判定処理は、カメラ21の撮影画像から車両の移動情報(例えば移動量)を推定する移動情報推定の結果に基づいてカメラずれの有無を判定する処理である。当該判定処理は、第1実施形態で説明した処理(図9参照)と同様であるために、詳細な説明は省略する。なお、第2処理モードであるために、白線のコーナーのようなコーナー度が高い特徴点が抽出できないような場合でも特徴点を抽出してカメラずれの有無の判定処理を行える。例えば、車両の出庫時や狭い道路の走行時等においてもカメラずれの有無の判定を行うことができ、カメラずれの有無の判定機会を増やしてカメラずれを素早く検出することができる。
第3実施形態によれば、車両の速度状態に応じて適切なカメラずれの判定処理を行うことができるために、カメラずれの有無の判定を精度良く行うことができ、更には、カメラずれの検出を素早く行うことができる。
また、本実施形態では、第1処理モードによる判定処理においては、特徴点の位置の時間変化からカメラ21の姿勢が推定され、推定されたカメラ21の姿勢に基づきカメラ21の異常の有無が判定される。第2処理モードによる判定処理においては、特徴点の位置の時間変化から車両(移動体)の移動情報(例えば移動量)の推定値が求められ、移動情報の推定値に基づきカメラ21の異常の有無が判定される。車両の速度に応じて、カメラ21の異常の有無を判定する判定処理の方式が使い分けられる構成であり、速度に応じてカメラ21の異常の有無を適切に判断することができる。
なお、場合によっては、第1処理モードによる判定処理において、特徴点の位置の時間変化から車両の移動情報の推定値が求められ、移動情報の推定値に基づきカメラ21の異常の有無が判定されてよい。第2処理モードによる判定処理において、特徴点の位置の時間変化からカメラ21の姿勢が推定され、推定されたカメラ21の姿勢に基づきカメラ21の異常の有無が判定されてよい。
<<D.留意事項>>
本明細書における実施形態や変形例の構成は、本発明の例示にすぎない。実施形態や変形例の構成は、本発明の技術的思想を超えない範囲で適宜変更されてもよい。また、複数の実施形態及び変形例は、可能な範囲で組み合わせて実施されてよい。
また、以上においては、コンピュータプログラムに従ったCPUの演算処理によってソフトウェア的に各種の機能が実現されると説明したが、これらの機能のうちの少なくとも一部は電気的なハードウェア回路により実現されてもよい。また逆に、ハードウェア回路によって実現されるとした機能のうちの少なくとも一部は、ソフトウェア的に実現されてもよい。
本発明は、自動駐車等の移動体の運転支援を行うカメラの異常検知や姿勢推定を行うために利用することができる。また、本発明は、ドライブレコーダ等の運転情報を記録するカメラの異常検知や姿勢の推定を行うために利用することができる。また、本発明は、カメラの異常情報や姿勢の推定情報を利用して撮影画像を補正する補正装置等に利用することができる。また、本発明は、複数の移動体とネットワークにより通信可能に設けられるセンターと連携して動作する装置等に利用することができる。当該装置は、例えば、センターに撮影画像を送信する場合に、カメラの異常情報や姿勢の推定情報を撮影画像とセットにして送信する構成であってよい。そして、センターでは、カメラの姿勢の推定情報を用いて、各種画像処理(カメラの姿勢も考慮した画像の視点・視方向を変更する処理、例えば車両の車体前方方向の画像に視点・視方向変換した画像を生成する等)、画像を用いた計測処理におけるカメラの姿勢に対する補正処理、カメラ姿勢の経年変化の統計処理(多くの車両のデータ)、等を行い、ユーザへの有用な提供データを生成する等する。