(57)【特許請求の範囲】
【請求項１】
時系列的に入力された２つ撮像画像間の差分を基に撮像画像中の移動体を検出する移動体検出装置において、
前記２つ撮像画像それぞれを複数のブロックに分割し、前記２つ撮像画像のうちの時系列で前の撮像画像となる前画像内の一のブロックと前記２つ撮像画像のうちの時系列で後の撮像画像となる後画像内における予め設定された探索範囲内の全てのブロックそれぞれとの差分値を順次算出する差分値算出部と、
前記差分値算出部が１つのブロックの前記差分値を算出する毎に、当該差分値がこれまで算出した差分値内で最小値であるときには当該ブロックを暫定一致箇所として更新し、前記探索範囲内の全てのブロックに対して前記差分値を算出したときには前記暫定一致箇所を前記前画像内の前記一のブロックに一致する一致箇所として検出する一致箇所検出部と、
前記探索範囲の中心のブロックの位置を始点とし前記一致箇所検出部が検出した一致箇所の位置を終点とするベクトルをオプティカルフローとして検出するオプティカルフロー検出部と、
前記差分値算出部が１つのブロックの前記差分値を算出する毎に、前記暫定一致箇所の差分値と前記差分値算出部が算出した差分値との差が予め設定されたしきい値以下であるときには当該差分値算出部が当該差分値を算出したブロックを類似箇所として特定する類似箇所特定部と、
前記類似箇所特定部が前記類似箇所を特定する毎に当該類似箇所の前記探索範囲内における分布を示す指標値を算出する指標値算出部と、
前記指標値算出部が算出した指標値を基に前記オプティカルフロー検出部が検出したオプティカルフローが移動体を示すオプティカルフローであるか否かを判定するオプティカルフロー判定部と、
を有することを特徴とする移動体検出装置。
【請求項２】
前記差分値算出部は、前記差分値を前回算出したブロックと前記差分値を今回算出するブロックとが前記探索範囲の中心に対して点対称になる順序で前記差分値を順次算出することを特徴とする請求項１に記載の移動体検出装置。
【請求項３】
前記差分値算出部は、前記探索範囲の中心に位置するブロックから前記差分値の算出を開始して順次算出する前記差分値のブロックの位置が前記探索範囲の中心を円の中心とした同心円状に広がるように前記差分値を順次算出することを特徴とする請求項１または２に記載の移動体検出装置。
【請求項４】
時系列的に入力された２つ撮像画像間の差分を基に撮像画像中の移動体を検出する移動体検出方法において、
前記２つ撮像画像それぞれを複数のブロックに分割する第１ステップと、
前記２つ撮像画像のうちの時系列で前の撮像画像となる前画像内の一のブロックと前記２つ撮像画像のうちの時系列で後の撮像画像となる後画像内における予め設定された探索範囲内の全てのブロックそれぞれとの差分値を１つのブロックずつ順次算出し、前記１つのブロックの差分値を算出する毎に、当該差分値がこれまで算出した差分値内で最小値であるときには当該ブロックを暫定一致箇所として更新するとともに前記暫定一致箇所の差分値と前記１つのブロック毎に算出した差分値との差が予め設定されたしきい値以下であるときには当該差分値が算出されるブロックを類似箇所として特定し、前記類似箇所を特定する毎に前記指標値を算出し、前記探索範囲内の全てのブロックに対して前記差分値を算出したとき前記暫定一致箇所を前記一致箇所とする第２ステップと、
前記探索範囲の中心のブロックの位置を始点とし前記第２ステップで検出した一致箇所の位置を終点とするベクトルをオプティカルフローとして検出する第３ステップと、
前記第２ステップで算出した指標値を基に前記第３ステップで検出したオプティカルフローが移動体を示すオプティカルフローであるか否かを判定する第４ステップと、
を有することを特徴とする移動体検出方法。
【請求項５】
前記第２ステップでは、前記差分値を前回算出したブロックと前記差分値を今回算出するブロックとが前記探索範囲の中心に対して点対称になる順序で前記差分値を順次算出することを特徴とする請求項４に記載の移動体検出方法。
【請求項６】
前記第２ステップでは、前記探索範囲の中心に位置するブロックから前記差分値の算出を開始して順次算出する前記差分値のブロックの位置が前記探索範囲の中心を円の中心とした同心円状に広がるように前記差分値を順次算出することを特徴とする請求項４または５に記載の移動体検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像画像から移動体を示すオプティカルフローを検出する技術に関する。
【背景技術】
【０００２】
従来より、撮像画像から移動体を示すオプティカルフローを検出する技術がある。ここで、オプティカルフローとは、視覚表現（通常、時間的に連続するデジタル画像）の中で物体の動きをベクトルで表したものである。このようなオプティカルフローの検出には、ブロックマッチング処理などが用いられる。
【０００３】
ブロックマッチング処理では、時系列的に入力された２つ撮像画像それぞれを複数のブロックに分割し、前画像内の任意の一のブロックと後画像（又は次画像）内における探索範囲内の全てのブロックそれぞれとの差分値を算出している。そして、ブロックマッチング処理では、算出した差分値を基にオプティカルフローを検出している。
【０００４】
このようなブロックマッチング処理として、ＳＡＤ（Sum of Absolute Difference（絶対差分総和））を用いたブロックマッチング処理がある（例えば特許文献１）。
【０００５】
ＳＡＤを用いたブロックマッチング処理では、前画像内の任意のブロックと後画像（又は次画像）内における探索範囲内の全てのブロックそれぞれとの差分値としてＳＡＤを算出する。そして、ＳＡＤを用いたブロックマッチング処理では、ＳＡＤが最小となるブロックを、探索範囲内の全てのブロックのうちで、前画像内の前記任意のブロックと最も形状が近い（一致度が高い）ブロックとしている。
【０００６】
そして、探索範囲の中心（探索範囲の中心の画素）を始点とし、このようなＳＡＤが最小となるブロックの中心（ブロックの中心に位置する画素）を終点とするベクトルがオプティカルフローとなる。
【０００７】
従来、このようなブロックマッチング処理を取り込んだ処理として、前述のようなブロックマッチング処理によってオプティカルフローを検出し、その後処理として、一致度判定（又は一致度の認定）、フロー長さ判定（又はフロー長さの認定）、フロー方向判定（又はフロー方向の認定）等の各種の判定処理を行い、移動体以外を示すオプティカルフローを誤検出のオプティカルフローとして取り除く処理がある。
ここで、一致度判定については、前記一致度を評価して、その評価結果を基に誤検出のオプティカルフローを取り除くというものである。
【０００８】
また、フロー長さ判定やフロー方向判定については、オプティカルフローの長さや方向が移動体の動きと相関を持つことを利用して、検出したオプティカルフローの長さや向きを評価し、その評価結果を基に誤検出のオプティカルフローを取り除くというものである。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−７６０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、移動体以外を示すオプティカルフローであっても、撮像環境に外乱が加わることによって（例えば、画像に西日が差し込むことによって）、移動体を示すオプティカルフローと類似した特性を持つ場合がある。
【００１１】
この場合、前記判定処理の判定条件（又は評価条件）を緩くすると、移動体以外を示すオプティカルフローであるにもかかわらず誤検出のオプティカルフローとして取り除くことができないオプティカルフローが増加してしまう。
【００１２】
一方、前記判定処理の判定条件を厳しくすると、カメラから遠く離れた移動体を示すオプティカルフローも誤検出のオプティカルフローとして取り除いてしまうことがある。
本発明の目的は、撮像環境に外乱が加わっても、より高い精度で移動体を示すオプティカルフローを検出できるようにすることである。
【課題を解決するための手段】
【００１３】
前記課題を解決するために、（１）本発明の一態様は、時系列的に入力された２つ撮像画像間の差分を基に撮像画像中の移動体を検出する移動体検出装置において、前記２つ撮像画像それぞれを複数のブロックに分割し、前記２つ撮像画像のうちの時系列で前の撮像画像となる前画像内の一のブロックと前記２つ撮像画像のうちの時系列で後の撮像画像となる後画像内における予め設定された探索範囲内の全てのブロックそれぞれとの差分値を順次算出する差分値算出部と、前記差分値算出部が１つのブロックの前記差分値を算出する毎に、当該差分値がこれまで算出した差分値内で最小値であるときには当該ブロックを暫定一致箇所として更新し、前記探索範囲内の全てのブロックに対して前記差分値を算出したときには前記暫定一致箇所を前記前画像内の前記一のブロックに一致する一致箇所として検出する一致箇所検出部と、前記探索範囲の中心のブロックの位置を始点とし前記一致箇所検出部が検出した一致箇所の位置を終点とするベクトルをオプティカルフローとして検出するオプティカルフロー検出部と、前記差分値算出部が１つのブロックの前記差分値を算出する毎に、前記暫定一致箇所の差分値と前記差分値算出部が算出した差分値との差が予め設定されたしきい値以下であるときには当該差分値算出部が当該差分値を算出したブロックを類似箇所として特定する類似箇所特定部と、前記類似箇所特定部が前記類似箇所を特定する毎に当該類似箇所の前記探索範囲内における分布を示す指標値を算出する指標値算出部と、前記指標値算出部が算出した指標値を基に前記オプティカルフロー検出部が検出したオプティカルフローが移動体を示すオプティカルフローであるか否かを判定するオプティカルフロー判定部と、を有することを特徴とする移動体検出装置である。
【００１５】
（２）本発明の一態様では、前記差分値算出部は、前記差分値を前回算出したブロックと前記差分値を今回算出するブロックとが前記探索範囲の中心に対して点対称になる順序で前記差分値を順次算出することが好ましい。
【００１６】
（３）本発明の一態様では、前記差分値算出部は、前記探索範囲の中心に位置するブロックから前記差分値の算出を開始して順次算出する前記差分値のブロックの位置が前記探索範囲の中心を円の中心とした同心円状に広がるように前記差分値を順次算出することが好ましい。
【００１７】
（４）本発明の一態様は、時系列的に入力された２つ撮像画像間の差分を基に撮像画像中の移動体を検出する移動体検出方法において、前記２つ撮像画像それぞれを複数のブロックに分割する第１ステップと、前記２つ撮像画像のうちの時系列で前の撮像画像となる前画像内の一のブロックと前記２つ撮像画像のうちの時系列で後の撮像画像となる後画像内における予め設定された探索範囲内の全てのブロックそれぞれとの差分値を１つのブロックずつ順次算出し、前記１つのブロックの差分値を算出する毎に、当該差分値がこれまで算出した差分値内で最小値であるときには当該ブロックを暫定一致箇所として更新するとともに前記暫定一致箇所の差分値と前記１つのブロック毎に算出した差分値との差が予め設定されたしきい値以下であるときには当該差分値が算出されるブロックを類似箇所として特定し、前記類似箇所を特定する毎に前記指標値を算出し、前記探索範囲内の全てのブロックに対して前記差分値を算出したとき前記暫定一致箇所を前記一致箇所とする第２ステップと、前記探索範囲の中心のブロックの位置を始点とし前記第２ステップで検出した一致箇所の位置を終点とするベクトルをオプティカルフローとして検出する第３ステップと、前記第２ステップで算出した指標値を基に前記第３ステップで検出したオプティカルフローが移動体を示すオプティカルフローであるか否かを判定する第４ステップと、を有することを特徴とする移動体検出方法である。
【００１９】
（５）本発明の一態様では、前記第２ステップでは、前記差分値を前回算出したブロックと前記差分値を今回算出するブロックとが前記探索範囲の中心に対して点対称になる順序で前記差分値を順次算出することが好ましい。
【００２０】
（６）本発明の一態様では、前記第２ステップでは、前記探索範囲の中心に位置するブロックから前記差分値の算出を開始して順次算出する前記差分値のブロックの位置が前記探索範囲の中心を円の中心とした同心円状に広がるように前記差分値を順次算出することが好ましい。
【発明の効果】
【００２１】
（１）及び（４）の態様の発明によれば、探索範囲内における類似箇所の分布傾向を用いて移動体を示すオプティカルフローであるか否かを判定することによって、撮像環境に外乱があっても、より高い精度で移動体を示すオプティカルフローを検出できる。よって、（１）及び（４）の態様の発明では、移動体を示すオプティカルフローの検出精度を向上させることができる。
【００２２】
また、（１）の態様の発明によれば、オプティカルフロー判定部による判定の開始前の処理として、一致箇所検出部、類似箇所特定部、及び指標値算出部が同時並列的に処理を行うことができる。これによって、（１）の態様の発明では、処理速度を上げることができる。
【００２３】
（２）及び（５）の態様の発明によれば、差分値を前回算出したブロックと差分値を今回算出するブロックとが探索範囲の中心に対して点対称になるような差分値の算出順序は、類似箇所の分布の対称性を確認する上で有効となる。この結果、（２）及び（５）の態様の発明では、移動体を示すオプティカルフローの検出精度を向上させることができる。
【００２４】
（３）及び（６）の態様の発明によれば、探索範囲の中心との距離が短くなる順序で差分値を順次算出することで、移動体を示すオプティカルフローの検出精度を向上させることができる。
【００２５】
（４）の態様の発明によれば、オプティカルフローの検出及びその判定の開始前の処理
として、一致箇所検出処理、類似箇所特定処理、及び指標値算出処理を同時並列的に行う
ことができる。これによって、（４）の態様の発明では、処理速度を上げることができる
。
【図面の簡単な説明】
【００２６】
【図１】撮像画像中の探索範囲内のＳＡＤの一例を示す図である。
【図２】撮像画像の例を示す図である。
【図３】図２に示すＡの範囲を探索範囲とした当該探索範囲内のＳＡＤを示す図である。
【図４】図２に示す画像に外乱を加えた場合のＡの探索範囲内のＳＡＤを示す図である。
【図５】図２に示すＢの範囲を探索範囲とした当該探索範囲内のＳＡＤを示す図である。
【図６】図２に示す画像に外乱を加えた場合のＢの探索範囲内のＳＡＤを示す図である。
【図７】図２に示すＣの範囲を探索範囲とした当該探索範囲内のＳＡＤを示す図である。
【図８】図２に示す画像に外乱を加えた場合のＣの探索範囲内のＳＡＤを示す図である。
【図９】第１の実施形態に係る移動体検出装置の構成例を示すブロック図である。
【図１０】画像の各探索範囲について、図１１に示す処理及び図１２に示す処理を完了したか否かを判定する処理の処理手順の一例を示すフローチャートである。
【図１１】一致箇所検出処理の処理手順の一例を示すフローチャートである。
【図１２】オプティカルフロー判定処理の処理手順の一例を示すフローチャートである。
【図１３】探索範囲内における画素の探索順序の一例を示す図である。
【図１４】探索範囲内における画素の探索順序を探索テーブルとして表した一例の図である。
【図１５】移動体を示すオプティカルフローを検出するための従来の処理手順の一例を示す図である。
【図１６】第１の実施形態における移動体検出部を適用した、移動体を示すオプティカルフローを検出するための処理の処理手順の一例を示す図である。
【図１７】第２の実施形態に係る処理の前半の処理手順を示すフローチャートである。
【図１８】第２の実施形態に係る処理の後半の処理手順を示すフローチャートである。
【図１９】第２の実施形態における移動体検出部を適用した、移動体を示すオプティカルフローを検出するための処理の処理手順の一例を示す図である。
【発明を実施するための形態】
【００２７】
本発明の実施形態を図面を参照しつつ説明する。
（オプティカルフローの検出処理）
本実施形態では、カメラの撮像画像を基に移動体を示すオプティカルフローを検出している。そして、本実施形態では、ＳＡＤ（Sum of Absolute Difference（絶対差分総和））を用いたブロックマッチング処理によってオプティカルフローを検出している。
【００２８】
具体的には、本実施形態では、ブロックマッチング処理において、動画像を撮像して時系列的に入力された２つ撮像画像それぞれを複数のブロックに分割する。そして、本実施形態では、ブロックマッチング処理において、後画像の移動体を探索したい範囲に予め設定された広さの探索範囲を設定し、前画像内の任意の一のブロックと後画像内における前記探索範囲内の全てのブロックそれぞれとの絶対差分値を求め総和することでＳＡＤを算出する。
【００２９】
ここで、前画像は、時系列的に入力された２つ撮像画像のうちの時系列で前の撮像画像である。また、後画像（又は次画像）は、時系列的に入力された２つ撮像画像のうちの時系列で後の撮像画像である。
なお、本実施形態では、このようなブロックマッチング処理においてこのようなＳＡＤを用いることに限定されないことは言うまでもない。
【００３０】
ここで、図１は、撮像画像中の探索範囲（例えば、２１×２１の画素範囲）内のＳＡＤの一例を示す図である。すなわち、各升は、探索範囲内の各画素の位置を示す。また、各升内の数字は、その画素を中心として有するブロック（例えば、９×９の画素範囲）のＳＡＤを示す。
【００３１】
探索範囲内に示すＳＡＤが最小となるブロック（すなわち、ＳＡＤが最小値を示す画素を中心に有するブロック）は、後画像の探索範囲内の全てのブロックのうち、前画像の任意の一のブロックと最も形状が近い（一致度が高い）ブロックとなる。以降、ＳＡＤが最小となる画素を一致箇所と呼ぶことにする。また、ブロックのＳＡＤを表示する当該ブロックの中心の画素をブロック中心画素とも呼ぶことにする。
【００３２】
そして、図１に示すように、本実施形態では、図１に示すように、探索範囲の中心を始点とし、一致箇所を終点とするベクトルとしたオプティカルフローを検出する。ここで、探索範囲の中心又は始点は、前画像中の探索対象の代表位置（探索対象のブロックの中心の画素位置）に相当し、一致箇所又は終点は、後画像中の探索範囲内で探索対象と最も形状が近いブロックの代表位置（当該ブロックの中心の画素位置）に相当する。
【００３３】
本実施形態では、以上のような処理によって検出されるオプティカルフローの検出精度を向上させることを目的としている。具体的には、本実施形態では、撮像環境に外乱が加わっても、移動体を示すオプティカルフローを検出する精度を向上させることを目的としている。
【００３４】
（本実施形態におけるオプティカルフローに対する処理）
本実施形態においてオプティカルフローに対して行う処理を説明する。
本実施形態では、探索範囲内で一致箇所のＳＡＤと同程度のＳＡＤを持つ画素を類似箇所の画素（以下、単に類似箇所と言う。）としている。そして、本実施形態では、探索範囲内における類似箇所の分布傾向を基に、前述のようなブロックマッチング処理によって検出したオプティカルフローについて、移動体以外を示すオプティカルフローを誤検出のオプティカルフローとして取り除いている。特に、本実施形態では、撮像環境に外乱が加わることによって移動体を示すオプティカルフローと類似した特性を持つ移動体以外を示すオプティカルフロー（以下、移動体類似特性オプティカルフローという。）を、誤検出のオプティカルフローとして取り除いている。
【００３５】
（１）類似箇所の分布傾向
先ず、撮像環境に外乱（又はノイズ）が加わることによって移動体類似特性オプティカルフローが検出される撮像画像中の箇所（すなわち、探索範囲相当）には、大きく分けて次のように２つある。
・繰り返しパターン（例えば、白線、壁面境界等）
・路面や空等
【００３６】
ここで、図２には、撮像画像の例を示す。この図２において、Ａに対応している丸で囲まれている箇所は、移動体を示す箇所となる。すなわち、Ａに対応している丸で囲まれている箇所では、移動体を示すオプティカルフローが検出される。また、Ｂに対応している丸で囲まれている箇所は、移動体類似特性オプティカルフローが検出される箇所であり、繰り返しパターンとなる白線を示す箇所となる。また、Ｃに対応している丸で囲まれている箇所は、移動体類似特性オプティカルフローが検出される箇所であり、路面を示す箇所となる。
【００３７】
図３乃至図８は、図２に示すＡ、Ｂ、及びＣの箇所を探索範囲としたＳＡＤの一例を示す。具体的には、図３は、図２中のＡの箇所を探索範囲とした当該探索範囲内のＳＡＤを示す。また、図４は、図２に示す画像に外乱を加えた場合のＡの探索範囲内のＳＡＤを示す。また、図５は、図２中のＢの箇所を探索範囲とした当該探索範囲内のＳＡＤを示す。また、図６は、図２に示す画像に外乱を加えた場合のＢの探索範囲内のＳＡＤを示す。また、図７は、図２中のＣの箇所を探索範囲とした当該探索範囲内のＳＡＤを示す。また、図８は、図２に示す画像に外乱を加えた場合のＣの探索範囲内のＳＡＤを示す。
【００３８】
ここで、図２に示す画像に外乱が加えられた状況として画像に西日が差し込んだ状況を模擬することとして、図３に示す探索範囲内の全ＳＡＤにノイズとして７００を加算して、外乱が加えられた状態の図４に示すＳＡＤを得ている。同様に、図５に示す探索範囲内の全ＳＡＤにノイズとして７００を加算して、外乱が加えられた状態の図６に示すＳＡＤを得ている。また、図７に示す探索範囲内の全ＳＡＤにノイズとして７００を加算して、外乱が加えられた状態の図８に示すＳＡＤを得ている。
【００３９】
そして、このような探索範囲内における類似箇所の分布傾向は次のようになる。ここで、例えば、一致箇所のＳＡＤ（探索範囲内で最小値のＳＡＤ）との偏差が１０００以下となる画素を類似箇所としている。
【００４０】
先ず、探索範囲が移動体になっている場合には、図３及び図４に示すように、外乱（又はノイズ）を付加する前後とも、探索範囲内において、類似箇所が、探索範囲の中心に対して一致箇所と同じ方向に位置する。すなわち、探索範囲が移動体になっている場合には、外乱（又はノイズ）を付加する前後とも、探索範囲内における類似箇所の分布に偏りがある。
【００４１】
なお、補足すると、図３では、一致箇所は、ＳＡＤが１４８６となる箇所であり、類似箇所は、グレー表示したＳＡＤが１７３７、１７１７となる箇所である。また、図４では、探索範囲内の全ＳＡＤに７００を加算しているため、一致箇所は、ＳＡＤが２１８６となる箇所であり、類似箇所は、グレー表示したＳＡＤが２４３７、２４１７となる箇所である。
【００４２】
また、探索範囲が白線になっている場合には、図５及び図６に示すように、外乱（又はノイズ）を付加する前後とも、探索範囲内において、類似箇所が、探索範囲の中心に対して点対称となるように二方向に分かれて位置する。すなわち、探索範囲が白線になっている場合には、外乱（又はノイズ）を付加する前後とも、探索範囲内における類似箇所の分布に対称性がある。
【００４３】
なお、補足すると、図５及び図６では、類似箇所は、グレー表示したように、左下から右上に斜め方向に分布し、探索範囲の中心に対して点対称となるように二方向に分かれて位置する。
【００４４】
また、探索範囲が路面になっている場合には、図７及び図８に示すように、外乱（又はノイズ）を付加する前後とも、探索範囲内において、類似箇所が、探索範囲の中心に対して全方向に位置する。すなわち、探索範囲が路面になっている場合には、外乱（又はノイズ）を付加する前後とも、探索範囲内における類似箇所の分布に対称性がある。
【００４５】
以上のようなことから、移動体と、繰り返しパターンや路面等の移動体以外のものとでは、探索範囲内における類似箇所の分布傾向が異なることがわかる。さらに、外乱の付加前後ではそのような類似箇所の分布傾向に違いがないことから、外乱が加わったとしても、類似範囲の分布傾向を基に、移動体以外のオプティカルフローを誤検出のオプティカルフローとして取り除くことができるといえる。
【００４６】
（２）類似箇所の分布の評価方法
以上のように、類似範囲の分布傾向を用いることは、移動体以外のオプティカルフローを誤検出のオプティカルフローとして取り除くのに有効であることがわかる。次に、類似範囲の分布傾向を評価するための評価方法について説明する。
【００４７】
例えば、類似箇所の分布傾向の評価については、探索範囲の中心を始点とし一致箇所を終点とするオプティカルフロー（以下、一致箇所を示すオプティカルフローという。）と、探索範囲の中心を始点とし類似箇所を終点とするオプティカルフロー（以下、類似箇所を示すオプティカルフローという。）とが、始点（すなわち、探索範囲の中心）を頂点としてなす角度を算出することによって行うことができる。
【００４８】
また、類似箇所の分布傾向の評価については、これら２つのオプティカルフロー（一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフロー）の内積を算出することによって行うことができる。
また、類似箇所の分布傾向の評価については、これら２つのオプティカルフローの内積の符号を算出することによって行うことができる。
以下にこれらの評価方法をさらに詳しく説明する。
（ａ）２つのオプティカルフローがなす角度に基づく評価方法
【００４９】
この（ａ）の評価方法では、一致箇所を示すオプティカルフローを座標ａ＝（ａ１，ａ２）（ここで、（ａ１，ａ２）は、一致箇所を示すオプティカルフローの終点の座標となる。）とし、類似箇所を示すオプティカルフローを座標ｂ＝（ｂ１，ｂ２）（ここで、（ｂ１，ｂ２）は、類似箇所を示すオプティカルフローの終点の座標となる。）として、一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとが始点（０，０）においてなす角度を下記（１）式によって算出する。
ｃｏｓθ＝ａ・ｂ／（｜ａ｜・｜ｂ｜）＝（ａ１・ｂ１＋ａ２・ｂ２）／（（ａ１２＋ｂ１２）１／２・（ａ２２＋ｂ２２）１／２）  ・・・（１）
【００５０】
そして、この評価方法では、前記（１）式によって算出したｃｏｓθを基に２つのオプティカルフローの方向を判定する。具体的には、この評価方法では、ｃｏｓθ＞ζの場合、探索範囲内において２つのオプティカルフローが同じ方向になっている、すなわち、探索範囲内において、類似箇所が一致箇所側に偏っていると判定する。また、この評価方法では、ｃｏｓθ≦ζの場合、探索範囲内において２つのオプティカルフローが異なる方向になっている、すなわち、探索範囲内において、探索範囲の中心について類似箇所が一致箇所に対して対称性をもっていると判定する。ここで、ζは、判定用しきい値である。例えば、ζは、実験的、経験的、又は理論的に予め設定された値である。
【００５１】
そして、この評価方法では、探索範囲内の全ての類似箇所について、以上のような判定を行い、探索範囲内における類似箇所の分布傾向（偏り傾向や対称性を有する傾向）を評価する。
【００５２】
（ｂ）２つのオプティカルフローの内積に基づく評価方法
この（ｂ）の評価方法では、一致箇所を示すオプティカルフローを座標ａ＝（ａ１，ａ２）とし、類似箇所を示すオプティカルフローを座標ｂ＝（ｂ１，ｂ２）として、一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとの内積を下記（２）式によって算出する。
ａ・ｂ＝ａ１・ｂ１＋ａ２・ｂ２  ・・・（２）
【００５３】
そして、この評価方法では、前記（２）式によって算出した内積を基に２つのオプティカルフローの方向を判定する。具体的には、この評価方法では、ａ１・ｂ１＋ａ２・ｂ２＜０の場合（すなわち、内積が負値の場合）、探索範囲内において２つのオプティカルフローが同じ方向になっていると判定する。また、この評価方法では、ａ１・ｂ１＋ａ２・ｂ２≧０の場合（すなわち、内積が正値の場合）、探索範囲内において２つのオプティカルフローが異なる方向になっていると判定する。
【００５４】
そして、この評価方法では、探索範囲内の全ての類似箇所について、以上のような判定を行い、正である内積値の総和と負である内積値の総和とを基に、探索範囲内における類似箇所の分布傾向を評価する。
このような内積による評価方法は、処理負荷の高い除算やルートがないため、前述の  
（ａ）の評価方法と比べて、低スペックなシステムに実装可能となる。
【００５５】
（ｃ）２つのオプティカルフローの内積の符号に基づく評価方法
この（ｃ）の評価方法では、前述の（２）式によって算出した２つのオプティカルフローの内積が正となる数と前記内積が負となる数とを基に、探索範囲内における類似箇所の分布傾向を評価する。
さらに、内積が正となる場合には、指標値にｆ１を加算、内積が負となる場合には、指標値にｆ２を加算するようにしても良い。さらに、指標値が正でかつ内積が正である場合には、指標値にｆ１を加算、指標値が正でかつ内積が負である場合には、指標値にｆ２を加算、指標値が負でかつ内積が正である場合には、指標値にｇ１を加算、指標値が負でかつ内積が負である場合には、指標値にｇ２を加算するようにしても良い。
【００５６】
（本実施形態における具体的な構成）
次に、本実施形態における前述の処理を実現している具体的な構成を説明する。
（第１の実施形態）
先ず、第１の実施形態を説明する。
図９は、第１の実施形態に係る移動体検出装置１の構成例を示すブロック図である。
図９に示すように、移動体検出装置１は、カメラ２、表示装置３、及び移動体検出部１０を有している。
【００５７】
カメラ２は、車両に搭載されたカメラである。カメラ２は、時系列データとして撮像画像を移動体検出部１０に出力する。また、表示装置３は、種々の情報を表示する。本実施形態では、表示装置３は、例えば、移動体検出部１０によって抽出（又は判定）された撮像画像上の移動体の位置に枠を合成し、移動体を枠で囲って移動体を強調した画像表示を行う。
【００５８】
移動体検出部１０は、例えば、ＥＣＵ（Electronic Control Unit）であって、マイクロコンピュータ及びその周辺回路を備えるコントローラにおいて構成されている。例えば、移動体検出部１０は、ＣＰＵ、ＲＯＭ、ＲＡＭ等によって構成されている。そして、ＲＯＭには、各種処理を実現する１又は２以上のプログラムが格納されている。ＣＰＵは、ＲＯＭに格納されている１又は２以上のプログラムに従って各種処理を実行する。
【００５９】
この移動体検出部１０は、オプティカルフローの検出処理等の移動体検出に係る各種の処理を行う。そのため、図９に示すように、移動体検出部１０は、差分値算出部１１、一致箇所検出部１２、オプティカルフロー検出部１３、類似箇所特定部１４、指標値算出部１５、及びオプティカルフロー抽出部１６を有している。
図１０乃至図１２は、図９に示す構成を有する移動体検出部１０による処理手順の一例を示すフローチャートである。
【００６０】
ここで、図１０は、画像内において移動体を検出しようとする各探索範囲について、図１１に示す処理及び図１２に示す処理を完了したか否かを判定する処理の処理手順の一例を示すフローチャートである。そして、図１１は、一致箇所を示すオプティカルフローを検出するための処理（以下、一致箇所検出処理という。）の処理手順の一例を示すフローチャートである。また、図１２は、一致箇所を示すオプティカルフローが移動体を示すオプティカルフローか、移動体以外のオプティカルフローか否かを判定する処理（以下、オプティカルフロー判定処理という。）の処理手順の一例を示すフローチャートである。この図１０乃至図１２の処理手順を説明しつつ、図９に示す移動体検出部１０の各部の処理をあわせて詳しく説明する。
【００６１】
先ず、図１０に示す処理の処理手順について説明する。  
図１０に示すように、先ずステップＳ１では、移動体検出部１０は、一致箇所検出処理（図１１の処理）を実行する。
次に、ステップＳ２では、移動体検出部１０は、オプティカルフロー判定処理（図１２の処理）を実行する。
【００６２】
次に、ステップＳ３では、移動体検出部１０は、前記ステップＳ１の一致箇所検出処理及び前記ステップＳ２のオプティカルフロー判定処理を全ての探索範囲について完了したか否かを判定する。移動体検出部１０は、前記ステップＳ１の一致箇所検出処理及び前記ステップＳ２のオプティカルフロー判定処理を全ての探索範囲について完了したと判定すると、当該図１０に示す処理を終了する。また、移動体検出部１０は、前記ステップＳ１の一致箇所検出処理及び前記ステップＳ２のオプティカルフロー判定処理を全ての探索範囲について完了していないと判定すると、ステップＳ４に進む。
【００６３】
ステップＳ４では、移動体検出部１０は、次に一致箇所検出処理及びオプティカルフロー判定処理を行うべき探索範囲を設定する。そして、移動体検出部１０は、前記ステップＳ１から再び処理を行う。
次に、図１１に示す一致箇所検出処理の処理手順について説明する。  
【００６４】
図１１に示すように、先ずステップＳ１１では、差分値算出部１１は、探索範囲（前記図１０で順次設定されている探索範囲）内における暫定一致箇所の座標（ａ１，ａ２）に座標（０，０）を設定する。すなわち、差分値算出部１１は、暫定一致箇所を示すオプティカルフローの情報となる座標（０，０）を座標（ａ１，ａ２）に設定する。
【００６５】
ここで、以降の処理では、各ブロックのＳＡＤを算出しつつ一致箇所を探索することが実現されるが、暫定一致箇所は、その一致箇所の探索の過程で算出されるＳＡＤが最小値となるブロックのブロック中心画素の位置である。また、座標（０，０）は、探索範囲の中心の座標である。このようなことから、ステップＳ１１では、差分値算出部１１は、先ず、暫定一致箇所の座標を探索範囲の中心の座標で初期化していることになる。
【００６６】
次に、ステップＳ１２では、差分値算出部１１は、前記ステップＳ１１で設定した座標（ａ１，ａ２）（＝（０，０））のＳＡＤを算出する。すなわち、差分値算出部１１は、座標（ａ１，ａ２）の画素を中心に有するブロックのＳＡＤを算出する。ここでは、ＳＡＤの演算方法は、従来と同様であるため、その説明を省略する。以下の説明でも、同様に省略する。
【００６７】
次に、ステップＳ１３では、差分値算出部１１は、前記ステップＳ１２で算出したＳＡＤを、座標（ａ１，ａ２）、すなわち座標（０，０）に対応するバッファに保存する。すなわち、差分値算出部１１は、前記ステップＳ１２で算出したＳＡＤを、当該ＳＡＤを算出したブロックのブロック中心画素の座標（０，０）に対応するバッファに保存する。
【００６８】
次に、ステップＳ１４では、差分値算出部１１は、前記ステップＳ１２で算出したＳＡＤを値Ａに設定する。具体的には、差分値算出部１１は、値Ａを格納するためのバッファに、前記ステップＳ１２で算出したＳＡＤを保存する。ここで、値Ａは、探索範囲内における暫定一致箇所のＳＡＤが設定される値（以下、暫定一致箇所ＳＡＤ値という。）である。
このステップＳ１４の処理によって、差分値算出部１１は、先ず暫定一致箇所のＳＡＤに探索範囲の中心のＳＡＤを設定する初期化を行っている。
【００６９】
次に、ステップＳ１５では、差分値算出部１１は、探索中の画素の座標を示す座標（ｂ１，ｂ２）に次に探索する画素の座標を設定する（（ｂ１，ｂ２）＝次画素の座標）。具体的には、差分値算出部１１は、座標（ｂ１，ｂ２）を格納するためのバッファに、次に探索する画素の座標を保存する。ここで、画素の探索順序は予め設定されている。
【００７０】
図１３は、探索範囲内における画素の探索順序の一例を示す図である。図１３において、各升は、探索範囲の各画素の位置を示す。そして、各升内の数値は、当該升の画素を探索する順序を示す。なお、図１３において、１００以上の探索順序は、「＃＃」として省略されている。
【００７１】
また、図１４は、探索範囲内における画素の探索順序を探索テーブルとして表した一例の図である。図１４における探索テーブルのテーブルＮｏの欄の値は、図１３における各升内の数値に相当する。すなわち、探索テーブルのテーブルＮｏ＝０は、探索範囲の中心に相当する。また、図１４における探索テーブルのＸ移動量は、Ｘ座標方向の移動量を示し、Ｙ移動量は、Ｙ座標方向の移動量を示す。ここで、Ｘ座標は、図１３では、右側が正の領域になり、左側が負の領域になる。また、Ｙ座標は、図１３では、下側が正の領域になり、上側が負の領域になる。このような探索テーブルを用いることで、差分値算出部１１は、探索範囲の中心を基点として、Ｘ移動量及びＹ移動量に応じて画素を探索する。
【００７２】
また、図１３における升内に示す数値又は図１４の探索テーブルに示す数値によれば、探索範囲内での画素の探索順序は、探索範囲の中心に位置する画素から探索を開始して、探索済みの画素が探索範囲の中心を円の中心とした同心円状に位置するような順序になる。このようなことから、探索順序が１〜４の画素については、探索範囲の中心からの距離が１となる。また、探索順序が５〜８の画素については、探索範囲の中心からの距離が２１／２となる。また、探索順序が９の画素については、探索範囲の中心からの距離が２となる。すなわち、探索順序が早いほど（すなわち、図１４の探索テーブルではテーブルＮｏが小さいほど）、探索する画素と探索範囲の中心との距離は短くなる。
【００７３】
次に、ステップＳ１６では、差分値算出部１１は、前記ステップＳ１５で設定した探索中の画素の座標（ｂ１，ｂ２）のＳＡＤを算出する。すなわち、差分値算出部１１は、座標（ｂ１，ｂ２）の画素を中心に有するブロックのＳＡＤを算出する。
【００７４】
次に、ステップＳ１７では、差分値算出部１１は、前記ステップＳ１６で算出したＳＡＤを、座標（ｂ１，ｂ２）、すなわち、探索中の画素の座標に対応するバッファに保存する。
次に、ステップＳ１８では、差分値算出部１１は、前記ステップＳ１６で算出したＳＡＤを値Ｂに設定する。具体的には、差分値算出部１１は、値Ｂを格納するためのバッファに、前記ステップＳ１６で算出したＳＡＤを保存する。ここで、値Ｂは、探索中の画素のＳＡＤが設定される値（以下、探索中画素ＳＡＤ値という。）である。
【００７５】
次に、ステップＳ１９では、一致箇所検出部１２は、前記ステップＳ１８で設定した探索中画素ＳＡＤ値Ｂ（すなわち、探索中の画素のＳＡＤ）が前記ステップＳ１４で設定した暫定一致箇所ＳＡＤ値Ａ（すなわち、暫定一致箇所のＳＡＤ）よりも小さいか否かを判定する。一致箇所検出部１２は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａよりも小さいと判定すると（Ｂ＜Ａ）、ステップＳ２０に進む。また、一致箇所検出部１２は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａ以上であると判定すると（Ｂ≧Ａ）、ステップＳ２１に進む。
【００７６】
ステップＳ２０では、一致箇所検出部１２は、座標（ａ１，ａ２）に探索中の画素の座標（ｂ１，ｂ２）を設定する（（ａ１，ａ２）＝（ｂ１，ｂ２））。具体的には、一致箇所検出部１２は、座標（ａ１，ａ２）を格納するためのバッファに、探索中の画素の座標（ｂ１，ｂ２）を保存する。
【００７７】
さらに、ステップＳ２０では、一致箇所検出部１２は、暫定一致箇所ＳＡＤ値Ａに探索中画素ＳＡＤ値Ｂを設定する（Ａ＝Ｂ）。具体的には、一致箇所検出部１２は、暫定一致箇所ＳＡＤ値Ａを格納するバッファに、探索中画素ＳＡＤ値Ｂを保存する。
このステップＳ２０によって、一致箇所検出部１２は、暫定一致箇所及びそのＳＡＤの値である暫定一致箇所ＳＡＤ値Ａを、探索中画素ＳＡＤ値Ｂが得られた画素の座標及び当該探索中画素ＳＡＤ値Ｂで更新する。
【００７８】
次に、ステップＳ２１では、一致箇所検出部１２は、探索範囲内の全画素に対して処理を完了したか否かを判定する。一致箇所検出部１２は、探索範囲内の全画素に対して処理を完了したと判定すると、ステップＳ２２に進む。また、一致箇所検出部１２は、探索範囲内の全画素に対して処理を完了していないと判定すると、前記ステップＳ１５から再び処理を行う。
【００７９】
ステップＳ２２では、一致箇所検出部１２は、探索範囲内の全画素に対して処理を完了した時点で座標（ａ１，ａ２）に設定されている座標を一致箇所の座標として保存する。具体的には、一致箇所検出部１２は、座標（ａ１，ａ２）に設定されている座標を一致箇所の座標を格納するためのバッファに保存する。ここで、一致箇所の座標は、一致箇所を示すオプティカルフローとなる。よって、一致箇所を示すオプティカルフローは、探索範囲の中心座標を始点とし、探索範囲内の全画素に対して処理を完了した時点で座標（ａ１，ａ２）に設定されている座標を終点とするベクトル相当である。
次に、図１２に示すオプティカルフロー検出処理について説明する。
【００８０】
図１２に示すように、先ずステップＳ３１では、移動体検出部１０（例えば、類似箇所特定部１４）は、第１加算値Ｘ１及び第２加算値Ｘ２を０に初期化する（Ｘ１＝０、Ｘ２＝０）。具体的には、移動体検出部１０は、第１加算値Ｘ１及び第２加算値Ｘ２それぞれに格納するためのバッファに０を保存する。ここで、各加算値Ｘ１、Ｘ２は、それぞれ一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとの内積総和を示す値である。
【００８１】
次に、ステップＳ３２では、類似箇所特定部１４は、図１１に示す一致箇所検出処理によって取得した一致箇所の座標（前記ステップＳ２２で保存した座標、すなわち、一箇所を示すオプティカルフロー）を座標（ａ１，ａ２）に設定する（（ａ１，ａ２）＝一致箇所の座標）。具体的には、類似箇所特定部１４は、探索範囲内における一致箇所の座標（ａ１，ａ２）を格納するためのバッファに、一致箇所検出処理によって取得した一致箇所の座標を保存する。
【００８２】
さらに、ステップＳ３２では、類似箇所特定部１４は、図１１に示す一致箇所検出処理によって取得した一致箇所の座標のＳＡＤを値Ａ１に設定する（Ａ１＝一致箇所のＳＡＤ）。具体的には、一致箇所検出部１２は、値Ａ１を格納するためのバッファに、一致箇所検出処理によって取得した一致箇所の座標のＳＡＤを保存する。ここで、値Ａ１は、探索範囲内における一致箇所のＳＡＤが設定される値（以下、一致箇所ＳＡＤ値という。）である。
【００８３】
次に、ステップＳ３３では、類似箇所特定部１４は、探索中の画素の座標を示す座標（ｂ１，ａ２）に次の画素の座標を設定する（（ｂ１，ｂ２）＝次画素の座標）。具体的には、類似箇所特定部１４は、座標（ｂ１，ａ２）を格納するためのバッファに、次の画素の座標を保存する。
【００８４】
さらに、ステップＳ３３では、類似箇所特定部１４は、図１１に示す一致箇所検出処理によって取得した、次の画素に対応するＳＡＤ（次の画素に対応するバッファに記憶されているＳＡＤ）を、探索中画素ＳＡＤ値Ｂに設定する（Ｂ＝次画素のＳＡＤ）。このとき、具体的には、類似箇所特定部１４は、探索中画素ＳＡＤ値Ｂを格納するためのバッファに、次の画素のＳＡＤを保存する。
ここでいう次の画素は、画素の探索順序によって予め設定されている。例えば、その探索順序は、図１３や図１４に示すような探索順序である。
【００８５】
次に、ステップＳ３４では、類似箇所特定部１４は、探索中の画素が類似箇所であるか否かを判定する。そのために、類似箇所特定部１４は、前記ステップＳ３２で設定した一致箇所ＳＡＤ値Ａ１から前記ステップＳ３３で設定した探索中画素ＳＡＤ値Ｂを減算した値の絶対値（｜Ａ１−Ｂ｜）が類似箇所特定判定値α以下であるか否かを判定する。すなわち、類似箇所特定部１４は、一致箇所ＳＡＤ値Ａ１と探索中画素ＳＡＤ値Ｂとの偏差が類似箇所特定判定値α以下であるか否かを判定する。ここで、類似箇所特定判定値αは、一致箇所ＳＡＤ値Ａ１と探索中画素ＳＡＤ値Ｂとが同程度の値を有するか否かを判定するための値、すなわち、探索中画素ＳＡＤ値Ｂを取得した画素が類似箇所になり得るか否かを判定するための値である。例えば、類似箇所特定判定値αは、実験的、経験的、又は理論的に予め設定された値である。
例えば、図３乃至図８は、この類似箇所特定判定値αを１０００とした例となる。
【００８６】
このステップＳ３４の判定処理によって、類似箇所特定部１４は、一致箇所ＳＡＤ値Ａ１から探索中画素ＳＡＤ値Ｂを減算した値の絶対値が類似箇所特定判定値α以下であると判定すると（｜Ａ１−Ｂ｜≦α）、座標（ｂ１，ｂ２）が類似箇所になるとして、ステップＳ３５に進む。また、類似箇所特定部１４は、一致箇所ＳＡＤ値Ａ１から探索中画素ＳＡＤ値Ｂを減算した値の絶対値が類似箇所特定判定値αよりも大きいと判定すると（｜Ａ１−Ｂ｜＞α）、座標（ｂ１，ｂ２）が類似箇所にならないとして、ステップＳ３９に進む。
【００８７】
ステップＳ３５では、指標値算出部１５は、前記ステップＳ３２で設定した座標（ａ１，ａ２）と前記ステップＳ３３で設定した座標（ｂ１，ｂ２）との内積Ｘ（＝ａ１・ｂ１＋ａ２・ｂ２）を算出する。すなわち、指標値算出部１５は、一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとの方向についての関係を示す指標として内積を算出する。
【００８８】
次に、ステップＳ３６では、指標値算出部１５は、前記ステップＳ３５で算出した内積Ｘが０以上であるか否かを判定する。指標値算出部１５は、内積Ｘが０以上であると判定すると（Ｘ≧０）、すなわち、内積Ｘが正値であると判定すると、つまり、一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとが異なる方向であると判定すると、ステップＳ３７に進む。また、指標値算出部１５は、内積Ｘが０未満であると判定すると（Ｘ＜０）、すなわち、内積Ｘが負値であると判定すると、つまり、一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとが同じ方向であると判定すると、ステップＳ３８に進む。
【００８９】
ステップＳ３７では、指標値算出部１５は、第１加算値（すなわち、正値用加算値）Ｘ１に、前記ステップＳ３５で算出した内積Ｘを加算する（Ｘ１＝Ｘ１＋Ｘ）。そして、指標値算出部１５は、ステップＳ３９に進む。
【００９０】
ステップＳ３８では、指標値算出部１５は、第２加算値（すなわち、負値用加算値）Ｘ２に、前記ステップＳ３５で算出した内積Ｘを加算する（Ｘ２＝Ｘ２＋Ｘ）。そして、指標値算出部１５は、ステップＳ３９に進む。
【００９１】
ステップＳ３９では、移動体検出部１０（例えば、類似箇所特定部１４又は指標値算出部１５）は、探索範囲内の全画素に対して処理を完了したか否かを判定する。移動体検出部１０は、探索範囲内の全画素に対して処理を完了したと判定すると、ステップＳ４０に進む。また、移動体検出部１０は、探索範囲内の全画素に対して処理を完了していないと判定すると、前記ステップＳ３３から再び処理を行う。
【００９２】
ステップＳ４０では、指標値算出部１５は、探索範囲内における類似箇所の分布傾向を評価する。具体的には、指標値算出部１５は、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれているか否かを判定する（｜Ｘ２｜−β≦｜Ｘ１｜≦｜Ｘ２｜＋β）。指標値算出部１５は、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれていると判定すると、すなわち、第１加算値Ｘ１の絶対値（｜Ｘ１｜）と第２加算値Ｘ２の絶対値（｜Ｘ２｜）とが同程度の値であると判定すると、探索範囲内における類似箇所の分布傾向に対称性があるとして、ステップＳ４１に進む。また、指標値算出部１５は、そうでない場合（｜Ｘ１｜＜｜Ｘ２｜−β又は｜Ｘ１｜＞｜Ｘ２｜＋β）、探索範囲内における類似箇所の分布傾向に偏りがある（非対称である）として、ステップＳ４２に進む。
【００９３】
ここで、前記ステップＳ３４乃至前記ステップＳ３８、及び前記ステップＳ４０の処理は、前記（ｂ）２つのオプティカルフローの内積に基づく評価方法を実現している。
ステップＳ４１では、オプティカルフロー抽出部１６は、図１１に示す一致箇所検出処理によって検出した一致箇所を示すオプティカルフローが、繰り返しパターン又は路面や空等のものであると決定する。そして、オプティカルフロー抽出部１６は、当該図１２に示す処理を終了する。
【００９４】
ステップＳ４２では、オプティカルフロー抽出部１６は、図１１に示す一致箇所検出処理によって検出した一致箇所を示すオプティカルフローが、移動体のものであると決定する。そして、オプティカルフロー抽出部１６は、当該図１２に示す処理を終了する。
【００９５】
（動作、作用等）
次に、第１の実施形態における移動体検出部１０の動作、その作用等の一例を説明する。
先ず、移動体検出部１０は、一致箇所検出処理として次のような処理を行う。
移動体検出部１０は、現在の探索範囲内における暫定一致箇所の座標（ａ１，ａ２）に座標（０，０）を設定するとともに、その座標（ａ１，ａ２）のＳＡＤを算出する（前記ステップＳ１１、前記ステップＳ１２）。そして、移動体検出部１０は、算出したＳＡＤを座標（ａ１，ａ２）に対応するバッファに保存するとともに暫定一致箇所ＳＡＤ値Ａに設定する（前記ステップＳ１３、前記ステップＳ１４）。
【００９６】
また、移動体検出部１０は、前記図１３や図１４に示す例の探索順序に従って読み出した画素の座標を座標（ｂ１，ｂ２）に設定するとともに、その座標（ｂ１，ｂ２）のＳＡＤを算出する（前記ステップＳ１５、前記ステップＳ１６）。そして、移動体検出部１０は、後で行うオプティカルフロー検出処理で類似箇所の特定にＳＡＤを用いるため、その算出したＳＡＤを、座標（ｂ１，ｂ２）に対応するバッファに保存する（前記ステップＳ１７）。さらに、移動体検出部１０は、そのＳＡＤを探索中画素ＳＡＤ値Ｂに設定する（前記ステップＳ１８）。
【００９７】
そして、移動体検出部１０は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａよりも小さい場合に、暫定一致箇所及びそのＳＡＤの値を、探索中画素ＳＡＤ値Ｂが得られた座標及び当該探索中画素ＳＡＤ値Ｂで更新する（前記ステップＳ１９、前記ステップＳ２０）。
【００９８】
それから、移動体検出部１０は、探索範囲内の全画素に対して前述のような処理を実施し、その処理が完了すると、座標（ａ１，ａ２）に最終的に設定されている座標を、一致箇所の座標を格納するためのバッファに保存する（前記ステップＳ２１、前記ステップＳ２２）。
そして、移動体検出部１０は、以上のような一致箇所検出処理の後に、オプティカルフロー判定処理として、次のような処理を行う。
移動体検出部１０は、第１加算値Ｘ１及び第２加算値Ｘ２を０に初期化する（前記ステップＳ３１）。
【００９９】
それから、移動体検出部１０は、先の一致箇所検出処理によって取得した一致箇所の座標を座標（ａ１，ａ２）に設定するとともに、先の一致箇所検出処理によって取得した当該一致箇所の座標のＳＡＤを一致箇所ＳＡＤ値Ａ１に設定する（前記ステップＳ３２）。また、移動体検出部１０は、探索する画素の座標を座標（ｂ１，ａ２）に設定するとともに、当該探索する画素の座標に対応するＳＡＤを探索中画素ＳＡＤ値Ｂに設定する（前記ステップＳ３３）。
【０１００】
そして、移動体検出部１０は、一致箇所ＳＡＤ値Ａ１から探索中画素ＳＡＤ値Ｂを減算した値の絶対値（｜Ａ１−Ｂ｜）が類似箇所特定判定値α以下である場合に、座標（ａ１，ａ２）と座標（ｂ１，ｂ２）との内積Ｘ（＝ａ１・ｂ１＋ａ２・ｂ２）を算出するとともに、内積Ｘが０以上であるか否かを判定する（前記ステップＳ３４乃至ステップＳ３６）。この判定の結果、移動体検出部１０は、内積Ｘが０以上である場合、当該内積Ｘを第１加算値Ｘ１に加算し、移動体検出部１０は、内積Ｘが０未満である場合、当該内積を第２加算値に加算する（前記ステップＳ３６乃至前記ステップＳ３８）。
【０１０１】
それから、移動体検出部１０は、探索範囲内の全画素に対して前述のような処理を実施し、その処理が完了した場合、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれているか否かを判定する（前記ステップＳ３９、前記ステップＳ４０）。この判定の結果、移動体検出部１０は、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれている場合には、一致箇所を示すオプティカルフローが繰り返しパターン又は路面や空等のものであるとの決定を行う（前記ステップＳ４０、前記ステップＳ４１）。また、移動体検出部１０は、そうでない場合には、一致箇所を示すオプティカルフローが移動体のものであるとの決定を行う（前記ステップＳ４０、前記ステップＳ４２）。
そして、移動体検出部１０は、以上のような処理を全ての探索範囲について実施する（図１０）。
【０１０２】
（第１の実施形態における効果）
前述のように、探索範囲内での画素の探索順序は、探索範囲の中心に位置する画素から探索を開始して、探索済みの画素が探索範囲の中心を円の中心とした同心円状に位置するような順序になっている。よって、本実施形態では、探索範囲の中心からの距離が短い画素順に探索することになる。これによって、本実施形態では、移動体を示すオプティカルフローの検出精度を向上させることができる。
【０１０３】
また、本実施形態では、従来の一致度判定処理の判定条件を緩くし、又は一致度判定処理自体を省略することができる。この点について、図１５及び図１６を参照しつつ以下に説明する。
【０１０４】
図１５は、移動体を示すオプティカルフローを検出するための従来の処理手順の一例を示す図である。図１５において、点線内は、ブロックマッチング処理に基づくオプティカルフローの検出処理を示す。
【０１０５】
図１５に示すように、従来の処理では、ブロックマッチング処理によって画像中の全ての探索範囲においてオプティカルフローを検出する。その後、従来の処理では、後処理として、一致度判定（又は一致度の評価）、フロー長さ判定（又はフロー長さの評価）、フロー方向判定（又はフロー方向の評価）等の種々の判定を行い、移動体以外を示すオプティカルフローを誤検出のオプティカルフローとして取り除いている。
【０１０６】
しかし、移動体以外を示すオプティカルフローが、撮像環境に外乱が加わることによって（例えば、画像に西日が差し込むことによって）、移動体を示すオプティカルフローと類似した特性を持つ場合がある。
【０１０７】
この場合に、判定条件（又は評価条件）を緩くすると、移動体以外を示すオプティカルフローであるにもかかわらず、誤検出のオプティカルフローとして取り除くことができないオプティカルフローが増加してしまう。その一方で、判定条件を厳しくすると、カメラ（すなわち、自車両）から遠く離れた移動体を示すオプティカルフローも誤検出のオプティカルフローとして取り除いてしまうことがある。
【０１０８】
例えば、外乱が加わると、そのランダム特性から、移動体以外を示すオプティカルフローが、移動体を示すオプティカルフローと見分けがつかない長さや方向をもつ場合がある。このような場合、フロー長さ判定やフロー方向判定では、移動体以外のオプティカルフローを誤検出のオプティカルフローを取り除くことができない。
【０１０９】
しかし、そのために、残る判定処理である一致度判定の判定条件を厳しくすると、カメラから遠く離れた移動体を示すオプティカルフローも誤検出のオプティカルフローとして取り除いてしまうことがある。他方、一致度判定の判定条件を緩くすると、移動体以外を示すオプティカルフローであるにもかかわらず、誤検出のオプティカルフローとして取り除くことができないオプティカルフローが増加してしまう。
【０１１０】
一方、図１６は、第１の実施形態における移動体検出部１０を適用した、移動体を示すオプティカルフローを検出するための処理の処理手順の一例を示す図である。図１６において、一点鎖線内は、第１の実施形態における移動体検出部１０によって実現される処理を示す。
【０１１１】
前述のように、第１の実施形態において、移動体検出部１０は、撮像環境に外乱が加わる場合でも、移動体を示すオプティカルフローを適切に検出することができる。よって、図１６に示すように、このような移動体検出部１０を適用した処理では、撮像環境に外乱が加わる場合にフロー長さ判定やフロー方向判定で移動体以外のオプティカルフローを誤検出のオプティカルフローを取り除くことができなくなること等を考慮して一致度判定の判定条件を厳しくするような対処を講ずる必要はない。この結果、移動体検出部１０を適用した処理では、一致判定の判定条件を緩くしたり、さらには一致判定をなくしたりすることができるようになる。
【０１１２】
また、本実施形態に係る処理では、以上のように一致度判定の判定条件を厳しくすることを要しないため、カメラから遠く離れた移動体を示すオプティカルフローを誤検出のオプティカルフローとして取り除いてしまうようなことも防止できる。すなわち、本実施形態に係る処理では、移動体を示すオプティカルフローを検出できる遠方距離の限界（すなわち、検出限界距離）を延長できる。
【０１１３】
（第２の実施形態）
次に、第２の実施形態を説明する。
前述の第１の実施形態では、一致箇所検出処理（前記ステップＳ１の処理又は前記図１１に示す処理）を行った後、その一致箇所検出処理の処理結果を用いて、オプティカルフロー判定処理（前記ステップＳ２の処理又は前記図１２に示す処理）を行っている。これに対して、第２の実施形態では、いわば、一致箇所検出処理とオプティカルフロー判定処理とを同時進行で行っている。
【０１１４】
図１７及び図１８は、その処理手順の一例を示すフローチャートである。ここで、図１７は、前半の処理を示す図である。また、図１８は、後半の処理を示す図である。
図１７に示すように、先ずステップＳ６１では、差分値算出部１１は、前記ステップＳ１１と同様に、探索範囲内における暫定一致箇所の座標（ａ１，ａ２）に座標（０，０）を設定する。
【０１１５】
次に、ステップＳ６２では、差分値算出部１１は、前記ステップＳ１２と同様に、前記ステップＳ６１で設定した座標（ａ１，ａ２）（＝（０，０））のＳＡＤを算出する。
次に、ステップＳ６３では、差分値算出部１１は、前記ステップＳ１４と同様に、前記ステップＳ６２で算出したＳＡＤを暫定一致箇所ＳＡＤ値Ａに設定する。
【０１１６】
次に、ステップＳ６４では、移動体検出部１０（例えば、差分値算出部１１）は、第１加算値Ｘ１及び第２加算値Ｘ２それぞれを０に初期化する（Ｘ１＝０、Ｘ２＝０）。ここで、各加算値Ｘ１、Ｘ２は、前述のように、一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとの内積総和を示す値である。
【０１１７】
次に、ステップＳ６５では、移動体検出部１０は、前記ステップＳ１５と同様に、探索中の画素の座標を示す座標（ｂ１，ｂ２）に次に探索する画素の座標を設定する。ここで、画素の探索順序は、図１３や図１４の一例のように予め設定されている。
【０１１８】
次に、ステップＳ６６では、差分値算出部１１は、前記ステップＳ１６と同様に、前記ステップＳ６６で設定した探索中の画素の座標（ｂ１，ｂ２）のＳＡＤを算出する。
次に、ステップＳ６７では、差分値算出部１１は、前記ステップＳ１８と同様に、前記ステップＳ６６で算出したＳＡＤを探索中画素ＳＡＤ値Ｂに設定する。
【０１１９】
次に、ステップＳ６８では、移動体検出部１０（例えば、一致箇所検出部１２）は、前記ステップＳ１９と同様に、前記ステップＳ６７で設定した探索中画素ＳＡＤ値Ｂ（すなわち、探索中の画素のＳＡＤ）が、前記ステップＳ６３又は後述のステップＳ７１で設定した暫定一致箇所ＳＡＤ値Ａ（すなわち、暫定一致箇所のＳＡＤ）よりも小さいか否かを判定する。すなわち、移動体検出部１０は、探索中の画素の座標が暫定一致箇所であるか否かを判定する。移動体検出部１０は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａよりも小さいと判定すると（Ｂ＜Ａ）、ステップＳ６９に進む。また、移動体検出部１０は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａ以上であると判定すると（Ｂ≧Ａ）、ステップＳ７３に進む。
【０１２０】
ステップＳ６９では、移動体検出部１０は、前記ステップＳ６７で設定した探索中画素ＳＡＤ値Ｂが、前記ステップＳ６３又は後述のステップＳ７１で設定した暫定一致箇所ＳＡＤ値Ａから初期化判定値γを減算した値以下であるか否かを判定する。ここで、初期化判定値γは、第１加算値Ｘ１及び第２加算値Ｘ２を初期化するか否かを判定するための値である。初期化判定値γは、例えば、実験的、経験的、又は理論的に予め設定された値である。移動体検出部１０は、探索中画素ＳＡＤ値Ｂが、暫定一致箇所ＳＡＤ値Ａから初期化判定値γを減算した値以下であると判定すると（Ｂ≦Ａ−γ）、これまで算出した各加算値Ｘ１、Ｘ２の誤差が大きいと推定し、ステップＳ７０に進む。また、探索中画素ＳＡＤ値Ｂが、暫定一致箇所ＳＡＤ値Ａから初期化判定値γを減算した値よりも大きいと判定すると（Ｂ＞Ａ−γ）、ステップＳ７１に進む。
【０１２１】
ステップＳ７０では、移動体検出部１０は、これまで算出した第１加算値Ｘ１及び第２加算値Ｘ２をともに０に初期化する（Ｘ１＝０、Ｘ２＝０）。そして、移動体検出部１０は、ステップＳ７１に進む。
【０１２２】
ステップＳ７１では、移動体検出部１０は、暫定一致箇所の座標（ａ１，ａ２）と探索中の画素の座標（ｂ１，ｂ２）とを入れ替える。さらに、移動体検出部１０は、暫定一致箇所のＳＡＤとなる暫定一致箇所ＳＡＤ値Ａと探索中の画素のＳＡＤとなる探索中画素ＳＡＤ値Ｂとを入れ替える。そして、移動体検出部１０は、ステップＳ７２に進む。
【０１２３】
このような入れ替え処理は、暫定一致箇所の座標及び暫定一致箇所のＳＡＤを、探索中の画素の座標及び探索中の画素のＳＡＤで更新する処理を実現している。さらには、この入れ替え処理は、これまでの暫定一致箇所が類似箇所であるか否かを判定するための前処理を実現しており、そのために、座標（ｂ１，ｂ２）にこれまでの暫定一致箇所の座標（ａ１，ａ２）を設定し、探索中画素ＳＡＤ値Ｂにこれまでの暫定一致箇所のＳＡＤ（暫定一致箇所ＳＡＤ値Ａ）を設定している。
【０１２４】
ステップＳ７２では、移動体検出部１０は、探索中の画素のＳＡＤ（探索中画素ＳＡＤ値Ｂ）が、暫定一致箇所のＳＡＤ（暫定一致箇所ＳＡＤ値Ａ）よりも小さい場合の処理として、フラグＳをクリアする（Ｓ＝０）。そして、移動体検出部１０は、ステップＳ７４に進む。
【０１２５】
また、ステップＳ７３では、移動体検出部１０は、探索中の画素のＳＡＤ（探索中画素ＳＡＤ値Ｂ）が、暫定一致箇所のＳＡＤ（暫定一致箇所ＳＡＤ値Ａ）以上である場合の処理として、フラグＳをセットする（Ｓ＝１）。そして、移動体検出部１０は、ステップＳ７４に進む。
【０１２６】
次に、図１８に示すステップＳ７４では、類似箇所特定部１４は、前記ステップＳ３４と同様に、探索中の画素の座標が類似箇所であるか否かを判定する。そのために、類似箇所特定部１４は、暫定一致箇所ＳＡＤ値Ａから探索中画素ＳＡＤ値Ｂを減算した値の絶対値（｜Ａ−Ｂ｜）が類似箇所特定判定値α以下であるか否かを判定する。
【０１２７】
ここでいう暫定一致箇所ＳＡＤ値Ａは、前記ステップＳ６３で設定された暫定一致箇所ＳＡＤ値Ａ又は前記ステップＳ７１の入れ替え処理によって得られた暫定一致箇所ＳＡＤ値Ａである。また、ここでいう探索中画素ＳＡＤ値Ｂは、前記ステップＳ６７で設定された探索中画素ＳＡＤ値Ｂ又は前記ステップＳ７１の入れ替え処理によって得られた探索中画素ＳＡＤ値Ｂである。
【０１２８】
このステップＳ７４の判定処理によって、類似箇所特定部１４は、暫定一致箇所ＳＡＤ値Ａから探索中画素ＳＡＤ値Ｂを減算した値の絶対値が類似箇所特定判定値α以下であると判定すると（｜Ａ−Ｂ｜≦α）、座標（ｂ１，ｂ２）が類似箇所になり得るとして、ステップＳ７５に進む。また、類似箇所特定部１４は、暫定一致箇所ＳＡＤ値Ａから探索中画素ＳＡＤ値Ｂを減算した値の絶対値が類似箇所特定判定値αよりも大きいと判定すると（｜Ａ−Ｂ｜＞α）、座標（ｂ１，ｂ２）が類似箇所にならないとして、ステップＳ８０に進む。
【０１２９】
ステップＳ７５では、移動体検出部１０は、フラグＳが１でありかつ座標（ａ１，ａ２）が座標（０，０）以外であるか否か、又は、フラグＳが０でありかつ座標（ｂ１，ｂ２）が座標（０，０）以外であるか否かを判定する。移動体検出部１０は、フラグＳが１でありかつ座標（ａ１，ａ２）が座標（０，０）以外であると判定すると（Ｓ＝１かつ（ａ１，ａ２）！＝（０，０））、ステップＳ７６に進む。また、移動体検出部１０は、フラグＳが０でありかつ座標（ｂ１，ｂ２）が座標（０，０）以外であると判定すると（Ｓ＝０かつ（ｂ１，ｂ２）！＝（０，０））、ステップＳ７６に進む。移動体検出部１０は、これら以外であると判定すると、ステップＳ８０に進む。
【０１３０】
ここで、暫定一致箇所の座標が探索範囲の中心の座標である場合には、オプティカルフローの始点と終点とが同一座標となるため、暫定一致箇所を示すオプティカルフローを設定することはできない。同様な観点から、類似箇所の座標が探索範囲の中心の座標である場合には、オプティカルフローの始点と終点とが同一座標となるため、類似箇所を示すオプティカルフローを設定することはできない。
【０１３１】
このようなことから、フラグＳが１でありかつ座標（ａ１，ａ２）が座標（０，０）である場合（Ｓ＝１かつ（ａ１，ａ２）＝（０，０））、暫定一致箇所の座標が探索範囲の中心の座標となるため、移動体検出部１０は、後述の類似箇所の分布傾向を判定する処理（ステップＳ７６乃至ステップＳ７９）を行うことなく、ステップＳ８０に進む。同様に、フラグＳが０でありかつ座標（ｂ１，ｂ２）が座標（０，０）である場合（Ｓ＝０かつ（ｂ１，ｂ２）＝（０，０））、類似箇所の座標が探索範囲の中心の座標となるため、移動体検出部１０は、後述の類似箇所の分布傾向を判定する処理（ステップＳ７６乃至ステップＳ７９）を行うことなく、ステップＳ８０に進む。
【０１３２】
ステップＳ７６では、指標値算出部１５は、前記ステップＳ３５と同様に、座標（ａ１，ａ２）と座標（ｂ１，ｂ２）の内積Ｘ（＝ａ１・ｂ１＋ａ２・ｂ２）を算出する。すなわち、指標値算出部１５は、暫定一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとの方向についての関係を示す指標として内積を算出する。
【０１３３】
次に、ステップＳ７７では、指標値算出部１５は、前記ステップＳ３６と同様に、前記ステップＳ７６で算出した内積Ｘが０以上であるか否かを判定する。指標値算出部１５は、内積Ｘが０以上であると判定すると（Ｘ≧０）、すなわち、内積Ｘが正値であると判定すると、つまり、暫定一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとが異なる方向であると判定すると、ステップＳ７８に進む。また、指標値算出部１５は、内積Ｘが０未満であると判定すると（Ｘ＜０）、すなわち、内積Ｘが負値であると判定すると、つまり、暫定一致箇所を示すオプティカルフローと類似箇所を示すオプティカルフローとが同一方向であると判定すると、ステップＳ７９に進む。
【０１３４】
ステップＳ７８では、指標値算出部１５は、前記ステップＳ３７と同様に、前記ステップＳ７６で算出した内積を第１加算値Ｘ１に加算する（Ｘ１＝Ｘ１＋Ｘ）。そして、指標値算出部１５は、ステップＳ８０に進む。
【０１３５】
ステップＳ７９では、指標値算出部１５は、前記ステップＳ３８と同様に、前記ステップＳ７６で算出した内積を第２加算値Ｘ２に加算する（Ｘ２＝Ｘ２＋Ｘ）。そして、指標値算出部１５は、ステップＳ８０に進む。
【０１３６】
ステップＳ８０では、移動体検出部１０（例えば、類似箇所特定部１４又は指標値算出部１５）は、前記ステップＳ３９と同様に、探索範囲内の全画素に対して処理を完了したか否かを判定する。移動体検出部１０は、探索範囲内の全画素に対して処理を完了したと判定すると、ステップＳ８１に進む。また、移動体検出部１０は、探索範囲内の全画素に対して処理を完了していないと判定すると、図１７に示す前記ステップＳ６５から再び処理を行う。
【０１３７】
ステップＳ８１では、指標値算出部１５は、前記ステップＳ４０と同様に、探索範囲内における類似箇所の分布傾向を評価する。具体的には、指標値算出部１５は、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれているか否かを判定する（｜Ｘ２｜−β≦｜Ｘ１｜≦｜Ｘ２｜＋β）。指標値算出部１５は、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれていると判定すると、すなわち、第１加算値Ｘ１の絶対値（｜Ｘ１｜）と第２加算値Ｘ２の絶対値（｜Ｘ２｜）とが同程度の値であると判定すると、探索範囲内における類似箇所の分布傾向に対称性があるとして、ステップＳ８２に進む。また、指標値算出部１５は、そうでない場合（｜Ｘ１｜＜｜Ｘ２｜−β又は｜Ｘ１｜＞｜Ｘ２｜＋β）、探索範囲内における類似箇所の分布傾向に偏りがある（非対称である）として、ステップＳ８３に進む。
【０１３８】
ここで、前記ステップＳ７６乃至前記ステップＳ７９、及び前記ステップＳ８１の処理は、前記（ｂ）２つのオプティカルフローの内積に基づく評価方法を実現している。
ステップＳ８２では、オプティカルフロー抽出部１６は、一致箇所を示すオプティカルフローが繰り返しパターン又は路面や空等のものであると決定する。そして、オプティカルフロー抽出部１６は、当該図１７及び図１８に示す処理を終了する。
【０１３９】
ステップＳ８３では、オプティカルフロー抽出部１６は、一致箇所を示すオプティカルフローが移動体のものであると決定する。そして、オプティカルフロー抽出部１６は、当該図１７及び図１８に示す処理を終了する。
【０１４０】
ここで、このステップＳ８３及び前記ステップＳ８２でいう一致箇所を示すオプティカルフローは、前記ステップＳ８０及び前記ステップＳ８１に進んだとき、すなわち、探索範囲内の全画素に対して処理を完了したときに座標（ａ１，ａ２）に設定されている座標に基づくオプティカルフローである。つまり、暫定一致箇所によって逐次更新され、探索範囲内の全画素に対して処理を完了したときに最終的に得られている暫定一致箇所が一致箇所になる。
【０１４１】
（動作、作用等）
次に、第２の実施形態における移動体検出部１０の動作、その作用等を説明する。
移動体検出部１０は、現在の探索範囲内における暫定一致箇所の座標（ａ１，ａ２）に座標（０，０）を設定するとともに、その座標（ａ１，ａ２）のＳＡＤを算出する（前記ステップＳ６１、前記ステップＳ６２）。そして、移動体検出部１０は、算出したＳＡＤを暫定一致箇所ＳＡＤ値Ａに設定する（前記ステップＳ６３）。また、移動体検出部１０は、第１加算値Ｘ１及び第２加算値Ｘ２をそれぞれ０に初期化する（前記ステップＳ６４）。
【０１４２】
また、移動体検出部１０は、前記図１３や図１４に示す例の探索順序に従って読み出した画素の座標を座標（ｂ１，ｂ２）に設定するとともに、その座標（ｂ１，ｂ２）のＳＡＤを算出する（前記ステップＳ６５、前記ステップＳ６６）。そして、移動体検出部１０は、算出したＳＡＤを探索中画素ＳＡＤ値Ｂに設定する（前記ステップＳ６７）。
【０１４３】
そして、移動体検出部１０は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａよりも小さいか否かを判定し、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａよりも小さい場合にはさらに探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａから初期化判定値γを減算した値以下であるか否かを判定する（前記ステップＳ６８、前記ステップＳ６９）。
【０１４４】
このような判定の結果、移動体検出部１０は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａ以上である場合には、フラグＳを１に設定する（前記ステップＳ６８、前記ステップＳ７３）。
【０１４５】
また、移動体検出部１０は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａよりも小さく、かつ探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａから初期化判定値γを減算した値以下である場合には、これまで算出した第１加算値Ｘ１及び第２加算値Ｘ２をともに０に初期化する（前記ステップＳ６８乃至ステップＳ７０）。さらに、移動体検出部１０は、暫定一致箇所の座標（ａ１，ａ２）と探索中の画素の座標（ｂ１，ｂ２）とを入れ替えるとともに、暫定一致箇所ＳＡＤ値Ａと探索中画素ＳＡＤ値Ｂとを入れ替える（前記ステップＳ７１）。そして、移動体検出部１０は、フラグＳを０に設定する（前記ステップＳ７２）。
【０１４６】
また、移動体検出部１０は、探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａよりも小さく、かつ探索中画素ＳＡＤ値Ｂが暫定一致箇所ＳＡＤ値Ａから初期化判定値γを減算した値よりも大きい場合には、これまで算出した第１加算値Ｘ１及び第２加算値Ｘ２を初期化することなく、前記入れ替え処理を行う（前記ステップＳ６８、前記ステップＳ６９、前記ステップＳ７１）。そして、移動体検出部１０は、フラグＳを０に設定する（前記ステップＳ７２）。
【０１４７】
その後、移動体検出部１０は、暫定一致箇所ＳＡＤ値Ａから探索中画素ＳＡＤ値Ｂを減算した値の絶対値（｜Ａ−Ｂ｜）が類似箇所特定判定値α以下であり、かつフラグＳが１であり、かつ座標（ａ１，ａ２）が（０，０）以外の場合に、座標（ａ１，ａ２）と座標（ｂ１，ｂ２）との内積Ｘ（＝ａ１・ｂ１＋ａ２・ｂ２）を算出する（前記ステップＳ７４乃至前記ステップＳ７６）。又は、移動体検出部１０は、暫定一致箇所ＳＡＤ値Ａから探索中画素ＳＡＤ値Ｂを減算した値の絶対値（｜Ａ−Ｂ｜）が類似箇所特定判定値α以下であり、かつフラグＳが０であり、かつ座標（ｂ１，ｂ２）が（０，０）以外の場合に、座標（ａ１，ａ２）と座標（ｂ１，ｂ２）との内積Ｘ（＝ａ１・ｂ１＋ａ２・ｂ２）を算出する（前記ステップＳ７４乃至前記ステップＳ７６）。
【０１４８】
そして、移動体検出部１０は、内積Ｘが０以上であるか否かを判定して、内積Ｘが０以上である場合には、当該内積Ｘを第１加算値Ｘ１に加算し、内積Ｘが０未満である場合には、当該内積Ｘを第２加算値に加算する（前記ステップＳ７７乃至前記ステップＳ７９）。
【０１４９】
それから、移動体検出部１０は、探索範囲内の全画素に対して前述のような処理を実施し、その処理が完了した場合、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれているか否かを判定する（前記ステップＳ８０、前記ステップＳ８１）。この判定の結果、移動体検出部１０は、第２加算値Ｘ２の絶対値（｜Ｘ２｜）に対して分布傾向判定値βを加減算した値の範囲内に第１加算値Ｘ１の絶対値（｜Ｘ１｜）が含まれている場合には、一致箇所を示すオプティカルフローが繰り返しパターン又は路面や空等のものであると決定する（前記ステップＳ８１、前記ステップＳ８２）。また、移動体検出部１０は、そうでない場合には、一致箇所を示すオプティカルフローが移動体のものであると決定する（前記ステップＳ８１、前記ステップＳ８３）。
そして、移動体検出部１０は、以上のような処理を全ての探索範囲について実施する（図１０）。
【０１５０】
（第２の実施形態における効果）
前述のように、第２の実施形態では、一致箇所検出処理とオプティカルフロー判定処理とを同時進行で行うために、処理時間を短縮できる。
また、第２の実施形態でも、図１３や図１４に示すように、画素の探索順序は、ＳＡＤを前回算出した画素（すなわち、ＳＡＤを直前に算出した画素）とＳＡＤを今回算出する画素（すなわち、ＳＡＤを次に算出した画素）とが探索範囲の中心に対して点対称になる順序である。このような探索順序は、類似箇所の分布の対称性を確認する上で有効な順序になる。その結果、第２の実施形態では、移動体を示すオプティカルフローの検出精度を向上させることができる。
【０１５１】
例えば、類似箇所の分布の対称性を確認する上で有効であることは、次のことからわかる。
図１７及び図１８の処理では、探索が進むに連れて暫定一致箇所が更新される。しかし、探索範囲の中心について点対称となる２つの画素を探索しそれぞれにＳＡＤしても、その処理中に暫定一致箇所が更新される可能性は低い。そして、暫定一致箇所が更新されない場合には、図１７及び図１８の処理では、探索範囲の中心に対して点対称となる２つの画素を、同じ暫定一致箇所に基づいて処理することになる。したがって、図１３や図１４に示す探索順序では、探索範囲の中心に対して点対称となる２つの画素に対し同一の暫定一致箇所を用いて類似箇所を特定するための処理を行うことになるため、当該探索順序は、類似箇所の分布の対称性を確認する上で有効な順序になる。
【０１５２】
言い換えると、探索範囲の中心に対して点対称となる２つの画素を、異なる暫定一致箇所に基づいて処理してしまうと、その２つの画素が同程度のＳＡＤであっても、一方の画素は、類似箇所と判定され、もう一方の画素は、類似箇所と判定されない可能性がある。
【０１５３】
また、第２の実施形態では、探索中の画素のＳＡＤ（すなわち、探索中画素ＳＡＤ値Ｂ）がこれまでの暫定一致箇所のＳＡＤ（すなわち、暫定一致箇所ＳＡＤ値Ａ）とが大きく異なる場合には、各加算値Ｘ１、Ｘ２をそれぞれ初期化している（前記ステップＳ６９、前記ステップＳ７０）。ここで、初期化される加算値Ｘ１、Ｘ２は、探索範囲の中心に対して点対称となる領域内の画素を基に得た値である。その結果、加算値Ｘ１、Ｘ２の初期化後に処理される領域は、探索範囲において初期化の対象となった領域の外領域となるが、初期化前の領域と同様に、探索範囲の中心に対して点対称となる領域である。このようなことからも、図１３や図１４に示す探索順序は、類似箇所の分布の対称性を確認する上で有効な順序になる。
【０１５４】
ここで、例えば、ＳＡＤを前回算出した画素とＳＡＤを今回算出する画素とが探索範囲の中心に対して点対称にならない探索順序、例えば、図１３に示す探索領域の上から順序に探索していく場合を考えてみる。すなわち、１行目（最上行）を左から左方向に処理を行い、１行目の処理を完了したら、その下の２行目を左から左方向に処理するといったようにである。
【０１５５】
このような処理の下、新しい暫定一致箇所のＳＡＤとこれまでの暫定一致箇所のＳＡＤとが大きく異なることで各加算値Ｘ１、Ｘ２を初期化してしまうと、初期化後に残っている探索範囲では、探索範囲の中心に対して対称とならない可能性が高くなる。そのため、対称でない範囲を探索しても、対称であるという結果は得られない。また、対称でない範囲を探索した結果、対称であるという結果が得られたとしても、対称であると結論づけるのは理にかなっていない。
このようなことから、図１３や図１４に示す探索順序は、類似箇所の分布の対称性を確認する上で有効な順序であることがわかる。
【０１５６】
また、図１９は、第２の実施形態における移動体検出部１０を適用した、移動体を示すオプティカルフローを検出するための処理の処理手順の一例を示す図である。図１９において、点線内は、ブロックマッチング処理に基づくオプティカルフローの検出処理を示す。また、図１９において、一点鎖線内は、第２の実施形態における移動体検出部１０によって実現される処理を示す。
【０１５７】
この図１９に示すように、第２の実施形態における移動体検出部１０を適用した処理では、オプティカルフローの検出処理内でこの移動体検出部１０による処理を行っている。そして、第２の実施形態に係る処理では、一致箇所を探索する処理と、類似箇所を特定して類似箇所の分布傾向を示す指標（すなわち、内積総和）を算出する処理とを同時に行っている。これによって、第２の実施形態に係る処理は、処理時間を短縮できる。
なお、前述の実施形態の説明では、オプティカルフロー抽出部１６は、例えば、オプティカルフロー判定部を構成する。
【０１５８】
（本実施形態の変形例）
本実施形態において、前記（ｂ）２つのオプティカルフローの内積に基づく評価方法を実現する処理では、内積の正値を加算していく第１加算値Ｘ１と内積の負値を加算していく第２加算値Ｘ２とを別々に算出し、算出した第１加算値Ｘ１と第２加算値Ｘ２とを比較することで、類似箇所の分布傾向を評価している（前記ステップＳ３４乃至前記ステップＳ３８、及び前記ステップＳ４０、又は前記ステップＳ７６乃至前記ステップＳ７９、及び前記ステップＳ８１）。しかし、本実施形態では、内積を加算していく値を第１加算値Ｘ１と第２加算値とに分けずに、同一の加算値に内積を加算していくこともできる。この場合、本実施形態では、最終的に得たそのような同一の加算値と分布傾向判定値との比較結果を基に、探索範囲内における類似箇所の分布傾向を評価する。ここで、分布傾向判定値は、例えば、実験的、経験的、又は理論的に予め設定された値である。
【０１５９】
また、本実施形態では、移動体検出部１０は、前記（ｂ）２つのオプティカルフローの内積に基づく評価方法に限らず、前記（ａ）２つのオプティカルフローがなす角度に基づく評価方法や前記（ｃ）２つのオプティカルフローの内積の符号に基づく評価方法が実装されても良い。
また、本実施形態では、オプティカルフローの検出には、ＳＡＤを用いたブロックマッチング処理を行うことに限定されるものではない。
【０１６０】
また、本発明の実施形態を具体的に説明したが、本発明の範囲は、図示され記載された例示的な実施形態に限定されるものではなく、本発明が目的とするものと均等な効果をもたらすすべての実施形態をも含む。さらに、本発明の範囲は、請求項１により画される発明の特徴の組み合わせに限定されるものではなく、すべての開示されたそれぞれの特徴のうち特定の特徴のあらゆる所望する組み合わせによって画されうる。
【符号の説明】
【０１６１】
１  移動体検出装置、２  カメラ、３  表示装置、１０  移動体検出部、１１  差分値算出部、１２  一致箇所検出部、１３  オプティカルフロー検出部、１４  類似箇所特定部、１５  指標値算出部、１６  オプティカルフロー抽出部
【図１】
0005910267.tif 000002
【図７】
0005910267.tif 000003
【図８】
0005910267.tif 000004
【図９】
0005910267.tif 000005
【図１０】
0005910267.tif 000006
【図１１】
0005910267.tif 000007
【図１２】
0005910267.tif 000008
【図１３】
0005910267.tif 000009
【図１４】
0005910267.tif 000010
【図１５】
0005910267.tif 000011
【図１６】
0005910267.tif 000012
【図１７】
0005910267.tif 000013
【図１８】
0005910267.tif 000014
【図１９】
0005910267.tif 000015
【図２】
0005910267.tif 000016
【図３】
0005910267.tif 000017
【図４】
0005910267.tif 000018
【図５】
0005910267.tif 000019
【図６】
0005910267.tif 000020