以下、添付図面を参照して、本発明を実施するための形態(以下、本実施形態という)について詳細に説明する。
なお、本実施形態の説明の全体を通して同じ要素には同じ番号を付している。
(実施形態の構成)
図1に、本実施形態に係る車両検出システム1の構成を示す。図1に示すように、本実施形態に係る車両検出システム1は、路上に設置した撮像装置10と、撮像装置10とはWeb(World Wide Web)30経由で接続される1以上の車両検出装置20(サーバ)で構成される。
撮像装置10は、路上に設置され、道路上を走行する車両を俯瞰した動画像を撮影する、所謂、Webカメラであり、撮影された動画像は、車両検出装置20に接続される画像表示装置21にリアルタイムに表示される。
車両検出装置20は、車線毎に車両を検出するサーバである。具体的に、車両検出装置20は、(1)車線毎に設定される一監視エリアに係る車線情報を生成し、(2)車線内における交通状況の撮影画像を取得し、(3)撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、(4)撮影画像と背景画像のそれぞれの垂直成分のエッジ画像を生成し、エッジ画像の差分画像を二値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成し、(5)監視エリア毎に車両抽出画像を出力し、(6)車両抽出画像から、設定される車幅閾値と車高閾値とにより1台毎の車両を抽出する。各手順の詳細はいずれも後述する。
また、車両検出装置20は、車両検出パラメータに基づき車線毎に車両を検出する。具体的に、車両検出装置20は、(1)車線毎に設定される一監視エリアに係る車線情報を生成し、(2)交通状況の撮影画像を取得し、(3)撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、(4)監視エリア毎に生成された指定方向画像をラベリングして車両が存在する候補領域を抽出し、(5)候補領域を白と黒のクラスタに分類して白黒判定を行ない、(6)撮影画像およびその背景画像の垂直成分のエッジ画像を生成し、その差分エッジ画像から線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成して車両検出の可否を判定し、車両検出不可と判定された候補領域に対して白判定された領域を抽出してラベリングによる車両検出の可否を判定し、(7)車両検出の可否の割合に基づき車両検出環境の明暗判定を行ない、その判定結果に基づき車両検出パラメータの設定変更を行なう。各手順の詳細はいずれも後述する。
なお、画像表示装置21として、LCD(Liquid Crystal Display Device)や有機EL(Organic Electro-Luminescence)等の表示デバイスが実装され、撮像装置10により撮影される交通状況のリアルタイム映像の他、装置本体20aにより生成される各種処理データが表示される。
(実施例1)
図2に、実施例1に係る車両検出装置20の内部構成が示されている。図2に示すように、実施例1に係る車両検出装置20は、少なくとも、装置本体20aと、画像表示装置21と、記憶装置22とを含み構成される。他に、図示省略したキーボードやマウス等の操作装置を含んでもよい。
なお、記憶装置22には、SRAMやDRAM等の半導体記憶素子、あるいはHD等の大容量の磁気記憶素子が実装されており、装置本体20aが実行するプログラムが格納されるプログラム領域の他に、設定ファイル221、距離テーブル222が所定の領域に割り当てられ記憶される。
この設定ファイル221と距離テーブル222の詳細は後述する。また、記憶装置22には図示省略した作業領域も割り当てられており、この作業領域にはプログラム実行途中で生成される各種データが記憶される。
装置本体20aは、ハードウエア的には図示省略したCPUとプログラムメモリとから構成される。装置本体20aは、CPUがプログラムメモリに格納されたプログラムを逐次読み出し実行することにより、上記した車両検出装置20としての機能を実現する。このため、CPUが実行するプログラムの構造は、画像取得部201と、車線情報生成部202と、指定方向画像生成部203と、特徴画像生成部204と、候補領域抽出部205と、車両検出前処理部206と、収縮処理部207と、移動体画像生成部208の、複数のモジュールに展開して示すこことができる。また、後述するように、車両の検出結果を用いてその車両の走行速度を算出する走行速度算出部209を備えてもよい。
画像取得部201は、車線内における交通状況の撮影画像を取得する画像取得手段として機能する。車線情報生成部202は、車線毎に設定される一監視エリアに係る車線情報を生成する車線情報生成手段として機能する。指定方向画像生成部203は、撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成する指定方向画像生成手段として機能する。指定方向画像生成部203は、収縮処理部207によって複数回実行される指定方向画像の収縮処理結果を特徴画像生成部204へ出力してもよい。なお、指定方向画像の収縮処理は、収縮処理部207が実行する。
特徴画像生成部204は、撮影画像と背景画像のそれぞれの垂直成分のエッジ画像を生成し、エッジ画像の差分画像を二値化後、垂直な線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成する特徴画像生成手段として機能する。候補領域抽出部205は、監視エリア毎に車両抽出画像を出力する車両候補領域抽出手段として機能する。車両検出前処理部206は、車両抽出画像から、設定される車幅閾値と車高閾値とにより1台毎の車両を抽出する車両抽出ラベル情報を出力して車両を検出する車両検出処理手段として機能する。
移動体画像生成部208は、撮影画像と背景画像から背景差分とフレーム差分とを求め、それぞれの差分の論理積演算により移動体部分を抽出して特徴画像生成部204へ出力する動体画像生成手段として機能する。走行速度算出部209は、記憶装置22の所定の領域に設定される距離テーブル222を参照して抽出された車両の速度検出を行う。詳細は後述する。
(実施例1の動作)
以下、図3のフローチャートを参照しながら実施例1の車両検出装置20の動作について詳細に説明する。
実施例1の車両検出装置20は、図3のフローチャートに示すように、装置本体20aが、内蔵する、あるいは記憶装置22のプログラム領域に格納されたプログラムを逐次読み出し実行することにより、撮影画像から簡単で精度良く1台ずつ車両検出を行う処理を実行する。すなわち、装置本体20aは、インスタンスの生成や変数の初期化を行ない(ステップS101)、車線毎に設定される一つの監視エリアに係る車線情報を生成し(ステップS102)、交通状況の撮影画像を取得する(ステップS103)。
続いて、撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し(ステップS104)する。そして、撮影画像と背景画像のそれぞれの垂直成分のエッジ画像を生成し、エッジ画像の差分画像を二値化後、垂直な線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成し(ステップS106)、監視エリア毎に車両抽出画像を出力する(ステップS107)。最後に、車両抽出画像から、設定される車幅閾値と車高閾値とにより1台毎の車両を抽出する車両抽出ラベル情報を出力し(ステップS108)、車両抽出ラベル情報から車両を検出する(ステップS109)。
なお、上記したステップS107〜S109の一連の処理は、初期設定される一つの監視エリア毎に繰り返し実行される。すなわち、ステップS109で最初に設定された監視エリアnの車両検出(判定処理)が行われると、装置本体20aは、変数nを+1更新してステップS107車両抽出画像生成処理に戻り(ステップS110)、一連の処理を繰り返し実行し(S107〜S109)、ステップS111で先に設定された全ての監視エリアの車両検出が行われた後、終了処理を実行する(ステップS112)。ここでいう終了処理とは、後述する車両速度検出処理を含む結果を画像表示装置21に表示する処理等をいう。
なお、上記の車両検出処理(ステップS103〜S109)のうち、ステップS104の指定方向画像生成処理において、精度向上のために、指定方向画像の収縮処理を複数回実行した後、ステップS105の移動体画像生成処理を実行してもよい。また、撮影画像と背景画像から背景差分とフレーム差分とを求め、それぞれの差分の論理積演算により移動体部分を抽出してステップS105の移動体画像生成処理を実行してもよい。いずれも詳細は後述する。
以下、初期化以降の手順毎に詳細手順の説明を行う。まず、車線情報生成処理(ステツプS102)から説明する。車線情報生成部202は、車線毎に設定される一監視エリアに係る車線情報を生成する(ステップS102)。つまり、車線情報生成部202は、記憶装置22の所定の領域に予め設定され記憶されてある設定ファイル221を読み込んで、設定情報を取得し、装置本体20a各部に設定する。
ここで、設定情報の中には、車線毎に設定される監視エリア情報が含まれる。ここでは、起動時にマウス等の操作装置によりクリックされることにより定義される、エリア上端とエリア下端の値が設定されるものとする。なお、エリア上端は、車両の重なりが目立たない範囲で設定されるものとし、エリア下端は、車両の全体像が見えるような範囲とすることが好ましい。例えば、図4(a)の撮影画像に示されるように、画像の奥の方で車両の見え方が小さい、あるいは、図4(b)の撮影画像に示されるように、画像の奥の方で殆どの車両が重なってしまうような範囲までの監視エリアの設定は回避することが望ましい。
車線情報生成部202は、設定ファイル221から監視エリア毎に設定された座標数および座標を入力として得、候補領域抽出部205に対して車線情報構造体を出力する。後述するように候補領域抽出部205は、監視エリアの座標情報を用いて、そのエリア内を塗り潰した画像を生成する。この塗り潰し画像を用いて、y座標毎にエリアの左端座標、右端座標、エリア幅の情報を取得する。監視エリアが存在しないy座標には初期値0が入る。
次に、画像取得部201は、撮像装置10からWeb30経由で受信される、設定された車線内の撮影画像を取得して指定方向画像生成部203へ出力する(ステップS103)。
そして、指定方向画像生成部203は、撮影画像に基づき前記監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成する(ステップS104)。つまり、指定方向画像生成部203は、オプティカルフローを使って、指定した方向に移動する車両のみを抽出した指定方向画像を生成する。ここで指定方向画像のみ抽出するのは、対向車線を走る車両との重なり分離が可能で、かつ、対向車線を走行する車両の影や映り込みの侵入との分離や除外を可能にし、更には、日照変化等の画面に与える影響を受けにくいことにある。
図5(a)(b)(c)に、入力画像とオプティカルフローによる指定方向画像とを対応付けて示してある。図5(a)において、記号Aを付した領域は、指定方向±45°以内のオプティカルフローを検出した画素群であり、記号Bを付して示した領域は、指定方向の逆方向のオプティカルフローを検出した画素群である。
図5(a)に示す例は、対向車線を走る車両との重なりが分離されており、図5(b)に示す例は、映り込み(影)が逆方向にあるため検出対象から除外されており、また、図5(c)に示す例は、対向車両の映り込みの影響を受けないため、検出対象の車両のオプティカルフローの抽出が容易であることを示している。なお、いずれも記号Bを付した領域は、指定方向から逆方向のオプティカルフローを示す。
指定方向画像生成部203は、現在画像と過去画像とを入力として得、2値の指定方向画像を特徴画像生成部204へ出力する。具体的に、指定方向画像生成部203は、オプティカルフローを算出して連続する画像から物体の動きをベクトルで表現する。
指定方向画像生成部203は、現在画像と過去画像とが入力されると画素毎にフローベクトル(x方向、y方向の移動画素数)を算出する。そして、画素毎にフローベクトルの向き(角度)と強度(速度)を算出して指定方向画像(2値)を作成する。続いて候補領域抽出部205は、画素毎にフローベクトルの向き(角度)が“指定方向±マージン”の範囲内かつ強度(速度)が速度の閾値以上かを判定する。
このとき、指定方向画像生成部203は、収縮処理部207を制御して指定方向画像を数回収縮処理してもよい。これは、オプティカルフロー算出で、一定の窓サイズ領域内は同じようなフローベクトルに丸め込む処理を行っているため、指定方向画像が実際の車両の大きさよりも膨らんでいる傾向にあるためであり、収縮処理部207により、数回収縮処理を施すことにより指定方向画像の精度向上がはかれる。
次に、移動体画像生成部208は、撮影画像と背景画像から背景差分とフレーム差分とを求め、前記それぞれの差分の論理積演算により動体部分を抽出して特徴画像生成部204へ出力する(ステップS105)。これは、画像上の車両の存在位置を絞り込むために行われる。上記したように指定方向画像では膨らむ傾向にあり、このため、画像上では重なっていない車両同士でも接触した形になりやすい。このような場合、移動体画像との論理積演算を行うことで解消することができる。
図6(a)に、入力画像と、指定方向画像と、移動体画像のそれぞれが示されている。図中、楕円枠で囲まれた領域がその対象領域であり、指定方向画像では接触しているが、移動体画像では分かれていることが視認できる。日照変化等で動体画像の全体が差分になるような場合、逆に指定方向画像はあまり影響を受けないため補完する側にまわる。このことは、図6(b)に示されている。
移動体画像生成部208は、図6(a)(b)に示すように、単純に背景差分とフレーム間差分とを論理積演算することにより移動体画像を生成している。移動体画像の精度が良いほど、車両抽出の精度も向上する。
次に、特徴画像生成部204は、撮影画像と背景画像のそれぞれの垂直成分のエッジ画像を生成し、エッジ画像の差分画像を二値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成する(ステップS106)。すなわち、候補領域抽出部205で、ある程度検出したい車両の位置がわかるため、その中から、如何に車両だけを抽出するかを考えた時に、車両の特徴として、両端に垂直エッジが発生することに着目した。特徴画像生成部204は、撮影画像と背景画像とを入力とし、それぞれの垂直成分のエッジ画像を生成後、ハフ変換により垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した画像を生成して候補領域抽出部205へ2値化された特徴画像を出力する。
すなわち、特徴画像生成部204は、現在画像の垂直成分のエッジ画像を生成し(例えばy方向のみソーベルフィルタ)、背景画像の垂直成分のみエッジ画像を生成する(y方向だけのソーベルフィルタ)。そして、これらエッジ画像を用いて背景のエッジ部分を削除するために差分画像を生成する。続いて差分画像を2値化する。そして、2値化された差分画像を用いて、ハフ変換による線分抽出を行う。ここでは、確率的ハフ変換を利用して,2値画像から垂直の線分のみを検出する。そして、抽出された全ての線分に対して始点座標間と終点座標間を塗り潰した画像を生成して候補領域抽出部205へ出力する。
図7に、入力画像と、差分画像の2値化画像(垂直エッジ画像)と、抽出された全ての垂直の線分に対して始点座標間と終点座標間を塗り潰した特徴画像(垂直線分画像)が示されている。この塗り潰し画像では、車両の両端で垂直の線分を抽出していることが理解できる。
候補領域抽出部205は、前記監視エリア毎に車両抽出領域画像を出力する(ステップS107)。すなわち、候補領域抽出部205は、これまでの処理で生成された情報を用いて車線(監視エリア)毎に車両候補領域の抽出を行う。ここでは、例えば図8に示すように、「四角い」、「垂直のエッジ線分で挟まれている」、「車の下端の両端は同一の車腺内に存在し、かつ車幅は車線幅の所定の割合以上」等を判定基準とする、車らしさ、あるいは見え方の特徴を使っている。
また、車線毎に車抽出する際に車らしさとして見つける車両の両端の垂直のエッジ線分のペアは、指定方向画像と移動体画像とを論理積演算した画像をラベリングした際の同一ラベル内の線分同士であるという条件を持つ。これは、例えば、図9に示す撮影シーンに効果的である。図9に、入力画像と、特徴画像(垂直線分)と、指定方向画像と移動体画像とを論理積演算した画像がともに示されている。これは、入力画像で同じ車線内にいる2台の車両の垂直線分を同じ車両特徴のペア(候補)と判定しそうな所で、指定方向画像と移動体画像とを論理積演算した画像をラベリングした結果、同一ラベルのペアではないため同じ車両特徴のペアで無いと判定された例である。
候補領域抽出部205は、指定方向画像と、移動体画像と、車両特徴画像、および車線(監視エリア)情報構造体である、y座標毎の左端・右端座標、幅を入力とし、車線毎の2値化された車抽出画像を車両検出前処理部206へ出力する。このとき、車両検出のための各種設定を要する。ここでは、車線幅に対する車幅の割合の閾値(1割〜10割の範囲)、車幅に対する車高の割合閾値(1割〜10割の範囲)、検出された車両の下端の垂直エッジ位置から上方向に伸びる垂直エッジのx方向のマージン(数画素)、車高の閾値(映像に合わせて画素数を設定)等が必要である。
候補領域抽出部205は、まず、指定方向画像(2値)と移動体画像(2値)とを論理積演算した画像を生成し、ここで生成された画像をラベリングする。そして、車両特徴画像(2値)と車線情報と、ラベルリングの結果生成されたラベル情報とを用いて、車線毎に車両の抽出を行う。すなわち、y座標毎に、図10(a)(b)に示す処理を行う。
つまり、図10(a)に示すように、監視エリアの左端から右端のまでの間に同じラベルの車両特徴のペアがあるか否かをサーチする。ここで、車両特徴のペアが見つかれば、その特徴のx座標の差を見て、「右端特徴x2−左端特徴x1>監視エリア幅×それに対する車幅の割合の閾値か」の条件判定を行う。その条件を満たせば、車両の下端が見つかったものとして、次に、図10(b)に示す処理を行う。つまり、“y1からy1”+“車幅”דそれに対する車高の割合の閾値”までの間でy座標毎に左端特徴がx1±マージン内で、かつ右端特徴が、x2±マージン内にあり、共にy1で見つかったのと同じラベルの特徴のペアであるかサーチする。
次に、y1から最も離れて見つかったペアがy2として、「y2−y1>車高の閾値か?」を判定する。この条件を満たせば、車両が見つかったものとして、車両抽出画像に対して、図11に示す処理を行う。つまり、車両抽出画像で左上座標(x1,y2)と右下座標(x2,y1)で矩形内の塗り潰し処理を行う。そして、y座標毎に上記の一連の処理を繰り返し実行し、車両の候補領域抽出処理を終了する。
次に、車両検出前処理部206は、車両抽出画像から、設定される車幅閾値と車高閾値とにより1台毎の車両を抽出する車両抽出ラベル情報を出力する(ステップS108)。車両検出前処理部206は、車両抽出画像を入力とし、車両検出に使用される矩形座標等のラベル結果構造体を出力する。このとき、車両の大きさに関する、車幅閾値、車高閾値として、それぞれ映像に合わせて画素数が設定される。
具体的に、車両検出前処理部206は、まず、車両抽出画像をラベリングする。そして、ラベル毎に、設定された車幅と車高の閾値を用いて大きさをフィルタリングする。さらに、渋滞等、同一車線内での車の重なりを分離するために、図12(a)(b)に示す処理をラベル毎に行ってもよい。まず、ラベル内で右下と左上の2つの四角を見つける。具体的に、図12(a)に示すように、ラベルの右下座標(x0,y0)から左へどこからどこまで抽出が続くかサーチする。ここでは、“x1”まで続くことがわかる。次に、図12(b)に示すように、ラベルの右下座標(x0,y0)の少し内側から上へどこまで抽出が続くかサーチする。ここでは、“y1”までであることがわかる。
以上の処理により、右下のラベル1は、左上座標(x1,y1)と右下座標(x0,y0)で囲まれた矩形であることがわかる。次に、ラベルの左上座標を基準にして、同様の処理を実行することにより左上の四角も見つけることができる。そして、ここで見つかった2つの四角の重なりの度合いを調べて、その度合いにより分離するか否かを決定する。すなわち、重なりの度合いが小さければ、右下と左上の2つのラベルに分離する。重なりの度合いが大きければ分離しない。
図13(a)(b)に、入力画像と車両抽出画像が示されている。図13(a)には、重なり度合いが小さいので2つのラベルに分離される例が示されている。図13(b)には、見つかる2つの四角はほぼ同じ矩形になるため分離しない例が示されている。以上の処理により、車線毎に1台ずつ車両を抽出したラベル結果情報が生成され、垂直エッジ成分を使用した車線毎の通過車両の検出が可能になる(ステップS109)。
(実施例1の効果)
以上説明のように実施例1の車両検出装置20によれば、装置本体20aは、(1)車線毎に設定される一監視エリアに係る車線情報を生成し、(2)車線内における交通状況の撮影画像を取得し、(3)撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、(4)撮影画像と背景画像のそれぞれの垂直成分のエッジ画像を生成し、エッジ画像の差分画像を二値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成し、(5)監視エリア毎に車両抽出画像を出力し、車両抽出画像から、設定される車幅閾値と車高閾値とにより1台毎の車両を抽出した車両抽出ラベル情報を出力し、車両検出を行う。
すなわち、特徴画像から垂直エッジで挟まれている幅が車線幅に対して閾値以上であれば通過車両であると判断することができる。また、車幅は車種によって大きな違いがない為、一定の値に指定できる。このことにより、垂直エッジ成分の特徴を使用して車線毎の車両を抽出することが可能になる。したがって、車種毎の車高データを不要とし、また、カメラの取り付け位置に依存することなく、撮影画像から簡単で精度良く1台ずつ車両検出が可能な、車両検出装置を提供することができる。
なお、本実施例1に係るプログラムは、例えば、図1,図2に示す、車線毎に車両を検出する車両検出装置20のコンピュータに、例えば、図3に示すように、車線毎に設定される一つの監視エリアに係る車線情報を生成する手順(ステップS102)と、車線内における交通状況の撮影画像を取得する手順(ステップS103)と、撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成する手順(ステップS104)と、撮影画像と背景画像のそれぞれの垂直成分のエッジ画像を生成し、エッジ画像の差分画像を二値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成する手順(ステップS106)と、監視エリア毎に車両抽出画像を出力する手順(ステップS107)と、車両抽出画像から、設定される車幅閾値と車高閾値とにより1台毎の車両を抽出する車両抽出ラベル情報を出力して車両検出を行う手順(ステップS108,S109)と、を実行させる。
実施例1に係るプログラムによれば、垂直エッジ成分の特徴を使用して車線毎の車両を抽出することが可能になり、したがって、車種毎の車高データを不要とし、また、カメラの取り付け位置に依存することなく、撮影画像から簡単で精度良く1台ずつ車両検出が可能な車両検出装置20のプログラムを提供することができる。
次に上記した車両検出結果を使用して通過車両の速度を高い精度で検出する方法について、図14,図15を用いて簡単に説明する。まず、準備段階として、図14に示す撮影画像から、長さ(間隔)が既知である車道中央線の端点Dをマウス等によりクリックする。そして、破線の長さ[m]を、使用する画像表示装置21が持つ解像度によって決まる画像上の長さ[ピクセル]で除算して1画素が占める距離を算出し、縦軸にY座標、横軸に1画素が占める距離を目盛ったグラフのE上にプロットする。また、間隔についても同様の処理を行い、1ポイントにつき2点プロットする。これを受けて装置本体20aは、プロットした点に基づき重み付き最小二乗法によりフィットする関数を求め、この関数にしたがって距離テーブル222を作成して記憶装置22の所定の領域に記憶しておく。
そして、図15に示すように、走行速度算出部209は、先にオプティカルフローにより算出したフレーム間で移動したy方向の画素数(move_y)により、図中矩形枠Fで示す検出車両毎に走行速度を計測する。そして、記憶装置22の所定の領域に記憶されている距離テーブル222を参照して車両下端のy座標における1ピクセルあたりの距離dist[m/pixel]を得、得られる距離と時間データから、以下に示す速度算出式により通過車両の速度[m/s]を求める。なお、以下の演算式に示されるΔtは、フレーム間の時間差である。
上記したように、撮影画像内の2点間距離から距離テーブル222を作成することにより、装置本体20a(走行速度算出部209)が、設定された監視エリア内において車両がフレーム間での移動した画素数と、距離テーブル222を参照して得られる距離と、計測したフレーム間の通過時間とから車両の速度を精度よく計算することができる。
なお、本実施形態に係る車両検出装置20によれば、監視エリア内を通過する車両を検出し検出した車両の速度を算出する場合についてのみ説明したが、同じ仕組みで監視エリア内の通過車両の台数等についてもカウントすることができ、また、通過車両の台数と、通過車両の速度とから、一定速度以下であれば渋滞とする判断も可能になるため、渋滞検出にも応用できる。また、オプティカルフローを使用して撮影画像における車両の動きをベクトル表現したため、規定している方向に対し逆走行している車両の検出や特定に用いる用途にも適用が可能である。
(実施例2)
以下に説明する実施例2は、実施例1の垂直エッジ線分の特徴を用いた車両検出を行いながら、照明環境や車両の色に依存しない、更なる検出精度の向上を目指した車両検出装置20を提供するものである。すなわち、夜間、電灯等が設置されておらず、明るさが不十分な車両の検出環境において、特に、黒い車両は、映像上で認識できなくなる場合がある。この場合に車両の垂直エッジ線分が検出できなくなることによる車両の検出漏れを抑制するものである。
このため、以下に説明する実施例2では、実施例1における車両検出のために使用するパラメータの設定を変更できるようにした。具体的に、例えば、図16(a)(b)に示すように、夜間等暗い撮影画像でも車両のテールランプは映っているため、テールランプからエッジの抽出が可能であることを利用する。このとき、夜間の撮影画像から車両検出を行う際に変更するパラメータは、車高の最小サイズと、車幅の最小サイズと、ハフ変換による線分抽出の最小線分長さとする。
例えば、図17(a)(b)に示すように、車高の最小サイズは、通常は車体の見えるサイズとし、夜間はテールランプが見えるサイズとし、車幅の最小サイズは、通常は車体の見えるサイズとし、夜間も同じか若干狭めとする。ハフ変換による線分抽出の最小線分長さは、例えば、通常は5ピクセルとし、夜間は、3ピクセルとした。
また、移動体画像の利用有無設定も新たに設けた。通常はONであり、夜間はOFFとする。通常は垂直エッジ線分ペアを見つける際の精度向上のために利用する。指定方向画像と移動体画像の論理積演算により得られる画像をラベリングし、ペアは同一ラベルという条件とする。但し、夜間、移動体画像は2つのテールランプが分離して別ラベルと認識するため、利用しない。このようにして、夜間の真っ暗な映像への対応が可能になる。なお、季節によって暗くなる時間帯は変わり、また、夜間であっても、映像(明るさが十分な環境)によってはパラメータを変更しなくても済む場合があるため、パラメータ変更のタイミングについて、後述する統計処理に基づき決定することとした。以下に、その詳細を実施例2として図18以降を使用して詳細に説明する。
(実施例2の構成)
図18に、実施例2に係る車両検出装置20の内部構成が示されている。図18に示すように、実施例2に係る車両検出装置20は、少なくとも、装置本体20bと、画像表示装置21と、記憶装置22とを含み構成される。他に、図示省略したキーボードやマウス等の操作装置を含んでもよい。
装置本体20bは、ハードウエア的には図示省略したCPUとプログラムメモリとから構成される。装置本体20bは、CPUがプログラムメモリに格納されたプログラムを逐次読み出し実行することにより、(1)車線毎に設定される一つの監視エリアに係る車線情報を生成し、(2)車線内における交通状況の撮影画像を取得し、(3)撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、監視エリア毎に生成された前記指定方向画像をラベリングして車両が存在する候補領域を抽出し、(4)候補領域を白と黒のクラスタに分類して白黒判定を行ない、(5)撮影画像およびその背景画像の垂直成分のエッジ画像を生成し、その差分のエッジ画像を2値化後、垂直線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成して車両検出の可否を判定し、車両検出不可と判定された前記候補領域に対して白黒判定された白の領域を抽出してラベリングによる車両検出の可否を判定し、(6)車両検出の可否の割合に基づき車両検出環境の明暗判定を行ない、その判定結果に基づき車両検出パラメータの設定変更を行う。
このため、CPUが実行するプログラムの構造は、画像取得部211と、車線情報生成部212と、候補領域抽出部213と、クラスタ判定部214と、車両検出可否判定部215と、パラメータ設定変更部216の、複数のモジュールに展開して示すこことができる。また、後述するように、統計処理部217を含んでもよい。
画像取得部211は、Web30経由で受信される車線内における交通状況の撮影画像を取得して候補領域抽出部213へ出力する画像取得手段として機能する。車線情報生成部212は、車線毎に設定される一つの監視エリアに係る車線情報を生成して候補領域抽出部213へ出力する車線情報生成手段として機能する。候補領域抽出部213は、撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、監視エリア毎に生成された前記指定方向画像をラベリングして車両が存在する候補領域を抽出してクラスタ判定部214、および統計処理部217へ出力する候補領域抽出手段として機能する。
クラスタ判定部214は、候補領域を白と黒のクラスタに分類して白黒判定を行ない、車両検出可否判定部215へ出力する白黒判定手段として機能する。車両検出可否判定部215は、撮影画像およびその背景画像の垂直成分のエッジ画像を生成し、その差分のエッジ画像を2値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成して車両検出の可否を判定し、車両検出不可と判定された前記候補領域に対して白黒判定された白の領域を抽出してラベリングによる車両検出の可否を判定してパラメータ設定変更部216へ出力する車両検出可否判定手段として機能する。
パラメータ設定変更部216は、車両検出の可否の割合に基づき車両検出環境の明暗判定を行ない、その判定結果に基づき実施例1の車両検出パラメータの設定変更を行う。なお、統計処理部217は、候補領域抽出部213で抽出された候補領域内の車両の色毎の統計データを解析する機能を有する。このため、統計処理部217は、候補領域抽出部213で抽出された候補領域内の車両の色毎の統計データを解析する統計処理手段として機能する。上記した各ブロックの詳細はいずれも後述する。
(実施例2の動作)
以下、図19のフローチャートを参照しながら、図18に示す実施例2の車両検出装置20の動作について詳細に説明する。
実施例2の車両検出装置20は、図19のフローチャートに示すように、装置本体20bが、内蔵のプログラムを逐次読み出し実行することにより、(1)車線毎に設定される一つの監視エリアに係る車線情報を生成し、(2)車線内における交通状況の撮影画像を取得し、(3)撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、監視エリア毎に生成された前記指定方向画像をラベリングして車両が存在する候補領域を抽出し、(4)候補領域を白と黒のクラスタに分類して白黒判定を行ない、(5)撮影画像およびその背景画像の垂直成分のエッジ画像を生成し、その差分のエッジ画像を2値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成して車両検出の可否を判定し、車両検出不可と判定された前記候補領域に対して白黒判定された白の領域を抽出してラベリングによる車両検出の可否を判定し、(6)車両検出の可否の割合に基づき車両検出環境の明暗判定を行ない、その判定結果に基づき車両検出パラメータの設定変更を行う。
このため、夜間等、暗い撮影環境においても撮影画像から精度良く1台ずつ車両検出できるように車両検出パラメータの設定変更を行なうことができ、装置本体20b(車両検出可否判定部215)による車両検出可否判定に反映させることができる。
図19において、車線情報生成部212が、車線毎に設定される一つの監視エリアに係る車線情報を生成し、画像取得部211が車線内における交通状況の撮影画像を取得する処理までは実施例1と同様である。車線情報生成部212から設定された監視エリアに係る車線情報を取得し、画像取得部211から車線内における交通状況の撮影画像を取得した候補領域抽出部213は、まず、車線毎に車両が存在する候補領域の抽出を行う(ステップS201)。
より詳細には、候補領域抽出部213は、監視エリア内かつ指定方向のオプティカルフローの塊を抽出する。ここでは、概略車両が存在するだろうという塊を意味する。具体的に、まず、撮影画像全体から指定方向画像の生成を行う。次に、指定方向に移動している画素を示す画像を生成する。実施例1同様、画素毎にオプティカルフローを算出し、画素毎にフローベクトルの向き(角度)と強度を算出することで、指定方向画像(2値)を生成することができる。そして、画素毎にフローベクトルの向き(角度)が“指定方向(角度)±マージン”の範囲内であって、かつ強度が閾値以上なら“1”、それ以外は“0”とすることにより2値化する。
次に、候補領域抽出部213は、車線毎、監視エリア内のみ指定方向画像の生成を行う。すなわち、監視エリア内で指定方向に移動している画素を示す画像を生成する。具体的に、まず、生成された指定方向画像と監視エリア情報を用いて、監視エリア内のみ指定方向画像(2値)を生成する。監視エリア情報は、監視エリア内の両端に道路の白線が含まれている可能性があり、白線が含まれると後の判定に影響するため、数画素だけ内側に補正する。ここでは、画素毎にエリア内かつ指定方向画像の値が“1”であれば“1”、それ以外は“0”として2値化する。
次に更なる補正を行う。具体的に、候補領域抽出部213は、上記のようにして生成された監視エリア内のみ指定方向画像に対して、y座標毎にエリア内の指定方向画素の数が“そのy座標のエリア幅×車線幅に対する車幅の割合閾値(%)”未満の場合は、そのy座標の画素の値を全て“0”に補正する。このようにして、監視エリア内かつ指定方向のオプティカルフローの塊を抽出する。
すなわち、候補領域抽出部213は、ラベル情報を生成し、ラベル毎に外接矩形情報(左上座標、右下座標)を持つ。具体的に、候補領域抽出部213は、生成された指定方向画像の補正画像に対してラベリングを行ない、大きさフィルタ(最小サイズ指定)によるラベル除去を行う。ここで、最小サイズxは、“エリア下端のエリア幅×車線幅に対する車幅の割合閾値+α(%)”であり、最小サイズyは、“最小xサイズ×車幅に対する車高の割合閾値(%)”である。
このとき、監視エリアに関しては、実施例1で車両検出の際に設定した監視エリアを使用する。監視エリア幅は、後述するように、車線幅情報を車抽出の車特徴に利用するため、車線幅と等しい値とする。
次に、候補領域抽出部213は、クラスタ判定部214に制御を移す。クラスタ判定部214は、候補領域抽出部213で抽出された候補領域を、白と黒のクラスタに分類して車両の白黒判定を行なう(ステップS202)。ここでは、候補領域に車両が存在しているものと仮定して判定する。後の夜判定処理において、車両の色毎に統計データを解析することで夜判定の精度が上がるために実施する。例えば、真っ暗な映像において、白い車の車体は見えるが黒い車の車体は見えない場合に色で区別せずに解析すれば、車体が見えない率は全体的に低いままであり、夜判定されないが、色毎に解析すれば、黒い車の車体の見えない率が高くなるため夜判定されるようになる。
具体的に、クラスタ判定部214は、まず、候補領域毎、候補領域内を白クラスと黒クラスに2値化する。ここで、2値化方法として判別分析法(大津の2値化閾値)を利用することとした。これによれば、候補領域内の精度情報を用いて、候補領域内を自動的に2値化してくれる。次に、候補領域内の白黒判定を行う。ここでは、白、または黒またはそれ以外の3種類に判定する。そのために、候補領域抽出部213で生成された監視エリア内のみ指定方向画像を参照して、候補領域内にあって、かつ指定方向画素における白クラスの数と黒クラスの数をカウントする。
ここでは、候補領域内の全画素に対して指定方向画素で白クラスであれば白クラス数を+1、黒クラスであれば黒クラス数を+1、指定方向画素でない場合何もしない。続いて、候補領域内の白クラスの割合を算出する。例えば、白クラスの割合=白クラス数/(白クラス数+黒クラス数)×100(%)とする。
クラスタ判定部214は、算出した割合に対して、閾値Aと閾値Bとによって白黒判定を行う。ここでは、白か黒の2択では、閾値周辺の割合の領域に関して、出力結果が不安定になるため、確実に白、確実に黒、不明の3種類に判定している。そして、白クラスの割合>閾値Aであれば、白を出力し、白クラスの割合≦閾値Bであれば黒を出力し、それ以外は“不明”として出力する。
次に、クラスタ判定部214は、車両検出可否判定部215に制御を移す、車両検出可否判定部215は、撮影画像およびその背景画像の垂直成分のエッジ画像を生成し、その差分のエッジ画像を2値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成して車両検出の可否を判定し(ステップS203:車両検出可否判定1)、車両検出不可と判定された候補領域に対してクラスタ判定部214で白判定された領域を抽出してラベリングによる車両検出の可否を判定する(ステップS204:車両検出可否判定2)。
具体的に、車両検出可否判定部215は、候補領域抽出部213で抽出された車両存在候補領域に対して、同領域内に車体らしいものがあるか否かを判定し、ステップS203で領域内に垂直エッジのペアが存在するか調べる(車両検出可否判定1)。車両検出可否判定部215は、候補領域から垂直エッジ線分を抽出し、その線分を示す画像(2値)を生成する。まず、現在画像の垂直成分のみエッジ画像を生成する。(例えば、y方向のみソーベルフィルタ)、次に、背景画像の垂直成分のみエッジ画像を生成する。(例えば、y方向のみソーベルフィルタ)。そして、背景のエッジ部分を除去するため、両画像の差分画像を生成する。
続いて、車両検出可否判定部215は、差分画像を閾値で2値化し、2値画像を用いて、ハフ変換による線分抽出を行う。このとき、垂直方向の線分のみを抽出するようにパラメータを調整し、線分の最小サイズを監視エリア下端における普通車の背景の高さくらいに設定する。そして、抽出された全ての線分に対して、始点座標と終点座標間を塗りつぶした画像(2値)を生成する。
車両検出可否判定部215は、次に、車両存在候補領域毎に車両検出可否判定を行う。ここでは、“車両検出可”、または“車両検出不可”の2種類に判定する。具体的に、候補領域内に垂直エッジ線分のペアが存在するか否かをy座標毎に調べるももので、先に生成された垂直エッジ線分抽出画像を参照して、領域内のy座標毎に垂直エッジ線分画像の値が1である画素のペアを見つける。ここで複数該当する画素があれば、最も離れた画素同士をペアとする。そして、ペアの長さが閾値以上か否かで判定する。
ここで、ペアの長さ>エリア下端のエリア幅×車線幅に対する車幅の割合閾値(%)の判定条件を満たせば、“車両検出可”を出力することにより車両検出可否判定1の処理は終了する。上記の判定条件を満たさなければ、次のy座標において上記した一連の処理を繰り返す。そして、車両存在候補領域内の全てのy座標においてペアが上記した判定条件を満たさなければ、“車両検出不可”を出力する。
続いて、車両検出可否判定部215は、ステップS204の「車両検出可否判定2」を実行する。すなわち、車両存在候補領域に対して、車両検出が可能かを判定する。同領域内に車体らしいものがあるかを見つける。この処理は、車両検出可否判定1で“車両検出不可”と判定された領域に対して行う。本来は垂直エッジ線分のペアが見つかるような状況であるのに、例えば、差分画像生成により車両のエッジが背景エッジと重なり消えてしまった等の理由でエッジのペアが見つからなかった場合の救済処置である。ここでは、車両存在候補領域内に大きな明るい部分が存在するか否かにより判定する。大きな明るい部分があるということは垂直エッジも同様に存在することに基づく。
具体的に、車両検出可否判定部215は、候補領域内を白クラスと黒クラスに2値化して同領域内の明るい部分を示す画像を抽出する。そしてラベリングを行なってラベル情報を生成する。ここでは、生成されたラベル毎に外接矩形情報(左上座標、右下座標)を持つ。すなわち、車両検出可否判定部215は、生成された画像に対してラベリングを行ない、大きさフィルタ(最小サイズ指定)によるラベル除去を行う。ここでは、最小サイズはテールランプ1個のサイズとし、最小サイズx=2、最小サイズy=2とする。次に、候補領域毎の車両検出可否判定を行う。ここでも車両検出可否判定1同様、“車両検出可”と、“車両検出不可”の2種類に判定する。
具体的に、車両検出可否判定部215は、まず、生成されたラベル毎に、大きな明るい部分があるかを見る。次に、生成されたラベル情報の中に閾値以上のサイズのものがあるか否かを判定する。閾値を、最小サイズx、最小サイズy共に監視エリア下端における普通車の背景の幅、高さくらいに設定しておく。上記の判定を満たせば、“車両検出可”を出力して、判定は終了し、満たさなければ、次のラベルにおいて上記の一連の処理を繰り返す。全てのラベルにおいて条件を満たさなければ、“車両検出可”を出力する。
そして、車両検出可否判定部215は統計処理部217に制御を移す。統計処理部217は、候補領域抽出部213で抽出された車両存在候補領域に対して、車両検出可否判定部215で車両可否判定を行った結果を記憶装置22の作業領域にデータとして保存する(ステップS205)。ここで保存するデータは、白黒判定結果(白or黒or不明)、車両検出可否判定結果(車両検出可or車両検出不可)、時刻情報である。
統計処理部217は、記憶装置22の作業領域に保存してあるデータの解析を行う(ステップS206)。統計処理部217は、候補領域抽出部213で抽出された候補領域内の車両の色毎の統計データを解析する。具体的に、統計処理部217は、過去数分間のデータから車の色毎に過去数分間のデータ数に対する“車両検出不可”の割合を検出する。このために、まず、統計データを初期化する。そして、過去数分間の“白の台数”,“黒の台数”,“不明の台数”、および過去数分間の“白の検出不可数”,“黒の検出不可数”,“不明の検出不可数”の判定結果の統計をとる。
そして、時刻情報から、現在〜過去数分間に相当すれば、そのデータの判定結果を見て、統計データを更新する。ここでは、白で車両検出可の場合、白の台数を+1更新し、白で車両検出不可の場合、白の台数を+1更新するとともに、白の検出不可数を+1更新する。また、黒で車両検出可の場合、黒の台数を+1更新し、黒の車両検出不可の場合、黒の台数を+1更新するとともに黒の検出不可数を+1更新する。また、不明で車両検出可の場合、不明の台数を+1更新し、不明で車両検出不可の場合、不明の台数を+1更新するとともに不明の検出不可数を+1更新する。
統計処理部217は、保存されている全てのデータに対して上記の処理を繰り返し、車の色毎に台数に対する検出不可数の割合を計算して、その結果をパラメータ設定変更部216に引き渡す。
パラメータ設定変更部216は、統計処理部217により出力される統計処理の結果を参照して夜判定を行う(ステップS207)。パラメータ設定変更部216は、真っ暗になって、映像上で車体が認識できなくなったことを検知すると(ステップS208“YES”)、例えば、車高の最小サイズと、車幅の最小サイズと、ハフ変換による線分抽出の最小線分長さとのパラメータを変更する。
具体的に、上記した図17(a)(b)に示すように、車高の最小サイズを、通常は車体の見えるサイズに、夜間はテールランプが見えるサイズに、車幅の最小サイズは通常は車体の見えるサイズとし、夜間も同じか若干狭めに設定する。また、ハフ変換による線分抽出の最小線分長さは、例えば通常は5ピクセルとし、夜間は3ピクセルとする。
なお、夜間であっても、映像上は明るくて車体が認識できる場合は夜と検知させない。例えば、黒い車と判定される数がデータ数に対して極端に少ないとき、夜と検知しない。これを満たさない場合、色毎の検出不可数の割合の高いものがあれば、夜と検知し、また、データ数に対して白い車と判定される割合が低い場合、夜と検知する。パラメータ設定変更部216は、通常パラメータと夜間に使用する2種類のパラメータを用意して、夜間検知時に切り替える構成とした。もちろん、夜間ではなくなった場合にも同様に切り替える。
(実施例2の効果)
以上説明のように実施例2の車両検出装置20によれば、(1)車線毎に設定される一つの監視エリアに係る車線情報を生成し、(2)車線内における交通状況の撮影画像を取得し、(3)撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、監視エリア毎に生成された前記指定方向画像をラベリングして車両が存在する候補領域を抽出し、(4)候補領域を白と黒のクラスタに分類して白黒判定を行ない、(5)撮影画像およびその背景画像の垂直成分のエッジ画像を生成し、その差分のエッジ画像を2値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成して車両検出の可否を判定し、車両検出不可と判定された前記候補領域に対して白黒判定された白の領域を抽出してラベリングによる車両検出の可否を判定し、(6)車両検出の可否の割合に基づき車両検出環境の明暗判定を行ない、その判定結果に基づき車両検出パラメータの設定変更を行う。
このため、夜間等、暗い撮影環境においても撮影画像から精度良く1台ずつ車両検出できるように実施例1の車両検出パラメータの設定変更を行なうことができ、夜間、あるいは照明環境に依存しない、より正確な車両検出が可能な車両検出装置を提供することができる。
なお、本実施例2に係るプログラムは、例えば、図2,図18に示す、車両検出パラメータに基づき車線毎に車両を検出する車両検出装置20のコンピュータに、車線毎に設定される一つの監視エリアに係る車線情報を生成する手順(図3のステップS102と共通)と、車線内における交通状況の撮影画像を取得する手順(図3のステップS103と共通)と、例えば、図19示すように、撮影画像に基づき監視エリア毎に指定する方向に移動する車両を抽出した二値化された指定方向画像を生成し、監視エリア毎に生成された前記指定方向画像をラベリングして車両が存在する候補領域を抽出する手順(ステップS201)と、候補領域を白と黒のクラスタに分類して白黒判定を行う手順(ステップS202)と、撮影画像およびその背景画像の垂直成分のエッジ画像を生成し、その差分のエッジ画像を2値化後、垂直の線分を抽出し、線分の始点座標と終点座標との間を塗り潰した車両の特徴画像を生成して車両検出の可否を判定し(ステップS203)、車両検出不可と判定された候補領域に対して白黒判定された白の領域を抽出してラベリングによる車両検出の可否を判定する手順(ステップS204)と、車両検出の可否の割合に基づき車両検出環境の明暗判定を行ない(ステップS207)、その判定結果に基づき車両検出パラメータの設定変更を行う手順(ステップS208)と、を実行させるプログラムである。
本実施例2に係るプログラムによれば、夜間等、暗い撮影環境においても撮影画像から精度良く1台ずつ車両検出できるように車両検出パラメータの設定変更を行なうことができ、夜間、あるいは照明環境に依存しない、より正確な車両検出が可能になるプログラムを提供することができる。また、夜間判定として所定期間分の統計処理データを活用することにより、実際の交通事情に適した、より精度の高い車両検出が可能になる。
また、実施例1と実施例2はそれぞれ独立して実施されるものであり、実施例1による車両検出中に実施例2の結果から車両検出パラメータを変更する。
以上、本発明の好ましい実施形態について詳述したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されないことは言うまでもない。上記実施形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。またその様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。