(57)【要約】【課題】物体毎に適切な物体形状を生成する。【解決手段】移動体に設置されたカメラから画像を取得する画像取得部と、画像から各特徴点を抽出する特徴点抽出部と、異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行う照合部と、照合された特徴点の位置と、移動体の移動量とに基づいて三次元位置を算出する位置算出部と、三次元位置の誤差を示す精度を算出する精度算出部と、画像から物体を検出し、物体毎に生成した特徴点の精度分布に基づいて、物体毎に閾値を設定する分布判定部と、閾値よりも精度が高い特徴点を物体毎に選別する選別部と、選別された特徴点を用いて物体形状を生成する生成部と、を備える。【選択図】図７
2014109819.tif 000002
【特許請求の範囲】
【請求項１】
移動体に設置されたカメラから画像を取得する画像取得部と、
前記画像から各特徴点を抽出する特徴点抽出部と、
異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行う照合部と、
照合された特徴点の位置と、前記移動体の移動量とに基づいて三次元位置を算出する位置算出部と、
前記三次元位置の誤差を示す精度を算出する精度算出部と、
前記画像から物体を検出し、物体毎に生成した特徴点の精度分布に基づいて、物体毎に閾値を設定する分布判定部と、
前記閾値よりも精度が高い特徴点を物体毎に選別する選別部と、
選別された特徴点を用いて物体形状を生成する生成部と、
を備える画像処理装置。
【請求項２】
前記移動体の動きに基づいて前記三次元位置の精度を予測する精度予測部をさらに備え、
前記選別部は、
前記精度予測部の予測結果に基づいて、選別対象の特徴点を判定する請求項１記載の画像処理装置。
【請求項３】
前記選別部は、
共通の閾値を用いて特徴点を選別し、選別されなかった特徴点であり、前記精度予測部により精度が現在より悪くなると予測された特徴点に対し、前記物体毎に設定された閾値を用いて選別する請求項２記載の画像処理装置。
【請求項４】
前記物体毎の特徴点に対し、前記移動体から距離が一番近い特徴点を求める距離算出部をさらに備え、
前記選別部は、
前記距離が一番近い特徴点から所定範囲内にある特徴点に対して選別処理を行う請求項１乃至３いずれか一項に記載の画像処理装置。
【請求項５】
前記三次元位置に基づいて、前記移動体から物体までの距離が閾値以上であるか否かを判定する距離判定部をさらに備え、
前記距離判定部により閾値以下であると判定された特徴点に対し、前記精度算出部以降の後段の処理を行う請求項１乃至４いずれか一項に記載の画像処理装置。
【請求項６】
移動体に設置されたカメラから画像を取得し、
前記画像から特徴点を抽出し、
異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行い、
照合された特徴点の位置と、前記移動体の移動量とに基づいて三次元位置を算出し、
前記三次元位置の誤差を示す精度を算出し、
前記画像から物体を検出し、物体毎に生成した特徴点精度分布に基づいて、物体毎に閾値を設定し、
前記閾値よりも精度が高い特徴点を物体毎に選別し、
選別された特徴点を用いて物体形状を生成する
処理をコンピュータが実行する画像処理方法。
【請求項７】
移動体に設置されたカメラから画像を取得し、
前記画像から特徴点を抽出し、
異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行い、
照合された特徴点の位置と、前記移動体の移動量とに基づいて三次元位置を算出し、
前記三次元位置の誤差を示す精度を算出し、
前記画像から物体を検出し、物体毎に生成した特徴点精度分布に基づいて、物体毎に閾値を設定し、
前記閾値よりも精度が高い特徴点を物体毎に選別し、
選別された特徴点を用いて物体形状を生成する
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像された画像を処理する画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、自車両の前後左右に広角カメラを４台取り付け、周囲に存在する静止物体までの三次元距離を計測し、周囲の駐車車両の形状・位置関係を示し、駐車時の車両操作支援を行う車載画像処理システムがある。
【０００３】
この車載画像処理システムにおいて、移動体から物体までの距離を測定することが重要になってくる。距離を測定する技術として、例えば、距離誤差が閾値以下の特徴点のみを抽出することで測定精度を向上させる技術がある（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３２２３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、特徴点までの距離誤差が閾値以下の物体について、物体形状を生成することができない。例えば、画像内に複数の物体があり、移動体から手前の物体を物体Ａ、物体Ａの奥にある物体を物体Ｂとする。このとき、移動体を旋回して物体Ａと物体Ｂの間に入れる場合、移動体は物体Ｂには近づかずに旋回してしまうため、物体Ｂの特徴点までの距離誤差が閾値以下とならずに、物体Ｂの物体形状が生成されないという問題点がある。
【０００６】
そこで、開示の技術では、物体毎に適切な物体形状を生成することを目的とする。
【課題を解決するための手段】
【０００７】
開示の一態様における画像処理装置は、移動体に設置されたカメラから画像を取得する画像取得部と、前記画像から各特徴点を抽出する特徴点抽出部と、異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行う照合部と、照合された特徴点の位置と、前記移動体の移動量とに基づいて三次元位置を算出する位置算出部と、前記三次元位置の誤差を示す精度を算出する精度算出部と、前記画像から物体を検出し、物体毎に生成した特徴点の精度分布に基づいて、物体毎に閾値を設定する分布判定部と、前記閾値よりも精度が高い特徴点を物体毎に選別する選別部と、選別された特徴点を用いて物体形状を生成する生成部と、を備える。
【発明の効果】
【０００８】
開示の技術によれば、物体毎に適切な物体形状を生成することができる。
【図面の簡単な説明】
【０００９】
【図１】比較例における計測状況を説明する図。
【図２】比較例における物体形状を生成する処理の一例を説明する図。
【図３】旋回駐車する場合の各特徴点の例を示す図。
【図４】物体Ｂの欠落を説明する図。
【図５】選別閾値を緩和した場合の問題点を説明する図。
【図６】実施例１における画像処理システムの構成の一例を示すブロック図。
【図７】実施例１における画像処理装置の機能の一例を示すブロック図。
【図８】エッジリストの要素が持つ各情報の一例を示す図。
【図９】実施例１における特徴点抽出処理の一例を示すフローチャート。
【図１０】登録済みリストの要素が持つ各情報の一例を示す図。
【図１１】実施例１における照合処理の一例を示すフローチャート。
【図１２】カメラから物体までの距離に応じて三次元位置の誤差を説明する図。
【図１３】２時刻における物体とカメラとの位置関係を示す図。
【図１４】実施例１における三次元位置算出処理及び精度算出処理の一例を示すフローチャート。
【図１５】実施例１における特徴点の登録処理の一例を示すフローチャート。
【図１６】直進時における移動体が直進する場合のカメラから特徴点までの距離と精度の推移を示す図。
【図１７】旋回時における移動体が直進する場合のカメラから特徴点までの距離と精度の推移を示す図。
【図１８】実施例１における精度予測処理の一例を示すフローチャート。
【図１９】実施例１における特徴点の精度分布判定処理の一例を示すフローチャート。
【図２０】実施例１における初期ラベル値の付与処理の一例を示すフローチャート。
【図２１】接続先リストの要素が持つ情報の一例を示す図。
【図２２】実施例１におけるラベル番号の整理処理の一例を示すフローチャート。
【図２３】最終接続先リストの要素が持つ情報の一例を示す図。
【図２４】実施例１における物体番号決定処理の一例を示すフローチャート。
【図２５】物体リストの要素が持つ情報の一例を示す図。
【図２６】実施例１における選別閾値の設定処理の一例を示すフローチャート。
【図２７】実施例１におけるヒストグラムリストの要素が持つ情報の一例を示す図。
【図２８】選別閾値リストの要素が持つ情報の一例を示す図。
【図２９】実施例１における特徴点の選別処理の一例を示すフローチャート。
【図３０】実施例２における画像処理装置の機能の一例を示すブロック図。
【図３１】実施例２における物体情報の要素が持つ情報の一例を示す図。
【図３２】実施例２における物体毎の距離算出処理の一例を示すフローチャート。
【図３３】実施例２における特徴点の選別処理の一例を示すフローチャート。
【図３４】実施例３における画像処理装置の機能の一例を示すブロック図。
【発明を実施するための形態】
【００１０】
まず、物体形状を生成する比較例について説明する。比較例では、移動体を移動させながら撮像した画像を用いて、次の手順によって周囲物の表面形状を生成する。なお、以下では、移動体として車両を例にして説明する。
【００１１】
図１は、比較例における計測状況を説明する図である。図１に示す例では、車両５は、物体Ａと物体Ｂとの間にある駐車スペースに駐車するとする。このとき、車両５に設置されたカメラ２０で走行中に周囲を撮像し、撮像された画像を用いて生成された物体形状を運転手等に提示する。
【００１２】
図２は、比較例における物体形状を生成する処理の一例を説明する図である。
（１）一台のカメラ２０による移動ステレオ方式によって、周囲物体上の特徴点の３次元位置を計測
（２）各特徴点について、これまでの移動で得られた３次元位置の中で最も計測精度が高い情報を保持
（３）保持している３次元位置データ群から、計測精度が一定以上の精度の高い特徴点だけを選別
（４）精度の高い３次元位置情報のみを用いて周囲物の表面形状を生成
ここで、移動ステレオ方式とは、画像に写った静止物体を時系列で追跡し、２時刻（現時刻と過去時刻）での物体の撮像位置とカメラ（車両）の相対位置（移動量）を定めることで、三角測量の原理から三次元位置を算出する方法である。原理的に移動ステレオ方式では、カメラ２０から物体までの距離が近いほど三次元位置の精度はよく、カメラ２０から物体までの距離が遠いほど三次元位置の精度は低下する。
【００１３】
上記の比較例において、車両の移動経路によっては、対象物（物体）との距離が十分に近づかず、物体上の特徴点に対する３次元位置の精度が閾値以下となり、形状生成の対象から外れ、物体が欠落する場合がある。
【００１４】
例えば、図３は、旋回駐車する場合の各特徴点の例を示す図である。図３に示す例では、駐車スペースの両隣に駐車車両がある。以降では、手前側の駐車車両を物体Ａ、奥側の駐車車両を物体Ｂとする。
【００１５】
ここで、一般的なバック駐車として、（i）駐車スペースに接近→（ii）駐車スペース付近で後退駐車するために旋回→（iii）駐車スペースに向かって後退駐車を行うシーンを考える。
【００１６】
物体Ａの特徴点については、上記（i）の駐車スペースに接近時にカメラ２０と物体Ａまでの距離が近くなるため三次元位置の精度は高い。一方、物体Ｂの特徴点については、上記（ii）の駐車スペース付近で後退駐車するための旋回時に、カメラ２０と物体Ｂまでの距離が遠くなる。そのため、（ii）の場合の物体Ｂの三次元位置の精度が低くなる。
【００１７】
その結果、（３）により、精度の高い特徴点が選別されるため、物体Ａの形状は生成されるが、精度の低い物体Ｂの特徴点は選別されないため、物体Ｂの形状が欠落する。
【００１８】
図４は、物体Ｂの欠落を説明する図である。図４に示す例では、物体Ｂの特徴点について、移動体が物体Ｂに十分に近づく前に離れてしまったため、物体Ｂ上の三次元位置の精度が高くならない。よって、精度が閾値以下の特徴点を含む物体Ｂでは、物体形状が生成されず、物体形状が欠落してしまう。
【００１９】
また、物体形状の欠落を防ぐために、形状生成のための特徴点の選別閾値を緩和する方法が考えられる。しかし、特徴点の選別閾値を緩和すると、図５に示すような問題点が発生する。
【００２０】
図５は、選別閾値を緩和した場合の問題点を説明する図である。図５に示すように、精度が低い初期段階で、その三次元位置の特徴点が形状生成の対象となるため、初期段階の形状精度が低い。また、精度が高い特徴点だけでなく、精度が低い特徴点も形状生成の対象となるため、精度の高い物体の形状が崩れてしまう。
【００２１】
以上のように、比較例による処理では、物体形状を適切に生成することができていない。そこで、以下に説明する各実施例では、添付された図面を参照しつつ、上記問題を解決する実施例について説明する。
【００２２】
［実施例１］
まず、実施例１における移動体に搭載される画像処理システム１の構成について説明する。画像処理システム１は、例えば車載カメラシステムに適用できる。
【００２３】
＜構成＞
図６は、実施例１における画像処理システム１の構成の一例を示すブロック図である。画像処理システム１は、画像処理装置１０と、カメラ２０と、表示部３０とを備える。画像処理システム１は、複数のカメラを有してもよい。
【００２４】
画像処理装置１０は、移動体に設置されたカメラ２０から画像を取得し、取得した画像から物体までの距離を測定し、移動体の駐車支援を行ったりする。
【００２５】
また、画像処理装置１０は、制御部１０１と、主記憶部１０３と、補助記憶部１０５と、通信部１０７と、ドライブ装置１０９と、カメラＩ／Ｆ１１１とを有する。これらの各部は、データ通信可能なように相互にデータバスを介して接続されている。
【００２６】
制御部１０１は、コンピュータの中で、各装置の制御やデータの演算、加工を行うＣＰＵ（Central Processing Unit）である。また、制御部１０１は、主記憶部１０３や補助記憶部１０５に記憶されたプログラムを実行する演算装置であり、入力装置や記憶装置からデータを受け取り、演算、加工した上で、出力装置や記憶装置に出力する。プログラムは、例えば測距処理を含む画像処理プログラムである。
【００２７】
主記憶部１０３は、例えば、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などである。主記憶部１０３は、制御部１０１が実行する基本ソフトウェアであるＯＳやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【００２８】
補助記憶部１０５は、例えばＨＤＤ（Hard Disk Drive）などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。補助記憶部１０５は、例えばカメラ２０から取得した画像を記憶する。
【００２９】
通信部１０７は、有線又は無線で周辺機器とデータ通信を行う。通信部１０７は、例えばネットワークを介して、画像を取得し、補助記憶部１０５に記憶する。
【００３０】
ドライブ装置１０９は、記録媒体４０、例えばフレキシブルディスクやＣＤ（Compact Disc）から、後述する処理を実行させる画像処理プログラムを読み出し、記憶装置にインストールしてもよい。
【００３１】
また、記録媒体４０に、撮像制御プログラムを格納し、この記録媒体４０に格納されたプログラムは、ドライブ装置１０９を介して画像処理装置１０にインストールされる。インストールされた撮像制御プログラムは、画像処理装置１０により実行可能となる。
【００３２】
カメラＩ／Ｆ１１１は、カメラ２０から画像を取得するインタフェースである。カメラI／Ｆ１１１は、取得した画像を補助記憶部１０５に保存したり、又は制御部１０１に出力したりする。
【００３３】
カメラ２０は、例えば車両に設置されたフロントカメラ、レフトカメラ、ライトカメラ、バックカメラのいずれかであり、周囲を撮像し、カメラＩ／Ｆ１１１を介して画像処理装置１０に画像を入力する。
【００３４】
表示部３０は、画像処理装置１０により生成された出力画像を表示したりする。例えば表示部３０は、俯瞰画像などを表示する。
【００３５】
＜機能＞
図７は、実施例１における画像処理装置１０の機能の一例を示すブロック図である。画像処理装置１０は、画像取得部２０１と、特徴点抽出部２０３と、第１記録部２０５と、照合部２０７と、挙動測定部２０９と、位置算出部２１１と、第２記録部２１３と、精度算出部２１５と、精度予測部２１７と、分布判定部２１９と、選別部２２１と、生成部２２３とを有する。
【００３６】
画像取得部２０１、第１記録部２０５、及び第２記録部２１３以外の各部は、例えば制御部１０１により画像処理プログラムが実行されることで、主記憶部１０３上にロードされて実行可能となる機能である。
【００３７】
画像取得部２０１は、例えばカメラＩ／Ｆ１１１により実現されうる。第１記録部２０５及び第２記録部２１３は、例えば補助記憶部１０５や主記憶部１０３などにより実現されうる。
【００３８】
画像取得部２０１は、移動体に設置されたカメラ２０から画像を取得する。画像取得部２０１は、例えば、対応するカメラ２０が撮像した画像を取得する。カメラ２０は、例えば移動体が走行しているときに撮像を行う。
【００３９】
特徴点抽出部２０３は、各撮像時の画像から、各特徴点を抽出する。例えば、特徴点抽出部２０３は、入力された画像からエッジ点（特徴点）群を抽出し、第１記録部２０５に記録するとともに、照合部２０７に出力する。
【００４０】
第１記録部２０５は、特徴点抽出部２０３により抽出された特徴点を、時系列毎の画像に対応付けて記録する。
【００４１】
照合部２０７は、少なくとも２時点の画像から抽出された各特徴点に対して照合処理を行う。照合部２０７は、例えば、特徴点抽出部２０３から得られたエッジ点群と、第１記録部２０５に記録されている時系列で過去のエッジ点群との照合を行う。照合部２０７は、照合された（照合に成功した）２時点のエッジ点群を位置算出部２１１に出力する。
【００４２】
挙動測定部２０９は、カメラ２０から取得した画像を用いて車速や舵角を求めてよいし、各センサを移動体に設けて、これらのセンサにより、車速や舵角を測定してもよい。挙動測定部２０９は、求めた移動体（又はカメラ２０）の移動量を位置算出部２１１に出力する。また、挙動測定部２０９は、移動体の挙動（移動量や移動方向など）を第２記録部２１３に記録する。
【００４３】
位置算出部２１１は、照合部２０７により照合された特徴点の位置と、挙動測定部２０９により求められた移動体の移動量とに基づいて、特徴点の三次元位置を算出する。位置算出部２１１は、求めた特徴点の三次元位置を第２記録部２１３に記録するとともに、精度算出部２１５に出力する。
【００４４】
第２記録部２１３は、時系列の画像毎に、照合された特徴点の三次元位置を対応付けて記録する。また、第２記録部２１３は、精度算出部２１５により算出された特徴点に対し、特徴点毎に最も精度が高い三次元位置の情報を記録する。また、第２記録部２１３は、挙動測定部２０９から入力される移動体の動きを記録する。
【００４５】
精度算出部２１５は、特徴点の三次元位置の誤差を算出し、第２記録部２１３に記録する。精度算出部２１５は、算出した特徴点の三次元位置の誤差と、第２記録部２１３に記録されている、その特徴点の三次元位置の誤差とを比較して、精度の最も高い三次元位置の情報を第２記録部２１３に記録する。
【００４６】
精度予測部２１７は、移動体の動きに基づいて特徴点の三次元位置の精度を予測する。例えば、精度予測部２１７は、特徴点の三次元位置と車両挙動から特徴点の将来の三次元位置の精度を予測する。精度予測部２１７は、予測した三次元位置の精度を選別部２２１に出力する。
【００４７】
分布判定部２１９は、画像から物体を検出し、物体毎に生成した特徴点の精度分布に基づいて、物体毎に閾値を設定する。例えば、分布判定部２１９は、エッジ点（特徴点）群に基づいて物体検出を行い、各物体に含まれる特徴点の精度分布を算出する。分布判定部２１９は、この精度分布の分布形状に基づいて物体毎の閾値を設定する。分布判定部２１９は、設定した物体毎の閾値を選別部２２１に出力する。
【００４８】
選別部２２１は、設定された閾値よりも精度が高い特徴点を物体毎に選別する。例えば、選別部２２１は、精度予測部２１７の予測結果と、分布判定部２１９から得られた閾値とを基に、物体形状生成に使用する特徴点の選別を行う。選別部２２１は、物体毎に選別した特徴点を生成部２２３に出力する。
【００４９】
生成部２２３は、選別部２２１で選別された特徴点を用いて、物体形状を生成し、出力する。ここで、第１記録部２０５と第２記録部２１３とは、便宜上別々の構成で説明したが、１つの記録部にし、この記録部の記録領域を分けた構成であってもよい。
【００５０】
＜各部の処理＞
次に、実施例１における各部の処理内容について詳しく説明する。
【００５１】
《画像取得処理》
画像取得部２０１は、移動体に取り付けたカメラ２０からの画像を取得する。画像取得部２０１は、必要に応じてカラー画像をモノクロ濃淡画像に変換して特徴点抽出部２０３に出力する。
【００５２】
《特徴点抽出処理》
特徴点抽出部２０３は、入力された画像からエッジ点群を抽出する。特徴点（エッジ）とは、取得画像において明るさが急激に変化している箇所である。特徴点の抽出方法としては、例えばＳｏｂｅｌフィルタなど一般的なフィルタ処理がある。特徴点抽出部２０３は、フィルタ適用後の値（エッジ強度）が閾値以上であれば特徴点として抽出し、抽出結果を照合部２０７と第１記録部２０５に出力する。閾値は、実験等により求められた適切な値が予め設定されていればよい。
【００５３】
特徴点抽出部２０３は、特徴点を抽出することで、エッジリストを生成する。特徴点算出部２０３は、各画素のエッジ強度を算出し、エッジ強度が閾値以上になった箇所がある場合は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に追加する。ここで、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）は、図８に示す各情報を持つ要素ｅ［ｉ］の集合である。また、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）は、特徴点抽出処理の前に初期化（要素数＝０）される。
【００５４】
図８は、エッジリストの要素が持つ各情報の一例を示す図である。図８に示すように、要素ｅ［ｉ］は、特徴点位置（現在）（ｎｘ，ｎｙ）と、特徴点位置（過去）（ｒｘ，ｒｙ）と、特徴点位置を中心としたパターン情報（以下、周囲のパターン情報とも称す）（ｐｏｗ［ＲＹ］［ＲＸ］）と、照合処理の成否フラグ（ｆｌａｇ）と、三次元位置（ｐｘ，ｐｙ，ｐｚ）と、三次元位置の誤差（ｅｒｒ）と、精度の低下を示す低下（ｄｅｇ）と、物体検出の際に用いるラベル（ｌｂｌ）と、物体内番号（ｎｕｍ）と、物体形状に用いるか否かを示す出力（ｏｕｔ）とを有する。
【００５５】
図９は、実施例１における特徴点抽出処理の一例を示すフローチャートである。図９に示すステップＳ１０１で、特徴点抽出部２０３は、入力された画像に対し、エッジ処理を行う。
【００５６】
ステップＳ１０２で、特徴点抽出部２０３は、抽出したエッジ点（特徴点）のエッジ強度が閾値以上であるか否かを判定する。エッジ強度が閾値以上であれば（ステップＳ１０２−ＹＥＳ）ステップＳ１０３に進み、エッジ強度が閾値未満であれば（ステップＳ１０２−ＮＯ）ステップＳ１０４に進む。
【００５７】
ステップＳ１０３で、特徴点抽出部２０３は、エッジリストに対し、次の情報を持つ要素ｅ［ｉ］を作成し、エッジリストに追加する。
・現在の特徴点位置（ｎｘ，ｎｙ）
・周囲のパターン情報
・成否フラグを「０」とする。
なお、成否フラグは、「０」は失敗、「１」は成功を表す。特徴点抽出部２０３は、特徴点の要素数を表すＮｅを１つインクリメントして更新する（Ｎｅ＝Ｎｅ＋１）。
【００５８】
ステップＳ１０４で、特徴点抽出部２０３は、画像内の全画素について、エッジ処理を行ったか否かを判定する。エッジ処理が終了していれば（ステップＳ１０４−ＹＥＳ）抽出処理が終了し、エッジ処理が終了していなければ（ステップＳ１０４−ＮＯ）ステップＳ１０１に戻る。以上の処理を行うで、特徴点抽出部２０３は、画像内の特徴点（エッジ点）を抽出することができる。
【００５９】
《照合処理》
照合部２０７は、特徴点抽出部２０３で得られたエッジ点群と、第１記録部２０５に記録されている過去のエッジ点群とについて照合を行う。照合方法としては、特徴点を中心として一定の大きさの領域を設定し、特徴点同士の領域内の輝度値の差の絶対値和（ＳＡＤ）や、輝度差の自乗和（ＳＳＤ）など、一般的な画像間の照合処理が適用できる。
【００６０】
また、照合部２０７は、照合条件に特徴点間の距離が閾値以内であることを加えてもよい。特徴点の三次元位置が得られている場合は、移動体の移動量から、特徴点の画像位置を予測することができるので、照合部２０７は、この予測された位置と抽出された特徴点との距離によって照合成否を判断してもよい。
【００６１】
照合部２０７は、照合処理を行う際、第２記録部２１３に記録されている登録済みリスト（ｌｉｓｔ＿ｒｅｇ）と、特徴点抽出部２０３から得られたエッジリスト（ｌｉｓｔ＿ｅｄｇｅ）を用いて照合処理を行う。
【００６２】
ここで、登録済みリスト（ｌｉｓｔ＿ｒｅｇ）は、図１０に示す各情報を持つ要素ｒ［ｉ］の集合である。また、登録済みリスト（ｌｉｓｔ＿ｒｅｇ）は、時系列で使用するため初期化されない。照合に成功した場合は、登録済みリストの要素ｒ［ｉ］の値を、エッジリストの要素ｅ［ｊ］に登録する。登録済みリスト（ｌｉｓｔ＿ｒｅｇ）の生成については後述する。
【００６３】
図１０は、登録済みリストの要素が持つ各情報の一例を示す図である。図１０に示すように、要素ｒ［ｉ］は、照合が成功している特徴点の画像位置（ｒｘ，ｒｙ）と、エッジ強度（ｐｏｗ）と、画像位置が示す特徴点の三次元位置（ｐｘ，ｐｙ，ｐｚ）と、三次元位置の誤差（ｅｒｒ）とを有する。
【００６４】
図１１は、実施例１における照合処理の一例を示すフローチャートである。図１１に示すステップＳ２０１で、照合部２０７は、登録済みリスト（ｌｉｓｔ＿ｒｅｇ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ２０１−ＹＥＳ）ステップＳ２０２に進み、未処理の要素がなければ（ステップＳ２０１−ＮＯ）照合処理が終了する。
【００６５】
ステップＳ２０２で、照合部２０７は、未処理の要素ｒ［ｉ］を登録済みリストから取り出す。
【００６６】
ステップＳ２０３で、照合部２０７は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ２０３−ＹＥＳ）ステプＳ２０４に進み、未処理の要素がなければ（ステップＳ２０３−ＮＯ）ステップＳ２０９に進む。
【００６７】
ステップＳ２０４で、照合部２０７は、未処理の要素ｅ［ｊ］をエッジリストから取り出す。
【００６８】
ステップＳ２０５で、照合部２０７は、ｒ［ｉ］とｅ［ｊ］との特徴点間の照合処理を行う。照合処理は、上述したように、特徴点を含む所定領域内の画素値を比較することで行われる。
【００６９】
ステップＳ２０６で、照合部２０７は、照合が成功したか否かを判定する。例えば、照合部２０７は、所定領域間の輝度値のＳＡＤや、ＳＳＤが閾値以下であれば成功と判定する。照合が成功すれば（ステップＳ２０６−ＹＥＳ）ステップＳ２０７に進み、照合が成功しなければ（ステップＳ２０６−ＮＯ）ステップＳ２０３に戻る。
【００７０】
ステップＳ２０７で、照合部２０７は、要素ｅ［ｊ］に要素ｒ［ｉ］の以下の値を登録する。
・画像位置（ｒｘ，ｒｙ）
・三次元位置（ｐｘ，ｐｙ，ｐｚ）
・三次元位置の誤差（ｅｒｒ）
ステップＳ２０８で、照合部２０７は、要素ｅ［ｊ］のフラグを「１」に設定する。ステップＳ２０９で、照合部２０７は、登録済みリストから要素ｒ［ｉ］を削除する。また、照合部２０７は、登録済みリストの要素数Ｎｒを１つデクリメントして更新する（Ｎｒ＝Ｎｒ＋１）。以上の処理を行うことで、照合部２０７は、照合処理を行い、照合された特徴点の情報をエッジリストに登録することができる。
【００７１】
《三次元位置算出処理》
位置算出部２１１は、照合部２０７で照合に成功した２時刻のエッジ点位置と移動体の挙動から三次元位置を算出する。車両挙動は、例えばカメラ２０の移動量でもあり、車速や舵角などセンサ類から取得する。以下に、三次元位置の算出方法について述べる。
【００７２】
過去時刻（ｔ−ｍ）の画像特徴点の位置を式（１）とし、現時刻（ｔ）での画像特徴点の位置を式（２）とする。
【００７３】
【数１】
2014109819.tif 000003
【００７４】
【数２】
2014109819.tif 000004
【００７５】
カメラ２０についての移動体上に設けた基準座標系Ｘｗ（ｔ）から、カメラ座標系ｘｃ（ｔ）への変換パラメータをＲｙ、Ｔｙとする。
Ｒｙ：回転行列
Ｔｙ：並進移動ベクトル
ｘｃ（ｔ）＝Ｒｙ・（Ｘｗ（ｔ）−Ｔｙ）
時刻（ｔ−ｍ）での移動体の基準座標系Ｘｗ（ｔ−ｍ）から、時刻ｔでの基準座標系Ｘｗ（ｔ）への変換パラメータをＲｔｍ、Ｔｔｍとする。
Ｒｔｍ：回転行列
Ｔｔｍ：並進移動ベクトル
Ｘｗt＝Ｒｔm・（Ｘｗ(t−m)−Ｔｔm）
このとき、回転行列Ｒｔmは、式（３）で表され（ａは回転角）、並進移動ベクトルＴｔmは、式（４）で表される。
【００７６】
【数３】
2014109819.tif 000005
【００７７】
【数４】
2014109819.tif 000006
【００７８】
ここで、式（３）（４）は、変換されて式（５）（６）で表すことができる。
【００７９】
【数５】
2014109819.tif 000007
【００８０】
【数６】
2014109819.tif 000008
【００８１】
さらに、時刻ｔでの画像特徴点の位置ｎ（ｔ）は、Ｒｖｍを用いて、式（７）のように変換することができる。
【００８２】
【数７】
2014109819.tif 000009
【００８３】
このとき、時刻ｔでのカメラ座標系での特徴点の距離ｌ（ｔ）は、式（８）で与えられる。
【００８４】
【数８】
2014109819.tif 000010
【００８５】
したがって、カメラ座標系での三次元位置Ｐ（ｔ）は、式（９）で表すことができる。
【００８６】
【数９】
2014109819.tif 000011
【００８７】
以上の処理を行うことで、位置算出部２１１は、特徴点におけるカメラ座標系での三次元位置を算出することができる。
【００８８】
《測距精度算出処理》
精度算出部２１５は、位置算出部２１１により算出された特徴点の三次元位置についての精度を算出する。
【００８９】
図１２は、カメラ２０から物体までの距離に応じて三次元位置の誤差を説明する図である。図１２に示すように、画像の１画素には一定の大きさがあり、物体点は図１２に示す範囲ａｒ内であれば画像上での投影位置は変化しない。そのため、物体点の三次元位置には誤差が発生する。
【００９０】
また、カメラ２０から物体までの距離に応じて誤差の大きさが変化し、カメラ２０から物体までの距離が遠い場合には誤差が大きくなり、カメラ２０から物体までの距離が近い場合には誤差が小さくなる。
【００９１】
図１２（Ａ）は、物体までの距離が遠い場合を示す図であり、図１２（Ｂ）は、物体までの距離が近い場合を示す図である。図１２（Ａ）に示す物体点が存在する範囲ａｒ１１は、図１２（Ｂ）に示す物体点が存在する範囲ａｒ１２よりも大きい。よって、三次元位置の誤差は、物体までの距離が遠い方が、物体までの距離が近い方よりも大きくなる。以降では、この性質を性質１とも称する。
【００９２】
精度算出部２１５は、上記の性質１を利用して、特徴点の三次元位置についての誤差を算出し、時系列で保持している誤差と比較し、誤差の小さい方を残すことで、精度が最も高い三次元位置情報を取得する。三次元位置の誤差は、三次元位置の精度に対応する。三次元位置の誤差が小さくなると、三次元位置の精度が高くなる。
【００９３】
これにより、例えば、移動体が物体から一度離れて再度近づく時に、離れる前よりも三次元位置の精度が高くなる場合には、三次元位置情報を更新することが可能となる。
【００９４】
図１３は、２時刻における物体とカメラとの位置関係を示す図である。また、図１３は、三次元位置の誤差算出式を導出するためのモデルを示す。図１３に示す位置関係から式（１０）が導出できる。
【００９５】
【数１０】
2014109819.tif 000012
【００９６】
式（１０）について、各式の二乗和をとることで、ｌ２は、式（１１）で表すことができる。
【００９７】
【数１１】
2014109819.tif 000013
ここで、ｌ２に対するａ１変化での微係数を算出すると、式（１１）は、式（１２）に変換される。
【００９８】
【数１２】
2014109819.tif 000014
【００９９】
ここで、ａ１は、最大でｄａだけ変化するので、三次元位置の誤差を示すｌ２ｅｒｒは、式（１３）で表すことができる。ただし、ｄａは、０．５画素に相当する角度である。
【０１００】
【数１３】
2014109819.tif 000015
【０１０１】
図１４は、実施例１における三次元位置算出処理及び精度算出処理の一例を示すフローチャートである。図１４に示すステップＳ３０１で、位置算出部２１１は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ３０１−ＹＥＳ）ステップＳ３０２に進み、未処理の要素がなければ（ステップＳ３０１−ＮＯ）処理が終了する。
【０１０２】
ステップＳ３０２で、位置算出部２１１は、未処理の要素ｅ［ｉ］をエッジリストから取り出す。
【０１０３】
ステップＳ３０３で、位置算出部２１１は、照合処理に成功しているか否かを判定する。位置算出部２１１は、要素ｅ［ｉ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ３０３−ＹＥＳ）ステップＳ３０４に進み、照合が失敗していれば（ステップＳ３０３−ＮＯ）ステップＳ３０１に戻る。
【０１０４】
つまり、位置算出部２１１は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）の各要素ｅ［ｉ］について、照合処理に成功したかどうかのフラグ（ｆｌａｇ）を参照することで、三次元位置を算出するか判断する。
【０１０５】
ステップＳ３０４で、位置算出部２１１は、上述したようにして、三次元位置（Ｐｘ，Ｐｙ，Ｐｚ）を算出する。
【０１０６】
ステップＳ３０５で、精度算出部２１５は、上述したようにして、三次元位置の誤差（ｌ２ｅｒｒ）を算出する。
【０１０７】
ステップＳ３０６で、精度算出部２１５は、要素ｅ［ｉ］の三次元位置の誤差（ｅｒｒ）との比較を行う。精度算出部２１５は、現時刻の三次元位置の誤差（ｌ２ｅｒｒ）が時系列（過去）のｅ［ｉ］の三次元位置の誤差（ｅｒｒ）よりも小さいか否かを判定する。ｌ２ｅｒｒがｅｒｒよりも小さければ（ステップＳ３０６−ＹＥＳ）ステップＳ３０７に進み、ｌ２ｅｒｒがｅｒｒ以上であれば（ステップＳ３０６−ＮＯ）ステップＳ３０１に戻る。
【０１０８】
ステップＳ３０７で、精度算出部２１５は、要素ｅ［ｉ］の更新処理を行う。ここでは、精度算出部２１５は、ｅ［ｉ］の三次元位置（ｐｘ，ｐｙ，ｐｚ）を現時刻の三次元位置（Ｐｘ，Ｐｙ，Ｐｚ）に置き換え、三次元位置の誤差（ｅｒｒ）を現時刻の三次元位置の誤差（ｌ２ｅｒｒ）に置き換える。以上の処理が、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）の各要素について行われる。
【０１０９】
《特徴点の登録処理》
三次元位置及び三次元位置の誤差が算出された後は、次時刻で使用する特徴点の情報が登録される。
【０１１０】
図１５は、実施例１における特徴点の登録処理の一例を示すフローチャートである。図１５に示す処理は、精度算出部２１５が行うこととして説明するが、別構成の登録部を設けて、登録部に処理させてもよい。
【０１１１】
図１５に示すステップＳ４０１で、精度算出部２１５は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ４０１−ＹＥＳ）ステップＳ４０２に進み、未処理の要素がなければ（ステップＳ４０１−ＮＯ）処理が終了する。
【０１１２】
ステップＳ４０２で、精度算出部２１５は、未処理の要素ｅ［ｉ］をエッジリストから取り出す。
【０１１３】
ステップＳ４０３で、精度算出部２１５は、照合処理に成功しているか否かを判定する。精度算出部２１５は、要素ｅ［ｉ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ４０３−ＹＥＳ）ステップＳ４０４に進み、照合が失敗していれば（ステップＳ４０３−ＮＯ）ステップＳ４０５に進む。
【０１１４】
ステップＳ４０４で、精度算出部２１５は、照合に成功した特徴点として登録済みリスト（ｌｉｓｔ＿ｒｅｇ）にｅ［ｉ］の画像位置、特徴点パターン、三次元位置、三次元位置の誤差を引き継いだ要素ｒ［ｊ］を作成し、登録済みリストに追加する。
【０１１５】
ステップＳ４０５で、精度算出部２１５は、新規特徴点として、登録済みリスト（ｌｉｓｔ＿ｒｅｇ）にｅ［ｉ］の画像位置、特徴点パターンを引き継いだ要素ｒ［ｊ］を作成し、登録済みリストに追加する。以上の処理を行うことで、精度算出部２１５は、登録済みリストを生成、更新することができる。
【０１１６】
《精度予測処理》
精度予測部２１７は、移動体の動き（挙動）から特徴点の将来の三次元位置の精度を予測する。移動体は、直進や旋回といった規則的な動きをするため、過去から現在までの移動体の動きから将来の動きを予測することが可能である。
【０１１７】
精度予測部２１７は、各特徴点について、位置算出部２１１で取得した三次元位置と時系列で記録している移動体の挙動から将来の三次元位置を予測する。精度算出部２１５で述べたように、三次元位置の精度は、カメラ２０から特徴点までの距離によって変化するため、将来の精度を予測することができる。
【０１１８】
図１６は、直進時における移動体５が直進する場合のカメラ２０から特徴点までの距離と精度の推移を示す図である。時刻１と時刻２とで比較すると、時刻２の方が、カメラ２０と特徴点までの距離が近くなる。
【０１１９】
ここで、カメラ２０と特徴点までの距離が近い方が、三次元位置の精度がよいため、時刻２の方が三次元位置の精度がよいことが分かる。つまり、時刻１において、過去の挙動から今後直進することが分かると、精度予測部２１７は、特徴点の三次元位置の精度が将来的に向上すると予測することができる。
【０１２０】
図１７は、旋回時における移動体５が直進する場合のカメラ２０から特徴点までの距離と精度の推移を示す図である。時刻１と時刻２とで比較すると、時刻２の方がカメラと特徴点までの距離が遠くなり、時刻２の方が三次元位置の精度が低下することが分かる。
【０１２１】
つまり、時刻１において、過去の挙動から今後旋回することが分かると、精度予測部２１７は、特徴点の三次元位置の精度が将来的に低下すると予測することができる。
【０１２２】
移動体５の移動量の予測方法としては、一般的なフィルタリングを適用することができる。例えば、精度予測部２１７は、過去ｎフレームまでの移動量から線形近似を行い、移動量を予測してもよいし、短時間での移動量変化は微小であるとして、現時刻の移動量をそのまま使用する方法でもよい。
【０１２３】
次に、精度予測部２１７は、予測した移動量から、将来の移動体５の位置が分かるため、精度算出部２１５で利用した式（１３）を用いて誤差を予測する。
【０１２４】
図１８は、実施例１における精度予測処理の一例を示すフローチャートである。図１８に示すステップＳ５０１で、精度予測部２１７は、移動体の挙動から移動体の進行方向の予測処理を行う。予測処理の方法は、上記のいずれかを用いてもよいし、上記以外でも移動体の挙動を予測する公知の方法を用いてもよい。
【０１２５】
ステップＳ５０２で、精度予測部２１７は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ５０２−ＹＥＳ）ステップＳ５０３に進み、未処理の要素がなければ（ステップＳ５０２−ＮＯ）処理が終了する。
【０１２６】
ステップＳ５０３で、精度予測部２１７は、未処理の要素ｅ［ｉ］をエッジリストから取り出す。
【０１２７】
ステップＳ５０４で、精度予測部２１７は、照合処理に成功しているか否かを判定する。精度予測部２１７は、要素ｅ［ｉ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ５０４−ＹＥＳ）ステップＳ５０５に進み、照合が失敗していれば（ステップＳ５０４−ＮＯ）ステップＳ５０２に戻る。
【０１２８】
ステップＳ５０５で、精度予測部２１７は、要素ｅ［ｉ］の誤差の予測処理を行い、予測誤差ｅｒｒ２を算出する。
【０１２９】
ステップＳ５０６で、精度予測部２１７は、予測誤差ｅｒｒ２とｅ［ｉ］の誤差（ｅｒｒ）とを比較する。精度予測部２１７は、ｅｒｒ２がｅｒｒよりも大きいか否かを判定する。ｅｒｒ２がｅｒｒよりも大きければ（ステップＳ５０６−ＹＥＳ）ステップＳ５０７に進み、ｅｒｒ２がｅｒｒ以下であれば（ステップＳ５０６−ＮＯ）ステップＳ５０２に戻る。
【０１３０】
ステップＳ５０７で、精度予測部２１７は、要素ｅ［ｉ］の低下（ｄｅｇ）を「１」に更新する。これは、ｅｒｒ２がｅｒｒより大きい場合、つまり精度が低下すると予測される場合は、現在の特徴点を使用対象とするためである。以上の処理を行うことで、精度予測部２１７は、精度の予測を行い、将来的に精度が悪くなると予測される特徴点については、現時点の特徴点を形状生成の使用対象とすることができる。
【０１３１】
《精度分布判定処理》
分布判定部２１９は、三次元位置が算出できている特徴点群から物体を検出し、物体毎の特徴点の精度分布を算出する。これにより、精度の高い特徴点が占める割合が閾値以上である場合は、物体領域から精度の高い特徴点のみを選別することができる。
【０１３２】
精度の低い特徴点が占める場合は、精度の低い特徴点も使用対象に含めることができる。物体検出方法としては、特徴点同士の三次元距離が近ければ、同一物体と判断する一般的なラベリング処理を適用することができる。特徴点同士の距離については、三次元位置で計算してもよいし、高さ方向を考慮しない俯瞰座標における二次元位置で計算してもよい。
【０１３３】
図１９は、実施例１における特徴点の精度分布判定処理の一例を示すフローチャートである。図１９に示すステップＳ６０１〜Ｓ６０３の処理が物体検出処理に対応する。
【０１３４】
図１９に示すステップＳ６０１で、分布判定部２１９は、特徴点に対し、初期ラベル値を付与する。
【０１３５】
ステップＳ６０２で、分布判定部２１９は、付与されたラベル番号に対し、整理処理を行う。
【０１３６】
ステップＳ６０３で、分布判定部２１９は、整理されたラベル番号を用いて、物体番号の決定処理を行う。
【０１３７】
ステップＳ６０４で、分布判定部２１９は、物体番号により識別された物体毎の選別閾値の決定処理を行う。以下では、ステップＳ６０１〜Ｓ６０４の各処理について具体的に説明する。
【０１３８】
（初期ラベル値の付与処理）
図２０は、実施例１における初期ラベル値の付与処理の一例を示すフローチャートである。図２０に示すステップＳ７０１で、分布判定部２１９は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）のコピー（ｌｉｓｔ＿ｅｄｇｅ２）を作成する。
【０１３９】
ステップＳ７０２で、分布判定部２１９は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ７０２−ＹＥＳ）ステップＳ７０３に進み、未処理の要素がなければ（ステップＳ７０２−ＮＯ）処理が終了する。
【０１４０】
ステップＳ７０３で、分布判定部２１９は、未処理の要素ｅ［ｉ］をエッジリストから取り出す。
【０１４１】
ステップＳ７０４で、分布判定部２１９は、照合処理に成功しているか否かを判定する。分布判定部２１９は、要素ｅ［ｉ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ７０４−ＹＥＳ）ステップＳ７０５に進み、照合が失敗していれば（ステップＳ７０４−ＮＯ）ステップＳ７０２に戻る。
【０１４２】
ステップＳ７０５で、分布判定部２１９は、要素ｅ［ｉ］のラベル番号（ｌｂｌ）をｌｂｌ１に代入する（ｌｂｌ１＝ｌｂｌ）。
【０１４３】
ステップＳ７０６で、分布判定部２１９は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ２）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ７０６−ＹＥＳ）ステップＳ７０７に進み、未処理の要素がなければ（ステップＳ７０６−ＮＯ）ステップＳ７０２に戻る。
【０１４４】
ステップＳ７０７で、分布判定部２１９は、未処理の要素ｅ［ｊ］をエッジリストから取り出す。
【０１４５】
ステップＳ７０８で、分布判定部２１９は、照合処理に成功しているか否かを判定する。分布判定部２１９は、要素ｅ［ｊ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ７０８−ＹＥＳ）ステップＳ７０９に進み、照合が失敗していれば（ステップＳ７０８−ＮＯ）ステップＳ７０６に戻る。
【０１４６】
ステップＳ７０９で、分布判定部２１９は、要素ｅ［ｊ］のラベル番号（ｌｂｌ）をｌｂｌ２に代入する（ｌｂｌ２＝ｌｂｌ）。
【０１４７】
ステップＳ７１０で、分布判定部２１９は、ｅ［ｉ］とｅ［ｊ］との距離を比較して近いか否かを判定する。距離の比較については、例えば三次元位置の差分が、閾値以下であれば近いと判定し、閾値より大きければ遠いと判定する。閾値は、予め適切な値が設定さされている。
【０１４８】
分布判定部２１９は、距離が近ければ同じ物体であると判断し（ステップＳ７１０−ＹＥＳ）ステップＳ７１１に進み、距離が近くなければ別の物体であると判断し（ステップＳ７１０−ＮＯ）ステップＳ７０６に戻る。
【０１４９】
ステップＳ７１１で、分布判定部２１９は、ｅ［ｊ］のラベル番号が初期値でないかを判定する。ラベル番号の初期値は、例えば０である。よって、分布判定部２１９は、ｌｂｌ２＞０であるか否かを判定する。ｌｂｌ２＞０であれば（ステップＳ７１１−ＹＥＳ）ステップＳ７１３に進み、ｌｂｌ２≦０であれば（ステップＳ７１１−ＮＯ）ステップＳ７１２に進む。
【０１５０】
ステップＳ７１２で、分布判定部２１９は、ｅ［ｊ］のラベル（ｌｂｌ）にｌｂｌ１を代入する（ｌｂｌ＝ｌｂｌ１）。
【０１５１】
ステップＳ７１３で、分布判定部２１９は、両者（ｌｂｌ１及びｌｂｌ２）のラベル番号が異なるか否かを判定する。両者のラベル番号が異なれば（ステップＳ７１３−ＹＥＳ）ステップＳ７１４に進み、両者のラベル番号が同じであれば（ステップＳ７１３−ＮＯ）ステップＳ７０６に戻る。
【０１５２】
ステップＳ７１４で、分布判定部２１９は、ラベルｌｂｌ２が初期値でなく、両者の番号が異なる場合は、両者のラベルの大小関係を比較する。分布判定部２１９は、ｌｂｌ１がｌｂｌ２よりも小さいか否かを判定する。ｌｂｌ１＜ｌｂｌ２であれば（ステップＳ７１４−ＹＥＳ）ステップＳ７１５に進み、ｌｂｌ１≧ｌｂｌ２であれば（ステップＳ７１４−ＮＯ）ステップＳ７１６に進む。
【０１５３】
ステップＳ７１５で、分布判定部２１９は、ｌｂｌ１の方が小さい場合、接続先リスト（ｌｉｓｔ＿ｊｕｍｐ）のｊｕｍｐ［ｌｂｌ２］にｌｂｌ１を代入する。
【０１５４】
ステップＳ７１６で、分布判定部２１９は、ｌｂｌ１の方が大きい場合、接続先リスト（ｌｉｓｔ＿ｊｕｍｐ）のｊｕｍｐ［ｌｂｌ１］にｌｂｌ２を代入する。ステップＳ７１５、Ｓ７１６の後はステップＳ７０６に戻る。
【０１５５】
ここで、接続先リスト（ｌｉｓｔ＿ｊｕｍｐ）は、図２１に示す情報を持つ要素ｊｕｍｐ［ｉ］の集合である。図２１は、接続先リストの要素が持つ情報の一例を示す図である。図２１に示すように、接続先リストが持つ要素ｊｕｍｐ［ｉ］は、接続先として変数（ｎｕｍ）を有する。
【０１５６】
以上の処理が終了した段階では、同じ物体でも異なるラベル値が付与されているので、ラベル番号の整理が行われる。
【０１５７】
（ラベル番号の整理処理）
図２２は、実施例１におけるラベル番号の整理処理の一例を示すフローチャートである。図２２に示すステップＳ８０１で、分布判定部２１９は、接続先リスト（ｌｉｓｔ＿ｊｕｍｐ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ８０１−ＹＥＳ）ステップＳ８０２に進み、未処理の要素がなければ（ステップＳ８０１−ＮＯ）処理が終了する。
【０１５８】
ステップＳ８０２で、分布判定部２１９は、未処理の要素ｊｕｍｐ［ｉ］を取り出し、探索用の番号（ｊ）を設定する（ｊ＝１）。以降では、探索用の番号は、探索番号とも称す。
【０１５９】
ステップＳ８０３で、分布判定部２１９は、探索番号（ｊ）と接続先の番号（ｊｕｍｐ［ｊ］）とが同じであるか否かを判定する。ｊｕｍｐ［ｊ］＝ｊであれば（ステップＳ８０３−ＹＥＳ）ステップＳ８０５に進み、ｊｕｍｐ［ｊ］＝ｊでなければ（ステップＳ８０３−ＮＯ）ステップＳ８０４に進む。
【０１６０】
ステップＳ８０４で、分布判定部２１９は、探索番号と接続先の番号とが異なる場合は、探索用の番号（ｊ）に接続先の番号（ｊｕｍｐ［ｊ］）を代入する。この処理が、番号が等しくなるまで繰り返される。
【０１６１】
ステップＳ８０５で、分布判定部２１９は、探索番号と接続先の番号とが等しくなった時の探索番号を、最終接続先リスト（ｌｉｓｔ＿ｊｕｍｐ２）に代入する（ｊｕｍｐ２［ｉ］＝ｊ）。この処理が、接続先リスト（ｌｉｓｔ＿ｊｕｍｐ）の各要素について行われる。
【０１６２】
ここで、最終接続先リスト（ｌｉｓｔ＿ｊｕｍｐ２）は、図２３に示す情報を持つ要素ｊｕｍｐ２［ｉ］の集合である。図２３は、最終接続先リストの要素が持つ情報の一例を示す図である。図２３に示すように、最終接続先リストが持つ要素ｊｕｍｐ２［ｉ］は、最終接続先として変数（ｎｕｍ）を有する。
【０１６３】
（物体番号決定処理）
次に、分布判定部２１９は、ラベル番号を整理した後に物体番号を付与して物体検出を行う。
【０１６４】
図２４は、実施例１における物体番号決定処理の一例を示すフローチャートである。図２４に示すステップＳ９０１で、分布判定部２１９は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ９０１−ＹＥＳ）ステップＳ９０２に進み、未処理の要素がなければ（ステップＳ９０１−ＮＯ）処理が終了する。
【０１６５】
ステップＳ９０２で、分布判定部２１９は、未処理の要素ｅ［ｉ］をエッジリストから取り出す。
【０１６６】
ステップＳ９０３で、分布判定部２１９は、照合処理に成功しているか否かを判定する。分布判定部２１９は、要素ｅ［ｉ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ９０３−ＹＥＳ）ステップＳ９０４に進み、照合が失敗していれば（ステップＳ９０３−ＮＯ）ステップＳ９０１に戻る。
【０１６７】
ステップＳ９０４で、分布判定部２１９は、要素ｅ［ｉ］について、ラベル番号（ｌｂｌ）から最終接続先番号（ｊｕｍｐ２［ｌｂｌ］）を抽出する。
【０１６８】
ステップＳ９０５で、分布判定部２１９は、抽出した番号を物体番号（ｏｂｊ＿ｎｕｍ）として物体リスト（ｌｉｓｔ＿ｏｂｊｅｃｔ）に登録する。また、分布判定部２１９は、物体リストに、三次元位置（ｐｘ，ｐｙ，ｐｚ）を設定し、三次元位置の誤差（ｅｒｒ）を設定する。また、分布判定部２１９は、物体リストの要素数を更新する（Ｎｏ＝Ｎｏ＋１）。
【０１６９】
ステップＳ９０６で、分布判定部２１９は、ｅ［ｉ］のラベル（ｌｂｌ）と、物体内番号（ｎｕｍ）を更新する（ｌｂｌ＝ｏｂｊ＿ｎｕｍ，ｎｕｍ＝Ｎｏ）。以上の処理が、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）の各要素について行われる。
【０１７０】
ここで、物体リスト（ｌｉｓｔ＿ｏｂｊｅｃｔ）は、図２５に示す情報を持つ要素ｏ［ｉ］［ｊ］の集合である。図２５は、物体リストの要素が持つ情報の一例を示す図である。図２５に示すように、物体リストが持つ要素ｏ［ｉ］［ｌ］は、三次元位置と、三次元位置の誤差とを有する。なお、ｉの要素数は物体数、ｊの要素数は物体毎の特徴点数である。
【０１７１】
（選別閾値設定処理）
図２６は、実施例１における選別閾値の設定処理の一例を示すフローチャートである。図２６に示すステップＳ１００１で、分布判定部２１９は、物体リスト（ｌｉｓｔ＿ｏｂｊｅｃｔ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１００１−ＹＥＳ）ステップＳ１００２に進み、未処理の要素がなければ（ステップＳ１００１−ＮＯ）処理が終了する。
【０１７２】
ステップＳ１００２で、分布判定部２１９は、未処理の要素ｏ［ｉ］を物体リストから取り出す。
【０１７３】
ステップＳ１００３で、分布判定部２１９は、ヒストグラムリスト（ｌｉｓｔ＿ｈｉｓｔ）及び誤差の積算値（ｓｕｍ）を初期化する（ｌｉｓｔ＿ｈｉｓｔ＝０，ｓｕｍ＝０）。
【０１７４】
ステップＳ１００４で、分布判定部２１９は、物体番号ｏ［ｉ］に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１００４−ＹＥＳ）ステップＳ１００５に進み、未処理の要素がなければ（ステップＳ１００４−ＮＯ）ステップＳ１００７に進む。
【０１７５】
ステップＳ１００５で、分布判定部２１９は、未処理の要素ｏ［ｉ］［ｊ］を物体リストから取り出す。
【０１７６】
ステップＳ１００６で、分布判定部２１９は、要素ｏ［ｉ］［ｊ］の誤差（ｅｒｒ）からヒストグラムリスト（ｌｉｓｔ＿ｈｉｓｔ）のｈ［ｅｒｒ］を更新する（ｈ［ｅｒｒ］＝ｈ［ｅｒｒ］＋１）。ステップＳ１００６の処理後、ステップＳ１００４に戻る。
【０１７７】
ステップＳ１００７で、分布判定部２１９は、一つの物体の処理が終了したら、ヒストグラムリストに未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１００７−ＹＥＳ）ステップＳ１００８に進み、未処理の要素がなければ（ステップＳ１００７−ＮＯ）ステップＳ１０１１に進む。
【０１７８】
ステップＳ１００８で、分布判定部２１９は、未処理の要素ｈ［ｋ］をヒストグラムリストから取り出す。
【０１７９】
ステップＳ１００９で、分布判定部２１９は、ヒストグラムリスト（ｌｉｓｔ＿ｈｉｓｔ）から誤差の積算値（ｓｕｍ）を算出する（ｓｕｍ＝ｓｕｍ＋ｈ［ｋ］）。
【０１８０】
ステップＳ１０１０で、分布判定部２１９は、積算値が閾値以上であるか否かを判定する（ｓｕｍ≧ｔｈ）。ｓｕｍ≧ｔｈであれば（ステップＳ１０１０−ＹＥＳ）ステップＳ１０１１に進み、ｓｕｍ＜ｔｈであれば（ステップＳ１０１０−ＮＯ）ステップＳ１００７に戻る。閾値ｔｈは、適切な値が予め設定されていてもよく、要素数の８０％の値などが適宜設定されてもよい。
【０１８１】
ステップＳ１０１１で、分布判定部２１９は、選別閾値リスト（ｌｉｓｔ＿ｔｈｒｅｓｈ）を新規に作成し、ｔ［ｉ］に誤差閾値（ｋ）を代入する。以上の処理が、物体リスト（ｌｉｓｔ＿ｏｂｊｅｃｔ）の各物体について行われる。
【０１８２】
ここで、ヒストグラムリスト（ｌｉｓｔ＿ｈｉｓｔ）は、図２７に示す情報を持つ要素ｈ［ｉ］の集合である。図２７は、実施例１におけるヒストグラムリストの要素が持つ情報の一例を示す図である。図２７に示すように、ヒストグラムリストの要素は、カウントを有する。
【０１８３】
選別閾値リスト（ｌｉｓｔ＿ｔｈｒｅｓｈ）は、図２８に示す情報を持つ要素ｔ［ｉ］の集合である。図２８は、選別閾値リストの要素が持つ情報の一例を示す図である。図２８に示すように、選別閾値リストの要素は、誤差閾値を有する。
【０１８４】
以上の処理を行うことで、分布判定部２１９は、物体毎に特徴点の精度分布を生成し、
精度分布を基に、物体毎の選別閾値（ｔ［ｉ］）を設定することができる。
【０１８５】
《特徴点選別処理》
選別部２２１は、精度予測部２１７、分布判定部２１９からの処理結果を用いて、形状生成に用いる特徴点を選別する。
【０１８６】
図２９は、実施例１における特徴点の選別処理の一例を示すフローチャートである。図２９に示すステップＳ１１０１で、選別部２２１は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１１０１−ＹＥＳ）ステップＳ１１０２に進み、未処理の要素がなければ（ステップＳ１１０１−ＮＯ）処理が終了する。
【０１８７】
ステップＳ１１０２で、選別部２２１は、未処理の要素ｅ［ｉ］をエッジリストから取り出す。
【０１８８】
ステップＳ１１０３で、選別部２２１は、照合処理に成功しているか否かを判定する。選別部２２１は、要素ｅ［ｉ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ１１０３−ＹＥＳ）ステップＳ１１０４に進み、照合が失敗していれば（ステップＳ１１０３−ＮＯ）ステップＳ１１０１に戻る。
【０１８９】
ステップＳ１１０４で、選別部２２１は、ｅ［ｉ］の物体内番号（ｎｕｍ）を抽出し、選別閾値リスト（ｌｉｓｔ＿ｔｈｒｅｓｈ）からｔ［ｎｕｍ］を取りだす。
【０１９０】
ステップＳ１１０５で、選別部２２１は、ｅ［ｉ］の誤差（ｅｒｒ）が共通閾値以下であるか否かを判定する。共通閾値は、使用される特徴点の精度を高くするための適切な値が予め設定されていればよい。誤差が共通閾値以下であれば（ステップＳ１１０５−ＹＥＳ）ステップＳ１１０８に進み、誤差が共通閾値より大きければ（ステップＳ１１０５−ＮＯ）ステップＳ１１０６に進む。
【０１９１】
ステップＳ１１０６で、選別部２２１は、ｅ［ｉ］の低下（ｄｅｇ）が１であるか否かを判定する。ｄｅｇが１であれば（ステップＳ１１０６−ＹＥＳ）ステップＳ１１０７に進み、ｄｅｇが１でなければ（ステップＳ１１０６−ＮＯ）ステップＳ１１０１に戻る。ｄｅｇが１であるとは、将来の特徴点の精度が悪くなると予測されていることを表す。よって、現在の特徴点について形状生成の使用判定が行われる。
【０１９２】
ステップＳ１１０７で、選別部２２１は、ｅ［ｉ］の誤差（ｅｒｒ）が物体毎の閾値ｔ［ｎｕｍ］より小さいか否かを判定する。ｅｒｒ＜ｔ［ｎｕｍ］であれば（ステップＳ１１０７−ＹＥＳ）ステップＳ１１０８に進み、ｅｒｒ≧ｔ［ｎｕｍ］であれば（ステップＳ１１０７−ＮＯ）ステップＳ１１０１に戻る。
【０１９３】
ステップＳ１１０８で、選別部２２１は、形状生成の使用対象とするために、ｅ［ｉ］の出力（ｏｕｔ）を「１」にする。以上の処理が、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）の各要素について行われる。
【０１９４】
以上の処理を行うことで、選別部２２１は、精度が高い特徴点だけでなく、物体毎の判定基準を満たす特徴点も形状生成の使用対象に含めることができ、形状が欠落することを防ぐことができる。また、精度が低い特徴点が選別されることを防ぐために、物体毎の閾値に対して下限を設けてもよい。
【０１９５】
また、画像処理装置１０は、精度の予測処理を用いずに、精度分布から設定された物体毎の選別閾値だけを用いて、物体毎の選別閾値よりも精度が高い特徴点を物体毎に選別してもよい。
【０１９６】
《物体形状生成処理》
生成部２２３は、選別部２２１で選別された特徴点、つまり、エッジリストのｅ［ｉ］の出力（ｏｕｔ）が「１」である特徴点を用いて物体形状を生成する。
【０１９７】
以上、実施例１によれば、物体毎に適切な物体形状を生成することができる。また、実施例１によれば、三次元位置の精度を予測することで、特徴点の使用タイミングを適切に決定することができる。また、実施例１によれば、物体毎に閾値を設定するので、物体形状の欠落を防止することができる。
【０１９８】
［実施例２］
次に、実施例２における画像処理システムについて説明する。実施例２における画像処理システムでは、物体形状の生成に使用する特徴点として、移動体からの距離に応じて制限を加える。
【０１９９】
＜構成＞
実施例２における画像処理システムの構成は、実施例１における構成（図６参照）と同様であるため、その説明を省略する。
【０２００】
＜機能＞
図３０は、実施例２における画像処理装置１１の機能の一例を示すブロック図である。実施例２における画像処理装置１１の機能において、実施例１における機能と同様のものは同じ符号を付す。以下では、実施例１と異なる機能を主に説明する。
【０２０１】
距離算出部３０１は、移動体から物体までの一番近い特徴点を求める。距離算出部３０１は、その一番近い特徴点から所定範囲内にある特徴点を識別する。つまり、距離算出部３０１は、物体の各特徴点のうち、移動体からの距離が近い特徴点を識別する。距離算出部３０１は、識別した特徴点を物体毎に選別部３０３に出力する。
【０２０２】
選別部３０３は、移動体からの距離が一番近い特徴点から所定範囲内にある特徴点に対して、上述した選別処理を行う。これにより、移動体から距離が遠い特徴点、つまり、精度が悪い特徴点に対して、選別処理をしなくて済む。
【０２０３】
なお、実施例２では、物体リストは、図３１に示す情報が保持される。図３１は、実施例２における物体情報の要素が持つ情報の一例を示す図である。図３１に示すように、実施例２では、物体リストに近接（ｎｅａｒ）という情報が新たに追加されている。このｎｅａｒは、「１」であれば、移動体から距離が近い特徴点であることを表し、「０」であれば、移動体から距離が遠い特徴点であることを表す。
【０２０４】
＜各部の処理＞
次に、実施例２における距離算出部３０１及び選別部３０３の処理内容について詳しく説明する。
【０２０５】
《距離算出処理》
図３２は、実施例２における物体毎の距離算出処理の一例を示すフローチャートである。図３２に示すステップＳ１２０１で、距離算出部３０１は、物体リスト（ｌｉｓｔ＿ｏｂｊｅｃｔ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１２０１−ＹＥＳ）ステップＳ１２０２に進み、未処理の要素がなければ（ステップＳ１２０１−ＮＯ）処理が終了する。
【０２０６】
ステップＳ１２０２で、距離算出部３０１は、未処理の要素ｏ［ｉ］を物体リストから取り出す。
【０２０７】
ステップＳ１２０３で、距離算出部３０１は、最小距離（ｍｉｄ＿ｄｉｓｔ）を初期化する（ｍｉｄ＿ｄｉｓｔ＝０）。
【０２０８】
ステップＳ１２０４で、距離算出部３０１は、物体番号ｏ［ｉ］に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１２０４−ＹＥＳ）ステップＳ１２０５に進み、未処理の要素がなければ（ステップＳ１２０４−ＮＯ）ステップＳ１２０９に進む。
【０２０９】
ステップＳ１２０５で、距離算出部３０１は、未処理の要素ｏ［ｉ］［ｊ］を物体リストから取り出す。
【０２１０】
ステップＳ１２０６で、距離算出部３０１は、移動体から物体までの距離（ｄｉｓｔ）を算出する。
【０２１１】
ステップＳ１２０７で、距離算出部３０１は、距離（ｄｉｓｔ）が最小距離（ｍｉｎ＿ｄｉｓｔ）より小さいか否かを判定する。ｄｉｓｔ＜ｍｉｎ＿ｄｉｓｔであれば（ステップＳ１２０７−ＹＥＳ）ステップＳ１２０８に進み、ｄｉｓｔ≧ｍｉｎ＿ｄｉｓｔであれば（ステップＳ１２０７−ＮＯ）ステップＳ１２０４に戻る。
【０２１２】
ステップＳ１２０８で、距離算出部３０１は、最小距離を更新し（ｍｉｎ＿ｄｉｓｔ＝ｄｉｓｔ）、最近接特徴点を更新する（ｍｉｎ＿ｎｕｍ＝ｉ）。
【０２１３】
ステップＳ１２０９で、距離算出部３０１は、要素ｏ［ｉ］の処理／未処理をリセットする。
【０２１４】
ステップＳ１２１０で、距離算出部３０１は、物体番号ｏ［ｉ］に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１２１０−ＹＥＳ）ステップＳ１２１１に進み、未処理の要素がなければ（ステップＳ１２１０−ＮＯ）ステップＳ１２０１に進む。
【０２１５】
ステップＳ１２１１で、距離算出部３０１は、未処理の要素ｏ［ｉ］［ｊ］を物体リストから取り出す。
【０２１６】
ステップＳ１２１２で、距離算出部３０１は、ｏ［ｉ］［ｊ］が示す特徴点から最接近特徴点までの距離（ｄｉｓｔ２）を算出する。
【０２１７】
ステップＳ１２１３で、距離算出部３０１は、距離（ｄｉｓｔ２）が閾値以下であるか否かを判定する。この閾値は、所定範囲を決める閾値であり、適切な値が予め設定されていればよい。ｄｉｓｔ２が閾値以下であれば（ステップＳ１２１３−ＹＥＳ）ステップＳ１２１４に進み、ｄｉｓｔ２が閾値より大きければ（ステップＳ１２１３−ＮＯ）ステップＳ１２１０に戻る。
【０２１８】
ステップＳ１２１４で、距離算出部３０１は、要素ｏ［ｉ］［ｊ］のｎｅａｒを「１」に設定する。以上の処理が、物体リストの各要素について行われる。
【０２１９】
以上の処理を行うことで、距離算出部３０１は、物体形状に使用したい特徴点、つまり移動体から近い特徴点に対し、ｎｅａｒを「１」に設定することができる。
【０２２０】
《特徴点選別処理》
選別部３０３は、精度予測部２１７、分布判定部２１９、距離算出部３０１からの処理結果を用いて、形状生成に用いる特徴点を選別する。
【０２２１】
図３３は、実施例２における特徴点の選別処理の一例を示すフローチャートである。図３３に示すステップＳ１３０１で、選別部３０３は、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）に未処理の要素があるか否かを判定する。未処理の要素があれば（ステップＳ１３０１−ＹＥＳ）ステップＳ１３０２に進み、未処理の要素がなければ（ステップＳ１３０１−ＮＯ）処理が終了する。
【０２２２】
ステップＳ１３０２で、選別部３０３は、未処理の要素ｅ［ｉ］をエッジリストから取り出す。
【０２２３】
ステップＳ１３０３で、選別部３０３は、照合処理に成功しているか否かを判定する。選別部３０３は、要素ｅ［ｉ］のｆｌａｇが「１」であれば照合成功と判定する。照合が成功していれば（ステップＳ１３０３−ＹＥＳ）ステップＳ１３０４に進み、照合が失敗していれば（ステップＳ１３０３−ＮＯ）ステップＳ１３０１に戻る。
【０２２４】
ステップＳ１３０４で、選別部３０３は、ｅ［ｉ］の物体内番号（ｎｕｍ）を抽出し、選別閾値リスト（ｌｉｓｔ＿ｔｈｒｅｓｈ）からｔ［ｎｕｍ］を取りだす。
【０２２５】
ステップＳ１３０５で、選別部３０３は、ｅ［ｉ］の誤差（ｅｒｒ）が共通閾値以下であるか否かを判定する。誤差が共通閾値以下であれば（ステップＳ１３０５−ＹＥＳ）ステップＳ１３１０に進み、誤差が共通閾値より大きければ（ステップＳ１３０５−ＮＯ）ステップＳ１３０６に進む。
【０２２６】
ステップＳ１３０６で、選別部３０３は、ｅ［ｉ］からラベル（ｌｂｌ）と、物体内番頭（ｎｕｍ）を抽出する。
【０２２７】
ステップＳ１３０７で、選別部３０３は、ｏ［ｌｂｌ］［ｎｕｍ］の近接（ｎｅａｒ）が「１」であるか否かを判定する。ｎｅａｒが１であれば（ステップＳ１３０７−ＹＥＳ）ステップＳ１３０８に進み、ｎｅａｒが１でなければ（ステップＳ１３０７−ＮＯ）ステップＳ１３０１に戻る。
【０２２８】
ステップＳ１３０８で、選別部３０３は、ｅ［ｉ］の低下（ｄｅｇ）が１であるか否かを判定する。ｄｅｇが１であれば（ステップＳ１３０６−ＹＥＳ）ステップＳ１３０９に進み、ｄｅｇが１でなければ（ステップＳ１３０６−ＮＯ）ステップＳ１３０１に戻る。
【０２２９】
ステップＳ１３０９で、選別部３０３は、ｅ［ｉ］の誤差（ｅｒｒ）が物体毎の閾値ｔ［ｎｕｍ］より小さいか否かを判定する。ｅｒｒ＜ｔ［ｎｕｍ］であれば（ステップＳ１３０９−ＹＥＳ）ステップＳ１３１０に進み、ｅｒｒ≧ｔ［ｎｕｍ］であれば（ステップＳ１３０９−ＮＯ）ステップＳ１３０１に戻る。
【０２３０】
ステップＳ１３１０で、選別部３０３は、形状生成の使用対象とするために、ｅ［ｉ］の出力（ｏｕｔ）を「１」にする。以上の処理が、エッジリスト（ｌｉｓｔ＿ｅｄｇｅ）の各要素について行われる。
【０２３１】
以上の処理を行うことで、選別部３０３は、精度が共通閾値より高い特徴点と、精度が共通閾値より高くはないが選別閾値より高く、移動体に近い特徴点とを、形状生成の使用対象にすることができる。
【０２３２】
なお、ステップＳ１３０６、Ｓ１３０７の処理をステップＳ１３０５の前に行ってもよい。これにより、移動体に近い特徴点だけを選別処理対象とすることができる。
【０２３３】
以上、実施例２によれば、物体毎に適切な物体形状を生成することができる。また、実施例２によれば、移動体に近い特徴点を形状生成の使用対象にすることができる。
【０２３４】
［実施例３］
次に、実施例３における画像処理システムについて説明する。実施例３における画像処理システムでは、物体の特徴点と移動体との距離に応じて、選別処理を行うか否かを判定する。なお、実施例３における処理は、実施例１及び実施例２の両方に適用可能であるが、以下では、実施例１に適用する場合について説明する。
【０２３５】
＜構成＞
実施例３における画像処理システムの構成は、実施例１における構成（図６参照）と同様であるため、その説明を省略する。
【０２３６】
＜機能＞
図３４は、実施例３における画像処理装置１２の機能の一例を示すブロック図である。実施例２における画像処理装置１２の機能において、実施例１における機能と同様のものは同じ符号を付す。以下では、実施例１と異なる機能を主に説明する。
【０２３７】
距離判定部４０１は、位置算出部２１１により求められた特徴点の位置から移動体までの位置を算出する。距離判定部４０１は、この距離が閾値以下であれば、移動体から近い特徴点であるため、精度算出部以降の処理である選別処理を実行させる。
【０２３８】
また、距離判定部４０１は、この距離が閾値より大きければ、移動体から遠い特徴点であるため、以降の処理を実行させない。この閾値は、特徴点の精度を保つことができる距離であり、適切な値が予め設定されていればよい。
【０２３９】
例えば、距離判定部４０１は、算出した距離が閾値より大きい特徴点を、エッジリストの要素から削除してもよいし、エッジリストに不使用フラグを新たに設けて、この不使用フラグをアクティブにしてもよい。
【０２４０】
以上、実施例３によれば、物体毎に適切な物体形状を生成することができる。また、実施例３によれば、特徴点と移動体との距離が閾値よりも近い特徴点を形状生成の使用対象にすることができる。
【０２４１】
上述した各実施例における画像処理では、物体の形状を欠落することなく生成し、精度の高い物体について、形状を崩さないことを実現することができる。
【０２４２】
上述した各実施例は、例えば、周囲に存在する静止物体までの三次元距離を計測し、その結果を提示する車載画像処理システムに適用することができる。具体的には、自車両の前後左右に広角カメラを４台取り付け、カメラ４台の映像を１枚の映像に合成した映像と、三次元測距によって得られる周囲物（駐車車両）の表面形状を重畳表示して、周囲の距離感をサポートする駐車支援システムが考えられる。
【０２４３】
駐車時は、周囲物と接触しないように自車両の周囲を確認する必要がある。そこで、各実施例における画像処理システムは、３６０度の全周囲の状況が把握できるように４枚の映像を合成して自車両の真上から見た画像（俯瞰映像）に変換する。
【０２４４】
上記各実施例における画像処理システムでは、移動ステレオ法によって物体の特徴点までの三次元位置を算出し、その結果から物体表面形状を生成して合成画像に重畳する。この結果、映像を確認することで周囲物との距離感および接触可能性が容易に把握でき、駐車作業が苦手なドライバーでも安心かつ簡単に駐車することができる。上記各実施例における画像処理システムでは、４台のカメラを用いて合成画像を作成しているが、三次元距離の算出は個々のカメラ毎に独立して行われる。
【０２４５】
［変形例］
なお、前述した実施例で説明した形状生成処理を含む画像処理を実現するためのプログラムを記録媒体に記録することで、実施例で説明した処理をコンピュータに実施させることができる。
【０２４６】
例えば、このプログラムを記録媒体に記録し、このプログラムが記録された記録媒体を車載コンピュータなどに読み取らせて、前述した処理を実現させることも可能である。
【０２４７】
なお、記録媒体は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。また、記録媒体は、搬送波などの一過性のものを含まない。
【０２４８】
以上、画像処理装置、画像処理方法及びプログラムについて詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
【０２４９】
なお、以上の各実施例に関し、さらに以下の付記を開示する。
（付記１）
移動体に設置されたカメラから画像を取得する画像取得部と、
前記画像から各特徴点を抽出する特徴点抽出部と、
異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行う照合部と、
照合された特徴点の位置と、前記移動体の移動量とに基づいて三次元位置を算出する位置算出部と、
前記三次元位置の誤差を示す精度を算出する精度算出部と、
前記画像から物体を検出し、物体毎に生成した特徴点の精度分布に基づいて、物体毎に閾値を設定する分布判定部と、
前記閾値よりも精度が高い特徴点を物体毎に選別する選別部と、
選別された特徴点を用いて物体形状を生成する生成部と、
を備える画像処理装置。
（付記２）
前記移動体の動きに基づいて前記三次元位置の精度を予測する精度予測部をさらに備え、
前記選別部は、
前記精度予測部の予測結果に基づいて、選別対象の特徴点を判定する付記１記載の画像処理装置。
（付記３）
前記選別部は、
共通の閾値を用いて特徴点を選別し、選別されなかった特徴点であり、前記精度予測部により精度が現在よりも悪くなると予測された特徴点に対し、前記物体毎に設定された閾値を用いて選別する付記２記載の画像処理装置。
（付記４）
前記物体毎の特徴点に対し、前記移動体から距離が一番近い特徴点を求める距離算出部をさらに備え、
前記選別部は、
前記距離が一番近い特徴点から所定範囲内にある特徴点に対して選別処理を行う付記１乃至３いずれか一項に記載の画像処理装置。
（付記５）
前記三次元位置に基づいて、前記移動体から物体の特徴点までの距離が閾値以上であるか否かを判定する距離判定部をさらに備え、
前記距離判定部により閾値以下であると判定された特徴点に対し、前記精度算出部以降の後段の処理を行う付記１乃至４いずれか一項に記載の画像処理装置。
（付記６）
移動体に設置されたカメラから画像を取得し、
前記画像から特徴点を抽出し、
異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行い、
照合された特徴点の位置と、前記移動体の移動量とに基づいて三次元位置を算出し、
前記三次元位置の誤差を示す精度を算出し、
前記画像から物体を検出し、物体毎に生成した特徴点精度分布に基づいて、物体毎に閾値を設定し、
前記閾値よりも精度が高い特徴点を物体毎に選別し、
選別された特徴点を用いて物体形状を生成する
処理をコンピュータが実行する画像処理方法。
（付記７）
移動体に設置されたカメラから画像を取得し、
前記画像から特徴点を抽出し、
異なる時刻で撮像された画像から抽出された各特徴点に対して照合処理を行い、
照合された特徴点の位置と、前記移動体の移動量とに基づいて三次元位置を算出し、
前記三次元位置の誤差を示す精度を算出し、
前記画像から物体を検出し、物体毎に生成した特徴点精度分布に基づいて、物体毎に閾値を設定し、
前記閾値よりも精度が高い特徴点を物体毎に選別し、
選別された特徴点を用いて物体形状を生成する
処理をコンピュータに実行させるプログラム。
【符号の説明】
【０２５０】
１  画像処理システム
１０、１１、１２  画像処理装置
２０  カメラ
３０  表示部
４０  記録媒体
１０１  制御部
１０３  主記憶部
１０５  補助記憶部
２０１  画像取得部
２０３  特徴点抽出部
２０７  照合部
２１１  位置算出部
２１５  精度算出部
２１９  分布判定部
２２１  選別部
２２３  生成部
【図１】
2014109819.tif 000016
【図２】
2014109819.tif 000017
【図３】
2014109819.tif 000018
【図４】
2014109819.tif 000019
【図５】
2014109819.tif 000020
【図６】
2014109819.tif 000021
【図７】
2014109819.tif 000022
【図８】
2014109819.tif 000023
【図９】
2014109819.tif 000024
【図１０】
2014109819.tif 000025
【図１１】
2014109819.tif 000026
【図１２】
2014109819.tif 000027
【図１３】
2014109819.tif 000028
【図１４】
2014109819.tif 000029
【図１５】
2014109819.tif 000030
【図１６】
2014109819.tif 000031
【図１７】
2014109819.tif 000032
【図１８】
2014109819.tif 000033
【図１９】
2014109819.tif 000034
【図２０】
2014109819.tif 000035
【図２１】
2014109819.tif 000036
【図２２】
2014109819.tif 000037
【図２３】
2014109819.tif 000038
【図２４】
2014109819.tif 000039
【図２５】
2014109819.tif 000040
【図２６】
2014109819.tif 000041
【図２７】
2014109819.tif 000042
【図２８】
2014109819.tif 000043
【図２９】
2014109819.tif 000044
【図３０】
2014109819.tif 000045
【図３１】
2014109819.tif 000046
【図３２】
2014109819.tif 000047
【図３３】
2014109819.tif 000048
【図３４】
2014109819.tif 000049