(57)【特許請求の範囲】
【請求項１】
対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、
上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、
上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、
上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新することを特徴とする行動検出装置。
【請求項２】
対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、
上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、
上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、
上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持することを特徴とする行動検出装置。
【請求項３】
対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、
上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、
上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、
上記行動判定部は、上記人物の行動を判定する際の閾値を、時系列的に減衰する重みを付加した重み付き平均画像を用いて可変することを特徴とする行動検出装置。
【請求項４】
対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、
上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、
上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、
上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新し、
上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持することを特徴とする行動検出装置。
【請求項５】
対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、
上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、
上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、
上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新し、
上記行動判定部は、上記人物の行動を判定する際の閾値を、上記重み付き平均画像を用いて可変することを特徴とする行動検出装置。
【請求項６】
対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、
上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、
上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、
上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持するとともに、上記人物の行動を判定する際の閾値を、時系列的に減衰する重みを付加した重み付き平均画像を用いて可変することを特徴とする行動検出装置。
【請求項７】
対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、
上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、
上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、
上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新し、
上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持するとともに、上記人物の行動を判定する際の閾値を、上記重み付き平均画像を用いて可変することを特徴とする行動検出装置。
【請求項８】
上記動き検出部は、上記動き検出領域を複数のウィンドウに分割し、フレーム間のマッチング処理で求めた各ウィンドウ毎の動き量を統合して上記動き領域全体の動き量を検出することを特徴とする請求項１〜７の何れか一に記載の行動検出装置。
【請求項９】
上記行動判定部は、上記イベントに、動きイベントと動き無しイベントとを設定し、両者をフレームの連続性及び累積動き量によって判定することを特徴とする請求項１〜８の何れか一に記載の行動検出装置。
【請求項１０】
上記行動判定部は、一定期間内の上記累積動き量が設定値以内で推移した場合、上記イベントを上記動きなしイベントとして上記累積動き量をリセットすることを特徴とする請求項９記載の行動検出装置。
【請求項１１】
上記動き検出部は、上記動き量が設定値より小さい場合、上記マッチング処理の時間間隔を大きくすることを特徴とする請求項８記載の行動検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置に関する。
【背景技術】
【０００２】
近年、自動車等の車両においては、車室内に設置カメラによってドライバの顔周辺を撮像し、撮像した画像からドライバの視線や顔の向き方向を検出することで、右左折時や車線変更時の周囲の状況の確認動作、脇見運転や不注意等による確認ミスを検出する装置が開発されている。
【０００３】
ドライバの視線や顔の向き方向を検出する画像処理技術は、従来から各種提案されている。例えば、特許文献１には、動画像から得られるドライバの目や鼻等の特徴点の動きを、三次元モデルに当てはめて推定する技術が開示されている。また、特許文献２には、ドライバの顔の特定部位をトラッキングして円筒モデルに与えることにより、顔の向きを推定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４２２２３６９号公報
【特許文献２】特開２００８−１９７７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１や特許文献２に開示されているような特定部位の検出やトラッキングを行う技術では、眼鏡やサングラス、マスク等を装着したドライバに対して検出精度が低下し、また、車両の左折時の巻き込み確認時等にカメラ視野内に注目部位が写らない場合、検出が困難となる。
【０００６】
本発明は上記事情に鑑みてなされたもので、対象とする人物の特定部位の検出やトラッキングを行うことなく顔全体の動きを検出することで、精度良く人物の行動を検出することのできる行動検出装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明による第１の行動検出装置は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新することを特徴とする。
本発明による第２の行動検出装置は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持することを特徴とする。
本発明による第３の行動検出装置は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、上記行動判定部は、上記人物の行動を判定する際の閾値を、時系列的に減衰する重みを付加した重み付き平均画像を用いて可変することを特徴とする。
本発明による第４の行動検出装置は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新し、上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持することを特徴とする。
本発明による第５の行動検出装置は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新し、上記行動判定部は、上記人物の行動を判定する際の閾値を、上記重み付き平均画像を用いて可変することを特徴とする。
本発明による第６の行動検出装置は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持するとともに、上記人物の行動を判定する際の閾値を、時系列的に減衰する重みを付加した重み付き平均画像を用いて可変することを特徴とする。
本発明による第７の行動検出装置は、対象とする人物の顔周辺の撮像画像を処理して人物の行動を検出する行動検出装置であって、上記撮像画像上の上記人物の顔周辺に動き検出領域を設定し、この動き検出領域全体の動き量を検出する動き検出部と、上記動き量から上記人物の顔の動きに関するイベントを検出し、このイベント単位で上記動き量から上記人物の行動を判定する行動判定部とを備え、上記動き検出部は、時系列的に減衰する重みを付加した重み付き平均画像を横方向及び縦方向に投影した分布の重心に基づいて、上記動き検出領域を更新し、上記行動判定部は、上記人物の行動を複数の状態に分類して判定し、各状態の判定毎に、判定結果を評価するための画像を保持するとともに、上記人物の行動を判定する際の閾値を、上記重み付き平均画像を用いて可変することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、対象とする人物の特定部位の検出やトラッキングを行うことなく顔全体の動きを検出し、精度良く人物の行動を検出することができる。
【図面の簡単な説明】
【０００９】
【図１】行動検出装置の機能ブロック図
【図２】入力画像例を示す説明図
【図３】動き検出領域の説明図
【図４】ウィンドウの分割を示す説明図
【図５】頭部の回転とシフトを示す説明図
【図６】小さい動きへの対応を示す説明図
【図７】確認行動の各状態を示す説明図
【図８】動き量の時間経過の一例を示す説明図
【図９】判定マップの説明図
【図１０】短期記憶画像の例を示す説明図
【図１１】短期記憶画像の頻度分布を示す説明図
【図１２】短期記憶画像上のウィンドウを示す説明図
【図１３】確認行動判定結果の例を示す説明図
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。  
本発明による行動検出装置は、対象とする人物の行動を確認するものであるが、特に、自動車等の移動体を運転する際に、周囲の状況を確認すべき場面でドライバが確認行動を怠った場合や、わき見や注意力低下等により確認すべき場面を把握できていないドライバに対して、警告を発して確認行動を促すものである。ドライバの確認行動は、ドライバの顔全体の動きから検出し、目や鼻等の特定部位の検出やトラッキングを行う場合の問題、すなわち、ドライバが眼鏡、サングラス、マスク等を装着していたり、車両の左折時の巻き込み確認時にカメラ視野内に注目部位が写らない場合等に検出精度が低下することを回避する。
【００１１】
図１に示すように、本実施の形態における行動検出装置１は、自動車等の車両に搭載され、ドライバの顔及び周辺部位を撮像するカメラ２と、このカメラ２で撮像した画像を処理するコントローラ３とを基本として構成されている。カメラ２は、例えば、自動車の車室内のダッシュボード中央付近に運転席に向けて設置され、夜間でも使用可能なよう、近赤外カメラを用いて近赤外線ＬＥＤライト等による照射を併用している。
【００１２】
コントローラ３は、マイクロコンピュータを中心とする画像処理エンジンを備えて構成され、カメラ２からの画像情報と他の制御装置から入力される車両情報とに基づいて、ドライバが確認行動、例えば右左折時の前後確認や車線変更時の後方確認等を行ったか否かを判定する。具体的には、コントローラ３は、ドライバの顔画像に対して、顔周辺に設定した領域全体の動きを算出することにより、ドライバの確認行動の判定を行う。これにより、特定部位の検出を行う場合の検出精度の低下を回避し、また、特定部位を撮像するために制限されやすいカメラ設置位置を比較的自由に設定することが可能となる。
【００１３】
このようなコントローラ３の機能は、画像入力部１０、車両情報入力部１１、動き検出部１２、短期記憶画像保持部１３、確認行動判定部１４、出力部１５によって形成される。概略的には、画像入力部１０にカメラ２からの撮像画像が入力され、動き検出部１２で入力画像に設定した領域の動きを検出する。確認行動判定部１４は、動き検出部１２で検出した時系列の画像動き情報と、車内ネットワーク等を介して他の車載制御装置から車両情報入力部１１に入力される車速や操舵角等の車両情報とに基づいて、ドライバの確認行動を判定する。そして、車両情報と確認行動判定部１４の判定結果に応じて出力部１５から音声等の警告出力を行う。
【００１４】
また、短期記憶画像保持部１３には、過去の直近の所定時間内の画像（例えば、数秒〜数十秒間の画像；以下、「短期記憶画像」と記載）が時系列的に記憶され、この短期記憶画像に基づいて、動き検出時の画像領域の設定パラメータや確認行動判定の判定パラメータ等、走行中に更新すべきパラメータ情報が計算される。
【００１５】
以下、行動検出装置１の各部の機能について詳細に説明する。  
画像入力部１０は、カメラ２で撮像した画像を所定の周期でサンプリングし（例えば、６４０×４８０画素の画像を３０Ｈｚでサンプリング）、図２に示すようなドライバの顔を中心とした画像Ｇを画像メモリに保持する。以下に説明するように、入力された画像は１フレーム前の画像とマッチングされる。このため、画像入力部１０は２フレーム分の画像メモリを備えており、各画像メモリに交互に入力画像を保持することで、現時刻と１フレーム前の時刻の画像を保持する。
【００１６】
動き検出部１２は、入力画像に対してドライバの顔周辺に所定の領域（動き検出領域）を設定し、この動き検出領域のオプティカルフローを勾配法やブロックマッチング法により検出する。例えば、図２に示す入力画像例の場合、図３に示すようにドライバの顔を囲む領域Ｒを動き検出領域として設定し、この領域Ｒのオプティカルフローを検出してドライバの顔の動きを検出する。
【００１７】
本実施の形態においては、以下に説明するように、動き検出領域のオプティカルフローをブロックマッチング法により検出する。すなわち、時刻Ｔで入力された画像の設定エリアと１フレーム前に入力された時刻Ｔ−１の画像の設定エリアとをマッチング処理し、対応点のズレ量（動き量）を算出する。その際、設定エリア全体を１ブロックとしてマッチングを行うことも可能であるが、より精度を上げるため、設定エリアを複数のウィンドウに分割して各ウィンドウ毎にズレ量を求め、各ウィンドウ毎のズレ量（動き量）を統合してエリア全体の動き量とする。
【００１８】
＜動き検出領域の設定＞
本実施の形態では、特定部位の検出を行わないため、動き検領域としては、或る程度の条件が満たされれば、厳密にどの部分が領域内に入っていなければならないということはない。すなわち、画像内に設定する動き検出領域としては、ドライバの顔が領域内の大部分を占める形で設定されること、背景の影響を受け難くするために画像内の所定割合以上（例えば数１０％以上）の部分が顔領域で占められていること、マッチング処理に充分な特徴点が含まれていること等の条件が満たされていれば良い。
【００１９】
尚、ドライバの顔位置は、シートポジションによってドライバ毎に異なり、その他、走行中でも座り直し等によって移動する。そのため、後述するように、短期記憶画像を用いて、ドライバの顔位置に応じて走行中に動き検出領域を更新していく。
【００２０】
＜動き検出領域内のウィンドウ分割＞
ズレ量の計算は、基本的には、ピクセル値（一般には各画素の輝度値）の差分の絶対値の総和（SAD;Sum of Absolute Difference）によるマッチングで行う。このマッチングは、２次元探索を基本とするが、縦方向の探索と横方向の探索を別々に行うことで、１フレームでの計算量を所定時間内に収め、より計算コストを削減することができる。
【００２１】
すなわち、通常、運転中のドライバは実空間での横方向の動きは大きいが縦方向の動きは小さい。このため、画像上では、先ず横方向のみの探索を行い、次に縦方向の探索を行う。つまり、実際のズレ量を（Δｘ、Δｙ）とする場合、先ず縦方向のズレ量Δｙは０として横方向のズレ量Δｘを求め、次に、ズレ量Δｘだけ横方向にずれた位置で縦方向のズレ量Δｙを求める。
【００２２】
具体的には、例えば、図４（ａ）に示すように、先ず、横長の短冊状の複数のウィンドウＷｘに分割して横方向の探索を行い、次に、図（ｂ）に示すように、縦長の短冊状のウィンドウＷｙに分割して縦方向の探索を行うことで、結果的に、図（ｃ）に示すような格子状のウィンドウＷｄに相当する探索を行う。ウィンドウの分割の仕方は、横方向の探索時と縦方向の探索時とで異なっていても良い。但し、ウィンドウ分割を縦横で変える場合には、縦探索時、横探索時に求めたズレ量をそのまま使えないため、一旦、横方向だけで設定領域内の横方向ズレ量を統合する必要がある。
【００２３】
＜各ウィンドウのオプティカルフロー処理＞
各ウィンドウのＳＡＤを用いたマッチングでは、ウィンドウ内で輝度差が著しく大きいエッジ等がある場合、そのエッジのみの影響でマッチングをとってしまう場合がある。このため、各画素の差の絶対値は、所定の上限値で制限をかける。
【００２４】
また、オプティカルフローを得るために必要な値は、以下の（Ｐ１）に示すＳＡＤ値が最小となるズレ量であるが、その他、（Ｐ２），（Ｐ３）に示すパラメータも計算し、各ウィンドウの計算結果の統合に用いる。（Ｐ１），（Ｐ２）のパラメータは、計算結果の統合に際してサブピクセルレベルの情報を与え、（Ｐ３）のパラメータはマッチングの信頼度情報を与える。  
（Ｐ１）最小点のＳＡＤ値
（Ｐ２）最小点のずれから＋１若しくは−１ずらした場合のＳＡＤ値の小さい方のズレ量（以下、「第２ズレ量」と呼ぶ）と、そのＳＡＤ値
（Ｐ３）ＳＡＤ平均値とＳＡＤ最小値との差
【００２５】
＜各ウィンドウの計算結果統合＞
各ウィンドウでのマッチング結果を統合することにより、設定領域（動き検出領域）の動き量を算出する。動き量の算出は、各ウィンドウで得られたズレ量を投票することで多数決により決定する。
【００２６】
投票の際には、以下の（１）〜（３）に示す重み付けを行う。  
（１）短期記憶画像での特徴量の分布レベルに応じたウィンドウ間の重み付け
（２）ＳＡＤ平均値とＳＡＤ最小値との差に応じた重み付け
（３）最小点ズレ量と第２ズレ量とをＳＡＤ値に応じて重み付け（両者を投票）
【００２７】
次に、投票を行う場合、初めに、短期記憶画像から求められる各ウィンドウ内の特徴量の分布の割合に応じてウィンドウ間での投票権利を分配する。更に、各ウィンドウのマッチングの信頼度に応じて各ウィンドウの投票にゲインをかける。そして、各ウィンドウに最小ズレ量と第２ズレ量との２つを投票する。その際、最小ズレ量と第２ズレ量の投票の分配は、ＳＡＤ値により決定する。
【００２８】
ここで、本実施の形態においては、演算負荷を軽減するため、動き検出領域の縦横の動きのみを算出している。より詳細な認識を行う場合には、動き検出領域内の各ウィンドウの位置関係も考慮した動き検出とする。
【００２９】
例えば、顔画像の横方向の動きは、大きく分けて、図５に示すように、ドライバの頭部回転に起因する動きと、シフトに起因する動きに分けることができる。シフトの場合は、図５（ａ）に示すように、領域内の画像の動き方向、大きさともほぼ共通であるが、回転の場合は、図５（ｂ）に示すように、領域内の各位置での動きの大きさが異なる。この２つの動きのどちらの動きが支配的かを認識するには、各ウィンドウの領域内での位置を考慮してウィンドウの動き量のばらつきから判定し、判定結果を各ウィンドウの動き量の統合結果に反映する。
【００３０】
以上が、動き検出部１２における基本的な処理であるが、実使用上は、幾つかの精度の悪化が生じる要因があり、対策を講じることが望ましい。代表的には、ドライバの動きが小さい場合、撮像条件により画像の明るさが変化する場合が精度悪化の要因として挙げられ、以下に説明する処理によって対応する。
【００３１】
＜動きが小さい場合への対応＞
本実施の形態の行動検出装置１は、トラッキングを行わず固定の領域での動き算出を行っている。そのため、例えばドライバの動きが１フレームで１ピクセル以下（例えば、１フレームで０．３ピクセル）の場合、動きの算出は１ピクセル単位であるため動き量を０と算出してしまい、動きの検出ができないことになる。１フレーム間の動きが大きい場合は、サブピクセルレベルの誤差はあってもその影響はプラスマイナスで相殺される傾向があるが、毎フレームの動きが１ピクセル以下の小さな動きである場合には、この問題は無視できなくなる。
【００３２】
そのため、マッチングの時間間隔を変えることにより、対応を行う。具体的には、画像入力部１０の２枚の画像メモリには、入力画像が交互に保持されるが、動き量算出の結果がＮピクセル未満（例えば、Ｎ＝３）であった場合には、次に入力される画像は、最後に入力された方の画像メモリに保持する。
【００３３】
つまり、時刻Ｔ0，Ｔ1の画像でマッチングを行った結果、動き量が１（＜Ｎ）であった場合は、時刻Ｔ2の画像は、通常は時刻Ｔ0のメモリに保持されるところを時刻Ｔ1の画像が保持されているメモリに保持するように変更し、時刻Ｔ2で時刻Ｔ0とＴ2の画像による動き算出を行う。これは、小さな動きの場合には、マッチングをとる時間間隔を変えている（大きくしている）ことに相当する。
【００３４】
図６を用いて説明すると、通常の場合、図６（ａ）に示すように、画像メモリＭ１に時刻Ｔ0の画像Ｇ0が保持されているとき、時刻Ｔ1で画像Ｇ1が画像メモリＭ２に保持され、次の時刻Ｔ2では、画像メモリＭ２に時刻Ｔ1の画像Ｇ1が保持された状態で、画像メモリＭ１に時刻Ｔ2の画像Ｇ2が保持される。同様に、時刻Ｔ3では、画像メモリＭ１に時刻Ｔ2の画像Ｇ2が保持された状態で、画像メモリＭ２に時刻Ｔ3の画像Ｇ3が保持され、時刻Ｔ4では、画像メモリＭ２に時刻Ｔ3の画像Ｇ3が保持された状態で、画像メモリＭ１に時刻Ｔ4の画像Ｇ4が保持される。
【００３５】
これに対して、時刻Ｔ0→Ｔ1間の動き小さかった場合には、図６（ｂ）に示すように、時刻Ｔ2において、通常は画像メモリＭ１に保持される画像Ｇ2が画像メモリＭ２に保持され、画像メモリＭ１に保持された時刻Ｔ0の画像Ｇ0と画像メモリＭ２の画像Ｇ2との間でマッチングが行われる。この時刻Ｔ2でのマッチングの結果、動き量が小さかった場合、画像メモリＭ２には時刻Ｔ3の画像Ｇ3が保持され、画像メモリＭ１の画像Ｇ0と画像メモリＭ２の画像Ｇ3との間でマッチングが行われる。そして、時刻Ｔ3でのマッチングの結果、動き量が小さくない場合、時刻Ｔ4では、入力画像が通常の順序に従い、画像メモリＭ２に時刻Ｔ3の画像Ｇ3を保持した状態で画像メモリＭ１に画像Ｇ4が保持される。
【００３６】
ここで、時刻Ｔ1→Ｔ2の間の実際の動きが１ピクセルであった場合には、時刻Ｔ2のマッチングで算出される動きは時刻Ｔ0→Ｔ2の間で１+１=２となり、時刻Ｔ0→Ｔ1の間の動き１も含んでしまう。このため、本処理では、前時刻に求めた動き量１を引いて２−１＝１と補正し、次の確認行動判定処理に送る。同様に、時刻Ｔ3のマッチングにおいても、実際の時刻Ｔ2→Ｔ3の間の実際の動きが３ピクセルであった場合、計算される動き量５から前時刻で計算した動き量２を引き、動き量を５−２＝３と補正する。
【００３７】
このような処理により、毎フレームの動き検出に影響することなく、また必要な画像メモリを増加させることなく、マッチングの時間間隔を調整することができ、小さい動きの検出もれを防止することができる。但し、以上の処理は、マッチングの時間間隔が過度に大きくならないよう、一定回数以上連続しないように設定する（例えば、１０フレーム以上連続しないように設定する）。
【００３８】
＜明るさ変化への対応＞
本実施の形態においては、２枚の時刻の異なる画像によるマッチング行っているため、例えば、急に光が差し込む等の２つの画像の撮像条件が異なる場合には、輝度値が大幅に異なってしまい、動き検出に不都合が生じる虞がある。
【００３９】
このような画像の明るさ変化への対応としては、急激な明るさの変化が起これば、各ウィンドウのオプティカルフロー処理で求めるＳＡＤ最小値が非常に大きくなることに着目し、各ＳＡＤ最小値の各ウィンドウの平均をフレーム毎に監視し、急激な明るさ変化が起こったか否かを判定する。そして、明るさの変化があったと判定された場合には、前回の動き量を今回の動き量として次の処理に出力する。
【００４０】
次に、確認行動判定部１４における処理について説明する。  
確認行動判定部１４は、ドライバの確認行動を複数の状態に分類し、毎フレーム毎に算出される動き量に基づいて各状態を判定する。
【００４１】
本実施の形態においては、図７の分類ＳＴに示すように、ドライバの確認行動を８状態に分類する。これらの８状態は、ドライバが車両の右窓（Ｒ）、右ミラー（ＲＭ）、前方（Ｆ）、バックミラー（ＢＭ）、ナビ画面（ＮＶ）、左ミラー（ＬＭ）、左窓（Ｌ）、左後（ＬＢ）の確認行動を行った状態に設定しており、前向きの状態をベース状態（画像上の動き量Ｘ＝０，Ｙ＝０）とし、毎フレームに算出される動き量を累積し、累積した値を閾値と比較して判定する。
【００４２】
この場合、動き量の累積を行っているため、長時間経過した場合は累積誤差が生じる可能性がある。従って、車速及び操舵角が所定の条件下で算出される動きが設定時間以下の状態が続いた場合（例えば、車速が３０ｋｍ／ｈ以上で操舵角の絶対値が３０ｄｅｇ未満の条件下で算出される動きが１０秒以下の状態が続いた場合）は、ドライバが前を向いていると判断し、動き量Ｘ，Ｙを０にリセットすることで、累積誤差に対処することが可能である。
【００４３】
しかしながら、リセットが行われるまでの間は、累積誤差が蓄積され得る状況は変わらず、十分な精度が得られない場合がある。そこで、以下に説明するように、画像上の動き量からドライバの顔の動きに関するイベントを検出し、イベント単位での確認行動検出を行うことで、より高精度な判定を行う。尚、このイベント単位での確認行動検出は、縦方向と横方向は同様に処理するため、以下では横方向に関して説明する。
【００４４】
＜イベント判定＞
イベントは、以下に説明する３つのイベント、すなわち、右方向動きイベント、左方向動きイベント、動き無しイベントとする。各イベントは、フレームの連続的性及び総動き量（累積動き量）により判定する。尚、イベントは、以下の説明からもわかるように、イベント終了後に検出される。
【００４５】
○右方向動きイベント
右方向動きイベントは、２フレーム以上連続で正の動きを検出した時点を開始時刻とし、２フレーム以上０若しくは負の動きを検出した時点を終了時刻とする。そして、開始時刻から終了時刻までが一定のフレーム（例えば１０フレーム）以上の長さであり、且つその間の累積動きが設定値（例えば２０ピクセル）以上あった場合を、右方向動きイベントと判定する。また、一定フレーム以上の条件は満たしているが累積動き量が上記の設定値未満であった場合は、右方向サブイベントとする。
【００４６】
○左方向動きイベント
左方向動きイベントに関しては、右方向動きイベントと同様に負の動きに関して判定して検出する。
【００４７】
○動きなしイベント
動きなしイベントは、一定フレーム（例えば９０フレーム）の期間の累積動き量が設定値以内で推移した場合を、動きなしイベントと判定する。
【００４８】
＜イベント単位での動き累積＞
動き量の累積値は、イベント毎に更新される。右方向動きイベント、左方向動きイベントのイベント検出後、動きの累積値にイベント内の総動き量が累積される。ここで、検出された右方向若しくは左方向の動きイベントが前回検出されたイベントから所定フレーム（例えば９０フレーム）以内であれば、その間のサブイベントの動き量も累積値に加える。これは、確認行動は多種の動きが考えられるため、イベント前後の小さな動きもできるだけ反映させた方が精度が上がるが、逆にイベントがないようなときには、小さな動きは出来るだけ反映させない方が累積誤差を抑えることができるためである。
【００４９】
例として図８を示す。図８は、ドライバが右の窓を確認したときに算出した動き量の時間経過の一例を示したものであり、ドライバが右を向き、その後、元の状態に戻る前に、小さな動きが存在することを示している。尚、動きなしイベントは前向きの状態と考えられるため、累積値を０にリセットする。
【００５０】
＜確認行動の判定＞
確認行動の判定は、イベント検出時に行うイベント駆動型の処理とする。判定は、算出した動き量Ｘ，Ｙの値により、図９に示すような判定マップを用いて行う。図９の判定マップは、右窓（Ｒ）、右ミラー（ＲＭ）、前方（Ｆ）、バックミラー（ＢＭ）、ナビ画面（ＮＶ）、左ミラー（ＬＭ）、左窓（Ｌ）、左後（ＬＢ）の８状態の確認行動を判定する閾値をＸ，Ｙ軸に設けたものであり、マップの閾値は、特にドライバの頭部の位置により異なる閾値である。
【００５１】
例えば、本実施の形態のようにカメラ位置をダッシュボード中央付近とする場合は、シートを最も前に移動させたときと後に移動させたときとでは、最大２０％程度、閾値が変わる。基本的には、ドライバが前寄りに座るほどカメラとの距離が近くなり、同じ確認行動でも画像上は大きな動きとなるためである。そのため、判定マップの閾値は、短期記憶画像における動き検出領域の位置の関数として可変とする（詳細は後述する）。
【００５２】
尚、確認行動検出は、以上のマップ判定の他、設定した８状態を各ノードとする隠れマルコフモデルによる判定を行うことも可能である。その場合、モデルは遷移時に移動量を出力するMealy型のモデルで、イベント毎に遷移計算を行うイベント駆動型とする。
【００５３】
＜判定結果の確認＞
確認行動判定における誤認識を減らすためには、判定後、その判定が正しいかを確認する評価処理を加えることが望ましい。具体的には、運転行動の各状態毎に画像メモリを用意し、走行開始後に或る状態と判定した場合、その時点でのエッジ画像を記憶する。エッジ画像を記憶するのは、明るさ変化の影響を避けるためである。それ以前に記憶している画像があれば、記憶していた画像と、その時刻の画像とを平均したエッジ画像として更新する。走行開始後、各状態で、それぞれ数回程度更新されれば、そのドライバのその状態での平均エッジ画像とみなすことができ、その後の判定時は、その状態の平均エッジ画像と、判定時のエッジ画像とを比較し、一致度が充分あれば、信頼度の高い判定結果と評価することができる。
【００５４】
次に、短期記憶画像を用いた動き検出領域の更新、動き検出領域内の各ウィンドウの統合時パラメータの更新、確認行動判定パラメータの更新（確認行動検出時の閾値修正）について説明する。
【００５５】
本実施の形態では、予め設定した画像領域の動き情報を元に確認行動を検出するが、ドライバ毎のシート位置や座高等の違いにより、画像上の顔位置は変化する。動き検出領域は、頭部が占める割合が充分大きくないと検出精度が低下するため、動き検出領域の修正、更新が必要になる。
【００５６】
そこで、短期記憶画像保持部１３は、ドライバの直近数秒〜数十秒間の画像（短期記憶画像）を保持する。この短期記憶画像は、動き検出領域の更新、動き検出領域内の各ウィンドウの統合時パラメータの更新、確認行動検出時の閾値修正に用いられる。
【００５７】
この場合、毎フレームの画像を全て保持することは、メモリの制約上難しい場合が多い。このため、短期記憶画像保持部１３では、以下の（１）式を用いて、時系列的に減衰する重みを付加した重み付き平均画像を短期記憶画像として保持することで、画像メモリ１枚分の容量で短期記憶画像を保持する。  
Ｉｍ＿ｍｅｍ(t,i,j)＝(１−α)・Ｉｍ＿ｍｅｍ(t-1,i,j)＋α・Ｉｍ＿ｉｎ(i,j)…（１）
但し、Ｉｍ＿ｍｅｍ(t,i,j)：時刻ｔでの記憶画像
Ｉｍ＿ｉｎ(i,j)    ：時刻ｔでの入力画像
α                 ：パラメータ
【００５８】
（１）式は、前回の画像に、パラメータαによる割合で現時刻の画像を加えていくことを表し、過去の画像の寄与率を減衰させて重み付き平均を求めていくことに相当する。例えば、記憶画像を３０Ｈｚで更新していく場合、α＝０．００１とすると、直前１０秒間までの画像が２５％、３０秒までが６０％、１分までが９０％の寄与があるような画像となる。但し、車両停止時は、ドライバが想定外の行動をとる場合が多いため、車速が０の場合は記憶画像の更新は行わない。
【００５９】
また、（１）式で扱う入力画像は、エッジフィルタ後の画像である。輝度画像は照明条件の影響を受けるため、影響を受け難いエッジ画像を短期記憶画像として用いる。短期記憶画像の例を、図１０に示す。図１０においては、入力元画像Ｇに対してソベルフィルタをかけた後に多値化した画像Ｇｆを示しており、この画像Ｇｆを短期記憶画像として用いる。尚、図１０及び以下に説明する図１１においては、図示の都合上、短期記憶画像を２値画像として示しているが、実際は４値以上の画像を用いることが望ましい。
【００６０】
次に、短期記憶画像を用いたパラメータ更新について、（ａ）動き検出領域の更新処理、（ｂ）ウィンドウ統合時重み付けパラメータの更新処理、（ｃ）確認行動判定パラメータの更新処理に分けて説明する。
【００６１】
（ａ）動き検出領域の更新処理
動き検出領域の更新は、図１１に示すように、短期記憶画像からＸ，Ｙ方向にそれぞれ投影した分布を用いて、頻度分布の重心が動き検出領域の中心になるように更新する。また、投影した分布の解析から、動き検出領域の縦横幅を調整することも可能である。
【００６２】
（ｂ）動き検出領域内の各ウィンドウの統合時重み付けパラメータの更新処理
動き検出領域内の各ウィンドウの投票権の分配は、各ウィンドウの短期記憶画像の平均値を元に行う。図１２は短期記憶画像（フィルタリング後に４値化した画像Ｇｆ）上での各ウィンドウＷを示しており、はじめに各ウィンドウ毎にウィンドウ内の平均値を求める。次に、動き検出領域全体への寄与率を求め、その寄与率に応じて投票権を分配する。
【００６３】
図１２の例では、ウィンドウＷの数は１８であるが、ウィンドウＷの平均値をそれぞれｋ１，ｋ２，ｋ３，…，ｋ１８とすると、各ウィンドウの寄与率は、それらを合計した値ｋａｌｌ＝ｋ１＋ｋ２＋ｋ３＋，…，＋ｋ１８を用いて、それぞれ、ｋ１／ｋａｌｌ，ｋ２／ｋａｌｌ，ｋ３／ｋａｌｌ，…，ｋ１８／ｋａｌｌとなる。全体の投票権を１０００票とすると、各ウィンドウの投票権は、１０００×ｋ１／ｋａｌｌ，１０００×ｋ２／ｋａｌｌ，１０００×ｋ３／ｋａｌｌ，…，１０００×ｋ１８／ｋａｌｌとなる。
【００６４】
（ｃ）確認行動判定パラメータの更新処理
確認行動判定パラメータの更新処理に関しては、大まかなドライバ顔の中心位置を上述の（ａ）の処理で求めることができるため、更新した動き検出領域の中心値を用いて確認行動判定の閾値を可変する。
【００６５】
本来、画像上の顔中心位置と動き量のレベルは非線形な関係を持つが、線形で近似しても大きな誤差は生じない。このため、本実施の形態においては、閾値のゲインＧを、以下の（２）式で決定し、このゲインＧを用いて閾値を修正していく。  
Ｇ＝１−ｋ(ｘｃ−ｘｃ＿ｂａｓｅ)  …（２）
但し、ｋ  ：係数（ｋ＞０）
ｘｃ：現時点の動き検出領域の中心座標
ｘｃ＿ｂａｓｅ：基本設定の中心座標
尚、現時点の動き検出領域の中心座標ｘｃが大きくなる程、ドライバの顔位置が遠くなるため、ゲインＧは１より小さくなる（そのため係数ｋは正の値を持つ）。
【００６６】
＜確認行動判定結果の出力＞
出力部１５は、判定したドライバの確認行動情報を出力する。図１３は、確認行動の判定結果を表示出力した例を示している。図１３（ａ）では左窓確認、図１３（ｂ）では右窓確認の様子が表示され、それぞれ、画面上部に判定結果を示す「Ｌ」，「Ｒ」の文字が表示されている。
【００６７】
また、出力部１５は、確認行動の判定情報と車両情報とに基づいて、周囲の状況を確認すべき場面でドライバが確認行動を起こしていないと判断した場合、警報出力を行うことで、ドライバへの警告や確認行動の喚起、事後のアドバイス等を行う。
【００６８】
例えば、走行中（車速≠０）でウィンカがＯＮされているにも拘わらず、右窓（Ｒ）や右ミラー（ＲＭ）、或いは左ミラー（ＬＭ）や左窓（Ｌ）の確認行動が検出されない場合には、ドライバに警告を発して確認行動を促す。また、操舵角から直進状態であるにも拘わらず、左右方向の動きが検出された場合には、ドライバのわき見運転と判断して警報を発し、ドライバの注意を喚起して安全を確保する。
【００６９】
このように本実施の形態においては、ドライバの顔周辺に設定した領域全体の動きを検出するため、ドライバが眼鏡、サングラス、マスク等を装着している場合においても、ドライバの顔の向き方向を確実に検出することができる。また、車両の左折時の巻き込み確認時等にカメラ視野内に注目部位が写らず、検出が困難となることもない。これにより、ドライバへの警告や確認行動の喚起、事後のアドバイス等を確実に行うことができ、効果的にドライバの運転行動を支援することができる。
【００７０】
尚、以上においては、移動体を運転中のドライバへの適用例について述べたが、本発明は、これ以外にも、移動体以外の機器を操作するオペレータの行動を検出する、或いは対象人物自体の監視等、様々な場面で適用可能である。
【符号の説明】
【００７１】
１  行動検出装置
２  カメラ
３  コントローラ
１０  画像入力部
１１  車両情報入力部
１２  動き検出部
１３  短期記憶画像保持部
１４  確認行動判定部
１５  出力部
【図１】
0005498183.tif 000002
【図４】
0005498183.tif 000003
【図５】
0005498183.tif 000004
【図６】
0005498183.tif 000005
【図７】
0005498183.tif 000006
【図８】
0005498183.tif 000007
【図９】
0005498183.tif 000008
【図１１】
0005498183.tif 000009
【図１２】
0005498183.tif 000010
【図２】
0005498183.tif 000011
【図３】
0005498183.tif 000012
【図１０】
0005498183.tif 000013
【図１３】
0005498183.tif 000014