以下、本発明の例示的な実施形態について、図面を参照しながら詳細に説明する。以下の説明では、移動体として車両を例にとり説明するが、移動体は車両に限定されない。車両には、例えば自動車、電車、無人搬送車等の車輪のついた乗り物が広く含まれる。車両以外の移動体として、例えば船舶や航空機等が挙げられる。
また以下の説明では、車両の直進進行方向であって、運転席からハンドルに向かう方向を「前方向」とする。また、車両の直進進行方向であって、ハンドルから運転席に向かう方向を「後方向」とする。また、車両の直進進行方向及び鉛直線に垂直な方向であって、前方向を向いている運転者の右側から左側に向かう方向を「左方向」とする。また、車両の直進進行方向及び鉛直線に垂直な方向であって、前方向を向いている運転者の左側から右側に向かう方向を「右方向」とする。
<1.画像処理装置の構成概要>
図1は、本発明の実施形態に係る画像処理装置1の構成を説明するための図である。図1には、画像処理装置1に情報を入力する撮影部2、舵角センサ3、および、速度センサ4も示されている。画像処理装置1は、撮影部2が搭載される車両ごとに備えられる。以下、画像処理装置1が備えられる車両のことを自車両と表現することがある。
撮影部2は、車両外部の状況を監視する目的で車両に設けられる。撮影部2は、少なくとも1つのカメラ21を備える。カメラ21は、いわゆる車載カメラであり、車両に固定配置される。カメラ21は、画像処理装置1に有線又は無線により接続され、撮影画像を画像処理装置1に出力する。
なお、撮影部2が車両の周囲の状況を監視する目的で設けられる場合には、撮影部2は、好ましくは、フロントカメラと、バックカメラと、左サイドカメラと、右サイドカメラとの4つのカメラ21を備える。フロントカメラは、車両の前方を撮影するカメラである。バックカメラは、車両の後方を撮影するカメラである。左サイドカメラは、車両の左方を撮影するカメラである。右サイドカメラは、車両の右方を撮影するカメラである。これら4つのカメラ21は、例えば魚眼レンズを用いて構成され、水平方向の画角θは180度以上とされる。これにより、4つのカメラ21によって、車両の水平方向における全周囲を撮影することができる。
舵角センサ3は、画像処理装置1および撮影部2が搭載される車両に備えられ、当該車両のステアリングホイール(ハンドル)の回転角を検出する。舵角センサ3の出力は、CAN(Controller Area Network)バス等の通信バスB1を介して画像処理装置1に入力される。
速度センサ4は、画像処理装置1および撮影部2が搭載される車両に備えられ、当該車両の速度を検出する。速度センサ4の出力は、通信バスB1を介して画像処理装置1に入力される。
画像処理装置1は、本実施形態では、カメラ21の姿勢を推定する姿勢推定装置である。カメラ21は、例えば、経年劣化や外部からの衝撃等によって取付け姿勢が変化することがある。姿勢推定装置として機能する本実施形態の画像処理装置1は、カメラ21の姿勢推定を行うことにより、カメラ21の取付け姿勢の変化(異常)を検出することができる。
図1に示すように、画像処理装置1は、取得部11と、制御部12と、記憶部13と、を備える。
取得部11は、車両(移動体)に搭載されるカメラ21から撮影画像を取得する。取得部11は、カメラ21からアナログ又はデジタルの撮影画像を所定の周期(例えば、1/30秒周期)で時間的に連続して取得する。すなわち、取得部11によって取得される撮影画像の集合体がカメラ21で撮影された動画像である。そして、取得した撮影画像がアナログの場合には、取得部11は、そのアナログの撮影画像をデジタルの撮影画像に変換(A/D変換)する。取得部11は、取得した撮影画像、或いは、取得及び変換した撮影画像を制御部12に出力する。取得部11から出力される1つの撮影画像が1つのフレーム画像となる。
制御部12は、例えばマイクロコンピュータであり、画像処理装置1の全体を統括的に制御する。制御部12は、不図示のCPU(Central Processing Unit)、RAM(Random Access Memory)、及びROM(Read Only Memory)を含む。記憶部13は、例えば、フラッシュメモリ等の不揮発性のメモリであり、各種の情報を記憶する。記憶部13は、ファームウェアとしてのプログラムや各種のデータを記憶する。
なお、記憶部13は、基準抽出領域をデータ(基準抽出領域情報131)として記憶する。基準抽出領域は、後述する抽出領域の設定に利用される。基準抽出領域情報131は、不変でもよいが、変更可能な構成や適宜更新される構成等であってもよい。
図1に示す抽出部121、設定部122、および、推定部123は、制御部12のCPUが記憶部13に記憶されるプログラムに従って演算処理を実行することにより実現される制御部12の機能である。言い換えると、画像処理装置1は、抽出部121と、設定部122と、推定部123とを備える。
なお、制御部12の抽出部121、設定部122、および、推定部123の少なくともいずれか一つは、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等のハードウェアで構成されてもよい。また、抽出部121、設定部122、および、推定部123は、概念的な構成要素である。1つの構成要素が実行する機能を複数の構成要素に分散させたり、複数の構成要素が有する機能を1つの構成要素に統合させたりしてよい。また、取得部11は、制御部12のCPUがプログラムに従って演算処理を行うことによって実現される構成でもよい。
抽出部121は、撮影画像から特徴点を抽出する。特徴点は、撮影画像中のエッジの交点など、撮影画像において際立って検出できる点である。特徴点は、例えば路面に描かれた白線のエッジ、路面上のひび、路面上のしみ、路面上の砂利などである。本実施形態では、好ましい形態として、コーナーらしさを示すコーナー度が高い特徴点を抽出する。コーナーとは2つのエッジが交わる部分である。コーナー度は、例えばHarrisオペレータやKLT(Kanade-Lucas-Tomasi)トラッカーなどの公知の検出手法を用いて求めることができる。
詳細には、抽出部121は、撮影画像に設定される抽出領域から特徴点を抽出する。抽出領域は、撮影画像から所望の特徴点を効率良く抽出する等の目的で設定される。本実施形態において、所望の特徴点は、自車両が走行する路面上の特徴点である。このために、抽出領域は、撮影画像の路面が映る領域に設定される。
設定部122は、抽出領域の設定および変更を行う。すなわち、抽出領域は一定ではなく、変動する。設定部122は、例えば、画像毎に抽出領域の設定の変更を行うか否かを判断してもよい。また、設定部122は、所定のフレーム数ごとに抽出領域の設定の変更を行うか否かを判断してもよい。
詳細には、設定部122は、カメラ21の撮影方向における自車両(移動体)の外部環境に基づき抽出領域の設定および変更を行う。例えば、カメラ21が上述のフロントカメラである場合、設定部122は、自車両の前方の外部環境に基づき抽出領域の設定および変更を行う。このような構成とすれば、自車両の外部に存在する物体の位置に応じて抽出領域を変動させることができる。例えば、路面上に存在する物体が抽出領域に入らないように抽出領域を変動させることができる。路面上の物体が抽出領域に入らないようにできるために、路面上の特徴点を精度良く抽出することができる。また、路面上の物体が抽出領域に入らない範囲で抽出領域を広げることができ、なるべく多くの特徴点を抽出することが可能になる。
なお、本実施形態では、物体は立体物であり、路面上に描かれる標識等の路面と高さが同等とみなされるものは物体に含まない。物体は、例えば、他車両(自動車、オートバイ、自転車等を含む)、歩行者、動物、又は、壁等の静止物である。
設定部122は、記憶部13にデータとして記憶される基準抽出領域を変動させて抽出領域を設定する。これによれば、既にあるデータを基準として抽出領域を決めることができるために、抽出領域の設定に要する負担を軽減することができる。設定部122は、詳細には、基準抽出領域を拡大したり、縮小したりさせて抽出領域を設定する。なお、設定部122は、基準抽出領域を利用することなく、抽出領域を求める構成であってもよい。設定部122による抽出領域の設定および変更の詳細について後述する。
推定部123は、特徴点に基づきカメラ21の姿勢を推定する。設定部122の機能により、特徴点を精度良く抽出できるために、カメラ21の姿勢を精度良く推定することができる。また、設定部122の機能により、特徴点の抽出数をなるべく多くすることができ、推定部123による姿勢推定の結果を増やすことができる。この結果、カメラ21の姿勢推定の信頼性を向上することができる。
なお、推定部123は、例えば、特徴点の位置の時間変化に基づき自車両の移動量推定を行う構成であってもよい。推定部123により求められた移動量と、例えば速度センサ4等から得られる自車両の移動量とを比較して、カメラ21の姿勢が推定される構成であってもよい。
<2.姿勢推定処理>
次に、画像処理装置1によって実行されるカメラ21の姿勢推定処理について説明する。図2は、画像処理装置1において実行されるカメラ21の姿勢推定処理の一例を示すフローチャートである。なお、撮影部2が複数のカメラ21を備える場合には、画像処理装置1は、各カメラ21に対して、図2に示す姿勢推定処理を実行する。ここでは、カメラ21がフロントカメラである場合を例に、画像処理装置1によって実行されるカメラ21の姿勢推定処理について説明する。
図2に示すように、まず、制御部12は、カメラ21を搭載する自車両が直進しているか否かを監視する(ステップS1)。自車両が直進しているか否かは、例えば、舵角センサ3から得られるステアリングホイールの回転角情報に基づいて判断することができる。例えば、ステアリングホイールの回転角がゼロのときに自車両が完全にまっすぐに進むとした場合に、回転角がゼロの場合だけでなく、回転角がプラス方向とマイナス方向の一定範囲内の値である場合を含めて、自車両が直進していると判断してよい。なお、直進には、前方方向の直進と、後退方向の直進との両方が含まれる。
制御部12は、自車両の直進を検出するまで、ステップS1の監視を繰り返す。言い換えると、制御部12は、自車両が直進しない限り、姿勢の推定処理を進めない。これによれば、直進移動中における特徴点の位置変化を用いて姿勢の推定が行われることになり、自車両の進行方向が曲がっている場合の情報を用いて姿勢の推定が行われないので、姿勢の推定処理が複雑になることを避けることができる。ただし、自車両の進行方向が曲がっているときの特徴点の位置変化を用いて、姿勢の推定処理が進められる構成としてもよい。
なお、自車両が直進走行しているか否かの判断に加えて、制御部12は、自車両の速度が所定の速度範囲内であるか否かの判断を行う構成とすることが好ましい。自車両の速度が遅すぎると、特徴点の動きが少なくオプティカルフローの導出の精度が低下する可能性がある。一方、自車両の速度が速すぎると、特徴点の動きが速すぎて特徴点を追従できない可能性がある。自車両の速度が所定の速度範囲内である場合にのみ姿勢の推定処理を進めることにより、このような不具合の発生を抑制することができる。なお、所定の速度範囲は、例えば、時速10km以上、時速40km以下等であってよい。自車両の速度は、速度センサ4を利用して取得されてよい。
自車両が直進していると判断される場合(ステップS1でYes)、制御部12は、取得部11を介してカメラ21から撮影画像を取得する(ステップS2)。制御部12は、例えば数フレームから数十フレームの撮影画像を取得する。
次に、抽出部121は、各フレーム画像に対して特徴点の抽出を行う(ステップS3)。抽出部121は、各フレーム画像に対して、設定部122によって設定された抽出領域から特徴点を抽出する。本実施形態では、一例として、ステップS2で取得した複数のフレーム画像に対して、同一位置に同一形状の抽出領域が設定される。抽出領域の設定の詳細については後述する。なお、フレーム画像毎に抽出領域が設定されてもよい。
図3は、抽出部121による特徴点の抽出について説明するための図である。図3は、カメラ21で撮影された撮影画像Pを模式的に示している。撮影画像Pは、自車両のボディが映り込む領域BOを含む。図3において、破線で囲われた領域5は、抽出領域である。抽出部121は、抽出領域5から特徴点を抽出する。抽出領域5の設定により、路面RSから効率良く特徴点を抽出することができる。図3に示す例では、抽出領域5は矩形状であるが、抽出領域5の形状は、例えば円形状や楕円状等、矩形状以外であってもよい。図3に示す例では、路面RSに描かれている制限速度を示す数字の部分にコーナー度が高い第1特徴点FP1及び第2特徴点FP2が存在する。このために、抽出部121は、路面RS上に存在する第1特徴点FP1及び第2特徴点FP2を抽出する。
なお、図3では、便宜的に2つの特徴点FP1、FP2のみが示されているが、コーナー度が所定の特徴点閾値を超える特徴点が存在すれば、これ以外にも特徴点は抽出される。逆に、コーナー度が所定の特徴点閾値を超える特徴点が存在しない場合には、特徴点は抽出されない。各フレーム画像において、特徴点が1つも抽出されないこともあり得る。
図3に戻って、抽出部121による特徴点の抽出処理が全てのフレーム画像に対して完了すると、推定部123は、オプティカルフローの導出を行う(ステップS4)。オプティカルフローは、異なる時刻で撮影された2つの撮影画像間における特徴点の動きを示す動きベクトルである。本例では、異なる時刻の間隔は、取得部11のフレーム周期と同一である。ただし、これに限らず、異なる時刻の間隔は、例えば、取得部11のフレーム周期の複数倍であってもよい。
図4は、推定部123によるオプティカルフローの導出について説明するための図である。図4は、図3と同様に便宜的に示された模式図である。図4は、図3に示す撮影画像P(便宜的に前フレームPとする)の撮影後、1フレーム周期経過した後にカメラ21で撮影された撮影画像P’(便宜的に現フレームP’とする)である。図3に示す撮影画像Pの撮影後、1フレーム周期の間、自車両は前方に直進している。図4に示す丸印FP1Pは、図3に示す前フレームPの撮影時点における第1特徴点FP1の位置を示す。図4に示す丸印FP2Pは、図3に示す前フレームPの撮影時点における第2特徴点FP2の位置を示す。
図4に示すように、自車両が前方に直進すると、自車両の前方に存在する第1特徴点FP1及び第2特徴点FP2は自車両に近づく。すなわち、第1特徴点FP1及び第2特徴点FP2は、現フレームP’と前フレームPとで異なる位置に現れる。推定部123は、現フレームP’の第1特徴点FP1と前フレームPの第1特徴点FP1とを、その近傍の画素値に基づいて対応付け、対応付けた第1特徴点FP1のそれぞれの位置に基づいて、第1特徴点FP1のオプティカルフローOF1を導出する。同様に、推定部123は、現フレームP’の第2特徴点FP2と前フレームPの第2特徴点FP2とを、その近傍の画素値に基づいて対応付け、対応付けた第2特徴点FP2のそれぞれの位置に基づいて、第2特徴点FP2のオプティカルフローOF2を導出する。
なお、推定部123は、取得した複数のフレーム画像のそれぞれについて上述のようにしてオプティカルフローの導出を行う。また、各フレーム画像において2つより多くのオプティカルフローが得られる場合がある。このために、推定部123は、姿勢の推定に使うためのオプティカルフローの候補を複数得る場合がある。逆に、推定部123は、姿勢の推定に使うためのオプティカルフローの候補を得られない場合もある。
図2に戻って、推定部123は、オプティカルフローの導出を行うと、以後に行われる処理に使用するオプティカルフローを所定の選択条件にしたがって選択する(ステップS5)。所定の選択条件は、以後に行われる姿勢の推定に適した、2つのオプティカルフローで構成される組が選択されるように設定される。所定の選択条件を満たす組が複数存在する場合には、所定の選択条件を満たす全ての組が選択される。所定の選択条件を満たす組の数は、撮影画像から抽出される特徴点の数等によって変動する。なお、所定の選択条件を満たす組が存在しない場合には、以後の処理を行うことができない。このために、姿勢の推定処理は終了される。この段階で姿勢の推定処理が終了された場合には、姿勢の推定結果は得られないことになる。
ここで、ステップS5で選択された使用オプティカルフローの組に、図4に示す第1オプティカルフローOF1と第2オプティカルフローOF2との組が含まれるものして、ステップS6以降の処理について説明する。
推定部123は、第1特徴点FP1のオプティカルフローOF1と第2特徴点FP2のオプティカルフローOF2を用いた処理を進める。推定部123は、特徴点に対し、記憶部13に記憶されているカメラ21の内部パラメータを用いて座標変換を行う。座標変換では、カメラ21の収差補正と、歪補正とが行われる。収差補正は、カメラ21の光学系の収差による歪みを補正するために行われる。具体的には樽型歪みや糸巻歪みなど歪曲収差の補正である。歪み補正は、カメラ21の光学系そのものの歪みを補正するために行われる。具体的には魚眼補正などである。座標変換により、特徴点の座標は、被写体が透視投影によって撮影された場合に二次元画像上で得られる座標に変換される。
特徴点の座標変換が行われると、推定部123は、図5に示すように、第1特徴点FP1のオプティカルフローOF1の始点を頂点SP1、第1特徴点FP1のオプティカルフローOF1の終点を頂点EP1、第2特徴点FP1のオプティカルフローOF2の始点を頂点SP2、及び第2特徴点FP2のオプティカルフローOF2の終点を頂点EPとする四角形QLを仮想的に形成する(ステップS6)。以降、説明のために四角形や、該四角形の辺などの幾何的要素を仮想的に形成して用いる。しかし、実際の処理では、特徴点の座標や直線の方向などのベクトル演算に基づき、同等の作用を持つ幾何的要素に基づかない処理としてもよい。
四角形QLが仮想的に形成されると、推定部123は、四角形QLと、記憶部13に記憶されているカメラ21の内部パラメータとを用いて、三次元空間におけるカメラ21の投影面IMG(図6参照)上に四角形QLを移動させ、投影面IMG上での四角形QL1を仮想的に生成する(ステップS7)。
なお説明のため、以下のように辺を定義する。四角形QL1の第1辺SD1は、四角形QLにおいて、頂点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に相当する。
また、以下のように面を定義する(図6参照)。四角形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とする。
次に、推定部123は、所定の平面との交線が互いに平行になる面の組を2組特定する(ステップS8)。所定の平面とはあらかじめ平面の法線が分かっている面である。具体的には車両が移動を行っている平面であり、つまり路面である。所定の平面は、厳密な平面でなくてもよく、推定部123が所定の平面との交線が互いに平行になる面の組を2組特定する際に平面とみなすことができるものであればよい。
本実施形態では、画像処理装置1は、自車両が直進している場合に、異なる時刻に撮影された2つの画像から特徴点を抽出し、該特徴点のオプティカルフローを算出する。また、該特徴点は路面などの所定の平面上に位置している静止物から抽出される。したがって、算出されるオプティカルフローは実世界上では、自車両に対する静止物の相対的な位置変化を表す。つまり向きが逆となった自車両の移動ベクトルである。
四角形QL1の第2辺SD2と第4辺SD4とは、共に特徴点のオプティカルフローに対応するので、共に実世界上では自車両の移動ベクトルに相当する。したがって、路面上では互いに平行となると想定される。
また、四角形QL1の第1辺SD1と第3辺SD3とは、共に特徴点同士の位置関係なので、実世界上では自車両の移動に伴う静止物同士の位置関係に相当する。移動前の位置関係が第1辺SD1に相当し、移動後の位置関係が第3辺SD3に相当する。このとき静止物の位置は変わらないため、移動前後で位置関係は変わらない。したがって、路面上ではこれも互いに平行となると想定される。
したがって、推定部123は、路面との交線が平行な面として、第2面F2と第4面F4との組と、第1面F1と第3面F3との組と、の2つの組を特定する。つまり、推定部123は、オプティカルフローを含む面同士を1つの組とし、同時刻に撮影された特徴点を含む面同士を他の組として、計2つの組を特定する。
なお、図6において四角形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は、路面の法線を算出する(ステップS9)。まず、推定部123は、先に特定した面の組の一方である第1面F1と第3面F3とに基づき、面同士の交線の方向を求める。詳細には、第1面F1と第3面F3との交線CL1の向きを求める(図7参照)。交線CL1の方向ベクトルV1は、第1面F1の法線ベクトル及び第3面F3の法線ベクトルそれぞれと垂直なベクトルである。したがって、推定部123は、第1面F1の法線ベクトルと第3面F3の法線ベクトルとの外積により、交線CL1の方向ベクトルV1を求める。第1面F1と第3面F3は、路面との交線が平行となるため、方向ベクトルV1は路面と平行になる。
同様に、推定部123は、先に特定した面の組の他方である第2面F2と第4面F4との交線の方向を求める。詳細には第2面F2と第4面F4との交線CL2の向きを求める(図8参照)。交線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の姿勢を推定する(ステップS10)。なお、ステップS9の算出処理は、例えば公知のARToolkitを利用して実行することができる。
ステップS10における姿勢推定が終了すると、推定部123は、ステップS5で選択した全てのオプティカルフローの組について、姿勢の推定が完了したか否かを確認する(ステップS11)。全ての組に対して姿勢の推定が完了している場合には(ステップS11でYes)、図2に示すフローが終了する。一方、全ての組に対して姿勢の推定が完了していない場合には(ステップS11でNo)、ステップS6に戻ってステップS6以降の処理が繰り返される。
画像処理装置1は、自車両の移動を利用して、自律的に所定の平面との交線が互いに平行になる面の組を2組特定することで、特徴点の抽出誤差のみが推定精度に影響するカメラの姿勢推定を行うことができる。すなわち、画像処理装置1は、誤差要因が少ないカメラの姿勢推定を行うことができる。したがって、画像処理装置1は、カメラの姿勢を精度良く推定することができる。
なお、上記の説明ではカメラ21の光学中心OCと、四角形QL1の1つの辺を含む平面を特定するとしたがこの限りではない。当該平面の法線方向の特定をもって平面を特定するとしてもよい。例えば光学中心OCから各頂点への方向ベクトルの外積により平面の法線方向を求め、該法線方向によって面を特定するとしてもよい。この場合、第1面F1の法線方向と第3面F3の法線方向とを1つの組とし、第2面F2の法線方向と第4面F4の法線方向とを他の組として2つの組を特定するとよい。
また、面は平行移動させてもよい。例えば第1面F1の代わりに、第1面F1を平行移動させた面を第3面F3と組としてもよい。平行移動しても所定の平面との交線の向きは変わらないからである。
また、画像処理装置1は、複数の推定結果に基づいて姿勢の推定を確定させることが好ましい。この場合、所定数以上の姿勢の推定結果が得られるまで図2の処理を繰り返す構成としてよい。所定数以上の姿勢の推定結果が蓄積された時点で、例えば、平均値、又は、ヒストグラムの中央値やピーク値を求めて、当該求めた結果を姿勢推定の確定結果としてよい。姿勢推定の確定結果は、画像処理装置1における更なる処理に利用されてもよいし、外部装置に出力されてもよい。
姿勢推定の確定結果に基づいて、例えば、カメラ21の取付けのずれが生じた状態であるか否かが判定されてよい。カメラ21の取付けのずれが生じた状態であると判定された場合、例えば、当該異常事態が自車両のユーザに報知される。これにより、自車両のユーザはディーラによるカメラの取付け調整を依頼する等の対策をとることが可能となる。
また、カメラ21の姿勢推定の確定結果は、カメラ21のパラメータの補正に利用されてよい。これにより、カメラ21の取付けのずれが生じても、そのずれに応じたカメラのキャリブレーションが実行されることになり、カメラ21の取付けのずれが撮影画像に及ぼす悪影響を抑制することができる。また、姿勢の推定結果は、複数の車両とネットワークにより通信可能に設けられるセンターに撮影画像を送信する場合に、撮影画像とセットにしてセンターに送信されてもよい。これにより、センターでの撮影情報の取り扱いを適切に行うことができる。
<3.抽出領域の設定および変更>
図9は、設定部122による抽出領域5の設定および変更について説明するための第1図である。 図10は、設定部122による抽出領域5の設定および変更について説明するための第2図である。 図11は、設定部122による抽出領域5の設定および変更について説明するための第3図である。 図12は、設定部122による抽出領域5の設定および変更について説明するための第4図である。
図9〜図12において、符号200は自車両であり、符号300は他車両である。図9〜図12においては、自車両200や他車両300との関係を理解し易くするために、撮影画像に設定される抽出領域5を、実空間上に仮想的に示している。図9〜図12において、カメラ21はフロントカメラであり、カメラ21の撮影方向は前方である。図9〜図12においては、一例として矩形状に設定される抽出領域5に対して、実空間と同様の方向を便宜的に与えて説明を行う。図9〜図12において、符号5rは基準抽出領域である。
設定部122は、カメラ21の撮影方向において自車両(移動体)200から離れて存在する物体の位置に基づき基準抽出領域5rを変動させて、抽出領域5を設定する。これによれば、基準抽出領域5rの利用により処理負担を低減しつつ、路面RS上に存在する物体が抽出領域5に入らないように抽出領域5の設定を行うことができる。抽出領域5に路面RS上に存在する物体が入らないようにできるために、オプティカルフローを適切に導出することができる。
なお、物体の位置は、例えば、カメラ21から入力された撮影画像から求められてよい。また、物体の位置は、カメラ21以外の車載センサを利用して求められてもよい。このようなセンサとして、例えば、超音波センサ、レーダ、LIDAR(Laser Imaging Detection and Ranging)、カメラ21とは別に設けられるカメラ等が挙げられる。
図9に示す例では、物体は他車両300である。すなわち、設定部122は、前方に自車両200から離れて存在する他車両300の位置に基づき基準抽出領域5rを変動させて、抽出領域5を設定する。詳細には、設定部122は、前方に存在する他車両300が自車両200から所定距離D以内に存在しない場合は、図9の左側に示すように、基準抽出領域5rを抽出領域5とする。なお、所定距離Dは、自車両200ではなく、自車両に固定されるカメラ21からの距離であってもよい。所定距離Dは、基準抽出領域5rの前方側の辺FRSと同じ、或いは、前方側の辺FRSより前方に設定される。図9に示す例では、所定距離Dは、基準抽出領域5rの前方側の辺FRSと同じである。なお、所定距離Dは、実験等により適宜決められてよい。
一方、設定部122は、他車両300(物体)が所定距離D以内に存在する場合、撮影画像において自車両(移動体)200に近づく方向に基準抽出領域5rの幅を狭くして抽出領域5を設定する。これによれば、基準抽出領域5rを予め広い範囲としておくことにより、他車両300が自車両200の近くに存在しない場合には、多くの特徴点を抽出することが可能になる。そして、他車両300が自車両200に近づいた場合には、抽出領域5を基準抽出領域5rよりも狭くして、抽出領域5外に他車両300を位置させることができる。図9の右側に示す例では、他車両300の一部が所定距離D以内に存在するために、設定部122は、基準抽出領域5rの前方側の辺FRSを自車両200側に近づけて基準抽出領域5rを狭くした領域を、抽出領域5とする。
なお、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、予め準備された1つの領域に変更する構成であってよい。また、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、段階的に準備された複数の領域の中からいずれか1つの領域を選択する構成としてもよい。この場合、設定部122は、自車両200から他車両300までの距離に応じていずれか1つの領域を選択する構成としてよい。また、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、自車両200から他車両300までの距離に応じて段階的でなく連続的に狭くしてもよい。
また、設定部122は、他車両300が所定距離D以内に存在する場合に、基準抽出領域5rを抽出領域5としてもよい。そして、設定部122は、他車両300が所定距離D以内に存在しない場合に、撮影画像において自車両200から離れる方向に基準抽出領域5rの幅を広くして抽出領域5を設定する構成としてもよい。この変形例を図9に示す例を利用して説明すると、図9の右側の抽出領域5が基準抽出領域となり、他車両300が自車両200から離れて存在する場合に、図9の左側に示すように基準抽出領域が拡大された領域が抽出領域とされる。他車両300が自車両200から離れた位置にいる場合に、抽出領域5を基準抽出領域5rよりも広くして多くの特徴点を抽出することが可能になる。
また、設定部122は、自車両200に対する他車両300の速度(相対速度)を加味して抽出領域5を設定してよい。自車両200の速度は、例えば速度センサ4により得られる。他車両300の速度は、例えば自車両200に搭載されるレーダや、車車間通信を利用して得られてよい。ここで、他車両300が所定距離D以内に存在して、基準抽出領域5rを狭くして抽出領域5を設定する必要がある場合を考える。この際に、設定部122は、相対速度から他車両300が自車両200に接近していると判断される場合には、基準抽出領域5rを狭くする量を大き目としてよい。これによれば、短時間のうちに連続して取得された複数のフレーム画像に同じ抽出領域5を設定する場合において、抽出領域5内に他車両が入り混む可能性を低減することができる。逆に、設定部122は、相対速度から他車両300が自車両200から離れていっていると判断される場合には、基準抽出領域5rを狭くする量を小さ目としてよい。これにより、抽出領域5をなるべく広くすることができる。
設定部122は、自車両200(移動体)の速度に基づき抽出領域5の設定および変更を行う。これによれば、自車両200の速度が速くなった場合においても、特徴点の抽出精度が低下することを抑制することができる。なお、自車両の速度は、例えば速度センサ4により得られる。また、設定部122は、自車両200の速度に基づき抽出領域5の設定および変更を行わなくてもよい。
図10に示す例では、設定部122は、自車両200の速度が第1速度より小さい場合、図10の左側に示すように、基準抽出領域5rを抽出領域5とする。第1速度は、例えば時速30kmである。そして、設定部122は、自車両200(移動体)の速度が第1速度以上になると、撮影画像において自車両200から離れる方向に基準抽出領域5rの幅を狭くして抽出領域5を設定する(図10の右側参照)。これによると、撮影画像において速度変化の影響が大きい自車両200の近傍について、自車両200の速度が遅い場合には抽出領域5に入れておき、自車両200の速度が速くなった場合に抽出領域5から除外するといったことができる。このために、特徴点の抽出精度を向上することができる。また、自車両200の速度が遅い場合には、特徴点の抽出領域5を広くして多くの特徴点を抽出することが可能になる。図10の右側に示す例では、自車両200の速度が第1速度以上であるために、設定部122は、基準抽出領域5rの後方側の辺BASを自車両200から離して基準抽出領域5rを狭くした領域を、抽出領域5とする。
なお、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、予め準備された1つの領域に変更する構成であってよい。また、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、段階的に準備された複数の領域の中からいずれか1つの領域を選択する構成としてもよい。この場合、設定部122は、自車両200の速度に応じていずれか1つの領域を選択する構成としてよい。また、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、自車両200の速度に応じて段階的でなく連続的に狭くしてよい。
また、設定部122は、自車両200の速度が第1速度以上である場合に、基準抽出領域5rを抽出領域5としてもよい。そして、設定部122は、自車両200の速度が第1速度より小さくなると、撮影画像において自車両200に近づく方向に基準抽出領域5rの幅を広くして抽出領域5を設定する構成としてもよい。この変形例を図10に示す例を利用して説明すると、図10の右側の抽出領域5が基準抽出領域となり、自車両200の速度が第1速度より小さくなると、図10の左側に示すように基準抽出領域が拡大された領域が抽出領域とされる。この様な構成とした場合も、撮影画像において速度変化の影響が大きい自車両200の近傍について、自車両200の速度が遅い場合には抽出領域5に入れ、自車両200の速度が速い場合に抽出領域5から除外するといったことができる。
図11に示す例では、設定部122は、自車両200の速度が第2速度より小さい場合、図11の左側に示すように、基準抽出領域5rを抽出領域5とする。第2速度は、例えば時速30kmである。そして、設定部122は、自車両200(移動体)の速度が第2速度以上になると、撮影画像において自車両200(移動体)から離れる方向と交差する方向における基準抽出領域5rの幅を狭くして、抽出領域5を設定する(図11の右側参照)。なお、移動体から離れる方向と交差する方向は、一例として、移動体から離れる方向と直交する方向であってよい。これによると、自車両200の速度が速くなった場合にレンズ歪の影響で抽出精度が低下し易い撮影画像の外縁部の特徴点を、自車両200の速度が速くなった場合に抽出対象から除外することができる。このために、特徴点の抽出精度を向上することができる。また、自車両200の速度が遅い場合には、特徴点の抽出範囲を広げて多くの特徴点を抽出することができる。図11の右側に示す例では、自車両200の速度が第2速度以上であるために、設定部122は、基準抽出領域5rの左右の辺LES、RISを中心側に移動して基準抽出領域5rを狭くした領域を、抽出領域5とする。
なお、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、予め準備された1つの領域に変更する構成であってよい。また、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、段階的に準備された複数の領域の中からいずれか1つの領域を選択する構成としてもよい。この場合、設定部122は、自車両200の速度に応じていずれか1つの領域を選択する構成としてよい。また、設定部122は、抽出領域5を基準抽出領域5rよりも狭い領域とする場合に、自車両200の速度に応じて段階的でなく連続的に狭くしてよい。
また、設定部122は、自車両200の速度が第2速度以上である場合に、基準抽出領域5rを抽出領域5としてもよい。そして、設定部122は、自車両200の速度が第2速度より小さくなると、撮影画像において自車両200から離れる方向と交差する方向における基準抽出領域5rの幅を広くして、抽出領域5を設定する構成としてもよい。この変形例を図11に示す例を利用して説明すると、図11の右側の抽出領域5が基準抽出領域となり、自車両200の速度が第2速度より小さくなると、図11の左側に示すように基準抽出領域が拡大された領域が抽出領域とされる。この様な構成とした場合も、自車両200の速度が速くなった場合にレンズ歪の影響で抽出精度が低下し易い撮影画像の外縁部の特徴点を、自車両200の速度が速い場合に抽出対象から除外することができる。このために、特徴点の抽出精度を向上することができる。また、自車両200の速度が遅い場合には、特徴点の抽出範囲を広げて多くの特徴点を抽出することができる。
本実施形態では、設定部122は、自車両200の速度が第1速度以上になると、基準抽出領域5rの後方側の辺BASを自車両200から離して基準抽出領域5rを狭くした領域を、抽出領域5とする。また、設定部122は、自車両200の速度が第2速度以上になると、基準抽出領域5rの左右の辺LES、RISを中心側に移動して基準抽出領域5rを狭くした領域を、抽出領域5とする。この場合において、第1速度と第2速度は異なってもよいが、本実施形態では同じである。
このために、図12に示すように、自車両200の速度が第1速度(=第2速度)以上になると、基準抽出領域5rの後方側の辺BASが自車両200から離れる方向に動かされるとともに左右の辺LES、RISが中心側に移動されて、基準抽出領域5rより狭い抽出領域5が設定される。
なお、設定部122は、図10に示す抽出領域5の設定変更と、図11に示す抽出領域5の設定変更とのうち、いずれか一方のみを行う構成としてもよい。
図13は、本実施形態の画像処理装置1における抽出領域5の設定処理の一例を示すフローチャートである。図13は、カメラ21がフロントカメラである場合を想定したフローチャートである。抽出領域5の設定は、例えば、図2のステップS2における撮影画像の取得処理が行われた後に実行される。
ステップS21では、設定部122は、前方車両が所定距離D以内に存在するか否かを確認する。設定部122は、前方車両が所定距離D以内に存在する場合(ステップS21でYes)、次のステップS22に処理を進める。一方、設定部122は、前方車両が所定距離D以内に存在しない場合(ステップS21でNo)、ステップS23に処理を進める。
ステップS22では、設定部122は、第1仮設定として、基準抽出領域5rを自車両200に近づく方向に向けて狭くした第1領域5a(図14参照)を設定する。設定部122は、第1仮設定として第1領域5aを設定すると、ステップS24に処理を進める。なお、図14は、図13のフローチャートの捕捉説明用の図である。図14において、各領域5a、5b、5c、5d、5e、5r間で、僅かにずれて示された辺は、本来は互いに重なった辺である。区別し易いように、便宜上ずらしたものである。
ステップS23では、設定部122は、第1仮設定として、基準抽出領域5r(図14参照)を設定する。設定部122は、第1仮設定として基準抽出領域5rを設定すると、ステップS24に処理を進める。
ステップS24では、設定部122は、自車両200の速度が所定速度以上であるか否かを確認する。所定速度は、上述の第1速度および第2速度と同じ速度であり、例えば時速30kmである。設定部122は、自車両200の速度が所定速度以上である場合(ステップS24でYes)、次のステップS25に処理を進める。一方、設定部122は、自車両200の速度が所定速度より小さい場合(ステップS24でYes)、ステップS27に処理を進める。
ステップS25では、設定部122は、第2仮設定として、第1仮設定された領域を自車両200から離れる方向に向けて狭くした領域に設定する。第1仮設定で第1領域5aに設定されている場合には、第1領域5aを自車両200から離れる方向に向けて狭くした第2領域5bが第2仮設定の領域になる。第1仮設定で基準抽出領域5rに設定されている場合には、基準抽出領域5rを自車両200から離れる方向に向けて狭くした第3領域5cが第2仮設定の領域になる。設定部122は、第2仮設定を行うと、次のステップS26に処理を進める。
ステップS26では、設定部122は、自車両200から離れる方向と交差する方向における第2仮設定された領域の幅を狭くして、最終的な抽出領域5を設定する。第2仮設定で第2領域5bに設定されている場合には、第2領域5bの撮影画像上の左右方向の幅を狭くした第4領域5dが抽出領域5になる。第2仮設定で第3領域5cに設定されている場合には、第3領域5cの画像上の左右方向の幅を狭くした第5領域5eが抽出領域5になる。ステップS26が完了すると、抽出領域5の設定処理は完了する。
ステップS27では、設定部122は、第1仮設定された領域を抽出領域5に設定する。第1仮設定で第1領域5aに設定されている場合には、第1領域5aが抽出領域5になる。第1仮設定で基準抽出領域5rに設定されている場合には、基準抽出領域5rが抽出領域5になる。ステップS27が完了すると、抽出領域5の設定処理は完了する。
なお、図13に示す例では、前方車両が所定距離D以内か否かを確認した後に、自車両200の速度が所定速度以上であるか否かを確認する構成となっているが、この順番は逆であってもよい。また、図13に示すステップS25とステップS26との処理は順番が入れ替わってもよい。すなわち、第1仮設定領域の撮影画像上の左右方向の幅を狭くして第2仮設定領域を得て、第2仮設定領域を自車両200から離れる方向に狭くした領域を抽出領域5としてよい。
なお、本実施形態の構成においては、自車両200の前方の所定距離D以内に物体(他車両300等)が存在したり、自車両200の速度が所定速度以上であったりした場合、基準抽出領域5rに比べて抽出領域5が狭くなる。この場合、単一の撮影画像から第1特徴点FP1及び第2特徴点FP2のいずれか一方のみしか抽出できない場合が起こる可能性が、基準抽出領域5rを用いる場合に比べて高くなる可能性がある。このような傾向は、自車両200の前方の所定距離D以内に物体が存在し、且つ、自車両200の速度が所定速度以上である場合に特に発生し易くなる。
このような点を考慮して、推定部123は、第1時刻と第1時刻より後の第2時刻で撮影された2つの撮影画像から得られる第1特徴点の位置変化(第1オプティカルフローOF1)および第2特徴点の位置変化(第2オプティカルフローOF2)に基づき所定の平面との交線が互いに平行となる面の組を2組特定する構成(上述の構成)の他に、次のような構成を適宜利用してもよい。すなわち、推定部123は、第1時刻と第1時刻より後の第2時刻で撮影された2つの撮影画像から抽出された特徴点から、互いに対応する第1特徴点を選定し、当該第1特徴点の位置変化を算出する。また、推定部123は、第1時刻より後の第3時刻と第3時刻より後の第4時刻で撮影された2つの撮影画像から抽出された特徴点から、第1特徴点とは異なり、互いに対応する第2特徴点を選定し、当該第2特徴点の位置変化を算出する。そして、推定部123は、第1特徴点の位置変化及び第2特徴点の位置変化に基づき、所定の平面との交線が互いに平行となる面の組を2組特定する。このような構成を適宜利用することにより、抽出領域5を小さくした場合でも、カメラ21の姿勢の推定結果が得られる可能性が高くなる。
<4.留意事項>
本明細書における実施形態や変形例の構成は、本発明の例示にすぎない。実施形態や変形例の構成は、本発明の技術的思想を超えない範囲で適宜変更されてもよい。また、複数の実施形態及び変形例は、可能な範囲で組み合わせて実施されてよい。
本発明は、自動駐車等の移動体の運転支援を行うカメラの姿勢推定を行うために利用することができる。また、本発明は、ドライブレコーダ等の運転情報を記録するカメラの姿勢推定を行うために利用することができる。また、本発明は、カメラの姿勢の推定情報を利用して撮影画像を補正する補正装置等に利用することができる。また、本発明は、複数の移動体とネットワークにより通信可能に設けられるセンターと連携して動作する装置等に利用することができる。当該装置は、例えば、センターに撮影画像を送信する場合に、カメラの姿勢の推定情報を撮影画像とセットにして送信する構成であってよい。そして、センターでは、カメラの姿勢の推定情報を用いて、各種画像処理(カメラの姿勢も考慮した画像の視点・視方向を変更する処理、例えば車両の車体前方方向の画像に視点・視方向変換した画像を生成する等)、画像を用いた計測処理におけるカメラの姿勢に対する補正処理、カメラ姿勢の経年変化を統計処理(多くの車両のデータ)、等を行いユーザへの有用な提供データを生成する等する。