以下に添付図面を参照して、情報処理装置、撮像装置および移動体の実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態に係る機器制御システム1(「システム」の一例)を搭載した車両10(「移動体」の一例)の例を示す模式図である。本実施形態に係る車両10のフロントガラスの上部(バックミラー付近)には、撮像ユニット11が設置されている。撮像ユニット11は、車両10の進行方向17前方を撮像するステレオカメラと、ステレオカメラが撮像した撮像画像を解析する解析ユニット(「情報処理装置」の一例)と、を含む。ステレオカメラは、水平に配置された2つのカメラ部により、左側視界15の撮像画像および右側視界16の撮像画像を取得する(以下、「画像を取得する」という表現は「画像データを取得する」と同義として用いられる)。解析ユニットは、ステレオカメラから供給される左右の撮像画像に基づいて、車両10が走行中の路面、前方車両、歩行者、障害物等の認識対象物を解析する。また、車両10には、解析ユニットの解析結果(情報処理装置による情報処理の結果)に基づく制御(各種車載機器の制御、車両10のハンドル制御又はブレーキ制御等)を行う車両ECU(「制御装置」の一例)などが搭載されている。
図2は、機器制御システム1の全体的なハードウェア構成の例を示す図である。機器制御システム1は、撮像装置である撮像ユニット11および車両ECU(Engine Control Unit)51を含む。車両ECU51は、車両10の走行状態を制御する信号を生成する回路を含むユニットであり、プログラムが記憶されたメモリ、プログラムにより所定の演算制御処理を行うCPU(Central Processing Unit)、各種ロジック回路等を利用して構成される。車両ECU51は、撮像ユニット11に含まれる解析ユニットの解析結果に基づいて、車両10の制御、例えばブレーキ、アクセル、操舵等の自動制御、警告の出力等を行うための処理を行う。
図3は、撮像ユニット11のハードウェア構成の例を示す図である。本実施形態に係る撮像ユニット11は、測距装置であるステレオカメラ12および画像解析ユニット13を含む。
ステレオカメラ12は、左目用となる第1のカメラ部21aと、右目用となる第2のカメラ部21bとが平行に組み付けられて構成されている。両カメラ部21a,21bは、それぞれレンズ22、画像センサ23、およびセンサコントローラ24を含む。画像センサ23は、例えばCCD(Charge Coupled Device)、CMOS(Complementary Metal-Oxide Semiconductor)等である。センサコントローラ24は、画像センサ23の露光制御、画像読み出し制御、外部回路との通信、画像データの送信制御等を行うための回路を含むデバイスである。
画像解析ユニット13は、「情報処理装置」の一例であり、画素毎に距離情報を有する距離画像を取得し、その取得した距離画像に基づくデータを生成する。
距離画像は、距離(視差)を各座標(画素)に格納した画像である。なお、本実施形態では、距離画像の一例として、画素毎に視差値を有する視差画像(ステレオカメラで撮影された左右画像の位置ずれから算出された視差を含む画像)を例に挙げて説明するが、これに限られるものでは無く、例えば画素ごとに、ミリ波レーダやLIDARなどの測距装置で算出された距離計測値を有する画像や、画像ごとに、視差値と距離計測値との組み合わせを有する画像を距離画像として用いることもできる。また、詳しくは後述するが、ここでは、距離画像に基づくデータの一例として、Vマップ(V-Disparity Map)とUマップ(U-Disparity Map)を例に挙げて説明するが、これに限られるものでは無い。画像解析ユニット13が有する機能の詳細については後述する。
画像解析ユニット13のハードウェア構成について説明する。図3に示すように、画像解析ユニット13は、CPU31、FPGA(Field-Programmable Gate Array)32、ROM(Read Only Memory)33、RAM(Random Access Memory)34、シリアルIF(Interface)35、データIF36、データバスライン41、およびシリアルバスライン42を含む。
ステレオカメラ12は、データバスライン41およびシリアルバスライン42を介して画像解析ユニット13と接続している。CPU31は、ROM33に記憶されたプログラムに従って、画像解析ユニット13全体の動作、画像処理、画像認識処理等を実行するための処理を行う。両カメラ部21a,21bの画像センサ23により取得された輝度データ(画素毎に輝度値が設定された輝度画像)は、データバスライン41を介して画像解析ユニット13のRAM34に書き込まれる。CPU31またはFPGA32からのセンサ露光値の変更制御データ、画像読み出しパラメータの変更制御データ、各種設定データ等は、シリアルバスライン42を介してセンサコントローラ24との間で送受信される。
FPGA32は、RAM34に保存されたデータに対してリアルタイム性が要求される処理を行う。リアルタイム性が要求される処理とは、例えばガンマ補正、ゆがみ補正(左右画像の平行化)、ブロックマッチングによる視差演算等を行うことにより、輝度画像から、画素毎に視差値が設定された視差画像を生成する処理等である。このように生成された視差画像は、RAM34に再度書き込まれる。
CPU31は、ステレオカメラ12の各センサコントローラ24の制御、および画像解析ユニット13の全体的な制御を行う。ROM33には、CPU31またはFPGA32に各種処理を実行させるプログラムが格納されている。CPU31は、データIF36を介して、例えば車両10のCAN(Controller Area Network)情報(車速、加速度、舵角、ヨーレート等)をパラメータとして取得する。CPU31は、ROM33に記憶されているプログラムに従って、RAM34に記憶されている輝度画像および視差画像を用いて、路面形状の推定、オブジェクトの認識、距離の計測等の各種処理を実行する。
画像解析ユニット13による解析結果を示す解析データは、シリアルIF35を介して、例えば自動ブレーキシステム、自動速度制御システム、自動操舵システム、警報システム等の外部システムへ供給される。
図4は、機器制御システム1の機能構成の例を示す図である。本実施形態に係る機器制御システム1は、撮像部101、視差計算部102、Vマップ生成部103、路面推定部104、Uマップ生成部105、クラスタリング部106、棄却部107、トラッキング部108、および制御部109を含む。図4は、撮像ユニット11による1フレームの撮像から路面推定、オブジェクト認識等を含む画像解析処理を終え、車両制御を開始させるまでの一連の流れの例を示している。
撮像部101は、車両10前方を撮像し、2つの輝度画像(撮像画像)を取得する機能部である。撮像部101は、撮像ユニット11等により構成される。撮像部101により取得された2つの輝度画像の一方(例えば第1のカメラ部21aにより取得された左側視界15の輝度画像)が基準画像となり、他方(例えば第2のカメラ部21bにより取得された右側視界16の輝度画像)が比較画像となる。
視差計算部102は、基準画像の輝度画像と比較画像の輝度画像とを用いて、ステレオカメラ12の撮像範囲内の局所領域のブロックマッチング等により画素毎の視差値を算出し、視差画像を生成する機能部である。視差計算部102は、例えばFPGA32、CPU31等により構成される。
Vマップ生成部103は、視差計算部102により生成された視差画像を用いて、後段の路面推定部104で使用するためのVマップを生成する。Vマップは、「第1のマップ」の一例であり、視差画像(「距離画像」の一例)の垂直方向の位置と、視差値d(「距離情報」の一例)との関係を示すマップである。より具体的には、Vマップは、横軸に視差値d、縦軸に視差画像のy座標を対応させた二次元マップであり、視差画像の各座標(x,y)の視差値dが、Vマップ上の対応する位置(d,y)に投票されて生成される。Vマップ上の座標(d,y)には、この位置に投票された視差値dの頻度(点数)を示す値(頻度値)が格納される。
図5は、視差画像とVマップとの関係を説明するための図である。図5に示すように、Vマップの横方向の1ライン(水平ライン)上に投票される視差は、視差画像中の所定の横方向の1ラインから抽出された視差になる。なお、図5の例では、視差画像とVマップのy座標を一致させているが、必ずしもこうなっている必要はない。この関係に基づくと、視差画像中の物体は、自車から同距離に存在するため、Vマップ上では縦方向に分布(同程度の視差値d(横軸の座標)に対応して分布)することとなる。また、視差値dは距離が近方ほど大きな値となり、遠方ほど小さな値となるという特徴がある。従って、Vマップを図5のように左上原点とした場合、視差画像中の各画素(視差値d)をVマップ上に投票すると、視差値dの分布を示す形状は左上上がりとなる。後段の路面推定部104による路面形状の推定は、Vマップを用いて実施し、推定後は視差値dにおける路面高さに対応するy座標を決定することができる。図5に示す符号1030は、図5に示すVマップ上で路面形状を推定した結果を示す。ここで、前方車両の視差Pにおける路面からの高さは図中の関係となる。そのため、このy座標差(前方車両の視差Pに対応するy座標と、視差Pにおける路面高さに対応するy座標との差)が路面からの高さとなる。
本実施形態では、Vマップ生成部103は、視差画像(「距離画像」の一例)を間引きながら複数の画素の各々に対してアクセス(順番にアクセス)し、アクセス対象の画素を示すアクセス画素の視差値dに基づいて、アクセスしない画素を示す未アクセス画素の視差値dを決定し、その決定した視差値dを用いてVマップ(「距離画像に基づくデータ」の一例)を生成する。詳細な内容については後述する。なお、Vマップ生成部103の機能は、CPU31がプログラムを実行することにより実現されるが、これに限らず、例えば専用のハードウェア回路(例えばFPGA32等)で実現されてもよい。
図4に戻って説明を続ける。路面推定部104は、Vマップ生成部103により生成されるVマップに基づいて路面形状の推定を行う。Vマップの生成方法については後述する。路面推定部104は、例えばCPU31、FPGA32等により構成される。
Uマップ生成部105は、視差計算部102により生成された視差画像と、路面推定部104による路面形状の推定結果とを用いて、後段のクラスタリング部106で使用するためのUマップを生成する。Uマップは、「第2のマップ」の一例であり、視差画像(距離画像)の水平方向の位置と、路面の高さを超える視差値d(距離)との関係を示す。より具体的には、Uマップは、横軸に視差画像のx座標、縦軸に視差値dを対応させた二次元マップであり、視差画像の各座標(x,y)の視差値dのうち路面高さを超える視差値dが、Uマップ上の対応する位置(x,d)に投票されて生成される。Uマップ上の座標(x,d)には、この位置に投票された視差値dの頻度(点数)を示す値(頻度値)が格納される。
図6は、視差画像とUマップとの関係を説明するための図である。このUマップには、視差画像中の画素のうち、路面よりも高い視差を有する画素のみが投票されている。また、視差画像の横軸とUマップの横軸は一致しているものとする。なお、Uマップの横軸は、視差画像の横方向の座標を実距離に換算した形態であってもよいし、Uマップ上の座標に頻度値ではなく路面からの実高さを格納する形態とすることも可能であるが、Uマップの種類は任意であり、この例では、横軸を視差画像中のx座標と対応させ、各座標には頻度値を格納するものとする。物体検知は、このマップ上の視差の塊を見つける処理に該当する。図6の例では、側壁2面分と前方車両が物体として検知される。
本実施形態では、Uマップ生成部105は、視差画像を間引きながら複数の画素の各々に対してアクセスし、アクセス画素の視差値dに基づいて、アクセスしない画素を示す未アクセス画素の視差値dを決定し、その決定した視差値dを用いてUマップを生成する。詳細な内容については後述する。なお、Uマップ生成部105の機能は、CPU31がプログラムを実行することにより実現されるが、これに限らず、例えば専用のハードウェア回路(例えばFPGA32等)で実現されてもよい。
なお、以下の説明では、VマップとUマップを区別しない場合は、単に「ディスパリティマップ」と称する場合がある。このディスパリティマップは、距離画像(この例では視差画像)に基づくデータの一例である。
図4に戻って説明を続ける。クラスタリング部106は、Uマップ生成部105により生成されたUマップ上において、頻度値が所定値よりも多い視差値が密集している領域を新規オブジェクトとして検知し、検知された領域の輝度画像上の座標、サイズ等に基づいてオブジェクトのタイプ(人、車両、ガードレール等)を推定し、タイプを示す個体情報を付与する。クラスタリング部106は、例えばCPU31、FPGA32等により構成される。
棄却部107は、フレーム情報(輝度画像、視差画像等)、Uマップ、新規オブジェクトの個体情報等を用いて、検知されたオブジェクトのうち認識対象(衝突回避等の対象)でないものを棄却する処理を行う機能部である。棄却部107は、例えばCPU31、FPGA32等により構成される。
トラッキング部108は、検知されたオブジェクト(棄却されなかったオブジェクト)が複数のフレームで連続して出現する場合に、そのオブジェクトが追跡対象であるか否かを判定し、追跡対象である場合には追跡対象であることを示す個体情報を生成する処理を行う機能部である。トラッキング部108は、例えばCPU31,FPGA32等により構成される。
制御部109は、上記処理で得られた結果に基づき、車両10を制御(衝突回避行動、警告の出力等)する機能部である。制御部109は、例えば車両ECU51等により構成される。
ところで、上記処理に基づいて物体検出を行う場合、各種データの生成に処理時間を要するという問題がある。そこで、ステレオカメラ12で撮像した左右画像から視差画像を生成していく過程で、視差画像が完全に生成された後にデータ生成処理を開始するのではなく、所定量分の視差画像が生成されたタイミング(メモリに書き込まれた)で、その生成された分のみに対し、データを生成するパイプライン処理方法が既に知られている。この方法に従った場合、視差画像の生成とデータの生成処理を並行して実行できるため、視差画像を生成している間の待ち時間を有効活用することができる。従って、作成された前記データを変化させることせずに、生成に要する処理時間のみを短縮することができる。
図7は、パイプライン処理を説明した概念図である。図7に示すように、パイプライン処理では、所定ライン数分の視差画像データAのメモリ書き込みが完了した後(時刻=t)、次の視差画像データBを書き込んでいる間に、既に書き込みが完了している視差画像データAを使って「Vマップ生成部103」以降の実行可能な処理を実行し、データCを生成する。この時、視差画像データBの書き込み中にデータCを生成しているため、その差分が待ち時間Dとなる(今、視差画像データの書き込みはAやBで同じと仮定)。このようにパイプライン処理することで、画像書き込み中の待ち時間をデータ生成に充てることができる。これにより、視差画像全体の書き込みが完了した時、既にある程度のデータ生成は完了している状態となる。
図8は、パイプライン処理の有無で立体物認識プログラムを実行した際の処理時間の内訳を示した図である。例えば、パイプライン処理を実行しなかった場合(従来方式)、視差画像データEの書き込み時には、「Vマップ生成部103」以降の処理を行わないため、データEの書き込み時間がそのまま待ち時間Gとなる。そして、データEの書き込みが完了した直後から、「Vマップ生成部103」以降の処理Fが開始される。
一方で、パイプライン処理を有効化した場合、図7で説明した通り、所定量のデータ書き込みが完了した後、次のデータ書き込みと並行して、書き込み済みの視差画像データを使って「Vマップ生成部103」以降の処理を実行する。そのため、視差画像データEの書き込み時間の内、一部分を「Vマップ生成部103」以降の処理Iとして有効活用できる。この場合、待ち時間は待ち時間J分となり、これは待ち時間Gよりも小さくなる。また、データEの書き込みが完成した後に実行する「Vマップ生成部103」以降の処理Hに要する時間に関しても処理I分が完了しているため少なくなる。従って、処理時間削減量Kが削減した処理時間となる。
なお、「Vマップ生成部103」以降の処理とは、図4に記載の、「路面推定部104」、「Uマップ生成部105」、「クラスタリング部106」、「棄却部107」、「トラッキング部108」などの処理を意味している。なお、視差画像データが完了した領域に対して実施できる処理であればこれらに限定されない。
しかし、データは、「Vマップ生成部103」、「路面推定部104」、「Uマップ生成部105」の順に処理を実行する必要があるため、そこには生成順序という制約が発生する。また、視差画像が生成される位置によって、実行できる処理に制約が生じる。
例えば、前者の場合、路面推定を実行するためには、Vマップが作成されている必要がある。これは、路面がVマップに投票された視差を使って推定されるためである。一方で、Uマップを生成するためには、路面情報が必要である。これは、Uマップは、視差画像中の視差のうち、路面よりも高い位置に存在する視差を投票する必要があるためである。つまり、路面推定はVマップの生成の後に実行しなくてはならず、Uマップの生成は路面推定の後に実行しなくてはならない。
また、後者の場合、近方で路面が大きく写るという性質に基づき、近方から遠方にかけて路面を推定していくと仮定する。この場合、近方に該当する画像下端の視差画像は生成されていなくてはならない。この点に関し、例えば、ハードウェアの制約(例えば、別のプロセッサでも視差画像を使用しており、その場合、いずれかの理由により上端から生成する必要があるなどの制約)などにより視差画像を上から下方向に向けて作っていくとすると、路面推定をパイプライン処理で生成していくことはできなくなる。これは、画像下端まで視差画像が完成したタイミングで、初めて近方(画像下端)の路面推定が実行できるためである。同時に、路面推定結果を使用して生成されるUマップに関しても同様に、路面推定完了後に処理を開始するためパイプライン処理できないという問題が発生する。
そこで、本実施形態においては、パイプライン処理について、過去フレームのVマップ情報と着目フレームで生成したVマップ情報の差異に基づいて路面情報を補正するとともに、路面情報を使うタイミング(Uマップ作成時)までに実施するようにしたものである。
前述したように、視差画像が生成される位置の制約や、各データの生成順序の制約がある場合、パイプライン処理にて、実行できる処理とできない処理が発生し、待ち時間を効率的に使えなくなってしまう。このような問題を解消するために、本実施形態においては、過去のフレームで推定されたデータや情報を使用して、着目フレームにおける当該データを生成する。
図4に示すように、本実施形態に係る機器制御システム1は、更に、データ処理部110、情報保存部111、距離画像入力部として機能する視差画像入力部112を含む。
視差画像入力部112は、視差計算部102で生成した視差画像データを所定タイミングでメモリに書き込む。
データ処理部110は、視差画像入力部112における視差画像データの書き込みに同期させて、Vマップ生成部103で生成したVマップを使って、路面推定部104で推定した路面を補正する。
情報保存部111は、視差画像入力部112における視差画像データの書き込みに同期させて、次フレーム以降で使用するためにVマップ情報や路面情報を保存する。
すなわち、路面推定部104は、情報保存部111からの過去路面参照、過去フレームで生成されたVマップ(過去Vマップと呼ぶ)を使った路面推定、着目フレームにおけるVマップ(着目Vマップと呼ぶ)を使った路面推定を所定のタイミングで実行する。以下において、詳述する。
路面推定部104は、着目フレームにおける路面情報を生成する際に、過去フレームで生成されたVマップを使用する。通常であれば、路面推定はVマップの完成後に実施可能であるが、本手順に従う場合、着目フレームにおける着目Vマップの完成を待つ必要がなくなる。しかし、ここで推定された路面は、あくまでも過去のフレームで生成されたVマップを使用しているため、着目Vマップとは異なる。従って、パイプライン処理で前記路面情報と並行して生成した着目Vマップを使って、当該路面情報を補正する必要がある。つまり、着目フレームにおける路面情報は推定する必要がないのではなく、後の補正までに作成しておく必要がある。
図9は、路面補正を実施した時の処理シーケンスの一例を説明した概要図である。本実施形態では、パイプライン処理を実行する際に、2つのデータを生成する。1つ目のデータは、路面情報である。このデータは、着目Vマップが存在しないため、過去Vマップを使用して生成する。なお、本路面は過去Vマップを使って推定している時点で過去フレームにおける路面(過去路面と呼ぶ)と同じものとなる。従って、着目フレームで改めて推定し直すことをせず、過去フレームの路面情報を参照するようにしても良い。2つ目のデータは、着目Vマップである。今、路面情報を過去フレームから参照するとした場合に、過去路面情報を、着目Vマップを使って補正したものが着目フレームにおける路面情報となる。
次に、図10は過去路面の補正方法について説明する図である。図10を用いて、データ処理部110における過去路面の補正方法について説明する。
図10に示すように、パイプライン処理で視差画像が書き込まれた領域、及び、Vマップが生成された領域を「処理対象領域」と呼ぶこととする。すなわち、視差画像の処理対象領域に対応する領域がVマップ上に描画されている状態である。この時、本領域内に於ける過去路面は、図10に示す通りである。
この時、着目フレームにおける路面の補正方法の一例としては、当該領域内の標本点を決定し、過去路面との差異に基づき、その差分量をd座標ごとに過去路面のy座標に加減算する方法が挙げられる。標本点は、例えば、各d座標に対し、路面は物体よりも低い位置に存在するという特性に基づき、Vマップの下方から探索を開始し、頻度が所定の閾値をはじめて超える位置とするなどの方法が挙げられる。また、これらの点群を使って路面推定(直線近似など)して得られた点群(d座標ごとに1つのy座標)を前記標本点としても良い。
標本点を使わない方法としては、車速を使う方法が挙げられる。今、制御系から自車速を得られるとして、その車速で走行した場合、カメラのフレームレートと合わせて、1フレームで走行する距離(移動量)を算出することができる。従って、その移動量分だけ過去路面を移動させれば良い。この路面が着目フレームにおける補正路面となる。このように過去路面に基づいて着目フレームにおける路面を決定できる方法であれば、上記の方法に限定されない。
データ処理部110は、上記処理を視差画像の書き込みタイミングごとに繰り返し実行することで、補正処理の作動回数分の路面を推定する。最終的に、推定される路面数をセグメント数とする場合、セグメント内に内包される前記路面群の左端、右端を結んで一本の路面とするなど、最終結果を得るための後処理を実行しても良い。
なお、再度路面推定は行わず、前述した補正処理をパイプライン処理最中に実行するのではなく、データ処理部110は、パイプライン処理が完了した後に、前述した補正処理を全領域に対してまとめて実施しても良い。この時、全領域に対してスムージング処理などの後処理を適用するのは任意で決定可能である。
また、情報保存部111は、上記で推定した路面に関しては、次フレームで使用する可能性があることから、保存しておいてもよい。
上記に従うと、通常はVマップを生成した後、路面推定を実行という順序の制約が発生するが、過去路面を使うことで、過去Vマップで路面を推定した後(過去路面参照と同意)、着目Vマップを生成し、そのVマップを用いて過去路面を補正するというシーケンスで処理できることとなり、Vマップ生成と路面推定の順序の制約をなくすことができる。また、過去Vマップや過去路面は既に生成済みであるため、着目フレーム内のどの位置から視差画像データが書き込まれたとしても、当該領域から補正していけばよいため、視差画像データの書き込み位置の制約もなくすことができる。
なお、過去路面を参照するとした場合、視差画像データ書き込み時間内で実行される処理は着目フレームのVマップを生成する処理のみとなる。つまり、着目フレームでは、路面推定処理は実行せず、代わりに、路面補正処理を行うこととなる。その場合、着目フレームのVマップが生成された後、その情報を使って過去路面を補正するという処理に待ち時間を有効活用することができる。
また、位置の制約に関しては下記のように考えることもできる。着目フレームのVマップ生成と補正処理をペアとして考えた場合、極端な例で、画像中央から書き込みが開始したとしても、その領域の書き込み完了後に、本着目フレームの部分Vマップ情報を基に、過去路面の該当箇所を補正すれば良い。このように、書き込み位置の制約は無視することが可能となる。
図11は、第1の実施の形態に係る機器制御システム1における処理の流れを示すフローチャートである。図11に示すように、機器制御システム1のデータ処理部110は、視差画像をyライン毎に処理すると仮定し、視差画像の1ラインごとに以降の処理であるステップS1102~S1108を視差画像の縦幅分繰り返し実行する(ステップS1101)。
まず、視差画像入力部112は、視差計算部102で生成した1ライン分の視差画像データのメモリ書き込みを実行する(ステップS1102)。
次に、路面推定部104は、所定ライン分の視差画像データがメモリに書き込まれたかを判断する(ステップS1103)。なお、所定ライン数は任意に決定可能である。例えば、パイプライン処理するデータの特性に合わせて決定するなどが可能である。ここで、路面推定部104は、条件を満たす場合には(ステップS1103のYes)、ステップS1104へ進み、条件を満たさない場合には(ステップS1103のNo)、ステップS1108へ進み、次の1ライン分のロードへ戻る。
条件を満たす場合には(ステップS1103のYes)、路面推定部104は、過去フレームのVマップに基づいて所定範囲の路面推定を実行する(ステップS1104)。なお、前述した通り、ここで推定する路面は過去フレームでの推定路面と同意であるため、情報保存部111から参照しても良い。また。所定範囲とは、前回の本処理を実行した後から、今回の本処理の実行までに新規で書き込まれた視差画像データを含む範囲とする。
次に、Vマップ生成部103は、ステップS1104での路面推定と同領域に対し、着目フレームの所定範囲のVマップを生成する(ステップS1105)。
次に、データ処理部110は、ステップS1105で生成した着目フレームのVマップに基づいて、ステップS1104で推定した路面推定結果を補正する(ステップS1106)。この路面が着目フレームにおける路面となる。
続いて、情報保存部111は、ステップS1105で生成したVマップを次のフレーム以降で使用するために保存する(ステップS1107)。なお、前述したVマップは部分領域であるため、パイプライン処理の後に、完成したVマップを保存しても良い。なお、以降のフレームで過去Vマップを参照しない場合、本処理は実行しなくても良い。
機器制御システム1のデータ処理部110は、ステップS1108において、1ライン分の処理が完了した後、視差画像中に処理すべきラインが残存する場合は、ステップS1102以降の処理を繰り返す。視差画像中に処理すべきラインが残存していない場合は、処理を終了する。
なお、図11に示すフローチャートは一例であり、本フローに限定されない。例えば、順番を変えても同様の結果となる場合はこれらの処理順序は交換可能である。
このように本実施形態によれば、距離画像(視差画像)の生成順序や、データの生成順序がある状況下に於いて、「Vマップ生成部103」、「路面推定部104」をパイプライン処理で高速に生成することができる。特に、「路面推定部104」が処理時間を要する場合、パイプライン処理の実行中に並行して実行することで、待ち時間を有効活用できる。
より詳細には、視差画像のメモリ書き込みとデータ生成をパイプラインで処理する際、着目フレームでのデータAを過去フレームで生成したデータAを生成するために使用するデータBを使って生成し、視差画像が生成された後、着目フレームにおけるデータBを生成し、過去と着目フレームのデータBの差異を、データAを使用するまでに反映する。
着目フレームで各データを生成する場合、あるデータAの生成に必要なデータBが既に生成済みである必要がある。そのため、ここに生成順序の制約が生じるが、過去フレームのデータBを使うのであれば、前記生成順序に関する制約を考慮する必要がない。また、例えば、路面推定を画像下端(近距離)から実施するとしていた場合、視差画像の生成位置の制約が存在するが、この点に関しても、過去フレームの路面情報は推定済みであるため、位置の制約も考慮する必要がない。
また、過去フレームを使った着目フレームにおける各データ生成のみであると、着目フレームで生成されたデータAは過去フレームで生成したデータBを基に生成されているため、真値とならない可能性がある。しかし、各データを使用する時点で、着目フレームにおけるデータ生成が完了している場合を考えると、過去と着目フレームの差異に基づいて補正すれば良いことになる。例えば、Uマップを使用する場合は、このマップは過去フレームで推定された路面情報に基づいて生成されているため、本来推定すべき路面よりも過去の路面が低いと、路面視差がUマップに混入している可能性がある。そこで、Uマップ上で検出処理を実行する場合、Uマップ上の視差の路面からの高さに、前フレームで推定された路面と着目フレームで推定された路面の当該視差値(距離)における差分を加減算して使用する。この補正処理により、過去フレームの路面が低くて路面視差が混入されていたとしても、着目フレームの路面が正しく推定されていることで(高く推定)、Uマップに投票された路面視差をキャンセルすることができる。
すなわち、本実施形態では、着目フレームにおけるデータは、多少不正確であっても処理時間を優先し(過去のフレームのデータを使ってパイプライン処理)、過去のデータを用いて生成しておく(つまり、おおよそ正解していると想定されるデータを作成する)。そして、実際にデータを使用する際に、着目フレームで生成された正しいデータを使って補正することで、前記不正確さを解消する。これにより、視差画像生成とデータ生成を「画像の書き込まれていく位置の制約」や「データの生成順序の制約」を無くした状態で並列実行できるため、画像書き込み時の待ち時間を有効活用することができる。また、正しいデータとの差異を加減するだけであるため、後段の補正も高速に実行可能となる。上記を踏まえると、各データの補正処理に要する計算コスト(時間)は視差画像生成時の待ち時間を有効活用できるように、本時間内で実行できるような軽量なものであることが望ましい。
(第2の実施の形態)
次に、第2の実施の形態について説明する。
第2の実施の形態は、着目フレームにおけるUマップ情報を生成する際に、過去フレームで生成された路面情報を使用する点が、第1の実施の形態と異なる。本実施形態においては、パイプライン処理について、過去フレームの路面情報と着目フレームで生成した路面情報の差異に基づいてUマップを補正するとともに、Uマップを使うタイミング(物体検出時)までに実施するようにしたものである。以下、第2の実施の形態の説明では、第1の実施の形態と同一部分の説明については省略し、第1の実施の形態と異なる箇所について説明する。
図12は、第2の実施の形態に係る機器制御システム1の機能構成の例を示す図である。本実施形態に係る機器制御システム1のデータ処理部110は、Uマップ補正部113を更に含む。
Uマップ補正部113は、視差画像入力部112における視差画像データの書き込みに同期させて、路面推定部104で生成した過去、又は、着目路面を使って、Uマップ生成部105で生成した過去Uマップを補正する。
なお、Uマップ生成部105は、視差画像入力部112における視差画像データの書き込みに同期させて、情報保存部111からの過去Uマップ参照、過去路面を使った過去Uマップ生成、着目路面を使った着目Uマップ生成を所定のタイミングで実行する。
また、情報保存部111は、次フレーム以降で使用するためにVマップ情報、路面情報、Uマップ情報を保存する。
Uマップ補正部113における過去Uマップの補正について、以下において詳述する。
図13は、第2の実施の形態にかかるUマップ補正処理シーケンス例の一例を説明した概要図である。本実施形態では、着目フレームにおけるUマップ情報を生成する際に、過去フレームで生成された路面情報を使用する。通常であれば、Uマップ生成は路面推定完了後に実施可能であるが、本手順に従う場合、着目フレームにおける路面推定の完了を待つ必要がなくなる。しかし、ここで生成されたUマップは、あくまでも過去のフレームで推定された路面を使用しているため、着目フレームに於ける路面とは異なる。従って、パイプライン処理で前記路面情報と並行して生成した着目フレームに於ける路面情報を使って、当該Uマップ情報を補正する必要がある。
本実施形態では、第1の実施の形態と同様の手順に従い、所定範囲に対してUマップを過去路面で生成し(過去Uマップと呼ぶ)、パイプライン処理によって着目フレームにおける当該範囲の路面を推定した後、前記Uマップを補正する。この過去路面に関しては、第1の実施の形態と同様にパイプライン処理をしながら過去Vマップを使って推定してもよいし、過去路面情報を保存しておき、それを参照するようにしても良い。
なお、前記説明では、路面推定後にUマップを生成するという処理順序の制約をなくすことに着目しているが、これに第1の実施の形態を組み合わせて、「Vマップ生成部103」、「路面推定部104」、「Uマップ生成部105」を順不同に実行することも可能である。以降の説明は、路面推定とUマップ生成に着目して説明することとする。
次に、過去Uマップの補正方法について説明する。
図14は、過去Uマップの補正方法について説明する図である。なお、実際には、処理対象内の視差dは多様な値を取る可能性があるため、Uマップに設定した処理対象領域は大まかな位置(大多数の視差が投票される範囲)を設定している。また、これに合わせて、Vマップ上の範囲も設定している。
図14に示すように、第1の実施の形態と同様に所定範囲を「処理対象領域」として設定したと仮定する。この時、本領域内における過去Uマップは、図14に示す通りである。図14に示すように、本過去Uマップにはノイズ視差が存在する。この視差は、例えば、Uマップに混入すべきではない路面視差などを指しており、これは過去Uマップが過去路面を使って生成されていることが起因して発生する。つまり、過去路面は、着目フレームで推定された路面(着目路面と呼ぶ)とは異なり、着目路面よりも低い可能性がある。その場合に、このようにノイズ視差が混入する、または、高すぎる場合には検出すべき物体視差が着目フレームにおけるUマップ(着目Uマップと呼ぶ)に投票されなくなるリスクが発生する。
この時、過去Uマップの補正方法の一例としては、当該領域内に於ける過去路面と着目路面の差分量を過去Uマップの各点(視差が投票された点)に加減算する方法が挙げられる。着目路面は着目フレームにおける正しい路面であるため、過去路面との差分量は過去Uマップへ対する誤差とみなせる。従って、処理対象領域内の路面推定が完了した後に、本補正を実施すれば良い。なお、Vマップで推定された路面はd座標(距離)ごとに路面の高さを保持しているため、過去と着目路面のd座標ごとの差異が、当距離における高さ誤差とみなすことができる。
なお、前記補正方法は、過去路面が着目路面より低く、ノイズ視差が混入した場合には有効であるが、逆のパターンでは使用できない。それは、過去路面が高すぎる場合、高さの低い物体の視差はそもそも過去Uマップに投票されなくなるリスクがある。今、前述した通り、補正は視差が投票された点に対して、差分量を加減するため、投票されない点に対しては救済できない。本問題に対処するために、過去路面を所定量分低いものとしておく方法が挙げられる。その場合、ノイズ視差は多く投票されるリスクがあるが、検出ミスは軽減することができる。投票された状態であれば、補正によって正しい高さに修正されるため、本問題は解消することができる。
Uマップ補正部113は、上記処理を視差画像の書き込みタイミングごとに繰り返し実行することで、補正処理の作動回数分の過去Uマップを生成する。
なお、Uマップ補正部113による補正処理は、パイプライン処理が完了した後に実行しても良い。この時、着目路面は推定完了しているため、パイプライン処理途中のスムージングされていない着目路面で補正するよりも正確な補正が可能となる。例えば、クラスタリング処理で着目Uマップを使用するタイミングで実行するなどが考えられる。
また、情報保存部111は、上記で生成した着目Uマップに関しては、次フレームで使用する可能性があることから、保存しておいてもよい。
上記に従うと、通常は路面を推定した後、Uマップ生成を実行という順序の制約が発生するが、過去路面を使うことで、過去路面を使って過去Uマップを生成した後(過去Uマップ参照と同意)、着目路面を生成し、その着目路面を用いて過去Uマップを補正するというシーケンスで処理できることとなり、路面推定とUマップ生成の順序の制約をなくすことができる。
また、過去路面や過去Uマップは既に生成済みであるため、着目フレーム内のどの位置から視差画像データが書き込まれたとしても、当該領域から補正していけばよいため、視差画像データの書き込み位置の制約もなくすことができる。
図15は、第2の実施の形態に係る機器制御システム1における処理の流れを示すフローチャートである。
図15に示すように、機器制御システム1のデータ処理部110は、視差画像をyライン毎に処理すると仮定し、視差画像の1ラインごとに以降の処理であるステップS2102~S2109を視差画像の縦幅分繰り返し実行する(ステップS2101)。
まず、視差画像入力部112は、視差計算部102で生成した1ライン分の視差画像データのメモリ書き込みを実行する(ステップS2102)。
次に、Uマップ補正部113は、所定ライン分の視差画像データがメモリに書き込まれたかを判断する(ステップS2103)。なお、所定ライン数は任意に決定可能である。例えば、パイプライン処理するデータの特性に合わせて決定するなどが可能である。ここで、Uマップ補正部113は、条件を満たす場合には(ステップS2103のYes)、ステップS2104へ進み、条件を満たさない場合には(ステップS2103のNo)、ステップS2109へ進み、次の1ライン分のロードへ戻る。
条件を満たす場合には(ステップS2103のYes)、Vマップ生成部103は、視差画像データの所定範囲を参照し、視差をVマップへ投票し着目Vマップを生成する(ステップS2104)。
次に、Uマップ生成部105は、ステップS2104における領域と同領域に対し、過去路面に基づいて所定範囲の過去Uマップを生成する(ステップS2105)。なお、ここで生成したUマップは、過去路面を元にしているため過去Uマップとなる。
次に、路面推定部104は、ステップS2104における結果に基づいて、着目フレームにおける着目領域に対する着目路面を推定する(ステップS2106)。
続いて、Uマップ補正部113は、ステップS2106で推定した着目路面を使って、ステップS2105で生成した過去Uマップを補正する(ステップS2107)。この補正済みUマップが、着目フレームにおけるUマップとなる。
続いて、情報保存部111は、ステップS2107で補正したUマップを次のフレーム以降で使用するために保存する(ステップS2108)。
機器制御システム1のデータ処理部110は、ステップS2109において、1ライン分の処理が完了した後、視差画像中に処理すべきラインが残存する場合は、ステップS2102以降の処理を繰り返す。視差画像中に処理すべきラインが残存していない場合は、処理を終了する。
なお、図15に示すフローチャートは一例であり、本フローに限定されない。例えば、順番を変えても同様の結果となる場合はこれらの処理順序は交換可能である。
このように本実施形態によれば、視差画像の生成順序や、データの生成順序がある状況下に於いて、「Vマップ生成部103」、「路面推定部104」、「Uマップ生成部105」をパイプライン処理で高速に生成することができる。
特に、「路面推定部104」、「Uマップ生成部105」が処理時間を要する場合、パイプライン処理の実行中に並行して実行することで、待ち時間を有効活用できる。
(第3の実施の形態)
次に、第3の実施の形態について説明する。
第3の実施の形態は、過去Uマップを使って物体検出し、着目フレームで推定した着目Uマップを使って補正する点が、第1の実施の形態ないし第2の実施の形態と異なる。第1の実施の形態ないし第2の実施の形態は、Vマップ生成、路面推定、Uマップ生成に着目して、作成順序の制約をなくした状態で所定のデータを生成し、それを後段で補正する方法について説明したが、これらに限定されない。パイプライン処理に組み込まれる処理であれば、各処理を組み込むことが可能である。以下、第3の実施の形態の説明では、第1の実施の形態ないし第2の実施の形態と同一部分の説明については省略し、第1の実施の形態ないし第2の実施の形態と異なる箇所について説明する。
第3の実施の形態は、パイプライン処理について、過去フレームのUマップと着目フレームで生成したUマップの差異に基づいて物体検出の結果(検出有無)を修正するとともに、検出物体の情報を使うタイミング(物体棄却時)までに実施する形態である。
データ処理部110は、所定領域に対して、着目フレームにおけるUマップが生成される前に、情報保存部111から過去のUマップを参照し、参照した該Uマップを基に所定の方法で物体検出し、物体検出の処理と並行して着目フレームにおけるUマップを生成する。より詳細には、データ処理部110は、参照したUマップ上の点の集合に対し、視差密度、サイズのいずれか一つ以上が所定の範囲内に存在する場合に、各集合を物体として検出する。
また、データ処理部110は、物体検出の結果を使用する以前に、着目フレームにおけるUマップに基づき物体検出の結果を所定の方法に従って補正する。
本実施形態では、データ処理部110は、例えば、参照した過去Uマップと着目フレームで推定した着目Uマップ間の画素レベルの差分を計算し、差分量が一定以上存在する領域に対して、着目フレームで推定したUマップ上の点集合の密度、サイズを検出基準に基づいて判定し、検出結果の棄却、追加、枠サイズの変更を実施する。例えば、過去Uマップで検出した物体だとしても着目Uマップでは検出サイズに満たないなどの理由により検出対象外となる場合がある。その場合は、本補正処理により、検出物体を棄却することができる。また、その逆も可能であり、過去Uマップではサイズ未達で検出されなかった候補領域に対して、着目Uマップでサイズを満たした場合に検出結果に追加することも可能である。
なお、データ処理部110は、過去Uマップに対して、着目Uマップは車両の移動が発生する可能性があるため、車速などを手がかりに、着目Uマップの位置を過去Uマップに合わせて差分を計算しても良い。データ処理部110は、過去Uマップで検出された枠に対して着目フレームでの視差分布に基づいてサイズを補正することも可能である。
このように本実施形態によれば、第1の実施の形態ないし第2の実施の形態も同時に実行可能である点を加味すると、「Vマップ生成部103」、「路面推定部104」、「Uマップ生成部105」、「クラスタリング部106」をパイプライン処理で高速に実施できるという効果を有する。
(第4の実施の形態)
次に、第4の実施の形態について説明する。
第4の実施の形態は、過去フレームの物体検出情報を使って検出物体のトラッキングを実施し、着目フレームで検出した検出物体を使って補正する点が、第1の実施の形態ないし第3の実施の形態と異なる。第1の実施の形態ないし第2の実施の形態は、Vマップ生成、路面推定、Uマップ生成に着目して、作成順序の制約をなくした状態で所定のデータを生成し、それを後段で補正する方法について説明したが、これらに限定されない。パイプライン処理に組み込まれる処理であれば、各処理を組み込むことが可能である。以下、第4の実施の形態の説明では、第1の実施の形態ないし第3の実施の形態と同一部分の説明については省略し、第1の実施の形態ないし第3の実施の形態と異なる箇所について説明する。
第4の実施の形態は、パイプライン処理について、過去フレームの検出物体情報と着目フレームで生成した検出物体情報の差異に基づいて検出物体のトラッキング判定を修正するとともに、検出物体の棄却情報を使うタイミング(トラッキング時)までに実施する形態である。
本実施形態では、データ処理部110は、例えば、所定領域に対してトラッキング処理する際に、着目フレームでの物体検出の結果を待たずに、情報保存部111から過去の物体検出の結果を参照し、過去フレームでの検出結果に基づいてトラッキング有無を決定する。そして、データ処理部110は、着目フレームでの検出結果が出た後に、同様に検出されていた場合は、該物体は着目フレームでトラッキング対象になったとみなしてトラッキング対象とする。一方で、データ処理部110は、着目フレームで検出されていなければ、着目フレームでロストしたものとみなして、トラッキング対象から除外する。同様に検出されている場合の判定は、例えば、過去の検出枠とそれ以前で検出された枠との重なり率が所定以上であるか否かなどの判定基準を使用する。
そして、データ処理部110は、トラッキングと並行して着目フレームにおける物体検出を実行する。
また、データ処理部110は、トラッキングの結果を使用する以前に、着目フレームにおける物体検出に基づきトラッキングの結果を所定の方法に従って補正する。
このように本実施形態によれば、第1の実施の形態ないし第3の実施の形態も同時に実行可能であるという点を加味すると、「Vマップ生成部103」、「路面推定部104」、「Uマップ生成部105」、「クラスタリング部106」、「トラッキング部108」をパイプライン処理で高速に実施できるという効果を有する。
以上、本発明の実施形態を説明したが、上記実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
また、上述した実施形態の機器制御システム1で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ROM等に予め組み込んで提供するように構成してもよい。