(57)【要約】【課題】レンズの歪みをマーカレスで推定すること。【解決手段】推定装置１００は、移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得する。推定装置１００は、複数の画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出する。推定装置１００は、検出した直線の特徴量に基づいて、直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、直線に対応する複数の曲線を検出する。【選択図】図１
2019067358.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得し、
複数の前記画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出し、
検出した前記直線の特徴量に基づいて、前記直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、前記直線に対応する複数の曲線を検出する
処理を実行させることを特徴とする推定プログラム。
【請求項２】
前記第１画像フレーム群のうち一つの画像フレームから一つの前記直線を検出した場合、前記第２画像フレーム群のうちの複数の画像フレームから複数の前記曲線を検出し、
前記第１画像フレーム群のうち一つの画像フレームから複数の前記直線を検出した場合、前記第２画像フレーム群のうちの少なくとも一つの画像フレームから複数の前記曲線を検出する
処理を更にコンピュータに実行させることを特徴とする請求項１に記載の推定プログラム。
【請求項３】
前記複数の曲線の情報を記憶装置に記録し、前記複数の曲線の情報を基にして、前記カメラのパラメータを推定する処理を更にコンピュータに実行させることを特徴とする請求項１または２に記載の推定プログラム。
【請求項４】
前記画像フレームの解像度と前記カメラの画角とを基にして、前記中心付近に相当する領域を算出する処理を更にコンピュータに実行させ、前記直線を検出する処理は、前記領域から、直線を検出することを特徴とする請求項１、２または３に記載の推定プログラム。
【請求項５】
前記曲線を検出する処理は、前記第１画像フレームから検出した前記直線の端点を中心とした局所領域に対応する、前記第２画像フレーム上の局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする請求項１〜４のいずれか一つに記載の推定プログラム。
【請求項６】
前記曲線を検出する処理は、複数の前記第２画像フレームについて、前記時系列における先の時刻の第２画像フレームの曲線の端点を中心とした局所領域に対応する、前記時系列の後の時刻の第２画像フレームの局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする請求項５に記載の推定プログラム。
【請求項７】
前記曲線を検出する処理は、前記曲線の両端点を通る直線で第２画像フレームの領域を第１領域および第２領域に分割し、前記第１領域または前記第２領域のいずれか一方の領域から、曲線を検出することを特徴とする請求項１〜６のいずれか一つに記載の推定プログラム。
【請求項８】
前記曲線を検出する処理は、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続する処理を繰り返し、前記曲線の終端に到達させることで前記曲線を検出し、第１エッジ画素の次に接続する第２エッジ画素を複数のエッジ画素から選択する際に、前記第１エッジ画素よりも前記終端に近いエッジ画素を前記第２エッジ画素として選択することを特徴とする請求項１〜７のいずれか一つに記載の推定プログラム。
【請求項９】
前記曲線を検出する処理は、前記曲線を構成する画素の座標値が一つの極値を持つように、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続することを特徴とする請求項６、７または８に記載の推定プログラム。
【請求項１０】
前記画像フレーム上の消失点のおよび光軸中心を特定し、前記消失点および前記光軸中心の位置を基にして、前記中心付近に相当する領域に含まれる直線に対応する曲線の範囲を特定する処理を更に実行させることを特徴とする請求項４に記載の推定プログラム。
【請求項１１】
前記中心付近に相当する領域の外周および前記直線との交点と前記消失点とを通る第１直線と、前記光軸中心を通り前記第１直線と平行となる第２直線とを特定し、前記第１直線と前記第２直線とのうち、中央側の直線を基にして、前記曲線の範囲を特定することを特徴とする請求項１０に記載の推定プログラム。
【請求項１２】
予め設定される歪み量に基づいて、前記消失点の広がりを示す歪み線を設定し、前記第１直線と前記歪み線とを基にして、前記曲線の範囲を特定することを特徴とする請求項１１に記載の推定プログラム。
【請求項１３】
コンピュータが実行する推定方法であって、
移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得し、
複数の前記画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出し、
検出した前記直線の特徴量に基づいて、前記直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、前記直線に対応する複数の曲線を検出する
処理を実行することを特徴とする推定方法。
【請求項１４】
移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得する取得部と、
複数の前記画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出し、検出した前記直線の特徴量に基づいて、前記直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、前記直線に対応する複数の曲線を検出する検出部と
を有することを特徴とする推定システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、推定プログラム等に関する。
【背景技術】
【０００２】
従来、自動車に設置されたドライブレコーダで撮影された映像を用いて、自動車事故の原因究明等を行っている。また近年では、ドライブレコーダで撮影された映像を解析し、車線逸脱や障害物等を検知してドライバーに警告することで、安全支援を行うシステムもある。
【０００３】
ここで、車両逸脱や障害物を精度よく検知するためには、画像を用いて測距を正しく行うことになる。また、測距を正しく行うためには、カメラ校正を行うことになる。カメラ校正は、カメラの内部パラメータおよび外部パラメータを推定することである。内部パラメータは、カメラのセンサおよびレンズの特性（レンズの歪み等）を示すものであり、外部パラメータは、カメラの位置および姿勢を示すものである。
【０００４】
カメラ校正を行う場合には、実空間上で位置関係が既知のマーカを校正対象のカメラで撮影し、カメラに映ったマーカ形状の位置関係から、カメラの内部パラメータおよび外部パラメータを推定している。
【０００５】
なお、従来技術１では、マーカの形状を最小限の形状にすることで、マーカの設置コストの削減を行っている。また、従来技術２では、カメラの既知の内部パラメータと、画像の局所勾配ヒストグラムとを用いて、カメラの外部パラメータを推定することで、マーカレス化による校正コストの削減を行っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１８５７５３号公報
【特許文献２】特開２０１３−１１５５４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、レンズの歪みをマーカレスで推定することができないという問題がある。
【０００８】
たとえば、従来技術１では、マーカの形状を最小限にしているものの、マーカを用いることが前提となる。また、従来技術２では、マーカを用いていないが、カメラの内部パラメータが既知であることが前提となる。
【０００９】
１つの側面では、本発明は、レンズの歪みをマーカレスで推定することができる推定プログラム、推定方法および推定システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の案では、コンピュータに下記の処理を実行させる。コンピュータは、移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得する。コンピュータは、複数の画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出する。コンピュータは、検出した直線の特徴量に基づいて、直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、直線に対応する複数の曲線を検出する。
【発明の効果】
【００１１】
レンズの歪みをマーカレスで推定することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施例１に係る推定システムの一例を示す図である。
【図２】図２は、本発明の第１の着目点を説明するための図である。
【図３】図３は、本発明の第２の着目点を説明するための図である。
【図４】図４は、第１および第２の着目点に基づく推定装置の処理を説明するための図である。
【図５】図５は、内部パラメータの推定の一例を説明するための図である。
【図６】図６は、本実施例１に係る推定装置の構成を示す機能ブロック図である。
【図７】図７は、映像ＤＢのデータ構造の一例を示す図である。
【図８】図８は、検出線ＤＢのデータ構造の一例を示す図である。
【図９】図９は、非歪み領域設定処理を説明するための図（１）である。
【図１０】図１０は、非歪み領域設定処理を説明するための図（２）である。
【図１１】図１１は、非歪み領域設定処理の処理手順を示すフローチャートである。
【図１２】図１２は、直線検出処理を説明するための図である。
【図１３】図１３は、端点追跡処理を説明するための図である。
【図１４】図１４は、近傍時間における画像変化の一例を示す図である。
【図１５】図１５は、端点間線素探索処理を説明するための図である。
【図１６】図１６は、線素を探索する場合の問題を説明するための図である。
【図１７】図１７は、線素を探索する場合の問題を解決する方法を説明するための図である。
【図１８】図１８は、端点間線素探索処理の処理手順を示すフローチャートである。
【図１９】図１９は、線素探索の処理手順を示すフローチャートである。
【図２０】図２０は、線素探索の処理を説明するための図である。
【図２１】図２１は、マスク画像の一例を説明するための図である。
【図２２】図２２は、線素決定の処理手順を示すフローチャートである。
【図２３】図２３は、線素決定の処理を説明するための図である。
【図２４】図２４は、変化条件を満たすか否かを判定する処理の処理手順を示すフローチャートである。
【図２５】図２５は、再設定可能か否かを判定する処理の処理手順を示すフローチャートである。
【図２６】図２６は、線素抽出の実行例を示す図である。
【図２７】図２７は、検出線の一例について説明するための図である。
【図２８】図２８は、推定部の処理を説明するための図である。
【図２９】図２９は、歪み補正の一例を示す図である。
【図３０】図３０は、本実施例１に係る推定装置の処理手順の一例を示すフローチャートである。
【図３１】図３１は、本実施例１で説明した推定装置の直線の検出条件を説明するための図である。
【図３２】図３２は、直線および曲線の画像の一例を示す図である。
【図３３】図３３は、本実施例１で説明した推定装置の改善点を説明するための図である。
【図３４】図３４は、非歪み領域を一部はみ出あるオブジェクトの一例を示す図である。
【図３５】図３５は、本実施例２に係る推定装置の処理を説明するための図である。
【図３６】図３６は、凸型レンズの歪みの性質１を説明するための図である。
【図３７】図３７は、凸型レンズの歪みの性質２を説明するための図である。
【図３８】図３８は、直線保証範囲を特定する処理を説明するための図である。
【図３９】図３９は、本実施例２に係る推定装置の構成を示す機能ブロック図である。
【図４０】図４０は、本実施例２に係る直線検出処理を説明するための図である。
【図４１】図４１は、本実施例２に係る推定装置の処理手順の一例を示すフローチャートである。
【図４２】図４２は、消失点推定の処理手順を示すフローチャートである。
【図４３】図４３は、直線保証範囲の登録の処理手順を示すフローチャートである。
【図４４】図４４は、直線保証範囲を特定するその他の処理を説明するための図である。
【図４５】図４５は、推定装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する推定プログラム、推定方法および推定システムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
図１は、本実施例１に係る推定システムの一例を示す図である。図１に示すように、この推定システムは、車両１０と、推定装置１００とを有する。たとえば、車両１０は、カーナビゲーションシステムの機能を有し、カメラ１０ａと、走行記録部１０ｂとを有する。
【００１５】
本実施例１では一例として、レンズの歪み等（内部パラメータおよび外部パラメータ）の推定対象となるカメラ１０ａを、車両１０に設置する例を示すが、これに限定されるものではなく、他の移動体であってもよい。他の移動体は、電車、移動ロボット、ドローン等に対応する。
【００１６】
カメラ１０ａは、映像データを撮影するカメラである。たとえば、映像データは、時系列に複数の画像フレームが並んだデータである。カメラ１０ａは、映像データを走行記録部１０ｂに出力する。
【００１７】
走行記録部１０ｂは、カメラ１０ａから取得する映像データを蓄積する処理部である。走行記録部１０ｂは、無線通信装置（図示略）を介してネットワーク５０にアクセスし、推定装置１００に接続する。走行記録部１０ｂは、映像データを、ネットワーク５０を介して、推定装置１００に送信する。
【００１８】
推定装置１００は、車両の走行記録部１０ｂから映像データを受信し、映像データを基にして、カメラ１０ａの内部および外部パラメータを推定する装置である。推定装置１００は、画像フレームの歪みの少ない中心付近で検出した直線の特徴を起点とし、続く複数の画像フレームから直線に対応する曲線を追跡することで、直線と各曲線との関係を登録する。推定装置１００は、登録した直線と各曲線との関係を基にして、カメラの歪みを推定する。
【００１９】
図２は、本発明の第１の着目点を説明するための図である。画像フレーム１１ａは、実空間における直線格子パターンを真正面からカメラで撮影した画像フレームである。一般的に、直線格子パターンを真正面から撮影しても、カメラのレンズの歪みにより、格子線は曲線化して映る。たとえば、線分１２ａに示すように、光軸５に近い線分は曲がりが小さいが、光軸５から遠い線分１３ａ（周縁部分の線分１３ａ）は曲がりが大きくなる。すなわち、第１の着目点は、周縁部分の歪みが大きい一方、画像中心付近では歪みが小さいという性質があるという点である。
【００２０】
図３は、本発明の第２の着目点を説明するための図である。映像データ１１ｂは、車両１０の前方に設置したカメラ１０ａで撮影したものである。車両１０が前方へ進むとともに、画像中心付近に映る物体は見かけ上、矢印１２ｂの方向へ移動する。物体の映る位置は、時間とともに周縁方向へ連続移動する。すなわち、第２の着目点は、映像データでは、映像中心に映っていた物体が、周縁へ、もしくは周縁から中心へ連続移動する情報を記録しているという点である。
【００２１】
図４は、第１及び第２の着目点に基づく推定装置の処理を説明するための図である。たとえば、推定装置１００は、画像フレーム１１ｃの歪みが発生しない中心領域から、直線１２ｃを抽出する。推定装置１００は、時系列に並んだ各画像フレーム間の画像追跡により、直線１２ｃに対応する、歪曲化した曲線１３ｃを抽出し、線分１２ｃ、曲線１３ｃを蓄積する処理を繰り返し実行する。これにより、マーカ等の物標形状の事前情報を持たずに、実空間上の直線であると保証できる線群を抽出することが可能であり、これらの線群でカメラ１０ａの内部パラメータを推定することが可能となる。
【００２２】
図５は、内部パラメータの推定の一例を説明するための図である。線群１３ｄは、図４で説明した処理により蓄積した直線および曲線を示すものである。推定装置１００は、線群１３ｄが実空間上の直線であるという幾何学関係を利用して、カメラ１０ａの内部パラメータを推定する。カメラパラメータを推定することで、たとえば、透視投影モデル１４ｄへの歪み補正を行うことができる。透視投影モデル１４ｄを用いることで、外部パラメータを推定することも可能となる。
【００２３】
図６は、本実施例に係る推定装置の構成を示す機能ブロック図である。図６に示すように、この推定装置１００は、通信部１１０、入力部１２０、表示部１３０、記憶部１４０、制御部１５０を有する。
【００２４】
通信部１１０は、ネットワーク５０を介して、車両１０の走行記録部１０ｂから映像データを受信する通信装置である。通信部１１０は、映像データを、制御部１５０に出力する。
【００２５】
記憶部１４０は、映像ＤＢ（Data  Base）１４１、検出線ＤＢ１４２を有する。記憶部１４０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。
【００２６】
映像ＤＢ１４１は、映像データを格納するデータベースである。図７は、映像ＤＢのデータ構造の一例を示す図である。図７に示すように、映像ＤＢ１４１は、フレーム番号と、画像フレームとを対応づける。フレーム番号は、画像フレームを一意に識別する番号である。画像フレームは、映像データに含まれる画像フレームである。画像フレームは時系列に並んでおり、フレーム番号が小さいものほど、先にカメラ１０ａに撮影された画像フレームである。
【００２７】
検出線ＤＢ１４２は、各画像フレームから検出される、線分（直線または曲線）の情報を格納するデータベースである。図８は、検出線ＤＢのデータ構造の一例を示す図である。図８に示すように、この検出線ＤＢ１４２は、識別番号と、座標とを対応づける。検出線ＤＢ１４２は、識別番号は、線分を一意に識別する情報である。座標は、線分を構成する各画素の座標を示すものである。たとえば、識別番号「Ｉｄ０」の線分は、各座標（ｘ００，ｙ００）、（ｘ０１，ｙ０１）、（ｘ０２，ｙ０２）、・・・を結んだ線分となる。
【００２８】
図６の説明に戻る。制御部１５０は、取得部１５１、検出部１５２、推定部１５３を有する。制御部１５０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などによって実現できる。また、制御部１５０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによっても実現できる。
【００２９】
取得部１５１は、カメラ１０ａにより撮影された映像データを取得する処理部である。取得部１５１は、取得した映像データを、映像ＤＢ１４１に格納する。たとえば、映像データは、複数の画像フレームが時系列に並んだデータであり、各画像フレームには、フレーム番号が昇順に割り当てられる。
【００３０】
検出部１５２は、映像ＤＢ１４１に格納された映像データに含まれる第１画像フレームの中心付近から直線を検出する。検出部１５２は、検出した直線の特徴を起点として、第１画像フレームよりも後の複数の第２画像フレームから、直線に対応する複数の曲線を検出する。検出部１５２は、検出した直線および曲線の情報を、検出線ＤＢ１４２に格納する。以下の説明では、適宜、検出部１５２が検出した直線および曲線を「検出線」と表記する。
【００３１】
以下に説明するように、検出部１５２は、非歪み領域設定処理、直線検出処理、端点追跡処理、端点間線素探索処理、検出線出力処理を順に実行する。
【００３２】
検出部１５２が行う「非歪み領域設定処理」の一例について説明する。非歪み領域は、歪み補正前の画像（車両１０の走行時に撮影された画像フレーム）が、補正後の画像においても直線となる領域である。非歪み領域は、レンズの画角が広いほど、狭くなる。レンズの画角が広いほど、歪み量は大きくなる。このため、想定最大画角に対する非歪み領域は、より狭い画角のカメラにおいても非歪み領域となる。本実施例では、想定最大画角に対する非歪み領域を一つ設定する。想定最大画角は、ドライブレコーダや、後段サービスに鑑みて事前に設定される。
【００３３】
図９および図１０は、非歪み領域設定処理を説明するための図である。図９について説明する。図９は、歪み補正後の座標の関係図を示すものであり、横軸は光軸に対する半径方向の軸であり、縦軸は半径方向に直交する軸（接線方向の軸）である。原点「０」を、光軸中心とする。このとき、歪み補正前は直線であった横軸上の１点Ｐ０と、この点Ｐ０に対応する接線上のＰｌとの関係に着目する（Ｐ０とＰｌとの図示を省略する）。接線との関係に着目する理由は、光軸に対して接線方向に表れる直線が、歪み補正の影響を最も強く受けるためである。
【００３４】
たとえば、歪み補正後のＰ０’（ｒ’、０）に対応する接線上の点を、Ｐｌ’とし、Ｐ０’とＰｌ’とを結ぶ線分を線分ｌ’とする。線分ｌ’が、接線方向の軸と平行な直線関係が見られた場合、Ｐ０’とＰｌ’との２点は、歪み補正前後で直線関係が保たれている。
【００３５】
一方、歪み補正後のＰ０’（ｒ’、０）に対応する接線上の点を、Ｐｌ’’とすると、Ｐ０’とＰｌ’’とを結ぶ線分は、接線方向の軸と平行な直線関係が見られないため、曲線化していることを示す。厳密には、接線方向の歪みは接点から離れる限り微小ながら存在し、接点から離れるほど歪みの度合が大きくなる。
【００３６】
検出部１５２は、距離変数ｄ’に対する閾値ｄｔｈを設定し、各ｒ’に対してｄｔｈを超えない最大長ｌ’を求める。たとえば、距離変数ｄ’は、Ｐｌ’の半径方向の座標から、ｒ’を減算した値である。なお、ｒ’やｌ’は、補正後の値であるため、検出部１５２は、補正前の整数ピクセル値で、補正後の値を算出した後に、上記処理を算出することで、最大長ｌ’を算出する。
【００３７】
図１０の説明に移行する。検出部１５２は、各距離（ｒ’：半径方向における光軸中心からの距離）に対して求めたｌ’の値から、非歪み領域を設定する。図１０において、横軸はｌ’算出時の半径方向の軸であり、縦軸は接線方向の軸である。原点「０」は補正前の画像フレームの光軸中心である。線分２０は、ｌ’に対応する線分である。歪みの補正前（補正前画像変換値）において、ｌ’は、線分２０に示すような曲線型となる。このため、原点「０」から線分２０までの最短距離ｒｍｉｎを得た円形２１内の直線は、いずれも直線とみなすことができる。たとえば、検出部１５２は、円形２１内の直線２２を、直線として検出する。円形２１が、直線を検出する領域（非歪み領域）となる。
【００３８】
ここで、非歪み領域設定処理の処理手順の一例について説明する。図１１は、非歪み領域設定処理の処理手順を示すフローチャートである。図１１において、ステップＳ１０からステップＳ１８間の処理は、入力画像解像度の変数ｘ（ｘ＝１、２、・・・ｍａｘ）によるループである。変数ｘは、図９に示したｒ’に対応するものである。画像フレームの水平方向および垂直方向で解像度が異なる場合には、より大きい解像度でループすればよい。なお、ｘ＝０に対応する最大接線長ｌをｌｍａｘとする。
【００３９】
検出部１５２は、ｘ≠０の座標Ｐ０（ｘ、０）の歪み補正座標Ｐ０’（ｘ０’、ｙ０’）を算出する（ステップＳ１１）。
【００４０】
ステップＳ１２からステップＳ１６間の処理は、歪み補正前の接線ピクセル長の変数ｌ（ｌ＝１、２、・・・ｍａｘ）によるループである。
【００４１】
検出部１５２は、座標Ｐｌ（ｘ、ｌ）の歪み補正座標Ｐｌ’（ｘｌ’、ｙｌ’）を算出する（ステップＳ１３）。たとえば、検出部１５２は、歪み補正前の座標Ｐ（ｘｅ、ｙｅ）から、歪み補正後の座標Ｐ（ｘｃ、ｙｃ）を、式（１）〜（４）に基づいて算出する。式（２）に含まれるｌｍａｘを画像フレームの解像度とする。θｍａｘは、最大想定画角である。なお、ｙ０’の値は常に０となる。
【００４２】
【数１】
2019067358.tif 000003
【数２】
2019067358.tif 000004
【数３】
2019067358.tif 000005
【数４】
2019067358.tif 000006
【００４３】
検出部１５２は、式（５）に基づいて、半径方向の差分ｄ’を算出する（ステップＳ１４）。なお、ｙの違い（｜ｙｌ’−ｙ０’｜）は、直線の伸縮を示し、線の歪みには寄与しないため、検出部１５２は、ｙの違いに関する判定を行わない。
【００４４】
【数５】
2019067358.tif 000007
【００４５】
検出部１５２は、事前に定めた閾値ｄｔｈを用いて、差分ｄ’が閾値ｄｔｈより大きいか否かを判定する（ステップＳ１５）。検出部１５２は、差分ｄ’が閾値ｄｔｈより大きい場合には（ステップＳ１５，Ｙｅｓ）、ステップＳ１７に移行する。一方、検出部１５２は、差分ｄ’が閾値ｄｔｈより大きくない場合には（ステップＳ１５，Ｎｏ）、ステップＳ１６に移行する。
【００４６】
検出部１５２は、最大接線長ｌを記録する（ステップＳ１７）。たとえば、検出部１５２は、変数ｘを１ピクセル単位でループさせている場合には、最大接線長ｌから１を減算したものを、最大接線長ｌとして記録する。
【００４７】
ステップＳ１０からＳ１８間のループを抜けた後に、検出部１５２は、図１０で説明したように、各最大接線長ｌ（図１０のｌ’に対応する）に基づいて、最短距離ｒｍｉｎを特定し、非歪み領域を特定する（ステップＳ１９）。
【００４８】
本実施例では一例として、光軸中心が十分画像近辺に近いとして直線検出領域を設定しているが、検出部１５２は、光軸中心のズレによる影響に基づいて、直線検出領域を調整してもよい。また、検出部１５２は、垂直および水平画素で最大画角の違いを考慮する場合には、たとえば、垂直および水平の最大画角それぞれの曲線（図１０の線分２０に相当）を生成し、２曲線を直交させた楕円領域に対して、ｒｍｉｎを特定してもよい。
【００４９】
続いて、検出部１５２が行う「直線検出処理」の一例について説明する。検出部１５２は、画像フレームに非歪み領域を設定し、非歪み領域にある直線を検出する。図１２は、直線検出処理を説明するための図である。たとえば、検出部１５２は、画像フレームに対して、エッジ検出を行うことで、エッジ画像２５が得られる。検出部１５２は、Ｃａｎｎｙアルゴリズムに代表される公知のエッジ検出技術を用いる。円形２１は、非歪み領域設定処理で求めた、非歪み領域を示すものである。
【００５０】
検出部１５２は、ハフ（Ｈｏｕｇｈ）変換アルゴリズムを用いることで、エッジ画像２５から、直線２５ａ、２５ｂを検出する。検出部１５２は、直線２５ａ、２５ｂのうち、非歪み領域（円形２１）に含まれる直線２５ａを、特定する。直線２５ｂは、歪みが発生し得る領域から検出した線分であるため、その後の処理で用いられない。
【００５１】
続いて、検出部１５２が行う「端点追跡処理」の一例について説明する。検出部１５２は、前画像フレームおよび前画像フレームの検出線を用いて、現画像フレームの検出線を画像追跡する。
【００５２】
図１３は、端点追跡処理を説明するための図である。図１３において、線分２６は、前画像フレームで検出した直線（たとえば、図１２で示した直線２５ａ）もしくは曲線である。線分２６の端点をそれぞれ端点２６ａ、２６ｂとする。
【００５３】
検出部１５２は、前画像フレームにおいて、端点２６ａを中心とした局所画像２７ａおよび端点２６ｂを中心とした局所画像２７ｂを取り出す。検出部１５２は、現画像フレームと、局所画像２７ａ、２７ｂとのマッチングを行うことで、局所画像２７ａ、２７ｂとマッチする、現画像フレーム上の座標を特定する。たとえば、検出部１５２は、テンプレートマッチングや、局所画像の特徴量マッチングなどの公知のマッチング技術を用いる。
【００５４】
図１３に示す例では、局所画像２７ａにマッチする座標を、点２８ａの座標とし、局所画像２７ｂにマッチする座標を、点２８ｂの座標とする。すなわち、端点２６ａの追跡結果が、点２８ａとなる。端点２６ｂの追跡結果が、点２８ｂとなる。
【００５５】
なお、検出される線分の両端点は、映像データ中の柱や建物の上下端が多く、画像領域として近傍領域と比べ独自のエッジ成分やコーナー特徴成分をもつ傾向がある。また、直線全体は周縁に従い歪むが近傍時間かつ局所領域に限定すれば歪みは小さく、既存の歪みを考慮しないマッチング技術でも、追跡することが可能となる。
【００５６】
図１４は、近傍時間における画像変化の一例を示す図である。図１４において、画像フレーム３０ａは、時刻ｔに撮影された画像フレームとし、画像フレーム３０ｂは、時刻ｔ＋０．１ｓに撮影された画像フレームとする。たとえば、局所画像３１ａは、局所画像３１ｂに移動し、局所画像３２ａは、局所画像３２ｂに移動している。しかし、局所画像の見かけは大きな違いがないため、図１３で説明した処理により、端点を追跡することができる。
【００５７】
続いて、検出部１５２が行う「端点間線素探索処理」の一例について説明する。図１５は、端点間線素探索処理を説明するための図である。図１５の端点３５ａは、図１３の点２８ａに対応する。図１５の端点３５ｂは、図１３の点２８ｂに対応する。検出部１５２は、エッジ画像３５の端点３５ａと端点３５ｂとの間のエッジ画素を順次探索する（線素を探索する）ことで、本来の直線が歪んだ曲線３５ｃを得ることができる。
【００５８】
図１６は、線素を探索する場合の問題を説明するための図である。端点４０ａ、４０ｂは、端点追跡処理により追跡した端点である。たとえば、端点４０ａは、図１３の点２８ａに対応する。端点４０ｂは、図１３の点２８ｂに対応する。レンズ歪みにより曲線化した直線は、エッジ画像３９において、端点４０ａと端点４０ｂとを結ぶ曲線として表される。たとえば、線分４０を、検出対象となる曲線とする。ここで、端点４０ａ、４０ｂを結ぶ曲線の曲がり方は不明であるため、何らかの曲線モデルフィッティングで、該当する線素群を選び出すことができない。
【００５９】
検出部１５２は、片方の端点４０ａから、もう一方の端点４０ｂへエッジ画素を辿り、両端を結ぶ曲線として線素群を得る。このとき、線分４１ａ、４１ｂのように、誤って別の線を辿る可能性がある。
【００６０】
図１７は、線素を探索する場合の問題を解決する方法を説明するための図である。端点４５ａ、４５ｂは、端点追跡処理により追跡した端点である。たとえば、端点４５ａは、図１３の点２８ａに対応し、端点４５ｂは、図１３の点２８ｂに対応する。
【００６１】
本実施例では、レンズ歪みの影響が、直線を凸型曲線にすることに着目する。たとえば、検出部１５２は、端点４５ａ、４５ｂに基づく線分が、凸の関係となるような拘束条件を用いる。検出部１５２は、拘束条件に基づいて、端点４５ａから、辿れるエッジ画像のみを選択していくことで、他の曲線の混入の影響を排除し、曲線を抽出する。
【００６２】
図１７に示す例では、端点４５ａと端点４５ｂとを結ぶ直線の距離について、区間４５Ａでは、直線から曲線までの距離が単調増加し、極大点４５ｃを経て、区間４５Ｂでは、直線から曲線までの距離が単調減少する。この拘束条件により、線分４６のように、別の曲線が混入している場合でも、線分４６は、区間４５Ｂで単調増加しているため、排除することができる。すなわち、検出部１５２は、拘束条件を満たす、線分４５を選択することができる。
【００６３】
ここで、端点間線素探索処理の処理手順の一例について説明する。図１８は、端点間線素探索処理の処理手順を示すフローチャートである。図１８に示すように、検出部１５２は、線素探索を行うための初期設定を行う（ステップＳ２０）。たとえば、ステップＳ２０の初期化設定において、検出部１５２は、現画像フレームを２値化することでエッジ画像を生成し、端点追跡処理により得られた線分の両端点の画素座標を得る。
【００６４】
検出部１５２は、線素探索を行う（ステップＳ２１）。ステップＳ２１において、検出部１５２は、曲線を構成する線素を１画素分探索する。
【００６５】
検出部１５２は、線素が決定したか否かを判定する（ステップＳ２２）。検出部１５２は、線素が決定した場合には（ステップＳ２２，Ｙｅｓ）、ステップＳ２３に移行する。一方、検出部１５２は、線素が決定していない場合には（ステップＳ２２，Ｎｏ）、ステップＳ２５に移行する。
【００６６】
検出部１５２は、線素を出力する（ステップＳ２３）。検出部１５２は、端点に到達したか否かを判定する（ステップＳ２４）。検出部１５２は、端点に到達した場合には（ステップＳ２４，Ｙｅｓ）、線素探索を終了する。検出部１５２は、端点に到達していない場合には（ステップＳ２４，Ｎｏ）、ステップＳ２１に移行する。
【００６７】
ステップＳ２５の説明に移行する。検出部１５２は、探索の開始点の再設定が可能であるか否かを判定する（ステップＳ２５）。ステップＳ２５において、検出部１５２は、これまで得られた画素の１つに戻るための再設定処理を行う。検出部１５２は、再設定可能である場合には（ステップＳ２５，Ｙｅｓ）、ステップＳ２１に移行する。一方、検出部１５２は、再設定可能でない場合には（ステップＳ２５，Ｎｏ）、端末間の曲線を得ることができなかったとして、処理を終了する。
【００６８】
続いて、図１８のステップＳ２１に示した線素探索の処理を具体的に説明する。図１９は、線素探索の処理手順を示すフローチャートである。図１９に示すように、検出部１５２は、探索開始点を設定する（ステップＳ３１）。ステップＳ３１において、検出部１５２は、初期設定時は、各端点のいずれかの座標とする。検出部１５２は、既に線素が得られている場合には、最新の線素の座標を設定する。
【００６９】
図２０は、線素探索の処理を説明するための図である。たとえば、端点追跡処理により特定した各端点を端点４７ａ、４７ｂとする。初期設定時において、検出部１５２は、端点４７ａの座標を、探索開始点に設定する。なお、検出部１５２が、１画素ずつエッジ画像を探索し、点（線素）４８まで辿れている場合には、線素４８の座標を、探索開始点に設定する。
【００７０】
図１９の説明に戻る。検出部１５２は、画素の探索範囲を最小限に設定する（ステップＳ３２）。図２１は、マスク画像の一例を説明するための図である。ステップＳ３２において、検出部１５２は、図２１に示すマスク画像５０ａを用いて、画素の探索範囲を設定する。マスク画像５０ａは、上下左右４近傍を探索対象とするマスク画像である。なお、マスク画像５０ｂは、上下左右１２近傍を探索対象とするマスク画像である。マスク画像５０ｃは、上下左右２８近傍を探索対象とするマスク画像である。
【００７１】
図１９の説明に戻る。検出部１５２は、線素候補探索を実行する（ステップＳ３３）。たとえば、ステップＳ３３において、検出部１５２は、ステップＳ３２で設定した探索範囲内において、エッジ画像をフィルタリングし、エッジ画素値が残った座標を線素候補点とする。このとき、検出部１５２は、既に評価された座標、または、既に線素であることが確定している座標は、線素候補点から除外する。
【００７２】
検出部１５２は、ステップＳ３３において、最低１つの線素候補点があるか否かを判定する（ステップＳ３４）。検出部１５２は、最低１つの線素候補点がある場合には（ステップＳ３４，Ｙｅｓ）、ステップＳ３５に移行する。一方、検出部１５２は、最低１つの線素候補点がない場合には（ステップＳ３４，Ｎｏ）、ステップＳ３７に移行する。
【００７３】
検出部１５２は、各線素候補点が、次線素に良好な画素であるか否かを評価する（ステップＳ３５）。検出部１５２は、次線素に良好な画素であると評価された線素候補点が得られた場合には、かかる線素候補点を、線素として決定し（ステップＳ３６，Ｙｅｓ）、線素探索の処理を終了する。
【００７４】
一方、検出部１５２は、次線素に良好な画素であると評価された線素候補点が得られていない場合には、線素が決定していないと判定し（ステップＳ３６，Ｎｏ）、ステップＳ３７に移行する。
【００７５】
検出部１５２は、探索範囲が拡大可能であるか否かを判定する（ステップＳ３７）。ステップＳ３７において、検出部１５２は、現在設定中のマスク画像がマスク画像５０ａまたはマスク画像５０ｂである場合には、拡大可能であると判定し（ステップＳ３７，Ｙｅｓ）、探索範囲を拡大して（ステップＳ３８）、ステップＳ３３に移行する。たとえば、ステップＳ３８において、検出部１５２は、現在設定中のマスク画像がマスク画像５０ａである場合には、マスク画像５０ｂを設定することで、探索範囲を拡大する。検出部１５２は、現在設定中のマスク画像がマスク画像５０ｂである場合には、マスク画像５０ｃを設定することで、探索範囲を拡大する。探索範囲を拡大することで、曲がり方が不明であっても、画素を辿ることができる。また、エッジ画素に一部欠けがあっても、その先の画素を候補点とすることができる。
【００７６】
一方、検出部１５２は、ステップＳ３７において、現在設定中のマスク画像が最大サイズ（たとえば、マスク画像５０ｃ）である場合には、拡大不可能であると判定し（ステップＳ３７，Ｎｏ）、線素が得られなかったとして、探索を終了する。
【００７７】
続いて、図１８のステップＳ２２で説明した線素を決定する処理の一例について説明する。図２２は、線素決定の処理手順を示すフローチャートである。図２３は、線素決定の処理を説明するための図である。
【００７８】
図２３では、端点５１ａと端点５１ｂとが含まれ、端点５１ａを曲線５１の「始端」、端点５１ｂを曲線５１の「終端」とする。曲線５１は、一部エッジ画素に欠けがある曲線とする。曲線５１は、レンズ歪みにより曲線化した直線である。このため、両端点５１ａ、５１ｂ以外において、ｆ（ｘ，ｙ）＝０と曲線５１に含まれる構成画素との距離は、区間５１Ａにおいて単調増加し、区間５１Ｂにおいて単調減少する。図２２で説明するフローチャートでは、端点５１ａと、これまでの線素の位置関係を用いて、各線素候補点を評価する。
【００７９】
図２２の説明に移行する。検出部１５２は、未評価の線素候補点があるか否かを判定する（ステップＳ４１）。検出部１５２は、未評価の線素候補点がない場合には（ステップＳ４１，Ｎｏ）、全ての線素候補点を評価したとして、線素を決定する処理を終了する。
【００８０】
一方、検出部１５２は、未評価の線素候補点がある場合には（ステップＳ４１，Ｙｅｓ）、未評価の線素候補点の座標を取得する（ステップＳ４２）。検出部１５２は、未評価の線素候補点が、終端であるか否かを判定する（ステップＳ４３）。検出部１５２は、未評価の線素候補が終端である場合には（ステップＳ４３，Ｙｅｓ）、終端が得られたという情報とともに、処理を終了する。
【００８１】
検出部１５２は、未評価の線素候補点が終端でない場合には（ステップＳ４３，Ｎｏ）、ステップＳ４４に移行する。
【００８２】
検出部１５２は、未評価の線素候補点が前線素と同直線領域であるか否かを判定する（ステップＳ４４）。たとえば、前線素は、ひとつ前の評価で、線素であると評価された線素候補点である。ステップＳ４４の処理について具体的に説明する。ここで、図２３の端点５１ａと端点５１ｂとを通る直線をｆ（ｘ，ｙ）とすると、両端点以外の点は条件１か条件２を満たす。たとえば、曲線５１の画素群は全て条件１を満たす。このため、たとえば、前線素が曲線５１に含まれる場合には、線素候補点５２は、前線素と同直線領域とならない。一方、前線素が曲線５１に含まれる場合には、線素候補５４ａ〜５４ｄは、前線素と同直線領域となる。
【００８３】
ｆ（ｘ，ｙ）＞０・・・条件１
ｆ（ｘ，ｙ）＜０・・・条件２
【００８４】
検出部１５２は、式（６）、（７）、（８）を基にして、前線素および線素候補点のｄｂ（正負）をそれぞれ算出する。式（６）、（７）において、（ｘ０，ｙ０）は、始端の座標を示す。（ｘ１，ｙ１）は、終端の座標を示す。式（８）に含まれる（ｘｂ，ｙｂ）は、線素（線素候補点）の座標を示す。
【００８５】
【数６】
2019067358.tif 000008
【数７】
2019067358.tif 000009
【数８】
2019067358.tif 000010
【００８６】
検出部１５２は、前線素の正負と、線素候補点の正負とが一致する場合には、線素候補点が前線素と同直線領域であると判定し（ステップＳ４４，Ｙｅｓ）、ステップＳ４５に移行する。一方、検出部１５２は、前線素の正負と、線素候補点の正負とが一致しない場合には、線素候補点が前線素と同直線領域でないと判定し（ステップＳ４４，Ｎｏ）、ステップＳ４１に移行する。
【００８７】
検出部１５２は、線素候補点が前線素より終端に近いか否かを判定する（ステップＳ４５）。ステップＳ４５において、検出部１５２は、線素候補点と終端との距離ｄ１ｂを算出する。また、検出部１５２は、前線素と終点との距離ｄ１ａを算出する。検出部１５２は、距離ｄ１ｂが、距離ｄ１ａよりも小さい場合には、線素候補点が前線素より終端に近いと判定し（ステップＳ４５，Ｙｅｓ）、ステップＳ４６に移行する。一方、検出部１５２は、距離ｄ１ｂが、距離ｄ１ａよりも大きい場合には、線素候補点が前線素より終端に近くないと判定し（ステップＳ４５，Ｎｏ）、ステップＳ４１に移行する。たとえば、図２３において、前線素を線素５３とし、線素候補点を線素候補点５４ａとすると、線素候補点が前線素より終端に近くないため、線素候補点５４ａは、線素ではないと評価される。
【００８８】
検出部１５２は、線素候補点と直線ｆ（ｘ，ｙ）＝０との距離が変化条件を満たすか否かを判定する（ステップＳ４６）。ステップＳ４６において、検出部１５２は、線素候補点が、直線ｆ（ｘ，ｙ）＝０との単調増加、単調減少の条件を満たしているか否かを判定する。
【００８９】
検出部１５２は、線素候補点と直線ｆ（ｘ，ｙ）＝０との距離が変化条件を満たしている場合には（ステップＳ４６，Ｙｅｓ）、ステップＳ４７に移行する。一方、検出部１５２は、線素候補点と直線ｆ（ｘ，ｙ）＝０との距離が変化条件を満たしていない場合には（ステップＳ４６，Ｎｏ）、ステップＳ４１に移行する。
【００９０】
検出部１５２は、登録済みの線素より距離変化が小さいか否かを判定する（ステップＳ４７）。ステップＳ４７の処理は、複数の線素候補点から最適な線素候補点を判定する処理に対応する。たとえば、図２３において、複数の線素候補点５４ｂ、５４ｃ、５４ｄが存在する場合には、線素５３とよりスムーズに接続される線素候補５４ｃが選択される。
【００９１】
ステップＳ４７において、検出部１５２は、式（９）に基づいて、ｄｂａを算出する。式（９）において、ｄｂは、式（８）により算出される値であり、線素候補点と、直線ｆ（ｘ，ｙ）＝０との距離である。ｄａは、最新決定済み線素と、直線ｆ（ｘ，ｙ）＝０との距離である。
【００９２】
ｄｂａ＝｜ｄｂ｜−｜ｄａ｜・・・（９）
【００９３】
検出部１５２は、前回算出した線素候補点のｄｂａと、今回算出した線素候補点のｄｂａとを比較し、今回算出した線素候補点のｄｂａの方が小さい場合に、登録済みの線素より距離変化が小さい（ステップＳ４７，Ｙｅｓ）と判定し、ステップＳ４８に移行する。
【００９４】
検出部１５２は、今回算出した線素候補点のｄｂａの方が小さくない場合に、登録済みの線素より距離変化が小さくない（ステップＳ４７，Ｎｏ）と判定し、ステップＳ４１に移行する。
【００９５】
検出部１５２は、線素座標を更新する（ステップＳ４８）。ステップＳ４８は、現在対象となっている線素候補点を、評価済みのいずれの線素候補点よりも良好な点であるとして、現在対象となっている線素候補点の座標により更新する。
【００９６】
続いて、図２２のステップＳ４６で説明した線素候補点と直線との距離が変化条件を満たすか否かを判定する処理について具体的に説明する。図２４は、変化条件を満たすか否かを判定する処理の処理手順を示すフローチャートである。図２４に示すように、検出部１５２は、極値に到達済みであるか否かを判定する（ステップＳ５１）。ステップＳ５１において、検出部１５２は、極値到達フラグを参照し、判定を行う。極値到達フラグの初期値はオフとなる。検出部１５２は、極値到達フラグがオフである場合には、極値に到達していないと判定し（ステップＳ５１，Ｎｏ）、ステップＳ５２に移行する。一方、検出部１５２は、極値到達フラグがオンである場合には、極値に到達したと判定し（ステップＳ５１，Ｙｅｓ）、ステップＳ５４に移行する。
【００９７】
検出部１５２は、距離ｄｂａが増加したか否かを判定する（ステップＳ５２）。検出部１５２は、距離ｄｂａが増加した場合には（ステップＳ５２，Ｙｅｓ）、変化条件（単調増加）を満たしていると判定し、処理を終了する。一方、検出部１５２は、距離ｄｂａが増加していない場合には（ステップＳ５２，Ｎｏ）、ステップＳ５３に移行する。たとえば、図２３において、決定済みの最後の線素が線素５３である場合に、線素候補点５４ａ、５４ｂは、距離ｄｂａが増加している。線素候補５４ｄは、距離ｄｂａが減少している。
【００９８】
検出部１５２は、極値到達フラグをオンに設定し（ステップＳ５３）、変化条件を満たしていると判定し、処理を終了する。ステップＳ５３に示すものは、図２３の極値５５を超えた最初の画素探索や、決定済みの最後の線素が線素５３である場合に、線素候補点５４ｄを選択した場合に相当する。
【００９９】
図２４のステップＳ５４の説明に移行する。検出部１５２は、距離ｄｂａが増加したか否かを判定する（ステップＳ５４）。検出部１５２は、距離ｄｂａが増加した場合には（ステップＳ５４，Ｙｅｓ）、極値到達後に再度距離増加となっているため、変化条件（単調減少）を満たしていないと判定し、処理を終了する。たとえば、図２３において、決定済みの最後の線素が線素５６である場合に、線素候補点５７ａは、単調増加しており、変化条件を満たさない。
【０１００】
一方、検出部１５２は、距離ｄｂａが増加していない場合には（ステップＳ５４，Ｎｏ）、極値到達後に距離減少となっているため、変化条件（単調減少）を満たしていると判定し、処理を終了する。たとえば、図２３において、決定済みの最後の線素が線素５６である場合に、線素候補点５７ｂは、単調減少しており、変化条件を満たす。
【０１０１】
続いて、図１８のステップＳ２５に示した探索の開始点を再設定可能であるか否かを判定する処理の一例について説明する。図２５は、再設定可能か否かを判定する処理の処理手順を示すフローチャートである。図２５に示すように、検出部１５２は、登録済みの線素があるか否かを判定する（ステップＳ６１）。検出部１５２は、登録済みの線素がない場合には（ステップＳ６１，Ｎｏ）、再設定ができないと判定して、処理を終了する。一方、検出部１５２は、登録済みの線素がある場合には（ステップＳ６１，Ｙｅｓ）、ステップＳ６２に移行する。
【０１０２】
検出部１５２は、検出線ＤＢ１４２から、最新の登録済みの線素を削除する（ステップＳ６２）。検出部１５２は、削除した線素に対応するエッジ画素をエッジ画像から削除する（ステップＳ６３）。ステップＳ６３において、検出部１５２は、誤ったエッジ画素を再び辿らないために、削除対象となった線素に対応する画素を削除する。
【０１０３】
検出部１５２は、削除した後の最新の線を、探索開始点として再び設定（再設定可能であると判定）し（ステップＳ６４）、処理を終了する。検出部１５２が、図２５の処理を実行することで、最新の線素の座標１点が、破棄されるか、もしくは、破棄する線素の座標がない状態を返す。
【０１０４】
図２６は、線素抽出の実行例を示す図である。図２６において、エッジ画像６５は、ある画像フレーム６０の部分画像６０ａに対応するエッジ画像である。エッジ画像６５には、端点６５ａと、端点６５ｂとが含まれる。端点６５ａ、６５ｂは、検出部１５２による端点追跡処理の結果得られるものである。図２６に示すように、検出部１５２が、上記の線素検出を行うことで、曲がり具合が未知の曲線６７を得ることができる。また、各エッジ画素を追跡する場合に、各種条件を用いることで、建物の影のエッジ画素６６ａ、６６ｂ、６６ｃの影響を排除することができる。検出部１５２は、検出した検出線の情報を、検出線ＤＢ１４２に格納する。
【０１０５】
図２７は、検出線の一例について説明するための図である。図２７に示すように、検出部１５２は、各画像フレーム７５ａを基にして、検出線を検出することで、たとえば、画像７５ｂに示すような複数の検出線が検出される。
【０１０６】
図６の説明に戻る。推定部１５３は、検出線ＤＢ１４２に格納された各検出線の情報を基にして、内部パラメータを推定する処理部である。たとえば、推定部１５３は、多数の検出線のいずれも、歪み補正により、直線化できるような、レンズ歪み、光軸ずれ、焦点距離のパラメータを推定する。
【０１０７】
図２８は、推定部の処理を説明するための図である。図２８の点７０は、カメラ原点（以下、カメラ原点７０）に対応するものである。Ｐ１〜Ｐｎは、ある検出線をなす点列Ｋとする。たとえば、Ｐ１〜Ｐｎは、図５の線群１３ｄに含まれるある曲線に対応するものである。また、検出線をなす点列Ｋは、図８の検出線ＤＢのある線識別番号に対応する各座標あるいは一部の座標に対応する点列である。
【０１０８】
このとき、カメラ原点７０と、点列Ｋの各点を結ぶ入射光ベクトル群ｍ１〜ｍｎは、理想的には同一平面上にある。すなわち、唯一の法線ベクトルｎｋが、ｍ１〜ｍｎと直交する。実際は、観測ノイズ等により全ての入射光ベクトル群と直交するｎｋは一意に求まらないため、推定部１５３は、次の処理を行う。
【０１０９】
推定部１５３は、各点Ｐ１〜Ｐｎを、レンズの歪み、光軸ずれ、焦点距離のパラメータで表す。推定部１５３は、パラメータの値を調整しながら、式（１０）の誤差が最小となるパラメータを探索し、誤差が最小となるパラメータを内部パラメータとして推定する。式（１０）において、ａは入射光ベクトルの数を示し、ｋは、各入射光ベクトルから求められる法線ベクトルの数を示す。
【０１１０】
誤差＝ΣｋΣａ（ｎｋ，ｍａ）２・・・（１０）
【０１１１】
たとえば、推定部１５３は、推定内部パラメータＸ１によって、検出線ＤＢ１４２のある検出線上の各点の位置を変換し、各点Ｐ１１〜Ｐ１ｎを求める。推定部１５３は、求めた点Ｐ１１〜Ｐ１ｎと、カメラ原点７０とを結ぶ入射光ベクトル群ｍ１１〜ｍ１ｎをそれぞれ算出し、入射光ベクトル群ｍ１１〜ｍ１ｎから求められる複数の法線ベクトルの誤差Ｅ１を算出する。推定部１５３は、他の推定内部パラメータＸ２〜Ｘｌについても同様に、誤差Ｅ２〜Ｅｌを算出する。推定部１５３は、各誤差Ｅ２〜Ｅｌのうち、最小誤差に対応する推定内部パラメータを、推定結果の内部パラメータとして特定する。
【０１１２】
ここで、推定部１５３が推定した内部パラメータで、歪みが補正できることについて説明する。図２９は、歪み補正の一例を示す図である。図２９において、画像フレーム８０ａは、補正前の画像フレームであり、画像フレーム８０ｂは、補正後の画像フレームである。図２９に示すものは、透視投影に変換可能な内部パラメータが得られたことを示しており、公知のＳＬＡＭアルゴリズムに代表される画像による自己位置推定や周辺測距が可能となることから、カメラの外部パラメータを求めることができる。
【０１１３】
推定部１５３は、推定した内部パラメータと、映像ＤＢ１４１に登録された映像データとを用いて、外部パラメータを推定する。なお、特許文献（特開２０１６−１１１５８５）に開示されている公知の技術のように、推定部１５３は、推定した内部パラメータと、画像フレームの局所勾配ヒストグラム等とを用いて、外部パラメータを推定してもよい。
【０１１４】
次に、本実施例に係る推定装置１００の処理手順の一例について説明する。図３０は、本実施例に係る推定装置の処理手順の一例を示すフローチャートである。図３０に示すように、推定装置１００の検出部１５２は、映像ＤＢ１４１から画像フレームを読み込む（ステップＳ１０１）。検出部１５２は、非歪み領域を設定する（ステップＳ１０２）。検出部１５２は、非歪み領域から直線を検出する（ステップＳ１０３）。
【０１１５】
検出部１５２は、検出線の端点を追跡する（ステップＳ１０４）。検出部１５２は、線素を探索する（ステップＳ１０５）。検出部１５２は、検出線の情報を、検出線ＤＢ１４２に登録する（ステップＳ１０６）。
【０１１６】
検出部１５２は、次の画像フレームがある場合には（ステップＳ１０７，Ｙｅｓ）、ステップＳ１０１に移行する。一方、検出部１５２は、次の画像フレームがない場合には（ステップＳ１０７，Ｎｏ）、ステップＳ１０８に移行する。推定装置１００の推定部１５３は、内部パラメータおよび外部パラメータを推定する（ステップＳ１０８）。
【０１１７】
次に、本実施例に係る推定装置の効果について説明する。推定装置１００は、画像フレームの歪みの少ない中心付近で検出した直線を起点として、続く複数の画像フレームから、検出した直線に対応する曲線を追跡することで、実空間上では直線となる曲線の情報を、検出線ＤＢ１４２に登録する。この検出線ＤＢ１４２の情報を用いることで、カメラレンズの内部パラメータの情報を推定することができる。すなわち、カメラレンズの歪みをマーカレスで推定することが可能となる。また、マーカレスでパラメータを推定することで、移動体に搭載したカメラの校正コストを削減できる。
【０１１８】
なお、レンズにより歪んだ本来の直線は、歪み度合いは不明だが、推定装置１００は、画像内での形状は常に凸であることを利用する。たとえば、推定装置１００は、始点終点直線の距離は増加から一度だけ減少に転じるように、始点終点間の曲線を構成する画素を選択することで、本来の直線要因以外のエッジ画素が混入しても、かかるエッジ画素を排除することで検出曲線の精度を向上させることが可能である。
【０１１９】
推定装置１００は、画像フレームの解像度とカメラの画角とを基にして、画像フレーム上の非歪み領域を算出する。このため、歪みの少ない領域から、直線を精度よく検出することができる。
【０１２０】
推定装置１００は、前画像フレームから検出した直線の端点を中心とした局所領域に対応する、現画像フレーム上の局所領域からエッジを検出し、検出したエッジを基にして、曲線を検出する。また、推定装置１００は、複数の画像フレームについて、先の画像フレームの曲線の端点を中心とした局所領域に対応する、後の第２画像フレームの局所領域からエッジを検出し、検出したエッジを基にして、曲線を検出する。図１４で説明したように、前画像フレームから現画像フレームまでに、局所画像は僅かに移動しているが、見かけは大きな違いがないため、係る処理により、正しい検出線を検出することが可能となる。
【０１２１】
推定装置１００は、ステップＳ４４で説明したように、未評価の線素候補点が前線素と同直線領域であるものを、線素候補点を線素として選択する。これにより、適切な線素候補点を簡易的に選択でき、実空間上で直線となる曲線を選択することができる。
【０１２２】
推定装置１００は、ステップＳ４５で説明したように、線素候補点が前線素より終端に近い場合に、線素候補点を線素として選択する。これにより、適切な線素候補点を簡易的に選択でき、実空間上で直線となる曲線を選択することができる。
【０１２３】
推定装置１００は、曲線を構成する画素の座標値が一つの極値を持つように、前記第２画像フレームの局所領域に含まれる各線素候補点を接続する。これにより、適切な線素候補点を簡易的に選択でき、実空間上で直線となる曲線を選択することができる。
【０１２４】
ここで、原理的には、第２画像フレームは１枚でも、直線と曲線との検出でき、内部パラメータを求めることが可能である。ただし、内部パラメータを用いるためには、２本以上の曲線を用いる必要がある。このため、第２画像フレームが１枚の場合には、第１画像フレームの中心付近に、少なくとも２本の直線が含まれることが条件となる。従って、推定装置１００の検出部１５２は、第１画像フレームの中心付近に直線１本が含まれる場合には、少なくとも２つ以上の第２画像フレームから、少なくとも２本以上の曲線を検出する。また、検出部１５２は、第１画像フレームの中心付近に直線２本が含まれる場合には、少なくとも１つ以上の第２画像フレームから、各直線に対応する２本以上の曲線を検出する。これにより、２本以上の曲線を得ることができるので、内部パラメータを適切に算出することができる。
【実施例２】
【０１２５】
図３１は、本実施例１で説明した推定装置の直線の検出条件を説明するための図である。推定装置１００は、画像フレーム１１ｃの歪みが発生しない非歪み領域２１ａに「線分の全体が完全に含まれる直線オブジェクト」を検出対象としている。図３１に示す例では、線分１２ｃが、非歪み領域２１ａに完全に含まれる直線オブジェクトとなる。このように、検出対象の条件を設定することで、直線性を明確に保証した歪み線（たとえば、非歪み領域２１ａでは直線であったものから特定される曲線１３ｃ）を検出することができる。
【０１２６】
推定装置１００の検出部１５２は、非歪み領域設定処理を行うことで、非歪み領域２１ａを特定し、直線検出処理により、直線１２ｃを検出する。また、検出部１５２は、検出した直線１２ｃを起点として、端点追跡処理、端点間線素探索処理を行うことで、直線１２ｃに対応する曲線１３ｃを得る。図３１の説明では、便宜的に、直線１２ｃと曲線１３ｃとを示しているが、直線１２ｃは、時刻ｔの画像フレーム１１ｃから検出される直線であり、曲線１３ｃは、時刻ｔ＋ｎの画像フレームから検出される曲線である。
【０１２７】
図３２は、直線および曲線の画像の一例を示す図である。図３２に示すように、時刻ｔの画像フレームにおいて、非歪み領域に含まれるオブジェクトから、直線１２ｃ’が検出されている。また、時刻ｔ＋ｎの画像フレームにおいて、曲線１３ｃ’が検出されている。曲線１３ｃ’は、直線１２ｃ’を起点として検出される曲線である。
【０１２８】
図３３は、本実施例１で説明した推定装置の改善点を説明するための図である。実際の画像フレームでは、非歪み領域２１ｂを一部はみ出る直線オブジェクトも多く存在する。図３４は、非歪み領域を一部はみ出るオブジェクトの一例を示す図である。図３４に示す例では、非歪み領域２１ｂから、オブジェクト２１ｅがはみ出ている。
【０１２９】
図３３において、たとえば、画像フレーム１１ｄの直線１２ｅは、非歪み領域２１ｂを一部はみ出る直線オブジェクトである。推定装置１００の検出部１５２が、直線１２ｅを起点として、曲線１３ｅを検出した場合には、曲線１３ｅの全てを校正の線分として用いることができない。校正の線分として利用可能な部分は、非歪み領域２１ｂからはみ出ていない部分（直線１２ｆ）と、曲線１３ｅのうち、直線１２ｆに対応する曲線の部分である。
【０１３０】
しかし、曲線１３ｅのうち、直線１２ｆに対応する部分を正確に特定することが難しく、実施例１で説明した推定装置１００では、非歪み領域２１ｂをはみ出る直線（直線オブジェクト）を検出対象から除外している。これにより、非歪み領域２１ｂに「線分の全体が完全に含まれる直線オブジェクト」を含む画像フレームが少ない場合には、内部パラメータを推定（校正）するための線分を十分に蓄積するまでに時間を要してしまう。
【０１３１】
図３５は、本実施例２に係る推定装置の処理を説明するための図である。本実施例２に係る推定装置は、非歪み領域２１ｄを一部はみ出る直線１２ｅを検出対象から除外しないで、部分的に保証可能な直線１２ｆを持つものとして捉える。また、推定装置は、直線１２ｅを起点として、端点追跡処理、端点間線素探索処理、線素抽出を行うことで、直線１２ｅに対応する曲線１３ｅを得る。
【０１３２】
図３４で説明したオブジェクト２１ｅでは、非歪み領域２１ｄに含まれる部分２１ｇと、非歪み領域に２１ｄに含まれない部分２１ｆを有する。部分２１ｆは、直線保証できない直線が検出される部分である。部分２１ｇは、直線保証の可能となる直線が検出される部分である。
【０１３３】
ここで、図３３で説明したように、曲線１３ｅのうち、直線１２ｆに対応する部分を正確に特定することは難しいが、後述する「凸レンズの歪みの性質１、２」を用いることで、少なくとも、保証対象外の直線１２ｇに対応しない、曲線１３ｅの直線保証範囲１３ｆを特定することは可能である。本実施例２に係る推定装置は、線分１２ｆと、曲線１３ｅの内、直線保証範囲１３ｆの曲線とを、内部パラメータの校正用の線分として蓄積する。
【０１３４】
図３６は、凸型レンズの歪みの性質１を説明するための図である。性質１は、非歪みに対して、各点は光軸半径上の中央側に映るという性質である。たとえば、光軸中心を２２ａとすると、歪み無し直線２３は、光軸半径上の中央側に、歪み線２４として映る。また、直線２３上の各点は、光軸中心２２ａからの距離が長いほど、光軸中心２２ａに向かう移動量が長くなる。
【０１３５】
直線２３上の点２３ａは、歪み線２４上の２４ａに移動する。直線２３上の点２３ｂは、歪み線２４上の２４ｂに移動する。直線２３上の点２３ｃは、歪み線２４上の２４ｃに移動する。点２３ａと光軸中心２２ａとを距離は、点２３ｂと光軸中心２２ａとの距離よりも長い。このため、点２３ａから点２４ａまでの距離よりも、点２３ｂから点２４ｂまでの距離の方が長い。また、点２３ａと光軸中心２２ａとを距離は、点２３ｃと光軸中心２２ｃとの距離よりも長い。このため、点２３ａから点２４ａまでの距離よりも、点２３ｃから点２４ｃまでの距離の方が長い。
【０１３６】
図３７は、凸型レンズの歪みの性質２を説明するための図である。性質２は、歪んだ直線が光軸上の平行線を越えないという性質である。たとえば、光軸中心を２２ａとすると、光軸中心２２ａを通り、歪み無し直線２３と平行になる平行線は、線分２２ｂとなる。性質１で説明したように、歪み無し直線２３上の各点は、光軸半径上の中央側に移動する（光軸中心２２ａの方向に移動）するため、図３６で示した歪み線２４上の点は、線分２２ｂを超えることはない。
【０１３７】
上記の性質１、２を用いることで、図３５で説明したような直線保証範囲１３ｆを特定することが可能である。図３８は、直線保証範囲を特定する処理を説明するための図である。本実施例２に係る推定装置は、画像フレーム１１ｅから、非歪み領域２１ｄをはみ出る直線１２ｈを検出する。推定装置は、直線１２ｈを起点として、端点追跡処理、端点間線素探索処理、線素抽出を行うことで、直線１２ｈに対応する曲線１３ｈを得る。
【０１３８】
推定装置は、画像フレーム１１ｅから、消失点２ａを特定する。たとえば、推定装置は、画像フレーム１１ｅから、エッジを検出し、複数のエッジが交差する点を消失点２ａとして特定する。推定装置は、画像フレーム１１ｅから、光軸中心４ａを特定する。光軸中心４ａは、画像フレーム１１ｅの中心であってもよいし、内部パラメータなどにより、算出される点であってもよい。
【０１３９】
推定装置は、線分３ａ，３ｂ、線分４ｂ、４ｃを設定する。非歪み領域２１ｂの外周と、線分１２ｈとの交点をそれぞれ点２ｂ，２ｃとする。線分３ａは、消失点２ａと点２ｂとを通る直線である。線分３ｂは、消失点２ａと点２ｃとを通る直線である。線分４ｂは、線分３ａと平行な線分であり、光軸中心４ａを通る。線分４ｃは、線分３ｂと平行な線分であり、光軸中心４ａを通る。
【０１４０】
上記の性質１、２より、線分１２ｈの点２ｂよりも上の部分（非歪み領域２１ｂからはみ出た部分）は、線分４ｂ超えて移動することはない。また、性質１、２より、線分１２ｈの点２ｃよりも下の部分（非歪み領域２１ｂからはみ出た部分）は、線分４ｃに向かって移動するため、線分３ｂよりも上に移動することはない。これにより、推定装置は、線分４ｂと線分３ｂとに挟まれる直線保証範囲１３ｇを特定する。直線保証範囲１３ｇを特定する際に用いた線分４ｂは、線分３ａよりも光軸半径の中央側の線分である。線分３ｂは、線分４ｃよりも光軸半径の中央側の線分である。
【０１４１】
このように、本実施例２に係る推定装置は、凸型レンズの歪みの性質１、２を用いることで、非歪み領域２１ｂから直線がはみ出している場合に、直線性を保証可能な直線保証範囲１３ｇを特定することが可能である。このため、非歪み領域２１ｂから直線がはみ出している場合でも、非歪み領域２１ｂに含まれる直線（点２ｂ〜点２ｃまでの直線）と、直線保証範囲１３ｇの曲線との組を、内部パラメータを推定（校正）するための線分として蓄積することができる。従って、非歪み領域に「線分の全体が完全に含まれる直線オブジェクト」を含む画像フレームが少ない場合でも、内部パラメータを推定（校正）するための線分を十分に蓄積するまでに時間を要してしまうことを解消できる。
【０１４２】
次に、本実施例２に係る推定装置の構成について説明する。図３９は、本実施例２に係る推定装置の構成を示す機能ブロック図である。図３９に示すように、この推定装置２００は、通信部２１０、入力部２２０、表示部２３０、記憶部２４０、制御部２５０を有する。
【０１４３】
通信部２１０は、実施例１で説明したように、ネットワーク５０を介して、車両１０の走行記録部１０ｂから映像データを受信する通信装置である。通信部２１０は、映像データを、制御部１５０に出力する。
【０１４４】
記憶部２４０は、映像ＤＢ２４１、検出線ＤＢ２４２を有する。記憶部２４０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。
【０１４５】
映像ＤＢ２４１は、映像データを格納するデータベースである。映像ＤＢ２４１のデータ構造は、実施例１の図７等で説明した映像ＤＢ１４１のデータ構造と同様である。
【０１４６】
検出線ＤＢ２４２は、各画像フレームから検出される、線分（直線または曲線）の情報を格納するデータベースである。検出線ＤＢ２４２のデータ構造は、実施例１の図８等で説明した検出線ＤＢ１４２のデータ構造と同様である。
【０１４７】
制御部２５０は、取得部２５１、検出部２５２、推定部２５３を有する。制御部２５０は、ＣＰＵやＭＰＵなどによって実現できる。また、制御部２５０は、ＡＳＩＣやＦＰＧＡなどのハードワイヤードロジックによっても実現できる。
【０１４８】
取得部２５１は、カメラ１０ａにより撮影された映像データを取得する処理部である。取得部２５１は、取得した映像データを、映像ＤＢ２４１に格納する。
【０１４９】
検出部２５２は、映像ＤＢ２４１に格納された映像データに含まれる第１画像フレームの中心付近から直線を検出する。検出部２５２は、検出した直線の特徴を起点として、第１画像フレームよりも後の複数の第２画像フレームから、直線に対応する複数の曲線を検出する。検出部２５２は、検出した直線および曲線の情報を、検出線ＤＢ２４２に格納する。以下の説明では、適宜、検出部２５２が検出した直線および曲線を「検出線」と表記する。
【０１５０】
検出部２５２は、非歪み領域設定処理、直線検出処理、端点追跡処理、端点間線素探索処理、直線保証範囲特定処理を順に実行する。
【０１５１】
検出部２５２が行う「非歪み領域設定処理」は、実施例１で説明した検出部１５２が行う非歪み領域設定処理と同様である。
【０１５２】
検出部２５２が行う「直線検出処理」の一例について説明する。検出部２５２は、画像フレームに非歪み領域を設定し、非歪み領域にある直線を検出する。図４０は、本実施例２に係る直線検出処理を説明するための図である。たとえば、検出部２５２は、画像フレームに対して、エッジ検出を行うことで、エッジ画像２５が得られる。検出部２５２は、Ｃａｎｎｙアルゴリズムに代表される公知のエッジ検出技術を用いる。円形２１は、非歪み領域設定処理で求めた、非歪み領域を示すものである。
【０１５３】
検出部２５２は、ハフ（Ｈｏｕｇｈ）変換アルゴリズムを用いることで、エッジ画像２５から、直線２５ａ、２５ｂ、２５ｃを検出する。検出部２５２は、直線２５ａ、２５ｂのうち、非歪み領域（円形２１）に含まれる直線２５ａを、特定する。直線２５ｂは、歪みが発生し得る領域から検出した線分であるため、その後の処理で用いられない。なお、検出部２５２は、非歪み領域に一部が含まれる直線２５ｃを、特定する。
【０１５４】
検出部２５２が行う「端点追跡処理」の一例について説明する。前画像フレームおよび前画像フレームの検出線（たとえば、直線２５ａ、２５ｃ）を用いて、現画像フレームの検出線を画像追跡する。検出部２５２が行う端点追跡処理は、実施例１で説明した検出部１５２が行う端点追跡処理と同様である。
【０１５５】
検出部２５２がおこなう「端点間線素探索処理」の一例について説明する。検出部２５２が行う端点間線素探索処理は、実施例１で説明した検出部１５２が行う端点間線素探索処理と同様である。実施例１で説明したように、かかる端点間線素探索処理を実行することで、直線検出処理で特定した、直線に対応する曲線を得ることができる。
【０１５６】
検出部２５２は、直線検出処理で特定した直線が、非歪み領域をはみ出ていない場合には、直線と、直線に対応する曲線との情報を、検出線ＤＢ１４２に格納する。
【０１５７】
検出部２５２は、直線検出処理で特定した直線が、非歪み領域をはみ出ている場合に備えて、「直線保証範囲特定処理」を実行する。検出部２５２が実行する直線保証範囲特定処理は、図３８で説明した処理に対応する。
【０１５８】
すなわち、検出部２５２は、画像フレーム１１ｅから、消失点２ａを特定する。検出部２５２は、どのように消失点２ａを特定してもよい。たとえば、検出部２５２は、画像フレーム１１ｅから、特徴点等の各点を抽出し、画像フレーム１１ｅを含む連続する画像フレームから、各点のオプティカルフローを算出する。検出部２５２は、各オプティカルフローの直線式をそれぞれ生成し、各オプティカルフローの直線交点を消失点２ａとして特定する。
【０１５９】
検出部２５２は、消失点が複数存在する場合には、各消失点を評価し、最適な消失点を選択して利用してもよい。たとえば、各画像フレームから安定的に特定される消失点の評価値を大きくする。これに対して、各画像フレームから安定的に特定されない消失点の評価値を小さくする。
【０１６０】
検出部２５２は、画像フレーム１１ｅから、光軸中心４ａを特定する。光軸中心４ａは、画像フレーム１１ｅの中心であってもよいし、内部パラメータなどにより、算出される点であってもよい。
【０１６１】
検出部２５２は、線分３ａ，３ｂ、線分４ｂ、４ｃを設定する。非歪み領域２１ｂの外周と、線分１２ｈとの交点をそれぞれ点２ｂ，２ｃとする。たとえば、線分１２ｈは、図４０の線分２５ｃに対応する線分とする。線分３ａは、消失点２ａと点２ｂとを通る直線である。線分３ｂは、消失点２ａと点２ｃとを通る直線である。線分４ｂは、線分３ａと平行な線分であり、光軸中心４ａを通る。線分４ｃは、線分３ｂと平行な線分であり、光軸中心４ａを通る。
【０１６２】
検出部２５２は、凸型レンズの歪みの性質１、２に基づいて、線分４ｂと線分３ｂとに挟まれる直線保証範囲１３ｇを特定する。直線保証範囲１３ｇを特定する際に用いた線分４ｂは、線分３ａよりも光軸半径の中央側の線分である。線分３ｂは、線分４ｃよりも光軸半径の中央側の線分である。検出部２５２は、線分１２ｈのうち、点２ｂから点２ｃまでの直線と、曲線１３ｈのうち、直線保証範囲１３ｇに含まれる曲線との情報を、検出線ＤＢ１４２に格納する。
【０１６３】
推定部２５３は、検出線ＤＢ２４２に格納された各検出線の情報を基にして、内部パラメータを推定する処理部である。推定部２５３の処理は、実施例１で説明した推定部１５３の処理に対応する。
【０１６４】
次に、本実施例２に係る推定装置の処理手順の一例について説明する。図４１は、本実施例２に係る推定装置の処理手順の一例を示すフローチャートである。図４１に示すように、推定装置２００の検出部２５２は、映像ＤＢ２４１から画像フレームを読み込む（ステップＳ２０１）。検出部２５２は、非歪み領域を設定する（ステップＳ２０２）。検出部２５２は、非歪み領域から直線を検出する（ステップＳ２０３）。
【０１６５】
検出部２５２は、消失点推定を実行する（ステップＳ２０４）。検出部２５２は、直線保証範囲を登録する（ステップＳ２０５）。検出部２５２は、検出線の端点を追跡する（ステップＳ２０６）。検出部２５２は、検出線の直線保証範囲を特定する（ステップＳ２０７）。検出部２５２は、線素を探索する（ステップＳ２０８）。検出部２５２は、検出線の情報を、検出線ＤＢ２４２に登録する（ステップＳ２０９）。
【０１６６】
検出部２５２は、次の画像フレームがある場合には（ステップＳ２１０，Ｙｅｓ）、ステップＳ２０１に移行する。一方、検出部２５２は、次の画像フレームがない場合には（ステップＳ２０７，Ｎｏ）、ステップＳ２１１に移行する。推定装置２００の推定部２５３は、内部パラメータおよび外部パラメータを推定する（ステップＳ２１１）。
【０１６７】
図４１のステップＳ２０４に示した消失点推定の処理の一例について説明する。図４２は、消失点推定の処理手順を示すフローチャートである。図４２に示すように、推定装置２００の検出部２５２は、画像フレーム上の各点の時間差のオプティカルフローを算出する（ステップＳ３０１）。検出部２５２は、各オプティカルフローの直線式を生成する（ステップＳ３０２）。
【０１６８】
検出部２５２は、各オプティカルフローの直線交点を算出する（ステップＳ３０３）。検出部２５２は、直線交点を消失点として推定する（ステップＳ３０４）。
【０１６９】
図４１のステップ２０５に示した直線保証範囲の登録の処理の一例について説明する。図４３は、直線保証範囲の登録の処理手順を示すフローチャートである。図４３に示すように、推定装置２００の検出部２５２は、安定度の高い消失点を選択する（ステップＳ４０１）。検出部２５２は、消失点を起点とする延長線を生成する（ステップＳ４０２）。たとえば、ステップＳ４０２に示す延長線は、図３８に示す線分３ａ，３ｂに対応する。
【０１７０】
検出部２５２は、光軸中心を通る平行線を生成する（ステップＳ４０３）。たとえば、ステップＳ４０３に示す平行線は、図３８に示す線分４ｂ、４ｃに対応する。検出部２５２は、内側共通領域を特定し（ステップＳ４０４）、内側共通領域を直線保証範囲として登録する（ステップＳ４０５）。たとえば、内側共通領域は、図３８に示す線分３ｂと４ｂとの間の領域を示すものである。
【０１７１】
次に、本実施例２に係る推定装置２００の効果について説明する。本実施例２に係る推定装置２００は、凸型レンズの歪みの性質１、２を用いることで、非歪み領域２１ｂから直線がはみ出している場合に、直線性を保証可能な直線保証範囲１３ｇを特定することが可能である。このため、図３８に示したように、非歪み領域２１ｂから直線がはみ出している場合でも、非歪み領域２１ｂに含まれる直線（点２ｂ〜点２ｃまでの直線）と、直線保証範囲１３ｇの曲線との組を、内部パラメータを推定（校正）するための線分として蓄積することができる。従って、非歪み領域に「線分の全体が完全に含まれる直線オブジェクト」を含む画像フレームが少ない場合でも、内部パラメータを推定（校正）するための線分を十分に蓄積するまでに時間を要してしまうことを解消できる。
【０１７２】
なお、上述した推定装置２００の検出部２５２は、図３８で説明したように、線分３ａ，３ｂ（接近静止物の理想的な広がりを示す直線）と、線分４ｂ，４ｃ（線分３ａ，３ｂの平行線）との組を用いて、直線保証範囲１３ｇを特定していたがこれに限定されるものではない。検出部２５２は、平行線を示す線分４ｂ、４ｃの代わりに、最大歪み線を特定して、直線保証範囲を特定してもよい。最大歪み線は、歪み量が最大の場合に想定される、接近静止物の広がりを示す直線である。最大の歪み量は予め設定されており、かかる歪み量に基づいて、検出部２５２は、最大歪み線を算出可能である。
【０１７３】
図４４は、直線保証範囲を特定するその他の処理を説明するための図である。図４４において、線分３ａは、消失点２ａと点２ｂとを通る直線である。線分３ｂは、消失点２ａと点２ｃとを通る直線である。この線分３ａ，３ｂは、歪み量が最小となる場合を想定した、接近静止物の理想的な広がりを示す直線である。線分４ｇ，４ｈは、最大歪み線である。
【０１７４】
線分４ｇは、線分１２ｉ上の点２ｂが最大に歪んだ場合に想定される線分であるため、線分１２ｉの点２ｂよりも上の部分が、線分４ｇを超えて移動することはない。また、性質１、２より、線分１２ｉの点２ｃよりも下の部分は、線分４ｃに向かって移動するため、線分３ｂよりも上に移動することはない。これにより、検出部２５２は、線分４ｇと線分３ｂとに挟まれる直線保証範囲１３ｊを特定する。
【０１７５】
最大歪み線の代わりに、図３８で説明したような平行線（線分４ｂ、４ｃ）を用いると、特定される直線保証範囲は、範囲１３ｋとなる。したがって、最大歪み線を用いることで、直線保証範囲をより広く設定することが可能となる。
【０１７６】
次に、上記実施例に示した推定装置１００，２００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図４５は、推定装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【０１７７】
図４５に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、ユーザからのデータの入力を受け付ける入力装置３０２と、ディスプレイ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る読み取り装置３０４と、有線または無線ネットワークを介して収録機器等との間でデータの授受を行うインタフェース装置３０５とを有する。コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０６と、ハードディスク装置３０７とを有する。そして、各装置３０１〜３０７は、バス３０８に接続される。
【０１７８】
ハードディスク装置３０７は、取得プログラム３０７ａ、検出プログラム３０７ｂ、推定プログラム３０７ｃを有する。ＣＰＵ３０１は、取得プログラム３０７ａ、検出プログラム３０７ｂ、推定プログラム３０７ｃを読み出してＲＡＭ３０６に展開する。
【０１７９】
取得プログラム３０７ａは、取得プロセス３０６ａとして機能する。検出プログラム３０７ｂは、検出プロセス３０６ｂとして機能する。推定プログラム３０７ｃは、推定プロセス３０６ｃとして機能する。
【０１８０】
取得プロセス３０６ａの処理は、取得部１５１，２５１の処理に対応する。検出プロセス３０６ｂの処理は、検出部１５２，２５２の処理に対応する。推定プロセス３０６ｃの処理は、推定部１５３，２５３の処理に対応する。
【０１８１】
なお、各プログラム３０７ａ〜３０７ｃについては、必ずしも最初からハードディスク装置３０７に記憶させておかなくても良い。例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム３０７ａ〜３０７ｃを読み出して実行するようにしても良い。
【０１８２】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１８３】
（付記１）コンピュータに、
移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得し、
複数の前記画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出し、
検出した前記直線の特徴量に基づいて、前記直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、前記直線に対応する複数の曲線を検出する
処理を実行させることを特徴とする推定プログラム。
【０１８４】
（付記２）前記第１画像フレーム群のうち一つの画像フレームから一つの前記直線を検出した場合、前記第２画像フレーム群のうちの複数の画像フレームから複数の前記曲線を検出し、
前記第１画像フレーム群のうち一つの画像フレームから複数の前記直線を検出した場合、前記第２画像フレーム群のうちの少なくとも一つの画像フレームから複数の前記曲線を検出する
処理を更にコンピュータに実行させることを特徴とする付記１に記載の推定プログラム。
【０１８５】
（付記３）前記複数の曲線の情報を記憶装置に記録し、前記複数の曲線の情報を基にして、前記カメラのパラメータを推定する処理を更にコンピュータに実行させることを特徴とする付記１または２に記載の推定プログラム。
【０１８６】
（付記４）前記画像フレームの解像度と前記カメラの画角とを基にして、前記中心付近に相当する領域を算出する処理を更にコンピュータに実行させ、前記直線を検出する処理は、前記領域から、直線を検出することを特徴とする付記１、２または３に記載の推定プログラム。
【０１８７】
（付記５）前記曲線を検出する処理は、前記第１画像フレームから検出した前記直線の端点を中心とした局所領域に対応する、前記第２画像フレーム上の局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする付記１〜４のいずれか一つに記載の推定プログラム。
【０１８８】
（付記６）前記曲線を検出する処理は、複数の前記第２画像フレームについて、前記時系列における先の時刻の第２画像フレームの曲線の端点を中心とした局所領域に対応する、前記時系列の後の時刻の第２画像フレームの局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする付記５に記載の推定プログラム。
【０１８９】
（付記７）前記曲線を検出する処理は、前記曲線の両端点を通る直線で第２画像フレームの領域を第１領域および第２領域に分割し、前記第１領域または前記第２領域のいずれか一方の領域から、曲線を検出することを特徴とする付記１〜６のいずれか一つに記載の推定プログラム。
【０１９０】
（付記８）前記曲線を検出する処理は、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続する処理を繰り返し、前記曲線の終端に到達させることで前記曲線を検出し、第１エッジ画素の次に接続する第２エッジ画素を複数のエッジ画素から選択する際に、前記第１エッジ画素よりも前記終端に近いエッジ画素を前記第２エッジ画素として選択することを特徴とする付記１〜７のいずれか一つに記載の推定プログラム。
【０１９１】
（付記９）前記曲線を検出する処理は、前記曲線を構成する画素の座標値が一つの極値を持つように、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続することを特徴とする付記６、７または８に記載の推定プログラム。
【０１９２】
（付記１０）前記画像フレーム上の消失点のおよび光軸中心を特定し、前記消失点および前記光軸中心の位置を基にして、前記中心付近に相当する領域に含まれる直線に対応する曲線の範囲を特定する処理を更に実行させることを特徴とする付記４に記載の推定プログラム。
【０１９３】
（付記１１）前記中心付近に相当する領域の外周および前記直線との交点と前記消失点とを通る第１直線と、前記光軸中心を通り前記第１直線と平行となる第２直線とを特定し、前記第１直線と前記第２直線とのうち、中央側の直線を基にして、前記曲線の範囲を特定することを特徴とする付記１０に記載の推定プログラム。
【０１９４】
（付記１２）予め設定される歪み量に基づいて、前記消失点の広がりを示す歪み線を設定し、前記第１直線と前記歪み線とを基にして、前記曲線の範囲を特定することを特徴とする請求項１１に記載の推定プログラム。
【０１９５】
（付記１３）コンピュータが実行する推定方法であって、
移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得し、
複数の前記画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出し、
検出した前記直線の特徴量に基づいて、前記直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、前記直線に対応する複数の曲線を検出する
処理を実行することを特徴とする推定方法。
【０１９６】
（付記１４）前記第１画像フレーム群のうち一つの画像フレームから一つの前記直線を検出した場合、前記第２画像フレーム群のうちの複数の画像フレームから複数の前記曲線を検出し、
前記第１画像フレーム群のうち一つの画像フレームから複数の前記直線を検出した場合、前記第２画像フレーム群のうちの少なくとも一つの画像フレームから複数の前記曲線を検出する処理を更に実行することを特徴とする付記１３に記載の推定方法。
【０１９７】
（付記１５）前記複数の曲線の情報を記憶装置に記録し、前記複数の曲線の情報を基にして、前記カメラのパラメータを推定する処理を更に実行することを特徴とする付記１３または１４に記載の推定方法。
【０１９８】
（付記１６）前記画像フレームの解像度と前記カメラの画角とを基にして、前記中心付近に相当する領域を算出する処理を更にコンピュータに実行させ、前記直線を検出する処理は、前記領域から、直線を検出することを特徴とする付記１３、１４または１５に記載の推定方法。
【０１９９】
（付記１７）前記曲線を検出する処理は、前記第１画像フレームから検出した前記直線の端点を中心とした局所領域に対応する、前記第２画像フレーム上の局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする付記１３〜１６のいずれか一つに記載の推定方法。
【０２００】
（付記１８）前記曲線を検出する処理は、複数の前記第２画像フレームについて、前記時系列における先の時刻の第２画像フレームの曲線の端点を中心とした局所領域に対応する、前記時系列の後の時刻の第２画像フレームの局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする付記１７に記載の推定方法。
【０２０１】
（付記１９）前記曲線を検出する処理は、前記曲線の両端点を通る直線で第２画像フレームの領域を第１領域および第２領域に分割し、前記第１領域または前記第２領域のいずれか一方の領域から、曲線を検出することを特徴とする付記１３〜１８のいずれか一つに記載の推定方法。
【０２０２】
（付記２０）前記曲線を検出する処理は、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続する処理を繰り返し、前記曲線の終端に到達させることで前記曲線を検出し、第１エッジ画素の次に接続する第２エッジ画素を複数のエッジ画素から選択する際に、前記第１エッジ画素よりも前記終端に近いエッジ画素を前記第２エッジ画素として選択することを特徴とする付記１３〜１９のいずれか一つに記載の推定方法。
【０２０３】
（付記２１）前記曲線を検出する処理は、前記曲線を構成する画素の座標値が一つの極値を持つように、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続することを特徴とする付記１７、１８また１９に記載の推定方法。
【０２０４】
（付記２２）前記画像フレーム上の消失点のおよび光軸中心を特定し、前記消失点および前記光軸中心の位置を基にして、前記中心付近に相当する領域に含まれる直線に対応する曲線の範囲を特定する処理を更に実行させることを特徴とする付記１６に記載の推定方法。
【０２０５】
（付記２３）前記中心付近に相当する領域の外周および前記直線との交点と前記消失点とを通る第１直線と、前記光軸中心を通り前記第１直線と平行となる第２直線とを特定し、前記第１直線と前記第２直線とのうち、中央側の直線を基にして、前記曲線の範囲を特定することを特徴とする付記２２に記載の推定方法。
【０２０６】
（付記２４）予め設定される歪み量に基づいて、前記消失点の広がりを示す歪み線を設定し、前記第１直線と前記歪み線とを基にして、前記曲線の範囲を特定することを特徴とする付記２３に記載の推定方法。
【０２０７】
（付記２５）移動体に設置されたカメラにより撮影された時系列の複数の画像フレームを取得する取得部と、
複数の前記画像フレームのうち一以上の画像フレームを含む第１画像フレーム群の中心付近から少なくとも一つの直線を検出し、検出した前記直線の特徴量に基づいて、前記直線を検出した画像フレームよりも後の時刻の一以上の画像フレームを含む第２画像フレーム群から、前記直線に対応する複数の曲線を検出する検出部と
を有することを特徴とする推定システム。
【０２０８】
（付記２６）前記検出部は、前記第１画像フレーム群のうち一つの画像フレームから一つの前記直線を検出した場合、前記第２画像フレーム群のうちの複数の画像フレームから複数の前記曲線を検出し、前記第１画像フレーム群のうち一つの画像フレームから複数の前記直線を検出した場合、前記第２画像フレーム群のうちの少なくとも一つの画像フレームから複数の前記曲線を検出する処理を更に実行することを特徴とする付記２５に記載の推定システム。
【０２０９】
（付記２７）前記検出部は、前記複数の曲線の情報を記憶装置に記録し、前記複数の曲線の情報を基にして、前記カメラのパラメータを推定する推定部を更に有することを特徴とする付記２５または２６に記載の推定システム。
【０２１０】
（付記２８）前記検出部は、前記画像フレームの解像度と前記カメラの画角とを基にして、前記中心付近に相当する領域を算出し、前記領域から、直線を検出することを特徴とする付記２５、２６または２７に記載の推定システム。
【０２１１】
（付記２９）前記検出部は、前記第１画像フレームから検出した前記直線の端点を中心とした局所領域に対応する、前記第２画像フレーム上の局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする付記２６〜２８のいずれか一つに記載の推定システム。
【０２１２】
（付記３０）前記検出部は、複数の前記第２画像フレームについて、前記時系列における先の時刻の第２画像フレームの曲線の端点を中心とした局所領域に対応する、前記時系列の後の時刻の第２画像フレームの局所領域からエッジを検出し、検出したエッジを基にして、前記曲線を検出することを特徴とする付記２９に記載の推定システム。
【０２１３】
（付記３１）前記検出部は、前記曲線の両端点を通る直線で第２画像フレームの領域を第１領域および第２領域に分割し、前記第１領域または前記第２領域のいずれか一方の領域から、曲線を検出することを特徴とする付記２５〜３０のいずれか一つに記載の推定システム。
【０２１４】
（付記３２）前記検出部は、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続する処理を繰り返し、前記曲線の終端に到達させることで前記曲線を検出し、第１エッジ画素の次に接続する第２エッジ画素を複数のエッジ画素から選択する際に、前記第１エッジ画素よりも前記終端に近いエッジ画素を前記第２エッジ画素として選択することを特徴とする付記２５〜３１のいずれか一つに記載の推定システム。
【０２１５】
（付記３３）前記検出部は、前記曲線を構成する画素の座標値が一つの極値を持つように、前記第２画像フレームの局所領域に含まれる各エッジ画素を接続することを特徴とする付記２９、３０または３１に記載の推定システム。
【０２１６】
（付記３４）前記検出部は、前記画像フレーム上の消失点のおよび光軸中心を特定し、前記消失点および前記光軸中心の位置を基にして、前記中心付近に相当する領域に含まれる直線に対応する曲線の範囲を特定する処理を更に実行させることを特徴とする付記２８に記載の推定システム。
【０２１７】
（付記３５）前記検出部は、前記中心付近に相当する領域の外周および前記直線との交点と前記消失点とを通る第１直線と、前記光軸中心を通り前記第１直線と平行となる第２直線とを特定し、前記第１直線と前記第２直線とのうち、中央側の直線を基にして、前記曲線の範囲を特定することを特徴とする付記３４に記載の推定システム。
【０２１８】
（付記３６）前記検出部は、予め設定される歪み量に基づいて、前記消失点の広がりを示す歪み線を設定し、前記第１直線と前記歪み線とを基にして、前記曲線の範囲を特定することを特徴とする付記３５に記載の推定システム。
【符号の説明】
【０２１９】
１０    車両
１０ａ  カメラ
１０ｂ  走行記録部
１００，２００  推定装置
１１０，２１０  通信部
１２０，２２０  入力部
１３０，２３０  表示部
１４０，２４０  記憶部
１４１，２４１  映像ＤＢ
１４２，２４２  検出線ＤＢ
１５０，２５０  制御部
１５１，２５１  取得部
１５２，２５２  検出部
１５３，２５３  推定部
【図１】
2019067358.tif 000011
【図２】
2019067358.tif 000012
【図３】
2019067358.tif 000013
【図４】
2019067358.tif 000014
【図５】
2019067358.tif 000015
【図６】
2019067358.tif 000016
【図７】
2019067358.tif 000017
【図８】
2019067358.tif 000018
【図９】
2019067358.tif 000019
【図１０】
2019067358.tif 000020
【図１１】
2019067358.tif 000021
【図１２】
2019067358.tif 000022
【図１３】
2019067358.tif 000023
【図１４】
2019067358.tif 000024
【図１５】
2019067358.tif 000025
【図１６】
2019067358.tif 000026
【図１７】
2019067358.tif 000027
【図１８】
2019067358.tif 000028
【図１９】
2019067358.tif 000029
【図２０】
2019067358.tif 000030
【図２１】
2019067358.tif 000031
【図２２】
2019067358.tif 000032
【図２３】
2019067358.tif 000033
【図２４】
2019067358.tif 000034
【図２５】
2019067358.tif 000035
【図２６】
2019067358.tif 000036
【図２７】
2019067358.tif 000037
【図２８】
2019067358.tif 000038
【図２９】
2019067358.tif 000039
【図３０】
2019067358.tif 000040
【図３１】
2019067358.tif 000041
【図３２】
2019067358.tif 000042
【図３３】
2019067358.tif 000043
【図３４】
2019067358.tif 000044
【図３５】
2019067358.tif 000045
【図３６】
2019067358.tif 000046
【図３７】
2019067358.tif 000047
【図３８】
2019067358.tif 000048
【図３９】
2019067358.tif 000049
【図４０】
2019067358.tif 000050
【図４１】
2019067358.tif 000051
【図４２】
2019067358.tif 000052
【図４３】
2019067358.tif 000053
【図４４】
2019067358.tif 000054
【図４５】
2019067358.tif 000055