「顔を発見! 以後、動きを追跡します」



1.はじめに
 人は言葉以外にも、表情やジェスチャーでさまざまな情報を発信しており、コンピュータがそれを認識できるようになれば、さまざまな分野でより自然なコンピュータとのインターフェースが可能になると思われます。なかでも顔から発せられる情報量は多く、「目は口ほどにものを言い」と言われるように人間どうしのコミュニケーションでも重要な役割を果たしています。国会で証人喚問の動画中継が復活しましたが、口では嘘をつけても、表情ではごまかせないことも、理由の一つでしょう。手話でコミュニケーションする人たちの視線は、対話者の顔を常に注視しており、顔から視線が外れることはほとんどないと言われています[1]。手話でも手のジェスチャーによる情報と同程度かそれ以上に顔表情からの情報が重要なのでしょう。解剖学的にも、顔には多くの表情筋が複雑に張られていて、表現できる情報量の大きいことが知られています。
 情報処理の分野で顔に関する研究は十年ほど前から盛んになり、表情認識についても、多くの成果が報告されています。しかし、ほぼ固定した顔が対象であり、表情も喜び、怒り、嫌悪、など基本6表情と呼ばれる表情の識別に関するものでした。
 しかし私たちは、喜びや怒りなど自然に表れる表情ではなく、人がジェスチャーで意図する情報を抽出する必要があると考えています。そのためには、そういった情報が表現される顔の特徴点を自動的に抽出し、時間経過に沿って追跡する必要があると考えました[1]。また、顔の位置についても束縛を感じさせない動きを許容できることが必要です。

2.あなたな〜ら、どうする〜 ♪
 一般に動画像中の顔領域を抽出することは、背景から肌色領域を分離抽出することでできます。しかし顔領域の中から一定の特徴点をリアルタイムで抽出することはまだ確立されているとは言えません。これまでの多くの研究は、顔部品と言われる目とか、鼻や口を直接抽出しようとしています。しかし、ジェスチャーの認識を目的としているとき、目や口は大きな形状変形を予想しておかなくてはなりません。ウィンクで片目をつむることもあります。人間にとって容易でも、目や口をその変形に惑わされず、リアルタイムに検出することは現在のコンピュータにとっては難しそうです。鼻孔はパターンとしては非常に安定していると言えますが、観測できるカメラアングルがかなり限定されます。
 もうずいぶん前のことですが、「あなたな〜ら、どうする〜♪」という歌がヒットしていたことがありました。あなたなら、どうしますか?
 私たちは、顔部品とは言えないけれど、表情が変化してもパターンとしてあまり変化しない眉間に着目しました。眉間は、顔の向きが変化しても観測できる範囲がかなり広いという特長があります。いったん眉間を見つければ、それを手掛りに目や口の形状を抽出することは、少しは容易になりそうです。
 そこで、まず眉間をリアルタイムに検出し、追跡してみることにしました。

3.眉間抽出フィルター
 眉間は上方が額、下方が鼻筋で比較的明るく、両サイドは目や眉で比較的暗いという特徴があり、これは多くの人に共通していると考えられます。このような特徴点を軽い計算負荷で抽出するために、リング周波数フィルターと称するフィルターを考案しました。これは、注目画素を中心とする数画素の半径の円を描いて、その円周上の画素値を標本値とするフーリエ変換を計算し、周波数2のスペクトルパワーを出力するものです。図1にそのような円周上の画素値のプロット例を示します。2周期のコサイン波形に似ています。注目点が眉間から離れるにしたがって、このような波形パターンがくずれていくため、眉間ではこのフィルターの出力が極大値となります。リング周波数フィルターの特徴は円周上のデータを使って計算されるので顔が傾いても影響を受けないことです。一方同じフーリエ変換によって、周波数2の位相角が計算されますが、これは顔の傾き角に相当します。顔領域にリング周波数フィルターを適用すると、眉間以外にもパワー出力が極大値となる点が出てきますが、その中から本当の眉間を選択するのに、この位相角は有効な情報となります。

4.どうやって選ぶ、本当の眉間?
 フィルター出力が極大値をとる点の中から本当の眉間を選ぶのに、平均的な眉間パターンと比較して判断します。その目的で、データベース[2]の398の顔画像から図2のような平均パターンを作成しました。
 しかし、いつでも目が水平に並んでいる顔画像が相手とは限りません。そこで、リング周波数フィルターから得られる位相角分だけ、調べたい点の回りに入力画像を逆回転させてから、比較するパターンを切り出すようにします。このようにして、パターン比較方式が持つ回転ズレに対する弱点を克服しました。
 この方式をデータベースの400の顔画像でテストしたところ、眉間の検出率98.5%が得られました。

5.以後、追跡します
 いったん、眉間を検出できたら、以後は画像内での動きを追跡します。新しい画像が入力されるたびに検出してもよいのですが、前の画像で検出した結果を利用した方が処理が簡単で済みます。まず、新しい画像内で眉間のありそうな位置を予測します。前の画像で初めて検出したのであれば、同じ位置にあると予測しますが、もう一つ前の画像でも検出していれば、動きの速度を推定して、現在位置を予測します。そして予測した点の周辺のみリング周波数フィルターを適用し、出力が極大値となる点を検出します。
 しかしこのままでは、一度眉間以外の点を取り違えて検出すると、その間違った点を追跡し続けることになりかねません。そこで眉間を検出、追跡するたびに、それを中心とする小さな矩形パターンを記憶し直します。そして、新しい画像で眉間と思われる点が検出されると、前の画像で記憶しておいたパターンと比較し、大きく違っていなければ正しく眉間が見つかったものとみなします。大きく違っていた場合は履歴データをクリアし最初からやり直します。
 このような追跡処理により、最初の眉間検出処理に比べて、肌色領域の抽出やパターンの回転処理が不要となり、より高速な処理が実現できます。

6.パソコンでデモ
 プログラムをPentium III 866MHzのパソコン上に組んで実験してみました。検出処理で27フレーム/秒が可能で、追跡処理では30フレーム/秒の処理をして少し余裕があります。図3の実験モニター画面の例では、左端上の5つのパターンが眉間候補画像で、その下に選ばれたパターンが示してあります。顔の傾きが修正されているのがわかります。入力画像上には眉間候補点の位置が小さい点で示されています。

7.今後の予定
 できたのは眉間を見つけて追跡するまでで、ジェスチャー認識にはまだ遠い道のりがあります。今後、目と口の形状をリアルタイムで検出、追跡する方向で研究を進める予定です。

参考文献


Copyright(c)2002(株)国際電気通信基礎技術研究所