たぶん簡単に表情の認識はできない

以前に@fladdictさんがOpenCVをつかって多分こうすれば、Kinectの表情認識っぽいの作れるということを唱えていました。
OpenCVのcvHaarDetectObjects()で顔、口、目を認識するサンプルを用いれば、アバターの表情を作る材料が集めるのに十分だという仮説です。
概要は以下です。

  • 顔認識で画像領域を限定
  • 顔画像の下半分の領域から口を認識する
  • 検出した口矩形の縦横の長さの比から「笑っている」←「無表情」→「口を開けている」の状態を推定する
  • 顔画像の上半分の領域から目を認識する
  • 「目の上にある塊が眉毛として認識」(ここは詳しく書かれていませんので??です)
  • 目と眉毛の相対距離から、、、(目の表情もわかる?)

最後の方はレレレのレ〜ですが、「なるほど、いけるかも」と思い、遅まきながらやってみました。
で、私が検証したのは
・検出した口矩形の縦横の長さの比から「笑っている」←「無表情」→「口を開けている」の状態を推定する
の部分です。
結論は簡単です。口がどんな状態でも矩形のサイズは変わらないです。だから推定できましぇん。

口周辺の動きがとれないとFACSで記述できる情報が少なくなり表情の推定はできません。
Haar-like特徴による認識だけではなく他の情報も組み合わせないと表情の推定は難しいことがわかりました。
そんだけです。
動作環境は以下です。

つかったデータはOpenCVに入ってる以下のデータです。

  • haarcascade_frontalface_alt.xml
  • haarcascade_mcs_mouth.xml
  • haarcascade_eye.xml