(57)【特許請求の範囲】
【請求項１】
撮像手段を用いて使用者の顔を撮像した顔画像に基づき瞼の開度を検出する顔検出装置であって、
前記撮像手段によって撮像された前記顔画像に基づき前記使用者の左右方向の顔の向きの角度を検出する角度検出手段と、
前記角度の絶対値が予め定められた閾値以下であるとき、前記顔画像の両眼の画像に基づき両眼のそれぞれの瞼の開度を検出する第１の検出手段と、
前記角度の絶対値が前記閾値を超えるとき、前記顔画像の左右のいずれか一方の片眼の画像に基づき片眼の瞼の開度を検出する第２の検出手段とを備える、顔検出装置。
【請求項２】
前記角度検出手段は、前記顔画像における前記使用者の２つの鼻孔の中点を垂直に通る中心線と、当該使用者の顔の輪郭の両端をそれぞれ垂直に通る２つの線とのそれぞれの間隔の比に基づき前記角度を検出する、請求項１に記載の顔検出装置。
【請求項３】
前記第２の検出手段は、
前記顔画像に基づき前記使用者の鼻の位置を前記感覚器の位置として検出する鼻検出手段と、
前記角度の正負の符号に基づき、前記鼻の位置を基準としてそれぞれ予め定められる左右の眼の位置のいずれか一方を選択する選択手段と、
前記片眼の位置を検出する処理の対象となる探索領域が前記片眼の画像を含むように、当該探索領域の前記顔画像上の位置を前記選択手段によって選択された位置に設定する設定手段と、
前記設定手段によって設定された前記探索領域に含まれる前記片眼の画像に基づき当該片眼の瞼の開度を検出する開度検出手段とを含む、請求項１に記載の顔検出装置。
【請求項４】
前記開度検出手段は、
前記設定手段によって設定された前記探索領域の前記顔画像の画素の中から前記片眼の上下瞼の候補を抽出する抽出手段と、
前記抽出手段によって抽出された前記上下瞼の候補の中から瞬きをした前記上下瞼を特定する特定手段と、
前記特定手段によって特定された前記上下瞼の開度を前記片眼の瞼の開度として検出する特定開度検出手段とを含む、請求項３に記載の顔検出装置。
【請求項５】
前記特定開度検出手段は、前記特定手段によって特定された前記上下瞼の垂直方向の間隔の内、最も長い間隔を前記片眼の瞼開度として検出し、当該瞼開度を示すデータを生成する生成手段をさらに含む、請求項４に記載の顔検出装置。
【請求項６】
予め定められた間隔で前記角度検出手段によって検出されるたびに前記角度を更新して記憶する記憶手段をさらに備え、
前記角度検出手段は、前記角度を検出するとき、前記記憶手段に記憶されている更新後の前記角度の絶対値が前記閾値を超えるとき、両眼を除く前記顔画像に基づいて次の前記角度を検出する、請求項２に記載の顔検出装置。
【請求項７】
前記第１の検出手段が検出を完了したときに前記記憶手段に記憶されている更新後の前記角度の絶対値が前記閾値を超えるとき、当該閾値を当該絶対値に再設定する第１の再設定手段と、
前記第２の検出手段が検出を完了したときに前記記憶手段に記憶されている更新後の前記角度の絶対値が前記閾値未満であるとき、当該閾値を当該絶対値に再設定する第２の再設定手段とをさらに備える、請求項６に記載の顔検出装置。
【請求項８】
前記第１の検出手段は、両眼のそれぞれの瞬きの検出結果に基づき両眼の瞼の開度をそれぞれ検出し、当該両眼の瞬きを共に検出できないとき、前記第２の検出手段による検出処理に切り替えて瞼の開度の検出を続ける切替手段をさらに備える、請求項１に記載の顔検出装置。
【請求項９】
撮像装置によって使用者の顔を撮像した顔画像に基づき当該使用者の顔の感覚器の位置を検出する顔検出装置において実行される検出方法であって、
前記撮像装置によって撮像された前記顔画像に基づき前記使用者の左右方向の顔の向きの角度を検出する角度検出ステップと、
前記角度の絶対値が予め定められた閾値以下であるとき、前記顔画像の両眼の画像に基づき両眼のそれぞれの瞼の開度を検出する第１の検出ステップと、
前記角度の絶対値が前記閾値を超えるとき、前記顔画像の左右のいずれか一方の片眼の画像に基づき片眼の瞼の開度を検出する第２の検出ステップとを備える、検出方法。
【請求項１０】
前記角度検出ステップにおいて、前記使用者の２つの鼻孔の中点を垂直に通る中心線と、当該使用者の顔の輪郭の両端をそれぞれ垂直に通る２つの線とのそれぞれの間隔の比に基づき前記角度を検出する、請求項９に記載の検出方法。
【請求項１１】
前記第２の検出ステップは、
前記顔画像に基づき前記使用者の鼻の位置を前記感覚器の位置として検出する鼻検出ステップと、
前記角度の正負の符号に基づき、前記鼻の位置を基準としてそれぞれ予め定められる左右の眼の位置のいずれか一方を選択する選択ステップと、
前記片眼の位置を検出する処理の対象となる探索領域が前記片眼の画像を含むように、当該探索領域の前記顔画像上の位置を前記選択ステップにおいて選択された位置に設定する設定ステップと、
前記設定ステップにおいて設定された前記探索領域に含まれる前記片眼の画像に基づき当該片眼の瞼の開度を検出する開度検出ステップとを含む、請求項９に記載の検出方法。
【請求項１２】
前記開度検出ステップは、
前記設定ステップにおいて設定された前記探索領域の前記顔画像の画素の中から前記片眼の上下瞼の候補を抽出する抽出ステップと、
前記抽出ステップにおいて抽出された前記上下瞼の候補の中から瞬きをした前記上下瞼を特定する特定ステップと、
前記特定ステップにおいて特定された前記上下瞼の開度を前記片眼の瞼の開度として検出する特定開度検出ステップとを含む、請求項１１に記載の検出方法。
【請求項１３】
前記特定開度検出ステップは、前記特定ステップにおいて特定された前記上下瞼の垂直方向の間隔の内、最も長い間隔を前記片眼の瞼開度として検出し、当該瞼開度を示すデータを生成する生成ステップをさらに含む、請求項１２に記載の検出方法。
【請求項１４】
予め定められた間隔で前記角度検出ステップを繰り返す繰り返しステップと、
前記繰り返しステップによって前記角度検出ステップが繰り返されるたびに検出された前記角度を更新して記憶する記憶ステップと、
前記繰り返しステップによって前記角度検出ステップを繰り返すとき、前記記憶ステップによる更新後の前記角度の絶対値が前記閾値を超えるか否かを判断する判断ステップと、
前記判断ステップにおいて前記角度の絶対値が前記閾値を超えると判断したとき、両眼を除く前記顔画像に基づいて次の前記角度を検出する別角度検出ステップとをさらに備える、請求項１０に記載の検出方法。
【請求項１５】
前記第１の検出ステップを完了したときの前記記憶ステップにおける更新後の前記角度の絶対値が前記閾値を超えるとき、当該閾値を当該絶対値に再設定する第１の再設定ステップと、
前記第２の検出ステップを完了したときに前記記憶ステップにおける更新後の前記角度の絶対値が前記閾値未満であるとき、当該閾値を当該絶対値に再設定する第２の再設定ステップとをさらに備える、請求項１４に記載の検出方法。
【請求項１６】
前記第１の検出ステップにおいて、両眼のそれぞれの瞬きの検出結果に基づき両眼の瞼の開度をそれぞれ検出し、当該両眼の瞬きを共に検出できないとき、前記第２の検出ステップに切り替えて瞼の開度の検出を続ける切替ステップをさらに備える、請求項９に記載の検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、顔を撮像した顔画像に基づき顔の感覚器の位置などを検出する顔検出装置及び顔検出方法に関し、より特定的には、自動車などの移動体に搭載される顔検出装置及び顔検出方法に関する。
【背景技術】
【０００２】
近年、車両などの移動体の運転者の居眠り運転などを防止するための装置が開発されている。このような装置の一例として、例えば、特許文献１に記載の覚醒度推定装置（以下、従来技術と称する）が挙げられる。
【０００３】
従来技術では、運転者の覚醒度を推定するために運転者の顔を正面から撮像した顔画像に基づき運転者の眼の開度を検出する。より詳細には、従来技術では、逐次撮像される顔画像の濃度エッジを検出する処理などをすることにより、顔画像における運転者の左右の眉、左右の眼、鼻、及び口などの感覚器や摂食器などの位置をそれぞれ検出する。従来技術では、眼の位置を検出すると、検出した眼の位置を基準として眼の瞼の開度を検出するための画像処理をする矩形領域を設定する。
【特許文献１】特開２００７−２４１９３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術では、次に示すような課題を有している。すなわち、従来技術では、左右のいずれか一方の片眼の位置が検出できないときは、前述の矩形領域を設定することなく、顔画像における感覚器や摂食器などの位置を検出する処理を再びする。つまり、上記従来技術では、左右のいずれか一方の片眼の位置が検出できないときは、眼の開度を検出して運転者の覚醒度を推定する処理を開始することができない。
【０００５】
それ故に本発明は、左右のいずれか一方の片眼の位置を検出できないと推定されるときでも、瞼の開度を検出することのできる顔検出装置及び顔検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は以下に述べる特徴を有する。
第１の発明は、撮像手段を用いて使用者の顔を撮像した顔画像に基づき瞼の開度を検出する顔検出装置であって、撮像手段によって撮像された顔画像に基づき使用者の左右方向の顔の向きの角度を検出する角度検出手段と、角度の絶対値が予め定められた閾値以下であるとき、顔画像の両眼の画像に基づき両眼のそれぞれの瞼の開度を検出する第１の検出手段と、角度の絶対値が閾値を超えるとき、顔画像の左右のいずれか一方の片眼の画像に基づき片眼の瞼の開度を検出する第２の検出手段とを備える。
【０００７】
第２の発明は、第１の発明に従属する発明であって、角度検出手段は、顔画像における使用者の２つの鼻孔の中点を垂直に通る中心線と、当該使用者の顔の輪郭の両端をそれぞれ垂直に通る２つの線とのそれぞれの間隔の比に基づき角度を検出する。
【０００８】
第３の発明は、第１の発明に従属する発明であって、第２の検出手段は、顔画像に基づき使用者の鼻の位置を感覚器の位置として検出する鼻検出手段と、角度の正負の符号に基づき、鼻の位置を基準としてそれぞれ予め定められる左右の眼の位置のいずれか一方を選択する選択手段と、片眼の位置を検出する処理の対象となる探索領域が片眼の画像を含むように、当該探索領域の顔画像上の位置を選択手段によって選択された位置に設定する設定手段と、設定手段によって設定された探索領域に含まれる片眼の画像に基づき当該片眼の瞼の開度を検出する開度検出手段とを含む。
【０００９】
第４の発明は、第３の発明に従属する発明であって、開度検出手段は、設定手段によって設定された探索領域の顔画像の画素の中から片眼の上下瞼の候補を抽出する抽出手段と、抽出手段によって抽出された上下瞼の候補の中から瞬きをした上下瞼を特定する特定手段と、特定手段によって特定された上下瞼の開度を片眼の瞼の開度として検出する特定開度検出手段とを含む。
【００１０】
第５の発明は、第４の発明に従属する発明であって、特定開度検出手段は、特定手段によって特定された上下瞼の垂直方向の間隔の内、最も長い間隔を片眼の瞼開度として検出し、当該瞼開度を示すデータを生成する生成手段をさらに含む。
【００１１】
第６の発明は、第２の発明に従属する発明であって、予め定められた間隔で角度検出手段によって検出されるたびに角度を更新して記憶する記憶手段をさらに備え、角度検出手段は、角度を検出するとき、記憶手段に記憶されている更新後の角度の絶対値が閾値を超えるとき、両眼を除く顔画像に基づいて次の角度を検出する。
【００１２】
第７の発明は、第６の発明に従属する発明であって、第１の検出手段が検出を完了したときに記憶手段に記憶されている更新後の角度の絶対値が閾値を超えるとき、当該閾値を当該絶対値に再設定する第１の再設定手段と、第２の検出手段が検出を完了したときに記憶手段に記憶されている更新後の角度の絶対値が閾値未満であるとき、当該閾値を当該絶対値に再設定する第２の再設定手段とをさらに備える。
【００１３】
第８の発明は、第１の発明に従属する発明であって、第１の検出手段は、両眼のそれぞれの瞬きの検出結果に基づき両眼の瞼の開度をそれぞれ検出し、当該両眼の瞬きを共に検出できないとき、第２の検出手段による検出処理に切り替えて瞼の開度の検出を続ける切替手段をさらに備える。
【００１４】
第９の発明は、撮像装置によって使用者の顔を撮像した顔画像に基づき当該使用者の顔の感覚器の位置を検出する顔検出装置において実行される検出方法であって、撮像装置によって撮像された顔画像に基づき使用者の左右方向の顔の向きの角度を検出する角度検出ステップと、角度の絶対値が予め定められた閾値以下であるとき、顔画像の両眼の画像に基づき両眼のそれぞれの瞼の開度を検出する第１の検出ステップと、角度の絶対値が閾値を超えるとき、顔画像の左右のいずれか一方の片眼の画像に基づき片眼の瞼の開度を検出する第２の検出ステップとを備える。
【００１５】
第１０の発明は、第９の発明に従属する発明であって、角度検出ステップにおいて、使用者の２つの鼻孔の中点を垂直に通る中心線と、当該使用者の顔の輪郭の両端をそれぞれ垂直に通る２つの線とのそれぞれの間隔の比に基づき角度を検出する。
【００１６】
第１１の発明は、第９の発明に従属する発明であって、第２の検出ステップは、顔画像に基づき使用者の鼻の位置を感覚器の位置として検出する鼻検出ステップと、角度の正負の符号に基づき、鼻の位置を基準としてそれぞれ予め定められる左右の眼の位置のいずれか一方を選択する選択ステップと、片眼の位置を検出する処理の対象となる探索領域が片眼の画像を含むように、当該探索領域の顔画像上の位置を選択ステップにおいて選択された位置に設定する設定ステップと、設定ステップにおいて設定された探索領域に含まれる片眼の画像に基づき当該片眼の瞼の開度を検出する開度検出ステップとを含む。
【００１７】
第１２の発明は、第１１の発明に従属する発明であって、開度検出ステップは、設定ステップにおいて設定された探索領域の顔画像の画素の中から片眼の上下瞼の候補を抽出する抽出ステップと、抽出ステップにおいて抽出された上下瞼の候補の中から瞬きをした上下瞼を特定する特定ステップと、特定ステップにおいて特定された上下瞼の開度を片眼の瞼の開度として検出する特定開度検出ステップとを含む。
【００１８】
第１３の発明は、第１２の発明に従属する発明であって、特定開度検出ステップは、特定ステップにおいて特定された上下瞼の垂直方向の間隔の内、最も長い間隔を片眼の瞼開度として検出し、当該瞼開度を示すデータを生成する生成ステップをさらに含む。
【００１９】
第１４の発明は、第１０の発明に従属する発明であって、予め定められた間隔で角度検出ステップを繰り返す繰り返しステップと、繰り返しステップによって角度検出ステップが繰り返されるたびに検出された角度を更新して記憶する記憶ステップと、繰り返しステップによって角度検出ステップを繰り返すとき、記憶ステップによる更新後の角度の絶対値が閾値を超えるか否かを判断する判断ステップと、判断ステップにおいて角度の絶対値が閾値を超えると判断したとき、両眼を除く顔画像に基づいて次の角度を検出する別角度検出ステップとをさらに備える。
【００２０】
第１５の発明は、第１４の発明に従属する発明であって、第１の検出ステップを完了したときの記憶ステップにおける更新後の角度の絶対値が閾値を超えるとき、当該閾値を当該絶対値に再設定する第１の再設定ステップと、第２の検出ステップを完了したときに記憶ステップにおける更新後の角度の絶対値が閾値未満であるとき、当該閾値を当該絶対値に再設定する第２の再設定ステップとをさらに備える。
【００２１】
第１６の発明は、第９の発明に従属する発明であって、第１の検出ステップにおいて、両眼のそれぞれの瞬きの検出結果に基づき両眼の瞼の開度をそれぞれ検出し、当該両眼の瞬きを共に検出できないとき、第２の検出ステップに切り替えて瞼の開度の検出を続ける切替ステップをさらに備える。
【発明の効果】
【００２２】
第１の発明によれば、顔画像に基づいて検出した顔の向きの角度の絶対値が予め定めた閾値を越えるとき、すなわち、使用者の左右のいずれか一方の片眼が撮像手段の死角に入ると考えられるときには、顔画像に撮像されているもう一方の片眼の画像に基づき当該片眼の瞼の開度を検出するため、両眼が撮像手段の撮像範囲に含まれなくても、左右のいずれか一方の片眼の瞼の開度を検出することができる。
【００２３】
第２の発明によれば、使用者の顔の２つの鼻孔と輪郭の両端とを検出するだけで顔の向きの角度を検出することができる。
【００２４】
第３の発明によれば、使用者の左右のいずれか一方の片眼が撮像手段の死角に入ると考えられるときに、角度の正負の符号に基づいて顔が左右のいずれに向けられているかを判断し、判断した方向に対応する探索領域を設定して、片眼の瞼の開度を検出することができる。
【００２５】
第４の発明によれば、探索領域に含まれる複数の上下瞼候補の瞬きを検出し、瞬きをした上下瞼候補を真の片眼の上下瞼であると判断するため、真の片眼の瞼の開度を検出することができる。
【００２６】
第５の発明によれば、真の片眼の瞼開度を示すデータを生成するため、本発明に係る顔検出装置に接続される他の装置が真の片眼の瞼開度に基づいて使用者の状態を判断することができる。
【００２７】
第６の発明によれば、最新の顔の向きの角度を常に記憶手段に記憶させることができ、さらに、記憶手段に記憶されている顔の向きの角度が閾値を越えているとき、すなわち、使用者の左右のいずれか一方の片眼が撮像手段の死角に入っていると考えられるときは、眼の領域を除く顔画像に基づいて次の顔の向きの角度を検出するため、顔の向きの角度の検出精度が低下するのを防ぐことができる。
【００２８】
第７の発明よれば、第１の検出手段による検出が完了したとき、すなわち、両眼の画像に基づいて両眼のそれぞれの瞼の開度が検出できたのにも拘わらず、記憶手段に記憶されている最新の顔の向きの角度が閾値を越えている、すなわち、左右のいずれか一方の片眼が撮像手段の死角に入ると判断されるときには、最新の顔の向きの角度を閾値として設定することにより、両眼の画像に基づいて両眼のそれぞれの瞼の開度が検出できるときの顔の向きの角度を閾値として学習することができる。一方、第２の検出手段による検出が完了したとき、すなわち、片眼の画像に基づいて片眼の瞼の開度が検出できたのにも拘わらず、記憶手段に記憶されている最新の顔の向きの角度が閾値未満であるとき、すなわち、両眼の画像に基づいて両眼のそれぞれの瞼の角度を検出できるときには、最新の顔の向きの角度を閾値として設定することにより、片眼の画像に基づいて片眼の瞼の開度が検出できるとき、すなわち、左右のいずれか一方の片眼が撮像手段の死角に入るときの顔の向きの角度を閾値として学習することができる。つまり、第７の発明によれば、両眼の画像に基づいて両眼のそれぞれの瞼の開度を検出できるときと、左右のいずれか一方の片眼が撮像手段の死角に入るときとの顔の向きの角度の強化位置を閾値として学習することができる。
【００２９】
第８の発明によれば、顔の向きの角度が閾値以下であるとき、すなわち、両眼の画像に基づき両眼のそれぞれの瞼の開度を検出できると判断した後に、両眼の瞬きを共に検出できないと、すなわち、左右のいずれか一方の片眼の瞬きのみを検出できるときには、処理を最初に戻すことなく、片眼の瞼の開度を検出するための第２の検出手段による検出処理に切り替えて瞼の開度の検出を続けることができる。
【００３０】
また、本発明の検出方法によれば、上述した本発明に係る顔検出装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３１】
（第１の実施形態）
以下、図１乃至図９を適宜参照して本発明の第１の実施形態に係る顔検出装置１３について説明する。尚、本実施形態では、顔検出装置１３を含む運転者監視システム１と車両制御システム２とが、車両に搭載される例について説明する。運転者監視システム１は、搭載される車両の運転者の顔の画像を撮像し、撮像した画像に基づいて運転者の状態を監視するシステムである。顔検出装置１３は、上記の画像中で運転者の左右の眼の位置や瞬きなどを検出する。
【００３２】
まず、図１を参照して運転者監視システム１の機能構成について説明する。図１は、本実施形態に係る顔検出装置１３を含む運転者監視システム１の機能構成を示す機能ブロック図である。
【００３３】
運転者監視システム１は、ＣＡＮ（Controller Area Network）などを介して車両制御システム２に接続される。運転者監視システム１は、近赤外照明１１と、近赤外カメラ１２と、顔検出装置１３とからなる。
【００３４】
近赤外照明１１は、近赤外光を発する照明装置であり、典型的には、近赤外光を発するＬＥＤ（Light Emitting Diode）である。近赤外照明１１は、近赤外光が運転者に照射されるように車両内に配置される。
【００３５】
近赤外カメラ１２は、近赤外領域で高い感度特性を有する撮像装置であり、典型的には、近赤外ＣＣＤカメラである。近赤外領域で高い感度特性を有するカメラを用いることにより、夜間やトンネル内などを走行中で車内が暗い状況でも、近赤外照明１１に照らされた撮像対象を感度良く撮像することが可能である。近赤外カメラ１２は運転者の顔を撮像可能な位置に配置される。近赤外カメラ１２は運転者の顔、及びその周囲の画像を撮像し、撮像された画像を示すデータを、１フレーム分の画像を撮像するたびに生成する。以下では近赤外カメラ１２によって撮像される画像を顔画像と称する。また、近赤外カメラ１２が顔画像を示すデータ（以下、顔画像データと称する）を生成する間隔は、必ずしも１フレーム分の顔画像を撮像するたびでなくてもよく、その他の好ましい間隔であってもよい。
【００３６】
顔検出装置１３は、典型的にはＥＣＵ（Electric Control Unit）であり、メモリ１３１などの記憶装置、顔向き検出マイコン１３２、及び特徴点検出マイコン１３３などの情報処理装置、及びインターフェース回路などを備える処理装置である。顔検出装置１３は、近赤外カメラ１２によって生成される顔画像データを取得し、取得した顔画像データを顔向き検出マイコン１３２、及び特徴点検出マイコン１３３などの情報処理装置で処理する。そして、顔検出装置１３は、顔画像データの処理結果を示すデータを生成する。
【００３７】
メモリ１３１は、典型的にはＲＡＭ（Random Access Memory）などの記憶装置であり、後述する角度閾値及び顔向き角度を記憶する。メモリ１３１は、他にも、顔向き検出マイコン１３２、及び特徴点検出マイコン１３３がテンプレートマッチングやパターンマッチングなどの画像処理をするためのテンプレート画像などを記憶してもよい。
【００３８】
顔向き検出マイコン１３２は、典型的にはマイクロコンピュータなどの情報処理装置である。顔向き検出マイコン１３２は、顔検出装置１３によって取得された顔画像データを処理することにより、当該顔画像データが示す顔画像に撮像されている運転者の左右方向の顔の向きの角度を顔向き角度として検出する。顔向き検出マイコン１３２は、顔検出装置１３によって取得される顔画像データを処理することにより、予め定められた間隔で顔向き角度を検出し、メモリ１３１に記憶されている顔向き角度を更新する。これにより、メモリ１３１には、常に最新の顔向き角度が記憶される。
【００３９】
また、本実施形態に係る顔向き検出マイコン１３２は、顔画像に両眼が撮像されているときに適した第１の角度検出処理と、顔画像に左右のいずれか一方の片眼が撮像されているときに適した第２の角度検出処理とのいずれか一方の処理を顔向き角度に基づいて選択し、選択した角度検出処理で顔向き角度を検出する。
【００４０】
ここで、図２を参照して、本発明における顔向き角度について説明する。図２は顔画像、及び当該顔画像が撮像された時点の運転者の頭部の上面図である。本実施形態では運転者の頭部は頭頂部を上面とする円柱形状を成しているものと見なす。尚、顔は円柱状の頭部の中心線を中心に回転する。図２に示す顔向き角度αの値は、近赤外カメラ１２に対して正面を向いた状態でα＝０である。そして、顔が近赤外カメラ１２に対して正面を向いた状態から右方向へ向くほど顔向き角度αの値は大きくなる。一方、顔が近赤外カメラ１２に対して正面を向いた状態から左方向へ向くほど顔向き角度αの値は小さくなる。したがって、顔向き角度αの値は、顔が右方向へ向くと正の値となり、左方向へ向くと負の値となる。また、運転者が左方向を向いているか右方向を向いているかを顔向き角度αの符号に基づいて判断することができる。
【００４１】
本実施形態に係る顔向き検出マイコン１３２は、顔向き角度αを検出するときに、メモリ１３１に記憶されている顔向き角度αと前述の角度閾値とを比較した結果に基づいて適した角度検出処理を選択する。以下、図３を参照しながら顔向き検出マイコン１３２の角度検出処理について説明をする。
【００４２】
本実施形態に係る顔向き検出マイコン１３２は、後述するように顔画像の対称性を検証した結果に基づいて顔向き角度αを検出する。このとき、例えば、図３（ａ）に示すように、運転者が右方向へ顔を向けているときの顔向き角度αが相対的に小さいときは、顔の対称な位置に存在する両眼を共に含む顔画像が近赤外カメラ１２によって撮像されると推定され、対称性の検証結果は精度が相対的に高くなり、精度の高い顔向き角度αを検出することができる。
【００４３】
これに対して、例えば、運転者が右方向へ顔を向けているときの顔向き角度αが相対的に大きいと、図３（ｂ）に破線で示すように右眼が鼻に隠れてしまうなどの原因で近赤外カメラ１２の死角に入り、左眼のみを含む顔画像が近赤外カメラ１２によって撮像されると推定され、対称性の検証結果の精度は相対的に低くなり、検出された顔向き角度αの精度も相対的に低くなる。これは、運転者が左方向へ顔を向けているときも同様である。
【００４４】
そこで、本実施形態に係る顔向き検出マイコン１３２は、メモリ１３１に記憶されている顔向き角度αと前述の角度閾値とを比較することにより、顔画像に両眼が撮像されているか、左右のいずれか一方の片眼が撮像されているかを推定する。より具体的には、本実施形態に係る顔向き検出マイコン１３２は、顔向き角度αが角度閾値を超えないときに、顔画像に両眼が撮像されると推定し、顔画像に両眼が撮像されているときに適した角度検出処理である第１の角度検出処理をして顔向き角度αを検出する。
【００４５】
一方、本実施形態に係る顔向き検出マイコン１３２は、メモリ１３１に記憶されている顔向き角度αと前述の角度閾値とを比較して、顔向き角度αが角度閾値を超えるときに、顔画像において左右のいずれか一方の片眼のみが撮像されると推定し、顔画像に片眼が撮像されているときに適した角度検出処理である第２の角度検出処理をして顔向き角度αを検出する。詳細な説明は後述するが、第２の角度検出処理では、顔画像において眼が撮像されている領域を推定し、推定した領域を処理の対象から除外して対称性の検証をする。
【００４６】
第２の角度検出処理では、顔画像において眼が撮像される領域、すなわち、精度の高い対称性の検証ができない領域を対称性の検証の対象から除外することにより、検証結果の精度の低下を防ぐことができ、顔画像に片眼のみが撮像されると推定されるときでも精度の高い顔向き角度αを検出することができる。また、本実施形態に係る顔向き検出マイコン１３２は、メモリ１３１に記憶されている顔向き角度αと角度閾値とを比較するという負荷の低い処理をするだけで顔画像において左右の眼のいずれか一方のみが撮像されるときを推定して、判断することができる。
【００４７】
以上が、顔向き検出マイコン１３２の説明である。尚、角度閾値は、顔画像において両眼が共に撮像されているときと、左右のいずれか一方の片眼が撮像されているときとを顔向き検出マイコン１３２が推定して判断するための閾値としてメモリ１３１に予め記憶させておく必要がある。図３から明らかなように、顔画像において左右のいずれか一方の片眼のみが撮像されるときは、運転者が左右のいずれか一方に大きく顔を向けたとき、すなわち、顔向き角度αの絶対値がある一定の値以上となったときである。つまり、角度閾値は、顔向き角度αの絶対値に対する閾値として予め定めることができる。
【００４８】
次に、特徴点検出マイコン１３３について説明をする。特徴点検出マイコン１３３は、典型的にはマイクロコンピュータなどの情報処理装置である。特徴点検出マイコン１３３は、顔検出装置１３によって取得された顔画像を処理することにより、運転者の左右の少なくともいずれか一方の眼の瞬きの有無、すなわち、瞼の開閉の有無を検出する。そして、特徴点検出マイコン１３３は、瞬きの有無の検出結果に基づいて、顔画像における運転者の左右の少なくともいずれか一方の眼の位置を顔の感覚器の位置として検出する位置検出処理をする。以下、特徴点検出マイコン１３３の位置検出処理について説明する。尚、本実施形態に係る特徴点検出マイコン１３３の詳細な処理については後述する。
【００４９】
本実施形態に係る特徴点検出マイコン１３３が、位置検出処理をするときは、まず、両眼、又は片眼のいずれが顔画像に撮像されているかを顔向き角度αに基づいて推定する。より詳細には、特徴点検出マイコン１３３は、メモリ１３１に記憶されている顔向き角度α、すなわち、最新の顔向き角度αに基づき、両眼、又は片眼のいずれが顔画像に撮像されているかを推定する。推定をすると、特徴点検出マイコン１３３は、顔画像に両眼が撮像されているときに適した第１の位置検出処理と、顔画像に左右のいずれか一方の片眼が撮像されているときに適した第２の位置検出処理とのいずれか一方の処理を推定結果に基づいて選択する。
【００５０】
特徴点検出マイコン１３３は、メモリ１３１に記憶されている顔向き角度αと角度閾値とを比較して、顔向き角度αが角度閾値以下であるとき、すなわち、上述したように両眼を共に含む顔画像が近赤外カメラ１２によって撮像されるときと推定されるとき、両眼のそれぞれに対応する瞼探索領域を設定して両眼の位置をそれぞれ検出する第１の位置検出処理をする。特徴点検出マイコン１３３が、両眼のそれぞれに対応する瞼探索領域を設定する位置は、顔画像における運転者の鼻の位置を基準として統計的に既知の位置である。
【００５１】
一方、特徴点検出マイコン１３３は、メモリ１３１に記憶されている顔向き角度αと角度閾値とを比較して、顔向き角度αが角度閾値を超えているときは、顔画像に撮像されている左右のいずれか一方の片眼に対応する１つの瞼探索領域を設定して片眼の位置を検出する第２の位置検出処理をする。特徴点検出マイコン１３３が、左右のいずれか一方の片眼に対応する瞼探索領域を設定する位置は、顔画像における運転者の鼻の位置を基準として統計的に既知の位置である。
【００５２】
顔向き角度αが角度閾値を越えているときに、前述の第１の位置検出処理と同様に２つの瞼探索領域を設定すると、顔画像に撮像されていないいずれか一方の片眼に対応する瞼探索領域では瞬きを検出することができなくなる。そこで、本実施形態に係る特徴点検出マイコン１３３は、顔向き角度αが角度閾値を越えているときに第２の角度検出処理をして顔画像に撮像されている片眼に対応する瞼探索領域を設定することにより、瞬きを検出することのできない瞼探索領域を設定することなく、顔画像に撮像されている片眼の位置を検出することができる。尚、顔向き角度αが角度閾値を越えているときに左右のいずれの瞼探索領域を設定するかは、特徴点検出マイコン１３３が、角度閾値αの符号に基づいて判断する。
【００５３】
第１の位置検出処理、又は第２の位置検出処理において瞼探索領域を設定すると、特徴点検出マイコン１３３は、設定した瞼探索領域においてテンプレートマッチングやエッジ検出処理をすることにより瞬きの検出をする。そして、特徴点検出マイコン１３３は、瞬きをした眼の位置を真の眼の位置であると判断し、感覚器の位置として検出する。真の眼の位置を検出すると、特徴点検出マイコン１３３は、真の眼の瞼開度を検出して、検出した瞼の開度を示すデータを生成する。尚、瞼開度とは、片眼、又は両眼の瞼がそれぞれどの程度開いているかを示す値のことである。
【００５４】
また、本実施形態に係る特徴点検出マイコン１３３は、第１の位置検出処理において、両眼の瞬きを共に検出したときの顔向き角度αが角度閾値を超えるとき、メモリ１３１に記憶されている角度閾値を当該顔向き角度αの絶対値に再設定する。一方、特徴点検出マイコン１３３は、第１の位置検出処理において両眼の瞬きを共に検出できないとき、位置検出処理を第２の位置検出処理に切り替えて左右のいずれか一方の片眼の瞬きを検出する。そして、特徴点検出マイコン１３３は、第２の位置検出処理において左右のいずれか一方の片眼の瞬きを検出したときの顔向き角度αが角度閾値未満であるとき、メモリ１３１に記憶されている角度閾値を当該顔向き角度αの絶対値に再設定する。
【００５５】
特徴点検出マイコン１３３が、第１の位置検出処理において両眼の瞬きを共に検出したときに上述したように角度閾値を再設定し、一方で、第２の位置検出処理において左右のいずれか一方の片眼の瞬きを検出したときに上述したように角度閾値を再設定することにより、メモリ１３１に記憶されている角度閾値は、顔画像において運転者の両眼が撮像されるときと左右のいずれか一方の片眼が撮像されるときとの顔向き角度αの境界値に収束する。つまり、特徴点検出マイコン１３３は、第１及び第２の位置検出処理の結果に基づき上述したように角度閾値を再設定することにより、顔画像において運転者の両眼が撮像されるときと左右のいずれか一方の片眼が撮像されるときとの顔向き角度αの境界値を学習することができる。これにより、顔向き検出マイコン１３２及び特徴点検出マイコン１３３のそれぞれは、学習した角度閾値を用いて処理を選択するため、より正確に適した処理を判断することができる。以上が、本実施形態に係る特徴点検出マイコン１３３の説明である。
【００５６】
次に、車両制御システム２について説明する。車両制御システム２には、プリクラッシュ制御システムなどの車両を制御するシステムが含まれる。例えば、プリクラッシュ制御システムは、運転者の覚醒状態や脇見運転などを顔向き検出マイコン１３２によって検出される顔向き角度α、特徴点検出マイコン１３３によって検出される運転者の左右の眼のそれぞれの位置、及び左右の眼のそれぞれの瞼開度などの運転者の状態を示すデータに基づいて判断することができる。この判断により、プリクラッシュ制御システムは、車両と障害物との衝突の危険を報ずる警告や、衝突回避走行の制御などを実行するタイミングを、上記の運転者の覚醒状態などに応じて決定する。以上が、車両制御システム２の説明である。
【００５７】
次に、本実施形態に係る顔向き検出マイコン１３２、及び特徴点検出マイコン１３３の処理をそれぞれ詳細に説明する。尚、本実施形態に係る顔向き検出マイコン１３２、及び特徴点検出マイコン１３３はそれぞれ処理を並行しているものとする。
【００５８】
まず、本実施形態に係る顔向き検出マイコン１３２の処理を図４に示すフローチャートを参照しながら説明する。尚、メモリ１３１には、顔向き検出マイコン１３２、及び特徴点検出マイコン１３３がそれぞれ図４及び図７のフローチャートに示す処理をする前に、上述したように定められた角度閾値θが予め記憶されているものとする。
【００５９】
図４のステップＳ１０１において、顔向き検出マイコン１３２は、顔検出装置１３によって取得された顔画像の所定方向（例えば、垂直方向）に対してソーベルフィルタ処理をする。そして、顔向き検出マイコン１３２は、処理後のソーベル画像内における輝度の差を用いて、当該ソーベル画像内から垂直方向のエッジを抽出して、垂直方向エッジ部分を白、垂直方向エッジでない部分を黒で表示する２値の垂直方向エッジ画像を示す垂直方向エッジ画像データを生成する。顔向き検出マイコン１３２は、ステップＳ１０１の処理を完了すると、ステップＳ１０２へ処理を進める。
【００６０】
ステップＳ１０２において、顔向き検出マイコン１３２は、垂直方向エッジ画像における運転者の顔の幅を算出する処理をする。より詳細には、顔向き検出マイコン１３２は、垂直方向エッジ画像における垂直方向エッジの分布を示すヒストグラム（垂直方向エッジヒストグラム）を生成し、運転者の顔右端、及び顔左端を抽出して、抽出した顔右端及び顔左端に基づき、図２に示す顔画像における顔の右端及び左端の水平方向の位置をそれぞれ示す右端ＥＲ及び左端ＥＬを検出する。右端ＥＲ、及び左端ＥＬは、それぞれ図２に示す原点を基準とした顔画像における水平方向の位置を示す。右端ＥＲ、及び左端ＥＬを検出すると、顔向き検出マイコン１３２は、検出した左端ＥＬから右端ＥＲを減算した長さを、運転者の顔幅Ｗとして算出する。顔向き検出マイコン１３２は、ステップＳ１０２の処理を完了すると、ステップＳ１０３へ処理を進める。
【００６１】
ステップＳ１０３において、顔向き検出マイコン１３２は、ステップＳ１０２で顔幅Ｗが算出できたか否かを判断する。顔向き検出マイコン１３２は、ステップＳ１０３において、顔幅Ｗが算出できたと判断したとき、ステップＳ１０４へ処理を進める。一方、顔向き検出マイコン１３２は、ステップＳ１０３において、顔幅Ｗを検出できないと判断したとき、ステップＳ１０１へ処理を戻す。
【００６２】
ステップＳ１０４において、顔向き検出マイコン１３２は、顔画像における運転者の感覚器（両眼及び鼻など）や摂食器（口）などの顔部品がそれぞれ撮像されている領域（顔部品領域）を推定する。より詳細には、顔向き検出マイコン１３２は、顔画像の所定方向（例えば、水平方向）にソーベルフィルタ処理をする。そして、顔向き検出マイコン１３２は、処理後のソーベル画像内における輝度の差を用いて、当該ソーベル画像内から水平方向のエッジを抽出して、水平方向エッジ部分を白、水平方向エッジでない部分を黒で表示する２値の水平方向エッジ画像を示す水平方向エッジ画像データを生成する。そして、顔向き検出マイコン１３２は、水平方向エッジ画像に対して任意のフィルタ処理をすることにより顔部品が強調された画像（例えば、白黒白エッジ画像）を示すデータを生成する。
【００６３】
顔部品が強調された画像を示すデータを生成すると、顔向き検出マイコン１３２は、顔部品が強調された画像における眼の下側の輪郭の垂直方向の位置である目下位置を基準として、予め定められた垂直方向の間隔にある口下位置、及び眉上位置をそれぞれ図５に示すように特定する。そして、顔向き検出マイコン１３２は、目下位置、口下位置、及び眉上位置をそれぞれ特定すると、それぞれの位置の間の水平方向の領域を口領域、鼻領域、及び眼領域として推定する。尚、鼻領域は、目下位置及び口下位置の中点と目下位置との間の水平方向の領域として推定する。また、図５に示す予め定められる垂直方向の間隔ＭＭ、及びＭＫはそれぞれ統計的に既知の間隔であってもよいし、任意の間隔であってもよい。顔向き検出マイコン１３２は、ステップＳ１０４の処理を完了すると、ステップＳ１０５へ処理を進める。
【００６４】
ステップＳ１０５において、顔向き検出マイコン１３２は、メモリ１３１に記憶されている最新の顔向き角度α、及び角度閾値θをそれぞれ取得する。顔向き検出マイコン１３２は、ステップＳ１０５の処理を完了すると、ステップＳ１０６へ処理を進める。
【００６５】
ステップＳ１０６において、顔向き検出マイコン１３２は、ステップＳ１０５で取得した顔向き角度α、及び角度閾値θを比較する。より詳細には、顔向き検出マイコン１３２は、ステップＳ１０５で取得した顔向き角度αの絶対値を算出し、当該絶対値が角度閾値θ以下であるか否かを判断する。顔向き検出マイコン１３２は、ステップＳ１０６において、顔向き角度αの絶対値が角度閾値θ以下であると判断したとき、ステップＳ１０７へ処理を進める。一方、顔向き検出マイコン１３２は、ステップＳ１０６において、顔向き角度αの絶対値が角度閾値θ以下でないと判断したとき、ステップＳ１１０へ処理を進める。
【００６６】
ステップＳ１０７において、顔向き検出マイコン１３２は、ステップＳ１０４で推定した顔部品領域の画素に基づき、顔画像における顔の中心線の水平方向の位置を示す中心Ｃ（図２参照）を求める。より詳細には、顔向き検出マイコン１３２は、前述の顔部品が強調された画像における垂直方向の１つの画素列を仮想的な中心線として設定し、設定した中心線を中心とする顔部品領域の画素の左右対称性を検証する。顔向き検出マイコン１３２は、顔部品が強調された画像の垂直方向の画素列の全て、又は１以上の垂直方向の画素列を仮想的な中心線として設定し、それぞれの画素列を中心線としたときの左右対称性を検証する。そして、顔部品が強調された画像において、最も左右対称性の高い仮想的な中心線の水平方向の位置を中心Ｃとして検出する。顔向き検出マイコン１３２は、ステップＳ１０７の処理を完了すると、ステップＳ１０８へ処理を進める。
【００６７】
ステップＳ１０８において、顔向き検出マイコン１３２は、中心Ｃを検出できたか否かを判断する。顔向き検出マイコン１３２は、ステップＳ１０８において、中心Ｃを検出できたと判断したとき、ステップＳ１０９へ処理を進める。一方、顔向き検出マイコン１３２は、ステップＳ１０８において、中心Ｃを検出できなかったと判断したとき、ステップＳ１０１へ処理を戻す。
【００６８】
ステップＳ１０９において、顔向き検出マイコン１３２は、ステップＳ１０２、及びステップＳ１０７においてそれぞれ検出された左端ＥＬ、右端ＥＲ、及び中心Ｃを用いて、顔の左右比率を算出する。顔の左右比率を算出すると、顔向き検出マイコン１３２は、算出した左右比率を角度に換算して運転者の顔向き角度αを検出し、メモリ１３１に記憶されている顔向き角度αを更新する。
【００６９】
より詳細には、顔向き検出マイコン１３２は、図２に示す左端ＥＬから顔の中心Ｃまでの幅ＷＬと、右端ＥＲから顔の中心Ｃまでの幅ＷＲとをそれぞれ算出する。幅ＷＬ、及び幅ＷＲをそれぞれ算出すると、顔向き検出マイコン１３２は、算出した幅ＷＬ、及び幅ＷＲに基づいて顔向き角度αを算出する。図２に示すように、顔が近赤外カメラ１２に対して正面を向いている場合、幅ＷＲ、及び幅ＷＬは同値である。一方、顔が右を向いている場合、幅ＷＲに比べ幅ＷＬの方が大きい。すなわち、顔向き角度αの大きさに応じて、幅ＷＲ、及び幅ＷＬの値の比率が変化する。そこで、顔向き検出マイコン１３２は、幅ＷＲ、及び幅ＷＬの値の比率を、顔向き角度αの値に換算するデータテーブルを予め記憶し、幅ＷＲ、幅ＷＬ、及び当該データテーブルに基づいて顔向き角度αを検出して、メモリ１３１に記憶されている顔向き角度αを更新する。
【００７０】
顔向き検出マイコン１３２は、ステップＳ１０９の処理を完了すると、ステップＳ１０１へ処理を戻す。
【００７１】
ステップＳ１１０において、顔向き検出マイコン１３２は、ステップＳ１０４において推定した顔部品領域の内、眼領域を左右対称性の判断から除外する処理をする。顔向き検出マイコン１３２が、眼領域を左右対称性の判断の対象から除外する手法の一例としては、図６に示すように、当該領域の画素を全て白にする処理が挙げられる。図６は、運転者が右方向に大きく顔を向けているときの画像から得られた前述の顔部品を強調した画像における眼領域の画素を全て白にした画像の一例を示す図である。顔向き検出マイコン１３２は、ステップＳ１１０の処理を完了すると、ステップＳ１１１へ処理を進める。
【００７２】
ステップＳ１１１において、顔向き検出マイコン１３２は、ステップＳ１１０において眼領域を除外する処理をした画像に対して前述の左右対称性の検証をして、前述の中心Ｃを検出する。顔向き検出マイコン１３２は、ステップＳ１１１の処理を完了すると、ステップＳ１０８へ処理を進める。
【００７３】
以上が、本実施形態に係る顔向き検出マイコン１３２が顔向き角度αを検出するための角度検出処理の説明である。尚、図４に示すフローチャートでは、ステップＳ１０１〜ステップＳ１０７〜ステップＳ１０９の一連の処理が上述した第１の角度検出処理に相当し、ステップＳ１０１〜ステップＳ１１０〜ステップＳ１０９の一連の処理が上述した第２の角度検出処理に相当する。そして、顔向き検出マイコン１３２は、ステップＳ１０６において顔向き角度αの絶対値が角度閾値θ以下でないとき、ステップＳ１１０へ処理を進めることにより、第２の角度検出処理を選択して切り替える。本実施形態に係る顔向き検出マイコン１３２は、顔向き角度αの絶対値と角度閾値θとを比較するだけの低い負荷の処理をして、片眼、又は両眼のいずれが顔画像に撮像されているかを推定し、第１の角度検出処理及び第２の角度検出処理のいずれか一方の適した処理を選択することができる。
【００７４】
また、図４のフローチャートの説明の内、ステップＳ１０１〜ステップＳ１０４、ステップＳ１０７、ステップＳ１０９、及びステップＳ１１１の処理の説明はそれぞれ一例であり、それぞれの処理で必要な結果と同様の結果が得られるのであれば、他の任意の手法を用いてもよい。
【００７５】
また、顔向き検出マイコン１３２は、顔向き角度αを検出するための顔画像に対する前処理として、取得した顔画像の画素を間引く処理などをしてもよい。これにより、上述したソーベルフィルタ処理、及び左右対称性の検証の処理などの画像処理をするときの顔向き検出マイコン１３２の処理負荷を軽減することができる。顔向き検出マイコン１３２が顔画像を間引く処理をするときは、ソーベル画像や白黒白エッジ画像などに基づいて検出した左端ＥＬ、右端ＥＲ、幅ＷＬ、幅ＷＲ及び中心Ｃなどの位置を、元の顔画像の座標系に変換する処理をしてもよい。以上が、本実施形態に係る顔向き検出マイコン１３２が、顔向き角度αを検出するための角度検出処理の手法の一例の説明である。
【００７６】
次に、本実施形態に係る特徴点検出マイコン１３３の処理を図７に示すフローチャートを参照しながら説明する。ステップＳ２０１において、特徴点検出マイコン１３３は、顔検出装置１３によって取得された顔画像から運転者の鼻孔の位置を前述の感覚器の位置として検出する。より詳細には、特徴点検出マイコン１３３は、前述の鼻領域を示すデータを顔向き検出マイコン１３２から取得し、取得したデータに基づいて鼻孔の位置を検出するための鼻孔探索領域を設定する。そして、特徴点検出マイコン１３３は、設定した鼻孔探索領域内の顔画像から輝度が相対的に低い画素を検出し、それら低輝度画素群の円らしさを算出する。そして、特徴点検出マイコン１３３は、円らしさが最も高い２つの低輝度画素群からなる２つの円の位置をそれぞれ運転者の２つの鼻孔と判断し、２つの鼻孔の中点の位置を鼻孔の位置として検出する。特徴点検出マイコン１３３は、ステップＳ２０１の処理を完了すると、ステップＳ２０２へ処理を進める。
【００７７】
ステップＳ２０２において、特徴点検出マイコン１３３は、ステップＳ２０１において鼻孔の位置を検出できたか否かを判断する。特徴点検出マイコン１３３は、ステップＳ２０１において鼻孔の位置を検出できたと判断したとき、ステップＳ２０３へ処理を進める。一方、特徴点検出マイコン１３３は、ステップＳ２０２において鼻孔の位置を検出できなかったと判断したとき、ステップＳ２０１へ処理を戻す。
【００７８】
ステップＳ２０３において、特徴点検出マイコン１３３は、メモリ１３１に記憶された顔向き角度α、及び角度閾値θをそれぞれ取得する。特徴点検出マイコン１３３は、ステップＳ２０１の処理を完了すると、ステップＳ２０４へ処理を進める。
【００７９】
ステップＳ２０４において、特徴点検出マイコン１３３は、ステップＳ２０３で取得した顔向き角度αの絶対値、及び角度閾値θを比較する。より詳細には、特徴点検出マイコン１３３は、ステップＳ２０３で取得した顔向き角度αの絶対値を算出し、当該絶対値が角度閾値θ以下であるか否かを判断する。特徴点検出マイコン１３３は、ステップＳ２０４において、顔向き角度αの絶対値が角度閾値θ以下であると判断したとき、ステップＳ２０５へ処理を進める。一方、顔向き検出マイコン１３２は、ステップＳ２０４において、顔向き角度αの絶対値が角度閾値θ以下でないと判断したとき、ステップＳ２１２へ処理を進める。
【００８０】
ステップＳ２０５において、特徴点検出マイコン１３３は、前述の瞼探索領域を設定する。より具体的には、特徴点検出マイコン１３３は、ステップＳ２０１において検出した鼻孔の位置を基準とする統計的に既知である左右の眼のそれぞれの位置に基づき、左右の眼にそれぞれ対応する２つの瞼探索領域を図８に斜線部で示すように設定する。図８に示すｈｒ、ｈｌ、及びｖがそれぞれ統計的に既知である左右の眼の位置を示す。尚、図８に示すｈｒ、ｈｌ、及びｖは、顔向き角度αによってそれぞれ変化するように定められていてもよい。特徴点検出マイコン１３３は、ステップＳ２０５の処理を完了すると、ステップＳ２０６へ処理を進める。
【００８１】
ステップＳ２０６において、特徴点検出マイコン１３３は、ステップＳ２０５で設定した左右の眼の瞼探索領域において、それぞれ瞬きを検出したか否かを判断する。より詳細には、特徴点検出マイコン１３３は、ステップＳ２０５で設定した左右の眼の瞼探索領域の顔画像に対して、エッジ検出処理やメモリ１３１に予め記憶されているテンプレート画像を用いたパターンマッチング処理などをして、左右の眼の瞼探索領域の画素の中からそれぞれ上瞼と下瞼との組み合わせの上下瞼候補となる画素を抽出する。このとき抽出される上下瞼候補は、左右の眼の瞼探索領域において、それぞれ１以上とする。
【００８２】
そして、特徴点検出マイコン１３３は、抽出した左右の眼の１以上の上下瞼候補毎の上瞼と下瞼との間隔を瞼開度としてそれぞれ検出して上下瞼候補毎に記憶する。より詳細には、特徴点検出マイコン１３３は、後述する両眼開度検出や瞬きの検出をするため、予め定められた長さの期間（以下、開度記憶期間と称する）における上下瞼候補の瞼開度を時間の経過に沿った時系列データとして上下瞼候補毎に記憶する。したがって、特徴点検出マイコン１３３は、ステップＳ２０６において、上下瞼候補毎に瞼開度を検出すると、検出した瞼開度と記憶した時系列データとを上下瞼候補毎に対応させて新たに記憶する。
【００８３】
さらに、特徴点検出マイコン１３３は、全ての上下瞼候補の時系列データを参照して、全ての上下瞼候補の中から瞬きをした上下瞼候補を左右の眼の瞼探索領域においてそれぞれ特定する。特徴点検出マイコン１３３は、ステップＳ２０６において、左右の眼の両方の瞼探索領域において瞬きをした上下瞼候補を特定したとき、ステップＳ２０７へ処理を進める。一方、特徴点検出マイコン１３３は、ステップＳ２０６において、左右の眼の両方の瞼探索領域において瞬きをした上下瞼候補を特定できないとき、すなわち、少なくともいずれか一方の片眼の瞬きを検出できないとき、ステップＳ２１２へ処理を進める。
【００８４】
ステップＳ２０７において、特徴点検出マイコン１３３は、ステップＳ２０１で検出した鼻孔の位置を正しい鼻孔の位置として確定する。さらに、特徴点検出マイコン１３３は、ステップＳ２０６で特定した左右の眼の上下瞼候補の下瞼の画素の内、垂直方向の最も下にある画素の位置をそれぞれ真の眼の位置であるとして確定する。特徴点検出マイコン１３３が、ステップＳ２０７の処理をすることにより、鼻孔の位置（鼻の位置）及び左右のそれぞれの眼の位置が、顔の感覚器の位置としてそれぞれ検出される。特徴点検出マイコン１３３は、ステップＳ２０７の処理を完了すると、ステップＳ２０８へ処理を進める。
【００８５】
ステップＳ２０８において、特徴点検出マイコン１３３は、前述の時系列データの内、ステップＳ２０７で確定した左右の眼の最新の瞼開度をそれぞれ示すデータを生成する両眼開度検出をする。特徴点検出マイコン１３３が、ステップＳ２０８の処理において生成したデータは他の装置（例えば、前述の車両制御システム２など）によって取得され、運転者の覚醒状態を推定する処理などに用いられてもよい。特徴点検出マイコン１３３は、ステップＳ２０８の処理を完了すると、ステップＳ２０９へ処理を進める。
【００８６】
ステップＳ２０９において、特徴点検出マイコン１３３は、メモリ１３１に記憶されている顔向き角度αと角度閾値θとをそれぞれ取得する。特徴点検出マイコン１３３は、ステップＳ２０９の処理を完了すると、ステップＳ２１０へ処理を進める。
【００８７】
ステップＳ２１０において、特徴点検出マイコン１３３は、ステップＳ２０９で取得した顔向き角度αの絶対値と角度閾値θとを比較する。より詳細には、特徴点検出マイコン１３３は、ステップＳ２０９で取得した顔向き角度αの絶対値を算出し、当該絶対値が角度閾値θを超えるか否かを判断する。特徴点検出マイコン１３３は、ステップＳ２１０において、顔向き角度αの絶対値が角度閾値θを超えると判断したとき、ステップＳ２１１へ処理を進める。一方、特徴点検出マイコン１３３は、ステップＳ２１０において、顔向き角度αの絶対値が角度閾値θを超えないと判断したとき、ステップＳ２０１へ処理を戻す。
【００８８】
ステップＳ２１１において、特徴点検出マイコン１３３は、メモリ１３１に記憶されている角度閾値θの値をステップＳ２０９で算出した顔向き角度αの絶対値に更新する。特徴点検出マイコン１３３は、ステップＳ２１１の処理を完了すると、ステップＳ２０１へ処理を戻す。
【００８９】
ステップＳ２１２において、特徴点検出マイコン１３３は、顔検出装置１３によって取得された顔画像における運転者の左右のいずれか一方の片眼に対応する瞼探索領域を設定する。より詳細には、まず、特徴点検出マイコン１３３は、ステップＳ２０３で取得した顔向き角度αの符号に基づき、図２を参照しながら説明したように運転者が向いている方向を判断する。そして、運転者が向いている方向を判断すると、特徴点検出マイコン１３３は、判断した方向に基づいて、左右の瞼探索領域の内、設定するべき片眼の瞼探索領域を判断する。
【００９０】
より具体的には、特徴点検出マイコン１３３は、ステップＳ２０３で取得した顔向き角度αの符号が正であるとき、ステップＳ２０１において検出した鼻孔の位置を基準とする統計的に既知である左眼の位置に基づいて左眼の瞼探索領域を設定する。一方、特徴点検出マイコン１３３は、ステップＳ２０３で取得した顔向き角度αの符号が負であるとき、ステップＳ２０１において検出した鼻孔の位置を基準とする統計的に既知である右眼の位置に基づいて右眼の瞼探索領域を設定する。図９に示す（ａ）は、運転者が顔を大きく右へ向けているとき、すなわち、顔向き角度αの符号が正であるときに設定された左眼の瞼探索領域の一例を示す図である。また、図９に示す（ｂ）は、図９（ａ）に示す２つの鼻孔とそれらの中心の位置関係をより明確に示すための拡大図である。特徴点検出マイコン１３３は、ステップＳ２１２の処理を完了するとステップＳ２１３へ処理を進める。
【００９１】
ステップＳ２１３において、特徴点検出マイコン１３３は、ステップＳ２１２で設定した片眼の瞼探索領域において瞬きを検出したか否かを判断する。より具体的には、特徴点検出マイコン１３３は、ステップＳ２１２で設定した片眼の瞼探索領域の顔画像に対して、エッジ検出処理やメモリ１３１に予め記憶されているテンプレート画像を用いたパターンマッチング処理などをして、片眼の瞼探索領域の画素の中から前述の上下瞼候補を抽出する。このとき抽出される上下瞼候補は、片眼の瞼探索領域において、１以上とする。
【００９２】
そして、特徴点検出マイコン１３３は、抽出した片眼の１以上の上下瞼候補毎に前述した瞼開度を検出してそれぞれ記憶する。より詳細には、特徴点検出マイコン１３３は、後述する片眼開度検出や瞬きの検出をするため、上下瞼候補毎に瞼開度を検出すると、ステップＳ２０６の処理と同様に、検出した瞼開度と前述の時系列データとを上下瞼候補毎に対応させて新たに記憶する。さらに、特徴点検出マイコン１３３は、片眼の瞼探索範囲における上下瞼候補毎に瞬きをしたか否かを判断するために、ステップＳ２１２で設定した瞼探索領域から抽出された上下瞼候補の時系列データを参照して、瞬きをした上下瞼候補を片眼の瞼探索領域において特定する。特徴点検出マイコン１３３は、ステップＳ２１３において、片眼の瞼探索領域において瞬きをした上下瞼候補を特定したとき、ステップＳ２１４へ処理を進める。一方、特徴点検出マイコン１３３は、ステップＳ２１３において、片眼の瞼探索領域において瞬きをした上下瞼候補を特定できないとき、ステップＳ２０１へ処理を戻す。
【００９３】
ステップＳ２１４において、特徴点検出マイコン１３３は、ステップＳ２０１で検出した鼻孔の位置を正しい鼻孔の位置として確定する。さらに、特徴点検出マイコン１３３は、ステップＳ２１３で特定した片眼の上下瞼候補の下瞼の画素の内、垂直方向の最も下にある画素の位置を真の片眼の位置であるとして確定する。特徴点検出マイコン１３３が、ステップＳ２１４の処理をすることにより、鼻孔の位置（鼻の位置）及び片眼の位置が、顔の感覚器の位置として検出される。特徴点検出マイコン１３３は、ステップＳ２１４の処理を完了すると、ステップＳ２１５へ処理を進める。
【００９４】
ステップＳ２１５において、特徴点検出マイコン１３３は、前述の時系列データの内、ステップＳ２１４で確定した片眼の上下瞼候補の時系列データを再度参照し、時系列データの中で最新の片眼の瞼開度を示すデータを生成する片眼開度検出をする。このとき、特徴点検出マイコン１３３が生成するデータは、左右の眼の内、ステップＳ２１２で設定した瞼探索領域に撮像されている眼の瞼開度を示すデータである。特徴点検出マイコン１３３が、ステップＳ２１５の処理において生成したデータは他の装置（例えば、前述の車両制御システム２）によって取得され、運転者の覚醒状態を推定する処理などに用いられてもよい。特徴点検出マイコン１３３は、ステップＳ２１５の処理を完了すると、ステップＳ２１６へ処理を進める。
【００９５】
ステップＳ２１６において、特徴点検出マイコン１３３は、メモリ１３１に記憶されている顔向き角度αと角度閾値θとをそれぞれ取得する。特徴点検出マイコン１３３は、ステップＳ２１６の処理を完了すると、ステップＳ２１７へ処理を進める。
【００９６】
ステップＳ２１７において、特徴点検出マイコン１３３は、ステップＳ２１６で取得した顔向き角度αの絶対値と角度閾値θとを比較する。より詳細には、特徴点検出マイコン１３３は、ステップＳ２１６で取得した顔向き角度αの絶対値を算出し、当該絶対値が角度閾値θ未満であるか否かを判断する。特徴点検出マイコン１３３は、ステップＳ２１７において、顔向き角度αの絶対値が角度閾値θ未満であると判断したとき、ステップＳ２１８へ処理を進める。一方、特徴点検出マイコン１３３は、ステップＳ２１７において、顔向き角度αの絶対値が角度閾値θを超えないと判断したとき、ステップＳ２０１へ処理を戻す。
【００９７】
ステップＳ２１８において、特徴点検出マイコン１３３は、メモリ１３１に記憶されている角度閾値θの値をステップＳ２１６で算出した顔向き角度αの絶対値に再設定する。特徴点検出マイコン１３３は、ステップＳ２１８の処理を完了すると、ステップＳ２０１へ処理を戻す。
【００９８】
以上が、本実施形態に係る特徴点検出マイコン１３３の処理の説明である。尚、図７のフローチャートに示す特徴点検出マイコン１３３の処理では、ステップＳ２０１〜ステップＳ２０５〜ステップＳ２１１の一連の処理が上述した第１の位置検出処理に相当し、ステップＳ２０１〜ステップＳ２１２〜ステップＳ２１８の一連の処理が上述した第２の位置検出処理に相当する。そして、特徴点検出マイコン１３３は、ステップＳ２０４において顔向き角度αの絶対値が角度閾値θ以下でないとき、ステップＳ２１２へ処理を進めることにより、第２の位置検出処理を選択して切り替える。特徴点検出マイコン１３３は、顔向き角度αの絶対値と角度閾値θとを比較するだけの低い負荷の処理をして、片眼、又は両眼のいずれが顔画像に撮像されているかを推定し、第１の位置検出処理及び第２の位置検出処理のいずれか一方の適した処理を選択することができる。
【００９９】
また、特徴点検出マイコン１３３は、ステップＳ２０６〜ステップＳ２１１の処理をすることにより、両眼の画像に基づいて両眼のそれぞれの瞼開度が検出できたのにも拘わらず、メモリ１３１に記憶されている最新の顔向き角度αの絶対値が角度閾値θを越えている、すなわち、左右のいずれか一方の片眼が近赤外カメラ１２の死角に入ると判断されるときには、最新の顔向き角度αを角度閾値θとして再設定することにより、両眼の画像に基づいて両眼のそれぞれの瞼開度が検出できるときの顔向き角度αを角度閾値θとして再設定して、学習することができる。一方、特徴点検出マイコン１３３は、ステップＳ２１３〜ステップＳ２１８の処理をすることにより、片眼の画像に基づいて片眼の瞼開度が検出できたのにも拘わらず、メモリ１３１に記憶されている最新の顔向き角度αが角度閾値θ未満であるとき、すなわち、両眼の画像に基づいて両眼のそれぞれの瞼開度を検出できるときには、最新の顔向き角度αを角度閾値θとして設定することにより、片眼の画像に基づいて片眼の瞼開度が検出できるとき、すなわち、左右のいずれか一方の片眼が近赤外カメラ１２の死角に入るときの顔向き角度αを角度閾値θとして再設定して、学習することができる。つまり、ステップＳ２０６〜ステップＳ２１１の処理、及びステップＳ２１３〜ステップＳ２１８の処理によれば、両眼の画像に基づいて両眼のそれぞれの瞼開度を検出できるときと、左右のいずれか一方の片眼が近赤外カメラ１２の死角に入るときとの顔向き角度αの境界値を角度閾値θとして学習することができる。
【０１００】
また、特徴点検出マイコン１３３が、図７のフローチャートに示す処理を繰り返すときにおいて第１及び第２の位置検出処理が切り替わるときには、処理が切り替わる前の時系列データに、ステップＳ２０６、又はステップＳ２１３において新たに検出した瞼開度を上下瞼候補毎に対応させて加えて記憶してもよい。これにより、ステップＳ２０８の両眼開度検出及びステップＳ２１５における片眼開度検出において、第１及び第２の位置検出処理のいずれか一方に切り替えられて前述の時系列データが途切れることを防ぐことができ、より正確な両眼、及び片眼の開度検出をそれぞれすることができる。
【０１０１】
また、図７のフローチャートの説明の内、ステップＳ２０１、ステップＳ２０５、ステップＳ２０６、ステップＳ２１２、及びステップＳ２１３の処理の説明は、それぞれ一例であり、それぞれの処理と同様の結果が得られるのであれば、他の任意の手法を用いてもよい。
【０１０２】
また、図４及び図７に示すそれぞれの処理は、本発明に係る顔検出装置１３を搭載する車両のイグニッションキーがＯＮとなっている全ての期間だけにしてもよい。
【０１０３】
また、第１の実施形態では、顔向き検出マイコン１３２、及び特徴点検出マイコン１３３は、それぞれ顔検出装置１３によって取得された顔画像データを直接処理するものとして説明をした。しかしながら、顔検出装置１３によって取得された顔画像データをメモリ１３１に記憶し、メモリ１３１に記憶された画像データを顔向き検出マイコン１３２、及び特徴点検出マイコン１３３が処理してもよい。
【０１０４】
また、上述した顔検出装置１３の処理は、記憶装置（ＲＯＭ、ＲＡＭ、ハードディスク等）に格納された上述した処理手順を実施可能な所定のプログラムデータが、顔向き検出マイコン１３２及び特徴点検出マイコン１３３にそれぞれ相当するＣＰＵやマイクロコンピュータによって解釈実行されることで実現されてもよい。また、この場合、記憶装置は、メモリ１３１であってもよいし、顔向き検出マイコン１３２及び特徴点検出マイコン１３３にそれぞれ含まれる記憶装置であってもよいし、顔向き検出マイコン１３２及び特徴点検出マイコン１３３がアクセス可能な他のどのような記憶装置であってもよい。また、この場合、プログラムデータは、記憶媒体を介して記憶装置内に導入されてもよいし、記憶媒体上から直接実行されてもよい。尚、記憶媒体とは、ＲＯＭやＲＡＭやフラッシュメモリなどの半導体メモリ、フレキシブルディスクやハードディスクなどの磁気ディスクメモリ、ＣＤ−ＲＯＭやＤＶＤやＢＤなどの光ディスクメモリ、及びメモリカードなどであってもよい。
【０１０５】
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の一例にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることはいうまでもない。
【産業上の利用可能性】
【０１０６】
本発明によれば、適した処理を選択するための前処理を短時間ですることのできる顔向き判定装置を提供でき、例えば、車両の運転者の顔の向きを判定する顔向き判定装置などに有用である。
【図面の簡単な説明】
【０１０７】
【図１】第１の実施形態に係る運転者監視システム及び車両制御システムの機能構成を示す機能ブロック図
【図２】本発明の顔向き角度を説明する図
【図３】両眼が撮像される場合と片眼のみが撮像される場合をそれぞれ説明する図
【図４】第１の実施形態に係る顔向き検出マイコンの処理を示すフローチャート
【図５】顔画像領域の一例を示す図
【図６】除去する眼領域の一例を示す図
【図７】第１の実施形態に係る特徴点検出マイコンの処理を示すフローチャート
【図８】左右の瞼探索領域の一例を示す図
【図９】片眼の瞼探索領域の一例を示す図
【符号の説明】
【０１０８】
１    運転者監視システム
２    車両制御システム
１１    近赤外照明
１２    近赤外カメラ
１３    顔検出装置
１３１    メモリ
１３２    顔向き検出マイコン
１３３    特徴点検出マイコン
【図１】
0004992823.tif 000002
【図２】
0004992823.tif 000003
【図３】
0004992823.tif 000004
【図４】
0004992823.tif 000005
【図５】
0004992823.tif 000006
【図６】
0004992823.tif 000007
【図７】
0004992823.tif 000008
【図８】
0004992823.tif 000009
【図９】
0004992823.tif 000010