(第1実施例)
[システムブロック図]
図1は、本発明を適用した顔部位追跡装置の実施例の構成ブロック図である。この顔部位追跡装置は、顔画像撮像手段CL1と、顔部位検出手段CL2と、顔部位追跡手段CL3を備えている。
この顔画像撮像手段CL1は、乗員の顔を撮像して顔画像データを出力するようになっている。また、顔部位検出手段CL2は、顔画像撮像手段CL1から出力された顔画像データを処理して顔画像全体の中から追跡対象となる顔部位の検出特定をするようになっている。更に、顔部位追跡手段CL3は顔部位検出手段CL2よって検出された顔部位を追跡するようになっている。
この顔部位追跡手段CL3は、顔部位探査領域設定手段CL31と、顔部位位置検出手段CL32と、顔部位位置検証手段CL33と、不明顔部位探査領域設定手段CL34を備えている。
この顔部位探査領域設定手段CL31は過去フレームの顔部位位置を元に処理対象フレーム(以下、現フレーム)での顔部位の探査領域を設定するようになっている。また、顔部位位置検出手段CL32は、顔部位探査領域設定手段CL31で設定された顔部位探査領域の中に顔部位の候補を抽出し、その顔部位の候補について顔部位か否かの判定を行い、顔部位と判定されればその位置を顔部位位置として記録するようになっている。更に、顔部位位置検証手段CL33は、過去フレームおける各々の顔部位位置の位置関係を元に現フレームで検出された顔部位の位置の検証を行うようになっている。また、不明顔部位探査領域設定手段CL34は、顔部位位置検出手段CL32で顔部位の位置が特定できなかった場合、もしくは顔部位位置検証手段CL33で顔部位位置を検証をした結果、過去フレームの顔部位位置の位置関係と不整合を起こした場合に顔部位を再検出する領域を過去フレームにおける顔部位位置の位置関係から設定するようになっている。
このような顔部位追跡装置は、自動車、鉄道車両、船舶、プラントのオペレータ等の顔の向き検知に用いることができるが、以下に説明するすべての実施例で自動車の運転手の顔部位追跡について適用した場合で説明する。
[機器の配置]
図2は、この発明にかかる顔部位追跡装置の機器の配置図である。この図2において、1は自動車等の車両、2は車両1の車体、3は車両1の車室、4は車室3の車両前後方向の前端部に設けられたインストルメントパネル、5は運転席、6は運転席乗員(ドライバ)である。
インストルメントパネル4には、顔画像撮像手段CL1としてのカメラ7が設置されている。このカメラ7は、CCDやMOS等の撮像素子を用いた小型カメラで、運転者の顔を略正面から撮像できる位置に配置されている。
このカメラ7の入力画像は、本実施形態では、例えば横方向(X)640画素、縦方向(Y)480画素からなる。このカメラ7で撮像された入力画像は、インストルメントパネル4の裏側など車体2の内部に設置されたマイクロコンピュータ8に画像データとして入力される。
このマイクロコンピュータ8の図示しないROM等のメモリには、顔部位検出手段CL2及び顔部位追跡手段CL3を備えるプログラム(プログラムロジックがプログラミング)がインストールされている。尚、顔部位追跡手段CL3は、上述したように顔部位探査領域設定手段CL31と、顔部位位置検出手段CL32と、顔部位位置検証手段CL33と、不明顔部位探査領域設定手段CL34等のプログラムを備えている。
[システム全体の処理]
次に、マイクロコンピュータ8によるシステムの処理状況について説明する。
図3はシステムの全体の処理の流れを示すフローチャートである。まず、車両1のアクセサリースイッチ(図示せず)がONさせられると、マイクロコンピュータ8による処理が開始される。このマイクロコンピュータ8は、処理が開始されると、ステップS1で、プログラムを動作させるために必要なパラメータの各種初期値を設定させる「初期値入力」の処理を実行して、ステップS2に移行する。
このステップS2では、顔部位の検出が行われていないので、顔部位が見つかっているか否かを表す顔部位検出フラグGetFlagを顔部位がまだ見つかっていないことを意味するFALSEに設定し、ステップS3に移行する。
このステップS3では、処理フレームカウンタiを0に初期化して、ステップS4に移行する。
このステップS4では、「終了判断」の処理が実行され、例えばエンジンの起動判断などが行われ、ステップS5に移行する。
このステップS5では、「STOPか否か」の判断処理が実行される。そして、ステップS5において、エンジンが起動されておらず、車両が走行状態でないなどと判断された場合(YESの場合)には判断処理が終了される(END)。また、ステップS5において、エンジンが起動され走行しているなどと判断されればNOとなり、ステップS6に移行する。
このステップS6においてマイクロコンピュータ8は、運転席乗員6の顔6aの画像(顔画像)をカメラ7で撮像させ、この撮像した顔画像をカメラ7から入力させ、入力された画像フレーム全体を全体画像として画像メモリ(図示せず)に保存し、ステップS7に移行する。
このステップS7では、顔部位検出フラグGetFlagがFALSEか否かを判断し、顔部位がまだ検出されていない場合、GetFlagがFALSE(YES)であるのでステップS8に移行して顔部位検出処理を実行し、ステップS9に移行する。また、ステップS7では、顔部位が既に検出されている場合、GetFlagがTRUE(NO)であるので、ステップS10に移行して、顔部位追跡処理を行い、ステップS9に移行する。
このステップS9では処理フレームカウンタiをインクリメントし、終了判断ステップS4に処理が戻る。
[顔部位検出処理]
次に、図3のステップS8における顔部位検出処理を図4のフローチャートを用いて説明する。
まず、図4のステップS81では、顔部位の候補の位置の特定(顔部位候補の位置特定)の処理が実行され(図5で詳述)、ステップS82に移行する。
このステップS82では、ステップS81で特定された顔部位候補のうち判定を行う顔部位の選定を行い、ステップS83に移行する。尚、ステップS8において、顔部位検出処理を開始した直後は、判定された全ての顔部位候補(例えば、左眼、右眼、眉、鼻、口、耳)が判定対象となるが、顔部位の判定を行って顔部位と判定された顔部位候補は次の顔部位の判定では判定対象の顔部位候補点からはずされていく。
ステップS83では、判定を行う顔部位を設定して、ステップS84に移行する。例えば、判定を行う顔部位として左眼、右眼、眉、鼻、口、耳等の複数の部位があり、この複数の部位を順に判定を実行する場合、ステップS8の顔部位検出処理を開始した直後のステップS83では先ず判定を行う顔部位として左眼のパラメータを設定して、ステップS84に移行する。
そして、ステップS84では、先ず顔部位として左眼の顔部位判定処理を行い(図11で詳述)、ステップS85に移行する。
ステップS85では、ステップS84の顔部位判定処理の結果、顔部位と判定されたか否かを判断し、顔部位と判定された場合はYESとなってステップS86に移行し、ステップS85で顔部位と判定されなかった場合はNOとなってステップS89に移行する。
ステップS86では判定対象の顔部位(左眼、右眼、眉、鼻、口、耳等)の全てを判定し終えたか否かを判断し、判定対象の顔部位の全てを判定し終えたと判定された場合はYESとなり、ステップS87に移行する。また、判定対象の顔部位の全てを判定し終えていないと判定された場合はNOとなり、処理をステップS82の「判定を行う顔部位候補点の選定処理」へ戻ってループして、まだ、判定を行っていない顔部位(右眼、眉、鼻、口、耳等)について顔部位判定を行っていく。
即ち、ステップS83では、ステップS82〜ステップS86をループする毎に判定を行う顔部位として右眼のパラーメータ、眉のパラーメータ、鼻のパラーメータ、口のパラーメータ、耳のパラーメータを順に設定し、このステップS83で設定された顔部位の判定処理をステップS84で実行する。
そして、ステップS87では、顔部位検出フラグGetFlagをTRUEに設定して、ステップS88に移行する。このステップS88では、各々の顔部位の位置関係の取得処理(後述)を行ってステップS9に処理を進める。
ステップS89では、選定された顔部位(左眼、右眼、眉、鼻、口、耳等)の候補を全て判定したか否かを判断し、選定された顔部位の候補を全て判定したと判断した場合はYESとなりステップS9に処理を進める。また、選定された顔部位の候補を全て判定していないと判断した場合はNOとなり、処理を顔部位判定処理ステップS84へ戻し、まだ判定していない顔部位の候補を判定する。
[顔部位の候補の位置の特定の処理]
上述した図3のステップS8の顔部位検出処理は図4のフローチャートに従って実行され、図4のステップS81の顔部位の候補の位置の特定の処理は図5のフローチャートに従って実行される。
次に、この顔部位の候補の位置の特定の処理を、図5のフローチャートと図6〜図10を用いて次に説明する。尚、この処理では、顔部位候補の重心を求め、存在領域EAを設定する。
図5のステップS811では、図3のステップS6で画像メモリ(図示せず)に保存された顔部位の画像(左眼、右眼、眉、鼻、口、耳等のいずれかの画像、ここでは左眼の画像)のデータを読み出して、ステップS812に移行する。
ステップS812では、読み出した画像を複数の縦方向のラインで横方向(X方向)に等ピッチに分割し、分割された複数の縦方向のライン毎にポイント抽出を行い、分割された複数の縦方向の全ラインでのポイント抽出が終了したか否かを判断する。
このステップS812では、全ラインにおいてポイント抽出が行われていないと判断された場合、ステップS813に移行する。
このステップS813では、縦方向(Y軸方向)の1ラインの濃度値の相加平均演算を行い、ステップS814に移行する。この処理は、画像データ撮影時の濃度値の変化の小さなバラツキを無くすことを目的としており、濃度値の大局的な変化を捉えるためである。
ステップS814では、ステップS813の演算結果である相加平均値における微分演算を行い、ステップS815に移行する。
このステップS815では、ステップS814の演算結果である微分値によりポイント抽出を行い、ステップS816に移行する。
この様なポイント抽出処理が1ラインについて終了した後、ステップS816で、次のラインの処理に切り替えて行く。(ステップS813〜S816の詳細については、特許第3312562号(特開平10−040361)図6、図7参照。)
そして、ステップS812で全ラインのポイント抽出が終了したと判断されると、ステップS817へ移行する。
このステップS817では、隣合う各ラインの抽出ポイントのY座標値を比較し、Y座標値が所定値以内の場合、連続データとして、
「(1)連続データのグループ番号、
(2)連続開始ライン番号、
(3)連続データ数、
(4)連続データを構成する各抽出ポイントの縦方向(Y方向)位置の平均値(その連続データの代表上下位置)、
(5)連続開始ラインと終了ラインの横方向(X方向)位置の平均値(その連続データの代表左右位置)」等をメモリする。
ここでの検出対象は顔部位のうち左眼としているため、その特徴量は横に比較的長く続くデータであるといえるので、横方向に所定値以上続くことを条件に連続データを選択することができる。
このようにして選択した顔の特徴量を連続データGとして表したものを図6に示す。なお、連続データGの抽出方法をフローチャートの流れのみで簡単に説明したが、処理状態の詳細については、「特開平10−40361号」「特開平10−143669号」などにも記載されている。
この連続データGがいわば顔部位の候補となり、この連続データGの代表座標C(例えば中心座標)の部分が顔部位の候補点(代表位置座標)となる。
次にステップS818において、図6に示すような各連続データGの代表座標Cを基準に各連続データGを含む存在領域EAを設定する。この存在領域EAは、次のようにして決定する。
(存在領域EAの大きさの決め方)
この存在領域EAの大きさは、図7〜図10のようにして決めている。図7は存在領域EAの大きさを示し、図8,図9は数人の顔部位の大きさを調べた横、縦の長さの統計データを示している。
ここで存在領域EAの大きさはノイズ(顔の皺や明暗などを抽出してしまう)の低減や処理速度を落とさないためにも、可能な限り小さい領域が良い。現在の居眠り検出などの処理で使っている大きさは数人の顔部位の大きさを調べ、それに余裕分(例えば×1.5倍)を加味した大きさにしている。数人の顔部位の大きさを統計的に求める方法としては、図8,図9のように、顔部位の縦横寸法のデータを集め、その分布の例えば95%をカバーする寸法に余裕分をみて決定する方法が考えられる。そしてこの95%をカバーする寸法、すなわち横寸法xa、縦寸法yaに図7のように余裕分(×1.5)をみて決定している。尚、画像処理により顔部位の幅や高さを推定し、縦横の大きさに余裕分を加える方法も考えられる。
(存在領域EAの位置の決め方)
図10は、例えば顔部位のうち左眼の存在領域EAを位置決めする方法について示している。眼の座標値(x1,y1)を基準に、距離x2,y2の位置に存在領域EAを描く基準点Pを決め、P点から予め決めておいた存在領域EAの寸法x3,y3を描画し、位置を決める。x2及びy2はx3,y3の1/2で予め存在領域EAが眼の中心にくるような長さとしている。尚、存在領域EAを画像全体で見つかった連続データGすべてについて設定する。
[顔部位判定処理(眼)]
図4のステップS84の顔部位判定処理は、図11のフローチャートに従って領域EA内で顔部位候補の特徴を抽出し、テンプレートと比較して顔部位候補が顔部位(眼)であるかどうかを判定する。
次に、この顔部位判定処理を、図11のフローチャートと図12〜図14を用いて説明する。
まず、図11のステップS8401では、ステップS818で求められた顔部位の候補点の存在領域EAの画像データを微小画像IGとして画像メモリ(図示せず)に保存し、ステップS8402に移行する。尚、全体画像と画像メモリ(図示せず)に保存される微小画像IGの状態を図12に示す。
次にステップS8402では、図13の微小画像IGの代表座標ICを基準とした範囲ARの濃度情報をもとに二値化閾値を設定し、ステップS403に移行する。
尚、図13の連続データGを基準とすれば図6のCが代表座標になる。また、範囲ARは、前記存在領域EAより小さく、二値化閾値を正確に設定できるようにしている。
この範囲ARでの二値化閾値の算出方法の一例を、図13を用いて説明する。範囲ARにおいて縦方向のラインを横方向に等ピッチで複数設定して、複数の縦方向のラインの濃度値の読み出しを行う。図13では、この縦方向へのラインが横方向に等ピッチで4本あることを示している。この各ラインにおいて濃度値の最も高い(明るい)濃度値と、最も低い(暗い)濃度値をメモリして行き、全ラインのメモリが終了したら、各ラインの最も高い(明るい)濃度値の中で、一番低い濃度値(皮膚の部分)と、各ラインの最も低い(暗い)濃度値の中で、一番低い濃度値(眼の部分)とを求め、その中央値を二値化閾値とする。
この二値化閾値のための範囲ARは、眼の黒い部分と眼の周囲の皮膚の白い部分が入るように設定し、また、画像の明るさのバラツキによる影響を少なくするために必要最小限の大きさにしている。また、二値化閾値は、その領域内の眼の一番低い(暗い)濃度値と、皮膚の部分の一番低い(暗い)濃度値の中央値とすることで、皮膚の部分から眼の部分を切り出すのに適した値になる。
さらに、二値化閾値を決定するのに皮膚の部分の濃度値の一番低い(暗い)濃度値を用いている理由は、次の通りである。前述したように眼の周囲の明るさのバラツキによる影響を少なくするために、濃度値を読み出す範囲ARを極力小さくしていても、該範囲ARの一部に直射光が当たっているような部分が外乱として入ることがあり、この部分を二値化閾値の決定に用いないようにするためである。
ステップS8403では、こうして決定した二値化閾値を用いて図12の微小画像IGを二値化処理して、図14(a)に示したような二値画像bGとして画像メモリ(図示せず)に保存し、ステップS8404に移行する。このような二値化閾値を用いて二値化した顔部位候補を設定することにより、顔部位候補の幾何形状を用いて顔部位の判定をより正確に行うことができ、顔部位の位置検出精度をより向上することができる。
次にステップS8404では、二値画像bGの位置bC(図6の連続データGの代表座標Cに相当)を初期位置に設定して、ステップS8405に移行する。
このステップS8405では、設定位置が黒画素か否かを判定し、設定位置が黒画素と判定されればYESとなり、処理をステップS8406に移行する。また、設定位置が黒画素と判定されなければNOとして、ステップS8413に移行する。このステップS8413では、設定位置を上下左右に1画素ずつずらして、ステップS8405に戻って再度、設定位置が黒画素か否かのを判定を行い、設定位置が黒画素になるまで、ループする。
そして、ステップS8406では、その黒画素を包括する連結成分を候補オブジェクトとして設定し、ステップS8407に移行する。
このステップS8407では、候補オブジェクトの幾何形状を算出し、ステップS8408に移行する。
このステップS8408では、特定したい顔部位テンプレートの幾何形状と候補オブジェクトの幾何形状を比較し、ステップS8409に移行する。尚、このステップS8408の候補オブジェクトと顔部位テンプレートの幾何形状の比較方法の一例を眼の場合について図14を用いて説明する。
眼の二値化した形状は光環境が良く安定した画像であれば図14の(a)に示すようなものになるが、車室内に直射日光が一側から当たる等して光環境が悪化した時は、図14の(b)や(c)のような形状になることもある。
眼のテンプレートは、横幅が眼の相場値の2/3以上あり、且つ上に凸の所定範囲の曲率を持っていることの条件(1)と、黒眼の左側の凹み形状条件の(2)と、黒眼の右側の凹み形状条件の(3)とを組み合わせることにより設定し、図14の(b),(c)の例を許容するために(1)と(2)、または(1)と(3)の条件を満たすものであっても良いものとする。
ステップS8409では、ステップS8408の結果、候補オブジェクトと顔部位テンプレートの幾何形状が一致するか否かを判定する。このステップS8409の判定において、候補オブジェクトと顔部位テンプレートの幾何形状が一致する場合はYESであるので、その候補オブジェクトをステップS8410で顔部位と判定してステップS8411に移行する。
また、ステップS8409の判定において、候補オブジェクトと顔部位テンプレートの幾何形状が一致しない場合はNOであるので、ステップS8414でその候補オブジェクトを顔部位ではないと判定し、図4のステップS85に移行する。
ステップS8411では、顔部位と判定された候補オブジェクトの連続データGでの代表座標Cをこの画像フレーム(図示せず)での顔部位の代表座標としてメモリし、ステップS8412に移行する。
ステップS8412では、顔部位だと判定された代表候補点の微小画像IGを顔部位画像MGiとして画像メモリ(図示せず)に保存し、ステップS85に移行する。
この様なステップS8401〜ステップS8414の処理は左眼および右眼について順に実行される。
[顔部位判定処理(眉)]
このような左眼および右眼処理が終了すると、領域EA内で顔部位候補を特徴として眉の部位を抽出し、テンプレートと比較して顔部位候補が顔部位の眉であるかどうかを判定する。
即ち、前処理で眼が検出された後、眉の検出を行う。この眉検出の方法を図18を使って説明する。即ち、眼と判定された点より上側に存在する連続データを眉の候補とする。眼の上に存在する連続データとしては眼鏡のフレームや額のしわ、髪の毛などがある。「(1)画像上ほぼ同じ高さの左右に存在する。
従って、
「(2)左右でほぼ同じ横幅になる。
(3)眼の周りで閉じていない。」
といった条件をクリアした顔部位候補が眉であると判定される。
[顔部位判定処理(鼻)]
次に鼻の部位を領域EA内で顔部位候補として特徴を抽出し、テンプレートと比較して顔部位候補が顔部位の鼻であるかどうかを判定する。
この前処理で眼が検出された後、鼻の検出を行う。この鼻検出の方法を図15を使って説明する。
先ず、検出された眼の眼間線分の垂直二等分線dvを求める。その垂直二等分線上で眼より下側に存在する連続データを顔部位(鼻)候補とする。図15では二カ所が顔部位(鼻)候補として設定される。顔部位候補となった連続データの代表座標点を中心にした領域を微小画像として抽出する。そして、抽出された微小画像を二値化する。二値化閾値は判別分析法などを用いて決定することができる。この二値化された微小画像の中から鼻孔nhに相当するオブジェクトNHの抽出を行う。
そして、顔部位が鼻であるか否かの判定は、
「(1)微小画像内にオブジェクトNHが略水平位置に左右に並んで2つペアで存在する。
(2)一つの鼻孔nh(オブジェクトNH)は縦長より横長の方が大きい。
(3)鼻孔nh(オブジェクトNH)は左右ほぼ同サイズ。」
といった条件で判定していく。その結果、図15の例では上側の顔部位(鼻)候補が鼻であると判定される。
[顔部位判定処理(口)]
次に、この処理では、存在領域EA内で顔部位候補の特徴を抽出し、テンプレートと比較して顔部位候補が顔部位(口)であるかどうかを判定する。
前処理で鼻が検出された後に口の検出を行う。この口検出の方法を図16、図17を使って説明する。鼻検出時に求めた眼間線分の垂直二等分線dv上にあり、前処理で鼻と判定された顔部位より下側に存在する連続データが顔部位(口)候補となる。
図16においては鼻より下方には連続データが1つしか存在しないため、この連続データが口であると判定される。しかしながら、図17に示すように鼻の下側にも複数の連続データが抽出されることが多々ある。
この抽出されるものとしては、
「・図17(a)〜(図17d)に示した上唇上側の境界線(GM−1)、
・図17(a)の閉口時の上唇と下唇の境界線(GM−2)、
・図17(b)〜(d)の開口時の上唇の下側境界線(GM−2)、
・図17(b)〜(d)の開口時の下唇の上側境界線(GM−3)、
・図17(a)の下唇下側の境界線(GM−3)、
・図17(b)〜(d)の下唇下側の境界線GM−4、
・図17(a)の唇下のくぼみ(GM−5)、
・図17(b)〜(d)の唇下のくぼみ(GM−5)」
などがある。
このうち、口として認識されたいのは閉口時の上唇と下唇の境界線、開口時の上唇の下側境界線または下唇の上側境界線である。これはいずれのケースも出てきた連続データの中でもっとも長い連続データが該当する。よって、図17(a),図17(b)ではGM−2、図17(c),図17(d)ではGM−3が口と判定される。
[顔部位判定処理(耳)]
この顔部位判定処理では、存在領域EA内で顔部位候補の特徴を抽出し、テンプレートと比較して顔部位候補が顔部位が耳であるかどうかを判定する。
この場合、前処理で鼻および口が検出された後に耳の検出を行う。この耳検出の方法を図19を使って説明する。
先ず、図19に示したように鼻と口の顔部位位置を結んだ直線を顔中心線dvcとする。顔中心線dvcから左右に白ぽい画素から黒ぽい画素への変化点を抽出していく。そして、変化点を結んでいき縦方向に長さのある変化点の集合を顔の輪郭線OLとする。この輪郭線OLの最外部を耳Eの位置とする。
[各々の顔部位の位置関係の取得処理]
また、図4のステップS88では、各々の顔部位の位置関係の取得処理を実行するために、ステップS87までの処理で取得された各々の顔部位の位置から顔部位(左眼、右眼、眉、鼻、口、耳等の部位)同士の位置関係(距離と方向)を求める。
この顔部位同士の位置関係(距離と方向)を示す方法としては、お互いの顔部位の横方向距離と縦方向距離で表す方法と、顔部位間線分の長さと画像水平線に対する顔部位間線分の傾きで表す方法の2種類がある。
この2種類の位置関係を示す方法について図20、図21に左右の眼に適用したものを図示している。
図20では、左右の眼の中心位置(視軸)から横方向距離(Gankankyori.x)と縦方向距離(Gankankyori.y)によって左右の眼の位置関係を表している。
図21では、左右の眼の中心位置(視軸)から顔部位間(眼間)線分の長さ(Gankankyoriすなわち瞳孔間距離PD)、と画像水平線に対する顔部位間(眼間)線分の傾き(GankanSlant)よって左右の眼の位置関係を表している。
[顔部位追跡処理]
図3のステップS10の顔部位追跡処理を図22と図23のフローチャートを用いて説明する。
図22のステップS1001では、図22Aに示したような顔部位探査領域の設定の処理が実行され、ステップS1002に移行する。この顔部位探査領域は、眉,眼,鼻,耳,口等の顔部位Fに対して順に設定される。この際、顔部位探査領域は、眉,眼,鼻,耳,口等の顔部位F(図22A〜図22Gでは眼を例とする。)の代表座標ICを中心として所定の大きさを有するように設定される。尚、顔部位探査領域は、図6,図12の存在領域EA(図7〜図10)を求める場合と同じようにして求められる。
ステップS1002では、ステップS1001で設定された顔部位探査領域内に顔部位の候補の位置の特定の処理が実行され、ステップS1003に移行する。この際、図22Bに示したように顔部位探査領域を含む顔部位検出領域が設定される。
ステップS1003では、顔部位探査領域(ステップS1001で設定された領域)内に存在する顔部位候補の位置の処理について、顔部位の判定・位置検出処理が実行され、ステップS1004に移行する。この際、図22Cに示したように、顔部位検出領域内での顔部位候補F′の検出と、その代表位置座標ICDの算出が実行されると共に、代表位置座標ICDの位置に基づいて判定が行われる(後述)。
このステップS1004では、追跡対象の顔部位の全てを判定し終えたか否かを判断し、追跡対象の顔部位の全てを判定し終えたと判定された場合はYESであるので、ステップS1005に処理を進める。また、追跡対象の顔部位の全てを判定し終えていないと判定された場合はNOであるので、処理を顔部位探査領域の設定処理ステップS1001へ戻し、まだ、判定を行っていない顔部位について顔部位探査領域の設定、顔部位の候補の位置の特定、顔部位候補顔部位判定を行っていく。
このステップS1005では、追跡対象の顔部位の全てを検出できたか否かを判断し、追跡対象の顔部位の全てを検出できた場合はYESとなり、ステップS1006に処理を進める。また、追跡対象の顔部位の一部もしくはすべて検出できなかった場合はNOとなり、図23のステップS1010に処理を進める。
ステップS1006では、検出された顔部位の位置関係と過去フレームで確定された顔部位の位置関係を比較して、現フレームで検出された顔部位位置が正しいか否かを検証する顔部位位置関係検証処理を実行し(後述)、ステップS1007に移行する。
このステップS1007では、ステップS1006で検証された現フレームの検出された顔部位の位置関係と過去フレームにおいて確定された顔部位の位置関係とに不整合があるか否かを判断する。そして、不整合がない場合にはYESとなり、ステップS1008に移行する。また、不整合がある場合には、NOとなり、図23のステップS1010に移行する。
ステップS1008では、検出された各々の顔部位の位置関係を確定する処理を行って、その情報をメモリ(図示せず)に記録し、ステップS1009に移行する。このステップS1009では、不検出カウンタを0に初期化し、ステップS9へと処理を進める。尚、不検出カウンタは顔部位が検出できない連続処理数をカウントするものである。
また、図23のステップS1010では、ステップS1005のNO,ステップS1007のNOの処理を受けて、再検出を行う顔部位の組み合わせがあるか否かを判断する。そして、再検出を行う顔部位の組み合わせがある場合には、YESとなり、処理を顔部位探査領域の設定処理ステップS1001へ戻して、再検出する顔部位について顔部位探査領域の設定、顔部位の候補の位置の特定、顔部位候補顔部位判定を行っていく。また、再検出を行う顔部位の組み合わせがない場合には、ステップS1010のNOはステップS1011(図23のステップS1010のNOの後)に処理を進める。
このステップS1011では、不検出カウンタをインクリメントし、ステップS1012に移行する。
このステップS1012では、不検出カウンタが顔部位再検出処理移行数を越えたか否かを判断する。この顔部位再検出処理移行数は、システムの処理速度,処理精度によって設定される値が異なってくる。しかし、ほぼビデオレートで処理ができ、顔部位の検出率(顔部位を顔部位として判定する率)が90%程度であれば、顔部位再検出処理移行数を15から30程度に設定すると、顔部位を見失ったあと0.5秒から1秒程度で顔部位の再検出ができるようになる。
そして、ステップS1012において、不検出カウンタが顔部位再検出処理移行数を越えたと判断された場合には、YESとなりステップS1013に移行する。また、不検出カウンタが顔部位再検出処理移行数を越えていないと判断された場合には、NOとなりステップS9に処理を進める。
ステップS1013では、顔部位検出フラグGetFlagをFALSEに設定して、ステップS1014に移行する。
このステップS1014では、不検出カウンタを0に初期化し、ステップS9に処理を進める。
[顔部位探査領域の設定]
次に、顔部位探査領域の設定ステップS1001を図24のフローチャートを用いて説明する。
図24のステップS10011では、顔部位の代表座標を顔部位探査領域の中心位置として設定して、ステップS10012に移行する。
このステップS10012では、顔部位探査領域の中心位置を中心に、所定の大きさの顔部位探査領域を設定して、ステップS10013に移行する。
このステップS10013では、ステップS10011で設定した中心位置およびステップS10012で設定した大きさに基づいて顔部位探査領域の領域設定を行い、ステップS1002に移行する。
[顔部位探査領域、優先顔部位探査領域]
図25には顔が正面を向いているときの各フレームの左眼の位置とその左眼の位置がどのように移動しているかを示している。即ち、運転席乗員の顔を図25(a)の正面を向いている状態から図25(b),図25(c),図25(d)と右に少しずつ回して行ったとき、運転席乗員のアイポイントはEp1からEp4まで右側(図25では左側)に大きく移動している。このアイポイントEp1からEp4のみを図示すると、図25(e)のようになる。
また、図26には、顔が正面から左に向くときの各フレームの左眼の位置とその左眼の位置がどのように移動しているかを示している。即ち、運転席乗員の顔を図26(a)の正面を向いている状態から図26(b),図26(c),図26(d)と右に少しずつ回して行ったとき、運転席乗員のアイポイントはEp1からEp4まで左側(図26では右側)に僅かずつ移動している。このアイポイントEp1からEp4のみを図示すると、図26(e)のようになる。
これからも判るように顔が一方向を向いている時は顔の部位は狭い範囲で滞留し、ある方向から別の方向へ顔の向きを変える時に顔部位は大きく移動する。
図27には、顔が正面を向いていて左眼がほぼ1点に滞留しているとき[軌跡(1)]と顔を左下に向けたとき[軌跡(2)]のビデオレート(30フレーム/秒)でサンプリングした時の座標をプロットしたグラフを示してある。また、図28には、軌跡(1),軌跡(2)についての1フレーム30ms及び1フレーム60msあたりの移動量の統計値を示してある。この統計値には、X,Y方向における平均,標準偏差,3σ移動量,最大移動量等の値を示している。尚、画像サイズ640×480、顔の画像内のサイズは図25、図26と同サイズである。
この図28に示した統計値によると、正面を向いているときのフレーム間の座標の移動量は最大数画素程度であり、顔が別方向を向くために動いている時は最大十数画素動くことがわかる。
このような顔の動きに基づいて、基準顔部位探査領域は、顔がある方向から別の方向へ顔の向きを変えるときのように大きく動いているときに、次の処理時に顔部位が入ってくるような領域とする。また、優先顔部位探査領域は、顔が一方向を向いているときに顔部位が画像上で滞留するような動きをするときに、次の処理時に顔部位が入ってくるような領域とする。
図29は、顔部位探査領域、優先顔部位探査領域の構造の一例を図示したものである。まず、領域の大きさであるが、基準顔部位探査領域は中心から片側幅H1、片側高V1、優先顔部位探査領域は中心から片側幅H2、片側高V2、となっている。
領域の大きさはシステムの処理速度、処理精度によって設定される値が異なってくるが、前述の例ではH1は30から50画素、V1は20から30画素、H2は10から15画素、V2は5から10画素程度に設定すればよい。
次に領域の中心、即ち、顔部位探査領域、優先顔部位探査領域の中心は原則として前処理時の顔部位位置としている。しかし、顔の動きが速い場合は顔部位の移動量に応じて補正しなければならない。
また、図30に示すように前々処理の顔部位座標と前処理の顔部位座標の差dx、dyが小さいときは前処理時の顔部位座標を領域の中心の座標とする。
しかし、図31に示すように前々処理の顔部位座標と前処理の顔部位座標の差dx、dyが大きいときは前処理の顔部位位置座標からdx、dy分だけシフト補正した位置を領域の中心の座標とする。補正をするしないの判断はdx、dyの値が顔部位探査領域の片側幅、片側高の半分(H1/2、V1/2)程度より大きいか否かで判断できる。
図32、図33に実際の処理状況を示す。図32は顔が正面を向いていて、ほとんど顔部位が動かないような状況を示し、図33は顔が正面から左に向く動きをしているときの状況を示している。どちらの図とも上側が処理画像全体を表し、下側は上側の画像の左眼の周囲を拡大して詳細に表している。(画像処理として拡大しているわけではなく、説明上便宜的に拡大した画像を示しているにすぎない。)
[顔部位の候補の位置の特定の処理]
顔部位の代表座標C(例えば図16参照)を中心に顔部位探査領域を囲む大きさを有する顔部位検出領域が設定され、顔部位検出領域内で顔部位の候補の位置の特定の処理が実行される。
そして、図3のステップS10における顔部位追跡処理は図22のフローチャートに従って実行され、図22のステップS1002においては基準顔部位の候補の位置の特定の処理が実行される。尚、ステップS1002における基準顔部位の候補の位置の特定の処理は、ステップS8の顔部位検出処理の顔部位の候補の位置の特定の処理と画像処理する領域が異なるだけで、処理自体は図5のステップS81の顔部位検出処理の顔部位の候補の位置の特定の処理と同等なので説明を省略する。
[顔部位の判定と位置検出処理]
次に、ステップS1003の顔部位の判定と位置検出処理を図36、図37のフローチャートを用いて説明する。
まず、図36のステップS100301では、優先顔部位探査領域の設定の処理が実行され(後述)、ステップS100302に移行する。
このステップS100302では、顔部位候補の代表座標(代表位置座標)Cが優先顔部位探査領域内にあるか否かの判断処理が行われる。この際、図22Cに示したように、顔部位検出領域内での顔部位候補F′の検出と、その代表位置座標ICDの算出が実行されると共に、代表位置座標ICDが優先顔探査領域内にあるか否かが判定される。そして、顔部位候補の代表座標Cが優先顔部位探査領域内にあると判断された場合は、YESとなりそのステップS100303で顔部位候補は顔部位と判定される。また、顔部位候補の代表座標Cが優先顔部位探査領域内にないと判断された場合は、NOとなり図37に示すステップS100308の「微小画像の濃度による顔部位判定処理」へ処理を進める。
ステップS100303で顔部位候補は顔部位と判定されたあと、ステップS100304では顔部位と判定された顔部位候補の存在領域EAを微小画像IGとして画像メモリ(図示せず)に保存し、ステップS100305に移行する。
このステップS100305では、顔部位と判定された顔部位候補の代表座標Cを顔部位座標としてメモリし、ステップS100306に移行する。
このステップS100306では、微小画像IGを顔部位画像MGiとして画像メモリ(図示せず)に保存し、ステップS1004に処理を進める。
また、図37のステップS100308では微小画像の濃度による顔部位判定処理が実行され(後述)、ステップS100309に移行する。この顔部位判定処理では微小画像IGが図22Aの顔部位検出領域と対応する。
ステップS100309では、ステップS100308における微小画像の濃度による顔部位判定処理の結果、顔部位と判定されたか否かを判断する。そして、顔部位と判定された場合は、YESとなり図36に示すステップS100305へ処理を進める。また、ステップS100309で顔部位と判定されなかった場合は、NOとなりステップS100310の存在領域EAの周波数画像による顔部位判定処理へ処理を進める。
このステップS100310では、存在領域EAの周波数画像による顔部位判定処理が実行され(後述)、ステップS100311に移行する。
このステップS100311では、ステップS100310の存在領域EAの周波数画像による顔部位判定処理の結果、顔部位と判定されたか否かを判断する。そして、顔部位と判定された場合は、YESとなり図36に示すステップS100305へ処理を進める。また、ステップS100311で顔部位と判定されなかった場合は、NOとなりステップS100312の候補オブジェクトの幾何パラメータによる顔部位判定処理へ処理を進める。
このステップS100312では、候補オブジェクトの幾何パラメータによる顔部位判定処理が実行され(後述)、ステップS100313に移行する。
このステップS100313では、ステップS100312の候補オブジェクトの幾何パラメータによる顔部位判定処理の結果、顔部位と判定されたか否かを判断する。そして、顔部位と判定された場合は、YESとなり図36に示すステップS100305へ処理を進める。また、ステップS100313で顔部位と判定されなかった場合は、NOとなりステップS100314へ処理を進める。
このステップS100314では他に顔部位候補があるか否かの判断処理が行われる。そして、他に顔部位候補がある場合はYESとなり図36に示すステップS100302へ処理を戻し、まだ判定の行っていない顔部位候補について顔部位候補の代表座標Cが優先顔部位探査領域内にあるか否かの判断処理を行う。また、他に顔部位候補がない場合は、NOとなりステップS1004へ処理を進める。
[優先顔部位探査領域の設定]
次に、図36の優先顔部位探査領域の設定ステップS100301を、図38のフローチャートを用いて説明する。
図38のステップS1003011では、不検出カウンタが優先顔部位探査領域非設定数を越えたか否かを判断する。この際、優先顔部位探査領域非設定数は顔部位が追跡できていないと判断するのに必要な数であり、システムの処理速度、処理精度によって設定される値が異なってくるが、ほぼビデオレートで処理ができ、顔部位の検出率(顔部位を顔部位として判定する率)が90%程度であれば3〜5に設定できる。
そして、ステップS1003011で不検出カウンタが優先顔部位探査領域非設定数を越えたと判断された場合、YESとなり優先顔部位探査領域を設定せずにステップS100302に処理を進める。また、ステップS1003011で不検出カウンタが優先顔部位探査領域非設定数を越えていないと判断された場合、NOとなりステップS1003012へ処理を進める。このステップS1003012では、優先顔部位探査領域の領域設定を行い、ステップS100302に処理を進める。
[微小画像の濃度による顔部位判定処理]
図37のステップS100308における微小画像の濃度による顔部位判定処理(顔部位判定方法)を図39のフローチャートを用いて説明する。(この微小画像の濃度による顔部位判定処理についての詳細は、特開2004−341953を参照。)
まず、図39のステップS10030801では、顔部位の候補点の存在領域EAの画像データを微小画像IGとして画像メモリ(図示せず)に保存し、ステップS10030802に移行する。
このステップS10030802では、微小画像IGの濃度データと1フレーム前の顔部位画像MGi−1の濃度データから類似度パラメータの算出を行い、ステップS10030803へ移行する。次に、この「微小画像IGの濃度データと1フレーム前の顔部位画像MGi−1の濃度データから類似度パラメータの算出方法」の一例を説明する。
ここで、微小画像IGの画素の濃度をI(m,n)、1フレーム前の顔部位画像MGi−1画素の濃度をT(m,n)、それぞれの画像サイズをM×Nとしたとき、
[数1]
N M
R=ΣΣ{I(m,n)−T(m,n)}
n=0 m=0
で求められる残差和Rを類似度パラメータとする。この残差和Rは2枚の画像の類似性が高いと値が小さくなり、類似性が低いと大きくなることから、閾値をもうけて残差和Rが閾値よりも小さいと類似性が高いと判断できる。
ステップS10030803では、ステップS10030802の結果、微小画像IGと顔部位画像MGi−1の類似度は高いか否かを判定する。そして、微小画像IGと顔部位画像MGi−1の類似度が高い場合は、YESとなりステップS10030804へ処理を進める。また、微小画像IGと顔部位画像MGi−1の類似度が高くない場合、NOとなりステップS10030805に処理を進める。
ステップS10030804では、その存在領域EAを顔部位と判定して、処理をステップS100309へ進める。
また、ステップS10030805では、その存在領域EAを顔部位ではないと判定し、処理をステップS100309へ進める。
[微小画像の周波数画像による顔部位判定処理]
次に、図37のステップS100310の微小画像の周波数画像による顔部位判定処理(顔部位判定方法)を図40のフローチャートを用いて説明する。
まず、図40のステップS10031001では、顔部位の候補点の存在領域EAの画像データを微小画像IGとして画像メモリ(図示せず)に保存し、ステップS10031002に処理を進める。
このステップS10031002では、微小画像IGを周波数処理した周波数画像IFGを生成して画像メモリ(図示せず)に保存し、ステップS10031003に処理を進める。
このステップS10031003では、前処理での顔部位画像MGi−1を周波数処理した顔部位周波数画像BIFGを生成して画像メモリ(図示せず)に保存し、ステップS10031004に処理を進める。この周波数画像BIFGの生成はフーリエ変換やウェーブレット変換などを利用することができる。尚、詳細な変換処理は画像処理技術の一般的な手法なのでここでは省略する。
次にステップS10031004では、周波数画像IFGの濃度データと顔部位周波数画像BIFGの濃度データから類似度パラメータの算出を行い、ステップS10031005に処理を進める。尚、ステップS10031002の周波数画像IFGの濃度データと顔部位周波数画像BIFGの濃度データから類似度パラメータの算出方法は、ステップS100308の「微小画像の濃度による顔部位判定処理」の方法と同様である。
また、ステップS10031005では、ステップS10031004の結果、周波数画像IFGと顔部位周波数画像BIFGの類似度が高いか否かを判定する。そして、周波数画像IFGと顔部位周波数画像BIFGの類似度が高い場合は、YESとなりステップS10031006に処理を進める。また、周波数画像IFGと顔部位周波数画像BIFGの類似度は高くない場合は、NOとなりステップS1003007に処理を進める。
ステップS10031006では、存在領域EAを顔部位と判定し、処理をステップS100311へ進める。また、ステップS1003007では、存在領域EAを顔部位ではないと判定し、処理をステップS100311へ進める。
[候補オブジェクトの幾何パラメータによる顔部位判定処理]
また、図37のステップS100312における候補オブジェクトの幾何パラメータによる顔部位判定処理(顔部位判定方法)を図41のフローチャートを用いて説明する。
まず、図41のステップS10031201では、顔部位の候補点の存在領域EAの画像データを微小画像IGとして画像メモリ(図示せず)に保存し、ステップS10031202に処理を進める。
このステップS10031202では、連続データGの代表座標Cに相当する微小画像IGの代表座標ICを基準とした範囲ARの濃度情報をもとに二値化閾値を設定し、ステップS10031203に処理を進める。尚、二値化閾値の算出方法は、図4のステップS84における顔部位判定処理、即ち図11のステップS8402の「連続データGの代表座標Cに相当する微小画像IGの代表座標ICを基準とした範囲ARの濃度情報をもとに二値化閾値を設定する」処理の場合と同様の方法を用いることができる。
ステップS10031203では、ステップS10031202の処理により決定した二値化閾値を用いて微小画像IGを二値化処理し、二値画像bGとして画像メモリ(図示せず)に保存し、ステップS10031204に処理を進める。尚、このような二値化閾値を用いて二値化した候補オブジェクトを検出することにより、眼を正確に捉えて候補オブジェクトの幾何形状を用いた判定をより正確に行うことができ、眼の位置検出精度をより向上することができる。
次にステップS10031204では、連続データGの代表座標Cに相当する二値画像bGの位置bCを初期位置に設定して、ステップS10031205に処理を進める。
このステップS10031205では、設定位置が黒画素か否かを判定する。そして、設定位置が黒画素と判定されればYESとなり、処理をステップS10031206に移行する。また、設定位置が黒画素と判定されなければ、NOとなり、設定位置を上下左右に1画素ずつずらして、再度ステップS10031205に戻り、ステップS10031205で設定位置が黒画素か否かの判定を行う。この処理は、設定位置が黒画素になるまで実行する。
ステップS10031206では、その黒画素を包括する連結成分を候補オブジェクトとして設定して、ステップS10031207に処理を進める。
このステップS10031207では、候補オブジェクトの幾何形状を算出し、ステップS10031208に処理を進める。
このステップS10031208では、特定したい顔部位テンプレートの幾何形状と候補オブジェクトの幾何形状を比較して、ステップS10031209に処理を進める。尚、ステップS10031208の候補オブジェクトと顔部位テンプレートの幾何形状の比較方法の例は、図4のステップS84の顔部位判定処理、即ち図11におけるステップS8408の「テンプレートの幾何形状と候補オブジェクトの幾何形状の比較をする」処理の場合と同様の方法を用いることができる。
ステップS10031209では、ステップS10031208の結果、候補オブジェクトと顔部位テンプレートの幾何形状が一致するか否かを判定する。そして、候補オブジェクトと顔部位テンプレートの幾何形状が一致する場合は、YESとなりステップS10031210に処理を進める。また、候補オブジェクトと顔部位テンプレートの幾何形状が一致しない場合は、NOとなりステップS10031212に処理を進める。
ステップS10031210では、その候補オブジェクトを顔部位と判定し、ステップS100313に処理を進める。また、ステップS10031212では、その候補オブジェクトを顔部位ではないと判定し、ステップS100313に処理を進める。
[顔部位位置関係検証処理]
<基本三角形を用いた処理例>
図42A〜図42Fは、図22のステップS1006の「顔部位位置関係検証処理」を説明するために、両眼と鼻の3つの顔部位を使った検証方法および誤認識した場合の復帰方法の一例を示したものである。以下、図22のステップS1006の「顔部位位置関係検証処理」における検出方法及び復帰方法の具体例を図46のフローチャートに基づいて説明する。
先ず、ステップS100601では、例えば図42Aに示したような過去フレームにおいて確定された両眼と鼻の3つの顔部位を使ってできる基本三角形Btaを作成して、ステップS100602に処理を進める。この場合、過去幾何学形状または過去多角形状の一つである基本三角形Bta(三角形状)は、左眼ELの代表座標(又は代表位置座標)TA,右眼ERの代表座標(又は代表位置座標)TBと鼻Nの代表座標(又は代表位置座標)TCの3つを頂点として結ぶことで作成できる。尚、左眼ELの代表座標TAは通常左眼ELのアイポイントであり、右眼ERの代表座標TBは通常右眼ERのアイポイントであり、鼻Nの代表座標TCは左右の鼻の穴の中心である。
ステップS100602では、図42Bに示したように現フレームにおける顔部位を過去フレームの顔部位位置から得られる顔部位探査領域(左眼ELの探査領域Ea,右眼ERの探査領域Eb,鼻Nの探査領域Ec)内で検出させ、検出した顔部位の中心を検出点P1〜P3として、この検出点P1〜P3によってできる三角形Cta(三角形状)を現幾何学形状または現多角形状の一つとして作成して、ステップS100603に処理を進める。
ステップS100603では、図42Cに示したように過去フレームにおいて定義された基本三角形Btaと現フレームで定義された三角形Ctaを比較し、正しく三つの顔部位が検出されているか否かを判定する。この判定において、正しく三つの顔部位が検出されているならば、過去フレームと現フレームの2つの三角形は略合同となり一致するので、ステップS100604に処理を進める。
尚、この判定においては、図42Dのように現フレームで眼として検出された2つの検出点P1,P2を使って過去フレームの基本三角形Btaを当てはめ、過去フレームの鼻Nの位置(座標位置)を中心に再検出のための探査領域Ecを設定する。このとき、過去フレームにおいて顔部位が存在しえた場所に探査領域Ecを設定するため、最初の検出時に設定した探査領域Ecよりも小さくすることができる。しかし、顔が図42Aの様に正面を向いている状態から図42Dのように大きく傾いた場合、探査領域Eaから鼻Nが外れるために、探査領域Ec内に鼻となる顔部位を検出することができない。
従って、ステップS100603の判定において、図42Dのように正しく三つの顔部位幾つか(図では一つ)が検出できていない場合は、合同とはならないので、ステップS100605に処理を進める。尚、この判定において、図42Eのように過去フレームの右眼位置(画像上の左の眉の位置)と鼻Nを使って過去フレームの基本三角形Btaを当てはめようとすると、顔部位間距離Lが基本三角形Btaの右眼位置と鼻位置までの一辺の長さに相当する長さよりも長くなるので、過去フレームの基本三角形Btaを当てはめることができない。
しかし、ステップS100602において検出された現フレームの三つの顔部位の三角形Ctaから、検出点P1と検出点P3との距離が過去フレームの基本三角形Btaの右眼ERの代表座標TBと鼻Nの代表座標TCとの距離と略同じであるので、検出点P1が基本三角形Btaの右眼ERの代表座標TAであり、検出点P3が基本三角形Btaの鼻Nの代表座標TCであることが分かる。
従って、ステップS100605では、検出点P1を基本三角形Btaの左眼ELの代表座標TAと設定し、検出点P3を基本三角形Btaの鼻Nの代表座標TCと設定して、基本三角形Btaの代表座標Bが基本三角形Btaの代表座標C(鼻N)の左側に位置するように当てはめるためにステップS100606に処理を進める。
このステップS100606では、図42Fに示したように検出点P1,P3の座標と過去フレームの基本三角形Btaの大きさ,形状を用いて、右眼に相当する部分に再検出のための顔部位(右眼)探査領域Eb′を不明顔部位探査領域として設定し、ステップS100607に処理を進める。
このステップS100607では、顔部位探査領域Eb′内に現フレームで検出した顔部位(右眼)があるか否かを判定する。この判定において、顔部位探査領域Eb′内に顔部位(右眼)の代表位置座標である検出点P2′があれば、YESとなりステップS100608に処理を進める。また、ステップS100607の判定において、顔部位探査領域Eb′内に顔部位(右眼)の代表位置座標である検出点P2′がなければ、NOとなりステップS100609に処理を進める。
ステップS100608では、現フレームで検出した検出点P1(左眼EL)の座標,検出点P3(鼻N)の座標,顔部位探査領域Eb′内の顔部位(右眼)座標を、左眼ELの代表座標TA,鼻Nの代表座標TC,右眼ERの座標にそれぞれ設定して、ステップS1007へ処理を進める。
このステップS100605〜ステップS100608の処理により、図42Fの顔部位探査領域内Eb′に顔部位を検出することができるので検出できた顔部位を右眼とすることができ、これで3つの顔部位について位置を確定することができる。
また、ステップS100609では、ステップS100605,S100606と同様にして、検出点P2を基本三角形Btaの右眼ERの代表座標TBと設定し、検出点P3を基本三角形Btaの鼻Nの代表座標TCと設定して、基本三角形Btaの代表座標TAが基本三角形Btaの代表座標TC(鼻N)の右側に位置するように当てはめて、左眼に相当する部分に再検出のための顔部位(左眼)探査領域(図示せず)を不明顔部位探査領域として設定し、ステップS100610に処理を進める。
このステップS100610では、顔部位(左眼)探査領域(図示せず)内に現フレームで検出した顔部位(左眼)があるか否かを判定する。この判定において、顔部位探査領域内に顔部位(左眼)があれば、YESとなりステップS100611に処理を進める。また、ステップS100610の判定において、顔部位探査領域内に顔部位(左眼)がなければ、NOとなりステップS1007へ処理を進める。
ステップS100611では、現フレームで検出した検出点P2(右眼ER)の座標,検出点P3(鼻N)の座標,顔部位探査領域Eb内の顔部位(左眼)座標を、左眼ELの代表座標TA,鼻Nの代表座標TC,左眼ELの座標にそれぞれ設定して、ステップS1007へ処理を進める。
このステップS100609〜ステップS100611の処理により、探査領域内に顔部位を検出することができるので検出できた顔部位を左眼とすることができ、これで3つの顔部位について位置を確定することができる。
尚、図42Fでは、3つの顔部位のうち二つが正確に検出できた場合を一例として示したが、1つしか正確に検出できない場合や3つとも誤検出してしまう場合も考えられる。
例えば、図43に示すように4つ以上の顔部位(左眉EbL,右眉EbR,左眼EL,右眼ER,左耳EaL,右耳EaR,鼻N,口M等)の略中央部(三角形の代表座標P10〜P18とする部分)を追跡することによって複数の三角形を作ることによって、一連の処理を複数繰り返すことによって顔部位の位置を確定していくことができる。
それでも、確定できない場合は図23にある不検出カウンタのインクリメントを行い、顔部位追跡処理が破綻した状態が続いていることを確定して、顔部位探査処理に処理を戻していく。
また、図44には、三角形を作る顔部位の組み合わせの一例を示してある。図44(a)は左眼,右眉,右耳の略中央を結んだ三角形を用いる例を示し、図44(b)は左眼,右眼,右眉の略中央を結んだ三角形を用いる例を示し、図44(c)は上述した左眼、右眼,鼻の略中央を結んだ三角形を用いる例を示したものである。
<平行線を用いた処理例>
図45A〜図45Dは、図22のステップS1006の「顔部位位置関係検証処理」の他の例を説明するために、顔の中心線を挟んで左右に存在する顔部位の平行条件を使った場合の顔部位位置の検証をする例を示したものである。以下、図22のステップS1006の「顔部位位置関係検証処理」における検証例を図45A〜図45D及び図47のフローチャートに基づいて説明する。
図45Aに示したように、過去フレームにおいて確定された顔部位位置を通る直線を定義する。この場合、探査領域E1R,E1L内の両眉(EbL,EbR)の略中央部(検出点)の代表座標(又は代表位置座標)P10,P11を通る仮想直線をLaとし、探査領域E2L,E2R内の両眼(EL,ER)の略中央部(検出点)の代表座標(又は代表位置座標)P12,P13を通る仮想直線をLbとし、探査領域E3L,E3R内の両耳(EaL,EaR)の略中央部(検出点)の代表座標(又は代表位置座標)P14,P15を通る仮想直線をLcとすると、仮想直線La,Lb,Lcはそれぞれ略平行になる。パラメータとして、この仮想直線La,Lb,Lcの画像上の傾きと仮想直線La,Lb,Lcの距離を用いる。現フレームでも、過去フレームから得られる仮想直線La,Lb,Lcに相当する仮想直線La′,Lb′,Lc′が得られる。
先ず、図47のステップS100620では、現フレームで検出した顔部位の内、両眉(EbL,EbR)の代表座標P10,P11を通る仮想直線La′と、両眼(EL,ER)の代表座標P12,P13を通る仮想直線Lb′を作成して、ステップS100621に処理を進める。
このステップS100621では、2本の仮想直線La′,Lb′が平行であるか否かを判定する。そして、この判定において、図45Bのように現フレームで正確に検出できた場合は、現フレームから求められる仮想直線La′,Lb′が互いに略平行になり、各仮想直線La′,Lb′間の距離も過去フレームの仮想直線La,Lb間の距離と略等しくなるので、YESとなりステップS100622に処理を進める。
また、図45Cに示したように、例えば眼の片側が二重瞼のしわWや眼鏡のフレーム(図示せず)の部分を眼と誤判定した場合、眼と判定された検出点(代表座標)Pa,Pbを結ぶ仮想直線Lb′が、両眉(EbL,EbR)の略中央部(検出点)の代表座標P10,P11を結んだ仮想直線La′や、両耳(EaL,EaR)の略中央部(検出点)の代表座標P14,P15を結んだ仮想直線Lc′と平行にならない。この様な場合、ステップS100621の判定では、仮想直線Lb′が仮想直線La′や、仮想直線Lc′と平行にならないので、ステップS100623に処理を進める。
ステップS100622では、現フレームで検出した顔部位の座標、すなわち代表座標P10,P11及び代表座標P12,P13を両眉(EbL,EbR)及び両眼(EL,ER)の座標として設定して、ステップS1007に処理を進める。
また、ステップS100623では、図45Aの過去フレームで検出した顔部位[両眉(EbL,EbR)、両眼(EL,ER)]の座標を用いて、左眉(EbL)の略中央部(検出点)の代表座標P10と左眼(EL)の略中央部(検出点)の代表座標P12との垂直距離(間隔)M1を算出すると共に、右眉(EbR)の略中央部(検出点)の代表座標P11と右眼(ER)の略中央部(検出点)の代表座標P13との垂直距離(間隔)M2を算出して、ステップS100624に処理を進める。
このステップS100624では、図45Cの左眉(EbL)の略中央部(検出点)の代表座標P10と検出点Paとの垂直距離(間隔)m1を算出すると共に、右眉(EbR)の略中央部(検出点)の代表座標P11と検出点Pbとの垂直距離(間隔)m2を算出して、ステップS100625に処理を進める。
このステップS100625では、垂直距離M1と垂直距離m1とが略等しいか否かを判断する。この判断において、垂直距離M1と垂直距離m1とが略等しくなければステップS100626に処理を進め、垂直距離M1と垂直距離m1とが略等しければ垂直距離M2と垂直距離m2とが等しくないとしてステップS100627に処理を進める。
ステップS100626では、図45Dに示したように、現フレームの両耳(EaL,EaR)の略中央部(検出点)の代表座標P14,P15を通る仮想直線をLc′を求めて、現フレームにおいて右眉(EbR)の略中央部(検出点)の代表座標P11を通り且つ仮想直線をLc′と平行な仮想直線La′′を求めると共に、現フレームの右眼(ER)の略中央部(検出点)の代表座標P13を通り且つ仮想直線をLc′と平行な仮想直線Lb′′を求めて、この求めた仮想直線La′′,Lb′′を上下位置の中心として、左眉(EbL)と左眼(EL)近傍の領域を新たな不明顔部位探査領域E2L′に設定し、ステップS1007に処理を進める。尚、左眉(EbL)と左眼(EL)近傍の領域は、左眉の下方で且つ左眉(EbL)の略中央部(検出点)の代表座標P10からの垂線が仮想直線Lb′′と交差する点を中心とする領域となる。
ステップS100627では、ステップS100626と同様にして、現フレームの両耳(EaL,EaR)の略中央部(検出点)の代表座標P14,P15を通る仮想直線をLc′を求めて、現フレームにおいて左眉(EbL)の略中央部(検出点)の代表座標P10を通り且つ仮想直線をLc′と平行な仮想直線を求めると共に、現フレームの左眼(EL)の略中央部(検出点)の代表座標P13を通り且つ仮想直線をLc′と平行な仮想直線を求めて、この左眉(EbL)の略中央部(検出点)の代表座標P10及び左眼(EL)の略中央部(検出点)の代表座標P13をそれぞれ通る二つの仮想直線を上下位置の中心として、右眉(EbR)と右眼(ER)近傍の領域を新たな顔部位検出領域に設定し、ステップS1007に処理を進める。
このように図45Dの眉(耳)と判定された点と眼と判定された点の距離を左右で比較することによって正しく判定された方を特定できる。その点を通って両眉(両耳)を結んだ直線と平行な直線上に再探査領域を設定することで、再探査領域内に必要な顔部位を検出可能となる。
(その他)
尚、通常、顔部位が正常に追跡できているときは前述したような定義に基づいて基準顔部位、他顔部位とも顔部位探査領域の大きさを設定できるが、前フレームにおいて顔部位が見つからなかった場合(後術する顔部位判定位置検出処理でカウントされる不検出カウンタが0でないとき)はそれだけ顔部位が存在するであろう領域が広がるわけであるから顔部位探査領域を広くしなければならない。
図34に示すように顔部位が追跡できていないと判断した(例えば3〜5回連続して顔部位を検出できなかった)場合には一気に基準顔部位検出領域を広くする方法や図35に示すように顔部位を検出できなかった連続処理数に応じて顔部位検出領域を広くする方法がある。
以上説明したように、この発明の実施の形態の顔部位追跡方法は、所定領域の画像から顔部位を追跡する顔部位追跡方法であって、所定時間毎に顔部位(例えば、左眼EL,右眼ER,鼻N等)を検出し、前記各顔部位の代表位置(例えば、代表位置座表)を結んで線(三角形Bta,Cta、又は仮想直線La,Lb,Lc,La′,Lb′,Lc′)とし、過去と現在の前記線(三角形Btaと三角形Cta、又は仮想直線La,Lb,Lcと仮想直線La′,Lb′,Lc′)を比較して前記顔部位が正しいか否かを判定することを特徴とする。
この方法によれば、過去と現在の線(三角形Btaと三角形Cta、又は仮想直線La,Lb,Lcと仮想直線La′,Lb′,Lc′)を比較して、顔部位が正しいか否かを判定するので、追跡中の顔部位の誤検出を未然に防ぐことができる。
また、この発明の実施の形態の顔部位追跡方法は、顔画像撮像手段CL1(カメラ7)で被検出者の顔を連続的に撮像して顔画像の現フレームを順次生成することにより現フレームを順次過去フレームとしながら、前記過去フレームの顔画像の複数の顔部位(例えば、左眼EL,右眼ER,鼻N)の各所定領域において前記顔部位の代表位置座標(代表座標TA,TB,TC)を直線で結ぶことによりできる複数の過去顔部位線(直線からなる基本三角形Bta、又は仮想直線La,Lb,Lc)と、前記過去フレームの前記複数の顔部位に対応して得られる前記現フレームの前記複数の顔部位の代表位置座標を直線で結ぶことによりできる複数の現顔部位線(直線からなる三角形Cta、又は仮想直線La′,Lb′,Lc′)を求めて、前記現顔部位線(三角形Cta、又は仮想直線La′,Lb′,Lc′)を前記過去顔部位線(基本三角形Bta、又は仮想直線La,Lb,Lc)と比較することにより、前記現フレームで検出された顔部位が正しいか否かを検証するようになっている。
この方法によれば、現顔部位線(三角形Cta、又は仮想直線La′,Lb′,Lc′)を過去顔部位線(基本三角形Bta、又は仮想直線La,Lb,Lc)と比較することにより、現顔部位線の過去顔部位線に対する変化を検出して、現顔部位線の上に追跡対称である顔部位があるか否かを検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
また、この発明の実施の形態の顔部位追跡方法は、前記複数の顔部位(例えば、左眼EL,右眼ER,鼻N)は少なくとも3つ以上あり、前記過去顔部位線は多角形の過去幾何学形状(基本三角形Bta)に形成され、前記現顔部位線は多角形の現幾何学形状(三角形Cta)に形成されていると共に、前記現幾何学形状(三角形Cta)を前記過去幾何学形状(基本三角形Bta)と比較することにより、前記現フレームで検出された顔部位が正しいか否かを検証するようになっている。
この方法によれば、現幾何学形状(三角形Cta)を過去幾何学形状(基本三角形Bta)と比較することにより、現幾何学形状の過去幾何学形状に対する形状変化を検出して、現幾何学形状の上に追跡対称である顔部位があるか否かを検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
更に、この発明の実施の形態の顔部位追跡方法は、前記顔部位は顔の左右方向の中心線を挟んで左右の対称位置に設けられた同一顔部位組[眼(左眼EL,右眼ER)、耳(左耳EaL,右耳EaR)、眉(左眉EbL,右眉EbR)]であり、前記顔部位組は複数設けられていると共に、前記過去フレームの顔画像の左右対称の顔部位の代表位置座標を直線で結ぶことにより複数の過去顔部位線(仮想直線La,Lb,Lc)を求める一方、前記現フレームの顔画像の左右対称の顔部位の代表位置座標を直線で結ぶことにより複数の現顔部位線(仮想直線La′,Lb′,Lc′)を求めて、前記現顔部位線(仮想直線La′,Lb′,Lc′)を前記過去顔部位線(仮想直線La,Lb,Lc)と比較することにより、前記現フレームで検出された顔部位が正しいか否かを検証するようになっている。
この方法によれば、現顔部位線(仮想直線La′,Lb′,Lc′)を過去顔部位線(仮想直線La,Lb,Lc)と比較することにより、現顔部位線の過去顔部位線に対する変化を検出して、現顔部位線の上に追跡対称である顔部位があるか否かを検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
また、この発明の実施の形態の顔部位追跡装置は、被検出者の顔を連続的に撮像して顔画像の現フレームを順次生成することにより現フレームを順次過去フレームとする顔画像撮像手段CL1(カメラ7)と、前記顔画像撮像手段CL1(カメラ7)で撮像された顔画像から追跡の対象となる複数の顔部位(眼、耳、鼻、眉、口等)を検出する顔部位検出手段CL2と、前記顔部位検出手段CL2によって検出された複数の顔部位(眼、耳、鼻、眉、口等)を追跡していく顔部位追跡手段CL3を備えている。しかも、この顔部位追跡装置は、前記過去フレームで特定された複数の顔部位(眼、耳、鼻、眉、口等)の各所定領域における前記顔部位の代表位置座標[例えば左眼ELの代表座標TA,右眼ERの代表座標TB,鼻Nの代表座標TC、その他は図示せず]をそれぞれ求めると共に、前記複数の顔部位の代表位置座標に基づいて追跡対象となる複数の顔部位探査領域を前記現フレームの顔画像に設定する顔部位探査領域設定手段CL31を備えている。更に、顔部位追跡装置は、前記顔部位探査領域内で顔部位を探査し且つその顔部位の位置を検出する顔部位位置検出手段CL32を備えている。また、顔部位追跡装置は、前記過去フレームの顔画像の複数の顔部位の代表位置座標を直線で結ぶことによりできる複数の過去顔部位線(直線からなる基本三角形Bta、又は平行な仮想直線La,Lb,Lc)と、前記現フレームにおける前記複数の顔部位探査領域内の顔部位の代表位置座標を直線で結ぶことによりできる複数の現顔部位線(直線からなる三角形Cta、又は仮想直線La′,Lb′,Lc′)を求めて、前記現顔部位線(直線からなる三角形Cta、又は仮想直線La′,Lb′,Lc′)を前記過去顔部位線(直線からなる基本三角形Bta、又は平行な仮想直線La,Lb,Lc)と比較することにより、前記現フレームで検出された顔部位が正しいか否かを検証する顔部位位置検証手段CL33を備えている。
この構成によれば、現顔部位線(三角形Cta、又は仮想直線La′,Lb′,Lc′)を過去顔部位線(基本三角形Bta、又は仮想直線La,Lb,Lc)と比較することにより、現顔部位線の過去顔部位線に対する変化を検出して、現フレームに追跡対称である顔部位があるか否かを検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
また、この発明の実施の形態の顔部位追跡装置は、前記複数の顔部位(例えば、左眼EL,右眼ER,鼻N)は少なくとも3つ以上あり、前記過去顔部位線は多角形の過去幾何学形状(基本三角形Bta)に形成され、前記現顔部位線は多角形の現幾何学形状(三角形Cta)に形成されていると共に、前記現幾何学形状(三角形Cta)を前記過去幾何学形状(基本三角形Bta)と比較することにより、前記現フレームで検出された顔部位が正しいか否かを検証するようになっている。
この構成によれば、現幾何学形状(三角形Cta)を過去幾何学形状(基本三角形Bta)と比較することにより、現幾何学形状の過去幾何学形状に対する形状変化を検出して、現フレームに追跡対称である顔部位があるか否かを検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
更に、この発明の実施の形態の顔部位追跡装置は、前記現幾何学形状及び過去幾何学形状は三角形状(三角形Bta,Cta)である。この構成によれば、三角形Ctaを過去の基本三角形Btaと比較することにより、三角形Ctaの基本三角形Btaに対する形状変化を検出して、三角形Cta上に追跡対称である顔部位があるか否かを検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
更に、この発明の実施の形態の顔部位追跡装置は、前記現幾何学形状(三角形Cta)と前記過去幾何学形状(基本三角形Bta)との不整合が生じて追跡対象である顔部位が特定できない場合であって、前記現フレームの追跡対象である3つ以上の少なくとも2つの顔部位が前記過去フレームの2つの顔部位に対して特定できている場合、前記現フレームの特定できている少なくとも2つの顔部位と前記過去フレームの過去幾何学形状とに基づいて、前記追跡対象である顔部位の不明顔部位探査領域[例えば、図42Fの探査領域Eb′]を設定するようになっている。
この構成によれば、現フレームの特定できている少なくとも2つの顔部位と前記過去フレームの過去幾何学形状とに基づいて、前記追跡対象である顔部位の不明顔部位探査領域[例えば、図42Fの探査領域Eb′]を設定するようになっているので、追跡中の顔部位の誤検出を未然に防ぐことができると共に、追跡対象である顔部位(例えば、右眼ER)を不明顔部位探査領域[例えば、図42Fの探査領域Eb′]内で確実に検出することができる。
また、この発明の実施の形態の顔部位追跡装置は、前記顔部位は顔の左右方向の中心線を挟んで左右の対称位置に設けられた同一顔部位組[眼(左眼EL,右眼ER)、耳(左耳EaL,右耳EaR)、眉(左眉EbL,右眉EbR)]であり、前記顔部位組は複数設けられていると共に、前記過去フレームの顔画像の左右対称の顔部位の代表位置座標を直線で結ぶことにより複数の過去顔部位線(仮想直線La,Lb,Lc)を求める一方、前記現フレームの顔画像の左右対称の顔部位の代表位置座標を直線で結ぶことにより複数の現顔部位線(仮想直線La′,Lb′,Lc′)を求めて、前記現顔部位線(仮想直線La′,Lb′,Lc′)を前記過去顔部位線(平行な仮想直線La,Lb,Lc)と比較することにより、前記現フレームで検出された顔部位が正しいか否かを検証するようになっている。
この構成によれば、現顔部位線(仮想直線La′,Lb′,Lc′)を過去顔部位線(仮想直線La,Lb,Lc)と比較することにより、現顔部位線の過去顔部位線に対する変化を検出して、現顔部位線の上に追跡対称である顔部位があるか否かを検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
また、この発明の実施の形態の顔部位追跡装置は、前記複数の顔部位組(例えば、眉組、眼組、耳組)の左右対称の顔部位の代表位置座標を直線で結んだ複数の過去顔部位線(例えば、図45Aの仮想直線La,Lb,Lc)を平行にする一方、前記現フレームの顔画像の左右対称の顔部位の代表位置座標を直線で結ぶことにより複数の現顔部位線を求めて、前記現顔部位線(仮想直線La′,Lb′,Lc′)を前記過去顔部位線(仮想直線La,Lb,Lc)と比較することにより、前記現フレームで検出された顔部位が正しいか否かを検証するようになっている。
尚、図45Aにおいて、眉組は左眉EbL,右眉EbRの組であり眼組は左眼EL,右眼ERの組であり、耳組は左耳EaL,右耳EaRの組である。そして、過去顔部位線である仮想直線Lbは左眼EL,右眼ERの代表座標(代表位置座標)P10,P11を結ぶ直線、過去顔部位線である仮想直線Laは左耳EaL,右耳EaR代表座標(代表位置座標)P12,P13を結ぶ直線、過去顔部位線である仮想直線Laは左眉EbL,右眉EbRの代表座標(代表位置座標)P14,P15を結ぶ直線である。
この構成によれば、複数の過去顔部位線(例えば、図45Aの仮想直線La,Lb,Lc)も、現顔部位線(図45Bの仮想直線La′,Lb′,Lc′)も左右対称の顔部位を直線で結ぶことにより形成されるので、殆どの場合には複数の過去顔部位線同士や複数の現顔部位線同士は互いに略平行にすることができる。この結果、複数の現顔部位線(仮想直線La′,Lb′,Lc′)の過去顔部位線(仮想直線La,Lb,Lc)に対する変化を容易且つ確実に検出できる。これにより、現顔部位線の上に追跡対称である顔部位があるか否かを確実に検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
尚、複数の過去顔部位線同士や複数の現顔部位線同士が互いに略平行にならない場合でも、複数の現顔部位線の過去顔部位線に対する間隔変化や傾きの変化を検出することで、現顔部位線の上に追跡対称である顔部位があるか否かを確実に検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。
また、この発明の実施の形態の顔部位追跡装置は、前記現フレームの複数の顔部位組から得られる複数の顔部位線(仮想直線La′,Lb′,Lc′)間に平行性が得られない間隔がある場合に、前記平行性が得られない間隔の顔部位線(例えば、図45Cの仮想直線La′,Lb′)同士をこれに対応する前記過去フレームの顔部位線(仮想直線La,Lb)間の間隔(例えば、垂直距離M1,m1)と比較して、一致する顔部位を基準にする平行線(例えば、図45Dの仮想直線La′′,Lb′′)を引き直し、引き直した平行線(例えば、仮想直線La′′,Lb′′)を基準に前記追跡対象である顔部位の不明顔部位探査領域E2L′を設定する。
この構成によれば、複数の現顔部位線(仮想直線La′,Lb′,Lc′)の過去顔部位線(仮想直線La,Lb,Lc)に対する変化を容易且つ確実に検出できる。これにより、現顔部位線の上に追跡対称である顔部位があるか否かを確実に検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。尚、複数の過去顔部位線同士や複数の現顔部位線同士が互いに略平行にならない場合でも、現顔部位線の上に追跡対称である顔部位があるか否かを確実に検出できるので、追跡中の顔部位の誤検出を未然に防ぐことができる。