以下、図面を参照しながら、一実施形態に係る車両画像処理装置及び車両画像処理システムを説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行うこととする。
図1は、本実施形態に係る車両画像処理システム1のハードウェア構成を説明するためのブロック図である。この図1に示すように、本実施形態に係る車両画像処理システム1は、車両画像処理装置10と、サーバ20とを備えて構成されている。車両画像処理装置10は、いわゆるドライブレコーダとも呼ばれる装置であり、自動車やバス、トラック等の車両に設置される。但し、車両画像処理装置10は、専用のドライブレコーダで構成せずとも、例えば、スマートフォン等の撮像機能と通信機能を兼ね備えた携帯型情報端末で構成することも可能である。
車両画像処理装置10は、ネットワークを介して、サーバ20に接続される。本実施形態においては、車両画像処理装置10は、車両が移動している間にも随時、サーバ20とデータの送受信ができるように、無線ネットワークを介して、サーバ20に接続される。サーバ20は、企業のデータセンタや管理センタに設置された演算処理能力の高い大型コンピュータであり、車両画像処理装置10から受信した各種データを蓄積するとともに、蓄積されたデータを解析する機能を有している。複数の車両に車両画像処理装置10が設置された場合、サーバ20は、複数の車両画像処理装置10と接続されることとなる。
より具体的には、車両画像処理装置10は、例えば、演算処理部30を備えており、また、この演算処理部30に接続された、撮像装置32と、画像処理部34と、位置測定部36と、角度検出部38と、加速度検出部40と、無線通信部42と、アラート出力部44と、メモリ46とを備えており、さらに、このメモリ46に接続されたインターフェース48を備えている。
演算処理部30は、例えば、CPU(Central Processing Unit)により構成されており、車両画像処理装置10が取得したデータの各種処理を行うとともに、この車両画像処理装置10の全体的な制御を行う。演算処理部30は、例えばメモリ46に格納されているプログラムを読み込んで実行することにより、各種処理や制御を実現する。
撮像装置32は、例えば、動画撮像用のカメラで構成されており、この車両画像処理装置10が設置された車両の前方を、連続的且つ継続的に撮像する。撮像装置32で撮像した車両の前方の画像は、例えば、メモリ46に動画像として格納される。なお、図1においては、撮像装置32は、車両画像処理装置10の構成要素の一部をなしているが、必ずしも、車両画像処理装置10の構成要素でなくてもよい。例えば、運転者が所有するスマートフォン等の携帯型情報端末に備えられたカメラを撮像装置32として車両に設置して、この携帯型情報端末のカメラが撮像した画像を用いることにより、車両画像処理装置10を実現するようにしてもよい。
画像処理部34は、例えば、GPU(Graphics Processing Unit)等の専用プロセッサで構成されており、撮像装置32で撮像された画像に対して各種の処理を行う。画像処理部34が処理をする画像に関するデータは、撮像装置32から直接取得をしてもよいし、或いは、メモリ46に格納された画像に関するデータを間接的に取得するようにしてもよい。なお、専用プロセッサである画像処理部34は、必ずしも必要な処理部ではなく、演算処理装置30によるソフトウェア演算により画像処理を行うようにすれば、この画像処理部34は省略することも可能である。
位置測定部36は、例えば、GPS(Global Positioning System)信号受信装置により構成されており、この車両画像処理装置10が設置された車両の位置を測定して特定する。位置測定部36は、位置測定精度を向上させるために、受信したGPS信号の情報に加えて、加速度検出部40で検出された加速度の情報等を補助的に用いるようにしてもよい。
角度検出部38は、例えば、ジャイロセンサ等により構成されており、この車両画像処理装置10が設置された車両の角度を検出する。加速度検出部40は、例えば、MEMS(Micro Electro Mechanical System)技術を用いた半導体センサにより構成されており、この車両画像処理装置10が設置された車両の加速度を検出する。
無線通信部42は、車両画像処理装置10とサーバ20との間の無線通信を実現するための装置であり、本実施形態においては、例えば、撮像装置32で撮像された車両の前方の画像が、サーバ20に送信され、また、位置測定部36で測定された位置情報、角度検出部38で検出された角度情報、及び、加速度検出部40で検出された加速度情報が、サーバ20に送信される。なお、図1においては、無線通信部42は、車両画像処理装置10の構成要素の一部をなしているが、必ずしも、車両画像処理装置10の構成要素でなくてもよい。例えば、運転者が所有するスマートフォン等の携帯型情報端末に備えられた通信機能を無線通信部42として使用して、画像に関するデータや各種情報をサーバ20に送信することにより、車両画像処理装置10を実現するようにしてもよい。
アラート出力部44は、例えば、スピーカやLED(Light Emitting Diode)により構成されており、本実施形態においては、この車両画像処理装置10が搭載された車両と、前方車両との間の距離が、所定の閾値以下になった場合に、アラートを運転者に出力する機能を有している。具体的には、アラート出力部44がスピーカで構成されている場合には、警告音を鳴らして運転者に注意を喚起し、アラート出力部44がLEDで構成されている場合には、LEDが点滅して運転者に注意を喚起する。
メモリ46は、例えば、ハードディスクドライブやソリッドステートドライブにより構成されており、上述したように、撮像装置32で撮像された車両の前方の画像が格納され、また、演算処理部30で実行される各種のプログラムが格納される。
インターフェース48は、外部記憶装置50に格納されているデータを読み出して、メモリ46に格納するためのインターフェースであり、SD規格、USB規格、ATA規格などに準拠して、メモリ46と外部記憶装置50との間のデータの遣り取りを実現させる。本実施形態においては、例えば、メモリ46に格納されている、撮像装置32で撮像された車両の前方の画像を読み出して、外部記憶装置50に格納することが可能である。
これに対して、サーバ20は、演算処理部60を備えており、また、この演算処理部60に接続された、無線通信部62と、データ記憶部64と、メモリ66と、画像処理部68と、データ加工部70とを備えている。
演算処理部60は、例えば、CPU(Central Processing Unit)により構成されており、サーバ20が取得したデータの各種処理を行うとともに、このサーバ20の全体的な制御を行う。演算処理部60は、例えばメモリ66に格納されているプログラムを読み込んで実行することにより、各種処理や制御を実現する。
無線通信部62は、車両画像処理装置10とサーバ20との間の無線通信を実現するための装置であり、本実施形態においては、例えば、撮像装置32で撮像された車両の前方の画像を、車両画像処理装置10から受信して取得し、また、位置測定部36で測定された位置情報、角度検出部38で検出された角度情報、及び、加速度検出部40で検出された加速度情報を、車両画像処理装置10から受信して取得する。
データ記憶部64は、例えば、大容量ハードディスクドライブにより構成されており、車両画像処理装置10から取得した画像に関するデータが、格納されている。複数の車両画像処理装置10から画像に関するデータを取得するため、本実施形態においては、例えば、1分あたり3コマの静止画を取得して格納することにより、記憶すべきデータ量を削減している。さらに、本実施形態においては、1分あたり3コマの静止画を取得して格納するのは、最初の10分であり、その後の10分は静止画を取得しない。そして、静止画を取得しない10分が経過した後に、再度、1分あたり3コマの静止画を10分間取得して格納し、これを都合3回繰り返す。このため、本実施形態においては、データ記憶部64に、合計90枚の静止画が格納されることとなる。
さらには、サーバ20においては、静止画をデータ記憶部64に格納するのではなく、後述するように、取得した画像データに基づいて演算処理装置30が算出した消失点及びボンネット位置を、データとして格納するようにしてもよい。これにより、さらなるデータ量の削減を図ることができる。
メモリ66は、例えば、ハードディスクドライブやソリッドステートドライブにより構成されており、上述したように、演算処理部60で実行される各種のプログラムが格納される。画像処理部68は、例えば、GPU(Graphics Processing Unit)等の専用プロセッサで構成されており、データ記憶部64に格納されている画像に関するデータに対して各種の処理を行う。データ加工部70は、例えば、コプロセッサにより構成されており、演算処理部60が実行すべきデータ加工の処理を補助する。なお 、専用プロセッサである画像処理部68及びデータ加工部70は、必ずしも必要な処理部ではなく、演算処理装置60によるソフトウェア演算により画像処理やデータ加工処理を行うようにすれば、これら画像処理部68及びデータ加工部70は省略することも可能である。
次に、各種フローチャートに基づいて、本実施形態に係る車両画像処理システム1の処理内容について詳しく説明する。
図2は、本実施形態に係る前方衝突アラート処理の内容を説明するフローチャートを示す図である。この前方衝突アラート処理は、車両画像処理装置10で実行される処理であり、例えば、演算処理部30がメモリ46に格納されている前方衝突アラートプログラムを読み込んで実行することにより実現される処理である。この前方衝突アラート処理が、この車両画像処理システム1で前方衝突警報機能を実現するためのメイン処理となる。
この前方衝突アラート処理においては、まず、車両画像処理装置10が起動される(ステップS10)。例えば、運転者等のユーザが車両画像処理装置10の主電源をオンにすることにより、車両画像処理装置10が起動される。
次に、起動された車両画像処理装置10は、撮像装置32の位置補正が完了しているか否かを判断する(ステップS12)。この撮像装置32の位置補正は、車両画像処理装置10の初期設定であり、運転者等のユーザが車両画像処理装置10を車両に取り付けた際に、或いは、運転者等のユーザが車両画像処理装置10の取り付け位置を変更した際などに、必要となる処理である。撮像装置32の位置補正が完了していない場合(ステップS12:No)には、撮像装置32の位置補正を行う(ステップS14)。
図3は、ステップS14で実行される撮像装置位置補正処理の内容を説明するフローチャートを示す図である。本実施形態においては、この撮像装置位置補正処理は、サーバ20で実行される処理であり、例えば、演算処理部60がメモリ66に格納されている撮像装置位置補正プログラムを読み込んで実行することにより実現される処理である。すなわち、ステップS14では、車両画像処理装置10は、サーバ20に対して、撮像装置位置補正処理の実行を指示し、サーバ20に撮像装置位置補正処理を実行させる。
この撮像装置位置補正処理においては、まず、サーバ20は、該当する車両の車両画像処理装置10における消失点が決まっているか否かを判断する(ステップS30)。消失点が決まっていない場合(ステップS30:No)には、サーバ20は、車両画像処理装置10から取得した車両の前方の画像に基づいて、消失点を算出する処理を実行する(ステップS32)。
図4は、撮像装置32で撮像した車両の前方の画像の一例を示す図であり、消失点P1を例示的に示している。ここで、消失点とは、遠近法における無限遠点であり、撮像装置32で撮像された車両の前方の画像において、1点だけ、定める点である。消失点P1は、一旦定まれば、撮像装置32を動かさない限り固定的なものとなる。
再び、図3に戻り、サーバ20は、消失点が決まっていると判断した場合(ステップS30:Yes)には、ボンネット位置が決まっているかどうかを判断する(ステップS34)。ボンネット位置が決まっていない場合(ステップS34:No)には、サーバ20は、車両画像処理装置10から取得した車両の前方の画像に基づいて、ボンネット位置を算出する処理を実行する(ステップS36)。一方、サーバ20は、ボンネット位置が決まっていると判断した場合(ステップS34:Yes)には、この撮像装置位置補正処理を終了する。
図4に示した車両の前方の画像においては、ボンネット位置B1を例示的に示している。ボンネット位置B1は、車両画像処理装置10が設置された車両における画像上のボンネットの先端位置であり、ボンネット位置B1は、一旦定まれば、撮像装置32を動かさない限り固定的なものとなる。
図5は、図3のステップS32における消失点算出処理の内容を説明するフローチャートを示す図である。本実施形態においては、この消失点算出処理は、サーバ20で実行される処理であり、例えば、演算処理部60がメモリ66に格納されている消失点算出プログラムを読み込んで実行することにより実現される処理である。
この消失点算出処理においては、まず、サーバ20は、車両画像処理装置10から送信された車両の前方の画像に基づいて、路面輝度を算出する(ステップS40)。すなわち、撮像された画像に存在する路面の平均的な輝度を算出する。なお、車両の前方の画像は、車両画像処理装置10から受信したリアルタイムの画像を使用してもよいし、データ記憶部64に格納されている過去の画像を使用してもよい。
次に、サーバ20は、車両の前方の画像から、白線を検出する(ステップS42)。具体的には、ステップS40で算出した路面輝度よりも輝度値が大きく、一定の長さを有する領域を抽出する。
次に、サーバ20は、左右の白線が検知できたか否かを判断する(ステップS44)。左右の白線が検知できていない場合(ステップS44:No)には、上述したステップS40に戻り、別な画像、一般的には、左右の白線が検出できなかった画像よりも後に取得した画像に基づいて、処理をやり直す。
一方、左右の白線が検出できたと判断した場合(ステップS44:Yes)には、サーバ20は、検出できた左右の白線の交点を求めて、この交点を消失点とするとともに、一定数の消失点が算出できているか否かを判断する(ステップS46)。具体的な算出処理としては、例えば、左側白線の上端位置と下端位置を結ぶ直線を延長し、右側白線の上端位置と下端位置を結ぶ直線を延長し、延長した二つの直線が交わる点を消失点とする。一定数の消失点を算出したか否かを判断するのは、消失点算出の誤差を抑制するためであり、通常は、複数回、消失点を算出する。しかしながら、1回の消失点の算出で、誤差が無視できる程度の精度が得られる場合には、必ずしも、複数回、消失点を算出しなくてもよい。
ステップS46において、一定数の消失点が算出されていないと判断した場合(ステップS46:No)には、サーバ20は、上述したステップS40に戻り、次の消失点の算出を開始する。一方、ステップS46において、一定数の消失点が算出されていると判断した場合(ステップS46:Yes)には、サーバ20は、消失点の平均値を算出して、これを決定された消失点とする(ステップS48)。これにより、図3のステップS32における消失点算出処理が終了する。
図6は、図3のステップS36におけるボンネット位置算出処理の内容を説明するフローチャートを示す図である。本実施形態においては、このボンネット位置算出処理は、サーバ20で実行される処理であり、例えば、演算処理部60がメモリ66に格納されているボンネット位置算出プログラムを読み込んで実行することにより実現される処理である。
このボンネット位置算出処理においては、まず、サーバ20は、車両画像処理装置10から取得した車両の前方の画像に基づいて、ボンネットを検出する(ステップS50)。具体的には、例えば、路面輝度よりも輝度値が大きいエッジ領域のうち、一定の長さを有するエッジ領域を抽出する。そして、抽出されたエッジ領域のうち、最も横方向の幅が大きいエッジを、ボンネットの画像上の先端位置として特定する。なお、車両の前方の画像は、消失点算出処理(ステップS32)と同様に、車両画像処理装置10から受信したリアルタイムの画像を使用してもよいし、データ記憶部64に格納されている過去の画像を使用してもよい。
次に、サーバ20は、ステップS50でボンネット位置が検出できたか否かを判断する(ステップS52)。ボンネット位置が検出できていない場合(ステップS52:No)には、上述したステップS50に戻り、別な画像、一般的には、ボンネットが検出できなかった画像よりも後に取得した画像に基づいて、処理をやり直す。
一方、ボンネット位置が検出できたと判断した場合(ステップS52:Yes)には、サーバ20は、一定数のボンネット位置を算出したか否かを判断する(ステップS54)。一定数のボンネット位置を算出したか否かを判断するのは、車両の揺れや走行状況のよって画像上のボンネット位置に関して誤差が出る可能性があるので、この誤差を抑制するためであり、通常は、複数回、ボンネット位置を算出する。しかしながら、1回のボンネット位置の算出で、誤差が無視できる程度の精度が得られる場合には、必ずしも、複数回、ボンネット位置を算出しなくてもよい。
ステップS54において、一定数のボンネット位置が算出されていないと判断した場合(ステップS54:No)には、サーバ20は、上述したステップS50に戻り、次のボンネット位置の算出を開始する。一方、ステップS54において、一定数のボンネット位置が算出されていると判断した場合(ステップS54:Yes)には、サーバ20は、ボンネット位置の平均値を算出して、これを決定されたボンネット位置とする(ステップS56)。ボンネット位置の平均を算出する手法は、単純に算術的に平均値を導出するやり方でも良いが、特に、本実施形態においては、ボンネット位置が設定され得る画像上の領域を予め複数の領域に区切っておき、この予め区切った複数の領域のうち、ボンネット位置が最も高い頻度で位置した領域に含まれるボンネット位置の平均値を導出する。これにより、図3のステップS36におけるボンネット位置算出処理が終了する。
再び、図2に戻り、ステップS14の撮像装置位置補正処理が終了した場合、及び、ステップS12において撮像装置の位置補正が完了していると判断した場合(ステップS12:Yes)には、撮像装置32で撮像した車両の前方の画像に基づいて、前方車両との距離を算出する(ステップS16)。
図7は、ステップS16で実行される距離算出処理を説明するためのフローチャートを示す図である。本実施形態においては、この距離算出処理は、車両画像処理装置10で実行される処理であり、例えば、演算処理部30がメモリ46に格納されている距離算出プログラムを読み込んで実行することにより実現される処理である。
この図7に示すように、この距離算出処理においては、車両画像処理装置10は、撮像装置32で撮像した車両の前方の画像における、一部の領域である画像検出領域を算出する(ステップS60)。本実施形態においては、車両画像処理装置10が画像処理の対象とする領域を、消失点とボンネット位置に基づいて、撮像した画像の一部の領域に絞ることにより、車両画像処理装置10における画像処理に要する演算処理負荷を軽減している。図4の画像の例を参照すると、消失点P1よりも下方で、且つ、ボンネット位置B1よりも上方にある、画像上の矩形状の領域を、画像検出領域R1と定めている。遠近法の関係から、本実施形態においては、画像検出領域R1は、消失点P1とボンネット位置B1との間の台形の領域である。
図8は、ステップS60で実行される画像検出領域算出処理の内容を説明するフローチャートを示す図である。本実施形態においては、この画像検出領域算出処理は、車両画像処理装置10で実行される処理であり、例えば、演算処理部30がメモリ46に格納されている画像検出領域算出プログラムを読み込んで実行することにより実現される処理である。
この図8に示すように、画像検出領域算出処理においては、まず、車両画像処理装置10は、撮像装置32で撮像した画像の輝度に関するヒストグラム積算値を算出し(ステップS80)、算出したヒストグラム積算値に基づいて、撮像した画像が逆光であるか否かを判定する(ステップS82)。具体的には、撮像した画像の輝度に関するヒストグラム積算値が、中央に偏っているのか、それとも、両端に偏っているのかで、逆光か否かを判定する。例えば、低輝度側の逆光判定閾値ThAとし、高輝度側の逆光判定閾値ThBとし、ヒストグラム積算値が10%を超えた際の輝度値Aを算出し、ヒストグラム積算値が90%を超えた場合の輝度値Bを算出する。そして、輝度値Aが逆光判定閾値ThAより小さく、且つ、輝度値Bが逆光判定閾値ThBより大きい場合、逆光と判定する。
次に、車両画像処理装置10は、画像検出領域を算出する(ステップS84)。例えば、本実施形態においては、予め画像検出領域が初期設定で用意されており、この初期設定の画像検出領域に対して、撮像装置32に関するオフセット情報(チルトオフセット情報、パンオフセット情報、設置高オフセット情報、逆光の場合は逆光オフセット情報)を加算して、画像検出領域を算出する。これにより、車両の前方の画像の一部の領域に、画像検出領域が設定され、画像検出領域算出処理が終了する。チルトオフセット情報、逆光オフセット情報で検出領域を上下にずらし、パンオフセット情報で検出領域を左右にずらし、設置高オフセット情報で検出領域の高さをずらす。
再び図7に戻り、ステップS60の画像検出領域算出処理が終了した後、車両画像処理装置10は、車両の前方の画像における画像平均輝度値を算出する(ステップS62)。すなわち、車両画像処理装置10は、撮像した画像の輝度信号に基づいて、画像平均輝度値を算出する。
次に、車両画像処理装置10は、算出した画像平均輝度値に基づいて、前方車両の検出モードを決定する(ステップS64)。具体的には、画像平均輝度値と、昼間と判定する輝度閾値と、夜間と判定する輝度閾値とに基づいて、検出モードを決定する。例えば、昼間の輝度閾値を90とし、夜間の輝度閾値を40とした場合、画像平均輝度値が40以下の場合は夜間と判定し、画像平均輝度値が90以上の場合は昼間と判定する。また、画像平均輝度値が40より大きく、90より小さい場合は、昼間でも夜間でもない、その他と判定する。
このステップS64で、撮像した画像は昼間のものであると判定した場合は、昼間のモードで、前方車両の画像上の位置を算出する(ステップS66)。一方、ステップS64で、撮像した画像は夜間のものであると判定した場合は、夜間のモードで、前方車両の画像上の位置を算出する(ステップS68)。さらに、ステップS64で、撮像した画像は昼間のものでも夜間のものでもない、その他のものであると判定した場合には、昼間のモードで、前方車両の画像上の位置を算出(ステップS70)するとともに、夜間のモードでも、前方車両の画像上の位置を算出(ステップS72)し、算出された両方の前方車両の画像上の位置を合成することにより、前方車両の画像上の位置を決定する(ステップS74)。
例えば、ステップS74においては、ステップS70で算出した昼間の前方車両の位置と、ステップS72で算出した夜間の前方車両の位置との平均を算出して、画像上の前方車両の位置とすることができる。或いは、ステップS62で算出した画像平均輝度値に基づいて、所定の閾値以上の明るい画像であるのか、それとも、所定の閾値以下の暗い画像であるのかを判断し、所定の閾値以上の明るい画像である場合には、ステップS70で算出した昼間の前方車両の位置に大きな比重を置いて画像上の前方車両の位置を算出し、逆に、所定の閾値以下の暗い画像である場合には、ステップS72で算出した夜間の前方車両の位置に大きな比重を置いて画像上の前方車両の位置を算出することもできる。
そして、車両画像処理装置10は、これらステップS66、ステップS68、又は、ステップS74で算出した前方車両の画像上の位置に基づいて、この車両画像処理装置10が設置された車両と、その前方を走る前方車両との間の距離を算出する(ステップS76)。これにより、図7の距離算出処理が終了する。
図9は、図7のステップS66及びステップS70で実行される、昼間の前方車両位置算出処理を説明するためのフローチャートを示す図である。本実施形態においては、この昼間の前方車両位置算出処理は、車両画像処理装置10で実行される処理であり、例えば、演算処理部30がメモリ46に格納されている昼間の前方車両位置算出プログラムを読み込んで実行することにより実現される処理である。
この図9に示すように、昼間の前方車両位置算出処理においては、まず、車両画像処理装置10は、車両の前方の画像における路面輝度値を算出する(ステップS90)。本実施形態においては、例えば、画像検出領域の直下に設定される矩形領域の平均輝度値を算出して、これを路面輝度値とする。
図10(a)は、車両の前方の画像における、画像検出領域R1と、平均輝度値を算出する矩形領域K1の一例を示す図である。画像検出領域R1の直下の領域は、通常、路面であることから、本実施形態においては、この画像検出領域R1の直下の領域を矩形状に切り出して、平均輝度値を算出して、これを路面輝度値としている。
再び図9に戻り、次に、車両画像処理装置10は、影領域の輪郭を抽出する(ステップS92)。本実施形態においては、「影マップ」、「幅広影マップ」、及び、「輪郭マップ」の3つを生成し、この3つのマップを合成して、影領域の輪郭を決定する。「影マップ」は、画像検出領域内で路面輝度値より輝度値が低く、一定の長さを持つ影を切り出したマップであり、「幅広影マップ」は、画像検出領域より幅が大きい幅広影領域内で路面輝度値より輝度値が低く、一定の長さを持つ影を切り出したマップであり、「輪郭マップ」は、検出領域内のエッジ領域を切り出したマップである。
図10(b)は、車両の前方の画像から抽出された影領域の輪郭の一例を示す図である。この図10(b)から分かるように、ステップS92では、画像検出領域R1に含まれる影領域の輪郭E1を抽出する。
再び図9に戻り、ステップS92の影領域の輪郭の抽出と並行して、車両画像処理装置10は、テールランプを検出する処理を行う(ステップS94)。本実施形態においては、画像検出領域の色差信号Uを切り出した色差Uマップと、画像検出領域の色差信号Vを切り出した色差Vマップを生成し、これら色差Uマップと色差Vマップにおいて、閾値以上の色差値を持つ画素数を算出する。そして、算出された画素数が閾値以上の場合、テールランプと判定する。
次に、車両画像処理装置10は、ステップS92及びステップS94の結果に基づいて、前方車両の画像上の位置を算出する(ステップS96)。抽出された影領域の輪郭をどのように用いて、前方車両の画像上の位置とするかは、任意であるが、例えば、本実施形態においては、抽出された影領域の輪郭の下端位置を、画像上の前方車両の位置としている。図10(b)の例においては、影領域の輪郭E1の下端位置を、画像上の前方車両の位置L1としている。これにより、車両が黒い場合で、車両と影の境目が画像上識別できないような場合でも、画像上の前方車両の位置L1を特定できるとともに、想定される最も近い位置を前方車両の位置L1とするので、運転者にアラートを出力するタイミングが遅れるのを回避することができる。
但し、抽出された影領域の輪郭と前方車両の位置との関係はこれに限られるものではなく、例えば、影領域の輪郭やテールランプの位置などを総合的に判断して、前方車両のより正確な位置を特定して、これを画像上の前方車両の位置とするようにしてもよい。なお、本実施形態においては、ステップS94の処理で、影領域の輪郭の周囲にあるべきテールランプが検出されていないような場合には、前方に車両は存在しないと判定することとしている。これにより、街路樹やビルなどの影を前方車両であると誤検知してしまう可能性を低減している。このステップS96により昼間の前方車両位置算出処理が終了する。
図11は、図7のステップS68及びステップS72で実行される、夜間の前方車両位置算出処理を説明するためのフローチャートを示す図である。本実施形態においては、この夜間の前方車両位置算出処理は、車両画像処理装置10で実行される処理であり、例えば、演算処理部30がメモリ46に格納されている夜間の前方車両位置算出プログラムを読み込んで実行することにより実現される処理である。
この図11に示すように、夜間の前方車両位置算出処理においては、まず、車両画像処理装置10は、車両の前方の画像内のテールランプを検出する(ステップS100)。本実施形態においては、例えば、画像検出領域の輝度マップを生成し、輝度マップと、入力画像の色差V信号から、輝度が高く、且つ、赤色のレベルが高い領域を抽出する。そして、抽出された領域の最も下端の位置にオフセットを追加した位置を、画像上の前方車両の位置として算出する。なお、必要な精度が得られるのであれば、このオフセットは必ずしも追加する必要はなく、抽出された領域の最も下端を、画像上の前方車両の位置として算出しても良い。
図12は、このステップS100におけるテールランプ検出の処理を、車両の前方の画像の一例を用いて説明する図である。まず、図12(a)に示すように、画像検出領域R1の領域のうち、輝度が高い領域を抽出する。そして、図12(b)に示すように、抽出された輝度が高い領域のうち、赤色成分が高い領域をテールランプと判定する。続いて、図12(c)に示すように、テールランプと判定された領域のうち、最も下端の位置にオフセットを追加した位置を、前方車両の位置L1として算出する。
再び図11に戻り、車両画像処理装置10は、テールランプの検出処理と並行して、車両の前方の画像のハイライト割合を算出する(ステップS102)。すなわち、画像検出領域についての輝度マップを生成し、この輝度マップから所定の閾値以上の輝度を持つハイライトマップ生成する。そして、このハイライトマップに基づいて、ハイライト領域の割合を算出する。これは、夜間であると、自らの車両からのヘッドライトが前方車両の後方に当たって反射し、画像が白っぽくなってしまう、いわゆるハレーションを起こすことがある。このため、ヘッドライトが当たって反射しているハイライト領域が、ハイライト領域でない領域よりも大きいということは、当該車両と前方車両との間の距離が短いということを意味している。そこで、本実施形態においては、ヘッドライトが反射しているハイライト領域と、そうでない非ハイライト領域との割合を算出し、割合が大きいほど、当該車両と前方車両との間の距離が短いと判定するのである。但し、その精度が必ずしも高いとは言えないことから、本実施形態では、上述するように、ハイライト割合は、画像上の前方車両の位置を決定する際の補助的な要素として用いている。
また、このステップS102と並行して、車両画像処理装置10は、車両の前方の画像におけるハイライトを検出する(ステップS104)。本実施形態においては、例えば、画像検出領域におけるハイライトマップに基づいて、所定の閾値以上の輝度値を有するハイライト領域を抽出し、抽出されたハイライト領域の最も下端の位置にオフセットを追加した位置を、前方車両の位置として算出する。なお、必要な精度が得られるのであれば、このオフセットは必ずしも追加する必要はなく、抽出されたハイライト領域の最も下端を、画像上の前方車両の位置として算出しても良い。
図13は、ステップS104におけるハイライト検出の処理を、車両の前方の画像の一例を用いて説明する図である。図13(a)において、上述した図12(a)と同じように画像検出領域R1に含まれる輝度値が高い領域を抽出しても、図13(b)に示すように、テールランプが白飛びしており、赤色成分が抽出できないため、テールランプが検出できない。このため、図13(b)では、ヘッドライトが反射しているハイライト領域を抽出し、図13(c)では、この抽出したハイライト領域の最も下端の位置を、前方車両の位置L1として算出する。
再び図11に戻り、次に、車両画像処理装置10は、ステップS100、ステップS102、及び、ステップS104の算出結果に基づいて、前方車両の位置を算出する(ステップS106)。すなわち、ステップS100で算出されたテールランプの最も下端の位置である前方車両の位置と、ステップS104で算出されたハイライトされている領域の最も下端の位置である前方車両の位置と、ステップS102で算出されたハイライト割合の算出結果とを合成し、画像上の前方車両の位置を算出する。
或いは、ハイライト割合に応じて、ステップS100で算出された前方車両の位置とステップS104で算出された前方車両の位置とに対する重み付けを、変更するようにしてもよい。例えば、ハイライト割合が所定の値の範囲内と判定できる場合には、ステップS100で算出された前方車両の位置とステップS104で算出された前方車両の位置とのちょうど中間の位置を、ステップS106における前方車両の位置として算出する。また、例えば、ハイライト割合が所定の閾値より小さいと判定できる場合には、ヘッドライトがあまり前方車両に反射していないと想定できるので、ステップS104で算出された前方車両の位置よりも、ステップS100で算出された前方車両の位置に高い比重を置いて、ステップS106における前方車両の位置を算出する。逆に、ハイライト割合が所定の閾値より大きい判定できる場合には、ヘッドライトが前方車両に強く反射していると想定できるので、ステップS100で算出された前方車両の位置よりも、ステップS104で算出された前方車両の位置に高い比重を置いて、ステップS106における前方車両の位置を算出する。このステップS106の処理により、夜間の前方車両位置算出処理が終了する。
図14は、図7のステップS76で実行される前方車両との距離を算出する処理を具体的に説明するための車両の前方の画像の一例を示す図であり、図15は、画像上の前方車両の位置と、車高と、前方車両までの距離との関係を表した距離算出テーブルの一例を示す図である。図15に示す距離算出テーブルは、例えば、車両画像処理装置10のメモリ46に格納されている。
例えば、ステップS66、ステップS68、又は、ステップS74で算出された、画像上の前方車両の位置が300であったと仮定する。すなわち、図14の例では、左上の座標(0,0)を原点としており、画像上の前方車両の位置が、この座標系で(640,300)であったと仮定する。本実施形態においては、前方車両の車高も画像から算出している。この算出した車高が110cmであったと仮定する。これらの条件の場合、図15に示す距離算出テーブルを用いると、当該車両と前方車両との間の距離は、250cmとなる。
再び図2に示すように、ステップS16で前方車両との距離が算出された後、車両画像処理装置10は、当該車両と前方車両との間の距離が、所定の閾値以下であるか否かを判断する(ステップS18)。所定の閾値とは、例えば、200cmや150cmである。また、GPS等の位置測定部36の測定結果に基づいて車速を推定し、或いは、撮像した車両の前方の画像に基づいて車速を推定し、推定した車速に応じて、所定の閾値を変更するようにしてもよい。例えば、時速20km未満である場合は、所定の閾値は200cmであるが、時速20km以上である場合は、所定の閾値を5000cmとするようにしてもよい。
このステップS18において、前方車両までの距離が所定の閾値以下ではないと判断した場合(ステップS18:No)には、上述したステップS16に戻り、当該車両と前方車両との間の距離の算出を繰り返す。
一方、ステップS18において、前方車両までの距離が所定の閾値以下であると判断した場合(ステップS18:Yes)には、車両画像処理装置10は、運転者に前方車両と衝突する可能性があるとしてアラートを出力する(ステップS20)。例えば、車両画像処理装置10は、上述したように、アラート出力部44から警告音を鳴らして注意を喚起したり、LEDを点滅させて注意を喚起したりする。
アラートを出力した後は、上述したステップS16に戻り、前方車両との距離の算出を繰り返す。但し、運転者等のユーザが車両画像処理装置10の電源をオフにした場合や、アラート機能の停止を運転者等のユーザが車両画像処理装置10に入力した場合などは、図2に示す前方衝突アラート処理を終了する(ステップS22)。
図16は、図1に示す車両画像処理装置10の演算処理部30がメモリ46に格納されているプログラムを読み込んで実行することにより実現される機能と、サーバ20の演算処理部60がメモリ66に格納されているプログラムを読み込んで実行することにより実現される機能とをブロックで表して説明する図である。この図16に示すように、本実施形態に係る車両画像処理装置10は、上述したアラート出力部44に加えて、画像前方車両位置算出部100と、距離算出部102と、取得部104と、画像検出領域算出部106と、第1位置算出部108と、第2位置算出部110と、昼夜判定部112と、切り替え部114と、第3位置算出部116とを備えて構成される。また、本実施形態に係るサーバ20は、画像取得部200と、消失点算出部202と、ボンネット位置算出部204が実現される。
この図16において、車両画像処理装置10は、撮像装置で車両の前方を撮像した画像に基づいて、画像上の前方車両の位置を算出する、画像前方車両位置算出部100と、画像前方車両位置算出部100で算出した画像上の前方車両の位置に基づいて、当該車両と前方車両との間の距離を算出する、距離算出部102と、距離算出部102で算出した距離が、閾値以下である場合に、当該車両の運転者にアラートを出力する、アラート出力部44と、を備える。
車両画像処理装置10は、車両の前方の画像に基づいて算出した、画像上の消失点と当該車両のボンネット位置とを取得する、取得部104と、撮像装置で撮像する車両の前方の画像のうち、消失点とボンネット位置より定められた一部の領域を、画像検出領域として算出する、画像検出領域算出部106とを、さらに備えており、画像前方車両位置算出部100は、画像検出領域について画像処理を行うことにより、画像上の前方車両の位置を算出するようにしてもよい。
取得部104は、当該車両画像処理装置10がネットワークを介して接続したサーバ20が、車両の前方の画像に基づいて算出した消失点とボンネット位置を、サーバ20から取得するようにしてもよい。
画像前方車両位置算出部100は、画像検出領域における前方車両の影の位置を特定し、特定された影に基づいて、画像上の前方車両の位置を算出する、第1位置算出部108を備えてもよい。
第1位置算出部108は、前方車両の影における画像上の下端位置を、画像上の前方車両の位置とするようにしてもよい。
第1位置算出部108は、画像上の影の周囲にあるべきテールランプを検出する処理を行い、テールランプが検出されない場合には、前方車両は存在しないと判断するようにしてもよい。
画像前方車両位置算出部100は、画像検出領域における前方車両のテールランプの位置を特定するとともに、当該車両のヘッドライトが前方車両に当たり反射している画像上のハイライト領域を特定し、テールランプの位置と画像上のハイライト領域とに基づいて、画像上の前方車両の位置を算出する、第2位置算出部110をさらに備えるようにしてもよい。
第2位置算出部110は、画像上のハイライト領域と、画像上のハイライト領域ではいない非ハイライト領域との割合に基づいて、テールランプに基づいて算出された画像上の前方車両の位置とハイライト領域に基づいて算出された画像上の前方車両の位置とに対する重み付けを変更するようにしてもよい。
画像前方車両位置算出部100は、画像の輝度に基づいて、撮像した画像が昼間のものであるのか、夜間のものであるのかを判定する、昼夜判定部112と、昼夜判定部112が昼間と判断した場合には、第1位置算出部108により、画像上の前方車両の位置を算出し、昼夜判定部112が夜間と判断した場合には、前記第2位置算出部110により、画像上の前方車両の位置を算出するように、切り替えを行う、切り替え部114と、をさらに備えるようにしてもよい。
画像前方車両位置算出部100は、昼夜判定部112が、昼間でも夜間でもないと判定した場合には、第1位置算出部108により算出した画像上の前方車両の位置と、第2位置算出部110により算出した画像上の前方車両の位置とを合成して、画像上の前方車両の位置を算出する、第3位置算出部116をさらに備えるようにしてもよい。
また、車両画像処理システム1は、少なくとも1つの車両画像処理装置10と、車両画像処理装置10がネットワークを介して接続するサーバ20とを備えている。サーバ20は、撮像装置で撮像された、車両の前方の画像を取得する、画像取得部200と、画像取得部200で取得した車両の前方の画像に基づいて、消失点を算出する、消失点算出部202と、画像取得部200で取得した車両の前方の画像に基づいて、車両のボンネット位置を算出する、ボンネット位置算出部204と、を備えている。車両画像処理装置10は、サーバ20から、サーバ20が算出した消失点とボンネット位置とを取得する、取得部104と、撮像装置で撮像された車両の前方の画像のうち、消失点とボンネット位置より定められた一部の領域を、画像検出領域として算出する、画像検出領域算出部106と、撮像装置された車両の前方の画像における画像検出領域について画像処理を行うことにより、画像上の前方車両の位置を算出する、画像前方車両位置算出部100と、画像前方車両位置算出部100で算出した画像上の前方車両の位置に基づいて、当該車両と前方車両との間の距離を算出する、距離算出部102と、距離算出部102で算出した距離が、閾値以下である場合に、車両の運転者にアラートを出力する、アラート出力部44と、を備える。
以上のように、本実施形態に係る車両画像処理システム1によれば、撮像装置32で撮像した車両の前方の画像に基づいて、画像上の前方車両の位置を算出し、この算出された画像上の前方車両の位置に基づいて、当該車両と前方車両との間の距離を算出することとした。このため、車両画像処理装置10を車両に設置する際に、運転者等のユーザは特別な設定を行うことなく、車両画像処理装置10の使用を開始することができる。このため、運転者等のユーザの利便性を向上させることができる。
また、画像上の消失点と、車両のボンネット位置とに基づいて、画像検出領域を設定し、この画像検出領域について画像処理を行うことにより、画像上の前方車両の位置を算出することした。このように画像処理の対象となる領域を、画像の一部に限定したことにより、車両画像処理装置10の演算処理負荷を軽減することができる。このため、高い演算処理能力を備えた車両画像処理装置10でなくとも、本実施形態に係る前方衝突アラート処理を実行させることができる。
さらに、車両画像処理装置10は、撮像した車両の前方の画像をサーバ20にネットワークを介して送信し、サーバ20は、サーバ20が取得した画像に基づいて、消失点とボンネット位置を算出することとした。このように、消失点とボンネット位置の算出をサーバ20に行わせるようにしたことによっても、車両画像処理装置10の演算処理負荷を軽減することができる。すなわち、車両画像処理装置10は、サーバ20に撮像した車両の画像を送信し、サーバ20が算出した消失点とボンネット位置とを取得することにより、自ら、消失点やボンネット位置の算出を行う必要がなくなる。
また、本実施形態に係る車両画像処理システム1によれば、車両画像処理装置10は、撮像された車両の前方の画像が昼間の画像である場合には、画像の前方車両の影に基づいて、画像上の前方車両の位置を算出することとした。このように前方車両の影を前方車両の特定のために用いることにより、車両の形が定義された大きなデータ量の辞書を用意する必要がなくなるとともに、撮像された画像を辞書に登録された車両の形とパターンマッチングする必要がなくなり、演算処理負荷のさらなる低減を図ることができる。
一方、撮像された車両の前方の画像が夜間の画像である場合には、前方車両のテールランプの位置と、前方車両にヘッドライトが当たって反射したハイライト領域の位置に基づいて、画像上の前方車両の位置を算出することとした。このため、昼間の画像のみならず、夜間の画像についても、高い精度で、画像上の前方車両の位置を特定し、前方車両との距離を算出することができる。
以上、いくつかの実施形態を説明したが、これらの実施形態は、例としてのみ提示したものであり、発明の範囲を限定することを意図したものではない。本明細書で説明した新規な装置および方法は、その他の様々な形態で実施することができる。また、本明細書で説明した装置および方法の形態に対し、発明の要旨を逸脱しない範囲内で、種々の省略、置換、変更を行うことができる。添付の特許請求の範囲およびこれに均等な範囲は、発明の範囲や要旨に含まれるこのような形態や変形例を含むように意図されている。
例えば、上述した実施形態においては、図3の撮像装置位置補正処理、図5の消失点算出処理、及び、図6のボンネット位置算出処理は、サーバ20で実行することで、車両画像処理装置10の演算処理能力が高くなくとも、図2の前方衝突アラート処理が実現できるようにしたが、車両画像処理装置10が相応の演算処理能力を有する場合には、図3の撮像装置位置補正処理、図5の消失点算出処理、及び、図6のボンネット位置算出処理を、車両画像処理装置10で実行するようにしてもよい。この場合、車両画像処理装置10は、画像上の消失点と車両のボンネット位置とを自ら算出して取得することとなる。
或いは、撮像装置32で撮像した車両の前方の画像を、メモリ46から外部記憶装置50に複製して格納し、運転者等が所有する別のコンピュータに、この外部記憶装置50に格納された画像を読み込ませ、上述した図3の撮像装置位置補正処理、図5の消失点算出処理、及び、図6のボンネット位置算出処理を別のコンピュータに実行させることにより、消失点とボンネット位置を算出させるようにしてもよい。この場合、算出された消失点とボンネット位置を別のコンピュータから外部記憶装置50に格納し、これを外部記憶装置50を介して車両画像処理装置10に読み込ませることにより、車両画像処理装置10は、消失点とボンネット位置を取得することが可能となる。
さらには、上述した実施形態においては、アラート出力部44は運転者に注意を喚起するアラートを出力することとしたが、車両が自動化された無人運転である場合も想定されるため、このような場合には、アラート出力部44は車両自体に、具体的には、無人運転の制御機構に、アラートを信号として出力するようにしてもよい。