(57)【要約】【課題】画像に表された顔の向きの推定精度を向上できる顔向き推定用コンピュータプログラムを提供する。【解決手段】顔向き推定用コンピュータプログラムは、仮定された複数の顔の向きのそれぞれについて、入力画像に表された顔の向きをその仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成し、仮定された顔の向きごとに、顔向き変換画像に表された顔を反転して反転顔画像を生成し、反転顔画像に表された顔の向きを仮定された顔の向きとなるよう変換するか、入力画像に表された顔の向きをその仮定された顔の向きに応じて所定の向きへ変換し、変換結果に基づいて、仮定された顔の向きごとに、反転顔画像に表された顔と入力画像に表された顔間の相違度を表す評価値を算出し、評価値に基づいて、仮定された顔の向きのうちの一つを入力画像に表された顔の向きとして特定する、ことをコンピュータに実行させるための命令を含む。【選択図】図８
2018097573.tif 000002
【特許請求の範囲】
【請求項１】
顔が表された入力画像を入力し、
前記入力画像に表された顔に対して仮定された複数の顔の向きのそれぞれについて、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記顔向き変換画像に表された顔を反転して反転顔画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔の向きを当該仮定された顔の向きとなるように変換するか、または、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて前記所定の向きへ変換し、
変換した結果に基づいて、前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔と前記入力画像に表された顔間の相違度を表す評価値を算出し、
前記評価値に基づいて、前記仮定された複数の顔の向きのうち、一の顔の向きを前記入力画像に表された顔の向きとして特定する、
ことをコンピュータに実行させるための顔向き推定用コンピュータプログラム。
【請求項２】
前記顔の向きを特定することは、前記仮定された複数の顔の向きのそれぞれについて算出された前記相違度が小さいほど値が小さくなる評価値のうちの最小値に対応する仮定された顔の向きを、前記入力画像に表された顔の向きとして特定する、請求項１に記載の顔向き推定用コンピュータプログラム。
【請求項３】
前記所定の向きは前記入力画像を取得するカメラに対する正面方向である、請求項１または２に記載の顔向き推定用コンピュータプログラム。
【請求項４】
前記入力画像から前記顔の複数の特徴点を検出し、前記複数の特徴点のそれぞれが所定の位置となるように前記入力画像上の前記顔の位置を移動して正規化顔画像を生成することをさらにコンピュータに実行させ、
前記顔向き変換画像を生成することは、前記正規化顔画像に表された顔の向きを前記仮定された顔の向きに応じて前記所定の向きへ変換することで前記顔向き変換画像を生成する、請求項１〜３の何れか一項に記載の顔向き推定用コンピュータプログラム。
【請求項５】
前記評価値を算出することは、前記入力画像上の各画素と前記反転顔画像上の対応画素間の画素値の差に基づいて前記評価値を算出する、請求項１〜４の何れか一項に記載の顔向き推定用コンピュータプログラム。
【請求項６】
顔が表された入力画像を入力し、
前記入力画像に表された顔に対して仮定された複数の顔の向きのそれぞれについて、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記顔向き変換画像に表された顔を反転して反転顔画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔の向きを当該仮定された顔の向きとなるように変換するか、または、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて前記所定の向きへ変換し、
変換した結果に基づいて、前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔と前記入力画像に表された顔間の相違度を表す評価値を算出し、
前記評価値に基づいて、前記仮定された複数の顔の向きのうち、一の顔の向きを前記入力画像に表された顔の向きとして特定する、
ことを含む顔向き推定方法。
【請求項７】
顔が表された入力画像を入力し、前記入力画像に表された顔に対して仮定された複数の顔の向きのそれぞれについて、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成する顔向き変換部と、
前記仮定された複数の顔の向きのそれぞれについて、前記顔向き変換画像に表された顔を反転して反転顔画像を生成し、前記反転顔画像に表された顔の向きを当該仮定された顔の向きとなるように変換するか、または、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて前記所定の向きへ変換する反転顔画像生成部と、
変換した結果に基づいて、前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔と前記入力画像に表された顔間の相違度を表す評価値を算出する評価値算出部と、
前記評価値に基づいて、前記仮定された複数の顔の向きのうち、一の顔の向きを前記入力画像に表された顔の向きとして特定する顔向き推定部と、
を有する顔向き推定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、画像上に表された顔の向きを推定する顔向き推定用コンピュータプログラム、顔向き推定装置及び顔向き推定方法に関する。
【背景技術】
【０００２】
顔が表された画像から、顔の向きを推定する技術が研究されている。
【０００３】
例えば、ドライバの顔の向きを検知するための顔向き検知センサが知られている。この顔向き検知センサは、入力画像から検出されたエッジに基づいて顔端及び顔部品を検出し、検出された顔端及び顔部品に基づいて顔中心を推定する。そしてこの顔向き検知センサは、顔が円筒であるという仮説に基づいて顔端と顔中心から顔向き角度を演算する。
【０００４】
また、顔向き推定の他の技術では、顔の複数の特徴点にそれぞれ対応する複数のノードの位置を定めた３次元モデルの各ノードが顔の画像上に射影される。そして各ノードの射影点に基づいて、現在の３次元モデルと各特徴点の位置のずれを示す誤差推定量が求められ、その誤差推定量と現在の３次元モデルとに基づいて、画像における顔の各特徴点の３次元位置が推定され、その結果に基づいて顔の向きが推定される。さらに、画像中の顔の向きが変換されて正面顔が作成され、その正面顔の左右対称性の度合いに基づいて顔の向きが推定される技術が知られている（例えば、非特許文献１、特許文献１及び特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４９２８０号公報
【特許文献２】特開２００４−９４４９１号公報
【非特許文献】
【０００６】
【非特許文献１】林他、「運転者監視のための映像処理技術」、映像情報メディア学会誌、Vol.61、No.12、pp.1701-1704、2007年
【発明の概要】
【発明が解決しようとする課題】
【０００７】
対象者の顔の向きを高精度で推定することが求められることがある。例えば、車両の運転支援装置では、車両のドライバが前方を視認せずに脇見をしている場合に、ドライバに対して警告を発せるように、ドライバの顔の向きを常に正確に推定することがもとめられる。
【０００８】
しかしながら、上記の顔向き検知センサでは、人の顔の形状が、実際とは異なる円筒形状に仮定されているため、推定される顔の向きの誤差が大きくなることがある。また、３次元モデルを利用して顔の向きを推定する技術では、特に誤差推定量が小さい場合に、顔の各特徴点の位置のずれが顔の個人性によるものか、３次元モデルに表された顔の向きと画像上の顔の向きとのずれによるものかが区別されないことがある。このような場合、推定された顔の向きの誤差が大きくなることがある。さらに、正面顔の左右対称性の度合いに基づいて顔の向きが推定される技術では、実際の顔の向きが正面方向に近い場合、あるいは、左右対称性の度合いの判定の際に仮定された顔の向きが実際の顔の向きに近い場合に、左右対称性の度合いの低下が少なくなる。そのため、この技術では、顔の向きの推定精度が不十分となることがある。
【０００９】
一つの側面では、本発明は、画像に表された顔の向きの推定精度を向上できる顔向き推定用コンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
一つの実施形態によれば、顔向き推定用コンピュータプログラムが提供される。この顔向き推定用コンピュータプログラムは、顔が表された入力画像を入力し、入力画像に表された顔に対して仮定された複数の顔の向きのそれぞれについて、入力画像に表された顔の向きをその仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成し、仮定された複数の顔の向きのそれぞれについて、顔向き変換画像に表された顔を反転して反転顔画像を生成し、仮定された複数の顔の向きのそれぞれについて、反転顔画像に表された顔の向きをその仮定された顔の向きとなるように変換するか、または、入力画像に表された顔の向きをその仮定された顔の向きに応じて所定の向きへ変換し、変換した結果に基づいて、仮定された複数の顔の向きのそれぞれについて、反転顔画像に表された顔と入力画像に表された顔間の相違度を表す評価値を算出し、評価値に基づいて、仮定された複数の顔の向きのうち、一の顔の向きを入力画像に表された顔の向きとして特定する、ことをコンピュータに実行させるための命令を含む。
【発明の効果】
【００１１】
一つの側面では、本発明は、画像に表された顔の向きの推定精度を向上できる。
【図面の簡単な説明】
【００１２】
【図１】顔向き推定装置が実装された一つの実施形態による運転支援装置のハードウェア構成図である。
【図２】車両内における運転支援装置の配置の一例を示す図である。
【図３】顔向き推定処理に関する、制御部の機能ブロック図である。
【図４】顔向き推定処理の概要の説明図である。
【図５】３次元顔形状モデルを利用した、顔向き変換の処理の概要を説明する図である。
【図６】（ａ）は、仮定された顔の向きが誤っている場合における、顔向き推定処理にて利用される各画像の一例を示す図であり、（ｂ）は、仮定された顔の向きが正しい場合における、顔向き推定処理にて利用される各画像の一例を示す図である。
【図７】（ａ）〜（ｃ）は、それぞれ、評価値の算出に利用される各指標の説明図である。
【図８】入力画像と所定の顔の向きの範囲内のそれぞれの照合用反転顔画像の一例を示す図である。
【図９】顔向き推定処理の動作フローチャートである。
【図１０】変形例による、顔向き推定処理の動作フローチャートである。
【発明を実施するための形態】
【００１３】
以下、図を参照しつつ、顔向き推定装置について説明する。この顔向き推定装置は、画像に表されている顔の向きを仮定された顔の向きに応じて正面方向へ変換し、さらに、その正面方向を向いた顔を左右反転する。そしてこの顔向き推定装置は、左右反転された正面方向を向いた顔を仮定された顔の向きに変換した上で、その変換後の画像上の顔と元の画像の顔との相違度合いを表す評価値を算出する。そしてこの顔向き推定装置は、複数の仮定された顔の向きごとに評価値を算出し、その評価値が最小となるとき仮定された向きを、画像に表されている顔の向きとして推定する。
【００１４】
本実施形態では、顔向き推定装置は、車両の運転支援装置に実装され、車両のドライバの顔が表された画像に基づいてドライバの顔の向きを推定する。しかし、顔向き推定装置は、他の用途に利用され、ドライバ以外の対象者の顔の向きの推定に利用されてもよい。
【００１５】
図１は、顔向き推定装置が実装された一つの実施形態による運転支援装置のハードウェア構成図である。図２は、車両内における運転支援装置の配置の一例を示す図である。運転支援装置１は、カメラ２と、記憶部３と、制御部４と、通信インターフェース部５とを有する。運転支援装置１は、さらに、車両１０の周囲を撮影するための車外カメラ（図示せず）、及び、各種の情報を表示するためのディスプレイ（図示せず）などを有してもよい。記憶部３、制御部４及び通信インターフェース部５は、例えば、基板７上に設けられる。また、カメラ２は、コントロールエリアネットワークといった規格に準拠した車内ネットワーク６及び通信インターフェース部５を介して制御部４と接続される。さらに、制御部４は、通信インターフェース部５及び車内ネットワーク６を介して、車両１０の電子制御装置（ECU）（図示せず）と接続される。
【００１６】
カメラ２は、例えば、車室内前方の天井付近、例えば、ルームミラー付近に、ドライバ１１の方へ向けて取り付けられる。そしてカメラ２は、一定の周期（例えば、50msec〜100msec）ごとに、ドライバ１１の想定位置を含む撮影範囲を撮影することで画像を生成し、生成した画像を車内ネットワーク６を介して制御部４へ出力する。そのために、カメラ２は、例えば、CCDまたはC-MOSといった固体撮像素子により形成されるイメージセンサと、イメージセンサ上に撮影範囲の像を形成する撮像光学系とを有する。カメラ２により生成される画像は、例えば、RGB表色系、HLS表色系、またはYCbCr表色系で表されるカラー画像、あるいは、モノクロ画像とすることができる。
【００１７】
記憶部３は、例えば、読み書き可能な不揮発性または揮発性の半導体メモリ及び読み出し専用の不揮発性の半導体メモリを有する。そして記憶部３は、制御部４上で実行される、顔向き推定処理を含む、運転支援処理のプログラムを記憶する。また記憶部３は、運転支援処理で利用あるいは生成される各種のデータを記憶する。
【００１８】
制御部４は、一つまたは複数のプロセッサ及びその周辺回路を有し、運転支援装置１の各部及びＥＣＵと信号線あるいは車内ネットワーク６を通じて接続されている。制御部４は、一定周期ごとに、例えば、カメラ２から画像を取得する度に、運転支援処理を実行する。そして制御部４は、例えば、推定された顔の向きに基づいて、ドライバが前方を視認していないと判定した場合、通信インターフェース部５を介して車両１０の車室内に設けられたスピーカ（図示せず）を介して警告音を出力する。
【００１９】
通信インターフェース部５は、車内ネットワーク６と接続するためのインターフェース回路を有する。そして通信インターフェース部５は、カメラ２からの画像など、車内ネットワーク６を介して受信した各種の信号を制御部４へわたす。また通信インターフェース部５は、制御部４から出力された各種の信号を通信インターフェース部５を介して車内ネットワーク６へ出力する。
【００２０】
図３は、顔向き推定処理に関する、制御部４の機能ブロック図である。制御部４は、顔検出部２１と、顔向き変換部２２と、顔反転部２３と、顔向き逆変換部２４と、評価値算出部２５と、顔向き推定部２６とを有する。
制御部４が有するこれらの各部は、制御部４が有するプロセッサ上で実行されるコンピュータプログラムにより実現される機能モジュールである。あるいは、制御部４が有するこれらの各部は、その各部に対応する回路が集積された一つまたは複数の集積回路として、制御部４が有するプロセッサとは別個に、運転支援装置１に実装されてもよい。
【００２１】
なお、制御部４が有するこれらの各部は、カメラ２から得た画像のそれぞれに対してそれら各部の処理を実行するので、以下では、一つの画像を例として、各部の処理を説明する。また、以下では、カメラ２から得られた画像を入力画像と呼ぶ。また、制御部４が有するこれらの各部は、画素値として、輝度値、あるいは、何れかの色成分値を用いることができる。
【００２２】
図４は、制御部４により実行される顔向き推定処理の概要を説明する図である。制御部４は、入力画像４００に表されている顔の向きを、仮定された顔の向きが実際の顔の向きと同一の場合に顔が正面を向くように（すなわち、顔がカメラ２と正対するように）、その仮定された顔の向きに応じて変換することで、正面顔画像４０１を生成する。そして制御部４は、正面顔画像４０１に表されている顔を左右反転して反転顔画像４０２を生成する。さらに、制御部４は、反転顔画像４０２に表されている顔の向きを、仮定された顔の向きとなるよう変換して、照合用反転顔画像４０３を生成する。そして制御部４は、入力画像４００と照合用反転顔画像４０３とを比較して、入力画像４００上に表された顔と照合用反転顔画像４０３上に表された顔の相違度合いを表す評価値を算出する。
【００２３】
制御部４は、所定の顔の向きの範囲内で、仮定された顔の向きを変化させながら、その仮定された顔の向きごとに評価値を算出する。そして制御部４は、評価値が最小となるときの仮定された顔の向きを、入力画像に表された顔の向きと推定する。
【００２４】
顔検出部２１は、入力画像上に表された顔を検出する。本実施形態では、顔検出部２１は、入力画像上で、顔の特徴を表す複数の特徴点を検出する。例えば、顔検出部２１は、Harrisフィルタといったコーナー検出フィルタを入力画像に適用することで、画素値がコーナー状に変化する複数の特徴点を検出する。なお、顔検出部２１は、画像上に表された顔の特徴点を検出する他の様々な技術の何れを利用して、顔の特徴点を検出してもよい。
【００２５】
顔検出部２１は、検出された特徴点のそれぞれについて、その特徴点を含む入力画像上の所定の範囲（例えば、10x10画素）をテンプレートとして、予め用意される顔抽出モデル画像上の顔器官特徴点を含む局所領域との間でテンプレートマッチングを行う。なお、顔抽出モデル画像は、例えば、平均的な人の顔のモデルを表す画像であり、左右の眼の眼頭及び目尻、左右の口端といった顔器官特徴点を表す。また、顔検出部２１は、テンプレートマッチングにより、テンプレートと局所領域間の正規化相互相関値、あるいは、対応画素間の誤差２乗和などを、テンプレートと局所領域間の一致度合を表す評価値として算出する。
【００２６】
顔検出部２１は、顔抽出モデル画像上の所定個数（例えば、１０個）の顔器官特徴点のそれぞれについて、入力画像から検出された特徴点のうち、最も一致する特徴点を、入力画像上でのその顔器官特徴点と判定する。その際、顔検出部２１は、顔器官特徴点と最も一致する特徴点を、その顔器官特徴点を含む局所領域と各特徴点のテンプレート間の評価値に基づいて決定すればよい。すなわち、評価値が正規化相互相関値であれば、評価値が最大となる特徴点が顔器官特徴点と最も一致する特徴点となり、評価値が誤差２乗和であれば、評価値が最小となる特徴点が顔器官特徴点と最も一致する特徴点となる。
【００２７】
カメラ２とドライバの顔間の距離などにより、入力画像上に表されるドライバの顔の大きさは変動する。しかし、顔の向きを推定する際に、顔のサイズ、及び、各顔器官特徴点の位置は一定であることが好ましい。これは、画像上での顔のサイズの変動、または、顔の傾きまたは顔の位置による各顔器官特徴点の位置の変動が評価値に影響することを避けることができるためである。そこで、顔検出部２１は、入力画像上で検出された各顔器官特徴点の位置が、顔抽出モデル画像上のその顔器官特徴点の位置となる正規化顔画像を生成する。
【００２８】
正規化顔画像を生成するために、顔検出部２１は、入力画像上で検出された各顔器官特徴点の位置が、正規化顔画像上でのその顔器官特徴点の位置となるように、入力画像上の各点の位置を変換するアフィン変換パラメータを算出する。例えば、アフィン変換は、次式で表される。
【数１】
2018097573.tif 000003
ここで、Rnormは、回転成分を表す回転行列であり、Tnormは、並進成分を表す並進ベクトルである。また、(xiM,yiM)は、正規化顔画像上でのi番目の点（例えば、顔器官特徴点）の座標を表し、(xiD,yiD)は、対応する、入力画像上でのi番目の点の座標を表す。
【００２９】
ここで、検出された各顔器官特徴点の座標値をそれぞれ要素とするベクトルPD=(x1D,y1D,x2D,y2D,...,xKD,yKD)を考える（Kは顔器官特徴点の数）。この場合、（１）式から、次式が成立する。
【数２】
2018097573.tif 000004
したがって、顔検出部２１は、次式を解くことにより、アフィン変換の回転行列Rnormの各要素及び並進ベクトルTnormの各要素を算出できる。
【数３】
2018097573.tif 000005
なお、顔検出部２１は、（３）式を解く際に、最小二乗法を適用してもよい。
【００３０】
顔検出部２１は、アフィン変換パラメータを算出すると、正規化顔画像の各画素について、（１）式に従って入力画像上の対応位置を算出する。そして顔検出部２１は、対応位置の画素値を、その周囲の画素の値を用いた補間処理により算出し、対応位置の画素値を正規化画像のその画素の値とすることで、正規化顔画像を生成する。なお、補間処理が利用されるのは、対応位置の座標値が、整数値とならないことがあるためである。また、補間処理として、例えば、バイリニア補間、あるいは、バイキュービック補間が用いられる。
【００３１】
顔検出部２１は、生成した正規化顔画像を記憶部３に保存する。
【００３２】
顔向き変換部２２は、所定の顔の向きの範囲に含まれる、複数の仮定された顔の向きのそれぞれについて、正規化顔画像に表された顔の向きをその仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成する。本実施形態では、顔向き変換部２２は、入力画像上に表された顔の向きが仮定された顔の向きである場合に、顔の向きがカメラ２に対する正面方向を向くように、正規化顔画像上の顔の向きを変換することで正面顔画像を生成する。なお、正面顔画像は、顔向き変換画像の一例である。または正面方向は、所定の向きの一例である。
【００３３】
上述したように、仮定された顔の向きは、所定の顔の向きの範囲内で、ヨー角及びピッチ角の両方または一方について所定の角度単位で複数設定される。そこで、顔向き変換部２２は、仮定された顔の向きごとに正面顔画像を生成する。なお、所定の顔の向きの範囲は、例えば、ヨー角について、正面方向に対して左右それぞれに25°とし、ピッチ角について、正面方向に対して上下それぞれに20°とすることができる。また、所定の角度単位は、例えば、5°単位とすることができる。しかし、所定の顔の向きの範囲及び所定の角度単位は、この例に限られない。
【００３４】
本実施形態では、顔向き変換部２２は、顔の向きを変換するために、人の顔の３次元形状を表す３次元顔形状モデルを利用する。
【００３５】
図５は、３次元顔形状モデルを利用した、顔向き変換の処理の概要を説明する図である。顔の向き変換後に得られる正面顔画像５００上の着目画素f=(fx,fy)が、正面方向を向いた３次元顔形状モデル５０１に投影され、その投影点Ａの３次元位置が算出される。そして、３次元顔形状モデル５０１が、仮定された顔の向きに従って、３次元顔形状モデル５０１のヨー軸及びピッチ軸を回転軸として回転され、投影点Ａに対応する点Ｂの３次元位置が算出される。点Ｂを正規化顔画像５０２に投影することで、着目画素f=(fx,fy)に対応する、正規化顔画像５０２上の対応点r=(rx,ry)が求められる。そして正規化顔画像５０２上の対応点r=(rx,ry)の画素値が、正面顔画像５００の着目画素f=(fx,fy)の画素値とされる。なお、対応点rの画素値は、例えば、対応点rの周囲の画素の値を用いた補間処理により算出される。顔向き変換部２２は、補間処理として、例えば、バイリニア補間あるいは、バイキュービック補間を用いればよい。なお、補間処理が利用されるのは、対応点rの座標値(rx,ry)が、整数値とならないことがあるためである。顔向き変換部２２は、正面顔画像５００上の各画素について、上記の処理を行うことで、仮定された顔の向きに対応する正面顔画像５００を生成できる。
【００３６】
以下、顔向き変換処理の詳細について説明する。
３次元顔形状モデルは、例えば、３次元の三角形のパッチPiの集合{Pi;i∈{1,2,...,N}}(Nは、三角形のパッチの総数)として規定される。個々の三角形のパッチは、３次元顔形状モデルにおける、顔の表面の一部を表す。また、パッチPiの各頂点は、Vji(j∈{1,2,3})として規定される。そして３次元顔形状モデルは、頭蓋重心位置が正規化顔画像に対応する仮想的なカメラの位置を原点とするカメラ座標系において、位置(X0,Y0,Z0)となるように配置されていると仮定する。なお、カメラ座標系において、Z方向は、光軸と平行な方向を表す。また、X方向及びY方向は、それぞれ、正規化顔画像における水平方向及び垂直方向を表す。
【００３７】
顔向き変換部２２は、例えば、ピンホールモデルに従って、正面顔画像上の各点を３次元顔形状モデルに投影する。そこで、顔向き変換部２２は、正規化顔画像上の着目画素(fx,fy)に対応する視線ベクトル(mx,my,1)を次式に従って算出する。
【数４】
2018097573.tif 000006
ここで、(FX,FY)は、正規化顔画像に対応する仮想的なカメラについての、水平方向及び垂直方向の焦点距離を表す。また、(CX,CY)は、その仮想的なカメラの光軸方向に対応する、正規化顔画像上の点の座標である。
【００３８】
顔向き変換部２２は、３次元顔形状モデルの各パッチのうち、視線ベクトルと交差するパッチを特定する。その際、顔向き変換部２２は、パッチごとに、そのパッチが表される平面と視線ベクトルとの交点を算出し、その交点がパッチの内部にあるパッチを、視線ベクトルと交差するパッチとして特定すればよい。そして顔向き変換部２２は、その交点を、正規化顔画像上の着目画素(fx,fy)に対応する、３次元顔形状モデル上の投影点Ａとする。
【００３９】
顔向き変換部２２は、３次元顔形状モデルを、仮定された顔の向きに従って３次元顔形状モデルのヨー軸及びピッチ軸を回転軸として回転したときの、投影点Ａ=(Ax,Ay,Az)に対応する点Ｂ=(Bx,By,Bz)の３次元位置を次式に従って算出する。
【数５】
2018097573.tif 000007
ここで、φは、仮定された顔の向きに対応する、正面方向からのヨー軸周りの回転角、すなわち、ヨー角をあらわす。また、θは、仮定された顔の向きに対応する、正面方向からのピッチ軸周りの回転角、すなわち、ピッチ角をあらわす。そしてRφ、Rθは、それぞれ、ヨー軸周りの回転を表す回転行列、ピッチ軸周りの回転を表す回転行列である。またG=(X0,Y0,Z0)は、３次元顔形状モデルの頭蓋重心位置、すなわち、ヨー、ピッチ、ロールの各回転軸が交差する点である。
【００４０】
顔向き変換部２２は、点Ｂを、次式に従って、正規化顔画像上に投影することで、着目画素(fx,fy)の対応点r=(rx,ry)を算出する。
【数６】
2018097573.tif 000008
そして顔向き変換部２２は、対応点rの画素値を周囲の画素の画素値に基づく補間処理を実行することで算出し、対応点rの画素値を、正面顔画像の着目画素(fx,fy)の画素値とすればよい。
【００４１】
なお、以下では、説明の便宜上、（４）式〜（６）式をまとめて、下記のように表記する。
【数７】
2018097573.tif 000009
【００４２】
顔向き変換部２２は、正面顔画像の各画素について上記の処理を実行することで、正面顔画像を生成できる。
【００４３】
また、顔向き変換部２２は、（７）式に従って、正規化顔画像上の各顔器官特徴点に対応する、正面顔画像上の対応位置を算出する。そして顔向き変換部２２は、各顔器官特徴点のそれぞれの対応位置を、正面顔画像上でのその顔器官特徴点の位置とする。そして顔向き変換部２２は、生成した正面顔画像及び正面顔画像上の各顔器官特徴点の位置を顔反転部２３へわたす。
【００４４】
顔反転部２３は、反転向き一致部の一例であり、複数の仮定された顔の向きのそれぞれについて、その仮定された顔の向きに基づいて生成された正面顔画像を左右反転させることで、反転顔画像を生成する。例えば、顔反転部２３は、正面顔画像の各画素について、次式に従って反転顔画像上の対応画素の座標を算出する。
【数８】
2018097573.tif 000010
ここで、(fx,fy)は、正面顔画像上の着目画素の水平座標、垂直座標を表し、(fx2,fy2)は、着目画素(fx,fy)に対応する反転顔画像上の画素の水平座標、垂直座標を表す。そしてwwは、正面顔画像の原点(0,0)が正面顔画像の左上端であるときの正面顔画像の右端座標を表す。
【００４５】
顔反転部２３は、正面顔画像の各画素について、その画素の値を、反転顔画像の対応画素の値とすることで、反転顔画像を生成できる。また、顔反転部２３は、正面顔画像の各顔器官特徴点について、（８）式に従って、反転顔画像上の位置を算出できる。
【００４６】
仮定された顔の向きが正しい場合、すなわち、仮定された顔の向きが入力画像に表された顔の向きと等しい場合、正面顔画像に表された顔は正面を向いている。そのため、この場合には、顔の正中線近傍を基準として、顔が左右反転されることになる。また、顔の左右対称性は一般的に高い。したがって、反転顔画像に表された顔と正面顔画像に表された顔間の類似度は高い。しかし、仮定された顔の向きが入力画像に表された顔の向きと異なっている場合、正面顔画像に表された顔は正面を向いていない。そのため、この場合には、顔の正中線からずれた位置を基準として、顔が左右反転されることになる。その結果、反転顔画像に表された顔と正面顔画像に表された顔間の類似度は低くなる。さらに、場合によっては、反転顔画像上に表される顔は歪んだものとなる。
【００４７】
顔反転部２３は、さらに、反転顔画像を仮定された顔の向きに従って元の顔の向きに変換することで照合用反転顔画像を生成する。そのために、顔反転部２３は、顔向き変換部２２と同様に、３次元顔形状モデルに基づいて、照合用反転顔画像上の各画素に対応する、反転顔画像上の対応位置を算出する。すなわち、顔反転部２３は、照合用反転顔画像上の各画素について、その画素を仮定された顔の向きの３次元顔形状モデル上に投影して投影点を求める。そして顔反転部２３は、３次元顔形状モデルの顔の向きが正面向きとなるよう、３次元顔形状モデルを回転させたときの各投影点の３次元位置を求める。そして顔反転部２３は、照合用反転顔画像上の各画素について、３次元顔形状モデルが正面を向いているときの対応する投影点を反転顔画像上に投影することで反転顔画像上の対応点をもとめ、その対応点の画素値を、照合用反転顔画像上のその画素の値とする。なお、顔反転部２３も、顔向き変換部２２と同様に、対応点の周囲の画素値を用いた補間により、対応点の画素値を算出すればよい。
【００４８】
その際、顔反転部２３は、次式に従って、照合用反転顔画像上の着目画素d=(dx,dy)に対応する、反転顔画像上の対応位置f=(fx,fy)を算出する。
【数９】
2018097573.tif 000011
ここで、(-φ,-θ)は、仮定された顔の向きから顔を正面方向へ向けるよう３次元形状顔モデルを回転させるためのヨー角及びピッチ角を表す。また、関数H2x(dx,dy;-φ,-θ)及びH2y(dx,dy;-φ,-θ)は、（７）式と同様に、（４）〜（６）式をまとめたものを表す。ただし、H2x(dx,dy;-φ,-θ)及びH2y(dx,dy;-φ,-θ)では、着目画素d=(dx,dy)が投影される３次元顔形状モデルは、仮定された顔の向きに従って、すなわち、(φ,θ)だけ、正面方向からヨー軸周り及びピッチ軸周りに回転されたものとなる。また（５）式における、回転行列Rφ、Rθの各要素について、(φ,θ)が(-φ,-θ)に置換される。
【００４９】
また、顔反転部２３は、（９）式に従って、反転顔画像上の各顔器官特徴点について、照合用反転顔画像上の対応位置を算出する。そして顔反転部２３は、各顔器官特徴点のそれぞれの対応位置を、照合用反転顔画像上でのその顔器官特徴点の位置とする。
【００５０】
図６（ａ）は、仮定された顔の向きが誤っている場合における、顔向き推定処理にて利用される各画像の一例を示す図である。仮定された顔の向きが誤っている場合、入力画像６０１に表された顔の向きがその仮定された顔の向きに応じて変換された正面顔画像６０２の生成、及び、正面顔画像６０２の反転による反転顔画像６０３の生成を通じて、顔の歪みが拡大される。さらに、反転顔画像６０３に表されている顔の向きを、仮定された顔の向きに応じて元の向きとなるよう変換することで照合用反転顔画像６０４を生成することで、顔の歪みがさらに拡大される。その結果、入力画像６０１上に表された顔と照合用反転顔画像６０４上に表された顔の相違が大きくなる。本実施形態では、このように、仮定された顔の向きと入力画像６０１上の実際の顔の向きの差による影響が、正面顔画像６０２、反転顔画像６０３及び照合用反転顔画像６０４の生成を通じて強調される。そのため、仮定された顔の向きと入力画像６０１上の実際の顔の向きの差がそれほど大きくなくても、入力画像６０１上に表された顔と照合用反転顔画像６０４上に表された顔の相違が大きくなる。
【００５１】
一方、図６（ｂ）は、仮定された顔の向きが正しい場合における、顔向き推定処理にて利用される各画像の一例を示す図である。この場合、正面顔画像６１２、反転顔画像６１３及び照合用反転顔画像６１４の生成全体にわたって、顔の歪みはそれほど生じない。その結果、入力画像６１１上に表された顔と、照合用反転顔画像６１４上に表された顔の相違も小さい。
【００５２】
したがって、入力画像照合用反転顔画像との顔の相違度を調べることで、制御部４は、仮定された顔の向きが正しいか否かを評価することができる。
【００５３】
顔反転部２３は、照合用反転顔画像、及び、照合用反転顔画像上の各顔器官特徴点の位置を評価値算出部２５へわたす。
【００５４】
顔向き逆変換部２４は、複数の仮定された顔の向きのそれぞれについて、正面方向を向いた平均的な顔を表す基準顔画像から、その平均的な顔が仮定された顔の向きとなる補正基準顔画像を（９）式に従って生成する。なお、基準顔画像は、予め記憶部３に保存される。なお、基準顔画像は、顔抽出モデル画像と同一であってもよく、あるいは、顔抽出モデル画像と異なる画像であってもよい。なお、後述するように、評価値の算出において、補正基準顔画像が利用されない場合には、顔向き逆変換部２４は省略されてもよい。
【００５５】
顔向き逆変換部２４は、補正基準顔画像を評価値算出部２５へわたす。
【００５６】
評価値算出部２５は、仮定された顔の向きごとに、入力画像と照合用反転顔画像とを比較して、入力画像に表された顔と照合用反転顔画像に表された顔の相違度を表す評価値を算出する。
【００５７】
本実施形態では、評価値算出部２５は、下記の３個の指標に従って評価値を算出する。
図７（ａ）〜図７（ｃ）を参照しつつ、各指標について説明する。
（１）入力画像に表された顔と照合用反転顔画像に表された顔間の相違度合いS1：
図７（ａ）に示されるように、入力画像７０１の各画素と、照合用反転顔画像７０２の対応画素間の輝度の差が算出され、その差の絶対値和が相違度合いS1として算出される。もし、仮定された顔の向きが正しければ、入力画像に表された顔と照合用反転顔画像に表された顔とは、同じ方向を向いているはずである。また、人の顔は一般的に左右対称性が高いので、相違度合いS1は小さくなる。一方、仮定された顔の向きと実際の顔の向きとの差が大きくなるほど、照合用反転顔画像の顔の各位置の画素値は、顔の異なる位置の画素値が参照されることで求められていることになるので、相違度合いS1は大きくなる。相違度合いS1は、例えば、次式に従って算出される。
【数１０】
2018097573.tif 000012
ここで、I(x,y)は入力画像上の座標(x,y)の画素の値を表し、D(x,y)は、照合用反転顔画像上の座標(x,y)の画素の値を表す。またFRは、照合用反転顔画像全体を表す。
【００５８】
（２）入力画像に表された顔器官特徴点と照合用反転顔画像に表された顔器官特徴点間の位置の相違度合いS2：
図７（ｂ）に示されるように、顔器官特徴点ごとに、入力画像７１１上の位置(Ix,Iy)と、照合用反転顔画像７１２上の位置(Dx,Dy)の差が算出され、その差の絶対値和が相違度合いS2として算出される。もし、仮定された顔の向きが正しければ、入力画像上での各顔器官特徴点の位置と、照合用反転顔画像上での対応する顔器官特徴点の位置とは、ほぼ同じとなるはずである。そのため、相違度合いS2は小さくなる。一方、仮定された顔の向きと実際の顔の向きとの差が大きくなるほど、入力画像上での各顔器官特徴点の位置と、照合用反転顔画像上での対応する顔器官特徴点の位置の差も大きくなると想定されるので、相違度合いS2は大きくなる。相違度合いS2は、例えば、次式に従って算出される。
【数１１】
2018097573.tif 000013
ここで、(Ix(k),Iy(k))は、入力画像上でのk番目の顔器官特徴点の水平方向位置及び垂直方向位置を表す。また(Dx(k),Dy(k))は、照合用反転顔画像上でのk番目の顔器官特徴点の水平方向位置及び垂直方向位置を表す。そしてKは、相違度合いS2の算出に利用される顔器官特徴点の総数である。
【００５９】
（３）正規化顔画像に表された顔と補正基準顔画像に表された顔間の相違度合いS3
図７（ｃ）に示されるように、正規化顔画像７２１の各画素と、補正基準顔画像７２２の対応画素間の輝度の差が算出され、その差の絶対値和が相違度合いS3として算出される。人の顔の構造は、異なる人の顔同士でもある程度類似しているため、仮定された顔の向きが正しければ、正規化顔画像に表された顔と補正基準顔画像に表された基準顔画像間の相違は小さい。そのため、相違度合いS3は小さくなる。一方、仮定された顔の向きと実際の顔の向きとの差が大きくなるほど、正規化顔画像に表された顔の向きと補正基準顔画像に表された基準顔画像の向きの差が大きくなる。そのため、仮定された顔の向きと実際の顔の向きとの差が大きくなるほど、正規化顔画像に表された顔と補正基準顔画像に表された基準顔画像間の相違も大きくなり、相違度合いS3も大きくなる。相違度合いS3は、例えば、次式に従って算出される。
【数１２】
2018097573.tif 000014
ここで、I(x,y)は正規化顔画像上の座標(x,y)の画素の値を表し、M(x,y)は、補正基準顔画像上の座標(x,y)の画素の値を表す。またFRは、補正基準顔画像全体を表す。
【００６０】
評価値算出部２５は、上記の相違度合いS1〜S3に基づいて評価値S(φ,θ)を算出する。例えば、評価値算出部２５は、次式に従って評価値S(φ,θ)を算出する。
【数１３】
2018097573.tif 000015
ここで、a1〜a3は、それぞれ、相違度合いs1〜s3に対する重み係数であり、例えば、a1=0.4、a2=a3=0.3に設定される。なお、a1〜a3は、互いに同じ値に設定されてもよい。
【００６１】
なお、変形例によれば、評価値算出部２５は、相違度合いs1自体を評価値S(φ,θ)として算出してもよい（すなわち、評価値算出部２５は、（１３）式において、a2=a3=0としてもよい）。あるいは、評価値算出部２５は、相違度合いs2及びs3のうちの一方と、相違度合いs1とを重み付け加算することで、評価値S(φ,θ)を算出してもよい。この場合、評価値算出部２５は、例えば、（１３）式において、a1=0.6とし、a2及びa3のうちの一方を0.4、他方を0とすればよい。
【００６２】
評価値算出部２５は、仮定された顔の向き(φ,θ)と、評価値S(φ,θ)を顔向き推定部２６へわたす。
【００６３】
顔向き推定部２６は、仮定された顔の向きごとの評価値S(φ,θ)に基づいて、入力画像に表された顔の向きを推定する。本実施形態では、顔向き推定部２６は、仮定された顔の向きごとの評価値S(φ,θ)の中から、評価値S(φ,θ)の最小値Sminを求める。そして顔向き推定部２６は、評価値の最小値Sminに対応する顔の向きを、入力画像に表された顔の向きと推定する。顔向き推定部２６は、推定した顔の向きを出力する。
【００６４】
なお、顔向き推定部２６は、仮定された顔の向き全てについて評価値S(φ,θ)が算出されてから、Sminを求めてもよい。あるいは、顔向き推定部２６は、仮定された顔の向きについての評価値S(φ,θ)が算出される度に、その評価値S(φ,θ)を、それ以前の評価値の最小値（以下、暫定最小値と呼ぶ）と比較してもよい。そして顔向き推定部２６は、評価値S(φ,θ)が暫定最小値よりも小さい場合に、その評価値S(φ,θ)で暫定最小値を更新し、更新された暫定最小値及び対応する顔の向き(φ,θ)を記憶部３に保存してもよい。
【００６５】
図８は、入力画像と所定の顔の向きの範囲内のそれぞれの照合用反転顔画像の一例を示す図である。この例では、ヨー角について、正面方向を中心として±25°の範囲、及び、ピッチ角について、正面方向を中心として±20°の範囲内で、ヨー角及びピッチ角とも、5°単位で照合用反転顔画像が生成されている。図８に示される例では、入力画像８０１に対して、生成された照合用反転顔画像の組８１０のうち、ヨー角が-25°、ピッチ角が0°のときの照合用反転顔画像８１１が最も類似している。すなわち、照合用反転顔画像８１１について算出される評価値S(-25°,0°)が最小値となる。したがって、(-25°,0°)が、入力画像上に表された顔の向きとして推定される。
【００６６】
図９は、顔向き推定処理の動作フローチャートである。制御部４は、この動作フローチャートに従って、入力画像ごとにその画像に表された顔の向きを推定する。なお、制御部４は、この動作フローチャートの開始時点で、評価値の暫定最小値Smin'を初期値（例えば、想定される評価値の最大値）に設定する。
【００６７】
顔検出部２１は、入力画像に表されたドライバの顔の各顔器官特徴点を検出する（ステップＳ１０１）。そして顔検出部２１は、各顔器官特徴点の位置に基づいて、正規化顔画像を生成する（ステップＳ１０２）。
【００６８】
制御部４は、所定の顔の向きの範囲内で、顔の向き(φ,θ)を仮定する（ステップＳ１０３）。そして顔向き変換部２２は、仮定された顔の向き(φ,θ)に応じて正規化顔画像に表された顔の向きを正面方向へ変換することで、正面顔画像を生成する。また顔向き変換部２２は、仮定された顔の向き(φ,θ)に応じて、正面顔画像上での各顔器官特徴点の位置をもとめる（ステップＳ１０４）。
【００６９】
顔反転部２３は、正面顔画像に表された顔を左右反転して、反転顔画像を生成するとともに、反転顔画像上での各顔器官特徴点の位置をもとめる（ステップＳ１０５）。
【００７０】
さらに顔反転部２３は、反転顔画像に表された顔の向きを仮定された顔の向き(φ,θ)となるよう変換して、照合用反転顔画像を生成する。また顔反転部２３は、照合用反転顔画像上での各顔器官特徴点の位置をもとめる（ステップＳ１０６）。さらに、顔向き逆変換部２４は、基準顔画像に表された顔の向きを仮定された顔の向き(φ,θ)となるよう変換して、補正基準顔画像を生成する（ステップＳ１０７）。
【００７１】
評価値算出部２５は、仮定された顔の向き(φ,θ)についての顔の向きの評価値S(φ,θ)を、照合用反転顔画像及び補正基準顔画像と入力画像とを比較して算出する（ステップＳ１０８）。そして顔向き推定部２６は、評価値S(φ,θ)が評価値の暫定最小値Smin'よりも小さいか否か判定する（ステップＳ１０９）。
【００７２】
評価値S(φ,θ)が評価値の暫定最小値Smin'よりも小さい場合（ステップＳ１０９−Ｙｅｓ）、顔向き推定部２６は、評価値S(φ,θ)で暫定最小値Smin'を更新する（ステップＳ１１０）。そして顔向き推定部２６は、更新された暫定最小値Smin'及び対応する顔の向き(φ,θ)を記憶部３に保存する。一方、評価値S(φ,θ)が評価値の暫定最小値Smin'以上である場合（ステップＳ１０９−Ｎｏ）、暫定最小値Smin'を更新しない。
【００７３】
ステップＳ１１０の後、あるいは、評価値の暫定最小値Smin'が更新されない場合（ステップＳ１０９−Ｎｏ）、制御部４は、所定の顔の向きの範囲内の全ての顔の向きについて評価値S(φ,θ)を算出したか否か判定する（ステップＳ１１１）。所定の顔の向きの範囲内に評価値S(φ,θ)が算出されていない顔の向きがある場合（ステップＳ１１１−Ｎｏ）、制御部４は、所定の顔の向きの範囲内で評価値S(φ,θ)が算出されていない顔の向きの何れかを、仮定する顔の向きに設定する（ステップＳ１１２）。そして制御部４は、ステップＳ１０４以降の処理を実行する。
【００７４】
一方、所定の顔の向きの範囲内の全ての顔の向きについて評価値S(φ,θ)が算出されている場合（ステップＳ１１１−Ｙｅｓ）、顔向き推定部２６は、記憶部３に記憶されている評価値の暫定最小値Smin'が評価値の最小値Sminであると判定する。そして顔向き推定部２６は、その最小値Sminに対応する顔の向き(φmin,θmin)を、入力画像に表されているドライバの顔の向きと推定する（ステップＳ１１３）。その後、制御部４は、顔向き推定処理を終了する。
【００７５】
制御部４は、推定された顔の向きが所定の条件を満たすか否か判定し、その判定結果に応じた信号を、通信インターフェース部５を介して他の機器へ出力する。例えば、制御部４は、推定された顔の向きが、ドライバが車両１０の前方を視認していると想定される顔の向きの範囲（以下、正常範囲と呼ぶ）に含まれるか否か判定する。なお、正常範囲は、例えば、予め記憶部３に記憶される。推定された顔の向きが正常範囲に含まれる場合、制御部４は、ドライバは車両１０の前方を視認していると判定する。一方、推定された顔の向きが正常範囲から外れている場合、制御部４は、ドライバが脇見をしていると判定する。そして制御部４は、所定期間（例えば、0.5秒〜1秒）中に取得される各入力画像についてドライバが脇見をしていると判定した場合、通信インターフェース部５を介して車両１０の車室内に設けられたスピーカ（図示せず）を介して警告音を出力する。
【００７６】
以上に説明してきたように、この顔向き推定装置は、仮定された顔の向きに応じて入力画像上の顔の向きを正面を向くよう変換した上で顔の左右を反転する。そしてこの顔向き推定装置は、反転した顔の向きを仮定された顔の向きとなるよう再度変換して得られる照合用反転顔画像を、元の入力画像と比較する。そのため、仮定された顔の向きと実際の顔の向きとの差に応じて、顔の向きの変換及び顔の左右反転を通じて、照合用反転顔画像上の顔の各部の位置と元の入力画像上の顔の対応位置との差が拡大される。そのため、仮定された顔の向きと実際の顔の向きとの差が比較的小さくても、照合用反転顔画像と元の入力画像との間で顔の相違が強調される。その結果、照合用反転顔画像と入力画像間での顔の相違度を表す評価値は、仮定された顔の向きと実際の顔の向きとの差が比較的小さくても、その差に応じて変動する。したがって、この顔向き推定装置は、評価値が最小となる顔の向きを特定することで、正確に元の画像上に表された顔の向きを推定できる。
【００７７】
変形例によれば、顔向き変換部２２は、正規化顔画像に表された顔の向きを、正面方向に対して仮定された顔の向きと反対の向きとなるように、すなわち、正面方向を挟んで仮定された顔の向きの２倍回転するように変換して、逆向き画像を生成してもよい。なお、逆向き画像は、顔向き変換画像の他の一例である。この場合も、顔向き変換部２２は、上記の実施形態と同様に、３次元顔形状モデルを利用して、顔の向きを変換すればよい。すなわち、顔向き変換部２２は、逆向き画像上の各画素について、（４）〜（６）式に従って正規化顔画像上の対応点を求め、その対応点の画素値を、逆向き画像上のその画素の値とすればよい。ただし、この場合には、顔向き変換部２２は、逆向き画像上の各画素を、正面方向に対して仮定された顔の向きと反対の顔の向きとした３次元顔形状モデルに投影する。そして顔向き変換部２２は、（５）式における、各回転行列の要素について、仮定された顔の向きの２倍のヨー角及びピッチ角を設定する。
【００７８】
この場合、顔反転部２３が、逆向き画像を左右反転することで、顔の向きが元に戻るとともに、顔が左右反転するので、照合用反転顔画像が得られる。なお、この変形例においても、顔向き逆変換部２４は、上記の実施形態と同様に、基準顔画像から補正基準顔画像を生成すればよい。
【００７９】
図１０は、変形例による、顔向き推定処理の動作フローチャートである。なお、制御部４は、図９に示される動作フローチャートのうちのステップＳ１０４〜Ｓ１０７の処理の代わりに、図１０に示される各ステップの処理を実行すればよい。
【００８０】
顔向き変換部２２は、ステップＳ１０３にて顔の向き(φ,θ)が仮定されると、その顔の向き(φ,θ)と反対向きとなるよう正規化顔画像の顔の向きを変換して逆向き画像を生成する。また顔向き変換部２２は、逆向き画像上での各顔器官特徴点の位置をもとめる（ステップＳ２０１）。
【００８１】
顔反転部２３は、逆向き画像を左右反転して、照合用反転顔画像を生成する（ステップＳ２０２）。また、顔向き逆変換部２４は、基準顔画像に表された顔の向きを仮定された顔の向き(φ,θ)となるよう変換して、補正基準顔画像を生成する（ステップＳ２０３）。そして制御部４は、ステップＳ１０８以降の処理を実行する。
【００８２】
この変形例によれば、制御部４は、仮定された顔の向きごとに、顔の向きを変換する処理を１回省略できるので、演算量を削減できる。
【００８３】
また他の変形例によれば、互いに顔の向きが異なる複数の顔抽出モデル画像が用意されてもよい。そして顔検出部２１は、複数の顔抽出モデル画像のそれぞれについて、入力画像から検出された各顔器官特徴点の位置を用いてアフィン変換パラメータを算出してもよい。そして顔検出部２１は、アフィン変換パラメータの絶対値和が最小となる顔抽出モデル画像を選択し、選択した顔抽出モデル画像に対応するアフィン変換パラメータを用いて正規化顔画像を生成してもよい。これにより、顔検出部２１は、実際の顔の向きに比較的近い顔の向きの顔抽出モデル画像に基づいて正規化顔画像を生成できるので、正規化顔画像で顔が歪むことを抑制できる。さらに、この場合、制御部４は、選択された顔抽出モデル画像に応じて、仮定する顔の向きの範囲を限定してもよい。例えば、制御部４は、選択された顔抽出モデル画像に表された顔の向きを中心として、ヨー角方向及びピッチ角方向それぞれについて±10°の範囲を、仮定する顔の向きの範囲としてもよい。これにより、仮定する顔の向きの数が少なくなるので、顔向き推定処理の演算量が削減される。
【００８４】
さらに他の変形例によれば、顔反転部２３は、入力画像に表された顔の向きを、仮定された顔の向きに応じて正面方向を向くよう変換して、照合用顔画像を生成してもよい。この場合には、顔反転部２３は、顔向き変換部２２による、正規化顔画像から正面顔画像を生成する際の処理と同様の処理を入力画像に対して実行することで、照合用顔画像を生成できる。そして評価値算出部２５は、照合用顔画像と反転顔画像間で相違度合いS1及びS2を算出し、照合用顔画像と基準顔画像間で相違度合いS3を算出することで、評価値S(φ,θ)を算出してもよい。
【００８５】
また、場合によっては、顔の向きの推定対象となる人と、その人を撮影するカメラの位置関係がほぼ一定となることがある。あるいは、顔の向きの推定対象となる人が、特定の人物に限られることがある。例えば、上記の実施形態またはその変形例において、ドライバが、車両１０の所有者であることがある。このような場合には、入力画像上での顔の各器官の位置は、顔の向き以外の要因ではあまり変動しない。そこでさらに他の変形例によれば、顔検出部２１は、正規化顔画像を生成しなくてもよい。この場合には、顔向き変換部２２は、正規化顔画像の代わりに、入力画像そのものを使用すればよい。
【００８６】
また、上記の実施形態または変形例による制御部の各部の機能を実現するコンピュータプログラムは、半導体メモリ、磁気記録媒体または光記録媒体といった、コンピュータ読取可能な可搬性の記録媒体に記録された形で提供されてもよい。なお、記録媒体には、搬送波は含まれない。
【００８７】
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
【００８８】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
（付記１）
顔が表された入力画像を入力し、
前記入力画像に表された顔に対して仮定された複数の顔の向きのそれぞれについて、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記顔向き変換画像に表された顔を反転して反転顔画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔の向きを当該仮定された顔の向きとなるように変換するか、または、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて前記所定の向きへ変換し、
変換した結果に基づいて、前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔と前記入力画像に表された顔間の相違度を表す評価値を算出し、
前記評価値に基づいて、前記仮定された複数の顔の向きのうち、一の顔の向きを前記入力画像に表された顔の向きとして特定する、
ことをコンピュータに実行させるための顔向き推定用コンピュータプログラム。
（付記２）
前記特定された前記入力画像に表された顔の向きが所定の条件を満たすか否か判定し、判定結果に応じた信号を出力することをさらにコンピュータに実行させる、付記１に記載の顔向き推定用コンピュータプログラム。
（付記３）
前記顔の向きを特定することは、前記仮定された複数の顔の向きのそれぞれについて算出された前記相違度が小さいほど値が小さくなる評価値のうちの最小値に対応する仮定された顔の向きを、前記入力画像に表された顔の向きとして特定する、付記１または２に記載の顔向き推定用コンピュータプログラム。
（付記４）
前記所定の向きは前記入力画像を取得するカメラに対する正面方向である、付記１〜３の何れかに記載の顔向き推定用コンピュータプログラム。
（付記５）
前記所定の向きは、前記仮定された顔の向きに対して、前記入力画像を取得するカメラに対する正面方向を挟んで反対の向きである、付記１〜３の何れかに記載の顔向き推定用コンピュータプログラム。
（付記６）
前記入力画像から前記顔の複数の特徴点を検出し、前記複数の特徴点のそれぞれが所定の位置となるように前記入力画像上の前記顔の位置を移動して正規化顔画像を生成することをさらにコンピュータに実行させ、
前記顔向き変換画像を生成することは、前記正規化顔画像に表された顔の向きを前記仮定された顔の向きに応じて前記所定の向きへ変換することで前記顔向き変換画像を生成する、付記１〜５の何れかに記載の顔向き推定用コンピュータプログラム。
（付記７）
前記評価値を算出することは、前記入力画像上の各画素と前記反転顔画像上の対応画素間の画素値の差に基づいて前記評価値を算出する、付記１〜６の何れかに記載の顔向き推定用コンピュータプログラム。
（付記８）
前記評価値を算出することは、複数の顔の特徴点のそれぞれについて、前記入力画像上の当該顔の特徴点の位置と前記反転顔画像上の当該顔の特徴点の位置との差にさらに基づいて前記評価値を算出する、付記７に記載の顔向き推定用コンピュータプログラム。
（付記９）
前記入力画像を取得するカメラに対する正面方向を向いた顔が表された基準顔画像について、当該基準顔画像に表された顔の向きを前記仮定された顔の向きとなるよう変換して補正基準顔画像を生成することをさらにコンピュータに実行させ、
前記評価値を算出することは、前記入力画像上の各画素と前記補正基準顔画像上の対応画素間の画素値の差にさらに基づいて前記評価値を算出する、付記７または８に記載の顔向き推定用コンピュータプログラム。
（付記１０）
顔が表された入力画像を入力し、
前記入力画像に表された顔に対して仮定された複数の顔の向きのそれぞれについて、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記顔向き変換画像に表された顔を反転して反転顔画像を生成し、
前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔の向きを当該仮定された顔の向きとなるように変換するか、または、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて前記所定の向きへ変換し、
変換した結果に基づいて、前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔と前記入力画像に表された顔間の相違度を表す評価値を算出し、
前記評価値に基づいて、前記仮定された複数の顔の向きのうち、一の顔の向きを前記入力画像に表された顔の向きとして特定する、
ことを含む顔向き推定方法。
（付記１１）
顔が表された入力画像を入力し、前記入力画像に表された顔に対して仮定された複数の顔の向きのそれぞれについて、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて所定の向きへ変換した顔向き変換画像を生成する顔向き変換部と、
前記仮定された複数の顔の向きのそれぞれについて、前記顔向き変換画像に表された顔を反転して反転顔画像を生成し、前記反転顔画像に表された顔の向きを当該仮定された顔の向きとなるように変換するか、または、前記入力画像に表された顔の向きを当該仮定された顔の向きに応じて前記所定の向きへ変換する反転顔画像生成部と、
変換した結果に基づいて、前記仮定された複数の顔の向きのそれぞれについて、前記反転顔画像に表された顔と前記入力画像に表された顔間の相違度を表す評価値を算出する評価値算出部と、
前記評価値に基づいて、前記仮定された複数の顔の向きのうち、一の顔の向きを前記入力画像に表された顔の向きとして特定する顔向き推定部と、
を有する顔向き推定装置。
【符号の説明】
【００８９】
１    運転支援装置
２    カメラ
３    記憶部
４    制御部（顔向き推定装置）
５    通信インターフェース部
６    車内ネットワーク
７    基板
１０    車両
１１    ドライバ
２１    顔検出部
２２    顔向き変換部
２３    顔反転部
２４    顔向き逆変換部
２５    評価値算出部
２６    顔向き推定部
【図１】
2018097573.tif 000016
【図２】
2018097573.tif 000017
【図３】
2018097573.tif 000018
【図４】
2018097573.tif 000019
【図５】
2018097573.tif 000020
【図６】
2018097573.tif 000021
【図７】
2018097573.tif 000022
【図８】
2018097573.tif 000023
【図９】
2018097573.tif 000024
【図１０】
2018097573.tif 000025