以下、添付図面にしたがって本発明を実施するための形態について詳説する。
図1は本発明の実施形態に係る監視映像システムの全体構成を示すブロック図である。この監視映像システム10は、撮像装置としてのカメラ12(「撮像部」に相当)と、照明光を照射する照明装置14と、制御装置16を含んで構成される。カメラ12の詳細な構成は図示しないが、一般的な電子撮像装置と同様に、CCD(charge-coupled device)撮像素子やCMOS(Complementary Metal-Oxide Semiconductor)撮像素子などの光電変換素子(撮像デバイス)と所要の電子回路を含んでおり、レンズ部18を介して撮影した被写体の光学像を出電気信号に変換して光学像に応じた撮像信号を出力する。
なお、カメラ12としては、赤外線の波長域に感度を持つ赤外線カメラを用いることができる。また、赤外線カメラに代えて、RGBの色分解カラーフィルターを備えたカラー撮像デバイスが搭載されたカラー撮像可能なカメラでもよいし、白黒画像を取得する白黒カメラでもよい。
カメラ12には、撮像素子の駆動回路の他、ゲインコントロール回路、サンプリング回路、A/D変換器などの信号処理回路が搭載されており、撮像素子から得られるアナログ撮像信号はデジタル形式の撮像データに変換されてカメラ12から出力される。カメラ12から出力された撮像データは、有線又は無線の信号伝送手段によって制御装置16に送られる。
制御装置16には、カメラ12から得られる撮像画像のデータを処理する画像処理部20と、カメラ12を制御するカメラ制御部22と、照明装置14を制御する照明光制御部24と含まれる。
画像処理部20は、入力された撮像画像から特定のオブジェクトを検出してその位置を追跡するオブジェクト追跡装置としての機能を果たす。また、画像処理部20は、眼の開閉判断装置としての機能を果たす。詳細は後述する。
カメラ制御部22は、カメラ12の起動(ON)/停止(OFF)の制御の他、撮像サイクル(フレームレート)の設定などを行う。また、カメラ制御部22は、画像処理部20と連携してカメラ12の自動露出制御(AE)や自動焦点調節制御(AF)など行うこともできる。
照明光制御部24は、照明装置14の点灯(ON)/消灯(OFF)の制御の他、発光量の制御(照度の調整、発光時間、発光周波数など)を行う。照明装置14は、被写体である運転者に対して複数の方向から照明光を照射できるように複数の発光部を備える構成とすることができる。例えば、カメラ12を中心に左右対称な位置関係で複数の発光部を配置することができる。照明光制御部24は、複数の発光部を同時に(例えば、同じ指令信号で一括して)制御する構成も可能であるし、各発光部を個別に(独立に)制御する構成としてもよい。
照明光制御部24は、カメラ制御部22と連携し、必要な明るさの画像が得られるように照明装置14の光量を制御する。カメラ制御部22の機能と照明光制御部24の機能とを統合したシステム制御部として構成することも可能である。
照明装置14の発光源は特に限定されず、ランプ、発光ダイオード(LED;light-emitting diode)、半導体レーザなど、適宜の手段を採用できる。光量の制御応答性、省電力等の観点からLEDを用いる構成が好ましく、本例の照明装置14は、必要な照明光照射範囲を実現するために、複数のLEDを二次元配列させたLED群が用いられている。
撮像部のカメラ12が赤外線カメラである場合には、照明装置14として赤外線を照射するものが用いられる。ただし、発明の実施に際して、照明光のスペクトルは特に限定されない。赤外光に代えて、白色光であってもよいし、特定の波長成分分布を持つものであってもよく、これらの適宜の組み合わせであってもよい。カメラ12や画像処理部20との関係で適切な光源(スペクトル)が選択される。
本例の監視映像システム10は、例えば、自動車などの車両に搭載され、運転者の顔をカメラ12で撮影して運転者の状態(居眠りや脇見など)を検知するドライバーモニタリングシステムとして用いることができる。
以下の説明では、カメラ12で撮像した運転者の顔画像から「眼」の位置を追跡し、居眠りなどの状態を察知する監視映像システムを例に説明する。この場合、カメラ12はレンズ部18を通した視野内にドライバーの顔を捉え、通常の運転状態でドライバーの顔を正面側から撮影できるようにカメラ位置と画角とが調整されて車内に設置される。また、照明装置14についてもドライバーの顔(特に、左右両眼を含む領域)に必要な照度の照明光を照射できるように適宜の場所に設置される。
カメラ12によって一定の時間間隔(例えば、60フレーム/秒)で連続的に撮像が行われ、カメラ12から時系列で撮像画像のデータが取得される。画像処理部20は、カメラ12から時系列で取得される撮像画像の各フレームを順次に処理する。つまり、画像処理部20は、動画映像をリアルタイムで処理することができる。
<全体の処理フロー>
図2は画像処理部20における居眠り検知処理全体の流れを示すフローチャートである。図2では1フレームの画像入力に対する処理の流れを示した。画像処理部20に1フレームの画像が入力されると(ステップS12)、まず、当該入力画像が初期フレームであるか否かが判定される(ステップS14)。入力された画像が初期フレーム(例えば、撮像画像の取り込みを開始した最初のフレーム)である場合ときは(ステップS14でYes時)、ステップS16に進み、ロックオン(Lock On)フラグをオフ(OFF)にする処理を行う。
ロックオンフラグは、追跡対象である運転者の両眼を検出できている状態であるか否かを示す状態識別符号である。両眼を検出できているときにはロックオンフラグが「ON」、両眼を検出できていない状態ではロックオンフラグが「OFF」となる。初期フレームが入力された段階では、未だ運転者の眼を検出できていない状態(追跡していない状態)であるため、ロックオンフラグを「OFF」にする。
次いで、ロックオン判定の処理を行う(ステップS18)。ロックオン判定の処理は、ドライバーの眼を監視するために、入力画像からドライバーの両眼の位置を検出する処理である。具体的には、AdaBoostのアルゴリズムを用いた機械学習によって得られた、人物の開いた両眼を検出する判別器(「両眼判別器」という。)と、開いた単眼を検出する判別器(「単眼判別器」という。)とを併用することにより、左右の眼を検出する。ロックオン判定の処理の詳細は図3及び図4で後述する。なお、両眼判別器、単眼判別器がそれぞれ「オブジェクト判別器」に相当する。
ロックオン判定の処理(図2のステップS18)によってドライバーの両眼が検出されると、ロックオンフラグが「ON」に設定される。
ステップS20では、ロックオンフラグがONであるか否かの確認判断が行われる。ロックオンフラグがONであることが確認されると(ステップS20でYes)、追跡フラグをONに設定する処理(ステップS22)を行う。追跡フラグは、追跡対象たるドライバーの眼を追跡中であるか否かを示す状態識別符号である。ステップS22にて追跡フラグをONに設定したら、当該1フレームの処理を終了する。
一方、ステップS18のロックオン判定で両眼を検出できなかった場合(ロックオンできなかった場合)には、ステップS20でロックオンフラグがOFFと判断され(ステップS20でNo)、そのまま1フレームの処理を終了する。
また、入力画像が初期フレームでない場合には、ステップS14において「No」と判定され、ステップS30に進む。ステップS30では、追跡フラグがONであるか否かが判断される(ステップS30)。追跡フラグがOFFである場合(ステップS30でNo)、ステップS16に進む。
ステップS30の判断において、追跡フラグがONである場合(ステップS30でYes)、ステップS32の眼追跡の処理に進む。眼追跡の処理(ステップS32)は、ロックオン判定(ステップS18)で検出した左右の眼の開閉状態を監視するため、左右の眼をそれぞれ個別に追跡する処理を行う。具体的には、ロックオン判定(ステップS18)で検出した左右の眼をモデル(初期モデル)として、それぞれの眼が検出された位置の周辺にパターンマッチングを行うことで、眼が移動した位置を求める。初期モデルによるマッチングのスコア(以下、類似度という場合がある)が所定の基準値(第1の閾値)を下まわる場合には、直近のフレームから生成した最新の更新モデル(「最新モデル」、「直近モデル」ともいう。)によるパターンマッチングを行い、眼の位置を検出する。
追跡中に眼が障害物で隠れるなど、眼の位置を確認できなくなった場合には一時的に追跡を停止し、再度眼が確認できる状態になったら追跡を復帰する処理を行う。眼追跡の処理の詳細は、図5で説明(後述)する。また、追跡の停止/復帰に関する処理については図6、図7で説明する。
眼追跡の処理(図2のステップS32)に続き、この眼追跡において追跡している眼の開閉判断を行う(ステップS34)。具体的には、ロックオン判定(ステップS18)の眼検出において使用した単眼検出器と同じ判別器、すなわち、機械学習によって得られた、開いた単眼を検出する判別器(開き目検出器)を追跡位置の周辺に照合することによって、眼の開閉判断をする。詳細は図8で説明する。
開閉判断の処理(図2のステップS34)によって、開閉判断結果の情報(D36)が得られる。開閉判断の処理(ステップS34)の後、ステップS40に進み、眼の追跡が停止された否かが判定される。眼追跡の処理(ステップS32)において、両眼ともに追跡が停止されると、追跡フラグがOFFされる(後述の図5、ステップS238)。この場合、図2のステップS40でYes判定となり、ロックオンフラグをOFFにする(ステップS42)。
次いで、再ロックオンの処理の必要性が判断される(ステップS44)。ロックオンフラグがOFFの場合には、再ロックオンの処理を実施する。なお、片眼のみの追跡が停止され、もう片方の追跡が行われている状況(復帰を待っている状況)では、再ロックオンは不要と判断される。
ステップS44で再ロックオンが必要と判定されると(ステップS44でYes)、再ロックオンの処理が行われる(ステップS46)。再ロックオンの処理(ステップS46)は、ステップS18で説明したロックオン判定のアルゴリズムと同様である。
再ロックオンの処理(ステップS46)が終了すると、1フレームの処理終了を終了する。また、ステップS44にて、再ロックオンの処理が不要と判断されたときには、1フレームの処理を終了する。
図1で説明したカメラ12から所定のフレーム間隔で連続的に(時系列で)取得される各フレーム画像について、図2の処理が繰り返される。
<ロックオン判定の処理フローの例1>
図3は、ロックオン判定の処理の流れに関する第1例を示すフローチャートである。フレーム画像が入力されると(ステップS102)、両眼判別器による両眼検出が行われる(ステップS104)。この処理は、入力画像に対して両眼判別器を照合し、両眼候補を検出する処理である。両眼判別器は、両眼を同時に検出する検出器であり、入力画像から両眼の大まかな位置を特定する。
次に、両眼が検出されたか否かの確認判断を行う(ステップS106)。ステップS104で両眼が検出されていればステップS106でYes判定となる。ステップS104で両眼が検出されていなければステップS106はNoとなる。ステップS106でNo判定の場合は、処理を終了する。
ステップS106でYes判定となったときは、ステップS108に進み、単眼検出候補位置の設定を行う。単眼検出候補位置の設定処理(ステップS108)は、両眼判別器で検出された両眼候補それぞれに対し、単眼判別器を照合する位置を設定する。本実施形態では、両眼判別器の学習設計において、両眼中心点間を32pixelに正規化した。ここでいう「pixel」は、カメラ12から得られるデジタル画像データの画素を表している。32pixelは、1フレームの撮像画像における32画素分の距離を表している。
そのため、両眼候補の検出位置の中心から両脇16pixelの位置に左右の眼の中心があると認定し、左右の眼それぞれの中心位置を基準に画像内の水平方向及び垂直方向のそれぞれ所定範囲内(比較的小さい範囲内)で単眼判別器を適用する。単眼判別器による単眼検出の処理(ステップS110)では、ステップS108で設定した範囲に単眼判別器を照合する。
ステップS110の処理の結果、単眼が2個検出されたか否かの判別が行われ(ステップS112)、単眼が2個、すなわち、左右の眼がそれぞれ正しく検出された場合には、この2つを追跡対象とし、ロックオンする(ステップS114)。左右の眼を追跡対象として特定できたら、ロックオンフラグをONにする。
そして、ロックオンした両眼を初期モデル(初期テンプレート)に設定する(ステップS116、「初期モデル生成工程」に相当)。この設定された初期モデルを用いて眼の追跡処理が行われる(図5参照)。
なお、図3のステップS106でNo判定、又は、ステップS112でNo判定となった場合は、当該フレームについての処理を終了する。
また、後述する両眼の追跡中に、左右の眼の中心間距離から顔サイズの変動を自動検出し、局所的にロックオン評価をして、同じ初期モデルを継続使用できるか否かの判断を行う。顔サイズが大きく変化して、当初の初期モデルを適用できない(マッチング相関度が規定値よりも低くなるときには)ロックオンの処理をやり直し、適切な初期モデルを設定し直す。
<ロックオン判定の処理フローの例2>
図4は、ロックオン判定の具体的な処理の流れに関する第2例を示すフローチャートである。図3に代えて、図4のフローチャートを採用することができる。図4では、フレーム画像の入力(ステップS102)後、この入力画像に対して、単眼判別器により単眼検出が行われる(ステップS124)。単眼判別器により入力画像内を探索し、単眼候補を検出する。単眼検出の処理(ステップS124)によって、単眼の候補が二つ以上検出されたか否かの判定が行われる(ステップS126)。単眼の候補が二つ以上検出されなかった場合には、ステップS126でNo判定となり、本処理を終了して、次のフレーム画像の処理に移行する。
単眼検出(ステップS124)の処理によって、二つ以上の単眼候補が検出された場合にはステップS126でYes判定となり、ステップS128に進む。
ステップS128では、二つ以上の単眼候補について、対称性の判断を行う。左右両眼の対称性を用い、二つの単眼候補がペア(対)になった「両眼」であるか否かの判断が行われる(ステップS130)。左右対称性のある二つの単眼候補のペアを検出できなかった場合には(ステップS130でNo)、本処理を終了して、次のフレーム画像の処理に移行する。
その一方、ペアになっている両眼を検出できた場合には(ステップS130においてYes)、このペアの両眼を追跡対象とし、ロックオンする(ステップS134)。左右の眼をロックオンできたら(追跡対象として特定できたら)、ロックオンフラグをONにし、このペアの両眼を初期モデルとして登録する(ステップS136、「初期モデル生成工程」に相当)。こうして設定された初期モデルを用いて追跡の処理が行われることになる。
<眼追跡処理>
図5は本実施形態による眼追跡処理の流れを示すフローチャートである。フレーム画像の入力が行われると(ステップS202)、眼の追跡状態であるか否かの判断が行われる(ステップS204)。追跡状態であるか否かは追跡フラグ(ロックオンフラグ)によって識別することができる。追跡中でなければ(ステップS204でNo)、ロックオン判定(ステップS206)の処理を行い、初期モデルの生成を行う(ステップS208、「初期モデル生成工程」に相当)。すなわち、ロックオン判定(ステップS206)直後は、ロックオン判定で検出した眼の画像部分をテンプレートとして切り出し、眼の画像特徴を示す初期モデルとしてメモリに記憶し、保持する(ステップS208)。ステップS206〜S208の処理は、図3又は図4で例示した処理と同様の処理が適用される。
初期モデルは、「初期テンプレート」とも呼ばれ、テンプレートマッチングによる追跡を開始するときの最初の参照テンプレートとして使われる。この初期モデルはロックオン処理によって得られる。
その一方、先行するフレーム(例えば、直前のフレーム)において既に追跡が行われている場合には、前フレームで追跡した眼の画像部分がモデルとして切り出され、これを更新モデル(最新モデル)として保持している(後述のステップS224参照)。本例の場合、更新モデルは毎フレーム更新され、追跡中、常に最新の(直近の)モデルが保持される。更新モデルは「最新モデル」、「直近モデル」、或いは「更新テンプレート」とも呼ばれる。
つまり、直前のフレームのマッチング位置から切り出された眼領域の画像部分を新たなモデル(テンプレート)としたものが更新モデルである。ロックオン処理で生成された初期モデルを維持しつつ、常に最新(直近)の更新モデルが生成され、初期モデルと最新の更新モデルが保持される。
図5のステップS204で追跡状態であると判断され(ステップS204でYes)、ステップS210に進む。ステップS210では、マッチング対象領域の切り出し処理が行われる。この処理は、前フレームで検出(追跡)した眼の位置を中心に、フレーム内からマッチング対象領域を切り出す処理である。
次に、初期デンプレート(初期モデル)によるマッチング処理を行う(ステップS212、「第1のマッチング処理工程」に相当)。本実施形態では、初期テンプレートと更新テンプレートとを併用して追跡を行うが、更新テンプレートを用いるマッチング処理に先んじて、まずは、初期テンプレートによるテンプレートマッチングの処理(「第1のテンプレートマッチングの処理」に相当)を行う(ステップS212)。マッチング対象領域に対して初期テンプレートを照合して類似度(「第1のスコア」に相当)を計算する。マッチング対象領域と初期テンプレートの相対的な位置関係をずらしながら各位置で類似度を計算する。
算出された類似度と第1の閾値(予め定められた判定基準値、例えば類似度50%、)との比較が行われる(ステップS214、「比較工程」に相当)。マッチングの結果、第1の閾値以上の類似度(50%以上の類似度)を持つ位置が見つかれば、ステップS214でYesとなり、その位置を追跡結果として決定する(ステップS216、「追跡位置決定工程」に相当)。
その一方、初期テンプレートによるマッチング(ステップS212)で、第1の閾値以上の類似度を持つ位置が見つからなかった場合は(ステップS214でNo)、更新テンプレートによるテンプレートマッチングの処理(「第2のテンプレートマッチングの処理」に相当)を行い(ステップS220、「第2のマッチング処理工程」に相当)、最大の類似度を持つ位置を追跡結果とする(ステップS222、「追跡位置決定工程」に相当)。
追跡位置が決定したら(ステップS216、S222)、その決定した位置における眼領域を最新モデルとして切り出し、これを最新モデル(更新テンプレート)として記録する(ステップS224、「更新モデル生成工程」に相当)。
このように、本実施形態では、初期モデルによるマッチング処理を優先して行い、初期モデルの類似度が規定の閾値(第1の閾値)以上であれば、初期モデルによるマッチングの結果をそのまま採用する。このとき更新モデルによるマッチング処理の演算は省略されるが、初期モデルのマッチング結果に基づいて、最新モデルは更新される。
一方、初期モデルの類似度が第1の閾値を下回って低い場合には、更新モデルによるマッチングを行い、更新モデルによるマッチング結果を採用する。一般に、更新モデルは、初期モデルに比べて一致度が高くなるため、更新モデルによってマッチング位置を探索する際の判定閾値(第2の閾値)は、初期モデルの閾値(第1の閾値)よりも高い値に設定される。
なお、ステップS212、S214、S216、S220、S222を含んだ一連の工程が「眼探索工程」(オブジェクト探索工程)に相当する。
次に、追跡結果についての判断処理を行う(ステップS226)。具体的には、初期モデルが適切か否か(同じ初期モデルを継続して使用可能か否か)の判断を行う処理と、追跡不良を判別する処理を含んでいる。
まず、初期モデルの適切性を判断するために、眼追跡で特定された両眼の位置から両眼間の距離を求め、この両眼距離の変化がある条件(予め定められた判定基準値、「第3の閾値」という。)を超えているか否かの判定を行う(ステップS228)。なお、カメラ12に顔が近づくと両眼距離は大きくなり、カメラ12から顔が離れると両眼距離は小さくなる。遠近の許容範囲を規定する第3の閾値は、下限値側の値と、上限値側の値の両方を含むことができる。或いはまた、両眼距離の変化量を絶対値で表すことにより、その変化量(絶対値)の上限を第3の閾値として設定することができる。
両眼距離の変化量が第3の閾値を超えた場合(ステップS228でYes)、カメラ12に対する運転者の顔の遠近位置が移動した可能性があるため、ステップS230に進み再ロックオンを試す。
この再ロックオン処理(ステップS230)は、初期モデル(初期テンプレート)を作り直すことを目的として行われるものである。再ロックオン処理(ステップS230)によって、新たに初期モデルが生成され、初期モデルの更新が行われる(ステップS232)。ステップS230〜S232の処理は、運転者の顔がカメラ12から遠ざかったり、カメラ12に近づいたりする遠近移動対策としての処理であり、両眼の距離変化から遠近移動を判断して初期モデルを作り直すものである。ステップS230〜S232の具体的な処理内容は、図3及び図4で例示したロックオン判定の処理と同様の処理が適用される。
ステップS228で両眼距離の変化が第3の閾値以内であれば、ステップS236に進み、追跡結果の妥当性を判断する。具体的には、図6に示す処理を行う。
<追跡不良の判定処理>
図6は、追跡結果から追跡の一時停止や停止からの復帰処理を行う判断処理の例を示すフローチャートである。図7は、図6のフローチャートを理解しやすくするために、追跡中に起こりうる3つの状態間の遷移関係を示した説明図である。
眼追跡の処理では、両眼ともに追跡中の状態(図7中、符号「ST−2」として記載)、一方の眼(片眼)のみを追跡中の状態(他方の眼については追跡を停止している状態、図7中、符号「ST−1」として記載)、両眼ともに追跡を停止している状態(図7中、符号「ST−0」として記載)の3つの状態があり得る。
図6に示したフローは、眼追跡の停止と復帰に関する判定の処理手順を示したものである。追跡演算の対象となる注目領域(ROI;region of interest)のデータが入力されると(ステップS302)、まず、両眼とも追跡中であるか否かの判断が行われる(ステップS304)。両眼とも追跡中であるときはステップS304でYesとなり、ステップS306の「両眼同時追跡停止判定」の処理に進む。
両眼同時追跡停止判定の処理(ステップS306)は、両眼とも追跡中に、両眼の追跡を同時に停止するか否かを判定する処理である。例えば、以下に示す条件1〜3のうち少なくとも1つの条件を満たした場合は、両眼の追跡を同時に停止する処理を行う。
〔条件1〕ロックオン直後の両眼距離(両眼の中心位置間のpixel数によって評価)に比べ、現在の両眼距離が1.25倍以上離れており、かつ、初期モデルとの相関(類似度)が35%を下回った場合。
〔条件2〕初期モデルとの相関(類似度)が高い方の眼の相関が20%を下回り、かつ低い方の眼の相関が15%以下である場合。
〔条件3〕現在の両眼距離が単眼の横幅よりも狭く、かつ初期モデルとの相関が高い方の眼の相関が35%以下である場合。
なお、条件1〜3における判断の基準となる各閾値の具体的な数値「1.25倍」、「35%」、「20%」、「15%」は一例に過ぎず、目的の範囲で適宜の値に設定することができる。なお、両眼距離は、遠近変動(サイズ変化)を判断する指標となる。つまり、サイズ変化の観点と、初期モデルとの類似度の観点を組み合わせて、判定条件が定められている。
ステップS306の後、ステップS308に進み、両眼とも追跡停止とされたか否かの判断を行う。両眼の追跡を同時に停止した場合(ステップS308でYes)、追跡フラグをオフにする(ステップS310)。この場合は、再ロックオンの処理に移行する(図2のステップS40〜S46、図7のST−0参照)。
その一方、図6のステップS308において、No判定となった場合には、片眼追跡停止判定の処理(ステップS312)に進む。両眼同時追跡中の両眼同時追跡停止判定(ステップS306)において両眼同時の追跡停止が起きなかった場合は、片眼(単眼)の追跡停止判定を行う(ステップS312)。例えば、以下の条件4〜7のうち少なくとも1つの条件を満たした場合は、単眼の追跡を停止する。
〔条件4〕初期モデルとの相関(類似度)が高い方の眼の相関が50%を上回っており、かつ低い方の眼の相関が15%を下回った場合は、相関が低い方の眼の追跡を停止する。
〔条件5〕Lock On直後の両眼距離に比べ、現在の両眼距離が1.25倍以上離れている場合は、相関が低い方の眼の追跡を停止する。
〔条件6〕両眼距離が単眼の横幅よりも狭くなった場合、相関が低い方の眼の追跡を停止する。
〔条件7〕初期モデルとの相関が高い方の眼の相関が50%を上回っており、かつ低い方の眼の相関が50%を下回ったとき、現在の両眼距離がLock On直後の両眼距離の4分の1未満となった場合は、相関が低い方の眼の追跡を停止する。
なお、条件4〜7における判断の基準となる各閾値の具体的な数値「50%」、「15%」、「1.25倍」、「4分の1」は一例に過ぎず、目的の範囲で適宜の値に設定することができる。
ステップS304でのNo判定の場合、ステップS320に進み、両眼とも追跡停止中であるか否かが判断される。両眼とも追跡が停止している場合(ステップS320でYes)は、ステップS322の「両眼同時追跡復帰判定」に進む。両眼追跡停止中の両眼同時追跡復帰判定(ステップS322)では、両眼それぞれにおいて履歴に保持している追跡範囲を対象として、初期モデルのマッチングを行う。このマッチングにおいて初期モデルの相関が30%を上回った場合は、追跡を復帰する。
ステップS320でNoの場合、すなわち、片眼(単眼)追跡停止中であるときは、ステップS324の片眼追跡復帰判定の処理を行う。つまり、単眼のみ追跡が行われている(片眼の追跡が停止中)は、追跡が停止している方の単眼について追跡復帰の判定処理を行う(ステップS324)。例えば、追跡中の単眼が左眼ならば、追跡中の左眼の中心位置から右側80 pixelの位置を中心に縦131×横131pixelの範囲に、初期モデルのマッチングを行う。また、追跡中の単眼が右眼ならば、追跡中の右眼の中心位置から左側80 pixelの位置を中心に縦131×横131pixelの範囲に、初期モデルのマッチングを行う。
このマッチングにおいて初期モデルの相関が30%を上回った場合は、追跡を復帰する。
上記の判定基準を示す各閾値の「80pixel」、「131pixel」、「30%」という具体的数値は一例に過ぎず、目的の範囲で適宜の値に設定することができる。
ステップS324に続いて、ステップS326では追跡復帰したか否かの判断が行われる。ステップS326でYesならば、処理を終了し、ステップS326でNoであれば、ステップS328の「片眼追跡停止判定」の処理に進む。このステップS328は、単眼追跡停止中のもう片方の眼の追跡停止を行うか否かを判定する処理である。つまり、単眼のみ追跡が行われている場合に、追跡中の単眼の追跡を停止する処理を行う。次に示す条件8を満たした場合は、単眼の追跡を停止する。
〔条件8〕初期モデルの相関が25%を下回り、かつ前フレームの開閉判断において「閉じ眼」と判断されている場合。
なお、条件8における判断の基準となる閾値の具体的な数値「25%」は一例に過ぎず、目的の範囲で適宜の値に設定することができる。
図6で説明した処理を用い、追跡結果の妥当性を判断し(図5のステップS236)、両眼の追跡を続けられない場合(ステップS236でNo)には、追跡状態をOFF、つまり追跡フラグをOFFにする(ステップS238)。その一方、ステップS236で追跡結果が妥当な場合(ステップS236でYes)は、追跡を継続して次のフレーム画像の処理に続く。
なお、上述のように、追跡不良の判断方法としては、初期モデルと更新モデルを用いたマッチングによって検知されたマッチング位置やそのスコア(類似度)を使って、両眼又は片眼の追跡不良を判断することができる。
或いはまた、後述する開閉判断のスコアを使い、追跡不良を判断することもできる。
さらに、複数フレームの追跡結果の情報をとして保存する工程を含む構成とすることができる。複数フレームの追跡結果の情報の履歴から把握される軌跡情報を使い、眼の動きを予測して(運動予測)、不良な追跡位置を判断し、追跡を停止させることができる。ここでいう「軌跡情報」とは、時系列で連続する複数のフレーム間でのマッチング位置の軌跡(位置の移動軌跡)を意味している。複数フレームのマッチング結果を履歴として保存することによって、前後のフレーム間の繋がりから、不良な追跡位置を判別できる。例えば、時刻tの眼位置と、時刻t+1の眼位置の差が規定の値よりも大きい場合には、追跡不良と判断することができる。
追跡不良と判断された場合は、追跡を停止し、ロックオン処理をやり直して、追跡の復帰を試みる。なお、図6で説明した追跡不良の判定処理(追跡の停止/復帰判定処理)が「追跡停止判断工程」に相当している。
<再ロックオンについて>
再ロックオン判定(図1のステップS46、図5のステップS230)は、左右どちらかの眼において、初期モデルの相関が80%を下回った場合、又は少なくとも片眼の追跡が停止している場合に行われる。これは、眼追跡を開始してからある程度時間が経つと、運転者とカメラ12の距離変動(遠近移動)や照明変動などにより、初期モデルを用いてマッチング処理をしても高い相関が得られなくなるため、初期モデルを更新すること、或いはまた、追跡復帰処理(図6のステップS322、S324)を補い、追跡が停止している際に、できるだけ早く追跡を復帰させることを目的とする。
再ロックオンのアルゴリズムは、図3及び図4で例示したロックオン判定のアルゴリズムと概ね同様であるが、少なくともどちらか一方の眼を追跡中の場合は、両眼判別器を照合する位置が限定される。すなわち、図7に示した3つの状態ST−0、ST−1、ST−2に応じて、次のように照合が行われる。
[1]両眼とも追跡中の場合(図7の状態ST−2)、両眼それぞれの中心点の中点を基準に、比較的小さい範囲に両眼判別器を照合する。
[2]左右どちらか一方(片眼)のみ追跡中の場合(図7の状態ST−1)、追跡中の単眼が左眼ならばその右側に、右目ならばその左側に、追跡停止している単眼が存在すると考え、追跡中の単眼の中心から40pixelの位置を基準に、横15pixel、縦10pixelの範囲に両眼判別器を照合する。
[3]両眼とも追跡停止中の場合(図7のST−0)、最初に行ったロックオン判定(図1のステップS18)と同様の両眼検出を行う。
<開閉判断>
次に開閉判断の処理(図2のステップS34、「開閉判断処理工程」に相当)について説明する。
図8は開閉判断処理の流れを示すフローチャートである。開閉判断に必要な初期設定(ステップS402)のための事前学習として、予め顔の向きを示す顔角度と、開き目(単眼)判別器を適用したときの検出スコア(類似度を表す評価値)との関係を求めておく。その具体的な方法として、まず、顔角度ごとの複数の分析画像を用意する。顔角度は、例えば、カメラ12に正対する正面前方向きを角度の基準(0度)として、右向き方向の回転角(水平角度)をプラスの角度、左向き方向の回転角をマイナスの角度として表す。
様々な顔向き角度ごとに複数人分の顔画像を用意し、これら各画像に対して、単眼の開き目判別器をかけ、得られたスコアの分布から、正面前方向きの画像に対するスコアと、顔角度との関係を統計処理で算出する。
開き目(単眼)判別器は、正面前方向きの画像から生成されている。したがって、人物の違いによって、スコアの大小に相違はあるものの全体的には、正面前方向きの画像のスコアが最も値が大きく、顔向き角度が大きくなるにつれて、スコアの値は低下していく傾向となる。複数人分の分析画像を用いて統計処理を行うことにより、概ね平均的な関係を把握することができる。
このような事前学習によるデータが予め得られていることを前提とし、図8の処理が進められる。眼追跡が開始されると、まず、開閉判断用の初期設定が行われる(ステップS402、「初期設定工程」に相当)。この初期設定は、被判断者であるドライバー自身の撮像画像を用いて、顔角度とスコアの関係性を設定する処理である。
人によって開き目判別器による検出の精度は異なる。例えば、メガネをかけている人と、かけていない人とでは、検出スコアが大きく異なる。このため、事前学習で得られた統計結果をそのまま適用すると、必ずしも適切な開き目検出(判断)ができないことも起こりうる。したがって、被判断者の正面画像に対するスコアを基に、事前学習による統計関係から、当該被判断者の顔角度と検出スコアの関係を設定する。つまり、ステップS402の処理は、被判断者である人物(当該運転者)に対して、どういう閾値を設定するか、ということを決めるアルゴリズムである。
具体的には、ロックオンされたらフレーム毎の開閉判断結果の履歴を10フレーム分保持するものとし、ロックオン直後の10フレームについて正面を向いた眼検出の結果から、スコアの平均値(「正面検出平均スコア」)を算出する。そして、事前学習で得られている統計関係から、被判断者の顔角度と検出スコアの関係を決める。
図9にその例を示す。図9の横軸は顔角度の大きさ(絶対値)、縦軸は検出スコアの値を示す。図9中g1、g2は、それぞれ異なる人物の顔角度と検出スコアの関係を示している。例えば、g1はメガネをかけていない人、g2はメガネをかけている人のグラフである。
眼追跡(図8のステップS404)でロックオンされている被追跡中の両眼から顔角度を推定し(ステップS406)、初期設定(ステップS402)で得られた顔角度と検出スコアの関係から、角度ごとに開閉判断用の閾値を設定する(ステップS408)。つまり、図9のg1やg2で表されるような閾値が設定される。顔の角度が大きいほど、閾値は小さい値に設定されることになる。
こうして設定された閾値(第4の閾値)を用いて、後のスコア判定(図8のステップS414)の処理にて眼の開閉状態を判断する。顔角度の推定処理については図10で後述する。
追跡中の眼に対し、開閉判断は片眼ずつ行われる(図8のステップS410)。すなわち、単眼の開閉判断として、開き目(単眼)判別器が適用され、開き目の検出が行われる(ステップS412)。眼追跡の処理で特定された追跡位置によって定まる所定の画像範囲に開き目(単眼)判別器を適用し、開き目検出によるスコアが計算され、ステップS408で決定された閾値(第4の閾値)と対比して判定が行われる(ステップS414)。
時間軸統合の処理(ステップS416、「時間軸統合工程」に相当)では、直近の数フレーム(例えば、2〜3フレーム)分の単眼開閉判断の結果を蓄積しておき、これら直近数フレーム分の単眼開閉判断の結果を統合して単眼の開閉判断結果とする。このような時間軸統合の処理によって、例えば、瞬きなどの一瞬の開閉変化を捨象することが可能であり、居眠りとは違う「瞬き」を無視することができる。
左右の眼について、それぞれステップS410〜S416の処理を並列に行い、その後、左右それぞれの単眼開閉判断の結果を統合して(ステップS418)、総合判定としての両眼の開閉判断結果を出力する(ステップS420、「両眼統合工程」に相当)。通常、人は両眼の瞼が左右同時に閉じたり、開いたりすることが多く、片方の眼を閉じて、他の片方を開くということは起こりにくい。したがって、本実施形態では、開閉判断に際しては、左右それぞれの単眼開閉判断を総合して、判断している。すなわち、最終的な開閉判断は、片眼ずつの開閉判断結果を組み合わせて両眼の開閉判断結果として統合(両眼統合)されたものを出力する(ステップS418〜S420)。この出力される判断結果に基づき、ドライバーの居眠りを判別することができる。また、上述した開閉判断に基づく居眠り判別と併せて、脇見運転の判別も可能である。
さらに、本実施形態では、開閉判断に際し、開いた眼の画像特徴を機械学習することによって構築した判別器(開き目判別器)を用いているため、この開閉判断の処理において眼の位置が正確に特定される。本実施形態では、こうして検出された眼の位置により、追跡位置を修正する機能を備えている。すなわち、追跡処理で特定された追跡位置に対して、開閉判断を行い、その開閉判断で検出した眼の位置を追跡位置に反映させる(「追跡位置修正工程」に相当)。このような追跡位置修正機能により、更に精度の高い追跡が可能である。
<顔向き(水平角度)の推定処理と脇見判定について>
図10は顔角度の推定処理と脇見判定の処理の流れを示したフローチャートである。既述のとおり、追跡対象の眼がロックオンされ(ステップS502)、被判断者の顔角度と検出スコアの関係の設定が更新された後(ステップS504)、顔角度の算出基準となる角度基準の設定が行われる(ステップS506)。
図11(a)(b)は、顔向き(顔角度)を示す水平角の算出方法を説明するための模式図である。図11(a)(b)は人物の頭を円柱近似して上から見た模式図であり、Aは左眼、Cは右眼の位置を表す。矢印Bは顔の向きを示す。図11(a)は、顔向き水平角度算出の基準となる正面の顔向き、図11(b)は、図11(a)から水平面内で右方向に回転した顔向きが描かれている。
角度基準設定(図10のステップS506)の処理では、ロックオンされた際に、正面の撮像画像から左右両眼の直線距離(図11(a)におけるA−C間の直線距離D)を計算し、その値を記録する。具体的には、撮像画像内における左眼及び右眼のそれぞれの中心位置間距離(両眼の中心距離)をpixel単位で求め、その値をメモリに記憶する。
次に、追跡(図10のステップS508)によって特定される両眼の追跡位置から、顔角度の推定処理が行われる(ステップS510)。この角度推定処理(ステップS510)では、まず、両眼の追跡位置から両眼の中心距離(図11(b)におけるA−C間の直線距離Y)を算出する。
そして、水平方向顔向き角度Bを次の(式1)により算出する。
水平方向顔向き角度B=arcsin(Y/D) …(式1)
なお、(式1)は次のようにして導出される。
図11において、円柱の中心をE、円柱の半径をr、両眼(弧AC)の中心角をx[ラジアン]とする。また、図11(a)において、矢印B(ベクトルEB)に直交する基準線EFとすると、図11(a)に示した関係からDは次の(式2)で表される。
D=2r・sin(x/2)…(式2)
なお、式中の「・」は乗算の演算子を表す(式3についても同様)。
一方、図11(b)において、基準線EFから反時計回り方向に角度を測り、角FECを角度C、角FEBを角度B、角FEAを角度Aと示すとき、図11(b)の幾何学的関係から、次の(式3)〜(式5)が成り立つ。
Y=r・cosC−r・cosA=2r・sinB・sin(x/2) …(式3)
C+X=A …(式4)
B=(A+C)/2 …(式5)
これらの関係から、次の(式6)が導かれる。
Y=DsinB …(式6)
この(式6)を角度Bについて解くと(式1)が得られる。
角度推定処理(図10のステップS510)にて計算した角度Bを予め定めた脇見判定用の閾値と比較し、顔向きが所定の角度以上で、かつ、その状態がある時間以上継続したら、ドライバーの脇見運転と判別することができる(ステップS512)。
図10のステップS508で示した追跡処理の結果に対しては、追跡結果のチェック(結果判断)が行われ(ステップS514)、追跡結果がOKであれば、次のフレームの処理に進む(ステップS516)。一方、追跡結果がNGであれば(ステップS514にてNG)、ステップS502に戻ってロックオン処理をやり直す。カメラ12と被写体の拒理(遠近)が変化すると、正面前方を向いた顔画像における両眼の直線距離Dが変わるため、Dの誤差をできるだけ小さくするために、適切な再ロックオンをかける。Dの精度を高めることにより、顔向きの変化に対する検出精度が高まる。
<顔角度に対応した初期モデルの変更について>
テンプレートマッチングの更なる精度向上のために、顔向きが大きく変化した場合に初期モデルを更新する構成を採用する態様が好ましい。
図12は初期モデルの更新方法を示すフローチャートである。
図12に示すように、ロックオン判定の処理によって、両眼がロックオンされると(ステップS602)、このロックオンされた際の初期モデルが記録される(ステップS604)。この初期モデルは、運転者の顔が正面前方を向いているときの初期正面テンプレートである。
追跡開始時は、この初期モデル(初期正面テンプレート)を用いて、追跡処理が行われる(ステップS608)。そして、図11で説明した方法により、現在追跡中の顔の向き(顔角度)を算出する(ステップS610)。そして、この求めた顔向き角度を基に初期モデルに対して角度に応じた変形処理を施し、顔角度に対応したテンプレート(「角度テンプレート」という。図12中「角度TP」と表記)を作成する(ステップS612)。
角度テンプレートは次のようにして作成される(ステップS612)。
まず、3次元の被写体である人物(被判断者としての運転者)の眼を含む周辺区域を円柱形状と近似し、現在追跡中の眼のモデルサイズに応じて、円柱の半径を決定する。
次に、ステップS610で得られた顔向きの角度をパラメータとして、円柱回転変換を行う。
最後に、円柱回転後の画像を射影変換し(平面に正射影)、現在の顔向き角度に相当する角度テンプレートを生成する。角度テンプレートは「角度モデル」、「回転モデル」と言う場合がある。
図13に、初期正面テンプレートから、ある顔向き角度に対応した角度テンプレートを生成する方法の概念図を示した。図示のように、初期正面モデルから、円柱回転変換及び射影変換を行うことにより、顔向き角度に対応した初期モデルが生成される。
こうして得られた初期モデルを新たな初期モデルとして記憶し、初期モデルを更新する。
次のフレームに対する追跡の処理(ステップS618)に際しては、ステップS612により更新された初期モデル(この場合、角度テンプレート)が適用される。
このように、追跡中に顔向き角度を測定し、その測定した角度に対して適応的に初期モデルを回転変形させて、適切な初期モデルに修正(更新)していくことにより、テンプレートマッチングの精度向上を達成できる。
<初期モデルの更新方法に関する他の例について>
図12で説明したフローに代えて、初期正面テンプレートを生成した際に、予め(事前に)複数の顔向き角度に対応した角度テンプレート(回転モデル)を複数作成しておき、これら複数の角度テンプレートを初期テンプレートの変更候補として記憶保存しておく態様も好ましい。
例えば、正面前方向きを基準(回転角=0度)として、±30度、±50度の顔向き角度にそれぞれ対応した4種類の角度テンプレートを作成しておく。この場合、角度推定(ステップS610、「角度推定工程」に相当)で求めた角度に最も近いテンプレート候補を選択して、次フレームに適用する初期モデルとする(「新たな初期モデルとして記憶する工程」に相当)。
このような方法によれば、顔向き角度に対応した適切な初期モデルの更新が可能であり、テンプレートマッチングの精度向上を達成できる。また、図12で説明した方法と比較して、演算処理時間を短縮することができる。
なお、事前に作成しておく角度テンプレートについて、上記4種類に限らず、適宜の角度のものを作成しておくことができる。更に、上記例示の4種類の角度だけでなく、更に細かく多数の角度位置に対応する角度テンプレートを作成しておいてもよい。演算時間と検出精度を考慮して、適当な種類数と角度位置の回転モデルを作成すればよい。
<画像処理部20の詳細構成>
図2〜図13で説明した処理機能を実現する画像処理部20の構成例について説明する。図14は、画像処理部20の構成例を示したブロック図である。画像処理部20は、画像入力部202と、ロックオン処理部204と、追跡処理部206と、開閉判断部208と、居眠り判断部210と、脇見判断部212と、初期モデル変更部214とを備えている。
画像入力部202は、カメラ12から撮像画像のデータを取得するための画像入力インターフェース部である。具体的には、通信インターフェース部、データ入力端子、メディアインターフェース部などの態様があり得る。
ロックオン処理部204は、両眼判別器220、単眼判別器224、初期モデル生成部226、初期モデル記憶部228を備える。ロックオン処理部204は、図3及び図4出説明したロックオン処理を行う。また、初期モデル生成時に、その生成した初期モデル(初期正面テンプレート)から予め複数の角度テンプレートを作成しておく場合、ロックオン処理部204には、角度テンプレート生成部230と角度テンプレート記憶部232とを備える。角度テンプレート生成部230は、図13で説明した変換処理と同様の処理を実現するための円柱回転変換部236と射影変換部238とを含む。
追跡処理部206は、初期モデルを用いたテンプレートマッチングの処理を行う第1のマッチング処理部250と、第1の閾値を記憶しておく記憶部252と、初期モデルを用いたマッチングのスコアと第1の閾値を比較するスコア比較部254(「比較部」に相当)と、更新モデルを用いたテンプレートマッチングの処理を行う第2のマッチング処理部256と、二つのマッチング処理部(250、256)のいずれか一方のマッチング処理の結果を採用して追跡位置を決定する追跡位置決定部258と、マッチング処理の結果から追跡不良を判定する追跡不良判定部260と、決定された追跡位置から更新モデル生成する更新モデル生成部262と、生成した最新の更新モデルを記憶する記憶部264と、開閉判断部208の開き目検出の結果を利用して追跡位置の修正を行う追跡位置修正部266と、を備える。追跡処理部206は図5で説明した眼追跡の処理を行う。また、追跡不良判定部260は図6及び図7で説明した眼追跡の停止/復帰の判定処理を行う。
なお、第1のマッチング処理部250、スコア比較部254、第2のマッチング処理部256、追跡位置決定部258の組み合わせが「眼探索部」(オブジェクト探索部)に相当する。
開閉判断部208は、顔向きの角度を算出する角度推定部280と、算出(推定)された顔角度に応じて開閉判断のための閾値(第4の閾値、「開閉判断用閾値」に相当)を決定する閾値決定部282と、決定された閾値を用いて開き目を検出する開き目(単眼)判別器284と、直近の数フレーム分の判別結果を統合して開閉を判断する時間軸統合部286と、左右の各単眼について行われた単眼開閉判断の結果を両眼合わせて統合して判断を行う両眼統合部288と、を備える。開閉判断部208は、図8で説明した開閉判断の処理を行う。
両眼統合部288から出力される開閉判断結果を基に、居眠り判断部210にてドライバーが居眠り状態にあるか否かの判断が行われる。
また、角度推定部280によって推定された角度の情報を基に、脇見判断部212にてドライバーが脇見運転の状態にあるか否かの判断が行われる。
さらに、角度推定部280で推定された顔角度の情報は初期モデル変更部214に送られる。初期モデル変更部214は、顔角度の情報を基に、角度テンプレート記憶部232の中から顔角度に最も適した角度テンプレートを自動的に選択し、初期テンプレートを変更する。
なお、居眠り判断部210や脇見判断部212によって居眠り状態や脇見状態であることが検知された場合に、運転者に対して適宜の警告手段(不図示)によって警告を発する構成とすることができる。警告手段としては、音声による警告手段(音声出力手段)、表示による警告手段(警告表示手段)、ハンドルを振動させるなどの運転者に刺激を与える警告手段(刺激付与手段)など様々な形態が可能であり、これらの適宜の組み合わせであってもよい。また、警告手段に代えて、又はこれと組み合わせて、居眠り判断部210や脇見判断部212の判断結果を基に、危険回避のためのドライビングアシスト制御(例えば、自動減速など、自動的な運転補助制御)を行う態様も可能である。
本実施形態の画像処理部20を構成する各部の機能は、集積回路などのハードウエア、又は、CPU(中央演算処理装置)などを動作させるソフトウェア(プログラム)、或いはこれらの適宜の組み合わせによって実現することができる。
また、画像処理部20を構成する各部の機能はコンピュータによって実現することができる。すなわち、図2〜図13で説明した画像処理方法を実現する各工程は、コンピュータに実行させることができる。本実施形態で説明した画像処理機能をコンピュータに実現させるためのプログラムは、コンピュータに予めインストールされていてもよいし、当該プログラムを記憶させた磁気ディスク、光ディスク、光磁気ディスク、メモリカードその他のコンピュータ可読媒体(情報記憶媒体)を提供することも可能である。また、このような有体物たる記憶媒体にプログラムを記憶させて提供する態様に代えて、インターネットなどの通信ネットワークを利用してプログラム信号をダウンロードサービスとして提供することも可能である。
また、本実施形態で説明した画像処理機能の一部又は全部をクラウドコンピューティングによって実現することもできる。
<初期モデルを設定/更新する方法について>
眼追跡のようなオブジェクト追跡の場合、従来のテンプレートマッチング技術には次のような課題がある。
(1)最初のテンプレートをどのように設定するか。
(2)追跡対象物のサイズ変化(例えば、遠近変動によるもの)や角度変化(例えば、水平方向の回転によるも)などに対応しにくい。このため、追跡を継続できなかったり、追跡の位置誤差が生じたりする可能性がある。すなわち、例えば、人物の眼を追跡対象とした場合、顔の向きは頻繁に変化する。また、カメラに対して顔が近づいたり、遠ざかったりするため、撮像画像内における顔部品の大きさ(サイズ)が変化する。このため、追跡開始時点のアピアランス情報から生成した初期モデル(初期テンプレート)のみを用いる従来の照合方法では、顔向きの変化や遠近変動などに十分に対応できない。
その一方、直近の追跡結果から生成した更新モデル(更新テンプレート)を参照テンプレートとして使う場合、顔向きの角度変動や遠近変動には対応できるが、追跡中に位置ずれ(誤差)が累積され、位置誤差が次第に拡大していくという理論上の欠点がある。
このような課題に対し、本実施形態によればオブジェクト判別器(本例では、両眼判別器220、単眼判別器224)を用いてロックオンの処理を行い、参照テンプレート(初期モデル)を構築することができる。また、オブジェクトのサイズ変化(遠近変動)や角度(回転)変化に対して、再ロックオンを行い、参照テンプレート(初期モデル)を作り直すことができる。このときの初期モデルの変更は、例えば、オブジェクトが前向きの範囲の中にある条件で、初期テンプレート(正面前方向き)とのマッチング相関度(スコア)が所定の閾値よりも低ければ、変更を行うという態様が可能である。
さらに、本実施形態によれば、オブジェクトの角度変化(回転方向の変動)に対して、基準の角度位置による最初の参照テンプレート(例えば、正面前方向き)から円柱回転変換と射影変換とを組み合わせた変形処理を行い、オブジェクトの角度変化に対応した参照テンプレート(回転モデル)を構築することができる。
これにより、オブジェクトのサイズ変化(遠近変動)や角度(回転)変化に対してロバスト性がある初期モデルの設定が可能である。また、追跡対象のオブジェクトの遠近(サイズ)変化や角度変化に対応して、適応的に初期モデルを修正/更新することができる。
正面前向きの初期モデルを生成した際に、これと併せて予め複数の回転角度(例えば、正面前方向きを基準にして、±30度、±50度の4種類)に対応した回転モデル(角度テンプレート)を作成しておくことができる。複数の角度テンプレート群を記憶しておくことで、オブジェクトの角度推定に基づいて、最も近い角度の角度テンプレートを選択して、初期テンプレートを変更することができる。
つまり、現在使っている初期テンプレートで対応できているか否かを常に判断しており、マッチング相関度(スコア)が規定値よりも低くなったら、初期テンプレートを変更(更新)する。具体的には、再ロックオンの処理を行い、初期テンプレートを作り直す。
なお、サイズ変化や角度変化に対して適応的に初期テンプレートの作り直しを実施する態様の他、初期テンプレートの作成時に、正面向きの基準初期テンプレートから、サイズ変化、角度変化に対応した複数のテンプレートを予め作成しておき、追跡時にこれらの中から適切なテンプレートを選択して、実際に使用する初期テンプレートを更新する態様も可能である。
<本実施形態の利点>
(1)従来のテンプレートマッチング技術では、顔の遠近移動(サイズ変化)や顔向き角度の変化に対応できず、或いは、位置誤差が累積していく可能性があるが、本実施形態では、顔の遠近移動、顔向き角度の変化にも対応できる。また、初期モデルの結果を優先的に利用しつつ、更新モデルを併用し、追跡不良の場合には初期モデルを修正(再ロックオン)するため、位置誤差の累積という問題も解消されている。
(2)ドライバーの両眼を追跡する場合、ドライバーは通常、車の進行方向前方を注視することが運転時の基本姿勢(常態)であるため、ドライバーが前方を真っ直ぐに向いているときの顔向きを基準の「正面」とし、この正面前方向きの顔画像から初期モデルを作る。そして、この初期モデルを用いた追跡が追跡不良となった場合には、初期モデルを作り直すため、追跡途中の位置誤差を修正することが可能である。
(3)初期モデルによるマッチング処理を優先させつつ、初期モデルによるマッチングのスコアが第1の閾値を下まわった場合に、更新モデル(直近モデル、最新モデル)によるマッチングを併用して追跡を行うため、顔向き変動やサイズ変化(遠近変動)に対して対応可能である。
(4)また、従来、更新モデルを使い続けることによって起こりうる累積誤差については、本実施形態の場合、顔向きが正面に戻った際など、初期モデルが利用されることで解消される。このように初期モデルを優先したマルチテンプレート(初期モデルと更新モデル)の利用により、一定の頻度で誤差の累積を修正でき、追跡精度が向上する。
(5)本実施形態では、複数フレームの追跡結果を蓄積し、軌跡情報(運動予測)から、追跡停止を決めるアルゴリズムが含まれている。そして、追跡が停止された場合に、ロックオン判定の処理モードに切り替え、初期モデルの再作成を行う。こうして、適切な初期モデルに更新され、精度の高い追跡が可能である。
(6)開閉判断に用いる開き目(単眼)判別器によって検出された眼の位置情報を用いて追跡位置を修正するため、追跡精度を一層向上させることができる。
(7)本実施形態では、両眼判別器220、単眼判別器224を用い、顔部品のうち眼だけの情報を利用して、ロックオン及び追跡、並びに開閉判断を行うため、運転者がマスクを着用していても、判断が可能である。
(8)また、本実施形態によれば、機械学習により構築した開き目(単眼)判別器を用いて開閉判断を行うため、従来の方法(エッジなどを利用して開閉を判断する方法)と比較して判断精度が向上する。
<変形例1>
上記の実施形態では、追跡中、フレーム毎に常に更新モデルを作成し、常時最新の更新モデルに更新しているが、発明の実施に際しては、必ずしも、フレーム毎に常に更新モデルを作成/更新することは要求されない。適宜のフレーム間隔毎に更新モデルを更新してもよい。或いはまた、複数枚のフレームの情報から1つの更新モデルを作成してもよい。
<変形例2>
上記の実施形態では1台のカメラ12を例示したが、複数台のカメラを備えるシステムとすることも可能である。
<変形例3>
本発明の適用範囲は、ドライバーモニタリングシステムに限定されず、他の様々な用途への応用が可能である。また、上述した眼追跡の技術は、一般的なオブジェクト追跡の技術として利用可能である。用途や追跡対象物について特に制限なく、広く応用できる。
<変形例4>
テンプレートマッチングによる類似度(一致度、マッチング相関度)を表すスコアやオブジェクト判別器によるスコアについては、通常、その値が大きいほど類似の程度が高いことを示すものが用いられる。しかし、類似の程度を表す指標(評価値)の定義によっては、その値が小さいほど類似の程度が高いものとすることも可能である。したがって、スコアの値と閾値とを比較して類似性を判定するにあたっては、それぞれの数値が意味する実質的な類似性の高低に注目する。
以上説明した本発明の実施形態は、本発明の趣旨を逸脱しない範囲で、適宜構成要件を変更、追加、削除することが可能である。本発明は以上説明した実施形態に限定されるものでは無く、本発明の技術的思想内で当該分野の通常の知識を有するものにより、多くの変形が可能である。
<他に開示する発明群について>
本明細書では次に示す発明態様も開示していることを確認的に明記しておく。
(第11態様):時系列で取得される撮像画像から特定のオブジェクトを検出し、その位置を追跡するオブジェクト追跡方法であって、入力された撮像画像からオブジェクトの画像部分を特定し、オブジェクトの画像特徴を示す初期モデルを生成する初期モデル生成工程と、初期モデルの生成後に入力される撮像画像に対して少なくとも初期モデルを用いるテンプレートマッチングの処理を行い、当該撮像画像からオブジェクトの位置を探索するオブジェクト探索工程と、オブジェクト探索工程により特定された追跡位置のオブジェクトの画像部分から更新モデルを生成し、最新の更新モデルを記憶する更新モデル生成工程と、を有し、オブジェクト探索工程は、初期モデルを用いる第1のテンプレートマッチングの処理を行い、初期モデルとの類似度を示す第1のスコアを算出する第1のマッチング処理工程と、第1のマッチング処理工程によって得られる第1のスコアを第1の閾値と比較するする比較工程と、記憶された最新の更新モデルを用いる第2のテンプレートマッチングの処理を行い、更新モデルとの類似度を示す第2のスコアを算出する第2のマッチング処理工程と、比較工程による比較の結果、第1のスコアが第1の閾値と同等以上の高い類似性を示す場合は第1のマッチング処理工程により探索されたマッチング位置を追跡位置として採用する一方、第1のスコアが第1の閾値よりも低い類似性を示す場合は第2のマッチング処理工程により探索されたマッチング位置を追跡位置として採用する追跡位置決定工程と、を含む。
この態様によれば、初期モデルを用いる第1のマッチング処理と、随時更新される最新の更新モデルを用いる第2のマッチング処理とを組み合わせてオブジェクト探索が行われる。その際、基本的には、初期モデルによる第1のマッチング処理の結果が優先され、初期モデルによって第1の閾値と同等以上の位置を検出できなかった場合に、更新モデルによる第2のマッチング処理の結果が採用される。
このような構成により、追跡位置誤差の累積という問題を解消しつつ、遠近変動や角度(回転)変動にも対応できる。
「オブジェクト」の一例として「眼」を挙げることができる。
(第12態様):第11態様に記載のオブジェクト追跡方法において、初期モデルの生成後に、順次入力される各撮像画像に対して、第1のマッチング処理工程を優先して行い、比較工程による比較の結果、第1のスコアが第1の閾値と同等以上の高い類似性を示す場合は、第2のマッチング処理工程を省略する構成とすることができる。
つまり、第1のスコアが第1の閾値よりも低い類似性を示す場合に限り、第2のマッチング工程を実施する構成とすることができる。
(第13態様):第13態様又は第12態様に記載のオブジェクト追跡方法において、オブジェクト探索工程による追跡結果を基に追跡を停止するか継続するかを判断する追跡停止判断工程を含む構成とすることができる。
(第14態様):第13態様に記載のオブジェクト追跡方法において、追跡停止判断工程は、オブジェクト探索工程によって探索された追跡位置、第1のスコア、第2のスコア、オブジェクトの大きさのうち、少なくとも1つの情報に基づいて追跡停止を決定する構成とすることができる。
(第15態様):第13態様又は第14態様に記載のオブジェクト追跡方法において、追跡停止判断工程の判断に基づいて追跡を停止した場合に、初期モデルを作成し直す構成とすることができる。
(第16態様):第11態様から第15態様のいずれか1項に記載のオブジェクト追跡方法において、時系列で連続する複数フレーム分の撮像画像についての追跡結果の情報を履歴として保存する工程を含むことができる。
(第17態様):第11態様から第16態様のいずれか1項に記載のオブジェクト追跡方法において、追跡位置決定工程によって決定された追跡位置からオブジェクトの水平方向の回転角度を示す水平角度を算出する角度推定工程と、角度推定工程で算出された角度に応じて初期モデルを変更する初期モデル更新工程と、を含むことができる。
(第18態様):第17態様に記載のオブジェクト追跡方法において、初期モデル生成工程において生成した初期モデルを基に、予め複数の回転角度に対応した複数の角度対応モデルを作成しておき、角度推定工程で算出された角度に基づいて複数の角度対応モデルの中から1つの角度対応モデルを選択し、当該選択した角度対応モデルを初期モデルに代えて新たな初期モデルとして記憶する工程を含むことができる。
(第19態様):第11態様から第18態様のいずれか1項に記載のオブジェクト追跡方法において、初期モデル生成工程は、多数の画像から機械学習により構築されたオブジェクト判別器を用いて撮像画像からオブジェクトの画像部分を検出することにより初期モデルを生成する。
(第20態様):時系列で取得される撮像画像から特定のオブジェクトを検出し、その位置を追跡するオブジェクト追跡装置であって、入力された撮像画像からオブジェクトの画像部分を特定し、オブジェクトの画像特徴を示す初期モデルを生成する初期モデル生成部と、初期モデルの生成後に入力される撮像画像に対して少なくとも初期モデルを用いるテンプレートマッチングの処理を行い、当該撮像画像からオブジェクトの位置を探索するオブジェクト探索部と、オブジェクト探索部により特定された追跡位置のオブジェクトの画像部分から更新モデルを生成し、最新の更新モデルを記憶する更新モデル生成部と、を有し、オブジェクト探索部は、初期モデルを用いる第1のテンプレートマッチングの処理を行い、初期モデルとの類似度を示す第1のスコアを算出する第1のマッチング処理部と、第1のマッチング処理部によって得られる第1のスコアを第1の閾値と比較する比較部と、記憶された最新の更新モデルを用いる第2のテンプレートマッチングの処理を行い、更新モデルとの類似度を示す第2のスコアを算出する第2のマッチング処理部と、比較部による比較の結果、第1のスコアが第1の閾値と同等以上の高い類似性を示す場合は第1のマッチング処理部により探索されたマッチング位置を追跡位置として採用する一方、第1のスコアが第1の閾値よりも低い類似性を示す場合は第2のマッチング処理部により探索されたマッチング位置を追跡位置として採用する追跡位置決定部と、を備える。
第20態様のオブジェクト追跡装置において、第12態様から第19態様に示した事項と同様の構成を適宜組み合わせることができる。この場合、「工程」として示されている要素は、これに対応する手段、或いはその機能を果たす機能部として特定される。
(第21態様):第11態様から第19態様のいずれか1項に記載のオブジェクト追跡方法の各工程をコンピュータに実行させるためのプログラムを提供する。
第11態様から第21態様に示した構成によれば、従来の追跡手法による追跡位置誤差の累積拡大という問題を解消して、追跡精度の向上を達成できる。また、遠近変動や角度(回転)変動が発生した場合でもオブジェクトの位置を特定でき、追跡を行うことができる。なお、第11態様から第21態様に示した構成は、第1態様から第10態様に示した構成と適宜組み合わせることができる。