警告表示方法および警告表示プログラム
【課題】グルーピングの枠移動を精度よく予測し、より正確に危険物の存在を車両の運転者に警告する警告表示方法および警告表示プログラムを提供する。
【解決手段】警告表示方法は撮像した車両周囲の画像から特徴量を検出するステップと、検出した特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、グルーピングされた画像領域に含まれる物体画像の車両に対する危険度を示す信用度を設定するステップと、信用度が所定の高さ以上であると、運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、グルーピングされた画像領域の次フレームにおける位置を、グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均とにもとづいて算出した加速度を用いて予測するステップとを有する。
【解決手段】警告表示方法は撮像した車両周囲の画像から特徴量を検出するステップと、検出した特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、グルーピングされた画像領域に含まれる物体画像の車両に対する危険度を示す信用度を設定するステップと、信用度が所定の高さ以上であると、運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、グルーピングされた画像領域の次フレームにおける位置を、グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均とにもとづいて算出した加速度を用いて予測するステップとを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、警告表示方法および警告表示プログラムに関する。
【背景技術】
【0002】
自動車などの車両の運転を支援するための技術に、車外を撮像する車載カメラの画像やレーザレーダなどを用いて車両周囲の物体を検出し、この物体と車両とが衝突する可能性が高いとその旨の情報を車両の運転者に警告する技術がある。
【0003】
この種の物体検出方法としては、たとえば車載カメラの画像から特徴点を抽出し、車両からの距離等の属性(特徴量)が同一の特徴点をグルーピングする方法などが挙げられる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−276906号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、現在の1枚のフレームや、現在と直近の2枚のフレームを用いる場合、ノイズ等の誤差によって特徴量を誤検出してしまう場合がある。また、現在の1枚のフレームや現在と直近の2枚のフレームを用いる場合、特徴点の加速度を検出することができない。このため、検出対象物体が車両に対して加速度を有する運動をしていると、次フレームにおけるグルーピング領域の位置予測を誤ってしまう。したがって、大きな加速度をもって運動している物体や、突然近づいてくる物体に対応することが難しい。
【0006】
また、検出される特徴点が少ない場合はグルーピング対象から外すようにしている場合、遠くの物体は破棄されることが多くなる。この場合、たとえば遠くから高速で接近する物体を的確に検出することが難しい。
【0007】
本発明は、上述した事情を考慮してなされたもので、グルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告するができる警告表示方法および警告表示プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一実施形態に係る警告表示方法は、上述した課題を解決するために、車両に設けられたカメラにより撮像された前記車両の周囲の画像から特徴量を検出するステップと、前記検出された特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、前記グルーピングされた画像領域に含まれる物体画像の前記車両に対する危険度を示す信用度を設定するステップと、前記信用度が所定の高さ以上であると、前記車両の運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、前記グルーピングされた画像領域の次フレームの画像内における位置を、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて算出した加速度を用いて予測するステップと、を有する方法である。
【図面の簡単な説明】
【0009】
【図1】本発明の一実施形態に係る警告表示方法を実施するための警告表示装置の一例を示すブロック図。
【図2】図1に示す主制御部のCPUにより、グルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告する際の手順を示すフローチャート。
【図3】1フレーム画像を複数の領域に分割した様子の一例を示す説明図。
【図4】特徴点を4角形の領域で囲む様子の一例を示す説明図。
【図5】特徴点を8角形の領域で囲む様子の一例を示す説明図。
【図6】(a)は特徴量検出部により取得された動きベクトルの一例を示す説明図、(b)は(a)で示す例において4角形でグルーピングを行う様子の一例を示す説明図、(c)は(a)で示す例において8角形でグルーピングを行う様子の一例を示す説明図。
【図7】特徴点を3角形の領域で囲む様子の一例を示す説明図。
【図8】(a)は画像生成部により生成された画像内に物体、車線および水平線が含まれる場合の一例を示す説明図、(b)は(a)に示す例において右側車線と正8角形の一辺の傾きをそろえる場合の一例を示す説明図。
【図9】グルーピングデータ比較部により、属性が同じであると判定された特徴点の領域同士が重複するか否かを判定するための条件を示す説明図。
【図10】図2のステップS9で信用度調整部により実行される信用度調整処理の手順を示すサブルーチンフローチャート。
【図11】警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置に表示させる様子の一例を示す説明図。
【図12】警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置に表示させる際に、領域線を2次曲線で丸める場合の一例を示す説明図。
【図13】(a)は警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置に表示させる際に、頂点を円で丸める方法を説明するための図、(b)は(a)の破線で囲んだ部分の拡大図、(c)は頂点を円で丸めた場合の一例を示す説明図。
【図14】(a)は隣接する領域線よりもさらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図、(b)隣接する領域線よりさらに隣の領域線より、さらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図。
【図15】1フレーム画像を複数の領域に分割し、分割領域ごとにグルーピング領域内であるか否かを判定される場合のグルーピング領域内の彩色方法の一例を示す説明図。
【図16】カメラの撮像画像を別視点の画像や歪みを正した画像にしてグルーピングを行う様子の一例を示す説明図。
【図17】1フレームの画像を互いに重複する複数の領域に分割してグルーピングを行う場合の例について示す説明図。
【図18】図17に示す互いに重複する分割領域を用いる場合において4角形でグルーピングを行う様子の一例を示す説明図。
【図19】図17に示す互いに重複する分割領域を用いる場合において8角形でグルーピングを行う様子の一例を示す説明図。
【図20】3角形領域から4角形領域に領域線を変える方法の一例を示す説明図。
【図21】グルーピングの領域線数を増やす方法の一例を示す説明図。
【図22】1つのグルーピングで凹んだ形状を表す際の1つの基点と角度領域との関係の一例を示す説明図。
【図23】凹領域線を更新する様子の一例を示す説明図。
【図24】図22に示す例において1つのグルーピングで凹んだ形状を表した様子の一例を示す説明図。
【発明を実施するための形態】
【0010】
本発明に係る警告表示方法および警告表示プログラムの実施の形態について、添付図面を参照して説明する。
【0011】
図1は、本発明の一実施形態に係る警告表示方法を実施するための警告表示装置10の一例を示すブロック図である。
【0012】
警告表示装置10は、カメラ11、主制御部12、灯火装置16、クラクション17、スピーカ18および表示装置19を有する。
【0013】
カメラ11は、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサにより構成され、自家用自動車等の車両の周囲の映像を取り込んで画像データを生成して主制御部12に与える。
【0014】
たとえば後方を監視する場合、カメラ11は車両後部のナンバープレート付近に路面と平行な線からやや下向きに配設される。カメラ11には、より広範な車両外画像が取得可能なように広角レンズや魚眼レンズが取り付けられてもよい。また、車両の側方を監視する場合、カメラ11はサイドミラー付近に配設される。また、複数のカメラ11を用いることにより広範な車外周囲画像を取り込むようにしてもよい。
【0015】
主制御部12は、たとえばCPU、RAM、ROMを備えたマイクロコントローラにより構成される。主制御部12のCPUは、ROMなどの記憶媒体に記憶された警告表示プログラムおよびこのプログラムの実行のために必要なデータをRAMへロードし、このプログラムに従ってグルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告する処理を実行する。
【0016】
主制御部12のRAMは、CPUが実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。主制御部12のROMなどの記憶媒体は、警告表示プログラムや、これらのプログラムを実行するために必要な各種データを記憶する。
【0017】
なお、ROMをはじめとする記憶媒体は、磁気的もしくは光学的記録媒体または半導体メモリなどの、CPUにより読み取り可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は図示しないネットワーク接続部を介して電子ネットワークを介してダウンロードされるように構成してもよい。
【0018】
なお、この場合、ネットワーク接続部は、ネットワークの形態に応じた種々の情報通信用プロトコルを実装し、この各種プロトコルに従って主制御部12と他の車両のECUなどの電気機器とを電子ネットワークを介して接続する。この接続には、電子ネットワークを介した電気的な接続などを適用することができる。ここで電子ネットワークとは、電気通信技術を利用した情報通信網全般を意味し、無線/有線LAN(Local Area Network)やインターネット網のほか、電話通信回線網、光ファイバ通信ネットワーク、ケーブル通信ネットワークおよび衛星通信ネットワークなどを含む。
【0019】
灯火装置16は、一般的なヘッドライトにより構成され、主制御部12により制御されて点滅(いわゆるパッシング)を行うことにより、たとえば自車両の外部に対して警告を行う。
【0020】
クラクション17は、主制御部12により制御されて自車両の外部に対して警告音を出力する。
【0021】
スピーカ18は、自車両の車内に設けられ、主制御部12により制御されて自車両の運転者に対してビープ音や危険が迫っていることを知らせるための情報などの各種情報に対応した音声を出力する。
【0022】
表示装置19は、運転者が視認可能な位置に設けられ、車載用の一般的なディスプレイやカーナビゲーションシステム、HUD(ヘッドアップディスプレイ)などの表示出力装置を用いることができ、主制御部12の制御に従って、カメラ11の撮像画像や危険が迫っていることを知らせるための情報などの各種情報を表示する。
【0023】
続いて、主制御部12のCPUによる機能実現部の構成および動作について説明する。
【0024】
図1に示すように、主制御部12のCPUは、警告表示プログラムによって、少なくとも画像生成部21、特徴量検出部22、グルーピング処理部23として機能する。この各部21−23は、RAMの所要のワークエリアを、データの一時的な格納場所として利用する。なお、これらの機能実現部は、CPUを用いることなく回路などのハードウエアロジックによって構成してもよい。
【0025】
図2は、図1に示す主制御部12のCPUにより、グルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告する際の手順を示すフローチャートである。図2において、Sに数字を付した符号は、フローチャートの各ステップを示す。
【0026】
画像生成部21は、カメラ11から得た画像データにもとづいてフレーム画像を生成する(ステップS1)。
【0027】
図3は、1フレーム画像を複数の領域に分割した様子の一例を示す説明図である。
【0028】
特徴量検出部22は、分割領域ごとに、特徴量を検出する(図2のステップS2)。特徴量は、それぞれ画像上の座標(画素)に関連付けられている。
【0029】
分割領域の走査順は、たとえば左上の領域から順次右の領域へ進み、右端の領域の走査後2列目の左端へ戻り、2列目を順次右へ進むことを右下の領域まで繰り返すいわゆるラスタ形式などで行う。
【0030】
特徴量を検出する方法としては、ソナーなどのセンサで距離を検出する方法や、画像の画素値から検出する方法などがある。画像から特徴量を検出する方法には、ステレオカメラによる視差値にもとづいて画像内の特徴点までの距離を検出する方法や、画像内の特徴点に対応する動きベクトルを検出する方法がある。動きベクトルの検出方法は、勾配法や、ブロックマッチング等の画像処理による方法がよく知られている。
【0031】
そこで、本実施形態に係る特徴量検出部22は、勾配法やブロックマッチング法などを用いて、画像生成部21により生成された複数のフレーム画像から画素ごとに動きベクトルを算出することによって、画像内の移動物および静止物を検出し、静止物を検出すると、車両と衝突するおそれがあるか否かを判定するとともに、車両から静止物までの距離を特徴量として算出する。
【0032】
グルーピング処理部23は、グルーピングデータ比較部31、グルーピング実行部32、信用度調整部33、警告表示部34、グルーピングデータ更新部35およびグルーピングデータ格納部36を有する。
【0033】
グルーピングデータ比較部31は、特徴量検出部22によって検出された特徴量(属性)にもとづいて同一のグルーピングとすべきか否かの判定を全てのグルーピングデータについて行う(図2のステップS3−5)。グルーピングは、属性が同じものどうしで行うことが好ましい。属性としては、たとえば車両からの距離や、動きベクトルの向き、移動物か静止物か、衝突するおそれがあるか否か、などを用いることができる。ルーピングデータ比較部31は、特徴量検出部22によって検出された特徴量(属性)が同一の特徴点を抽出する。
【0034】
また、グルーピングデータ比較部31は、図2のステップS3において、属性が同じであると判定された特徴点の領域同士が重複するか否かを判定する。本実施形態において、グルーピングデータは時間的に継承させて信用度の確認に用いられる。このため、ラベリングなどの方法を用いて各特徴量の座標情報を保持すると、データ量が大きくなってしまう。また、ラベリングを用いる場合、突発的なノイズが生じて特徴量が拾えないと、対処することが難しい。
ここで、特徴量の領域の設定方法について簡単に説明する。
【0035】
図4は、特徴点を4角形の領域で囲む様子の一例を示す説明図である。
【0036】
特徴量は領域を持たず特徴点の座標(x0、y0)に関連付けられる。このため、図4に示すように、特徴点を縦と横に広げて領域にする。このとき、計算を簡単にするために、それぞれの方向の領域線(Ac、Bc)をパラメータ(ac、bc)での位置とすると次の関係式を得る。
ac = x0 (縦線)
bc = y0 (横線)
【0037】
これらのパラメータは、x、y座標上では次のような直線に見える。
ac = x (縦線)
bc = y (横線)
【0038】
特徴点から領域を得るために、マイナス側(Am、Bm)とプラス側(Ap、Bp)を用意する。マイナス側のパラメータとプラス側のパラメータをそれぞれ(am、bm)と(ap、bp)で表すと、次の関係式を得る。
ap = ac + aw
am = ac - aw
bp = bc + bw
bm = bc - bw
【0039】
領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離する場合は、
bw = aw
【0040】
とする。awに応じてグルーピングしたい距離を設定することができる。
【0041】
図5は、特徴点を8角形の領域で囲む様子の一例を示す説明図である。また、図6(a)は特徴量検出部22により取得された動きベクトルの一例を示す説明図であり、(b)は(a)で示す例において4角形でグルーピングを行う様子の一例を示す説明図であり、(c)は(a)で示す例において8角形でグルーピングを行う様子の一例を示す説明図である。
【0042】
図6に示すように、8角形でグルーピングすると、4角形でグルーピングする場合よりも領域の輪郭の柔軟性が高いため、グルーピングの形状精度を上げることができ、特徴量が違う物体を同じグルーピングにしてしまう弊害を未然に防ぐことができる(図6(b)および(c)参照)。
【0043】
8角形でグルーピングする場合、図5に示すように、特徴点を縦と横と斜めに広げて領域にする。このとき、計算を簡単にするために、それぞれの方向の領域線(Ac、Bc、Cc、Dc)をパラメータ(ac、bc、cc、dc)での位置とすると次の関係式を得る。
ac = x0 (縦線)
bc = y0 (横線)
cc = x0 + y0 (右上がり線)
dc = y0 - x0 (右下がり線)
【0044】
これらのパラメータはx、y座標上では次のような直線に見える。
ac = x (縦線)
bc = y (横線)
cc = x + y (右上がり線)
dc = y - x (右下がり線)
【0045】
特徴点から領域を得るために、マイナス側(Am、Bm、Cm、Dm)とプラス側(Ap、Bp、Cp、Dp)を用意する。それぞれのマイナス側のパラメータおよびプラス側のパラメータをそれぞれ(am、bm、cm、dm)および(ap、bp、cp、dp)で表すと、次の関係式を得る。
ap = ac + aw
am = ac - aw
bp = bc + bw
bm = bc - bw
cp = cc + cw
cm = cc - cw
dp = dc + dw
dm = dc - dw
【0046】
領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離とする場合は、
bw = aw
cw = aw・√(2)
dw = aw・√(2)
【0047】
とする。awに応じてグルーピングしたい距離を設定することができる。
【0048】
図7は、特徴点を3角形の領域で囲む様子の一例を示す説明図である。
【0049】
計算量を削減するためには、3角形でグルーピングするとよい。3角形でグルーピングする場合、それぞれの領域線が次のように表されたとする。
ax・x + ay・y + az = 0
bx・x + by・y + bz = 0
cx・x + cy・y + cz = 0
【0050】
傾きだけは固定にする必要があるのでax、ay、bx、by、cx、cyは固定となる。計算を簡単にするために、それぞれの方向の領域線(Ac、Bc、Cc)をパラメータ(ac、bc、cc)での位置とすると次の関係式を得る。
ac = ax・x0 + ay・y0
bc = bx・x0 + by・y0
cc = cx・x0 + cy・y0
【0051】
特徴点から領域を得るために、片側のみ広げた領域線を(As、Bs、Cs)とし、パラメータ(ap、bp、cp)で表すと、次の関係式を得る。
as = ac + apole・aw
bs = bc + bpole・bw
cs = cc + cpole・cw
【0052】
ここでapole、bpole、cpoleは1か−1であり極性である。1か−1は、まずapole、bpole、cpoleのいずれか一つを1か−1かに決め、その場合において特徴量の座標が囲める方の極性を選ぶとよい。
【0053】
領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離とする場合は、
bw = aw・(√(bx・bx + by・by)) / (√(ax・ax + ay・ay))
cw = aw・(√(cx・cx + cy・cy)) / (√(ax・ax + ay・ay))
とする。awに応じてグルーピングしたい距離を設定することができる。
【0054】
1辺を真横の底辺としてのそれぞれの傾きが60°ずれている傾きとするためには、たとえば次のようにすればよい。
ax = 0
ay = 1
bx = √(3)
by = 2
cx = √(3)
cy = -2
apole = 1
bpole = -1
cpole = 1
【0055】
以上、4角形、8角形、3角形の例について説明したが、他の多角形であってもよい。また、いずれか1つの領域線を水平線や車線その他の傾きと同じ傾きとしたい場合であれば、一番傾きが近いものがその傾きとなるように置き換えてもよい。また、その傾きを基準として直角方向の領域線の傾きを直角に変えてもよい。また、その傾きを基準として他の傾きも変えて正8角形を形成する直線と同じ傾きの領域線としてもよい。また、その傾きを追加して16角形としてもよいし、水平線方向だけを追加した10角形としてもよいし、4角形から水平線方向だけを追加した6角形としてもいし、水平線ではなく22.5°ずらした状態にして、正16角形を形成する直線と同じ傾きの領域線としてもよいし、さらに領域線を増やしてn角形としてもよい。
【0056】
たとえば、いずれか1つの領域線を水平線の傾きに合わせて、正8角形を形成する直線と同じ傾きの領域線となる8角形を作成する場合を考える。たとえば水平線が次のように表せるものとする。
y = a0・x + b0 (a0 = d0 / c0)
【0057】
上記のCc、Dcはa0=−1、a0=1として計算したものと同等であり、座標での値はb0と同等であることが分かる。そのためcw、dwはb0の変化量であるため縦線(aw)や横線(bw)に比べて√2倍の値になることが分かる。
【0058】
図8(a)は、画像生成部21により生成された画像内に物体、車線および水平線が含まれる場合の一例を示す説明図であり、(b)は(a)に示す例において右側車線と正8角形の一辺の傾きをそろえる場合の一例を示す説明図である。
【0059】
たとえば図8に示すように車線の右側と同じ傾きの領域線をEcとしパラメータをecすると、a0を使用しない場合はc0とd0で表し次のように書ける。
ec = c0・y0 - d0・x0
【0060】
なお、このとき、計算を簡単にするためにc0とd0を整数としてもよい。
【0061】
領域にするためにマイナス側(Em)とプラス側(Ep)を用意する。それぞれのパラメータをem、epとして表すと、
ep = ec + ew
em = ec - ew
となり、ewは次のようになる。
ew = ew・√(c0・c0 + d0・d0)
【0062】
同様にEcの傾きと直角となるFc、Fp、Fmは、パラメータfc、fp、fmで表すと下記のようになる。
fc = d0・y0 + c0・x0
fp = fc + fw
fm = fc - fw
fw = aw・√(c0・c0 + d0・d0)
【0063】
45°傾いた領域線Gc、Gp、Gm、Hc、Hp、Hmは、パラメータgc、gp、gm、hc、hp、hmで表すと下記のようになる。
gc = (c0-d0)・y0 - (c0+d0)・x0
gp = gc + gw
gm = gc - gw
gw = aw・√((c0-d0)・(c0-d0) + (c0+d0)・(c0+d0))
hc = (hc+hd)・y0 + (c0-d0)・x0
hp = hc + hw
hm = hc - hw
hw = aw・√((c0+d0)・(c0+d0) + (c0-d0)・(c0-d0))
【0064】
このように、特徴点ごとに所定の多角形領域を設定することができる。
【0065】
図9は、グルーピングデータ比較部31により属性が同じであると判定された特徴点の領域同士が重複するか否かを判定するための条件を示す説明図である。
【0066】
グルーピングデータ比較部31は、以上のように設定された多角形領域について、図9に示す条件にもとづいて、属性が同じであると判定された特徴点の領域同士が重複するか否かを判定する(図2のステップS3)。
【0067】
たとえばAp、Amを例にとり、グループの領域線のパラメータをap1、am1とし、特徴量の領域線のパラメータをap2、am2とする。この場合、重複しているかの判定式は下記のように表せる。
((ap1 ≧ am2) And (ap1 ≦ ap2)) OR
((am1 ≧ am2) And (am1 ≦ ap2)) OR
((ap2 ≧ am1) And (ap2 ≦ ap1)) OR
((am2 ≧ am1) And (am2 ≦ ap1))
図9から明らかなように、この4つの条件のうち一つは無くてもよい。
【0068】
グルーピングデータ比較部31は、以上の4条件をすべての傾きについて検証し、すべての条件が満たされた場合、領域が重複していると判定する。
【0069】
グルーピング実行部32は、グルーピングデータ比較部31により重複していると判定された領域をグルーピングすることを全ての特徴量の検出が終了するまで繰り返す(図2のステップS6−7)。このとき、グルーピングの領域はそれぞれの外側となる。たとえば、3角形の場合には、一つの領域線asをap1(apoleが−1であればam1)とする。そして、am1(apoleが−1であればap1)は領域線と交差する2つの領域線(bs、cs)の交点(xa、ya)を導くことにより求める。(xa、ya)は次の連立方程式を解くことにより求めることができる。
bs = bx・xa + by・ya
cs = cx・xa + cy・ya
【0070】
得られた交点から、ak(= ax・xa + ay・ya)を作成する。このakがam1(apoleが−1であればap1)となる。こうして得られた平行な2領域線を用いることにより、グルーピングデータ比較部31は重複判定を行うことができる。また、重複していた場合のグルーピング後の領域は、領域線asから作られた方(apoleが1であればap1)での外側となる。
【0071】
3角形以外にも、対面する平行な領域線が存在しない場合には、元の領域線と平行で、グルーピングの対面側で接する領域線を用意する。接する位置は、決まった隣あう2つの領域線の交点となるため、事前にどの交点で接するか確認しておけばよい。
【0072】
グルーピング実行部32は、グルーピングの領域線を、比較した2つのグルーピングの領域線のプラス側の大きいほう、マイナス側の小さい方で更新する。更新後の領域が広すぎる場合は、グルーピングせず小さい領域で扱い自由度を持たせても良い。
【0073】
グルーピングをする際に引き継がれる特徴量のデータとしては、信用度、データ数、平均動きベクトル、平均距離などが挙げられるほか、元の特徴量で一番カメラに近い座標と動きベクトル(たとえば水平線から下に離れていて正面に近い座標)や、元の特徴量で一番カメラから遠い座標と動きベクトル(たとえば水平線から上に離れていて正面から遠い座標)など他にも考えられる。また、得られた特徴量のデータにもとづいて、平均や最大値や最小値を求め、これらを利用してもよい。
【0074】
グルーピング実行部32によりグルーピングされたデータは、通常、分割領域(図2参照)ごとに走査した特徴量にもとづいてグルーピングされている。このため、同じ属性で領域が重なっていても、グルーピングがされていない場合がある。これを防ぐため、グルーピングデータのグルーピングも行っておくとよい(図2のステップS8)。
【0075】
信用度調整部33は、得られたグルーピング結果により、グルーピングデータが何を意味しているかの判定を行う(図2のステップS9)。本実施形態では、信用度を用いて、信用度調整部33により対象のグルーピングが危険であるか否かを判定する。そして、危険であると判定されると、その旨の情報を警告表示部34により表示装置19を介して警告表示を行う。
【0076】
図10は、図2のステップS9で信用度調整部33により実行される信用度調整処理の手順を示すサブルーチンフローチャートである。
【0077】
ステップS901において、信用度調整部33は、動きベクトルの数の変化割合が所定閾値以下か否かを判定する。ここで、動きベクトルの数の変化割合とは、変化後の動きベクトル数mを変化前の動きベクトル数nで除した値m/nをいうものとする。この変化割合m/nが所定閾値(たとえば0.5など)以下とならなかった場合は、ノイズではないと判定し、信用度をアップさせる(たとえば+1)(ステップS902)。一方、所定閾値以下となった場合は、ノイズの可能性があるため、信用度をダウンさせる(たとえばー2)(ステップS903)。
【0078】
次に、ステップS904において、信用度調整部33は、動きベクトルの数の変化割合が所定閾値(たとえば1.5など)以上か否かを判定する。動きベクトルの数や範囲が突然増加した場合は、車両近傍の動きである可能性がある。車両近傍の動きは、車両にとって危険な動きであるといえる。そこで、この場合は信用度をアップさせる(たとえば+1)(ステップS905)。
【0079】
次に、ステップS906において、信用度調整部33は、動きベクトルが相対的に車両に近づいてくるものであるかあるいは近いグルーピングであるかを判定する。相対的に向かってくる場合や近いグルーピングの場合は危険物である可能性があるため、信用度をアップさせる(たとえば+1)(ステップS907)。一方、相対的に遠ざかるものである場合は、信用度をダウンさせる(たとえばー1)(ステップS908)。
【0080】
次に、ステップS909において、信用度調整部33は、グルーピングを形成している動きベクトルのうち、たとえばカメラ11に一番近いと思われる座標位置が、グルーピング全体の移動と異なる移動をしているか否かを判定する。異なる動きをする場合はノイズであると考えられるため、信用度をダウンさせる(たとえばー2)(ステップS910)。
【0081】
次に、ステップS911において、信用度調整部33は、グルーピングデータが移動物でありかつ水平線より上だけの領域または水平線より下だけの領域であるか否かを判定する。移動物でありかつ水平線より上だけの領域の場合、このグルーピングデータは危険な位置にはないといえる。また、移動物でありかつ水平線より下だけの領域の場合、影でありやはり危険ではないといえる。このため、ステップS909でYESと判定されると、信用度調整部33はこのグルーピングの信用度をダウンさせる(たとえばー2)(ステップS912)。
【0082】
次に、ステップS913において、信用度調整部33は、信用度が最大値(たとえば10)より大きいか否かを判定する。最大値より大きいときは、信用度調整部33はこのグルーピングの信用度を最大値までもどし(ステップS914)、図2のステップ10に進む。
【0083】
そして、図2のステップS10において、信用度調整部33は、信用度が所定の下限値(たとえば0)以下であるか否かを判定し、所定の下限値以下であればグルーピングデータを削除して(図2のステップS11)ステップS14に進む。
【0084】
一方、所定の下限値より大きい場合は、ステップS12において、信用度調整部33は、信用度が所定の閾値(たとえば5)以上であるか否かを判定する。所定の閾値以上であれば、信用度調整部33は、このグルーピングを信用し警告表示を行うよう、警告表示部34に指示する。
【0085】
以上説明した通り、グルーピングデータの信用度を用いることにより、大きなノイズの混入を除去することができる。また、信用度が比較的高い状態で突然動きベクトルの数が減少しても、信用度は多少下がるもののある程度の値を維持するため、警告表示は継続される。このため、検出エラー等により偶発的に一瞬動きベクトルが検出できない事態が生じても、過剰な応答をすることがなく安定した警告表示を行うことができる。
【0086】
図2のステップS12において信用度調整部33により信用度が所定の閾値(たとえば5)以上であると判定されると、ステップS13において、警告表示部34は、車両の運転者が視認可能な位置に設けられた表示装置19に対して警告表示を行う。このとき、警告表示部34は、たとえばカメラにより撮像された画像に対して警告対象となるグルーピングを行った画像領域の位置を示す画像を重畳して表示装置19に表示させる。
【0087】
ここで、警告表示の際に表示装置19に対応するグルーピングデータを表示する際の表示例について説明する。
【0088】
得られた結果は領域であるが、重複確認のためにAp、Amの場合aw分広くなっている。そのため、まず下記のようにAw分削っておく。
ap = ap - aw
am = am + aw
【0089】
このときap≦amとなってしまう場合は、領域が存在しないため表示させない。他の領域線についても、同様の処理を行う。
【0090】
また、たとえば4角形でグルーピングを行う場合は、隣接する領域線同士の交点を4つ導き出し、その交点を結んで4角形の線で表示を行うとよい。3角形の場合は、隣接する領域線同士の交点を3つ導き出し、その交点を結んで3角形の線で表示を行う。
【0091】
図11は、警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置19に表示させる様子の一例を示す説明図である。
【0092】
8角形の場合は、図11に示すように、隣接する領域線同士の交点(L0〜L7)を導き出し、その交点を結んで8角形の線で表示を行う。交点を導き出す方法は、特徴量から領域を作り出す式のx0、y0をx、yの変数として1次式にし、2直線を選んで導き出せばよい。
【0093】
図12は、警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置19に表示させる際に、領域線を2次曲線で丸める場合の一例を示す説明図である。
【0094】
図11に示すように、8角形では角張って見えるため、印象が悪い。そこで、角を滑らかにするために、図12に示すように、領域線を2次曲線で描写するとよい。
【0095】
領域線を2次曲線で描写する場合は、まず、隣接する領域線の交点を導き出す(L0〜L7)。その交点の中点をそれぞれ計算する(M0〜M7)。得られた結果より、上側の3点、下側の3点、左側の3点、右側の3点をそれぞれ使用して2次式を作成する。
【0096】
上側を例にとってさらに説明する。上側の点はそれぞれM0(m0x、m0y)、M1(m1x、m1y)、M2(m2x、m2y)であるので、どこかの点を基準にする。たとえばM0を基準にした場合、それぞれの点の座標は下記のようになる。
m0x’ = 0
m0y’ = 0
m1x’ = m1x - m0x
m1y’ = m1y - m0y
m2x’ = m2x - m0x
m2y’ = m2y - m0y
これらの3点より2次式を作り出すと、下記の式になる。
y = a・x・x + b・x
【0097】
代入することにより、a、bを導き出して、M0〜M2を代入する2次式を作成すると下記の式になる。
y = a・(x- m0x)・(x-m0x) + b・(x-m0x) + m0y
【0098】
以上の式をm0xからm2xの範囲で描写する。下側の3点(M4、M5、M6)も同様の処理を行う。左側と右側はxとyを反転させて同様の処理を行えばよい。たとえば右側の3点はそれぞれM2(m2x、m2y)、M3(m3x、m3y)、M4(m4x、m4y)であるので、どこかの点を基準にする。たとえばM2を基準にした場合、それぞれの点の座標は下記のようになる。
m2x’ = 0
m2y’ = 0
m3x’ = m3x - m2x
m3y’ = m3y - m2y
m4x’ = m4x - m2x
m4y’ = m4y - m2y
その3点より2次式を作り出すと、下記の式になる。
x = a・y・y + b・y
【0099】
代入することにより、a、bを導き出して、M2〜M4を代入する2次式を作成すると下記の式になる。
x = a・(y- m2y)・(y-m2y) + b・(y-m2y) + m2x
【0100】
以上の式をm2yからm4yの範囲で描写する。左側の3点(M6、M7、M0)も同様の処理を行う。以上の方法で、領域線を2次曲線で描写することができる(図12参照)
【0101】
図13(a)は、警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置19に表示させる際に、頂点を円で丸める方法を説明するための図であり、(b)は(a)の破線で囲んだ部分の拡大図であり、(c)は頂点を円で丸めた場合の一例を示す説明図である。
【0102】
図12に示す2次曲線では、つなぎ目が多少ずれてしまう。このため、図13(c)のように角を円で丸める方法を説明する。なお、以下8角形について説明するが、4角形でも同様の方法を適用することができる。
【0103】
まず、隣接する領域線の交点を導き出す(L0〜L7)。次にその中点を導き出す(M0〜M7)。次にその中点が領域線の交点からの距離が近い方の距離を導き出す(n0〜n7)。領域線との交点と導き出した近い方の距離での点をそれぞれ導き出す(PA0、PB0〜PA7、PB7)(PAが反時計回り側、PBが時計回り側、片方はMとかぶる)。
【0104】
領域線と連続的につながるように円にするためには、導き出した2点が45°である必要がある。それを考慮して円の中心点を導き出す。たとえばL0での角を円で丸めるとすると、PA0、PB0での座標(pa0x、pa0y)、(pb0x、pb0y)より、円の半径r0と中心位置Q0(q0x、q0y)は下記のようになる。
r0 = n0・(1+√(2))
q0x = pa0x + r0
q0y = pa0y
そこで、以下の範囲で次の式で描写する。
(x-q0x)・(x-q0x) + (y-q0y)・(y-q0y) = r0・r0
範囲:(pa0x≦x≦pb0x), (pb0y≦y≦pa0y)
【0105】
以上の方法を8つ角すべてに行い、角を円で丸める。次に、長かった方を中点まで直線で描写する。領域を削りすぎることを考慮して、最大半径rmaxを設定しておき、それを超える半径であった場合は最大半径rmaxで円を描くようにしても良い。このときPA、PBがその分L寄りの位置になる。
【0106】
図14(a)は隣接する領域線よりもさらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図であり、(b)隣接する領域線よりさらに隣の領域線より、さらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図である。
【0107】
図14(a)に示すように、隣接する領域線よりさらに隣の領域線での交点のほうが、領域が狭くなることがある。この場合、円は90度分描くことにより領域線となだらかにつながる。このときの円の半径r0と中心位置Q0(q0x, q0y)は下記のようになる。
r0 = n0
q0x = pa0x + r0
q0y = pa0y
【0108】
この場合、隣接する領域線が範囲外であることを考えると、領域を削りすぎることになる。それを考慮して、最大半径rmaxを設定しておき、それを超える半径であった場合は最大半径rmaxで円を描くようにしても良い。このときPA、PBがその分L寄りの位置になる。
【0109】
また、図14(b)に示すように、隣接する領域線よりさらに隣の領域線より、さらに隣の領域線での交点のほうが、領域が狭くなることがある。この場合、円は135度分描くことにより領域線となだらかにつながる。このときの円の半径r0と中心位置Q0(q0x, q0y)は下記のようになる。
r0 = n0・(√(2) - 1)
q0x = pa0x + r0
q0y = pa0y
【0110】
この場合、隣接する領域線が範囲外であることを考えると、領域を削りすぎることになる。それを考慮して、最大半径rmaxを設定しておき、それを超える半径であった場合は最大半径rmaxで円を描くようにしても良い。このときPA、PBがその分L寄りの位置になる。
【0111】
以上のやり方で、曲線表示してもよい。2つの領域線の傾きが上記の例と違う場合にも、円の描写する角度をその分変えて対応すればよい。
【0112】
また、警告表示部34は、上記で求めた領域線より内側の領域を彩色して表示させてもよい。
【0113】
たとえば警告表示部34は、領域内の色に赤などの色を混ぜて表示する。アルファブレンドの影響度をαとし、元色をCin(CinR, CinG, CinB)、混ぜる色をCmix(CmixR, CmixG, CmixB)とすると、出力される色Cout(CoutR, CoutG, CoutB)は、次のように表せる。
CoutR = CinR・(1-α) + CmixR・α
CoutG = CinG・(1-α) + CmixG・α
CoutB = CinB・(1-α) + CmixB・α
【0114】
また、元色の最大値や輝度値を影響度に影響させて、元画像とアルファブレンドしてもよい。また、輝度値が低すぎる場合に色がつかなくなるのを避けるために、最低値(Cmin)を決めておいてリミットさせるか、影響度が大きくなるような割合(Crate)を決めておいて計算をさせればよい。そうすることにより、ただ赤でアルファブレンドするより物体の視認性がよくなる。この場合、影響度をαとし、元色をCin(CinR, CinG, CinB)、混ぜる色をCmix(CmixR, CmixG, CmixB)とすると、出力される色Cout(CoutR, CoutG, CoutB)は、次のように表せる。
Rate = max(CinR, CinG, CinB) / 255
or Rate = ((CinR + 2・CinG + CinB) / 4) / 255
Rate = max(Rate, Cmin)
or Rate = 1-((1-Rate)/Crate)
CoutR = CinR・(1-α) + CmixR・Rate・α
CoutG = CinG・(1-α) + CmixG・Rate・α
CoutB = CinB・(1-α) + CmixB・Rate・α
【0115】
もしくは、
CoutR = CinR・(1- Rate・α) + CmixR・Rate・α
CoutG = CinG・(1- Rate・α) + CmixG・Rate・α
CoutB = CinB・(1- Rate・α) + CmixB・Rate・α
また、コントラストアップに使用して強調表示させてもよい。領域内とするのは、領域線での領域(図11参照)としてもよいし、2次式での領域(図12参照)としてもよいし、角を円で丸めた領域(図13(c)、図14(a)、(b)参照)としてもよい。
【0116】
図15は、1フレーム画像を複数の領域に分割し、分割領域ごとにグルーピング領域内であるか否かを判定される場合のグルーピング領域内の彩色方法の一例を示す説明図である。
【0117】
図15に示すように、1フレーム画像を複数の領域に分割して、分割領域ごとに8角形の領域内か確認してもよい。このとき、8角形の領域内であれば影響度(アルファブレンドのアルファ)を最大として、分割領域ごとに保存する。そして分割領域ごとに影響度最大となる分割領域が近いかを確認して、その遠さによって影響度を下げてその影響度を分割領域ごとに保存する。そして、分割領域ごとに影響度に応じて表示を変える。こうすることにより、輪郭がはっきりしないため、8角形のグルーピング領域を取得したときの誤差を感じさせなくすることができる。グルーピング領域内とするのは、領域線での領域(図11参照)としてもよいし、2次式での領域(図12参照)としてもよいし、角を円で丸めた領域(図13(c)、図14(a)、(b)参照)としてもよい。
【0118】
一方、グルーピングデータ更新部35は、次のフレームに対応するために、2フレーム前と1フレーム前の画像間の動きベクトル(過去の動きベクトル)の平均分(u_old、v_old)と、1フレーム前と現在のフレームの画像間の動きベクトル(現在の動きベクトル)の平均(u_now、v_now)により、グルーピングの枠の移動を加速させて、次のフレームにおけるグルーピングの位置およびサイズを予測する(図2のステップS14)。また、このとき、グルーピングデータ更新部35は、次のフレームに対応するために、グルーピングの枠の領域を少し狭くさせてもよい。そうすることにより、物体の領域が小さくなっていく場合にも対応できる。
【0119】
そして、グルーピングデータ更新部35により更新されたグルーピングデータは、グルーピングデータ格納部36に格納される。
【0120】
ここで、グルーピングデータ更新部35のより詳細な動作について、まず4角形の場合について説明する。
【0121】
狭くさせる量はaw、bwにaの割合で比例させて、下記のようになる。
ap = ap - aw・a
am = am + aw・a
bp = bp - bw・a
bm = bm + bw・a
【0122】
このときプラス側がマイナス側以下になったら、そのグルーピングは削除する。突然グルーピングを形成するベクトルデータがなくなった場合、形状を維持するために表示の際はここで減らした分を元に戻しておいてもよい。
【0123】
また、動きベクトルの平均分により、最初に次の想定されるグルーピングの場所に移動させておく。すると、過去の動きベクトルの平均(u_old、v_old)と今の動きベクトルの平均(u_now、v_now)により、グルーピングの枠の移動を加速させる。その時のグルーピングの次に想定される変化量(u、v)は下記のようになる。
u = 2・u_now - u_old
v = 2・v_now - v_old
【0124】
また、領域を作成した際のx0、y0に該当し、領域線は下記のようになる。
ap = ap + u
am = am + u
bp = bp + v
bm = bm + v
【0125】
また、その加減速度からグルーピングが向かってきている(拡大)か、遠ざかっている(縮小)かを判別して、グルーピングの大きさを変更してもよい。拡大率をaとした場合、下記のようになる。
a = √(u_now・u_now + v_now・v_now) / √(u_old・u_old + v_old・v_old)
or a = √(u・u + v・v) / √(u_now・u_now + v_now・v_now)
ar = (ap - am) / 2
ap = ap + ar・(a-1)
am = am - ar・(a-1)
br = (bp - bm) / 2
bp = bp + br・(a-1)
bm = bm - br・(a-1)
なお、拡大率はリミットを入れてもよい。
【0126】
8角形の場合、狭くさせる量はaw、bw、cw、dwにaの割合で比例させて、下記のようになる。
ap = ap - aw・a
am = am + aw・a
bp = bp - bw・a
bm = bm + bw・a
cp = cp - cw・a
cm = cm + cw・a
dp = dp - dw・a
dm = dm + dw・a
【0127】
このときプラス側がマイナス側以下になったら、そのグルーピングは削除する。突然グルーピングを形成するベクトルデータがなくなった場合、形状を維持するために表示の際はここで減らした分を元に戻しておいてもよい。
【0128】
また、動きベクトルの平均分により、最初に次の想定されるグルーピングの場所に移動させておく。すると、過去の動きベクトルの平均(u_old、v_old)と今の動きベクトルの平均(u_now、v_now)により、グルーピングの枠の移動を加速させる。その時のグルーピングの次に想定される変化量(u、v)は下記のようになる。
u = 2・u_now - u_old
v = 2・v_now - v_old
【0129】
また、領域を作成した際のx0、y0に該当し、領域線は下記のようになる。
ap = ap + u
am = am + u
bp = bp + v
bm = bm + v
cp = cp + u + v
cm = cm + u + v
dp = dp + v - u
dm = dm + v - u
【0130】
また、その加減速度からグルーピングが向かってきている(拡大)か、遠ざかっている(縮小)かを判別して、グルーピングの大きさを変更してもよい。拡大率をaとした場合、下記のようになる。
a = √(u_now・u_now + v_now・v_now) / √(u_old・u_old + v_old・v_old)
or a = √(u・u + v・v) / √(u_now・u_now + v_now・v_now)
ar = (ap - am) / 2
ap = ap + ar・(a-1)
am = am - ar・(a-1)
br = (bp - bm) / 2
bp = bp + br・(a-1)
bm = bm - br・(a-1)
cr = (cp - cm) / 2
cp = cp + cr・(a-1)
cm = cm - cr・(a-1)
dr = (dp - dm) / 2
dp = dp + dr・(a-1)
dm = dm - dr・(a-1)
なお、拡大率はリミットを入れてもよい。
【0131】
3角形の場合、狭くさせる量はaw、bwにaの割合で比例させて下記のようになる。
as = as - apole・aw・a
bs = bs - bpole・bw・a
cs = cs - cpole・cw・a
【0132】
このとき、2つの領域線での交点が、もう一つの領域線の内側になかったら、そのグルーピングは削除する。突然グルーピングを形成するベクトルデータがなくなった場合、形状を維持するために表示の際はここで減らした分を元に戻しておいてもよい。
【0133】
また、動きベクトルの平均分により、最初に次の想定されるグルーピングの場所に移動させておく。すると、過去の動きベクトルの平均(u_old、v_old)と今の動きベクトルの平均(u_now、v_now)により、グルーピングの枠の移動を加速させる。その時のグルーピングの次に想定される変化量(u、v)は下記のようになる。
u = 2・u_now - u_old
v = 2・v_now - v_old
【0134】
また、領域を作成した際のx0、y0に該当し、領域線は下記のようになる。
as = as + ax・u + ay・v
bs = bs + bx・u + by・v
cs = cs + cx・u + cy・v
【0135】
また、その加減速度からグルーピングが向かってきている(拡大)か、遠ざかっている(縮小)かを判別して、グルーピングの大きさを変更してもよい。拡大率をaとした場合、下記のようになる。
a = √(u_now・u_now + v_now・v_now) / √(u_old・u_old + v_old・v_old)
or a = √(u・u + v・v) / √(u_now・u_now + v_now・v_now)
ar = (as - ak) / 2
as = as + ar・(a-1)
br = (bs - bk) / 2
bs = bs + br・(a-1)
cr = (cs - ck) / 2
cs = cs + cr・(a-1)
【0136】
このとき、akは、
bs = bx・x + by・y
cs = cx・x + cy・y
【0137】
の2式について、x、yの連立方程式を解いて下記に代入すればよい。つまり対面での平行な領域線の位置となる。
ak= ax・x + ay・y
【0138】
同様にbkは
as = ax・x + ay・y
cs = cx・x + cy・y
【0139】
のx、yの連立方程式を解いて下記に代入すればよい。つまり対面での平行な領域線の位置となる。
bk= bx・x + by・y
【0140】
同様にckは
as = ax・x + ay・y
bs = bx・x + by・y
【0141】
のx, yの連立方程式を解いて次式に代入すればよい。つまり対面での平行な領域線の位置となる。
ck= cx・x + cy・y
【0142】
なお、拡大率はリミットを入れてもよい。
【0143】
すなわち、本実施形態に係る警告表示装置10は、少なくとも3フレーム分の画像を用いることにより、グルーピングの枠が加速度をもって移動する場合にも、精度よくその移動を予測することができる。このため、より正確に危険物の存在を車両の運転者に警告することができる。
【0144】
また、グルーピングデータを時間的に継承し、信用度を確認することで危険予測を行うことができる。このとき、本実施形態に係る警告表示装置10は、特徴量の座標の情報などの特徴量データを保持することなく物体の形状を特定することができる。このため、特徴量データを保持する場合に比べ、かつメモリ使用量が非常に削減しつつ物体の形状を正確に把握することができる。また、8角形でグルーピングする場合、物体の形状を寄り正確に把握することができる。
【0145】
図16は、カメラ11の撮像画像を別視点の画像や歪みを正した画像にしてグルーピングを行う様子の一例を示す説明図である。図16には、グルーピングを4角形で行う場合の例について示した。
【0146】
カメラ11に魚眼レンズが取り付けられている場合や、画像の向きを異なる向きに射影する場合などには、元画像中の多角形の形状が変わってしまう。
【0147】
この場合、まず、領域線(Ap、Am)の中間線Acと、それに直行する領域線(Bp、Bm)の中間線Bcとの交点ABcを中心とする。次に、その中心を通り領域線と直角な線と、領域線との交点を計4つ(Apc、Amc、Bpc、Bmc)導き出す。その4つの交点をルックアップテーブルや射影変換によって、違う画面へ転送させる(A2pc、A2mc、B2pc、B2mc)。得られた点により、元の画像での角度の領域線になるように領域線をそれぞれ作る(A2p、A2m、B2p、B2m)。このとき、動きベクトル(u、v)も変換してもよい。その場合、中心の座標をu、vだけずらした位置を変換させて、得られた値から中心座標を変換させた値で引けばよい。
【0148】
また、画像がレンズの屈折により歪むような場合ではなく、角度が変わる状況であれば、転送させるときの領域線の角度をその分変更、または、領域線を追加してもよい。
【0149】
なお、8角形の場合には、CとDでも同様の処理を行い、8角形の領域が完成する。また、3角形の場合には、領域線の端の2つの交点の中間点を転送させて、その点を通る元の角度での領域線を作成する。これをそれぞれの領域線に対して行うことで、3角形の領域が完成する。
【0150】
図17は、1フレームの画像を互いに重複する複数の領域に分割してグルーピングを行う場合の例について示す説明図である。
【0151】
多角形のグルーピングの方法では、凹んだ形状の物体に対応することができない。そこで、図17に示すように、1フレームの画像を互いに重複する複数の領域に分割し、これらの重複領域をもった分割領域ごとにグルーピングを行うとよい。
【0152】
分割領域が互いに重複しているため、グルーピングの途切れが生じづらくなり、凹んだ形状も対応できるようになる。また、重複領域をもった分割領域を、同じ平面上のものとする必要はなく、たとえば違う角度の面や違うゆがみ方の面で行ってもよい。
【0153】
図18は、図17に示す互いに重複する分割領域を用いる場合において4角形でグルーピングを行う様子の一例を示す説明図である。また、図19は、図17に示す互いに重複する分割領域を用いる場合において8角形でグルーピングを行う様子の一例を示す説明図である。
【0154】
図17左に示した元画像について重複する分割領域を用いて4角形でグルーピングすると、図18左に示すように、元画像の凹みが多少反映された結合画像を得ることができる。また、図17左に示した元画像について重複する分割領域を用いて8角形でグルーピングすると、図19左に示すように、元画像の凹みがしっかりと反映された結合画像を得ることができる。なお、図18と図19を比較して明らかなように、8角形でグルーピングするほうが4角形でグルーピングするよりも正しい領域でグルーピングできることがわかる。
【0155】
また、信用度の上がったグルーピングが分割領域をはみ出した場合、グルーピングの移動方向の領域にグルーピングデータ(信用度の情報等)をコピーしてもよい。この場合、グルーピングの移動により別の領域に現れた動きベクトルも、最初から信用度が上がっているグルーピングとして扱うことができる。そのため、途切れなく警告表示ができる。
【0156】
また、1フレーム画像に違う領域線数のグルーピングを混在させてもよい。たとえば、遠いところを見る場合や、小さい物体などでは、グルーピングの領域が小さくなる。この場合、n角形のnの数を増やしても、計算量が増えるばかりで物体の形状の反映という点ではあまり意味がなくなる。また、領域によっては水平線や車線の角度が異なるため、領域によって領域線の傾きを変えたほうが精度を改善できる場合がある。
【0157】
このため、領域や大きさによって、違う領域線数のグルーピングを混在させてグルーピングを行ってもよい。この場合、グルーピングの大きさが変わった場合や、違う領域にまたいだ場合に、グルーピングの領域線が変更されることになる。その時の処理方法について以下説明する。
まず、領域線が変わる場合について説明する。
【0158】
図20は、3角形領域から4角形領域に領域線を変える方法の一例を示す説明図である。
【0159】
たとえば、n角形からm角形へ領域線が変更される場合、同じ傾きとなる領域線数をaとすると、n−aだけ領域線数が減る一方、m−aだけ領域線数が増える。このとき、たとえば、まずm−aの分だけ領域線を増やす。このとき、n角形での領域線での隣り合う領域線の交点を出しておく。次に接する増やしたい領域線の傾きで接する交点を導き、その交点の位置での領域線とする。事前にどの増やしたい領域線が元のn角形の隣り合う領域線とのどの交点が接することになるか確認しておいて、その交点だけを見るようにしてもよい。それをm−aの分だけ行う。次に同じ傾きとならない元のn角形のn−aの領域線を削除する。そうすることによりn角形からm角形へ領域線が変更される。
【0160】
図20には、n=3、m=4、a=1とした場合の例について示した。図20に示す例では、4角形の1つの領域線EpはApと重複している。したがって、増やす領域線はDm、Dp、Epとなり、減らす領域線はBm、Cpとなる。Dmと接する3角形の交点は、ApとBmの交点であるPabとなるため、その位置が領域線となる。同様にDpは、CpとApの交点であるPcaでの領域線となる。同様にEmは、BmとCpの交点であるPbcでの領域線となる。そして、最後に重複していない領域線であるBmとCpを削除する。この手順により、n角形からm角形へ領域線を変更することができる。
次に、領域線数が増える場合について説明する。
【0161】
図21は、グルーピングの領域線数を増やす方法の一例を示す説明図である。
【0162】
たとえば、領域ごとに違う多角形とする場合には、領域をまたいでグルーピングを行うと、複数の多角形が混在することになる。この場合には領域線をその分増やした多角形とする。また、違う領域をまたいでいないグルーピングと違う領域をまたいだグルーピングとの重複確認や結合を行うときにも、領域線を増やした多角形にする必要がある。
【0163】
いま、2つの領域がそれぞれn角形とm角形として重複する領域線数をaとした場合、n+m−a角形としたい。しかし計算を簡単にするためにこの多角形で対面する平行な領域線がない数をbとした場合、bの分だけ平行な領域線を追加し、n+m−a+b角形とする。このときn角形側で対面する平行な領域線がなくてm角形にもその領域線がない数をbnとし、m角形側で対面する平行な領域線がなくてn角形にもその領域線がない数をbmとすると、b=bn+bmとなる。
【0164】
n角形が重複領域状態のn+m−a+b角形になることを想定する。まず、対面する平行な領域線が存在しない場合、その領域線を用意する。その領域線は対面側の決められた2つの隣り合う領域線の交点により導き出される。次に、対面する平行な領域線以外で、m角形にしか存在しない傾きの領域線を追加する。追加する領域線の位置はそのグルーピングに接する位置である。その位置はどの隣り合う領域線の交点かは決まっているため、あらかじめどの交点が接することになるか確認しておいてもよい。そうすることにより、n角形をn+m−a+b角形にすることができる。重複領域状態を通り過ぎてm角形の領域となった場合は、m角形の傾きとならない領域線を削除すればよい。
【0165】
図21には、n=3、m=4、a=1、b=2、bn=2、bm=0とした場合の例に着いて示した。図21に示す例では、まず対面する平行な領域線がないAp、Bm、Cpに対して、対面する平行な領域線Am、Bp、Cmを作成する。対面する平行な領域線は、対面する2つの隣あう領域線の交点と接する位置である。
【0166】
このため、AmはBmとCpの交点であるPbcでの領域線となり、BpはApとCpの交点であるPcaでの領域線となり、CmはApとBmの交点であるPabでの領域線となる。次に、対面する平行な領域線以外でm角形にしか存在しない傾きの領域線であるDm、Dpを追加する。追加する場所は図のようにn角形のグルーピングに接する位置となる。以上のようにn+m−a+b(=8)角形での領域線となるが、図を見ても分かるとおり、最初のグルーピング領域は変わらない。この状態で次のフレームへの移行や結合をすることにより、グルーピング領域が変わっていくことになる。なお、ここまで2つの領域をまたいだ場合の例について説明したが、3つ以上の領域として、その分領域線を変更してもよい。
【0167】
次に、1つのグルーピングで凹んだ形状を考慮した場合を説明する。
図22は、1つのグルーピングで凹んだ形状を表す際の1つの基点と角度領域との関係の一例を示す説明図である。また、図23は、凹領域線を更新する様子の一例を示す説明図である。また、図24は、図22に示す例において1つのグルーピングで凹んだ形状を表した様子の一例を示す説明図である。
以上説明した方法では、1つのグルーピングで凹んだ形状を表すことは難しい。そこで、グルーピング対象となる凹んだ形状の凹んだ状態を次の方法により計算し、それを考慮して1つのグルーピングとしても良い。
なお、グルーピング領域の基本形状は3角形、4角形、8角形など様々な多角形形状をとることが可能であるが、以下の説明では8角形をとる場合の一例について説明する。また、凹んだ形状も多角形とするが、例としてグルーピングの形状と同じ8角形で説明する。グルーピング形状と凹んだ形状は同じ多角形にする必要は無い。
それぞれのグルーピングの領域線の交点と、その領域線上の点を基点として凹んだ形状の処理を行うが、左上の点K0と左辺Amのみ説明する。ここで、グルーピングの領域線を凸領域線(図22の点線Am、Cm等)、基点から凹ませる領域線を凹領域線(図22の細い実線K0Ap、K0Am等)というものとする。凸領域線の交点(たとえばAm、Cmの交点K0)を基点とする場合には、その交点を作り出す凸領域線のどちらかの線分の長さ(たとえばAmであれば図22において点K0から点K7までの長さ)が所定の閾値Lthより長い場合に動作するようにする。また、凸領域線上の点を基点とする場合には、図22のように線分の長さをAmLとした場合(AmL/Lth)−1の正の整数部の点数分、交点までの距離が等距離になるように点を配置する(図22のJ70、J71参照)。このとき、点数は所定の値で制限してもよい(たとえば2)。
図22のように、凹領域線の形成開始時は、基点K0(K0x,K0y)から、上記までに述べたグルーピングを行うための特徴点を領域にする処理と同様の処理を行う。たとえば、凹領域線を8角形とする場合は、下記のようになる。
【0168】
K0Ac = K0x (縦線)
K0Bc = K0y (横線)
K0Cc = K0x + K0y (右上がり線)
K0Dc = K0y -K0x (右下がり線) K0Ap = K0Ac + K0Aw
K0Am = K0Ac -K0Aw
K0Bp = K0Bc + K0Bw
K0Bm = K0Bc -K0Bw
K0Cp = K0Cc + K0Cw
K0Cm = K0Cc -K0Cw
K0Dp = K0Dc + K0Dw
K0Dm = K0Dc -K0Dw
凹領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離とする場合は、
K0Bw = K0Aw
K0Cw = K0Aw・√(2)
K0Dw = K0Aw・√(2)
とする。K0Awを設定することにより凹領域線の広がり速度を設定することができる。K0Awを適切に設定することにより、例えばノイズなどの影響で特徴点が検出できなかった場合に、凹領域が凸領域までいきなり広がらないようにすることができる。ここで形成された凹領域線を、基準凹領域線とする。
ここで、それぞれの凹領域線の広がりは、基点からのある角度領域内に存在する特徴点に依存させるように、角度領域を設定する。角度領域は、上記に述べた基準凹領域線のそれぞれの交点を角度領域境界(K0BmDmB、K0DmApB、K0ApCpB、K0CpBpB、K0BpDpB、K0DpAmB、K0AmCmB、K0CmBmB)で分割された角度領域 (K0DmA、K0ApA、K0CpA、K0BpA、K0DpA、K0AmA、K0CmA、K0BmA)とする。なお、角度領域境界は、基点を始点とする線分であって、基点から凹領域線により広げられた8角形領域の8角形(図22の太い実線)の各頂点を通る線分(図22の一点鎖線)により定義する。また、角度領域境界K0BmDmBは、K0から凹領域線K0BmとK0Dmの交点を通る線分であることを表している。
また、K0では、凸領域線AmとCmの交点が基点であり、その2線より内側に凹領域線を形成するため、4つの凹領域線(K0Dp、K0Am、K0Cm、K0Bm)と4つ角度領域(K0DpA、K0AmA、K0CmA、K0BmA)は意味をなさなくなる。だが、特徴点が最初の凸領域線より外側でグルーピングされても、それも考慮して凹領域線を形成する必要がある。そのため4つの角度領域は、意味をなしている一番近い角度領域にする。つまりK0では、K0DpAとK0AmAがK0BpAとなり、K0CmAとK0BmAがK0DmAとなる。
【0169】
次に、同じグルーピングとなる得られた特徴点が、それぞれの角度領域のどこに属しているかを確認し、属している角度領域の凹領域線を導き出す。ここで、角度領域の凹領域線とは、角度領域の両端を定義する2つの角度領域境界がそれぞれ通る8角形の頂点を結ぶ凹領域線をいうものとする。たとえば、角度領域K0DmAの凹領域線は、K0Dmである。これは、角度領域K0DmAの角度領域境界K0BmDmBを定義する8角形の頂点がK0BmとK0Dmの交点であり、角度領域境界K0DmApBを定義する8角形の頂点がK0DmとK0Apの交点であり、この2つの頂点を通る凹領域線がK0Dmであるためである。
そして、特徴点をグルーピングするために広げる分、特徴点から基点側へ広げた位置が、特徴点が属する角度領域の凹領域線の傾きに対して元の凹領域線より基点に近いかを確認する。近ければ、特徴点から基点側へ広げた位置に、新たな凹領域線を設ける。
例えば、図23のように、凹領域線がK0Dm、K0Ap、K0Cp、K0Bpで形成されていたとし、特徴点P0(x0、y0)が得られたとする。特徴点P0はグルーピングされるかの確認のため凸領域線(たとえば8角形)を形成する。このときAmと接するためグルーピングされ、凸領域線AmがAm2へ移動する。次に凹領域線に対して確認する。得られた特徴点P0は基点K0に対してK0BpAの角度領域に属しているため、この角度領域の凹領域線はK0Bpとなる。そして、特徴点をグルーピングするために広げた分、特徴点から基点側へ広げた位置がP0の8角形となり、その8角形がK0Bpの傾きであるy方向に対して、元の凹領域線K0Bpより近いことが確認できる。そのため、凹領域線K0Bpを、特徴点から基点側へ広げた位置K0Bp2へ移動する。
以上を同じグルーピングとなる得られた特徴点分、すべての基点に対して行う。
すべての特徴点を確認し終わった後、凸領域線が変わるので、それに合わせて基点位置を変える。その基点が凹領域線より内側になるように、凹領域線を新たな基点位置で制限する。また、凸領域線の線分の長さAmLが変わるので、交点での基点の有無が変更されないか、領域線上の基点の数が変更されないか確認し、変更されればその分基点を増減させる。増減させた場合、位置が大幅にずれるので、元の基点位置での範囲に収まる最大の位置で、凹領域線の初期値を決定する。また、意味をなさない4つの凹領域線は、領域とするために、凸領域線の一番外側とすればよい。以上のように現在のフレームでの処理を行う。
描写させる際は、グルーピングさせるために特徴点を凸領域線に広げる分、凹領域線が基点に近くなっているので、その分基点より離れた位置を凹領域線として描写すればよい(図23の新しい描写線)。
【0170】
次のフレームでは、最初に、凹領域線を基準凹領域線まで広げた分広くする。さらに、凸領域線の移動分移動させる。また、上記までに述べた速度変更割合分のサイズの変更を行っても良い。その場合、凹領域線の一部は凸領域線で固定されるので、凹領域線の変更の基準は基点からの距離とすればよい。
以上のような方法で、凹んだ形状を確認することにより、図24のように凹んだ物体に対しても正しく領域線を形成することができるようになる。なお、図24には、凸領域線の交点の基点はすべて有効とし、凸領域線上の基点数は左右の縦線は1としその他は0とする場合の例について示した。描写する際は、上記までに述べたような角を丸める処理を施して表示させても良いし、領域を色彩して表示させても良い。
【0171】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0172】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【0173】
10 警告表示装置
11 カメラ
12 主制御部
19 表示装置
22 特徴量検出部
23 グルーピング処理部
31 グルーピングデータ比較部
32 グルーピング実行部
33 信用度調整部
34 警告表示部
35 グルーピングデータ更新部
36 グルーピングデータ格納部
【技術分野】
【0001】
本発明の実施形態は、警告表示方法および警告表示プログラムに関する。
【背景技術】
【0002】
自動車などの車両の運転を支援するための技術に、車外を撮像する車載カメラの画像やレーザレーダなどを用いて車両周囲の物体を検出し、この物体と車両とが衝突する可能性が高いとその旨の情報を車両の運転者に警告する技術がある。
【0003】
この種の物体検出方法としては、たとえば車載カメラの画像から特徴点を抽出し、車両からの距離等の属性(特徴量)が同一の特徴点をグルーピングする方法などが挙げられる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−276906号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、現在の1枚のフレームや、現在と直近の2枚のフレームを用いる場合、ノイズ等の誤差によって特徴量を誤検出してしまう場合がある。また、現在の1枚のフレームや現在と直近の2枚のフレームを用いる場合、特徴点の加速度を検出することができない。このため、検出対象物体が車両に対して加速度を有する運動をしていると、次フレームにおけるグルーピング領域の位置予測を誤ってしまう。したがって、大きな加速度をもって運動している物体や、突然近づいてくる物体に対応することが難しい。
【0006】
また、検出される特徴点が少ない場合はグルーピング対象から外すようにしている場合、遠くの物体は破棄されることが多くなる。この場合、たとえば遠くから高速で接近する物体を的確に検出することが難しい。
【0007】
本発明は、上述した事情を考慮してなされたもので、グルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告するができる警告表示方法および警告表示プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一実施形態に係る警告表示方法は、上述した課題を解決するために、車両に設けられたカメラにより撮像された前記車両の周囲の画像から特徴量を検出するステップと、前記検出された特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、前記グルーピングされた画像領域に含まれる物体画像の前記車両に対する危険度を示す信用度を設定するステップと、前記信用度が所定の高さ以上であると、前記車両の運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、前記グルーピングされた画像領域の次フレームの画像内における位置を、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて算出した加速度を用いて予測するステップと、を有する方法である。
【図面の簡単な説明】
【0009】
【図1】本発明の一実施形態に係る警告表示方法を実施するための警告表示装置の一例を示すブロック図。
【図2】図1に示す主制御部のCPUにより、グルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告する際の手順を示すフローチャート。
【図3】1フレーム画像を複数の領域に分割した様子の一例を示す説明図。
【図4】特徴点を4角形の領域で囲む様子の一例を示す説明図。
【図5】特徴点を8角形の領域で囲む様子の一例を示す説明図。
【図6】(a)は特徴量検出部により取得された動きベクトルの一例を示す説明図、(b)は(a)で示す例において4角形でグルーピングを行う様子の一例を示す説明図、(c)は(a)で示す例において8角形でグルーピングを行う様子の一例を示す説明図。
【図7】特徴点を3角形の領域で囲む様子の一例を示す説明図。
【図8】(a)は画像生成部により生成された画像内に物体、車線および水平線が含まれる場合の一例を示す説明図、(b)は(a)に示す例において右側車線と正8角形の一辺の傾きをそろえる場合の一例を示す説明図。
【図9】グルーピングデータ比較部により、属性が同じであると判定された特徴点の領域同士が重複するか否かを判定するための条件を示す説明図。
【図10】図2のステップS9で信用度調整部により実行される信用度調整処理の手順を示すサブルーチンフローチャート。
【図11】警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置に表示させる様子の一例を示す説明図。
【図12】警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置に表示させる際に、領域線を2次曲線で丸める場合の一例を示す説明図。
【図13】(a)は警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置に表示させる際に、頂点を円で丸める方法を説明するための図、(b)は(a)の破線で囲んだ部分の拡大図、(c)は頂点を円で丸めた場合の一例を示す説明図。
【図14】(a)は隣接する領域線よりもさらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図、(b)隣接する領域線よりさらに隣の領域線より、さらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図。
【図15】1フレーム画像を複数の領域に分割し、分割領域ごとにグルーピング領域内であるか否かを判定される場合のグルーピング領域内の彩色方法の一例を示す説明図。
【図16】カメラの撮像画像を別視点の画像や歪みを正した画像にしてグルーピングを行う様子の一例を示す説明図。
【図17】1フレームの画像を互いに重複する複数の領域に分割してグルーピングを行う場合の例について示す説明図。
【図18】図17に示す互いに重複する分割領域を用いる場合において4角形でグルーピングを行う様子の一例を示す説明図。
【図19】図17に示す互いに重複する分割領域を用いる場合において8角形でグルーピングを行う様子の一例を示す説明図。
【図20】3角形領域から4角形領域に領域線を変える方法の一例を示す説明図。
【図21】グルーピングの領域線数を増やす方法の一例を示す説明図。
【図22】1つのグルーピングで凹んだ形状を表す際の1つの基点と角度領域との関係の一例を示す説明図。
【図23】凹領域線を更新する様子の一例を示す説明図。
【図24】図22に示す例において1つのグルーピングで凹んだ形状を表した様子の一例を示す説明図。
【発明を実施するための形態】
【0010】
本発明に係る警告表示方法および警告表示プログラムの実施の形態について、添付図面を参照して説明する。
【0011】
図1は、本発明の一実施形態に係る警告表示方法を実施するための警告表示装置10の一例を示すブロック図である。
【0012】
警告表示装置10は、カメラ11、主制御部12、灯火装置16、クラクション17、スピーカ18および表示装置19を有する。
【0013】
カメラ11は、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサにより構成され、自家用自動車等の車両の周囲の映像を取り込んで画像データを生成して主制御部12に与える。
【0014】
たとえば後方を監視する場合、カメラ11は車両後部のナンバープレート付近に路面と平行な線からやや下向きに配設される。カメラ11には、より広範な車両外画像が取得可能なように広角レンズや魚眼レンズが取り付けられてもよい。また、車両の側方を監視する場合、カメラ11はサイドミラー付近に配設される。また、複数のカメラ11を用いることにより広範な車外周囲画像を取り込むようにしてもよい。
【0015】
主制御部12は、たとえばCPU、RAM、ROMを備えたマイクロコントローラにより構成される。主制御部12のCPUは、ROMなどの記憶媒体に記憶された警告表示プログラムおよびこのプログラムの実行のために必要なデータをRAMへロードし、このプログラムに従ってグルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告する処理を実行する。
【0016】
主制御部12のRAMは、CPUが実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。主制御部12のROMなどの記憶媒体は、警告表示プログラムや、これらのプログラムを実行するために必要な各種データを記憶する。
【0017】
なお、ROMをはじめとする記憶媒体は、磁気的もしくは光学的記録媒体または半導体メモリなどの、CPUにより読み取り可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は図示しないネットワーク接続部を介して電子ネットワークを介してダウンロードされるように構成してもよい。
【0018】
なお、この場合、ネットワーク接続部は、ネットワークの形態に応じた種々の情報通信用プロトコルを実装し、この各種プロトコルに従って主制御部12と他の車両のECUなどの電気機器とを電子ネットワークを介して接続する。この接続には、電子ネットワークを介した電気的な接続などを適用することができる。ここで電子ネットワークとは、電気通信技術を利用した情報通信網全般を意味し、無線/有線LAN(Local Area Network)やインターネット網のほか、電話通信回線網、光ファイバ通信ネットワーク、ケーブル通信ネットワークおよび衛星通信ネットワークなどを含む。
【0019】
灯火装置16は、一般的なヘッドライトにより構成され、主制御部12により制御されて点滅(いわゆるパッシング)を行うことにより、たとえば自車両の外部に対して警告を行う。
【0020】
クラクション17は、主制御部12により制御されて自車両の外部に対して警告音を出力する。
【0021】
スピーカ18は、自車両の車内に設けられ、主制御部12により制御されて自車両の運転者に対してビープ音や危険が迫っていることを知らせるための情報などの各種情報に対応した音声を出力する。
【0022】
表示装置19は、運転者が視認可能な位置に設けられ、車載用の一般的なディスプレイやカーナビゲーションシステム、HUD(ヘッドアップディスプレイ)などの表示出力装置を用いることができ、主制御部12の制御に従って、カメラ11の撮像画像や危険が迫っていることを知らせるための情報などの各種情報を表示する。
【0023】
続いて、主制御部12のCPUによる機能実現部の構成および動作について説明する。
【0024】
図1に示すように、主制御部12のCPUは、警告表示プログラムによって、少なくとも画像生成部21、特徴量検出部22、グルーピング処理部23として機能する。この各部21−23は、RAMの所要のワークエリアを、データの一時的な格納場所として利用する。なお、これらの機能実現部は、CPUを用いることなく回路などのハードウエアロジックによって構成してもよい。
【0025】
図2は、図1に示す主制御部12のCPUにより、グルーピングの枠移動を精度よく予測することにより正確に危険物の存在を車両の運転者に警告する際の手順を示すフローチャートである。図2において、Sに数字を付した符号は、フローチャートの各ステップを示す。
【0026】
画像生成部21は、カメラ11から得た画像データにもとづいてフレーム画像を生成する(ステップS1)。
【0027】
図3は、1フレーム画像を複数の領域に分割した様子の一例を示す説明図である。
【0028】
特徴量検出部22は、分割領域ごとに、特徴量を検出する(図2のステップS2)。特徴量は、それぞれ画像上の座標(画素)に関連付けられている。
【0029】
分割領域の走査順は、たとえば左上の領域から順次右の領域へ進み、右端の領域の走査後2列目の左端へ戻り、2列目を順次右へ進むことを右下の領域まで繰り返すいわゆるラスタ形式などで行う。
【0030】
特徴量を検出する方法としては、ソナーなどのセンサで距離を検出する方法や、画像の画素値から検出する方法などがある。画像から特徴量を検出する方法には、ステレオカメラによる視差値にもとづいて画像内の特徴点までの距離を検出する方法や、画像内の特徴点に対応する動きベクトルを検出する方法がある。動きベクトルの検出方法は、勾配法や、ブロックマッチング等の画像処理による方法がよく知られている。
【0031】
そこで、本実施形態に係る特徴量検出部22は、勾配法やブロックマッチング法などを用いて、画像生成部21により生成された複数のフレーム画像から画素ごとに動きベクトルを算出することによって、画像内の移動物および静止物を検出し、静止物を検出すると、車両と衝突するおそれがあるか否かを判定するとともに、車両から静止物までの距離を特徴量として算出する。
【0032】
グルーピング処理部23は、グルーピングデータ比較部31、グルーピング実行部32、信用度調整部33、警告表示部34、グルーピングデータ更新部35およびグルーピングデータ格納部36を有する。
【0033】
グルーピングデータ比較部31は、特徴量検出部22によって検出された特徴量(属性)にもとづいて同一のグルーピングとすべきか否かの判定を全てのグルーピングデータについて行う(図2のステップS3−5)。グルーピングは、属性が同じものどうしで行うことが好ましい。属性としては、たとえば車両からの距離や、動きベクトルの向き、移動物か静止物か、衝突するおそれがあるか否か、などを用いることができる。ルーピングデータ比較部31は、特徴量検出部22によって検出された特徴量(属性)が同一の特徴点を抽出する。
【0034】
また、グルーピングデータ比較部31は、図2のステップS3において、属性が同じであると判定された特徴点の領域同士が重複するか否かを判定する。本実施形態において、グルーピングデータは時間的に継承させて信用度の確認に用いられる。このため、ラベリングなどの方法を用いて各特徴量の座標情報を保持すると、データ量が大きくなってしまう。また、ラベリングを用いる場合、突発的なノイズが生じて特徴量が拾えないと、対処することが難しい。
ここで、特徴量の領域の設定方法について簡単に説明する。
【0035】
図4は、特徴点を4角形の領域で囲む様子の一例を示す説明図である。
【0036】
特徴量は領域を持たず特徴点の座標(x0、y0)に関連付けられる。このため、図4に示すように、特徴点を縦と横に広げて領域にする。このとき、計算を簡単にするために、それぞれの方向の領域線(Ac、Bc)をパラメータ(ac、bc)での位置とすると次の関係式を得る。
ac = x0 (縦線)
bc = y0 (横線)
【0037】
これらのパラメータは、x、y座標上では次のような直線に見える。
ac = x (縦線)
bc = y (横線)
【0038】
特徴点から領域を得るために、マイナス側(Am、Bm)とプラス側(Ap、Bp)を用意する。マイナス側のパラメータとプラス側のパラメータをそれぞれ(am、bm)と(ap、bp)で表すと、次の関係式を得る。
ap = ac + aw
am = ac - aw
bp = bc + bw
bm = bc - bw
【0039】
領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離する場合は、
bw = aw
【0040】
とする。awに応じてグルーピングしたい距離を設定することができる。
【0041】
図5は、特徴点を8角形の領域で囲む様子の一例を示す説明図である。また、図6(a)は特徴量検出部22により取得された動きベクトルの一例を示す説明図であり、(b)は(a)で示す例において4角形でグルーピングを行う様子の一例を示す説明図であり、(c)は(a)で示す例において8角形でグルーピングを行う様子の一例を示す説明図である。
【0042】
図6に示すように、8角形でグルーピングすると、4角形でグルーピングする場合よりも領域の輪郭の柔軟性が高いため、グルーピングの形状精度を上げることができ、特徴量が違う物体を同じグルーピングにしてしまう弊害を未然に防ぐことができる(図6(b)および(c)参照)。
【0043】
8角形でグルーピングする場合、図5に示すように、特徴点を縦と横と斜めに広げて領域にする。このとき、計算を簡単にするために、それぞれの方向の領域線(Ac、Bc、Cc、Dc)をパラメータ(ac、bc、cc、dc)での位置とすると次の関係式を得る。
ac = x0 (縦線)
bc = y0 (横線)
cc = x0 + y0 (右上がり線)
dc = y0 - x0 (右下がり線)
【0044】
これらのパラメータはx、y座標上では次のような直線に見える。
ac = x (縦線)
bc = y (横線)
cc = x + y (右上がり線)
dc = y - x (右下がり線)
【0045】
特徴点から領域を得るために、マイナス側(Am、Bm、Cm、Dm)とプラス側(Ap、Bp、Cp、Dp)を用意する。それぞれのマイナス側のパラメータおよびプラス側のパラメータをそれぞれ(am、bm、cm、dm)および(ap、bp、cp、dp)で表すと、次の関係式を得る。
ap = ac + aw
am = ac - aw
bp = bc + bw
bm = bc - bw
cp = cc + cw
cm = cc - cw
dp = dc + dw
dm = dc - dw
【0046】
領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離とする場合は、
bw = aw
cw = aw・√(2)
dw = aw・√(2)
【0047】
とする。awに応じてグルーピングしたい距離を設定することができる。
【0048】
図7は、特徴点を3角形の領域で囲む様子の一例を示す説明図である。
【0049】
計算量を削減するためには、3角形でグルーピングするとよい。3角形でグルーピングする場合、それぞれの領域線が次のように表されたとする。
ax・x + ay・y + az = 0
bx・x + by・y + bz = 0
cx・x + cy・y + cz = 0
【0050】
傾きだけは固定にする必要があるのでax、ay、bx、by、cx、cyは固定となる。計算を簡単にするために、それぞれの方向の領域線(Ac、Bc、Cc)をパラメータ(ac、bc、cc)での位置とすると次の関係式を得る。
ac = ax・x0 + ay・y0
bc = bx・x0 + by・y0
cc = cx・x0 + cy・y0
【0051】
特徴点から領域を得るために、片側のみ広げた領域線を(As、Bs、Cs)とし、パラメータ(ap、bp、cp)で表すと、次の関係式を得る。
as = ac + apole・aw
bs = bc + bpole・bw
cs = cc + cpole・cw
【0052】
ここでapole、bpole、cpoleは1か−1であり極性である。1か−1は、まずapole、bpole、cpoleのいずれか一つを1か−1かに決め、その場合において特徴量の座標が囲める方の極性を選ぶとよい。
【0053】
領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離とする場合は、
bw = aw・(√(bx・bx + by・by)) / (√(ax・ax + ay・ay))
cw = aw・(√(cx・cx + cy・cy)) / (√(ax・ax + ay・ay))
とする。awに応じてグルーピングしたい距離を設定することができる。
【0054】
1辺を真横の底辺としてのそれぞれの傾きが60°ずれている傾きとするためには、たとえば次のようにすればよい。
ax = 0
ay = 1
bx = √(3)
by = 2
cx = √(3)
cy = -2
apole = 1
bpole = -1
cpole = 1
【0055】
以上、4角形、8角形、3角形の例について説明したが、他の多角形であってもよい。また、いずれか1つの領域線を水平線や車線その他の傾きと同じ傾きとしたい場合であれば、一番傾きが近いものがその傾きとなるように置き換えてもよい。また、その傾きを基準として直角方向の領域線の傾きを直角に変えてもよい。また、その傾きを基準として他の傾きも変えて正8角形を形成する直線と同じ傾きの領域線としてもよい。また、その傾きを追加して16角形としてもよいし、水平線方向だけを追加した10角形としてもよいし、4角形から水平線方向だけを追加した6角形としてもいし、水平線ではなく22.5°ずらした状態にして、正16角形を形成する直線と同じ傾きの領域線としてもよいし、さらに領域線を増やしてn角形としてもよい。
【0056】
たとえば、いずれか1つの領域線を水平線の傾きに合わせて、正8角形を形成する直線と同じ傾きの領域線となる8角形を作成する場合を考える。たとえば水平線が次のように表せるものとする。
y = a0・x + b0 (a0 = d0 / c0)
【0057】
上記のCc、Dcはa0=−1、a0=1として計算したものと同等であり、座標での値はb0と同等であることが分かる。そのためcw、dwはb0の変化量であるため縦線(aw)や横線(bw)に比べて√2倍の値になることが分かる。
【0058】
図8(a)は、画像生成部21により生成された画像内に物体、車線および水平線が含まれる場合の一例を示す説明図であり、(b)は(a)に示す例において右側車線と正8角形の一辺の傾きをそろえる場合の一例を示す説明図である。
【0059】
たとえば図8に示すように車線の右側と同じ傾きの領域線をEcとしパラメータをecすると、a0を使用しない場合はc0とd0で表し次のように書ける。
ec = c0・y0 - d0・x0
【0060】
なお、このとき、計算を簡単にするためにc0とd0を整数としてもよい。
【0061】
領域にするためにマイナス側(Em)とプラス側(Ep)を用意する。それぞれのパラメータをem、epとして表すと、
ep = ec + ew
em = ec - ew
となり、ewは次のようになる。
ew = ew・√(c0・c0 + d0・d0)
【0062】
同様にEcの傾きと直角となるFc、Fp、Fmは、パラメータfc、fp、fmで表すと下記のようになる。
fc = d0・y0 + c0・x0
fp = fc + fw
fm = fc - fw
fw = aw・√(c0・c0 + d0・d0)
【0063】
45°傾いた領域線Gc、Gp、Gm、Hc、Hp、Hmは、パラメータgc、gp、gm、hc、hp、hmで表すと下記のようになる。
gc = (c0-d0)・y0 - (c0+d0)・x0
gp = gc + gw
gm = gc - gw
gw = aw・√((c0-d0)・(c0-d0) + (c0+d0)・(c0+d0))
hc = (hc+hd)・y0 + (c0-d0)・x0
hp = hc + hw
hm = hc - hw
hw = aw・√((c0+d0)・(c0+d0) + (c0-d0)・(c0-d0))
【0064】
このように、特徴点ごとに所定の多角形領域を設定することができる。
【0065】
図9は、グルーピングデータ比較部31により属性が同じであると判定された特徴点の領域同士が重複するか否かを判定するための条件を示す説明図である。
【0066】
グルーピングデータ比較部31は、以上のように設定された多角形領域について、図9に示す条件にもとづいて、属性が同じであると判定された特徴点の領域同士が重複するか否かを判定する(図2のステップS3)。
【0067】
たとえばAp、Amを例にとり、グループの領域線のパラメータをap1、am1とし、特徴量の領域線のパラメータをap2、am2とする。この場合、重複しているかの判定式は下記のように表せる。
((ap1 ≧ am2) And (ap1 ≦ ap2)) OR
((am1 ≧ am2) And (am1 ≦ ap2)) OR
((ap2 ≧ am1) And (ap2 ≦ ap1)) OR
((am2 ≧ am1) And (am2 ≦ ap1))
図9から明らかなように、この4つの条件のうち一つは無くてもよい。
【0068】
グルーピングデータ比較部31は、以上の4条件をすべての傾きについて検証し、すべての条件が満たされた場合、領域が重複していると判定する。
【0069】
グルーピング実行部32は、グルーピングデータ比較部31により重複していると判定された領域をグルーピングすることを全ての特徴量の検出が終了するまで繰り返す(図2のステップS6−7)。このとき、グルーピングの領域はそれぞれの外側となる。たとえば、3角形の場合には、一つの領域線asをap1(apoleが−1であればam1)とする。そして、am1(apoleが−1であればap1)は領域線と交差する2つの領域線(bs、cs)の交点(xa、ya)を導くことにより求める。(xa、ya)は次の連立方程式を解くことにより求めることができる。
bs = bx・xa + by・ya
cs = cx・xa + cy・ya
【0070】
得られた交点から、ak(= ax・xa + ay・ya)を作成する。このakがam1(apoleが−1であればap1)となる。こうして得られた平行な2領域線を用いることにより、グルーピングデータ比較部31は重複判定を行うことができる。また、重複していた場合のグルーピング後の領域は、領域線asから作られた方(apoleが1であればap1)での外側となる。
【0071】
3角形以外にも、対面する平行な領域線が存在しない場合には、元の領域線と平行で、グルーピングの対面側で接する領域線を用意する。接する位置は、決まった隣あう2つの領域線の交点となるため、事前にどの交点で接するか確認しておけばよい。
【0072】
グルーピング実行部32は、グルーピングの領域線を、比較した2つのグルーピングの領域線のプラス側の大きいほう、マイナス側の小さい方で更新する。更新後の領域が広すぎる場合は、グルーピングせず小さい領域で扱い自由度を持たせても良い。
【0073】
グルーピングをする際に引き継がれる特徴量のデータとしては、信用度、データ数、平均動きベクトル、平均距離などが挙げられるほか、元の特徴量で一番カメラに近い座標と動きベクトル(たとえば水平線から下に離れていて正面に近い座標)や、元の特徴量で一番カメラから遠い座標と動きベクトル(たとえば水平線から上に離れていて正面から遠い座標)など他にも考えられる。また、得られた特徴量のデータにもとづいて、平均や最大値や最小値を求め、これらを利用してもよい。
【0074】
グルーピング実行部32によりグルーピングされたデータは、通常、分割領域(図2参照)ごとに走査した特徴量にもとづいてグルーピングされている。このため、同じ属性で領域が重なっていても、グルーピングがされていない場合がある。これを防ぐため、グルーピングデータのグルーピングも行っておくとよい(図2のステップS8)。
【0075】
信用度調整部33は、得られたグルーピング結果により、グルーピングデータが何を意味しているかの判定を行う(図2のステップS9)。本実施形態では、信用度を用いて、信用度調整部33により対象のグルーピングが危険であるか否かを判定する。そして、危険であると判定されると、その旨の情報を警告表示部34により表示装置19を介して警告表示を行う。
【0076】
図10は、図2のステップS9で信用度調整部33により実行される信用度調整処理の手順を示すサブルーチンフローチャートである。
【0077】
ステップS901において、信用度調整部33は、動きベクトルの数の変化割合が所定閾値以下か否かを判定する。ここで、動きベクトルの数の変化割合とは、変化後の動きベクトル数mを変化前の動きベクトル数nで除した値m/nをいうものとする。この変化割合m/nが所定閾値(たとえば0.5など)以下とならなかった場合は、ノイズではないと判定し、信用度をアップさせる(たとえば+1)(ステップS902)。一方、所定閾値以下となった場合は、ノイズの可能性があるため、信用度をダウンさせる(たとえばー2)(ステップS903)。
【0078】
次に、ステップS904において、信用度調整部33は、動きベクトルの数の変化割合が所定閾値(たとえば1.5など)以上か否かを判定する。動きベクトルの数や範囲が突然増加した場合は、車両近傍の動きである可能性がある。車両近傍の動きは、車両にとって危険な動きであるといえる。そこで、この場合は信用度をアップさせる(たとえば+1)(ステップS905)。
【0079】
次に、ステップS906において、信用度調整部33は、動きベクトルが相対的に車両に近づいてくるものであるかあるいは近いグルーピングであるかを判定する。相対的に向かってくる場合や近いグルーピングの場合は危険物である可能性があるため、信用度をアップさせる(たとえば+1)(ステップS907)。一方、相対的に遠ざかるものである場合は、信用度をダウンさせる(たとえばー1)(ステップS908)。
【0080】
次に、ステップS909において、信用度調整部33は、グルーピングを形成している動きベクトルのうち、たとえばカメラ11に一番近いと思われる座標位置が、グルーピング全体の移動と異なる移動をしているか否かを判定する。異なる動きをする場合はノイズであると考えられるため、信用度をダウンさせる(たとえばー2)(ステップS910)。
【0081】
次に、ステップS911において、信用度調整部33は、グルーピングデータが移動物でありかつ水平線より上だけの領域または水平線より下だけの領域であるか否かを判定する。移動物でありかつ水平線より上だけの領域の場合、このグルーピングデータは危険な位置にはないといえる。また、移動物でありかつ水平線より下だけの領域の場合、影でありやはり危険ではないといえる。このため、ステップS909でYESと判定されると、信用度調整部33はこのグルーピングの信用度をダウンさせる(たとえばー2)(ステップS912)。
【0082】
次に、ステップS913において、信用度調整部33は、信用度が最大値(たとえば10)より大きいか否かを判定する。最大値より大きいときは、信用度調整部33はこのグルーピングの信用度を最大値までもどし(ステップS914)、図2のステップ10に進む。
【0083】
そして、図2のステップS10において、信用度調整部33は、信用度が所定の下限値(たとえば0)以下であるか否かを判定し、所定の下限値以下であればグルーピングデータを削除して(図2のステップS11)ステップS14に進む。
【0084】
一方、所定の下限値より大きい場合は、ステップS12において、信用度調整部33は、信用度が所定の閾値(たとえば5)以上であるか否かを判定する。所定の閾値以上であれば、信用度調整部33は、このグルーピングを信用し警告表示を行うよう、警告表示部34に指示する。
【0085】
以上説明した通り、グルーピングデータの信用度を用いることにより、大きなノイズの混入を除去することができる。また、信用度が比較的高い状態で突然動きベクトルの数が減少しても、信用度は多少下がるもののある程度の値を維持するため、警告表示は継続される。このため、検出エラー等により偶発的に一瞬動きベクトルが検出できない事態が生じても、過剰な応答をすることがなく安定した警告表示を行うことができる。
【0086】
図2のステップS12において信用度調整部33により信用度が所定の閾値(たとえば5)以上であると判定されると、ステップS13において、警告表示部34は、車両の運転者が視認可能な位置に設けられた表示装置19に対して警告表示を行う。このとき、警告表示部34は、たとえばカメラにより撮像された画像に対して警告対象となるグルーピングを行った画像領域の位置を示す画像を重畳して表示装置19に表示させる。
【0087】
ここで、警告表示の際に表示装置19に対応するグルーピングデータを表示する際の表示例について説明する。
【0088】
得られた結果は領域であるが、重複確認のためにAp、Amの場合aw分広くなっている。そのため、まず下記のようにAw分削っておく。
ap = ap - aw
am = am + aw
【0089】
このときap≦amとなってしまう場合は、領域が存在しないため表示させない。他の領域線についても、同様の処理を行う。
【0090】
また、たとえば4角形でグルーピングを行う場合は、隣接する領域線同士の交点を4つ導き出し、その交点を結んで4角形の線で表示を行うとよい。3角形の場合は、隣接する領域線同士の交点を3つ導き出し、その交点を結んで3角形の線で表示を行う。
【0091】
図11は、警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置19に表示させる様子の一例を示す説明図である。
【0092】
8角形の場合は、図11に示すように、隣接する領域線同士の交点(L0〜L7)を導き出し、その交点を結んで8角形の線で表示を行う。交点を導き出す方法は、特徴量から領域を作り出す式のx0、y0をx、yの変数として1次式にし、2直線を選んで導き出せばよい。
【0093】
図12は、警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置19に表示させる際に、領域線を2次曲線で丸める場合の一例を示す説明図である。
【0094】
図11に示すように、8角形では角張って見えるため、印象が悪い。そこで、角を滑らかにするために、図12に示すように、領域線を2次曲線で描写するとよい。
【0095】
領域線を2次曲線で描写する場合は、まず、隣接する領域線の交点を導き出す(L0〜L7)。その交点の中点をそれぞれ計算する(M0〜M7)。得られた結果より、上側の3点、下側の3点、左側の3点、右側の3点をそれぞれ使用して2次式を作成する。
【0096】
上側を例にとってさらに説明する。上側の点はそれぞれM0(m0x、m0y)、M1(m1x、m1y)、M2(m2x、m2y)であるので、どこかの点を基準にする。たとえばM0を基準にした場合、それぞれの点の座標は下記のようになる。
m0x’ = 0
m0y’ = 0
m1x’ = m1x - m0x
m1y’ = m1y - m0y
m2x’ = m2x - m0x
m2y’ = m2y - m0y
これらの3点より2次式を作り出すと、下記の式になる。
y = a・x・x + b・x
【0097】
代入することにより、a、bを導き出して、M0〜M2を代入する2次式を作成すると下記の式になる。
y = a・(x- m0x)・(x-m0x) + b・(x-m0x) + m0y
【0098】
以上の式をm0xからm2xの範囲で描写する。下側の3点(M4、M5、M6)も同様の処理を行う。左側と右側はxとyを反転させて同様の処理を行えばよい。たとえば右側の3点はそれぞれM2(m2x、m2y)、M3(m3x、m3y)、M4(m4x、m4y)であるので、どこかの点を基準にする。たとえばM2を基準にした場合、それぞれの点の座標は下記のようになる。
m2x’ = 0
m2y’ = 0
m3x’ = m3x - m2x
m3y’ = m3y - m2y
m4x’ = m4x - m2x
m4y’ = m4y - m2y
その3点より2次式を作り出すと、下記の式になる。
x = a・y・y + b・y
【0099】
代入することにより、a、bを導き出して、M2〜M4を代入する2次式を作成すると下記の式になる。
x = a・(y- m2y)・(y-m2y) + b・(y-m2y) + m2x
【0100】
以上の式をm2yからm4yの範囲で描写する。左側の3点(M6、M7、M0)も同様の処理を行う。以上の方法で、領域線を2次曲線で描写することができる(図12参照)
【0101】
図13(a)は、警告表示の際に8角形でグルーピングされた画像領域の位置を示す画像を表示装置19に表示させる際に、頂点を円で丸める方法を説明するための図であり、(b)は(a)の破線で囲んだ部分の拡大図であり、(c)は頂点を円で丸めた場合の一例を示す説明図である。
【0102】
図12に示す2次曲線では、つなぎ目が多少ずれてしまう。このため、図13(c)のように角を円で丸める方法を説明する。なお、以下8角形について説明するが、4角形でも同様の方法を適用することができる。
【0103】
まず、隣接する領域線の交点を導き出す(L0〜L7)。次にその中点を導き出す(M0〜M7)。次にその中点が領域線の交点からの距離が近い方の距離を導き出す(n0〜n7)。領域線との交点と導き出した近い方の距離での点をそれぞれ導き出す(PA0、PB0〜PA7、PB7)(PAが反時計回り側、PBが時計回り側、片方はMとかぶる)。
【0104】
領域線と連続的につながるように円にするためには、導き出した2点が45°である必要がある。それを考慮して円の中心点を導き出す。たとえばL0での角を円で丸めるとすると、PA0、PB0での座標(pa0x、pa0y)、(pb0x、pb0y)より、円の半径r0と中心位置Q0(q0x、q0y)は下記のようになる。
r0 = n0・(1+√(2))
q0x = pa0x + r0
q0y = pa0y
そこで、以下の範囲で次の式で描写する。
(x-q0x)・(x-q0x) + (y-q0y)・(y-q0y) = r0・r0
範囲:(pa0x≦x≦pb0x), (pb0y≦y≦pa0y)
【0105】
以上の方法を8つ角すべてに行い、角を円で丸める。次に、長かった方を中点まで直線で描写する。領域を削りすぎることを考慮して、最大半径rmaxを設定しておき、それを超える半径であった場合は最大半径rmaxで円を描くようにしても良い。このときPA、PBがその分L寄りの位置になる。
【0106】
図14(a)は隣接する領域線よりもさらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図であり、(b)隣接する領域線よりさらに隣の領域線より、さらに隣の領域線での交点のほうが領域が狭くなる場合に角を円で丸める例を説明するための図である。
【0107】
図14(a)に示すように、隣接する領域線よりさらに隣の領域線での交点のほうが、領域が狭くなることがある。この場合、円は90度分描くことにより領域線となだらかにつながる。このときの円の半径r0と中心位置Q0(q0x, q0y)は下記のようになる。
r0 = n0
q0x = pa0x + r0
q0y = pa0y
【0108】
この場合、隣接する領域線が範囲外であることを考えると、領域を削りすぎることになる。それを考慮して、最大半径rmaxを設定しておき、それを超える半径であった場合は最大半径rmaxで円を描くようにしても良い。このときPA、PBがその分L寄りの位置になる。
【0109】
また、図14(b)に示すように、隣接する領域線よりさらに隣の領域線より、さらに隣の領域線での交点のほうが、領域が狭くなることがある。この場合、円は135度分描くことにより領域線となだらかにつながる。このときの円の半径r0と中心位置Q0(q0x, q0y)は下記のようになる。
r0 = n0・(√(2) - 1)
q0x = pa0x + r0
q0y = pa0y
【0110】
この場合、隣接する領域線が範囲外であることを考えると、領域を削りすぎることになる。それを考慮して、最大半径rmaxを設定しておき、それを超える半径であった場合は最大半径rmaxで円を描くようにしても良い。このときPA、PBがその分L寄りの位置になる。
【0111】
以上のやり方で、曲線表示してもよい。2つの領域線の傾きが上記の例と違う場合にも、円の描写する角度をその分変えて対応すればよい。
【0112】
また、警告表示部34は、上記で求めた領域線より内側の領域を彩色して表示させてもよい。
【0113】
たとえば警告表示部34は、領域内の色に赤などの色を混ぜて表示する。アルファブレンドの影響度をαとし、元色をCin(CinR, CinG, CinB)、混ぜる色をCmix(CmixR, CmixG, CmixB)とすると、出力される色Cout(CoutR, CoutG, CoutB)は、次のように表せる。
CoutR = CinR・(1-α) + CmixR・α
CoutG = CinG・(1-α) + CmixG・α
CoutB = CinB・(1-α) + CmixB・α
【0114】
また、元色の最大値や輝度値を影響度に影響させて、元画像とアルファブレンドしてもよい。また、輝度値が低すぎる場合に色がつかなくなるのを避けるために、最低値(Cmin)を決めておいてリミットさせるか、影響度が大きくなるような割合(Crate)を決めておいて計算をさせればよい。そうすることにより、ただ赤でアルファブレンドするより物体の視認性がよくなる。この場合、影響度をαとし、元色をCin(CinR, CinG, CinB)、混ぜる色をCmix(CmixR, CmixG, CmixB)とすると、出力される色Cout(CoutR, CoutG, CoutB)は、次のように表せる。
Rate = max(CinR, CinG, CinB) / 255
or Rate = ((CinR + 2・CinG + CinB) / 4) / 255
Rate = max(Rate, Cmin)
or Rate = 1-((1-Rate)/Crate)
CoutR = CinR・(1-α) + CmixR・Rate・α
CoutG = CinG・(1-α) + CmixG・Rate・α
CoutB = CinB・(1-α) + CmixB・Rate・α
【0115】
もしくは、
CoutR = CinR・(1- Rate・α) + CmixR・Rate・α
CoutG = CinG・(1- Rate・α) + CmixG・Rate・α
CoutB = CinB・(1- Rate・α) + CmixB・Rate・α
また、コントラストアップに使用して強調表示させてもよい。領域内とするのは、領域線での領域(図11参照)としてもよいし、2次式での領域(図12参照)としてもよいし、角を円で丸めた領域(図13(c)、図14(a)、(b)参照)としてもよい。
【0116】
図15は、1フレーム画像を複数の領域に分割し、分割領域ごとにグルーピング領域内であるか否かを判定される場合のグルーピング領域内の彩色方法の一例を示す説明図である。
【0117】
図15に示すように、1フレーム画像を複数の領域に分割して、分割領域ごとに8角形の領域内か確認してもよい。このとき、8角形の領域内であれば影響度(アルファブレンドのアルファ)を最大として、分割領域ごとに保存する。そして分割領域ごとに影響度最大となる分割領域が近いかを確認して、その遠さによって影響度を下げてその影響度を分割領域ごとに保存する。そして、分割領域ごとに影響度に応じて表示を変える。こうすることにより、輪郭がはっきりしないため、8角形のグルーピング領域を取得したときの誤差を感じさせなくすることができる。グルーピング領域内とするのは、領域線での領域(図11参照)としてもよいし、2次式での領域(図12参照)としてもよいし、角を円で丸めた領域(図13(c)、図14(a)、(b)参照)としてもよい。
【0118】
一方、グルーピングデータ更新部35は、次のフレームに対応するために、2フレーム前と1フレーム前の画像間の動きベクトル(過去の動きベクトル)の平均分(u_old、v_old)と、1フレーム前と現在のフレームの画像間の動きベクトル(現在の動きベクトル)の平均(u_now、v_now)により、グルーピングの枠の移動を加速させて、次のフレームにおけるグルーピングの位置およびサイズを予測する(図2のステップS14)。また、このとき、グルーピングデータ更新部35は、次のフレームに対応するために、グルーピングの枠の領域を少し狭くさせてもよい。そうすることにより、物体の領域が小さくなっていく場合にも対応できる。
【0119】
そして、グルーピングデータ更新部35により更新されたグルーピングデータは、グルーピングデータ格納部36に格納される。
【0120】
ここで、グルーピングデータ更新部35のより詳細な動作について、まず4角形の場合について説明する。
【0121】
狭くさせる量はaw、bwにaの割合で比例させて、下記のようになる。
ap = ap - aw・a
am = am + aw・a
bp = bp - bw・a
bm = bm + bw・a
【0122】
このときプラス側がマイナス側以下になったら、そのグルーピングは削除する。突然グルーピングを形成するベクトルデータがなくなった場合、形状を維持するために表示の際はここで減らした分を元に戻しておいてもよい。
【0123】
また、動きベクトルの平均分により、最初に次の想定されるグルーピングの場所に移動させておく。すると、過去の動きベクトルの平均(u_old、v_old)と今の動きベクトルの平均(u_now、v_now)により、グルーピングの枠の移動を加速させる。その時のグルーピングの次に想定される変化量(u、v)は下記のようになる。
u = 2・u_now - u_old
v = 2・v_now - v_old
【0124】
また、領域を作成した際のx0、y0に該当し、領域線は下記のようになる。
ap = ap + u
am = am + u
bp = bp + v
bm = bm + v
【0125】
また、その加減速度からグルーピングが向かってきている(拡大)か、遠ざかっている(縮小)かを判別して、グルーピングの大きさを変更してもよい。拡大率をaとした場合、下記のようになる。
a = √(u_now・u_now + v_now・v_now) / √(u_old・u_old + v_old・v_old)
or a = √(u・u + v・v) / √(u_now・u_now + v_now・v_now)
ar = (ap - am) / 2
ap = ap + ar・(a-1)
am = am - ar・(a-1)
br = (bp - bm) / 2
bp = bp + br・(a-1)
bm = bm - br・(a-1)
なお、拡大率はリミットを入れてもよい。
【0126】
8角形の場合、狭くさせる量はaw、bw、cw、dwにaの割合で比例させて、下記のようになる。
ap = ap - aw・a
am = am + aw・a
bp = bp - bw・a
bm = bm + bw・a
cp = cp - cw・a
cm = cm + cw・a
dp = dp - dw・a
dm = dm + dw・a
【0127】
このときプラス側がマイナス側以下になったら、そのグルーピングは削除する。突然グルーピングを形成するベクトルデータがなくなった場合、形状を維持するために表示の際はここで減らした分を元に戻しておいてもよい。
【0128】
また、動きベクトルの平均分により、最初に次の想定されるグルーピングの場所に移動させておく。すると、過去の動きベクトルの平均(u_old、v_old)と今の動きベクトルの平均(u_now、v_now)により、グルーピングの枠の移動を加速させる。その時のグルーピングの次に想定される変化量(u、v)は下記のようになる。
u = 2・u_now - u_old
v = 2・v_now - v_old
【0129】
また、領域を作成した際のx0、y0に該当し、領域線は下記のようになる。
ap = ap + u
am = am + u
bp = bp + v
bm = bm + v
cp = cp + u + v
cm = cm + u + v
dp = dp + v - u
dm = dm + v - u
【0130】
また、その加減速度からグルーピングが向かってきている(拡大)か、遠ざかっている(縮小)かを判別して、グルーピングの大きさを変更してもよい。拡大率をaとした場合、下記のようになる。
a = √(u_now・u_now + v_now・v_now) / √(u_old・u_old + v_old・v_old)
or a = √(u・u + v・v) / √(u_now・u_now + v_now・v_now)
ar = (ap - am) / 2
ap = ap + ar・(a-1)
am = am - ar・(a-1)
br = (bp - bm) / 2
bp = bp + br・(a-1)
bm = bm - br・(a-1)
cr = (cp - cm) / 2
cp = cp + cr・(a-1)
cm = cm - cr・(a-1)
dr = (dp - dm) / 2
dp = dp + dr・(a-1)
dm = dm - dr・(a-1)
なお、拡大率はリミットを入れてもよい。
【0131】
3角形の場合、狭くさせる量はaw、bwにaの割合で比例させて下記のようになる。
as = as - apole・aw・a
bs = bs - bpole・bw・a
cs = cs - cpole・cw・a
【0132】
このとき、2つの領域線での交点が、もう一つの領域線の内側になかったら、そのグルーピングは削除する。突然グルーピングを形成するベクトルデータがなくなった場合、形状を維持するために表示の際はここで減らした分を元に戻しておいてもよい。
【0133】
また、動きベクトルの平均分により、最初に次の想定されるグルーピングの場所に移動させておく。すると、過去の動きベクトルの平均(u_old、v_old)と今の動きベクトルの平均(u_now、v_now)により、グルーピングの枠の移動を加速させる。その時のグルーピングの次に想定される変化量(u、v)は下記のようになる。
u = 2・u_now - u_old
v = 2・v_now - v_old
【0134】
また、領域を作成した際のx0、y0に該当し、領域線は下記のようになる。
as = as + ax・u + ay・v
bs = bs + bx・u + by・v
cs = cs + cx・u + cy・v
【0135】
また、その加減速度からグルーピングが向かってきている(拡大)か、遠ざかっている(縮小)かを判別して、グルーピングの大きさを変更してもよい。拡大率をaとした場合、下記のようになる。
a = √(u_now・u_now + v_now・v_now) / √(u_old・u_old + v_old・v_old)
or a = √(u・u + v・v) / √(u_now・u_now + v_now・v_now)
ar = (as - ak) / 2
as = as + ar・(a-1)
br = (bs - bk) / 2
bs = bs + br・(a-1)
cr = (cs - ck) / 2
cs = cs + cr・(a-1)
【0136】
このとき、akは、
bs = bx・x + by・y
cs = cx・x + cy・y
【0137】
の2式について、x、yの連立方程式を解いて下記に代入すればよい。つまり対面での平行な領域線の位置となる。
ak= ax・x + ay・y
【0138】
同様にbkは
as = ax・x + ay・y
cs = cx・x + cy・y
【0139】
のx、yの連立方程式を解いて下記に代入すればよい。つまり対面での平行な領域線の位置となる。
bk= bx・x + by・y
【0140】
同様にckは
as = ax・x + ay・y
bs = bx・x + by・y
【0141】
のx, yの連立方程式を解いて次式に代入すればよい。つまり対面での平行な領域線の位置となる。
ck= cx・x + cy・y
【0142】
なお、拡大率はリミットを入れてもよい。
【0143】
すなわち、本実施形態に係る警告表示装置10は、少なくとも3フレーム分の画像を用いることにより、グルーピングの枠が加速度をもって移動する場合にも、精度よくその移動を予測することができる。このため、より正確に危険物の存在を車両の運転者に警告することができる。
【0144】
また、グルーピングデータを時間的に継承し、信用度を確認することで危険予測を行うことができる。このとき、本実施形態に係る警告表示装置10は、特徴量の座標の情報などの特徴量データを保持することなく物体の形状を特定することができる。このため、特徴量データを保持する場合に比べ、かつメモリ使用量が非常に削減しつつ物体の形状を正確に把握することができる。また、8角形でグルーピングする場合、物体の形状を寄り正確に把握することができる。
【0145】
図16は、カメラ11の撮像画像を別視点の画像や歪みを正した画像にしてグルーピングを行う様子の一例を示す説明図である。図16には、グルーピングを4角形で行う場合の例について示した。
【0146】
カメラ11に魚眼レンズが取り付けられている場合や、画像の向きを異なる向きに射影する場合などには、元画像中の多角形の形状が変わってしまう。
【0147】
この場合、まず、領域線(Ap、Am)の中間線Acと、それに直行する領域線(Bp、Bm)の中間線Bcとの交点ABcを中心とする。次に、その中心を通り領域線と直角な線と、領域線との交点を計4つ(Apc、Amc、Bpc、Bmc)導き出す。その4つの交点をルックアップテーブルや射影変換によって、違う画面へ転送させる(A2pc、A2mc、B2pc、B2mc)。得られた点により、元の画像での角度の領域線になるように領域線をそれぞれ作る(A2p、A2m、B2p、B2m)。このとき、動きベクトル(u、v)も変換してもよい。その場合、中心の座標をu、vだけずらした位置を変換させて、得られた値から中心座標を変換させた値で引けばよい。
【0148】
また、画像がレンズの屈折により歪むような場合ではなく、角度が変わる状況であれば、転送させるときの領域線の角度をその分変更、または、領域線を追加してもよい。
【0149】
なお、8角形の場合には、CとDでも同様の処理を行い、8角形の領域が完成する。また、3角形の場合には、領域線の端の2つの交点の中間点を転送させて、その点を通る元の角度での領域線を作成する。これをそれぞれの領域線に対して行うことで、3角形の領域が完成する。
【0150】
図17は、1フレームの画像を互いに重複する複数の領域に分割してグルーピングを行う場合の例について示す説明図である。
【0151】
多角形のグルーピングの方法では、凹んだ形状の物体に対応することができない。そこで、図17に示すように、1フレームの画像を互いに重複する複数の領域に分割し、これらの重複領域をもった分割領域ごとにグルーピングを行うとよい。
【0152】
分割領域が互いに重複しているため、グルーピングの途切れが生じづらくなり、凹んだ形状も対応できるようになる。また、重複領域をもった分割領域を、同じ平面上のものとする必要はなく、たとえば違う角度の面や違うゆがみ方の面で行ってもよい。
【0153】
図18は、図17に示す互いに重複する分割領域を用いる場合において4角形でグルーピングを行う様子の一例を示す説明図である。また、図19は、図17に示す互いに重複する分割領域を用いる場合において8角形でグルーピングを行う様子の一例を示す説明図である。
【0154】
図17左に示した元画像について重複する分割領域を用いて4角形でグルーピングすると、図18左に示すように、元画像の凹みが多少反映された結合画像を得ることができる。また、図17左に示した元画像について重複する分割領域を用いて8角形でグルーピングすると、図19左に示すように、元画像の凹みがしっかりと反映された結合画像を得ることができる。なお、図18と図19を比較して明らかなように、8角形でグルーピングするほうが4角形でグルーピングするよりも正しい領域でグルーピングできることがわかる。
【0155】
また、信用度の上がったグルーピングが分割領域をはみ出した場合、グルーピングの移動方向の領域にグルーピングデータ(信用度の情報等)をコピーしてもよい。この場合、グルーピングの移動により別の領域に現れた動きベクトルも、最初から信用度が上がっているグルーピングとして扱うことができる。そのため、途切れなく警告表示ができる。
【0156】
また、1フレーム画像に違う領域線数のグルーピングを混在させてもよい。たとえば、遠いところを見る場合や、小さい物体などでは、グルーピングの領域が小さくなる。この場合、n角形のnの数を増やしても、計算量が増えるばかりで物体の形状の反映という点ではあまり意味がなくなる。また、領域によっては水平線や車線の角度が異なるため、領域によって領域線の傾きを変えたほうが精度を改善できる場合がある。
【0157】
このため、領域や大きさによって、違う領域線数のグルーピングを混在させてグルーピングを行ってもよい。この場合、グルーピングの大きさが変わった場合や、違う領域にまたいだ場合に、グルーピングの領域線が変更されることになる。その時の処理方法について以下説明する。
まず、領域線が変わる場合について説明する。
【0158】
図20は、3角形領域から4角形領域に領域線を変える方法の一例を示す説明図である。
【0159】
たとえば、n角形からm角形へ領域線が変更される場合、同じ傾きとなる領域線数をaとすると、n−aだけ領域線数が減る一方、m−aだけ領域線数が増える。このとき、たとえば、まずm−aの分だけ領域線を増やす。このとき、n角形での領域線での隣り合う領域線の交点を出しておく。次に接する増やしたい領域線の傾きで接する交点を導き、その交点の位置での領域線とする。事前にどの増やしたい領域線が元のn角形の隣り合う領域線とのどの交点が接することになるか確認しておいて、その交点だけを見るようにしてもよい。それをm−aの分だけ行う。次に同じ傾きとならない元のn角形のn−aの領域線を削除する。そうすることによりn角形からm角形へ領域線が変更される。
【0160】
図20には、n=3、m=4、a=1とした場合の例について示した。図20に示す例では、4角形の1つの領域線EpはApと重複している。したがって、増やす領域線はDm、Dp、Epとなり、減らす領域線はBm、Cpとなる。Dmと接する3角形の交点は、ApとBmの交点であるPabとなるため、その位置が領域線となる。同様にDpは、CpとApの交点であるPcaでの領域線となる。同様にEmは、BmとCpの交点であるPbcでの領域線となる。そして、最後に重複していない領域線であるBmとCpを削除する。この手順により、n角形からm角形へ領域線を変更することができる。
次に、領域線数が増える場合について説明する。
【0161】
図21は、グルーピングの領域線数を増やす方法の一例を示す説明図である。
【0162】
たとえば、領域ごとに違う多角形とする場合には、領域をまたいでグルーピングを行うと、複数の多角形が混在することになる。この場合には領域線をその分増やした多角形とする。また、違う領域をまたいでいないグルーピングと違う領域をまたいだグルーピングとの重複確認や結合を行うときにも、領域線を増やした多角形にする必要がある。
【0163】
いま、2つの領域がそれぞれn角形とm角形として重複する領域線数をaとした場合、n+m−a角形としたい。しかし計算を簡単にするためにこの多角形で対面する平行な領域線がない数をbとした場合、bの分だけ平行な領域線を追加し、n+m−a+b角形とする。このときn角形側で対面する平行な領域線がなくてm角形にもその領域線がない数をbnとし、m角形側で対面する平行な領域線がなくてn角形にもその領域線がない数をbmとすると、b=bn+bmとなる。
【0164】
n角形が重複領域状態のn+m−a+b角形になることを想定する。まず、対面する平行な領域線が存在しない場合、その領域線を用意する。その領域線は対面側の決められた2つの隣り合う領域線の交点により導き出される。次に、対面する平行な領域線以外で、m角形にしか存在しない傾きの領域線を追加する。追加する領域線の位置はそのグルーピングに接する位置である。その位置はどの隣り合う領域線の交点かは決まっているため、あらかじめどの交点が接することになるか確認しておいてもよい。そうすることにより、n角形をn+m−a+b角形にすることができる。重複領域状態を通り過ぎてm角形の領域となった場合は、m角形の傾きとならない領域線を削除すればよい。
【0165】
図21には、n=3、m=4、a=1、b=2、bn=2、bm=0とした場合の例に着いて示した。図21に示す例では、まず対面する平行な領域線がないAp、Bm、Cpに対して、対面する平行な領域線Am、Bp、Cmを作成する。対面する平行な領域線は、対面する2つの隣あう領域線の交点と接する位置である。
【0166】
このため、AmはBmとCpの交点であるPbcでの領域線となり、BpはApとCpの交点であるPcaでの領域線となり、CmはApとBmの交点であるPabでの領域線となる。次に、対面する平行な領域線以外でm角形にしか存在しない傾きの領域線であるDm、Dpを追加する。追加する場所は図のようにn角形のグルーピングに接する位置となる。以上のようにn+m−a+b(=8)角形での領域線となるが、図を見ても分かるとおり、最初のグルーピング領域は変わらない。この状態で次のフレームへの移行や結合をすることにより、グルーピング領域が変わっていくことになる。なお、ここまで2つの領域をまたいだ場合の例について説明したが、3つ以上の領域として、その分領域線を変更してもよい。
【0167】
次に、1つのグルーピングで凹んだ形状を考慮した場合を説明する。
図22は、1つのグルーピングで凹んだ形状を表す際の1つの基点と角度領域との関係の一例を示す説明図である。また、図23は、凹領域線を更新する様子の一例を示す説明図である。また、図24は、図22に示す例において1つのグルーピングで凹んだ形状を表した様子の一例を示す説明図である。
以上説明した方法では、1つのグルーピングで凹んだ形状を表すことは難しい。そこで、グルーピング対象となる凹んだ形状の凹んだ状態を次の方法により計算し、それを考慮して1つのグルーピングとしても良い。
なお、グルーピング領域の基本形状は3角形、4角形、8角形など様々な多角形形状をとることが可能であるが、以下の説明では8角形をとる場合の一例について説明する。また、凹んだ形状も多角形とするが、例としてグルーピングの形状と同じ8角形で説明する。グルーピング形状と凹んだ形状は同じ多角形にする必要は無い。
それぞれのグルーピングの領域線の交点と、その領域線上の点を基点として凹んだ形状の処理を行うが、左上の点K0と左辺Amのみ説明する。ここで、グルーピングの領域線を凸領域線(図22の点線Am、Cm等)、基点から凹ませる領域線を凹領域線(図22の細い実線K0Ap、K0Am等)というものとする。凸領域線の交点(たとえばAm、Cmの交点K0)を基点とする場合には、その交点を作り出す凸領域線のどちらかの線分の長さ(たとえばAmであれば図22において点K0から点K7までの長さ)が所定の閾値Lthより長い場合に動作するようにする。また、凸領域線上の点を基点とする場合には、図22のように線分の長さをAmLとした場合(AmL/Lth)−1の正の整数部の点数分、交点までの距離が等距離になるように点を配置する(図22のJ70、J71参照)。このとき、点数は所定の値で制限してもよい(たとえば2)。
図22のように、凹領域線の形成開始時は、基点K0(K0x,K0y)から、上記までに述べたグルーピングを行うための特徴点を領域にする処理と同様の処理を行う。たとえば、凹領域線を8角形とする場合は、下記のようになる。
【0168】
K0Ac = K0x (縦線)
K0Bc = K0y (横線)
K0Cc = K0x + K0y (右上がり線)
K0Dc = K0y -K0x (右下がり線) K0Ap = K0Ac + K0Aw
K0Am = K0Ac -K0Aw
K0Bp = K0Bc + K0Bw
K0Bm = K0Bc -K0Bw
K0Cp = K0Cc + K0Cw
K0Cm = K0Cc -K0Cw
K0Dp = K0Dc + K0Dw
K0Dm = K0Dc -K0Dw
凹領域線までの距離はすべて同じ距離としてなくてもよいが、精度を上げるためにすべて同じ距離とする場合は、
K0Bw = K0Aw
K0Cw = K0Aw・√(2)
K0Dw = K0Aw・√(2)
とする。K0Awを設定することにより凹領域線の広がり速度を設定することができる。K0Awを適切に設定することにより、例えばノイズなどの影響で特徴点が検出できなかった場合に、凹領域が凸領域までいきなり広がらないようにすることができる。ここで形成された凹領域線を、基準凹領域線とする。
ここで、それぞれの凹領域線の広がりは、基点からのある角度領域内に存在する特徴点に依存させるように、角度領域を設定する。角度領域は、上記に述べた基準凹領域線のそれぞれの交点を角度領域境界(K0BmDmB、K0DmApB、K0ApCpB、K0CpBpB、K0BpDpB、K0DpAmB、K0AmCmB、K0CmBmB)で分割された角度領域 (K0DmA、K0ApA、K0CpA、K0BpA、K0DpA、K0AmA、K0CmA、K0BmA)とする。なお、角度領域境界は、基点を始点とする線分であって、基点から凹領域線により広げられた8角形領域の8角形(図22の太い実線)の各頂点を通る線分(図22の一点鎖線)により定義する。また、角度領域境界K0BmDmBは、K0から凹領域線K0BmとK0Dmの交点を通る線分であることを表している。
また、K0では、凸領域線AmとCmの交点が基点であり、その2線より内側に凹領域線を形成するため、4つの凹領域線(K0Dp、K0Am、K0Cm、K0Bm)と4つ角度領域(K0DpA、K0AmA、K0CmA、K0BmA)は意味をなさなくなる。だが、特徴点が最初の凸領域線より外側でグルーピングされても、それも考慮して凹領域線を形成する必要がある。そのため4つの角度領域は、意味をなしている一番近い角度領域にする。つまりK0では、K0DpAとK0AmAがK0BpAとなり、K0CmAとK0BmAがK0DmAとなる。
【0169】
次に、同じグルーピングとなる得られた特徴点が、それぞれの角度領域のどこに属しているかを確認し、属している角度領域の凹領域線を導き出す。ここで、角度領域の凹領域線とは、角度領域の両端を定義する2つの角度領域境界がそれぞれ通る8角形の頂点を結ぶ凹領域線をいうものとする。たとえば、角度領域K0DmAの凹領域線は、K0Dmである。これは、角度領域K0DmAの角度領域境界K0BmDmBを定義する8角形の頂点がK0BmとK0Dmの交点であり、角度領域境界K0DmApBを定義する8角形の頂点がK0DmとK0Apの交点であり、この2つの頂点を通る凹領域線がK0Dmであるためである。
そして、特徴点をグルーピングするために広げる分、特徴点から基点側へ広げた位置が、特徴点が属する角度領域の凹領域線の傾きに対して元の凹領域線より基点に近いかを確認する。近ければ、特徴点から基点側へ広げた位置に、新たな凹領域線を設ける。
例えば、図23のように、凹領域線がK0Dm、K0Ap、K0Cp、K0Bpで形成されていたとし、特徴点P0(x0、y0)が得られたとする。特徴点P0はグルーピングされるかの確認のため凸領域線(たとえば8角形)を形成する。このときAmと接するためグルーピングされ、凸領域線AmがAm2へ移動する。次に凹領域線に対して確認する。得られた特徴点P0は基点K0に対してK0BpAの角度領域に属しているため、この角度領域の凹領域線はK0Bpとなる。そして、特徴点をグルーピングするために広げた分、特徴点から基点側へ広げた位置がP0の8角形となり、その8角形がK0Bpの傾きであるy方向に対して、元の凹領域線K0Bpより近いことが確認できる。そのため、凹領域線K0Bpを、特徴点から基点側へ広げた位置K0Bp2へ移動する。
以上を同じグルーピングとなる得られた特徴点分、すべての基点に対して行う。
すべての特徴点を確認し終わった後、凸領域線が変わるので、それに合わせて基点位置を変える。その基点が凹領域線より内側になるように、凹領域線を新たな基点位置で制限する。また、凸領域線の線分の長さAmLが変わるので、交点での基点の有無が変更されないか、領域線上の基点の数が変更されないか確認し、変更されればその分基点を増減させる。増減させた場合、位置が大幅にずれるので、元の基点位置での範囲に収まる最大の位置で、凹領域線の初期値を決定する。また、意味をなさない4つの凹領域線は、領域とするために、凸領域線の一番外側とすればよい。以上のように現在のフレームでの処理を行う。
描写させる際は、グルーピングさせるために特徴点を凸領域線に広げる分、凹領域線が基点に近くなっているので、その分基点より離れた位置を凹領域線として描写すればよい(図23の新しい描写線)。
【0170】
次のフレームでは、最初に、凹領域線を基準凹領域線まで広げた分広くする。さらに、凸領域線の移動分移動させる。また、上記までに述べた速度変更割合分のサイズの変更を行っても良い。その場合、凹領域線の一部は凸領域線で固定されるので、凹領域線の変更の基準は基点からの距離とすればよい。
以上のような方法で、凹んだ形状を確認することにより、図24のように凹んだ物体に対しても正しく領域線を形成することができるようになる。なお、図24には、凸領域線の交点の基点はすべて有効とし、凸領域線上の基点数は左右の縦線は1としその他は0とする場合の例について示した。描写する際は、上記までに述べたような角を丸める処理を施して表示させても良いし、領域を色彩して表示させても良い。
【0171】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0172】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【0173】
10 警告表示装置
11 カメラ
12 主制御部
19 表示装置
22 特徴量検出部
23 グルーピング処理部
31 グルーピングデータ比較部
32 グルーピング実行部
33 信用度調整部
34 警告表示部
35 グルーピングデータ更新部
36 グルーピングデータ格納部
【特許請求の範囲】
【請求項1】
車両に設けられたカメラにより撮像された前記車両の周囲の画像から特徴量を検出するステップと、
前記検出された特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、
前記グルーピングされた画像領域に含まれる物体画像の前記車両に対する危険度を示す信用度を設定するステップと、
前記信用度が所定の高さ以上であると、前記車両の運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、
前記グルーピングされた画像領域の次フレームの画像内における位置を、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて算出した加速度を用いて予測するステップと、
を有する警告表示方法。
【請求項2】
前記グルーピングされた画像領域の次フレームの画像内におけるサイズを、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて変更するステップ、
をさらに有する請求項1記載の警告表示方法。
【請求項3】
前記グルーピングされた画像領域の次フレームの画像内におけるサイズを現在のサイズよりも所定の割合だけ狭くするステップ、
をさらに有する請求項1または2に記載の警告表示方法。
【請求項4】
前記予測するステップで予測された前記次フレームの画像内における前記グルーピングされた画像領域を初期位置として前記同一の属性を持つ特徴量をグルーピングするとともに、前記信用度を設定するステップで設定された前記信用度の情報を前記次フレームの画像内における前記グルーピングされた画像領域に引き継ぐステップ、
をさらに有する請求項1ないし3のいずれか1項に記載の警告表示方法。
【請求項5】
前記同一の属性を持つ特徴量をグルーピングするステップは、
前記同一の属性を持つ特徴量を3角形以上の多角形でグルーピングするステップである、
請求項1ないし4のいずれか1項に記載の警告表示方法。
【請求項6】
前記同一の属性を持つ特徴量をグルーピングするステップは、
1フレームを互いに重複する複数の領域に分割するステップと、
前記分割された領域ごとに前記同一の属性を持つ特徴量をグルーピングするステップと、
を有する、
請求項1ないし5のいずれか1項に記載の警告表示方法。
【請求項7】
前記分割された領域ごとにグルーピングした画像領域が前記分割された領域間を横断して移動する場合、移動先の領域に前記グルーピングした画像領域の前記信用度の情報をコピーするステップ、
をさらに有する請求項6記載の警告表示方法。
【請求項8】
前記同一の属性を持つ特徴量をグルーピングするステップは、
前記同一の属性を持つ特徴量をグルーピングする多角形の辺数を前記グルーピングすべき画像領域の形状に応じて変更しつつグルーピングするステップである、
請求項1ないし7のいずれか1項に記載の警告表示方法。
【請求項9】
前記グルーピングすべき画像領域は、凹んだ形状を有し、
前記同一の属性を持つ特徴量をグルーピングするステップは、
前記凹んだ形状を有する前記グルーピングすべき画像領域の形状を1つの領域でグルーピングするステップである、
請求項1ないし8のいずれか1項に記載の警告表示方法。
【請求項10】
前記表示装置に対して前記カメラにより撮像された画像に対して前記信用度が所定の高さ以上の前記グルーピングした画像領域の位置を示す画像を重畳表示させて警告表示を行うステップ、
をさらに有する請求項1ないし9のいずれか1項に記載の警告表示方法。
【請求項11】
前記グルーピングした画像領域の位置を示す画像を重畳表示させて警告表示を行うステップは、
前記表示装置に対して前記カメラにより撮像された画像に対して、前記信用度が所定の高さ以上の前記グルーピングした画像領域の領域内を彩色して重畳表示させて警告表示を行うステップである、
請求項10記載の警告表示方法。
【請求項12】
コンピュータに、
車両に設けられたカメラが撮像した前記車両の周囲の画像から特徴量を検出するステップと、
前記検出された特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、
前記グルーピングされた画像領域に含まれる物体画像の前記車両に対する危険度を示す信用度を設定するステップと、
前記信用度が所定の高さ以上であると、前記車両の運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、
前記グルーピングされた画像領域の次フレームの画像内における位置を、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて算出した加速度を用いて予測するステップと、
を実行させるための警告表示プログラム。
【請求項1】
車両に設けられたカメラにより撮像された前記車両の周囲の画像から特徴量を検出するステップと、
前記検出された特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、
前記グルーピングされた画像領域に含まれる物体画像の前記車両に対する危険度を示す信用度を設定するステップと、
前記信用度が所定の高さ以上であると、前記車両の運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、
前記グルーピングされた画像領域の次フレームの画像内における位置を、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて算出した加速度を用いて予測するステップと、
を有する警告表示方法。
【請求項2】
前記グルーピングされた画像領域の次フレームの画像内におけるサイズを、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて変更するステップ、
をさらに有する請求項1記載の警告表示方法。
【請求項3】
前記グルーピングされた画像領域の次フレームの画像内におけるサイズを現在のサイズよりも所定の割合だけ狭くするステップ、
をさらに有する請求項1または2に記載の警告表示方法。
【請求項4】
前記予測するステップで予測された前記次フレームの画像内における前記グルーピングされた画像領域を初期位置として前記同一の属性を持つ特徴量をグルーピングするとともに、前記信用度を設定するステップで設定された前記信用度の情報を前記次フレームの画像内における前記グルーピングされた画像領域に引き継ぐステップ、
をさらに有する請求項1ないし3のいずれか1項に記載の警告表示方法。
【請求項5】
前記同一の属性を持つ特徴量をグルーピングするステップは、
前記同一の属性を持つ特徴量を3角形以上の多角形でグルーピングするステップである、
請求項1ないし4のいずれか1項に記載の警告表示方法。
【請求項6】
前記同一の属性を持つ特徴量をグルーピングするステップは、
1フレームを互いに重複する複数の領域に分割するステップと、
前記分割された領域ごとに前記同一の属性を持つ特徴量をグルーピングするステップと、
を有する、
請求項1ないし5のいずれか1項に記載の警告表示方法。
【請求項7】
前記分割された領域ごとにグルーピングした画像領域が前記分割された領域間を横断して移動する場合、移動先の領域に前記グルーピングした画像領域の前記信用度の情報をコピーするステップ、
をさらに有する請求項6記載の警告表示方法。
【請求項8】
前記同一の属性を持つ特徴量をグルーピングするステップは、
前記同一の属性を持つ特徴量をグルーピングする多角形の辺数を前記グルーピングすべき画像領域の形状に応じて変更しつつグルーピングするステップである、
請求項1ないし7のいずれか1項に記載の警告表示方法。
【請求項9】
前記グルーピングすべき画像領域は、凹んだ形状を有し、
前記同一の属性を持つ特徴量をグルーピングするステップは、
前記凹んだ形状を有する前記グルーピングすべき画像領域の形状を1つの領域でグルーピングするステップである、
請求項1ないし8のいずれか1項に記載の警告表示方法。
【請求項10】
前記表示装置に対して前記カメラにより撮像された画像に対して前記信用度が所定の高さ以上の前記グルーピングした画像領域の位置を示す画像を重畳表示させて警告表示を行うステップ、
をさらに有する請求項1ないし9のいずれか1項に記載の警告表示方法。
【請求項11】
前記グルーピングした画像領域の位置を示す画像を重畳表示させて警告表示を行うステップは、
前記表示装置に対して前記カメラにより撮像された画像に対して、前記信用度が所定の高さ以上の前記グルーピングした画像領域の領域内を彩色して重畳表示させて警告表示を行うステップである、
請求項10記載の警告表示方法。
【請求項12】
コンピュータに、
車両に設けられたカメラが撮像した前記車両の周囲の画像から特徴量を検出するステップと、
前記検出された特徴量にもとづいて、同一の属性を持つ特徴量をグルーピングするステップと、
前記グルーピングされた画像領域に含まれる物体画像の前記車両に対する危険度を示す信用度を設定するステップと、
前記信用度が所定の高さ以上であると、前記車両の運転者が視認可能な位置に設けられた表示装置に対して警告表示を行うステップと、
前記グルーピングされた画像領域の次フレームの画像内における位置を、前記グルーピングされた画像領域を構成する画素の2フレーム前の画像と1フレーム前の画像間の動きベクトルの平均と、前記1フレーム前の画像と現在のフレームの画像間の動きベクトルの平均と、にもとづいて算出した加速度を用いて予測するステップと、
を実行させるための警告表示プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図15】
【公開番号】特開2013−97392(P2013−97392A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−236396(P2011−236396)
【出願日】平成23年10月27日(2011.10.27)
【出願人】(504113008)東芝アルパイン・オートモティブテクノロジー株式会社 (110)
【Fターム(参考)】
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願日】平成23年10月27日(2011.10.27)
【出願人】(504113008)東芝アルパイン・オートモティブテクノロジー株式会社 (110)
【Fターム(参考)】
[ Back to top ]