(57)【要約】【課題】本発明は、画像から車両の情報を高精度に検出する車両検出装置を提供することを課題とする。【解決手段】撮像手段５で撮像した画像から車両の情報を検出する車両検出装置１であって、撮像手段５で車両を撮像した画像から複数のエッジを抽出するエッジ抽出手段１２と、エッジ抽出手段１２で抽出した各エッジについて画像上の位置に対するエッジ方向で分布したエッジ分布を生成するエッジ分布生成手段１３と、エッジ分布生成手段１３で生成したエッジ分布に基づいて車両の情報を検出する車両情報検出手段１３とを備えることを特徴とし、エッジ分布においてエッジ方向の分布状態が変化する画像上の位置を車両の端部として検出すると好適である。【選択図】図１
2010250651.tif 000002
【特許請求の範囲】
【請求項１】
撮像手段で撮像した画像から車両の情報を検出する車両検出装置であって、
前記撮像手段で車両を撮像した画像から複数のエッジを抽出するエッジ抽出手段と、
前記エッジ抽出手段で抽出した各エッジについて画像上の位置に対するエッジ方向で分布したエッジ分布を生成するエッジ分布生成手段と、
前記エッジ分布生成手段で生成したエッジ分布に基づいて車両の情報を検出する車両情報検出手段と
を備えることを特徴とする車両検出装置。
【請求項２】
前記車両情報検出手段は、エッジ分布においてエッジ方向の分布状態が変化する画像上の位置を車両の端部として検出することを特徴とする請求項１に記載する車両検出装置。
【請求項３】
前記車両情報検出手段は、エッジ分布に基づいて車両の面が延在する面方向を検出し、前記車両の端部から面方向に延びる方向に存在する垂直エッジの画像上の位置と前記車両の端部とに基づいて車両の面の幅を検出することを特徴とする請求項２に記載する車両検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両検出装置に関する。
【背景技術】
【０００２】
近年、衝突防止装置、車間制御装置などの運転支援装置が開発されている。これら運転支援装置では、自車両の前方を走行する車両を検出することが重要となる。このような検出装置には、自車両に搭載したカメラで撮像した画像に基づいて車両の情報を検出するものがある。特許文献１に記載の装置では、画像から縦エッジを検出し、縦エッジの数に基づいて車両の側面と後面を判別する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−５００８９号公報
【特許文献２】特開平１０−２０６１２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
隣接車線から自車線に車両が車線変更しているときなど、自車両に対して検出対象の車両が斜め方向を向いている場合、その車両の側方と後面が同時にカメラで撮像される。この場合、上記の装置では、側面と後面とを判別することしかできないので、２面が撮像されている画像に対して対応できず、車両の情報（２面の境界を示す車両端点など）を検出できない。
【０００５】
そこで、本発明は、画像から車両の情報を高精度に検出する車両検出装置を提供することを課題とする。
【課題を解決するための手段】
【０００６】
本発明に係る車両検出装置は、撮像手段で撮像した画像から車両の情報を検出する車両検出装置であって、撮像手段で車両を撮像した画像から複数のエッジを抽出するエッジ抽出手段と、エッジ抽出手段で抽出した各エッジについて画像上の位置に対するエッジ方向で分布したエッジ分布を生成するエッジ分布生成手段と、エッジ分布生成手段で生成したエッジ分布に基づいて車両の情報を検出する車両情報検出手段とを備えることを特徴とする。
【０００７】
この車両検出装置では、撮像手段で車両を含む画像を撮像すると、エッジ抽出手段によりその画像から車両などの輪郭を示す複数のエッジを抽出する。そして、車両検出装置では、エッジ分布生成手段によりその複数の各エッジについて画像上の位置に対するエッジ方向で分布したエッジ分布を生成する。エッジには、車両などの物体の輪郭線に沿った方向がある。したがって、画像上で車両の各面などの輪郭線が所定範囲内で延びていると、同じ方向を持つエッジが多数抽出されることになる。したがって、各エッジをエッジ方向で分布したエッジ分布では、車両の面毎にそれぞれ異なる特定のエッジ方向近傍に多数のエッジが分布することなる。そこで、車両検出装置では、車両情報検出手段によりそのエッジ分布に基づいて車両の情報（例えば、車両の２つの面の境界である車両の端点（角部）など）を検出する。このように、この車両検出装置では、車両から抽出される各エッジのエッジ方向に応じた分布状態を利用することにより、車両の情報を高精度に検出することができる。
【０００８】
本発明の上記車両検出装置では、車両情報検出手段は、エッジ分布においてエッジ方向の分布状態が変化する画像上の位置を車両の端部として検出すると好適である。
【０００９】
例えば、画像に車両の側面と前面が写っている場合、画像上での側面と前面がそれぞれ延びる角度はそれぞれ特定の異なる角度を有しているので、側面の輪郭線に相当する多数のエッジはエッジ方向が略同じであるのでそのエッジ方向近傍に多数のエッジが分布することになり、前面の輪郭線に相当する多数のエッジはエッジ方向（側面のエッジ方向とは異なる方向）が略同じであるのでそのエッジ方向近傍に多数のエッジが分布することになり、２つのエッジ方向周辺に多数のエッジがそれぞれ分布することになる。したがって、車両の連続する２つの面の境界（すなわち、車両の端部）では、エッジ方向が変化することになる。そこで、この車両検出装置では、エッジ分布においてエッジ方向の分布状態が変化する画像上の位置を特定することにより、車両の端部を高精度に検出することができる。
【００１０】
本発明の上記車両検出装置では、車両情報検出手段は、エッジ分布に基づいて車両の面が延在する面方向を検出し、車両の端部から面方向に延びる方向に存在する垂直エッジの画像上の位置と車両の端部とに基づいて車両の面の幅を検出すると好適である。
【００１１】
車両の各面の輪郭線としては、各面の両端の境界においては垂直方向に延びる輪郭線がある。したがって、車両の各面には、上記で抽出した車両の端部の他方側の境界に垂直方向に延びる輪郭線（垂直エッジ）がある。この車両の端部と他方側の垂直エッジの位置との幅が、車両の一面の幅となる。そこで、この車両検出装置では、エッジ分布に基づいて車両の面が延在する面方向を検出し、抽出した車両の端部から面方向に延びる方向に存在する垂直エッジの画像上の位置を検出することにより、その画像上の位置と車両の端部から車両の面の幅を高精度に検出することができる。
【発明の効果】
【００１２】
本発明によれば、車両か抽出される各エッジのエッジ方向に応じた分布状態を利用することにより、車両の情報を高精度に検出することができる。
【図面の簡単な説明】
【００１３】
【図１】第１及び第３の実施の形態に係る車両検出装置の構成図である。
【図２】レーザレーダによる反射点の一例である。
【図３】反射点群の分割位置の一例である。
【図４】形状モデルの一例であり、（ａ）がモデル１であり、（ｂ）がモデル２である。
【図５】ｓｏｂｅｌフィルタであり、（ａ）が横エッジ検出用であり、（ｂ）が縦エッジ検出用である。
【図６】カメラによる画像に対するエッジ画像の一例である。
【図７】図６のエッジ画像に輪郭の向き（エッジ方向）と車両範囲を示した画像である。
【図８】画像の横方向と輪郭線角度における輪郭線強度の頻度ヒストグラムである。
【図９】頻度ヒストグラムの作成方法の説明図である。
【図１０】頻度ヒストグラムから頻度の高い輪郭線角度の抽出方法の説明図である。
【図１１】車両端点の探索方法の説明図である。
【図１２】車両検出部におけるメイン処理の流れを示すフローチャートである。
【図１３】車両検出部におけるメイン処理の中のグルーピング処理の流れを示すフローチャートである。
【図１４】車両検出部におけるメイン処理の中の形状モデル推定処理の流れを示すフローチャートである。
【図１５】車両検出部におけるメイン処理の中の画像上範囲推定処理の流れを示すフローチャートである。
【図１６】車両端点抽出部における処理の流れを示すフローチャート（前半部）である。
【図１７】車両端点抽出部における処理の流れを示すフローチャート（後半部）である。
【図１８】第２の実施の形態に係る車両検出装置の構成図である。
【図１９】車両縦横長推定部における処理の流れを示すフローチャート（前半部）である。
【図２０】車両縦横長推定部における処理の流れを示すフローチャート（中盤部）である。
【図２１】車両縦横長推定部における処理の流れを示すフローチャート（後半部）である。
【図２２】車両端点抽出部における分割位置判断処理の説明図である。
【図２３】１つの分割位置候補に対する輪郭比較方法の説明図である。
【図２４】車両端点抽出部における分割位置判断処理の流れを示すフローチャートである。
【図２５】車両端点抽出部における分割位置判断処理の中の画像上範囲設定処理の流れを示すフローチャートである。
【図２６】車両端点抽出部における分割位置判断処理の中の輪郭線強度総和計算処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明に係る車両検出装置の実施の形態を説明する。
【００１５】
本実施の形態では、本発明に係る車両検出装置を、車両に搭載される車両検出装置に適用する。本実施の形態に係る車両検出装置は、自車両の前方に存在する車両を検出し、検出した車両の情報を車間距離制御装置や衝突防止装置などの運転支援装置に提供する。本実施の形態には、３つの形態があり、第１の実施の形態が車両情報として車両の端部を検出する形態であり、第２の実施の形態が車両情報として車両の端部の他に車両の各面の長さや幅も検出する形態であり、第３の実施の形態が第１の実施の形態の車両の端部の検出の精度を更に向上させる形態である。
【００１６】
図１〜図１１を参照して、第１の実施の形態に係る車両検出装置１について説明する。図１は、第１及び第３の実施の形態に係る車両検出装置の構成図である。図２は、レーザレーダによる反射点の一例である。図３は、反射点群の分割位置の一例である。図４は、形状モデルの一例であり、（ａ）がモデル１であり、（ｂ）がモデル２である。図５は、ｓｏｂｅｌフィルタであり、（ａ）が横エッジ検出用であり、（ｂ）が縦エッジ検出用である。図６は、カメラによる画像に対するエッジ画像の一例である。図７は、図６のエッジ画像に輪郭の向き（エッジ方向）と車両範囲を示した画像である。図８は、画像の横方向と輪郭線角度における輪郭線強度の頻度ヒストグラムである。図９は、頻度ヒストグラムの作成方法の説明図である。図１０は、頻度ヒストグラムから頻度の高い輪郭線角度の抽出方法の説明図である。図１１は、車両端点の探索方法の説明図である。
【００１７】
車両検出装置１は、レーダセンサによるレーダ情報を用いて車両の各面が存在する画像上の範囲を推定し、カメラによる画像情報を用いてその推定した画像上の範囲内の輪郭線（エッジ）の情報に基づいて車両の端点（２つの面の境界位置）を検出する。特に、車両検出装置１は、各エッジについての画像上の横位置とエッジ方向に対するエッジ強度の重み付け頻度ヒストグラムを生成し、その頻度ヒストグラムにおけるエッジ方向の変化点から車両の端点を検出する。そのために、車両検出装置１は、レーザレーダ４、カメラ５、ＥＣＵ[Electronic Control Unit]１０を備えており、ＥＣＵ１０に車両検出部１１、輪郭抽出部１２、車両端点抽出部１３が構成される。
【００１８】
なお、第１の実施の形態では、輪郭抽出部１２が特許請求の範囲に記載するエッジ抽出手段に相当し、車両端点抽出部１３が特許請求の範囲に記載するエッジ分布生成手段及び車両情報検出手段に相当する。
【００１９】
レーザレーダ４は、レーザ光を利用して物体を検出する走査型のレーダである。レーザレーダ４は、自車両の前端部の中央に取り付けられる。また、レーザレーダ４は、検出対象の車両を十分に検出可能な高さ位置かつ路面に対して略平行に取り付けられる。レーザレーダ４では、所定時間毎に、レーザ光を所定角度毎に水平方向にスキャンしながら自車両から前方に向けて出射し、反射してきたレーザ光を受光する。そして、レーザレーダ４では、所定時間毎に、受光できた各反射点（検出点）についてのデータ（水平方向の走査方位角、出射時刻、受光時刻、受光強度（反射強度）など）からなるレーダ信号をＥＣＵ１０に送信する。
【００２０】
カメラ５は、ＣＣＤ[Charge Coupled Device]やレンズなどで構成され、自車両の前方を撮像するカメラである。カメラ５は、自車両の前方の中央の所定の位置に取り付けられ、自車両前方に延びる中心軸とカメラの光軸との向きが一致する方向に向けて配置される。カメラ５では、所定時間毎に（例えば、１００ｍ秒毎に）、自車両の前方を撮像し、その撮像画像のデータを画像信号としてＥＣＵ１０に送信する。なお、カメラ５は、対象物についての少なくとも光学点な濃淡情報を取得できればよいので、白黒のカメラでもよいし、カラーのカメラでもよい。
【００２１】
レーザレーダ４とカメラ５との取り付け位置関係は、事前に計測され、レーザレーダ４の座標系とカメラ５の座標系との間での座標変換を行うために必要な各種パラメータが取得されている。
【００２２】
ＥＣＵ１０は、ＣＰＵ[Central ProcessingUnit]、ＲＯＭ[Read Only Memory]、ＲＡＭ[RandomAccess Memory]などからなる電子制御ユニットであり、車両検出装置１を統括制御する。ＥＣＵ１０では、ＲＯＭに格納されているアプリケーションプログラムをＲＡＭ上にロードし、ＣＰＵで実行することによって車両検出部１１、輪郭抽出部１２、車両端点抽出部１３を構成する。ＥＣＵ１０では、所定時間毎に、レーザレーダ４からレーダ信号、カメラ５から画像信号を受信する。そして、ＥＣＵ１０では、この各信号を用いて各部１１，１２，１３の処理を行い、車両を検出できた場合にはその車両の情報を車両情報信号として運転支援装置に送信する。
【００２３】
車両検出部１１について説明する。車両検出部１１では、レーザレーダ４で検出された多数の反射点に対して、グルーピングを行い、グループ毎にそのグループの反射点群に車両の形状モデルを当てはめ、車両の形状モデルが当てはまるグループがある場合にはその反射点群の画像上での範囲を推定する。
【００２４】
図２には、レーザレーダ４で検出された反射点ｐｔ１，ｐｔ２，・・・，ｐｔ１９の一例を示している。車両の走行環境では、自車両の前方の車両とその周囲のガードレールなどの他の物体とはある程度以上距離が離れている。そのため、同一の物体で反射した反射点間は近いが、異なる物体で反射した反射点間は遠い。図２に示す例の場合、車両での反射点群ｐｔ１２〜ｐｔ１７では隣接する反射点間距離は小さくなり、その他の物体での反射点群ｐｔ１〜ｐｔ１１、反射点群ｐｔ１８〜ｐｔ１９でも隣接する反射点間距離がそれぞれ小さくなるが、車両での反射点群ｐｔ１２と隣接する反射点ｐｔ１１間距離は大きくなり、車両での反射点群ｐｔ１７と隣接する反射点ｐｔ１８間距離は大きくなる。
【００２５】
グルーピング処理について具体的に説明する。車両検出部１１では、レーザレーダ４で検出された反射点ｐｔ毎に、式（１）により、その反射点ｐｔと隣接する反射点ｐｔ−１間の距離ＬＮｐｔ，ｐｔ−１を計算する。式（１）において、ｒｐｘは３次元のレーザレーダ座標系における反射点ｐｔのｘ座標であり、ｒｐｙは３次元のレーザレーダ座標系における反射点ｐｔのｙ座標であり、ｒｐｚは３次元のレーザレーダ座標系における反射点ｐｔのｚ座標である。
【数１】
2010250651.tif 000003
【００２６】
そして、車両検出部１１では、反射点間距離ＬＮｐｔ，ｐｔ−１が閾値ＴＨＲ＿ＰＴＬ未満か否かを判定する。閾値ＴＨＲ＿ＰＴＬは、隣接する反射点間の距離に基づいてその隣接する２つの反射点が同一物体で反射した反射点であるか否かを判定するための閾値である。閾値ＴＨＲ＿ＰＴＬとしては、例えば、車両と路側端の物体との分離の観点で、（車線幅−車両幅）／２とする。
【００２７】
車両検出部１１では、反射点間距離ＬＮｐｔ，ｐｔ−１が閾値ＴＨＲ＿ＰＴＬ未満の場合にはその２つの反射点ｐｔ，ｐｔ−１を同じグループに分類し、反射点間距離ＬＮｐｔ，ｐｔ−１が閾値ＴＨＲ＿ＰＴＬ以上の場合にはその２つの反射点ｐｔ，ｐｔ−１を異なるグループに分類する。車両検出部１１では、この反射点間距離判定をレーザレーダ４で検出された全ての反射点に行い、全ての反射点をグループ分けする。
【００２８】
形状モデル推定処理について具体的に説明する。車両検出部１１では、グルーピングされたグループｇｎ毎に、グループｇｎに含まれる反射点群に対して、分割位置ｓｐｔを順次設定する。そして、車両検出部１１では、その分割位置ｓｐｔを境界として、グループｇｎに含まれる反射点群を２つの反射点群ＲＰＴ１＝｛ｒｐｔｇｎ，１，・・・，ｒｐｔｇｎ，ｓｐｔ｝、ＲＰＴ２＝｛ｒｐｔｇｎ，ｓｐｔ，・・・，ｒｐｔｇｎ，Ｎｇｎ｝に分割する。分割位置ｓｐｔは、隣接する２つ反射点の間の中間位置又はグループでの両端の反射点の外側の位置に設定される。したがって、反射点の数がｎ個の場合、ｎ＋１個の分割位置が設定される。図３には、あるグループの反射点群ｒｐｔｇｎ，１，・・・，ｒｐｔｇｎ，６を示しており、分割位置ｓｐｔとして隣接する反射点ｒｐｔｇｎ，３と反射点ｒｐｔｇｎ，４との間に設定され、２つの反射点群ＲＰＴ１＝｛ｒｐｔｇｎ，１，ｒｐｔｇｎ，２，ｒｐｔｇｎ，３｝、ＲＰＴ２＝｛ｒｐｔｇｎ，４，ｒｐｔｇｎ，５，ｒｐｔｇｎ，６｝に分割される。
【００２９】
分割位置ｓｐｔを設定する毎に、車両検出部１１では、事前に用意されている車両の形状モデルｍｏｄｅｌ毎に、２つの反射点群ＲＰＴ１＝｛ｒｐｔｇｎ，１，・・・，ｒｐｔｇｎ，ｓｐｔ｝、ＲＰＴ２＝｛ｒｐｔｇｎ，ｓｐｔ，・・・，ｒｐｔｇｎ，Ｎｇｎ｝と車両の形状モデルｍｏｄｅｌとの一致度ＳＭｍｏｄｅｌ，ｓｐｔを計算する。一致度ＳＭとしては、例えば、形状モデルと各反射点との誤差の総和として計算する。
【００３０】
車両の形状モデルは、前面・後面用モデルと側面用モデルからなる車両の２面のモデル、前面、後面、側面の中の車両の１面のモデルがある。各面のモデルは、車両を水平面で切った場合の各面の外形状を示す線からなるモデルあり、例えば、前面・後面用モデルとして１次関数や２次関数で示される線であり、側面用モデルとしては１次関数で示される線である。図４には、車両の形状モデルの一例を示しており、（ａ）に示す形状モデルｍｏｄｅｌ１は直線状の側面用モデルｓｍと曲線状の前面・後面用モデルｆｍからなり、（ｂ）に示す形状モデルｍｏｄｅｌ２は曲線状の前面・後面用モデルｆｍと直線状の側面用モデルｓｍからなる。ちなみに、分割位置ｓｐｔが隣接する反射点間の間に設定されている場合には２面のモデルとの処理を行い、分割位置ｓｐｔが反射点群の外側に設定されている場合には１面のモデルとの処理を行う。
【００３１】
図４には、図３に示す分割位置ｓｐｔで分割した２つの反射点群ＲＰＴ１＝｛ｒｐｔｇｎ，１，ｒｐｔｇｎ，２，ｒｐｔｇｎ，３｝、ＲＰＴ２＝｛ｒｐｔｇｎ，４，ｒｐｔｇｎ，５，ｒｐｔｇｎ，６｝を、図４（ａ）に示すｍｏｄｅｌ１を当てはめた場合と図４（ｂ）に示すｍｏｄｅｌ２を当てはめた場合を示しており、図４（ａ）に示す形状モデルｍｏｄｅｌ１は当てはまっているが、図４（ｂ）に示す形状モデルｍｏｄｅｌ２は当てはまっていない。
【００３２】
一致度ＳＭｍｏｄｅｌ，ｓｐｔを計算する毎に、車両検出部１１では、一致度ＳＭｍｏｄｅｌ，ｓｐｔが閾値ＴＨＲ＿ＳＭ未満か否かを判定する。閾値ＴＨＲ＿ＳＭは、一致度に基づいてグループの反射点群が車両の形状モデルに当てはまるか否かを判定するための閾値である。
【００３３】
車両検出部１１では、一致度ＳＭｍｏｄｅｌ，ｓｐｔが閾値ＴＨＲ＿ＳＭ未満の場合、２つの反射点群ＲＰＴ１＝｛ｒｐｔｇｎ，１，・・・，ｒｐｔｇｎ，ｓｐｔ｝、ＲＰＴ２＝｛ｒｐｔｇｎ，ｓｐｔ，・・・，ｒｐｔｇｎ，Ｎｇｎ｝について両端の反射点間の長さ（横方向の長さ）をそれぞれ計算し、その２つの長さのうちの長い方を最長部の長さＬＷｍｏｄｅｌ，ｓｐｔとする。そして、車両検出部１１では、最長部の長さＬＷｍｏｄｅｌ，ｓｐｔが所定範囲（ＴＨＲ＿ＬＷ＿ＬＯＷ〜ＴＨＲ＿ＬＷ＿ＨＩＧＨ）内か否かを判定する。所定範囲（ＴＨＲ＿ＬＷ＿ＬＯＷ〜ＴＨＲ＿ＬＷ＿ＨＩＧＨ）は、最長部の長さＬＷｍｏｄｅｌ，ｓｐｔに基づいてその各グループの反射点群の横方向の長さが車両の面に対応する範囲内の長さか否か（つまり、車両でない物体を排除）を判定するための閾値である。
【００３４】
車両検出部１１では、最長部の長さＬＷｍｏｄｅｌ，ｓｐｔが所定範囲（ＴＨＲ＿ＬＷ＿ＬＯＷ〜ＴＨＲ＿ＬＷ＿ＨＩＧＨ）内の場合、形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが、それまでに設定されている分割位置の最少誤差ＭＩＮ＿ＳＭｓｐｔ未満か否かを判定する。最少誤差ＭＩＮ＿ＳＭｓｐｔは、最少の形状一致度ＳＭｍｏｄｅｌ，ｓｐｔを探索するためのパラメータであり、初期値としては∞が設定される。
【００３５】
車両検出部１１では、形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが最少誤差ＭＩＮ＿ＳＭｓｐｔ未満の場合、最少誤差ＭＩＮ＿ＳＭｓｐｔとして形状一致度ＳＭｍｏｄｅｌ，ｓｐｔを設定するとともに、そのときの車両の形状モデルのモデルパラメータＭＰｍｏｄｅｌ，ｓｐｔを記憶する。モデルパラメータＭＰｍｏｄｅｌ，ｓｐｔは、車両の形状モデルを示すパラメータである。例えば、モデルパラメータＭＰｍｏｄｅｌ，ｓｐｔ＝（ａ１，ａ２，ａ３，ａ４，ａ５，ａ６）は、ＲＡＮＳＡＣ[RANdom Sample Consensus]法を用いて計算する。ただし、正面ｘ’＝ａ１ｙ’２＋ａ２ｙ’＋ａ３、側面ｙ＝ａ４ｘ＋ａ５、ａ６＝ｃｏｓφ、ｘ’＝ｃｏｓφｘ−ｓｉｎφｙ、ｙ’＝ｓｉｎφｘ＋ｃｏｓφｙである。
【００３６】
そして、車両検出部１１では、各グループｇｎについて用意されている全ての形状モデルｍｏｄｅｌに対して上記の処理を行い、最終的にモデルパラメータＭＰｍｏｄｅｌ，ｓｐｔが記憶されている場合（つまり、そのグループｇｎの反射点群に対して、一致度ＳＭｍｏｄｅｌ，ｓｐｔが閾値ＴＨＲ＿ＳＭ未満かつ最長部の長さＬＷｍｏｄｅｌ，ｓｐｔが所定範囲（ＴＨＲ＿ＬＷ＿ＬＯＷ〜ＴＨＲ＿ＬＷ＿ＨＩＧＨ）内かつ一致度ＳＭｍｏｄｅｌ，ｓｐｔが最少となる形状モデルがある場合）、そのグループｇｎの反射点群の分割位置ｓｐｔにおいて車両の形状モデルが１つ当てはまったと判断し、そのモデルパラメータＭＰｍｏｄｅｌ，ｓｐｔで示される形状モデルをグループｇｎの反射点群における分割位置ｓｐｔに対する車両の形状モデルとして確定する。このように形状モデルに当てはまるグループｇｎ（反射点群）がある場合、車両を検出したことになる。
【００３７】
画像上範囲推定処理について具体的に説明する。車両の形状モデルが当てはまったグループｇｎがある場合、車両検出部１１では、そのグループｇｎ内の反射点ｒｐｇｎ，ｉ毎に、式（２）により、その反射点ｒｐｇｎ，ｉ＝３次元位置（ｘｇｎ，ｉ，ｙｇｎ，ｉ，ｚｇｎ，ｉ，１）Ｔから画像上の位置Ｐｉｍｇｇｎ，ｉ＝２次元位置（ｕｇｎ，ｉ，ｖｇｎ，ｉ，１）Ｔを計算する。式（２）におけるＰは、レーザレーダ座標系から画像座標系へ変換するための３行４列の変換行列であり、カメラ５の焦点距離などの内部パラメータ、レーザレーダ４とカメラ５との相対位置や向きなどから求められる。また、式（２）におけるｓは、３次元座標系から２次元座標系に投影する際に奥行き方向がなくなることを考慮した奥行きパラメータである。
【数２】
2010250651.tif 000004
【００３８】
位置Ｐｉｍｇｇｎ，ｉを計算する毎に、車両検出部１１では、横位置ｕｇｎ，ｉが左端点位置ＬＰｔｇｎより小さいか否かを判定する。車両検出部１１では、横位置ｕｇｎ，ｉが左端点位置ＬＰｔｇｎより小さいと判定した場合、横位置ｕｇｎ，ｉを左端点位置ＬＰｔｇｎとして設定する。また、車両検出部１１では、横位置ｕｇｎ，ｉが右端点位置ＲＰｔｇｎより大きいか否かを判定する。車両検出部１１では、横位置ｕｇｎ，ｉが右端点位置ＲＰｔｇｎより大きいと判定した場合、横位置ｕｇｎ，ｉを右端点位置ＲＰｔｇｎとして設定する。左端点位置ＬＰｔｇｎは、車両の形状モデルが当てはまったグループｇｎの反射点群の画像上の左端点を探索するためのパラメータであり、初期値として画像の横幅ＩＭＧ＿ＷＩＤＴＨが設定される。右端点位置ＲＰｔｇｎは、車両の形状モデルが当てはまったグループｇｎの反射点群の画像上の右端点を探索するためのパラメータであり、初期値として０が設定される。ちなみに、画像座標系では、画像上の左端の横方向位置ｕが０であり、右方ほど横方向位置ｕが大きくなる。また、画像座標系では、画像上の上端の縦方向位置ｖが０であり、下方ほど縦方向位置ｖが大きくなる。
【００３９】
車両検出部１１では、車両の形状モデルが当てはまったグループｇｎ内の全ての反射点に対して上記の処理を行う。最終的に設定されている左端点位置ＬＰｔｇｎがグループｇｎの画像上の左端点に相当し、右端点位置ＲＰｔｇｎがグループｇｎの画像上の右端点に相当する。
【００４０】
次に、車両検出部１１では、そのグループｇｎ内の全ての反射点ｒｐｇｎ，ｉの３次元位置を用いて、その平均位置ｒｐｍｅａｎｇｎ＝（ｘｍｇｎ，ｙｍｇｎ，ｚｍｇｎ，１）Ｔを計算する。そして、車両検出部１１では、その平均位置ｒｐｍｅａｎｇｎを用いて、式（３）により、グループｇｎの画像上の下端点Ｈｌｏｗｇｎを計算する。また、車両検出部１１では、その平均位置ｒｐｍｅａｎｇｎを用いて、式（４）により、グループｇｎの画像上の上端点Ｈｈｉｇｈｇｎを計算する。式（３）、式（４）におけるＨｖは車両の高さ（例えば、２ｍ）に相当する画像上の量である。式（３）、式（４）におけるｐｉｊは上記した３行４列の変換行列Ｐのｉ行ｊ列目の要素である。なお、画像座標系においては、Ｈｌｏｗｇｎ＞Ｈｈｉｇｈｇｎとなる。
【数３】
2010250651.tif 000005
【００４１】
そして、車両検出部１１では、左端点位置ＬＰｔｇｎ（＝上記の処理で最終的に設定されたＬＰｔｇｎ−ｄｗ）〜右端点位置ＲＰｔｇｎ（＝上記の処理で最終的に設定されたＲＰｔｇｎ＋ｄｗ）を、グループｇｎの反射点群の画像上の横方向の範囲として記憶する。また、車両検出部１１では、上記の処理で計算された下端点位置Ｈｌｏｗｇｎ〜上端点位置Ｈｈｉｇｈｇｎを、グループｇｎの反射点群の画像上の縦方向の範囲として記憶する。この横方向の範囲と縦方向の範囲が、検出した車両の画像上の範囲である。なお、ｄｗは、レーザレーダ４の誤差や点列が反射しなかったケースに対応するためのパラメータであり、レーザレーダ４の横分解能程度の量が設定される。
【００４２】
輪郭抽出部１２について説明する。車両検出部１１で車両を検出し、その車両の画像上の範囲が推定されている場合、輪郭抽出部１２では、その画像上の範囲内でカメラ５で撮像した画像からエッジ（輪郭線）を抽出する。このエッジの抽出方法としては、例えば、ｓｏｂｅｌフィルタを利用する。ｓｏｂｅｌフィルタは、図５（ａ）に示す横エッジ検出用フィルタと図５（ｂ）に示す縦エッジ検出用フィルタを用いて、画像に畳み込み積分する。具体的には、輪郭抽出部１２では、車両検出部１１で推定した画像上の範囲内において、その範囲内の画素（ｕ，ｖ）毎に、各画素の値（例えば、輝度値）Ｉｕ，ｖを用いて、式（５）により横方向のエッジ強度ΔＩｈｕ，ｖを計算するとともに式（６）により縦方向のエッジ強度ΔＩｖｕ，ｖを計算する。さらに、輪郭抽出部１２では、その各エッジ強度ΔＩｈｕ，ｖ，ΔＩｖｕ，ｖを用いて、式（７）によりエッジ強度ΔＩｕ，ｖを計算するとともに式（８）によりエッジ方向θｕ，ｖを計算する。なお、この輪郭（エッジ）の抽出処理は、カメラ５で撮像した画像全体に行ってもよい。
【数４】
2010250651.tif 000006
【００４３】
図６には、カメラ５で撮像したある画像に対して画素毎にエッジ処理を行い、その各画素位置にエッジ強度を設定したエッジ画像（輪郭画像）の一例（車両が写っている部分）を示しており、この画像には前面と左側面が写っている車両が存在する。
【００４４】
車両端点抽出部１３について説明する。車両検出部１１で車両を検出し、その車両の画像上の範囲が推定されている場合、車両端点抽出部１３では、その画像上の範囲内で輪郭抽出部１２で抽出した画素毎のエッジ強度ΔＩｕ，ｖとエッジ方向θｕ，ｖ（角度インデックスθ）を用いて頻度ヒストグラムを作成し、頻度ヒストグラムから頻度の高い２つのエッジ方向を探索し、２つのエッジ方向をそれぞれ持つ画素群のグループのエッジ方向の変化点に基づいて車両の端部を抽出する。
【００４５】
図７には、図６のエッジ画像において、車両検出部１１で推定した画像上の範囲Ａを示している。この画像には前面と左側面が写っている車両が存在しており、前面部におけるエッジ方向（輪郭線の方向）は実線の矢印ＦＤで示す方向であり、左側面部におけるエッジ方向は破線の矢印ＳＤで示す方向である。画像上においてこの前面部のエッジ方向ＦＤと左側面部のエッジ方向ＳＤとは異なっており、このエッジ方向が変化している点が前面と左側面との境界である車両の端点に相当する。そこで、このエッジ方向の変化点を探索するために、頻度ヒストグラムを作成する。
【００４６】
頻度ヒストグラムの作成処理について説明する。ここでは、輪郭抽出部１２で算出したエッジ方向θｕ，ｖをそのまま使用するのではなく、角度の離散化パラメータΔθにより離散化した角度インデックスθを用いて処理を行う。例えば、離散化パラメータΔθが５°の場合、０°以上５°未満のエッジ方向θｕ，ｖに対応する角度インデックスθ＝０となり、５°以上１０°未満のエッジ方向θｕ，ｖに対応する角度インデックスθ＝１となる。
【００４７】
頻度ヒストグラムとしては、図８に示すように、ｘ軸を画像上の横方向の位置ｕ、ｙ軸を角度インデックスθ（エッジ方向θｕ，ｖ（輪郭線方向）に相当）、ｚ軸をエッジ強度ΔＩｕ，ｖで重み付けられた頻度とする３次元のヒストグラムを作成する。エッジ強度ΔＩｕ，ｖで重み付けられた頻度は、画像上の横位置が同じ画素でありかつエッジ方向が同じである各画素のエッジ強度ΔＩｕ，ｖを積算したものである。図８の例の場合、頻度の高いグループとしてグループＧ１とグループＧ２を探索でき、この２つのグループＧ１，Ｇ２はそれぞれ特定のエッジ方向を基準として分布しており、この２つのグループＧ１，Ｇ２からエッジ方向の変化点として画像上の横方向位置ｕｅｄｇｅを抽出できる。また、頻度の高い２つの角度インデックス（エッジ方向）を探索するために、ｘ軸を角度インデックスθ、ｙ軸をエッジ強度ΔＩｕ，ｖで重み付けられた頻度とする２次元のヒストグラムも作成する。
【００４８】
車両端点抽出部１３では、図９に示すように、エッジ画像上で車両検出部１１で推定された横方向範囲ＬＰｔｇｎ〜ＲＰｔｇｎの範囲内で横位置ｕ毎に縦方向範囲Ｈｌｏｗｇｎ〜Ｈｈｉｇｈｇｎの範囲内で縦位置ｖを１画素ずつずらしながら、画像の横位置ｕと角度インデックスθの各組み合わせ毎に、その横位置ｕと角度インデックスθを有する各画素のエッジ強度ΔＩｕ，ｖを頻度ヒストグラムＨｉｓｔｕ，θに積算する。同様に、車両端点抽出部１３では、図９に示すように、横方向範囲ＬＰｔｇｎ〜ＲＰｔｇｎの範囲内で横位置ｕ毎に縦方向範囲Ｈｌｏｗｇｎ〜Ｈｈｉｇｈｇｎの範囲内で縦位置ｖを１画素ずつずらしながら、角度インデックスθ毎に、その角度インデックスθの各画素のエッジ強度ΔＩｕ，ｖを頻度ヒストグラムＨｉｓｔθに積算する。頻度ヒストグラムＨｉｓｔｕ，θは、上記の３次元の頻度ヒストグラムを作成するためのパラメータであり、横位置ｕと角度インデックスθの各組み合わせ毎に設定される。頻度ヒストグラムＨｉｓｔθは、上記の２次元の頻度ヒストグラムを作成するためのパラメータであり、角度インデックスθ毎に設定される。
【００４９】
図９に示す例の場合、画像の上の横位置ｕ＝ＬＰｔｇｎにおいて、画像上の縦位置ｖがＨｌｏｗｇｎのエッジ強度ΔＩｕ，ｖが２０、角度インデックスθが０であり、縦位置ｖがＨｌｏｗｇｎ＋１のエッジ強度ΔＩｕ，ｖが３０、角度インデックスθが１であり、縦位置ｖがＨｌｏｗｇｎ＋２のエッジ強度ΔＩｕ，ｖが５０、角度インデックスθが０である。この場合、３次元の頻度ヒストグラムでは、横位置ｕ＝ＬＰｔｇｎで角度インデックスθ＝０の頻度ヒストグラムＨｉｓｔｕ，θには縦位置ｖ＝Ｈｌｏｗｇｎのエッジ強度ΔＩｕ，ｖ＝２０と縦位置ｖ＝Ｈｌｏｗｇｎ＋２のエッジ強度ΔＩｕ，ｖ＝５０が積算され、横位置ｕ＝ＬＰｔｇｎで角度インデックスθ＝１の頻度ヒストグラムＨｉｓｔｕ，θには縦位置ｖ＝Ｈｌｏｗｇｎ＋１のエッジ強度ΔＩｕ，ｖ＝３０が積算されている。また、２次元の頻度ヒストグラムでは、角度インデックスθ＝０の頻度ヒストグラムＨｉｓｔθには縦位置ｖ＝Ｈｌｏｗｇｎのエッジ強度ΔＩｕ，ｖ＝２０と縦位置ｖ＝Ｈｌｏｗｇｎ＋２のエッジ強度ΔＩｕ，ｖ＝５０が積算され、角度インデックスθ＝１の頻度ヒストグラムＨｉｓｔθには縦位置ｖ＝Ｈｌｏｗｇｎ＋１のエッジ強度ΔＩｕ，ｖ＝３０が積算されている。画像の上の横位置ｕ＝ＬＰｔｇｎについては、この積算処理が縦位置ｖ＝Ｈｈｉｇｈｇｎの画素まで行われる。そして、この積算処理が、横方向範囲ＬＰｔｇｎ〜ＲＰｔｇｎの範囲内の全ての横位置ｕに対して行われる。
【００５０】
頻度の高い角度インデックス（エッジ方向）の探索処理について説明する。頻度ヒストグラムを作成すると、車両端点抽出部１３では、図１０に示すように、角度インデックスθ＝−９０°／Δθ〜９０°／Δθの範囲内で角度インデックスθを１づつずらしながら、２次元の頻度ヒストグラムＨｉｓｔθの中で最も頻度が大きい角度頻度Ｈθ１及びそのときの角度θ１を探索するとともに、２番目に大きい角度頻度Ｈθ２及びそのときの角度θ２を探索する。なお、図１０では、角度インデックスθを１づつずらせながら、それぞれθをずらせた時点での最も大きい頻度を破線の枠で囲んでおり、２番目に大きい頻度を一点鎖線の枠で囲んでおり、最終的に破線の枠で囲まれた頻度が角度頻度Ｈθ１であり、一点鎖線の枠で囲まれた頻度が角度頻度Ｈθ２である。
【００５１】
車両の端部の抽出処理について説明する。頻度が大きい２つの角度インデックスθ１，θ２を探索すると、車両端点抽出部１３では、横方向範囲ＬＰｔｇｎ〜ＲＰｔｇｎの範囲内で１画素ずつずらしながら、角度インデックスθ＝θ１の頻度ヒストグラムＨｉｓｔｕ，θ１の中で閾値ＴＨＲ＿ＨＩＳＴを超えている場合かつ角度インデックスθ＝θ２の頻度ヒストグラムＨｉｓｔｕ，θ２の中で閾値ＴＨＲ＿ＨＩＳＴを超えている場合、式（９）により頻度ヒストグラムＨｉｓｔｕ，θ１と頻度ヒストグラムＨｉｓｔｕ，θ２との頻度比Ｒｈｉｓｔを計算する。閾値ＴＨＲ＿ＨＩＳＴは、頻度が小さいために、誤判定し易い頻度範囲を排除するための閾値である。そして、車両端点抽出部１３では、各横位置ｕについてそれぞれ計算した頻度比Ｒｈｉｓｔの中から最も小さい値Ｒｈｉｓｔｍｉｎを選択し、そのときの横位置ｕを車両の端部ｕｅｄｇｅとして設定する。
【数５】
2010250651.tif 000007
【００５２】
この頻度比Ｒｈｉｓｔが最少となるところは、角度インデックスθ＝θ１を有する各画素の頻度群と角度インデックスθ＝θ２を有する各画素の頻度群においてθ１側の頻度とθ２側の頻度が１：１（すなわち、角度インデックスθ＝θ１を有する画素の頻度と角度インデックスθ＝θ２を有する画素の頻度とが同じ値）になる横位置ｕであり、この横位置ｕにおいて角度インデックス（エッジ方向）が変化している点とみなすことができる。
【００５３】
図１１には、ｘ軸を画像上の横位置ｕとし、ｙ軸を頻度ヒストグラムＨｉｓｔｕ，θとしたグラフ（３次元の頻度ヒストグラムを２次元に投影したもの）において、角度インデックスθ＝θ１を有する画素群のグループＧ１と角度インデックスθ＝θ２を有する画素群のグループＧ２を示している。このグループＧ１とグループＧ２の頻度が同じ値になる横位置ｕにおいて頻度比Ｒｈｉｓｔが最少となり、この横位置ｕを端点ｕｅｄｇｅとする。
【００５４】
車両検出装置１の動作について説明する。特に、ＥＣＵ１０における車両検出部１１の処理については図１２〜１５のフローチャートに沿って説明し、車両端点抽出部１３の処理については図１６、１７のフローチャートに沿って説明する。図１２は、車両検出部におけるメイン処理の流れを示すフローチャートである。図１３は、車両検出部におけるメイン処理の中のグルーピング処理の流れを示すフローチャートである。図１４は、車両検出部におけるメイン処理の中の形状モデル推定処理の流れを示すフローチャートである。図１５は、車両検出部におけるメイン処理の中の画像上範囲推定処理の流れを示すフローチャートである。図１６は、車両端点抽出部における処理の流れを示すフローチャート（前半部）である。図１７は、車両端点抽出部における処理の流れを示すフローチャート（後半部）である。
【００５５】
レーザレーダ４では、所定時間毎に、水平方向にスキャンしながらレーザ光を出射するとともにその反射光を受光し、受光できた各反射点についての情報をレーダ信号としてＥＣＵ１０に送信している。また、カメラ５では、所定時間毎に、自車両の前方を撮像し、画像信号をＥＣＵ１０に送信している。
【００５６】
一定時間毎に、ＥＣＵ１０では、以下の処理を行う。まず、車両検出部１１での処理として、ＥＣＵ１０では、レーザレーダ４からの各反射点についての情報を用いて、反射点のグルーピング処理を行う（Ｓ１）。
【００５７】
グルーピング処理（Ｓ１）に移行すると、レーザレーダ４で検出できた全ての反射点に対して処理を行うために、ＥＣＵ１０では、まず、反射点ｐｔを０で初期化する（Ｓ１０）。また、ＥＣＵ１０では、反射点ｐｔ＝０のグループＩＤであるＧＩＤ０を０で初期化する（Ｓ１１）。
【００５８】
反射点ｐｔが更新される毎に、ＥＣＵ１０では、式（１）により、今回の反射点ｐｔとそれに隣接する前回の反射点ｐｔ−１間の距離ＬＮｐｔ，ｐｔ−１を計算する（Ｓ１２）。そして、ＥＣＵ１０では、距離ＬＮｐｔ，ｐｔ−１が閾値ＴＨＲ＿ＰＴＬ未満か否かを判定する（Ｓ１３）。Ｓ１３にて距離ＬＮｐｔ，ｐｔ−１が閾値ＴＨＲ＿ＰＴＬ未満と判定した場合、ＥＣＵ１０では、今回の反射点ｐｔを前回の反射点ｐｔ−１と同じグループとするために、反射点ｐｔのグループＩＤのＧＩＤｐｔにＧＩＤｐｔ−１を設定する（Ｓ１４）。一方、Ｓ１３にて距離ＬＮｐｔ，ｐｔ−１が閾値ＴＨＲ＿ＰＴＬ以上と判定した場合、ＥＣＵ１０では、今回の反射点ｐｔを前回の反射点ｐｔ−１と異なるグループとするために、反射点ｐｔのグループＩＤのＧＩＤｐｔにＧＩＤｐｔ−１＋１を設定する（Ｓ１５）。
【００５９】
次に、ＥＣＵ１０では、反射点ｐｔを更新するために、ｐｔに１を加算する（Ｓ１６）。そして、ＥＣＵ１０では、更新したｐｔがレーザレーダ４で検出できた反射点の数Ｎｒｐ以上か否かを判定する（Ｓ１７）。Ｓ１７にてｐｔがＮｒｐ以上と判定した場合、今回のグルーピング処理を終了する。一方、Ｓ１７にてｐｔがＮｒｐ未満と判定した場合、ＥＣＵ１０では、Ｓ１２に戻って、更新した反射点ｐｔに対する処理を行う。
【００６０】
グルーピング処理を終了すると、グルーピングした全てのグループに対して処理を行うために、ＥＣＵ１０では、まず、グループｇｎを０で初期化する（Ｓ２）。
【００６１】
グループｇｎが更新される毎に、ＥＣＵ１０では、そのグループｇｎに対して形状モデル推定処理を行う（Ｓ３）。
【００６２】
形状モデル推定処理（Ｓ３）に移行すると、ＥＣＵ１０では、まず、分割位置ｓｐｔを０で初期化する（Ｓ２０）。
【００６３】
分割位置ｓｐｔを更新する毎に、ＥＣＵ１０では、まず、最少誤差ＭＩＮ＿ＳＭｓｐｔを∞で初期化する（Ｓ２１）。また、ＥＣＵ１０では、分割位置ｓｐｔ番目の位置でグループｇｎの反射点群を２つの反射点群ＲＰＴ１＝｛ｒｐｔｇｎ，１，・・・，ｒｐｔｇｎ，ｓｐｔ｝、ＲＰＴ２＝｛ｒｐｔｇｎ，ｓｐｔ，・・・，ｒｐｔｇｎ，Ｎｇｎ｝に分割する（Ｓ２２）。また、事前に用意されている全ての車両の形状モデルに対して処理を行うために、ＥＣＵ１０では、まず、形状モデルｍｏｄｅｌを０で初期化する（Ｓ２３）。
【００６４】
形状モデルｍｏｄｅｌを更新する毎に、ＥＣＵ１０では、その形状モデルの２面を、分割した反射点群ＲＰＴ１と反射点群ＲＰＴ２に当てはめ、形状一致度ＳＭｍｏｄｅｌ，ｓｐｔを計算する（Ｓ２４）。そして、ＥＣＵ１０では、その形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが閾値ＴＨＲ＿ＳＭ未満か否かを判定する（Ｓ２５）。Ｓ２５にて形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが閾値ＴＨＲ＿ＳＭ以上と判定した場合、ＥＣＵ１０では、Ｓ３１の処理に移行し、形状モデルｍｏｄｅｌを更新するために、ｍｏｄｅｌに１を加算する（Ｓ３１）。
【００６５】
Ｓ２５にて形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが閾値ＴＨＲ＿ＳＭ未満と判定した場合、ＥＣＵ１０では、分割した反射点群ＲＰＴ１と反射点群ＲＰＴ２の中で最長部の長さＬＷｍｏｄｅｌ，ｓｐｔを計算する（Ｓ２６）。そして、ＥＣＵ１０では、その最長部の長さＬＷｍｏｄｅｌ，ｓｐｔが所定範囲（ＴＨＲ＿ＬＷ＿ＬＯＷ〜ＴＨＲ＿ＬＷ＿ＨＩＧＨ）内か否かを判定する（Ｓ２７）。最長部の長さＬＷｍｏｄｅｌ，ｓｐｔが所定範囲外と判定した場合、ＥＣＵ１０では、Ｓ３１の処理に移行し、形状モデルｍｏｄｅｌを更新するために、ｍｏｄｅｌに１を加算する（Ｓ３１）。
【００６６】
最長部の長さＬＷｍｏｄｅｌ，ｓｐｔが所定範囲内と判定した場合、ＥＣＵ１０では、形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが最少誤差ＭＩＮ＿ＳＭｓｐｔ未満か否かを判定する（Ｓ２８）。Ｓ２８にて形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが最少誤差ＭＩＮ＿ＳＭｓｐｔ以上と判定した場合、ＥＣＵ１０では、Ｓ３１の処理に移行し、形状モデルｍｏｄｅｌを更新するために、ｍｏｄｅｌに１を加算する（Ｓ３１）。
【００６７】
Ｓ２８にて形状一致度ＳＭｍｏｄｅｌ，ｓｐｔが最少誤差ＭＩＮ＿ＳＭｓｐｔ未満と判定した場合、ＥＣＵ１０では、最少誤差ＭＩＮ＿ＳＭｓｐｔを形状一致度ＳＭｍｏｄｅｌ，ｓｐｔで更新する（Ｓ２９）。また、ＥＣＵ１０では、今回の形状モデルｍｏｄｅｌに対応するモデルパラメータＭＰｍｏｄｅｌ，ｓｐｔを記憶する（Ｓ３０）。そして、ＥＣＵ１０では、形状モデルｍｏｄｅｌを更新するために、ｍｏｄｅｌに１を加算する（Ｓ３１）。
【００６８】
Ｓ３１でｍｏｄｅｌを更新すると、ＥＣＵ１０では、形状モデルｍｏｄｅｌが事前に用意されている形状モデルの数Ｎｍ以上か否かを判定する（Ｓ３２）。Ｓ３２にてｍｏｄｅｌがＮｍ未満と判定した場合、ＥＣＵ１０では、Ｓ２４に戻って、更新した形状モデルｍｏｄｅｌに対する処理を行う。
【００６９】
Ｓ３２にてｍｏｄｅｌがＮｍ以上と判定した場合、ＥＣＵ１０では、分割位置ｓｐｔを更新するために、ｓｐｔに１を加算する（Ｓ３３）。そして、ＥＣＵ１０では、ｓｐｔがグループｇｎの反射点数Ｎｇｎを超えたか否かを判定する（Ｓ３４）。Ｓ３４にてｓｐｔがＮｇｎ以下と判定した場合、ＥＣＵ１０では、Ｓ２１に戻って、更新した分割位置ｓｐｔに対する処理を行う。一方、Ｓ３４にてｓｐｔがＮｇｎ超えたと判定した場合、ＥＣＵ１０では、グループｇｎに対する形状モデル推定処理を終了する。ここで、最終的に、各分割位置ｓｐｔのモデルパラメータＭＰｍｏｄｅｌ，ｓｐｔにパラメータ値が記憶されている場合、今回のグループｇｎの分割位置ｓｐｔにおいて当てはまる車両の形状モデルｍｏｄｅｌがあったことを示しており、そのパラメータ値によって形状モデルを特定できる。
【００７０】
グループｇｎに対する形状モデル推定処理が終了すると、ＥＣＵ１０では、今回のグループｇｎに当てはまる車両形状モデルがあったか否か（すなわち、車両を検出できたか否か）を判定する（Ｓ４）。Ｓ４にて今回のグループｇｎに当てはまる車両形状モデルがなかったと判定した場合、ＥＣＵ１０では、Ｓ６の処理に移行し、グループｇｎを更新するために、ｇｎに１を加算する（Ｓ６）。
【００７１】
Ｓ４にて今回のグループｇｎのある分割位置ｓｐｔにおいて当てはまる車両形状モデルがあったと判定した場合、ＥＣＵ１０では、今回のグループｇｎの反射点群に対する画像上範囲推定処理を行う（Ｓ５）。
【００７２】
画像上範囲推定処理に移行すると、ＥＣＵ１０では、まず、左端点位置ＬＰｔｇｎを画像横幅ＩＭＧ＿ＷＩＤＴＨで初期化し、右端点位置ＲＰｔｇｎを０で初期化する（Ｓ４０）。また、ＥＣＵ１０では、グループｇｎの反射点群内の反射点を更新していくための変数ｉを０で初期化する（Ｓ４１）。
【００７３】
変数ｉ（反射点）を更新する毎に、ＥＣＵ１０では、式（２）により、反射点ｒｐｇｎ，ｉの３次元位置から画像上の２次元位置Ｐｉｍｇｇｎ，ｉを計算する（Ｓ４２）。そして、ＥＣＵ１０では、その画像上の位置Ｐｉｍｇｇｎ，ｉの中の横位置ｕｇｎ，ｉが左端点位置ＬＰｔｇｎより小さいか否かを判定する（Ｓ４３）。Ｓ４３にて横位置ｕｇｎ，ｉが左端点位置ＬＰｔｇｎより小さいと判定した場合、ＥＣＵ１０では、左端点位置ＬＰｔｇｎを横位置ｕｇｎ，ｉで更新する（Ｓ４４）。また、ＥＣＵ１０では、その画像上の位置Ｐｉｍｇｇｎ，ｉの中の横位置ｕｇｎ，ｉが右端点位置ＲＰｔｇｎより大きいか否かを判定する（Ｓ４５）。Ｓ４５にて横位置ｕｇｎ，ｉが右端点位置ＲＰｔｇｎより大きいと判定した場合、ＥＣＵ１０では、右端点位置ＲＰｔｇｎを横位置ｕｇｎ，ｉで更新する（Ｓ４６）。ＥＣＵ１０では、反射点を更新するために、ｉに１を加算する（Ｓ４７）。そして、ＥＣＵ１０では、ｉがグループｇｎの反射点の数Ｎｇｎ以上か否かを判定する（Ｓ４８）。Ｓ４８にてｉがグループｇｎの反射点の数Ｎｇｎ未満と判定した場合、ＥＣＵ１０では、Ｓ４２の処理に戻って、更新した反射点に対する処理を行う。
【００７４】
Ｓ４８にてｉがグループｇｎの反射点の数Ｎｇｎ以上と判定した場合、ＥＣＵ１０では、グループｇｎの反射点群の全ての反射点についての３次元位置を用いて、その平均位置ｒｐｍｅａｎｇｎを計算する（Ｓ４９）。さらに、ＥＣＵ１０では、式（３）、式（４）により、その平均位置ｒｐｍｅａｎｇｎを用いて、グループｇｎの画像上の下端点位置Ｈｌｏｗｇｎと上端点位置Ｈｈｉｇｈｇｎを計算する（Ｓ５０）。
【００７５】
そして、ＥＣＵ１０では、車両の形状モデルが当てはまったグループｇｎの画像上での範囲として、左端点位置ＬＰｔｇｎ＝ＬＰｔｇｎ−ｄｗ、右端点位置ＲＰｔｇｎ＝ＲＰｔｇｎ＋ｄｗ、下端点位置Ｈｌｏｗｇｎ，上端点位置Ｈｈｉｇｈｇｎを記憶する（Ｓ５１）。
【００７６】
画像上判定推定処理が終了すると、ＥＣＵ１０では、グループｇｎを更新するために、ｇｎに１を加算する（Ｓ６）。そして、ＥＣＵ１０では、ｇｎがグルーピングされたグループの数ＧＮ以上か否かを判定する（Ｓ７）。Ｓ７にてｇｎがグループの数ＧＮ未満と判定した場合、ＥＣＵ１０では、Ｓ３の処理に戻って、更新したグループｇｎに対する処理を行う。一方、Ｓ７にてｇｎがグループの数ＧＮ以上と判定した場合、ＥＣＵ１０では、車両検出部１１での処理を終了する。
【００７７】
車両の形状モデルに当てはまるグループｇｎがある場合、輪郭抽出部１２での処理として、ＥＣＵ１０では、カメラ５で撮像した画像を用いて、推定した画像上範囲内で画素（ｕ，ｖ）毎に、各画素の値Ｉｕ，ｖを用いて式（５）により横方向のエッジ強度ΔＩｈｕ，ｖを計算するとともに式（６）により縦方向のエッジ強度ΔＩｖｕ，ｖを計算し、その各エッジ強度ΔＩｈｕ，ｖ，ΔＩｖｕ，ｖを用いて式（７）によりエッジ強度ΔＩｕ，ｖを計算するとともに式（８）によりエッジ方向θｕ，ｖを計算する。これによって、エッジ画像を生成する。
【００７８】
車両の形状モデルに当てはまるグループｇｎがある場合、次に、車両端点抽出部１３の処理として、ＥＣＵ１０では、まず、画像上の横位置ｕと角度インデックスθの全ての組み合わせに対する頻度ヒストグラムＨｉｓｔｕ，θを０で初期化する（Ｓ６０）。また、全ての角度インデックスθに対する頻度ヒストグラムＨｉｓｔθを０で初期化する（Ｓ６１）。また、ＥＣＵ１０では、画像上の横位置ｕを、推定した範囲の左端点位置ＬＰｔｇｎで初期化する（Ｓ６２）。
【００７９】
横位置ｕを更新する毎に、ＥＣＵ１０では、画像上の縦位置ｖを、推定した範囲の上端点位置Ｈｈｉｇｈｇｎで初期化する（Ｓ６３）。
【００８０】
縦移動ｖを更新する毎に、ＥＣＵ１０では、今回の横位置ｕ、縦位置ｖの画素のエッジ方向θｕ，ｖについて、離散化パラメータΔθにより角度インデックスθを計算する（Ｓ６４）。そして、ＥＣＵ１０では、頻度ヒストグラムＨｉｓｔｕ，θに今回の横位置ｕ、縦位置ｖの画素のエッジ強度ΔＩｕ，ｖを加算する（Ｓ６５）。また、ＥＣＵ１０では、頻度ヒストグラムＨｉｓｔθに今回の横位置ｕ、縦位置ｖの画素のエッジ強度ΔＩｕ，ｖを加算する（Ｓ６６）。そして、ＥＣＵ１０では、画像上の縦位置ｖを更新するために、ｖに１を加算する（Ｓ６７）。そして、ＥＣＵ１０では、ｖが推定した範囲の下端点位置Ｈｌｏｗｇｎ以上か否かを判定する（Ｓ６８）。Ｓ６８にてｖが下端点位置Ｈｌｏｗｇｎ未満と判定した場合、ＥＣＵ１０では、Ｓ６４の処理に戻って、更新した縦位置ｖに対する処理を行う。
【００８１】
Ｓ６８にてｖが下端点位置Ｈｌｏｗｇｎ以上と判定した場合、ＥＣＵ１０では、画像上の横位置ｕを更新するために、ｕに１を加算する（Ｓ６９）。そして、ＥＣＵ１０では、ｕが推定した範囲の右端点位置ＲＰｔｇｎ以上か否かを判定する（Ｓ７０）。Ｓ７０にてｕが右端点位置ＲＰｔｇｎ未満と判定した場合、ＥＣＵ１０では、Ｓ６３の処理に戻って、更新した横位置ｕに対する処理を行う。
【００８２】
一方、Ｓ７０にてｕが右端点位置ＲＰｔｇｎ以上と判定した場合、ＥＣＵ１０では、次の処理に移行する。ここまでの処理で、推定された画像上の範囲内に存在する全ての画素のエッジ強度とエッジ方向を用いて、横位置ｕと角度インデックスθの各組み合わせに対してエッジ強度で重み付けした頻度ヒストグラムと角度インデックスθに対してエッジ強度で重み付けした頻度ヒストグラムが作成されたことなる。
【００８３】
次に、ＥＣＵ１０では、角度頻度Ｈθ１と角度頻度Ｈθ２を０でそれぞれ初期化する（Ｓ７１）。また、ＥＣＵ１０では、角度インデックスθを−９０°／Δθで初期化する（Ｓ７２）。
【００８４】
角度インデックスθを更新する毎に、ＥＣＵ１０では、今回の角度インデックスθの頻度ヒストグラムＨｉｓｔθが角度頻度Ｈθ１より大きいか否かを判定する（Ｓ７３）。Ｓ７３にて頻度ヒストグラムＨｉｓｔθが角度頻度Ｈθ１より大きいと判定した場合、ＥＣＵ１０では、角度頻度Ｈθ１としてその頻度ヒストグラムＨｉｓｔθを設定するとともに（Ｓ７４）、対応する角度インデックスθ１として今回の角度インデックスθを設定する（Ｓ７５）。
【００８５】
Ｓ７３にて頻度ヒストグラムＨｉｓｔθが角度頻度Ｈθ１以下と判定した場合、ＥＣＵ１０では、今回の角度インデックスθの頻度ヒストグラムＨｉｓｔθが角度頻度Ｈθ２より大きいか否かを判定する（Ｓ７６）。Ｓ７６にて頻度ヒストグラムＨｉｓｔθが角度頻度Ｈθ２より大きいと判定した場合、ＥＣＵ１０では、角度頻度Ｈθ２としてその頻度ヒストグラムＨｉｓｔθを設定するとともに（Ｓ７７）、対応する角度インデックスθ２として今回の角度インデックスθを設定する（Ｓ７８）。
【００８６】
そして、ＥＣＵ１０では、角度インデックスθを更新するために、θに１を加算する（Ｓ７９）。そして、ＥＣＵ１０では、θが９０°／Δθ以上か否かを判定する（Ｓ８０）。Ｓ８０にてθが９０°／Δθ未満と判定した場合、ＥＣＵ１０では、Ｓ７３の処理に戻って、更新した角度インデックスθに対する処理を行う。
【００８７】
一方、Ｓ８０にてθが９０°／Δθ以上と判定した場合、ＥＣＵ１０では、次の処理に移行する。ここまでの処理で、角度インデックスθに対する頻度ヒストグラムにおいて、最も頻度の大きい角度頻度Ｈθ１とそのときの角度インデックスθ１及び２番目に頻度の大きい角度頻度Ｈθ２とそのときの角度インデックスθ２が探索されたことになる。
【００８８】
次に、ＥＣＵ１０では、最少頻度比Ｒｈｉｓｔｍｉｎを１で初期化する（Ｓ８１）。また、ＥＣＵ１０では、画像上の横位置ｕを、推定した範囲の左端点位置ＬＰｔｇｎで初期化する（Ｓ８２）。
【００８９】
横位置ｕを更新する毎に、ＥＣＵ１０では、今回の横位置ｕと角度インデックスθ１との組み合わせに対応する頻度ヒストグラムＨｉｓｔｕ，θ１が閾値ＴＨＲ＿ＨＩＳＴより大きいか否かを判定する（Ｓ８３）。Ｓ８３にて頻度ヒストグラムＨｉｓｔｕ，θ１が閾値ＴＨＲ＿ＨＩＳＴ以下と判定した場合、ＥＣＵ１０では、Ｓ８８の処理に移行し、次の横位置ｕに更新するために、ｕに１を加算する（Ｓ８８）。
【００９０】
Ｓ８３にて頻度ヒストグラムＨｉｓｔｕ，θ１が閾値ＴＨＲ＿ＨＩＳＴより大きいと判定した場合、ＥＣＵ１０では、今回の横位置ｕと角度インデックスθ２との組み合わせに対応する頻度ヒストグラムＨｉｓｔｕ，θ２が閾値ＴＨＲ＿ＨＩＳＴより大きいか否かを判定する（Ｓ８４）。Ｓ８４にて頻度ヒストグラムＨｉｓｔｕ，θ２が閾値ＴＨＲ＿ＨＩＳＴ以下と判定した場合、ＥＣＵ１０では、Ｓ８８の処理に移行し、次の横位置ｕに更新するために、ｕに１を加算する（Ｓ８８）。
【００９１】
Ｓ８４にて頻度ヒストグラムＨｉｓｔｕ，θ２が閾値ＴＨＲ＿ＨＩＳＴより大きいと判定した場合、ＥＣＵ１０では、式（９）により、頻度ヒストグラムＨｉｓｔｕ，θ１と頻度ヒストグラムＨｉｓｔｕ，θ２から頻度比Ｒｈｉｓｔを計算する（Ｓ８５）。そして、ＥＣＵ１０では、頻度比Ｒｈｉｓｔが最少頻度比Ｒｈｉｓｔｍｉｎ未満か否かを判定する（Ｓ８６）。Ｓ８６にて頻度比Ｒｈｉｓｔが最少頻度比Ｒｈｉｓｔｍｉｎ以上と判定した場合、ＥＣＵ１０では、Ｓ８８の処理に移行し、次の横位置ｕに更新するために、ｕに１を加算する（Ｓ８８）。
【００９２】
Ｓ８６にて頻度比Ｒｈｉｓｔが最少頻度比Ｒｈｉｓｔｍｉｎ未満と判定した場合、ＥＣＵ１０では、最少頻度比Ｒｈｉｓｔｍｉｎとして今回の頻度比Ｒｈｉｓｔを設定し、車両端点ｕｅｄｇｅとして今回の横位置ｕを設定する（Ｓ８７）。そして、ＥＣＵ１０では、次の横位置ｕに更新するために、ｕに１を加算する（Ｓ８８）。ＥＣＵ１０では、横位置ｕが推定した範囲の右端点位置ＲＰｔｇｎ以上か否かを判定する（Ｓ８９）。Ｓ８９にて横位置ｕが右端点位置ＲＰｔｇｎ未満と判定した場合、ＥＣＵ１０では、Ｓ８３に戻って、次の横位置ｕに対する処理を行う。
【００９３】
一方、Ｓ８９にて横位置ｕが右端点位置ＲＰｔｇｎ以上と判定した場合、ＥＣＵ１０では、処理を終了する。最終的に、車両端点ｕｅｄｇｅに格納されている横位置ｕが、画像上での車両の端点となる。ＥＣＵ１０では、この車両端点ｕｅｄｇｅの情報を少なくとも含む車両情報を車両情報信号として運転支援装置に送信する。
【００９４】
この車両検出装置１によれば、画像上の横位置と角度インデックス（エッジ方向）に応じた頻度ヒストグラムと角度インデックスに応じた頻度ヒストグラムを利用することにより、車両の端部を高精度に検出することができる。特に、車両検出装置１では、角度インデックスに応じた頻度ヒストグラムから頻度が大きい２つの角度インデックスを探索し、画像上の横位置と角度インデックスに応じた頻度ヒストグラムからその探索した２つの角度インデックスの変化する画像上の横位置を探索することにより、車両の端部を高精度に検出することができる。
【００９５】
図１８を参照して、第２の実施の形態に係る車両検出装置２について説明する。図１８は、第２の実施の形態に係る車両検出装置の構成図である。
【００９６】
車両検出装置２は、第１の実施の形態に係る車両検出装置１と比較すると、車両の縦長や横長（すなわち、前面・後面の幅や側面の長さ）を推定する構成を追加した点だけが異なる。そのために、車両検出装置２は、レーザレーダ４、カメラ５、ＥＣＵ２０を備えており、ＥＣＵ２０に車両検出部１１、輪郭抽出部１２、車両端点抽出部１３、車両縦横長推定部２４が構成される。
【００９７】
なお、第２の実施の形態では、輪郭抽出部１２が特許請求の範囲に記載するエッジ抽出手段に相当し、車両端点抽出部１３が特許請求の範囲に記載するエッジ分布生成手段及び車両情報検出手段に相当し、車両縦横長推定部２４が特許請求の範囲に記載する車両情報検出手段に相当する。
【００９８】
ＥＣＵ２０は、ＣＰＵ、ＲＯＭ、ＲＡＭなどからなる電子制御ユニットであり、車両検出装置２を統括制御する。ＥＣＵ２０では、ＲＯＭに格納されているアプリケーションプログラムをＲＡＭ上にロードし、ＣＰＵで実行することによって車両検出部１１、輪郭抽出部１２、車両端点抽出部１３、車両縦横長推定部２４を構成する。ＥＣＵ２０では、所定間毎に、レーザレーダ４からレーダ信号、カメラ５から画像信号を受信する。そして、ＥＣＵ２０では、この各信号を用いて各部１１，１２，１３，２４の処理を行い、車両を検出できた場合にはその車両の情報を車両報信号として運転支援装置に送信する。ここでは、車両縦横長推定部２４での処理についてのみ詳細に説明する。
【００９９】
車両縦横長推定部２４について説明する。車両端点抽出部１３で２つの面の境界（一端部）となる車両の端部を抽出しているので、この端部を基準として面における他方の端部を抽出し、その両端部から前面・後面の幅や側面の長さを推定する。他方の端部を抽出する基準としては、推定されている前面又は後面あるいは側面のエッジ方向（輪郭線方向）と同じ方向に閾値以上のエッジ（画素）が連続している位置とする第１の基準と、エッジ方向が垂直方向に閾値以上のエッジがある位置とする第２の基準と、この第１と第２の基準を満たす位置のうち端点間距離が最大となる第３の基準の３つの基準とする。第１の基準の理由としては、車両の各面には固有の輪郭線の方向（発生頻度の高い方向）があるからである。第２の基準の理由としては、車両が比較的直方体に近い形状をしているので、端部付近には垂直方向の輪郭線が多くなっているからである。第３の基準の理由としては、車両側面におけるドアとドアの境界など、面の端部以外にも垂直方向の輪郭線があるので、端点間距離が最大となるものを選択することにより、車両内の端部以外の輪郭線位置を誤検出することを防止するためである。
【０１００】
具体的には、まず、エッジ方向を示す角度インデックスθ１、θ２の各面が画像上で左側の面かあるいは右側の面かを判別するために、車両縦横長推定部２４では、横方向範囲ＬＰｔｇｎ〜ｕｅｄｇｅの範囲内で横方向の位置を１画素づつずらしながら、角度インデックスθ１の頻度ヒストグラムＨｉｓｔｕ，θ１を評価Ｅθ１に積算するとともに、角度インデックスθ２の頻度ヒストグラムＨｉｓｔｕ，θ２を評価Ｅθ２に積算する。そして、車両縦横長推定部２４では、評価Ｅθ１が評価Ｅθ２より大きい場合には角度インデックスθ１の面を画像上で左側の面と判定し、左側エッジ方向θＬにθ１を設定し、右側エッジ方向θＲにθ２を設定する。また、車両縦横長推定部２４では、評価Ｅθ２が評価Ｅθ１より大きい場合には角度インデックスθ２の面を画像上で左側の面と判定し、左側エッジ方向θＬにθ２を設定し、右側エッジ方向θＲにθ１を設定する。
【０１０１】
次に、左側の面における左側の端部を抽出するために、車両縦横長推定部２４では、横方向範囲ＬＰｔｇｎ〜ｕｅｄｇｅの範囲内で横位置ｕ毎に、縦方向範囲Ｈｌｏｗｇｎ〜Ｈｈｉｇｈｇｎの範囲内で縦位置ｖを１画素ずつずらしながら、各縦位置ｖでの角度差ΔθＬ＝｜θＬ−θｕ，ｖ｜が所定範囲（−ＴＨＲ＿ＥＤＧＥ＿θ〜ＴＨＲ＿ＥＤＧＥ＿θ）内であるエッジ（画素）の数をカウントし、そのカウント数をエッジ方向一致数カウンタＮθｅｄｇｅに設定する。所定範囲（−ＴＨＲ＿ＥＤＧＥ＿θ〜ＴＨＲ＿ＥＤＧＥ＿θ）は、面のエッジ方向と同じ方向か否かを判定するための閾値である。また、車両縦横長推定部２４では、横方向範囲ＬＰｔｇｎ〜ｕｅｄｇｅの範囲内で横位置ｕ毎に、縦方向範囲Ｈｌｏｗｇｎ〜Ｈｈｉｇｈｇｎの範囲内で縦位置ｖを１画素ずつずらしながら、各縦位置ｖでのエッジ強度ΔＩｕ，ｖが閾値ＴＨＲ＿ＶＥＤＧＥより大きいエッジ（画素）の数をカウントし、そのカウント数を垂直エッジ数カウンタＮＶｅｄｇｅに設定する。閾値ＴＨＲ＿ＶＥＤＧＥは、垂直エッジか否かを判定するための閾値である。
【０１０２】
そして、車両縦横長推定部２４では、横方向範囲ＬＰｔｇｎ〜ｕｅｄｇｅの範囲内で横位置ｕを１画素づつずらしながら、エッジ方向一致数カウンタＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭより多くかつ垂直エッジ数カウンタＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭより多くなる横位置のうち、最も左側の位置ｕを左側の端点ｕＬとして設定する。閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭは、面のエッジ方向（角度インデックス）と同じ方向のエッジの数が所定数以上あるか否かを判定するための閾値である。閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭは、垂直エッジが所定数以上あるか否かを判定するための閾値である。
【０１０３】
次に、右側の面における右側の端部を抽出するために、車両縦横長推定部２４では、横方向範囲ＲＰｔｇｎ〜ｕｅｄｇｅの範囲内で横位置ｕ毎に、縦方向範囲Ｈｌｏｗｇｎ〜Ｈｈｉｇｈｇｎの範囲内で縦位置ｖを１画素ずつずらしながら、各縦位置ｖでの角度差ΔθＲ＝｜θＲ−θｕ，ｖ｜が所定範囲（−ＴＨＲ＿ＥＤＧＥ＿θ〜ＴＨＲ＿ＥＤＧＥ＿θ）内であるエッジ（画素）の数をカウントし、そのカウント数をエッジ方向一致数カウンタＮθｅｄｇｅに設定する。また、車両縦横長推定部２４では、横方向範囲ＲＰｔｇｎ〜ｕｅｄｇｅの範囲内で横位置ｕ毎に、縦方向範囲Ｈｌｏｗｇｎ〜Ｈｈｉｇｈｇｎの範囲内で縦位置ｖを１画素ずつずらしながら、各縦位置ｖでのエッジ強度ΔＩｕ，ｖが閾値ＴＨＲ＿ＶＥＤＧＥより大きいエッジ（画素）の数をカウントし、そのカウント数を垂直エッジ数カウンタＮＶｅｄｇｅに設定する。
【０１０４】
そして、車両縦横長推定部２４では、横方向範囲ＲＰｔｇｎ〜ｕｅｄｇｅの範囲内で横位置ｕを１画素づつずらしながら、エッジ方向一致数カウンタＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭより多くかつ垂直エッジ数カウンタＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭより多くなる横位置のうち、最も右側の位置ｕを右側の端点ｕＲとして設定する。
【０１０５】
最後に、車両縦横長推定部２４では、車両の端点ｕｅｄｇｅと左側の端点ｕＬと間の距離を計算し、これを左側の面の長さとして設定する。また、車両縦横長推定部２４では、車両の端点ｕｅｄｇｅと右側の端点ｕＲと間の距離を計算し、これを右側の面の長さとして設定する。
【０１０６】
車両検出装置２の動作について説明する。車両検出装置２の動作では、第１の実施の形態に係る車両検出装置１の動作と比較すると、車両端点抽出部１３が終了した後に車両縦横長推定部２４での処理を行うことだけが異なるので、ＥＣＵ２０における車両縦横長推定部２４での処理についてのみ説明する。ＥＣＵ２０における車両縦横長推定部２４の処理については図１９〜２１のフローチャートに沿って説明する。図１９は、車両縦横長推定部における処理の流れを示すフローチャート（前半部）である。図２０は、車両縦横長推定部における処理の流れを示すフローチャート（中盤部）である。図２１は、車両縦横長推定部における処理の流れを示すフローチャート（後半部）である。
【０１０７】
車両端点抽出部１３での処理が終了すると、車両縦横長推定部２４の処理として、ＥＣＵ２０では、まず、角度インデックスθ１に対する評価Ｅθ１と角度インデックスθ２に対する評価Ｅθ２を０で初期化する（Ｓ９０）。また、ＥＣＵ２０では、画像上の横位置ｕを、車両の端点ｕｅｄｇｅで初期化する（Ｓ９１）。
【０１０８】
横位置ｕを更新する毎に、ＥＣＵ２０では、今回の横位置ｕと角度インデックスθ１に対する頻度ヒストグラムＨｉｓｔｕ，θ１を評価Ｅθ１に加算する（Ｓ９２）。また、ＥＣＵ２０では、今回の横位置ｕと角度インデックスθ２に対する頻度ヒストグラムＨｉｓｔｕ，θ２を評価Ｅθ２に加算する（Ｓ９３）。
【０１０９】
ＥＣＵ２０では、画像上の横位置ｕを更新するために、ｕから１を減算する（Ｓ９４）。そして、ＥＣＵ２０では、ｕが推定した範囲の左端点位置ＬＰｔｇｎ以下か否かを判定する（Ｓ９５）。Ｓ９５にてｕが左端点位置ＬＰｔｇｎより大きいと判定した場合、ＥＣＵ２０では、Ｓ９２の処理に戻って、更新した横位置ｕに対する処理を行う。
【０１１０】
Ｓ９５にてｕが左端点位置ＬＰｔｇｎ以下と判定した場合、ＥＣＵ２０では、評価Ｅθ１が評価Ｅθ２より大きいか否かを判定する（Ｓ９６）。評価Ｅθ１が評価Ｅθ２より大きいと判定した場合、ＥＣＵ２０では、左側エッジ方向θＬに角度インデックスθ１を設定するとともに、右側エッジ方向θＲに角度インデックスθ２を設定する（Ｓ９７）。一方、評価Ｅθ２が評価Ｅθ１より大きいと判定した場合、ＥＣＵ２０では、左側エッジ方向θＬに角度インデックスθ２を設定するとともに、右側エッジ方向θＲに角度インデックスθ１を設定する（Ｓ９８）。ここまでで、角度インデックスθ１、θ２の各面が、画像上の左右のどちら側の面かが特定される。
【０１１１】
次に、左側の面の端点を抽出するために、ＥＣＵ２０では、まず、画像上の横位置ｕを車両の端部ｕｅｄｇｅで初期化する（Ｓ９９）。
【０１１２】
横位置ｕを更新する毎に、ＥＣＵ２０では、垂直エッジ数カウンタＮＶｅｄｇｅとエッジ方向一致数カウンタＮθｅｄｇｅを０で初期化する（Ｓ１００）。また、ＥＣＵ２０では、画像上の縦位置ｖを、推定した範囲の上端点位置Ｈｈｉｇｎｇｎで初期化する（Ｓ１０１）。
【０１１３】
縦移動ｖを更新する毎に、ＥＣＵ２０では、今回の横位置ｕ、縦位置ｖの画素のエッジ方向θｕ，ｖと左側エッジ方向θＬとの角度差ΔθＬを計算し、その角度差ΔθＬが所定範囲（−ＴＨＲ＿ＥＤＧＥ＿θ〜ＴＨＲ＿ＥＤＧＥ＿θ）内か否かを判定する（Ｓ１０２）。Ｓ１０１にて角度差ΔθＬが所定範囲内と判定した場合、ＥＣＵ２０では、エッジ方向一致数カウンタＮθｅｄｇｅをカウントアップする（Ｓ１０３）。また、ＥＣＵ２０では、今回の横位置ｕ、縦位置ｖの画素のエッジ強度ΔＩｕ，ｖが閾値ＴＨＲ＿ＶＥＤＧＥより大きいか否かを判定する（Ｓ１０４）。Ｓ１０４にてエッジ強度ΔＩｕ，ｖが閾値ＴＨＲ＿ＶＥＤＧＥより大きいと判定した場合、ＥＣＵ２０では、垂直エッジ数カウンタＮＶｅｄｇｅをカウントアップする（Ｓ１０５）。そして、ＥＣＵ２０では、画像上の縦位置ｖを更新するために、ｖに１を加算する（Ｓ１０６）。そして、ＥＣＵ２０では、ｖが推定した範囲の下端点位置Ｈｌｏｗｇｎ以上か否かを判定する（Ｓ１０７）。Ｓ１０７にてｖが下端点位置Ｈｌｏｗｇｎ未満と判定した場合、ＥＣＵ２０では、Ｓ１０２の処理に戻って、更新した縦位置ｖに対する処理を行う。
【０１１４】
Ｓ１０７にてｖが下端点位置Ｈｌｏｗｇｎ以上と判定した場合、ＥＣＵ２０では、エッジ方向一致数カウンタＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭより多いか否かを判定する（Ｓ１０８）。Ｓ１０８にてＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭ以下と判定した場合、ＥＣＵ２０では、Ｓ１１３に移行する。一方、Ｓ１０８にてＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭより多いと判定した場合、ＥＣＵ２０では、垂直エッジ数カウンタＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭより多いか否かを判定する（Ｓ１０９）。Ｓ１０９にてＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭ以下と判定した場合、ＥＣＵ２０では、Ｓ１１１に移行し、画像上の横位置ｕを更新するために、ｕから１を減算する（Ｓ１１１）。
【０１１５】
一方、Ｓ１０９にてＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭより多いと判定した場合、ＥＣＵ２０では、左側の車両端点ｕＬに今回の横位置ｕを設定する（Ｓ１１０）。そして、ＥＣＵ２０では、画像上の横位置ｕを更新するために、ｕから１を減算する（Ｓ１１１）。そして、ＥＣＵ２０では、ｕが推定した範囲の左端点位置ＬＰｔｇｎ以下か否かを判定する（Ｓ１１２）。Ｓ１１２にてｕが左端点位置ＬＰｔｇｎより大きいと判定した場合、ＥＣＵ２０では、Ｓ１００の処理に戻って、更新した横位置ｕに対する処理を行う。Ｓ１１２にてｕが左端点位置ＬＰｔｇｎ以下と判定した場合、ＥＣＵ２０では、次の処理に移行する。ここまでで、車両の左側の面の端点が抽出されたことになる。
【０１１６】
次に、右側の面の端点を抽出するために、ＥＣＵ２０では、まず、画像上の横位置ｕを車両の端部ｕｅｄｇｅに初期化する（Ｓ１１３）。
【０１１７】
横位置ｕを更新する毎に、ＥＣＵ２０では、垂直エッジ数カウンタＮＶｅｄｇｅとエッジ方向一致数カウンタＮθｅｄｇｅを０で初期化する（Ｓ１１４）。また、ＥＣＵ２０では、画像上の縦位置ｖを、推定した範囲の上端点位置Ｈｈｉｇｈｇｎで初期化する（Ｓ１１５）。
【０１１８】
縦移動ｖを更新する毎に、ＥＣＵ２０では、今回の横位置ｕ、縦位置ｖの画素のエッジ方向θｕ，ｖと右側エッジ方向θＲとの角度差ΔθＲを計算し、その角度差ΔθＲが所定範囲（−ＴＨＲ＿ＥＤＧＥ＿θ〜ＴＨＲ＿ＥＤＧＥ＿θ）内か否かを判定する（Ｓ１１６）。Ｓ１１６にて角度差ΔθＲが所定範囲内と判定した場合、ＥＣＵ２０では、エッジ方向一致数カウンタＮθｅｄｇｅをカウントアップする（Ｓ１１７）。また、ＥＣＵ２０では、今回の横位置ｕ、縦位置ｖの画素のエッジ強度ΔＩｕ，ｖが閾値ＴＨＲ＿ＶＥＤＧＥより大きいか否かを判定する（Ｓ１１８）。Ｓ１１８にてエッジ強度ΔＩｕ，ｖが閾値ＴＨＲ＿ＶＥＤＧＥより大きいと判定した場合、ＥＣＵ２０では、垂直エッジ数カウンタＮＶｅｄｇｅをカウントアップする（Ｓ１１９）。そして、ＥＣＵ２０では、画像上の縦位置ｖを更新するために、ｖに１を加算する（Ｓ１２０）。そして、ＥＣＵ２０では、ｖが推定した範囲の下端点位置Ｈｌｏｗｇｎ以上か否かを判定する（Ｓ１２１）。Ｓ１２１にてｖが下端点位置Ｈｌｏｗｇｎ未満と判定した場合、ＥＣＵ２０では、Ｓ１１６の処理に戻って、更新した縦位置ｖに対する処理を行う。
【０１１９】
Ｓ１２１にてｖが下端点位置Ｈｌｏｗｇｎ以上と判定した場合、ＥＣＵ２０では、エッジ方向一致数カウンタＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭより多いか否かを判定する（Ｓ１２２）。Ｓ１２２にてＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭ以下と判定した場合、ＥＣＵ２０では、処理を終了する。一方、Ｓ１２２にてＮθｅｄｇｅが閾値ＴＨＲ＿ＥＤＧＥ＿θ＿ＮＵＭより多いと判定した場合、ＥＣＵ２０では、垂直エッジ数カウンタＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭより多いか否かを判定する（Ｓ１２３）。Ｓ１２３にてＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭ以下と判定した場合、ＥＣＵ２０では、Ｓ１２５に移行し、画像上の横位置ｕを更新するために、ｕに１を加算する（Ｓ１２５）。
【０１２０】
一方、Ｓ１２３にてＮＶｅｄｇｅが閾値ＴＨＲ＿ＶＥＤＧＥ＿ＮＵＭより多いと判定した場合、ＥＣＵ２０では、右側の車両端点ｕＲに今回の横位置ｕを設定する（Ｓ１２４）。そして、ＥＣＵ２０では、画像上の横位置ｕを更新するために、ｕに１を加算する（Ｓ１２５）。そして、ＥＣＵ２０では、ｕが推定した範囲の右端点位置ＲＰｔｇｎ以上か否かを判定する（Ｓ１２６）。Ｓ１２６にてｕが右端点位置ＲＰｔｇｎ未満と判定した場合、ＥＣＵ２０では、Ｓ１１４の処理に戻って、更新した横位置ｕに対する処理を行う。Ｓ１２６にてｕが右端点位置ＲＰｔｇｎ以上と判定した場合、ＥＣＵ２０では、端点を抽出する処理を終了する。ここまでで、車両の右側の面の端点が抽出されたことになる。
【０１２１】
そして、ＥＣＵ２０では、車両の端点ｕｅｄｇｅと左側の端点ｕＬと間の距離及び車両の端点ｕｅｄｇｅと右側の端点ｕＲと間の距離を計算する。そして、ＥＣＵ２０では、車両端点ｕｅｄｇｅの情報及び各面の長さや幅の情報を少なくとも含む車両情報を車両情報信号として運転支援装置に送信する。
【０１２２】
この車両検出装置２によれば、第１の車両検出装置１と同様の効果を有する上に、下記の効果も有する。車両検出装置２によれば、頻度ヒストグラムを利用することにより、車両の各面の他方側の端部も高精度に検出でき、その他方側の端部と車両の端点から車両の各面の幅（長さ）を高精度に検出することができる。特に、車両検出装置２によれば、上記した他方側の端点の抽出方法を用いることにより、車両の向きによって奥側の端点のパーツが良く見えない場合でも抽出が可能であり、また、車両のドアとドアの境界などの車両端部以外の垂直方向の輪郭線が強く観測される場合でも抽出が可能である。
【０１２３】
図１、図２２、図２３を参照して、第３の実施の形態に係る車両検出装置３について説明する。図２２は、車両端点抽出部における分割位置判断処理の説明図である。図２３は、１つの分割位置候補に対する輪郭比較方法の説明図である。
【０１２４】
車両検出装置３は、第１の実施の形態に係る車両検出装置１と比較すると、車両端点抽出部においてより精度良く端部を抽出するための処理を追加した点だけが異なる。そのために、車両検出装置３は、レーザレーダ４、カメラ５、ＥＣＵ３０を備えており、ＥＣＵ３０に車両検出部１１、輪郭抽出部１２、車両端点抽出部３３が構成される。
【０１２５】
なお、第３の実施の形態では、輪郭抽出部１２が特許請求の範囲に記載するエッジ抽出手段に相当し、車両端点抽出部３３が特許請求の範囲に記載するエッジ分布生成手段及び車両情報検出手段に相当する。
【０１２６】
ＥＣＵ３０は、ＣＰＵ、ＲＯＭ、ＲＡＭなどからなる電子制御ユニットであり、車両検出装置３を統括制御する。ＥＣＵ３０では、ＲＯＭに格納されているアプリケーションプログラムをＲＡＭ上にロードし、ＣＰＵで実行することによって車両検出部１１、輪郭抽出部１２、車両端点抽出部３３を構成する。ＥＣＵ３０では、所定時間毎に、レーザレーダ４からレーダ信号、カメラ５から画像信号を受信する。そして、ＥＣＵ３０では、この各信号を用いて各部１１，１２，３３の処理を行い、車両を検出できた場合にはその車両の情報を車両報信号として運転支援装置に送信する。ここでは、車両端点抽出部３３での処理についてのみ詳細に説明する。
【０１２７】
車両端点抽出部３３について説明する。この車両端点抽出部３３では、第１の実施の形態に係る車両端点抽出部１３での端点抽出処理を行う前に、分割位置判断処理を行い、この分割位置判断処理で判断したおおよその端点がある位置（範囲）を用いて第１の実施の形態で行った同様の端点抽出処理を行う。この分割位置判断処理では、図２２に示すように、分割位置候補ｄｎ毎に、形状モデルｍｏｄｅｌを当てはめ、輪郭抽出部１２で抽出した輪郭（エッジ）と比較し、２つの面を分割する分割位置を推定する。これは、車両は直方体に近い形状をしており、形状モデルの線はその直方体を水平面で切断したような結果になるので、車両のボディ下部やバンパといった部分の輪郭線と形状モデルがおおよそ平行になっているという性質を利用することにより、各面を分割する位置（レーザレーダによる反射点の２点）を推定できる。
【０１２８】
具体的には、車両端点抽出部３３では、分割位置候補ｄｎ毎に、図２３に示すように、車両検出部１１で検出されたグループの反射点を各面モデルの代表点ｒｅｐｄｎ，ｍ１，ｒｅｐｄｎ，ｍ２として抽出する。ここで、抽出した代表点の数をカウントしておく。以降では、カウントした代表点の数を、前面・後面モデルではＭ１個（ｍ１：１〜Ｍ１）、側面モデルＭ２個（ｍ２：１〜Ｍ２）であるとする。この前面・後面モデル側の代表点ｒｅｐｄｎ，ｍ１と側面モデル側の代表点ｒｅｐｄｎ，ｍ２との境界位置が、分割位置候補となる。図２３の例では、Ｍ１個、Ｍ２個共に、４個である。なお、代表点は、反射点以外でもよく、形状モデルから一定間隔で抽出してもよい。
【０１２９】
そして、車両端点抽出部３３では、形状モデルの中の前面・後面モデルと側面モデルに対してそれぞれ、図２３に示すように、各面モデルの代表点間ｂｍｉ毎に輪郭線（エッジ）と比較する範囲を画像上に設定し、その設定した範囲内において各代表点間を結んだ方位に近い方位のエッジの強度の総和Ｅｍｄｎ，ｍｏｄｅｌを計算する。図２３の例では、前面モデルにおいて、ｒｅｐｄｎ，１とｒｅｐｄｎ，２との間に範囲Ａ１が設定され、ｒｅｐｄｎ，２とｒｅｐｄｎ，３との間に範囲Ａ２が設定され、ｒｅｐｄｎ，３とｒｅｐｄｎ，４との間に範囲Ａ３が設定され、範囲Ａ１内でｒｅｐｄｎ，１とｒｅｐｄｎ，２を結んだ方位Ｄ１に近い方位の各エッジの強度ΔＩｕ，ｖと範囲Ａ２内でｒｅｐｄｎ，２とｒｅｐｄｎ，３を結んだ方位Ｄ２に近い方位の各エッジの強度ΔＩｕ，ｖと範囲Ａ３内でｒｅｐｄｎ，３とｒｅｐｄｎ，４を結んだ方位Ｄ３に近い方位の各エッジの強度ΔＩｕ，ｖを積算し、その積算値を前モデルでの総和Ｅｍｄｎ，ｍｏｄｅｌとする。同様に、側面モデルにおいても、範囲Ａ５内でｒｅｐｄｎ，５とｒｅｐｄｎ，６を結んだ方位Ｄ５に近い方位の各エッジの強度ΔＩｕ，ｖと範囲Ａ６内でｒｅｐｄｎ，６とｒｅｐｄｎ，７を結んだ方位Ｄ６に近い方位の各エッジの強度ΔＩｕ，ｖと範囲Ａ７内でｒｅｐｄｎ，７とｒｅｐｄｎ，８を結んだ方位Ｄ７に近い方位の各エッジの強度ΔＩｕ，ｖを積算し、その積算値を側面モデルでの総和Ｅｍｄｎ，ｍｏｄｅｌとする。さらに、車両端点抽出部３３では、前面・後面モデルの総和Ｅｍｄｎ，ｍｏｄｅｌと側面モデルの総和Ｅｍｄｎ，ｍｏｄｅｌとを加算し、その加算値を推定した形状モデルと画像上の輪郭線の一致度の評価値Ｅｍｄｎとして設定する。
【０１３０】
車両端点抽出部３３では、上記の処理を、全ての分割位置候補ｄｎについてそれぞれ行い、各分割位置候補ｄｎの評価値Ｅｍｄｎを求める。さらに、車両端点抽出部３３では、全ての分割位置候補ｄｎの評価値Ｅｍｄｎの中から最大値を探索し、評価値Ｅｍｄｎが最大となる分割位置候補ｄｎを分割位置として抽出する。そして、車両端点抽出部３３では、この分割位置近傍（例えば、前面・後面モデル側の代表点ｒｅｐｄｎ，ｍ１の中の分割位置に最も近い代表点と側面モデル側の代表点ｒｅｐｄｎ，ｍ２の中の分割位置に最も近い代表点間）を探索範囲として、第１の実施の形態に係る端点抽出処理を行う。ちなみに、第１の実施の形態では、車両検出部１１で推定した左端点位置ＬＰｔｄｎと右端点位置ＲＰｔｄｎ間を探索範囲としていた。
【０１３１】
なお、処理の高速化のため、抽出した分割位置をそのまま車両端点としてもよい。というのは、形状モデルの線は、各面の輪郭線の頻度の高い方位とほぼ一致するとともに形状モデルの当てはまり度が高ければ形状的観点では分割位置が車両端点位置となるからである。また、形状モデル内の分割位置と車両端点抽出処理での車両端点位置の真値に対する誤差分布の統計モデル（例えば、ガウス分布）を作成し、その統計モデルからベイズ推定により真値を求めてもよい。
【０１３２】
上記の画像上の範囲を設定する処理について詳細に説明する。車両端点抽出部３３では、形状モデルの中の前面・後面モデルと側面モデルに対してそれぞれ、各面モデルの代表点間ｂｍｉ（ｉは、１又は２であり、前面・後面モデルが１であり、２が側面モデルを示す。）毎に、式（１０）、式（１１）により、代表点間ｂｍｉに対応する代表点ｒｅｐｄｎ，ｍｉ，ｒｅｐｄｎ，ｍｉ＋１の画像上の位置ＲＰｄｎ，ｍｉ＝（ｒｕｄｎ，ｍｉ，ｒｖｄｎ，ｍｉ，１）Ｔ、ＲＰｄｎ，ｍｉ＋１＝（ｒｕｄｎ，ｍｉ＋１，ｒｖｄｎ，ｍｉ＋１，１）Ｔをそれぞれ計算する。
【数６】
2010250651.tif 000008
【０１３３】
そして、車両端点抽出部３３では、画像上の位置ＲＰｄｎ，ｍｉの横位置ｒｕｄｎ，ｍｉとＲＰｄｎ，ｍｉ＋１の横位置ｒｕｄｎ，ｍｉ＋ｉのうち、大きいほうを右端ＲＰｕｄｎ，ｂｍｉに設定し、小さいほうを左端ＬＰｕｄｎ，ｂｍｉに設定する。
【０１３４】
また、車両端点抽出部３３では、画像上の位置ＲＰｄｎ，ｍｉの縦位置ｒｖｄｎ，ｍｉとＲＰｄｎ，ｍｉ＋１の縦位置ｒｖｄｎ，ｍｉ＋ｉの平均値ｒｖｄｎ，ｂｍｉを計算し、その平均値ｒｖｄｎ，ｂｍｉに所定値ＴＨＲ＿ＥＶＬ＿ＥＤＧＥを加減算し、高さ範囲（ｒｖｄｎ，ｂｍｉ−ＴＨＲ＿ＥＶＬ＿ＥＤＧＥ〜ｒｖｄｎ，ｂｍｉ＋ＴＨＲ＿ＥＶＬ＿ＥＤＧＥ）を計算する。所定値ＴＨＲ＿ＥＶＬ＿ＥＤＧＥは、車両検出部１１で推定した高さ範囲（Ｈｌｏｗｇｎ〜Ｈｈｉｇｈｇｎ）を一定割合Ｓｃ小さくした値である。Ｓｃは、評価に使用しない輪郭線（エッジ）が入らないように調整される。
【０１３５】
そして、車両端点抽出部３３では、この右端ＲＰｕｄｎ，ｂｍｉ、左端ＬＰｕｄｎ，ｂｍｉ、下端ｒｖｄｎ，ｂｍｉ−ＴＨＲ＿ＥＶＬ＿ＥＤＧＥ、上端ｒｖｄｎ，ｂｍｉ＋ＴＨＲ＿ＥＶＬ＿ＥＤＧＥを各面モデルの代表点間ｂｍｉの画像上の範囲として登録する。
【０１３６】
上記の総和Ｅｄｎ，ｍｏｄｅｌ（ｍｏｄｅｌは、前面・後面モデル又は側面モデルである）の計算処理について詳細に説明する。車両端点抽出部３３では、形状モデルの中の前面・後面モデルと側面モデルに対してそれぞれ、各面モデルの代表点間ｂｍｉ毎に、式（１０）、式（１１）により代表点間ｂｍｉに対応する代表点ｒｅｐｄｎ，ｍｉ，ｒｅｐｄｎ，ｍｉ＋１の画像上の位置ＲＰｄｎ，ｍｉ、ＲＰｄｎ，ｍｉ＋１をそれぞれ計算し、その画像上の位置ＲＰｄｎ，ｍｉ、ＲＰｄｎ，ｍｉ＋１間を結んだ方位θｂｍｉを計算する。そして、車両端点抽出部３３では、代表点間ｂｍｉ毎に上記で設定した範囲内で、各画素のエッジ方向θｕ，ｖと方位θｂｍｉとの差をそれぞれ計算し、その各差が所定範囲（−ＴＨＲ＿ＥＤＧＥ＿θ〜ＴＨＲ＿ＥＤＧＥ＿θ）以内である画素のエッジ強度ΔＩｕ，ｖを積算して総和Ｅｄｎ，ｂｍｉを計算する。全ての代表点間ｂｍｉの総和Ｅｄｎ，ｂｍｉを計算すると、車両端点抽出部３３では、その全ての代表点間ｂｍｉの総和Ｅｄｎ，ｂｍｉを積算して総和Ｅｄｎ，ｍｏｄｅｌを計算する。
【０１３７】
車両検出装置３の動作について説明する。車両検出装置３の動作では、第１の実施の形態に係る車両検出装置１の動作と比較すると、車両端点抽出部３３での分割位置判断処理だけが追加されるので、ＥＣＵ３０における車両端点抽出部３３での分割位置判断処理についてのみ説明する。ＥＣＵ３０における車両端点抽出部３３での分割位置判断処理については図２４〜２６のフローチャートに沿って説明する。図２４は、車両端点抽出部における分割位置判断処理の流れを示すフローチャートである。図２５は、車両端点抽出部における分割位置判断処理の中の画像上範囲設定処理の流れを示すフローチャートである。図２６は、車両端点抽出部における分割位置判断処理の中の輪郭線強度総和計算処理の流れを示すフローチャートである。
【０１３８】
車両検出部１１及び輪郭抽出部１２での処理が終了すると、車両端点抽出部３３の分割位置判断処理として、ＥＣＵ３０では、まず、分割位置候補ｄｎを０で初期化する（Ｓ１３０）。
【０１３９】
分割位置候補ｄｎを更新する毎に、ＥＣＵ３０では、今回の分割位置候補ｄｎに応じて、前面・後面モデルの代表点ｒｅｐｄｎ，ｍ１と側面モデルの代表点ｒｅｐｄｎ，ｍ２を抽出する（Ｓ１３１）。
【０１４０】
そして、ＥＣＵ３０では、前面・後面モデルと側面モデルのうちの中から順次モデルを選択する（Ｓ１３２）。選択したモデル毎に、ＥＣＵ３０では、各代表点間ｂｍｉでの輪郭線と比較するための画像上範囲の設定処理に移行する（Ｓ１３３）。
【０１４１】
画像上範囲設定処理に移行すると、ＥＣＵ３０では、まず、代表点間ｂｍｉを１で初期化する（Ｓ１４０）。
【０１４２】
代表点間ｂｍｉを更新する毎に、ＥＣＵ３０では、式（１０）、式（１１）により、代表点間ｂｍｉに対応する代表点ｒｅｐｄｎ，ｍｉ，ｒｅｐｄｎ，ｍｉ＋１の画像上の位置ＲＰｄｎ，ｍｉ，ＲＰｄｎ，ｍｉ＋１をそれぞれ計算する（Ｓ１４１）。そして、ＥＣＵ３０では、画像上の位置ＲＰｄｎ，ｍｉ，ＲＰｄｎ，ｍｉ＋１の各横位置のうち、大きいほうを右端ＲＰｕｄｎ，ｂｍｉに設定し、小さいほうを左端ＬＰｕｄｎ，ｂｍｉに設定する（Ｓ１４２）。また、ＥＣＵ３０では、画像上の位置ＲＰｄｎ，ｍｉ，ＲＰｄｎ，ｍｉ＋１の各縦位置の平均値ｒｖｄｎ，ｂｍｉを計算する（Ｓ１４３）。そして、ＥＣＵ３０では、その平均値ｒｖｄｎ，ｂｍｉを基準として一定の高さ範囲（ｒｖｄｎ，ｂｍｉ−ＴＨＲ＿ＥＶＬ＿ＥＤＧＥ〜ｒｖｄｎ，ｂｍｉ＋ＴＨＲ＿ＥＶＬ＿ＥＤＧＥ）を計算する（Ｓ１４４）。そして、ＥＣＵ３０では、その右端ＲＰｕｄｎ，ｂｍｉ、左端ＬＰｕｄｎ，ｂｍｉ、下端ｒｖｄｎ，ｂｍｉ−ＴＨＲ＿ＥＶＬ＿ＥＤＧＥ、上端ｒｖｄｎ，ｂｍｉ＋ＴＨＲ＿ＥＶＬ＿ＥＤＧＥを代表点間ｂｍｉの画像上の範囲として登録する（Ｓ１４５）。そして、ＥＣＵ３０では、代表点間ｂｍｉを更新するために、ｂｍｉに１を加算する（Ｓ１４６）。そして、ＥＣＵ３０では、ｂｍｉが代表点の数Ｍｉ以上か否かを判定する（Ｓ１４７）。Ｓ１４７にてｂｍｉが代表点の数Ｍｉ未満と判定した場合、ＥＣＵ３０では、Ｓ１４１の処理に戻って、更新した代表点間ｂｍｉに対する処理を行う。
【０１４３】
一方、Ｓ１４７にてｂｍｉが代表点の数Ｍｉ以上と判定した場合、ＥＣＵ３０では、画像上範囲設定処理を終了する。
【０１４４】
画像上範囲設定処理を終了すると、ＥＣＵ３０では、全ての代表点間ｂｍｉについての設定した範囲内において各代表点間を結んだ方位に近い方位の輪郭線のエッジ強度の総和Ｅｍｄｎ，ｍｏｄｅｌの計算処理に移行する（Ｓ１３４）。
【０１４５】
輪郭線のエッジ強度の総和Ｅｍｄｎ，ｍｏｄｅｌの計算処理に移行すると、ＥＣＵ３０では、まず、代表点間ｂｍｉを１で初期化する（Ｓ１５０）。
【０１４６】
代表点間ｂｍｉを更新する毎に、ＥＣＵ３０では、式（１０）、式（１１）により代表点間ｂｍｉに対応する代表点ｒｅｐｄｎ，ｍｉ，ｒｅｐｄｎ，ｍｉ＋１の画像上の位置ＲＰｄｎ，ｍｉ、ＲＰｄｎ，ｍｉ＋１をそれぞれ計算し、その画像上の位置ＲＰｄｎ，ｍｉ、ＲＰｄｎ，ｍｉ＋１間を結んだ方位θｂｍｉを計算する（Ｓ１５１）。そして、ＥＣＵ３０では、代表点間ｂｍｉに対して、設定した範囲内の各画素のエッジ方向θｕ，ｖと方位θｂｍｉとの差をそれぞれ計算し、その各差が所定範囲（−ＴＨＲ＿ＥＤＧＥ＿θ〜ＴＨＲ＿ＥＤＧＥ＿θ）以内である画素のエッジ強度ΔＩｕ，ｖを積算して総和Ｅｄｎ，ｂｍｉを計算する（Ｓ１５２）。そして、ＥＣＵ３０では、代表点間ｂｍｉを更新するために、ｂｍｉに１を加算する（Ｓ１５３）。そして、ＥＣＵ３０では、ｂｍｉが代表点の数Ｍｉ以上か否かを判定する（Ｓ１５４）。Ｓ１５４にてｂｍｉが代表点の数Ｍｉ未満と判定した場合、ＥＣＵ３０では、Ｓ１５１の処理に戻って、更新した代表点間ｂｍｉに対する処理を行う。
【０１４７】
一方、Ｓ１５４にてｂｍｉが代表点の数Ｍｉ以上と判定した場合、ＥＣＵ３０では、その全ての代表点間ｂｍｉの総和Ｅｄｎ，ｂｍｉを積算して総和Ｅｄｎ，ｍｏｄｅｌを計算する（Ｓ１５５）。
【０１４８】
総和Ｅｍｄｎ，ｍｏｄｅｌの計算処理を終了すると、ＥＵ３０では、前面・後面モデル及び側面モデルの両方に対する処理を実行したか否かを判定する（Ｓ１３５）。Ｓ１３５にて一方のモデルに対する処理しか実行していないと判定した場合、ＥＣＵ３０では、Ｓ１３２の処理に戻って、他方のモデルを選択し、その他方のモデルに対する処理を行う。
【０１４９】
Ｓ１３５にて両方のモデルに対する処理を実行したと判定した場合、ＥＣＵ３０では、前面・後面モデルの総和Ｅｍｄｎ，ｍｏｄｅｌと側面モデルの総和Ｅｍｄｎ，ｍｏｄｅｌとを加算し、その加算値を推定した形状モデルと画像上の輪郭線（エッジ）との一致度の評価値Ｅｍｄｎとする（Ｓ１３６）。そして、ＥＣＵ３０では、分割位置候補ｄｎを更新するために、ｄｎに１を加算する（Ｓ１３７）。そして、ＥＣＵ３０では、ｄｎが分割位置候補数ＧＮ以上か否かを判定する（Ｓ１３８）。Ｓ１３８にてｄｎが分割位置候補数ＧＮ未満と判定した場合、ＥＣＵ３０では、Ｓ１３１の処理に戻って、更新した分割位置候補ｄｎに対する処理を行う。
【０１５０】
一方、Ｓ１３８にてｄｎが分割位置候補数ＧＮ以上と判定した場合、ＥＣＵ３０では、全ての分割位置候補ｄｎの評価値Ｅｍｄｎの中から最大値を探索し、評価値Ｅｍｄｎが最大となる分割位置候補ｄｎを分割位置として抽出する（Ｓ１３９）。
【０１５１】
そして、車両端点抽出部３３では、この抽出した分割位置ｄｎの２点の代表点ｒｅｐｄｎ，ｍｉ，ｒｅｐｄｎ，ｍｉ＋１の画像上の位置ＲＰｄｎ，ｍｉ、ＲＰｄｎ，ｍｉ＋１を左端点位置と右端点位置（探索範囲）として、第１の実施の形態の車両端点抽出部１３で行った同様の端点抽出処理を行う。
【０１５２】
この車両検出装置３によれば、第１の車両検出装置１と同様の効果を有する上に、下記の効果も有する。車両検出装置３によれば、車両端点の探索範囲として分割位置を抽出することにより、車両端点をより高精度に抽出することができる。
【０１５３】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【０１５４】
例えば、本実施の形態では車両に搭載される車両検出装置に適用したが、衝突防止装置、車間制御装置などの運転支援装置や周辺監視装置などの他の装置にも適用可能である。
【０１５５】
また、本実施の形態では自車両の前方の車両を検出する場合に適用したが、後方などの他の方向での車両の検出にも適用可能である。
【０１５６】
また、本実施の形態では車両を検出し、車両の画像上の範囲を推定するためにレーザレーダのレーダ情報を用いる構成としたが、ミリ波レーダなどの他のレーダのレーダ情報を用いてもよい、あるいは、カメラによる画像を用いてパターン認識などによる他の方法で推定してもよい。
【０１５７】
また、本実施の形態では画像上の横位置と角度インデックスに応じた頻度ヒストグラムと角度インデックスに応じた頻度ヒストグラムを利用する構成としたが、エッジ分布状態を示すものとしては他の形態のものを利用してもよい。また、角度インデックスを用いることなく、エッジ方向をそのまま用いてもよい。
【０１５８】
また、本実施の形態では車両の情報として車両の端部と各面の幅や長さを検出する構成としたが、エッジ分布から検出できる他の車両の情報を検出してもよい。
【符号の説明】
【０１５９】
１，２，３…車両検出装置、４…レーザレーダ、５…カメラ、１０，２０，３０…ＥＣＵ、１１…車両検出部、１２…輪郭抽出部、１３，３３…車両端点抽出部、２４…車両縦横長推定部
【図１】
2010250651.tif 000009
【図２】
2010250651.tif 000010
【図３】
2010250651.tif 000011
【図４】
2010250651.tif 000012
【図５】
2010250651.tif 000013
【図６】
2010250651.tif 000014
【図７】
2010250651.tif 000015
【図８】
2010250651.tif 000016
【図９】
2010250651.tif 000017
【図１０】
2010250651.tif 000018
【図１１】
2010250651.tif 000019
【図１２】
2010250651.tif 000020
【図１３】
2010250651.tif 000021
【図１４】
2010250651.tif 000022
【図１５】
2010250651.tif 000023
【図１６】
2010250651.tif 000024
【図１７】
2010250651.tif 000025
【図１８】
2010250651.tif 000026
【図１９】
2010250651.tif 000027
【図２０】
2010250651.tif 000028
【図２１】
2010250651.tif 000029
【図２２】
2010250651.tif 000030
【図２３】
2010250651.tif 000031
【図２４】
2010250651.tif 000032
【図２５】
2010250651.tif 000033
【図２６】
2010250651.tif 000034