(57)【要約】【課題】  演算量を増大させることなく且つ簡便な方法にて、対象物を誤って検出した場合の誤検出を低減することができる対象物検出装置及び対象物検出方法、及びロボット装置を提供する。【解決手段】  顔検出装置１０１は、入力画像からテンプレートマッチングにておおまかに顔候補を選択し、サポートベクタマシンにより顔認識して顔候補を検出する従来と同様の顔検出部１１０と、顔検出部１１０にて一旦顔であるとされた顔候補から顔でない非顔候補を検出して排除する非顔判定部１２０と、非顔判定後の顔領域をトラッキングするスキントラッカ部１１４とからなる。非顔判定部１２０は、入力画像から算出した顔との想定距離と距離センサにより測定した測定距離との差が大きい場合、顔候補の色の分散値が小さい場合、肌色領域の占有率が大きい場合、所定期間経過後の顔領域の大きさ変化が大きい場合等に非顔であるとして顔候補から排除する。【選択図】  図１
2005078376.tif 000002
【特許請求の範囲】
【請求項１】
入力画像から検出対象となる対象物を検出する対象物検出装置において、
上記対象物であると判定した対象物候補を検出する対象物検出手段と、
上記対象物候補から対象物ではないと判定した非対象物候補を検出し、該非対象物候補を該対象物候補から除いて出力する非対象物検出手段とを有する
ことを特徴とする対象物検出装置。
【請求項２】
上記検出対象は、顔領域であって、
上記対象物検出手段は、上記入力画像から所定の顔条件を満たす領域を顔である顔候補と判定し、該顔候補を検出する顔検出手段であり、
上記非対象物検出手段は、上記顔候補から、所定の非顔条件を満たすものを顔ではない非顔候補と判定し、該非顔候補を該顔候補から除いて出力する非顔検出手段である
ことを特徴とする請求項１記載の対象物検出装置。
【請求項３】
検出対象物との間の距離を測定する距離測定手段を有し、
上記非顔検出手段は、上記入力画像に対する上記顔候補の大きさから検出対象物との間の距離である想定距離を算出し、該想定距離と上記距離測定手段により測定された測定距離との差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項２記載の対象物検出装置。
【請求項４】
上記非顔検出手段は、上記顔候補の色空間上における分散値を算出し、該分散値が所定の閾値未満である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項２記載の対象物検出装置。
【請求項５】
上記非顔検出手段は、現在の入力画像における上記顔候補の大きさと、所定時間前の入力画像における上記顔候補の大きさとの差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項２記載の対象物検出装置。
【請求項６】
上記非顔検出手段は、上記顔領域に対する肌色領域の占有率を算出し、該肌色領域の占有率が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項２記載の対象物検出装置。
【請求項７】
上記非顔検出手段により非顔候補が除かれた顔候補のトラッキングをするトラッキング手段を有し、
上記非顔検出手段は、所定のタイミングにて上記トラッキング手段のトラッキング対象となっている顔候補から上記非顔候補を検出する
ことを特徴とする請求項２記載の対象物検出装置。
【請求項８】
上記顔検出手段は、上記入力画像と、平均的な顔画像を示す所定サイズのテンプレートとの相関値を求めるマッチング結果生成手段と、該相関値に基づき選択された入力画像領域からパターン認識により上記顔候補を識別する識別手段とを有する
ことを特徴とする請求項２記載の対象物検出装置。
【請求項９】
入力画像から検出対象となる対象物を検出する対象物検出方法において、
上記対象物であると判定した対象物候補を検出する対象物検出工程と、
上記対象物候補から対象物ではないと判定した非対象物候補を検出し、該非対象物候補を該対象物候補から除いて出力する非対象物検出工程とを有する
ことを特徴とする対象物検出方法。
【請求項１０】
上記検出対象は、顔領域であって、
上記対象物検出工程は、上記入力画像から所定の顔条件を満たす領域を顔である顔候補と判定し、該顔候補を検出する顔検出工程であり、
上記非対象物検出工程は、上記顔候補から、所定の非顔条件を満たすものを顔ではない非顔候補と判定し、該非顔候補を該顔候補から除いて出力する非顔検出工程である
ことを特徴とする請求項９記載の対象物検出方法。
【請求項１１】
上記非顔検出工程では、上記入力画像に対する上記顔候補の大きさから検出対象物との間の距離である想定距離を算出し、該想定距離と検出対象物との間の距離を測定する距離測定手段により測定された測定距離との差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１０記載の対象物検出方法。
【請求項１２】
上記非顔検出工程では、上記顔候補の色空間上における分散値を算出し、該分散値が所定の閾値未満である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１０記載の対象物検出方法。
【請求項１３】
上記非顔検出工程では、現在の入力画像における上記顔候補の大きさと、所定時間前の入力画像における上記顔候補の大きさとの差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１０記載の対象物検出方法。
【請求項１４】
上記非顔検出工程では、上記顔領域に対する肌色領域の占有率を算出し、該肌色領域の占有率が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１０記載の対象物検出方法。
【請求項１５】
上記非顔検出工程にて非顔候補が除かれた顔候補のトラッキングをするトラッキング工程と、
所定のタイミングにて上記トラッキングの対象となっている顔候補から上記非顔候補を検出する非顔再検出工程とを有する
ことを特徴とする請求項１０記載の対象物検出方法。
【請求項１６】
入力画像から検出対象となる対象物を検出する対象物検出装置を搭載し自律的に動作するロボット装置において、
上記対象物検出装置は、
上記対象物であると判定した対象物候補を検出する対象物検出手段と、
上記対象物候補から対象物ではないと判定した非対象物候補を検出し、該非対象物候補を該対象物候補から除いて出力する非対象物検出手段とを有する
ことを特徴とするロボット装置。
【請求項１７】
上記対象物検出装置は、上記入力画像から検出対象である顔領域を検出するものであって、
上記対象物検出手段は、上記入力画像から所定の顔条件を満たす領域を顔である顔候補と判定し、該顔候補を検出する顔検出手段であり、
上記非対象物検出手段は、上記顔候補から、所定の非顔条件を満たすものを顔ではない非顔候補と判定し、該非顔候補を該顔候補から除いて出力する非顔検出手段である
ことを特徴とする請求項１６記載のロボット装置。
【請求項１８】
検出対象物との間の距離を測定する距離測定手段を有し、
上記非顔検出手段は、上記入力画像に対する上記顔候補の大きさから検出対象物との間の距離である想定距離を算出し、該想定距離と上記距離測定手段により測定された測定距離との差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１７記載のロボット装置。
【請求項１９】
上記非顔検出手段は、上記顔候補の色空間上における分散値を算出し、該分散値が所定の閾値未満の場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１７記載のロボット装置。
【請求項２０】
上記非顔検出手段は、現在の入力画像における上記顔候補の大きさと、所定時間前の入力画像における上記顔候補の大きさとの差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１７記載のロボット装置。
【請求項２１】
上記非顔検出手段は、上記顔領域に対する肌色領域の占有率を算出し、該肌色領域の占有率が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定する
ことを特徴とする請求項１７記載のロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検出対象となる例えば顔や物体等の対象物を検出する対象物検出装置、対象物検出方法、及びこれを搭載したロボット装置に関し、特に、検出対象以外のものを検出してしまう誤検出の低減を図った対象物検出装置、対象物検出方法、及びこれを搭載したロボット装置に関する。
【背景技術】
【０００２】
電気的又は磁気的な作用を用いて人間（生物）の動作に似た運動を行う機械装置を「ロボット装置」という。我が国においてロボット装置が普及し始めたのは、１９６０年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット装置等の産業用ロボット装置（Industrial Robot）であった。
【０００３】
最近では、人間のパートナーとして生活を支援する、すなわち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボット装置の開発が進められている。このような実用ロボット装置は、産業用ロボット装置とは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように４足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット装置、或いは、２足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット装置（Humanoid Robot）等のロボット装置は、既に実用化されつつある。
【０００４】
これらのロボット装置は、産業用ロボット装置と比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボット装置と呼称される場合もある。また、そのようなロボット装置には、ＣＣＤ（Charge  Coupled Device）カメラ及びマイクロホン等の各種外部センサが搭載され、これら外部センサの出力に基づいて外部状況を認識して、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【０００５】
ところで、かかるエンターテインメント型のロボット装置において、対話中にその相手となる人間の顔や、移動中に視界内に入る人間の顔を検出して、その人間の顔を見ながら対話や動作を行うことができれば、人間が普段行う場合と同様に、その自然性から考えて最も望ましく、エンターテインメントロボット装置としてのエンターテインメント性をより一層向上させ得るものと考えられる。
【０００６】
従来、動画のような複雑な画像シーンの中から色や動きを使うことなく画像信号に基づく濃淡パターンのみを使って、人間の顔を検出する方法が数多く提案されている。
【０００７】
これらの顔検出方法としては、固有顔、ニューラル・ネットワーク及びサポートベクタマシン（ＳＶＭ：Support Vector Machine）等のパターン認識の手法を利用して、予め顔パターンを学習させて識別器を生成する方法が挙げられる。
【０００８】
【特許文献１】特開２００２−４２１１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、このパターン識別器を生成する方法によると、ロボット装置は、膨大なデータ量である顔画像データに対して学習によるパターン識別を行うにあたって、環境の変化や自己の姿勢及び表情の変化に対してロバスト性を示すが、その分当該パターン識別に要する演算量が増加するため、演算処理に要する時間が膨大になってしまう。
【００１０】
実際に、撮像画像の中から人間の顔画像を検出するプロセス（以下、これを顔検出タスクという。）においては、当該撮像画像の中から顔画像を切り出しながら識別を行うため、撮像画像全体を様々なスケールでスキャンすることとなる。このため一回一回のパターン識別に要する演算処理を極力少なくすることが極めて重要となる。
【００１１】
例えば、サポートベクタマシンによるパターン認識を用いた顔検出タスクの場合、撮像画像の中から４００（＝20×20）画素程度の切り出し画像から得られる４００次元のベクトルに対して、数百通りのサポートベクタ（４００次元）との内積演算が必要となる。これを大きさ（Ｗ、Ｈ）からなる全画面中で行うとなると、当該内積演算を（Ｗ−20＋１）×（Ｈ−20＋１）回繰り返さなくてはならないため、膨大な量の演算処理となる。
【００１２】
また、顔検出タスクをロボット装置に利用する場合には、動画の中から十分に早く顔画像を検出しなければ、リアルタイム性が要求されるロボット装置の行動としてフィードバックすることが極めて困難となる。更に、ロボット装置の内部のＣＰＵは、顔検出タスク以外にも常時実行しているタスクが多くあるため、これらのタスクに対して演算能力を費やしている分、当該顔検出タスクに全ての演算能力を費やすことは極めて困難である。
【００１３】
このような顔認識のみならず、物体等の対象物を入力画像から認識するような画像認識器においては、検出対象物との類似性やその特徴点等に基づく所定の条件を満たした場合にある対象物を検出対象物であるとして認識する。ここで、対象物の検出処理においては、上記所定の条件を厳しくした場合には、実際には対象物が存在するのにも拘わらず検出を見逃しまうことになり、また上記所定の条件を緩くすると、対象物とは異なる物体を検出対象物であるとして検出する誤検出が多発するというトレードオフの関係がある。従って、認識器の性能、入力画像を取得するためのカメラの性能、認識時の演算処理量等から最適な条件設定を行う必要がある。
【００１４】
しかしながら、上述したように、特にリソースが限られたロボット装置等においては演算処理量を増加することは好ましくなく、また、画像認識器において見逃しをなくそうとすると誤検出が多発してしまう。
【００１５】
本発明は、このような従来の実情に鑑みて提案されたものであり、演算量を増大させることなく且つ簡便な方法にて、対象物を誤って検出する誤検出を低減することができる対象物検出装置、対象物検出方法、及びロボット装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した目的を達成するために、本発明に係る対象物検出装置は、入力画像から検出対象となる対象物を検出する対象物検出装置において、上記対象物であると判定した対象物候補を検出する対象物検出手段と、上記対象物候補から対象物ではないと判定した非対象物候補を検出し、該非対象物候補を該対象物候補から除いて出力する非対象物検出手段とを有することを特徴とする。
【００１７】
本発明においては、一度検出した対象物の中から非対象物を検出して排除することにより、例えば対象物の検出条件を緩くしてある程度の誤検出を許したとしてもこの非対象物検出手段により誤検出を排除することができるので、演算処理量を低減しつつ高精度の認識装置と同定度に誤検出を低減することができる。
【００１８】
また、上記検出対象は、顔領域であって、上記対象物検出手段は、上記入力画像から所定の顔条件を満たす領域を顔である顔候補と判定し、該顔候補を検出する顔検出手段であり、上記非対象物検出手段は、上記顔候補から、所定の非顔条件を満たすものを顔ではない非顔候補と判定し、該非顔候補を該顔候補から除いて出力する非顔検出手段とすることができ、従来の顔検出装置の後段に、非対象物検出手段としての非顔検出手段を設けることにより、特に検出が難しい顔検出における誤検出を低減することができる。
【００１９】
更に、検出対象物との間の距離を測定する距離測定手段を有し、上記非顔検出手段は、入力画像に対する上記顔候補の大きさから検出対象物との間の距離である想定距離を算出し、該想定距離と上記距離測定手段により測定された測定距離との差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定することができ、検出された顔領域が人間の顔として想定できる大きさに比して非常に大きかったり、又は反対に小さかったりする場合は、顔でないと判定することができる。
【００２０】
更にまた、上記非顔検出手段は、上記顔候補の色空間上における分散値を算出し、該分散値が所定の閾値未満である場合に、上記顔候補を上記非顔候補と判定することができ、ある程度色の分散がない場合には、単なる腕や足等の顔以外の肌色領域であったり、又は肌色の壁であったりする可能性が高く、これを顔ではないと判定することができる。
【００２１】
また、上記非顔検出手段は、現在の入力画像における上記顔候補の大きさと、所定時間前の入力画像における上記顔候補の大きさとの差が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定することができ、短時間で大きさが著しく変化するような領域は顔ではないと判断することができる。
【００２２】
更に、上記非顔検出手段は、上記顔領域に対する肌色領域の占有率を算出し、該肌色領域の占有率が所定の閾値以上である場合に、上記顔候補を上記非顔候補と判定することができ、人間の顔には、目や口等の肌色以外の領域が含まれるのにも拘わらず、肌色占有率が大きすぎる場合は、単なる腕や足等の顔以外の肌色領域や、肌色の壁などを検出しているものとして、非顔であると判定することができる。
【００２３】
本発明に係る対象物検出方法は、入力画像から検出対象となる対象物を検出する対象物検出方法において、上記対象物であると判定した対象物候補を検出する対象物検出工程と、上記対象物候補から対象物ではないと判定した非対象物候補を検出し、該非対象物候補を該対象物候補から除いて出力する非対象物検出工程とを有することを特徴とする。
【００２４】
また、上記検出対象は、顔領域であって、上記対象物検出工程は、上記入力画像から所定の顔条件を満たす領域を顔である顔候補と判定し、該顔候補を検出する顔検出工程であり、上記非対象物検出工程は、上記顔候補から、所定の非顔条件を満たすものを顔ではない非顔候補と判定し、該非顔候補を該顔候補から除いて出力する非顔検出工程とすることができる。
【００２５】
本発明に係るロボット装置は、入力画像から検出対象となる対象物を検出する対象物検出装置を搭載し自律的に動作するロボット装置において、上記対象物検出装置は、上記対象物であると判定した対象物候補を検出する対象物検出手段と、上記対象物候補から対象物ではないと判定した非対象物候補を検出し、該非対象物候補を該対象物候補から除いて出力する非対象物検出手段とを有することを特徴とする。
【００２６】
本発明においては、限られたリソースのロボット装置において、対象物が検出された後に誤検出防止手段を設けることにより、演算量の増加を最低限とし、簡単且つ高速に入力画像から対象物を検出する際の誤検出を防止する。
【発明の効果】
【００２７】
本発明によれば、顔領域等の対象物検出装置において、検出対象物として一旦検出した対象物から、対象物ではないと判断できる非対象物を検出し、対象物から排除する非対象物検出手段を設けることにより、前段の対象物検出過程にて検出されてしまう誤検出を排除することができる。特に、複雑な対象物である顔は検出が難しく、誤検出が生じるが非対象物検出手段としての非顔検出手段を設けることにより、演算処理を増大させることなく、簡単且つ高速に誤検出を発見して排除することができる。更に、リソースが限られたロボット装置等にこのような非対象物検出手段を有する対象物検出装置を搭載すれば、顔等の検出対象物の誤検出を低減して更にエンターテイメント性を向上させることができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、検出対象とは異なるものを検出してしまう誤検出（誤認識）を低減した対象物検出装置のうち、特に顔検出を行う際の誤検出を低減する顔検出装置及びこれを搭載したロボット装置に適用したものである。
【００２９】
ここでは、先ず、本実施の形態における対象物検出装置としての顔検出装置について説明し、次にこれを搭載したロボット装置について説明する。また、ここでは、顔検出の誤検出を低減する方法について説明するが、本発明は、顔検出に限ったものではなく、対象物を検出する一般的な画像認識における誤検出を低減する極めて効果的な手法として使用できるものである。
【００３０】
（１）顔検出装置
通常、顔検出装置は、入力画像（撮像画像）から人物の顔（顔領域）を検出するものである。この顔検出タスクは、大きく分けて２つの工程を有する。すなわち、入力画像に対してテンプレートマッチングを行って顔の候補を抽出する第１の工程と、この顔候補からサポートベクタマシン（ＳＶＭ）等のパターン認識等により顔であるか否かの判定する第２の工程である。
【００３１】
これに対し、本実施の形態における顔検出装置は、顔検出した後、すなわち、通常の顔検出タスクに対し、後工程（第３の工程）として、顔ではない領域を検出する非顔判定部を設け、これにより前段で検出された顔候補から顔ではないと判定した非顔候補を検出する工程を設けるものである。そして、この非顔候補を顔候補から除くことで、誤検出の低減を図る。
【００３２】
ロボット装置等のＣＰＵ及びメモリ等のリソースが限られたシステムにおいて、リアルタイムに顔検出を行うためには、顔検出タスクにおける演算量を削減することが必要である。しかしながら、第２の工程で行われるＳＶＭ等を使用する顔認識は膨大な演算量を要する。従って、顔検出タスクにおいて、顔検出性能を保持しつつ顔検出に要する演算量を削減するためには、第１の工程において顔候補を絞り込むことも有効である。
【００３３】
ここで、第１の工程において、テンプレートマッチングを行って顔候補を抽出する際、例えばマッチングの相関値に対して閾値を設けて顔候補を抽出する方法がある。この方法では、顔候補の見逃しを軽減しようとした場合、相関値の閾値を上げる方法又はマッチングの際の間引きを減らす方法等をとることができるものの、例えば相関値の閾値を下げると多くの顔候補が抽出されるため、計算量が増大してしまい、ロボット装置等のリソースの限られた環境においては好ましくない場合がある。一方、閾値を上げると、顔候補の数を減らすことができるものの、本来顔である画像も候補から取り除いてしまい、顔画像を見逃してしまう場合がある。
【００３４】
そこで、本願発明者等は、本来顔である画像を顔候補から見逃すことなく、演算量の増大を防止する、すなわち、顔候補の数を有効に絞り込むことができる方法を提案している（特願２００３−１３３６０１号）。具体的には、第１の工程では、入力画像と、入力画像をスキャンして所定画素ずつずらしながら移動させた、平均的な顔画像を示す所定サイズのテンプレートとの相関値の集合であるマッチング結果を生成し、このマッチング結果における相関値の局所最大値に基づき顔領域を抽出する。顔領域は、マッチング結果を例えばテンプレートと同一サイズの複数の領域に分割して各分割領域毎に少なくとも相関値の最大値を顔候補として抽出する。そして、第２の工程では、上記顔候補として抽出された点に相当する入力画像領域からＳＶＭ等により顔領域（顔画像）を識別（判定）するものである。
【００３５】
ところで、既に説明したように、顔認識処理は処理が膨大であり、認識処理の処理量をできるだけ減らしつつ、検出性能を向上する努力がなされている。しかしながら、ロボット装置のようなリソースが限られた装置においては、特に上記第２の工程等のパターン認識における認識率を上げることは容易ではなく、従って、例えば腕や足といった肌色部分や、肌色と同じような色の壁等を顔と間違える等の誤認識が生じる場合がある。
【００３６】
そこで、本願発明者等が鋭意実験した結果、ある程度の誤認識を許容したとしても、顔検出処理の後段に、非顔判定部（non face判定部）を設けることで、顔であると判定し検出した顔領域（顔候補）のうち誤検出の非顔領域を効率的に取り除くことができ、結果として顔検出率を格段に向上させることができることを見出した。
【００３７】
認識技術における問題点として、本来検出しなければならない検出対象物がないものとして見落としてしまう場合（以下、見逃しという。）と、検出対象物とは異なる対象物を検出対象物として認識し検出してしまう場合（以下、誤検出という。）とがある。本発明は、このうち、本来検出したい検出対象物以外のものを見誤って検出した場合である誤検出を低減するものである。ここで、見落としと、誤検出とはトレードオフの関係があり、認識条件を緩めれば当然、見逃しを減らすことができる代わりに、誤検出が増えることになる。
【００３８】
例えば、上述したように、通常は、第１の工程にて顔と推定される領域を大まかに選択し、第２の工程によりそれらの領域から顔領域を抽出する、すなわち第２の工程にて顔領域を絞り込むものであるが、例えばこの第２の工程における検出条件を緩めると、演算量を減らすことができるものの顔として検出される領域が増え誤検出も増加することになる。
【００３９】
そこで、本実施の形態においては、従来顔検出処理が終了していた第２の工程の後工程に、誤検出防止手段としての非顔判定部により非顔判定処理を実行する第３の工程を設けることで、迅速且つ簡便に誤検出を排除するものである。
【００４０】
図１は、本実施の形態における顔検出装置における顔検出処理を機能別に示すブロック図である。図１に示すように、顔検出装置１０１は、入力画像を供給する入力画像部１１１と、入力画像に対してテンプレートマッチングを行っておおまかな顔候補を抽出するテンプレートマッチング部１１２と、サポートベクタマシンＳＶＭにより抽出されたおおまかな顔候補を識別して、顔であると判定した顔候補を抽出する顔識別部１１３とからなる顔検出部１１０と、顔検出部１１０にて顔候補が検出されたか否かを判定する顔検出判定部１１５と、顔検出部１１０にて顔候補が検出された場合に、その顔候補から、顔ではないと判定した非顔候補を検出し、顔候補から非顔候補を除いて出力する非顔検出手段としての非顔判定部１２０とを有する。
【００４１】
また、この顔検出装置１０１は、非顔判定部１２０により、顔候補から非顔候補が排除された顔領域を追跡（トラッキング）するスキントラッカ部１１４を有している。このスキントラッカ部１１４のトラッキング対象となっている顔領域は、所定のタイミングにて非顔判定部１２０に送られ本当に顔であるか否か再度非顔判定が行われる。
【００４２】
ここで、上記テンプレートマッチング部１１２、顔認識部１１３等の各処理についての一具体例は後述するが、非判定部１２０の前段に設ける顔検出部１１０としては、テンプレートマッチグやサポートベクタマシンによる顔認識等に限らず、他の公知の顔検出方法を使用した顔検出装置であってもよいことは勿論である。どのような顔検出部１１０に対しても、その後段に非顔判定部１２０を設けることで誤検出を低減することができる。
【００４３】
非顔判定部１２０により非顔候補が排除された顔領域には、例えば顔であることを示すフラグ等を使用し、以降のフレームにおいては、スキントラッカ部１１４にてその顔領域のトラッキングを行うことができる。トラッキングは、例えば顔として検出された顔領域近傍の肌色領域を検出し、これをトラッキングするようにすればよい。また、スキントラッカ部１１４にてトラッキング中の顔領域は、所定のタイミングか、又は常に非顔判定部１２０に送られ非顔判定される。
【００４４】
以下、非顔判定部１２０における具体的な処理方法について詳細に説明する。本実施の形態における非顔判定部１２０が実行する非顔判定の条件としては、例えば以下の４つの条件が挙げられる。
第１の条件：入力画像内に検出された顔候補の領域の大きさから算出した、実際の対象物（顔）までとの間の想定距離と、距離センサにて得られた測定距離との差が所定値以上である場合
第２の条件：入力画像内に検出された顔候補の領域が、色空間においてある一定以上分散していない場合
第３の条件：入力画像内に検出された顔候補の領域の大きさが、所定時間内に所定以上変化した場合
第４の条件：入力画像内に検出された顔候補の領域における肌色領域の占有率が一定以上大きい場合
【００４５】
以上の条件に示すように、本実施の形態における非顔判定条件は、いずれも顔ではないものを抽出するための条件である。これらの条件を少なくとも１以上満たす場合を、誤検出とし、検出された領域（顔候補）から除くことで、本来は顔ではないのにも拘わらず顔として検出されてしまったものを排除することができる。また、これら非顔判定のための処理は、上述のサポートベクタマシンＳＶＭ等の演算処理に比して格段に演算量が少ないものであり、全ての条件判定を行っても短時間で判定終了可能であるため、ロボット装置等のリソースが限られた環境においても容易に実行可能なものである。従って、この非顔判定部１２０を設けることにより、前段の顔検出部１１０の顔検出においてある程度の誤検出を許容することができ、例えばサポートベクタマシンＳＶＭ等の演算処理を減らすことができる。なお、以上の条件のうち複数を同時に満たす場合にのみ非顔であると判定してもよく、また認識精度や環境に応じて判定条件を増減させたり、判定条件に優先順位を設けたりしてもよい。
【００４６】
以上の非顔判定処理（non-face判定処理）は、プログラムコード形式で下記のように記載することができる。
【００４７】
if(   (condition1 == false) ||
(condition2 == false) ||
(condition3 == false) ||
(condition4 == false) ){
NONFACE ;
}
else{
FACE;
}
【００４８】
次に、上述した第１乃至第４の条件について説明する。先ず、第１の条件（condition1）については、先ず、測定距離センサ（position sensing device：ＰＳＤ）により、対象となる人物までの間の距離が測定可能か否かを判定し、測定可能であると判断された場合に、測定距離Ｌ２を測定する。次に、入力画像内にて検出された顔候補となっている顔領域のサイズから想定される想定距離Ｌ２を算出する。例えば、人物の顔の大きさの平均値と、入力画像内の顔領域の大きさとに基づき想定距離Ｌ２を算出する。
【００４９】
そして、想定距離Ｌ１／測定距離Ｌ２＝ａ（以下、第１の判定値という。）を算出し、第１の判定値ａが第１の閾値ｔｈ０より大きいか、又は第２の閾値ｔｈ１より小さい場合に、判定対象の入力画像の顔領域は偽（false）、すなわち、顔ではないとされ、第１の判定値ａが第１の閾値ｔｈ１以上第２の閾値以下である場合に、判定対象の入力画像の顔領域は真（true）、すなわち、顔である判定する。そして、第１の判定値ａが第１の閾値ｔｈ０より大きいか、又は第２の閾値ｔｈ１より小さいという第１の条件を満たす顔候補（顔領域）が、この前段の顔検出部により検出された顔候補に含まれる非顔候補、すなわち誤検出として除かれる。
【００５０】
具体的に、例えば、第１の閾値ｔｈ０＝０．４、第２の閾値ｔｈ１＝２．５等とすることができ、
２．５＜ａ＝想定距離Ｌ１／測定距離Ｌ２、又は０．４＞ａ＝想定距離Ｌ１／測定距離Ｌ２
の場合、顔でないと判定される。
すなわち、０．４≦ａ＝想定距離Ｌ１／測定距離Ｌ２≦２．５
の条件を満たす顔候補以外の顔候補は、顔でない非顔候補と判定される。
【００５１】
この第１の条件を満たすか否かの非顔判定方法は、プログラムコード形式で下記のように記載することができる。
【００５２】
a = supposed_distance / measured_distance
if( is_measured_distance == true ){
if( (a > th0) || (th1 > a) )
condition_1 = false;
else
condition_1 = true;
}
else{
condition_1 = true;
}
Where 
is_measured_distance:= 顔領域の距離が測定可能かどうかを示す
supposed_distance:= 顔領域の画面上のサイズから計算される想定距離Ｌ１
measured_distance:= 測定距離センサから求められる距離Ｌ２
Example:
th0 = 2.5; 
th1 = 0.4;
【００５３】
なお、閾値ｔｈ０、ｔｈ１は、入力画像を撮影するカメラや、測定距離センサの精度等に応じて適宜設定するものとする。
【００５４】
次に、第２の条件（condition2）について説明する。人間の顔にはある程度、色の分散がある。すなわち、全面が肌の色一色の均一な領域ではなく、目や口等が含まれるためである。従って、顔領域においてある程度の色の分散がないものは顔ではないと判定することができる。色空間における分散は、ＹＵＶ（ＹＣｂＣｒ）又はＲＧＢ空間内において、１フレーム内の各成分の分散値の平均、及び／又はその複数フレーム間の平均から求めることができる。
【００５５】
図２は、第２の条件を説明するための図であって、顔候補として検出されている顔領域内の画素Ｐ（ｉ，ｊ）を示す図である。図２において、水平方向（紙面左方向）をＸ、垂直方向（紙面下方向）をＹとする。
【００５６】
図２に示すように、入力画像１２１において、検出された顔候補Ｆｃに含まれる各画素Ｐ（ｉ,ｊ）をＲ成分（Ｒｉｊ）、Ｇ成分（Ｇｉｊ）、Ｂ成分（Ｂｉｊ）に分離する。そして、顔候補Ｆｃが占める顔領域におけるＲ成分の分散（Ｖａｒ＿Ｒ）、Ｇ成分の分散（Ｖａｒ＿Ｇ）、Ｂ成分の分散（Ｖａｒ＿Ｂ）を算出する。
【００５７】
そして、これらＲＧＢ成分の分散値の和／３（第２の判定値）が第３の閾値ｔｈ２未満である場合に顔でないと判定する。すなわち、分散を示す第２の判定値が第３の閾値ｔｈ２以上ではない場合は、顔ではないと判断される。具体的に、第３の閾値ｔｈ２は、例えば４５０等と設定することができる。
【００５８】
ここで、本実施の形態においては、現フレームから求めたＲ、Ｇ、Ｂの各成分の分散値の平均（第１の平均値）が上記第３の閾値ｔｈ２以上ない場合に顔ではないと判定すると共に、時間軸上で連続する複数フレームの分散値の平均（第２の平均値）が第４の閾値ｔｈ３以上ない場合に顔ではないと判定することもできる。この複数フレームの分散値の平均である第２の平均値は、上記第１の平均値を加算してフレーム数で割ったものを使用すればよい。
【００５９】
このように複数フレーム間での第２の平均値を使用して非顔判定することで、１フレームの判定のみよりも誤差を低減し、更に正確に非顔候補であるものを排除することができる。また、このように、１フレーム内の分散値の平均（第１の平均値）に合わせて複数フレーム間の分散値の平均（第２の平均値）を使用する場合、第１の平均値の閾値として使用する第３の閾値ｔｈ２を、第２の平均値の閾値として使用する第４の閾値ｔｈ３より大きくし、その判定基準を厳しくすることで更に正確に非顔検出することができる。
【００６０】
この第２の条件を満たすか否かの非顔判定方法のうち、１フレームにおける非顔判定方法は、プログラムコード形式で下記のように記載することができる。
【００６１】
if( ((Var_R + Var_G + Var_B))/3 < th2 ){
condition_2 = false;
}
else
condition_2 = true;
}
Where
Var_R = <顔領域のR成分の分散>;
Var_G = <顔領域のG成分の分散>;
Var_B = <顔領域のB成分の分散>;
Example:
th2 = 450;
【００６２】
次に、第３の条件（condition3）について説明する。人間がある一定時間内に移動できる距離には限界がある。そこで、一定時間内に顔領域の大きさの変化率が所定値以上であった場合には顔ではないと判断することができる。
【００６３】
この第３の条件は、スキントラッカ部１１４にて顔領域を追跡（追尾）している場合に使用することができる。スキントラッカ部１１４は、非顔判定部１２０により非顔候補が除かれ、顔と判断された顔領域を検出すると、その肌色領域を検出し、例えば、肌色領域の重心が入力画像の中心にくるようにして、肌色領域がカメラの視野内に入るよう追跡する。また、顔検出部１１０が複数フレームを処理して顔検出するようなものである場合には、顔検出部１１０の結果に本第３の条件（condition3）を適用することもできる。
【００６４】
この顔領域の大きさ判定の方法としては、例えば、スキントラッカ部１１１４がトラッキングしている現在のフレームにおける顔領域のサイズＳｆ１と、比較対象となる所定時間前のフレームにおける顔領域のサイズＳｆ２との差を求め、これを上記所定時間で除した値と第５の閾値ｔｈ４とを比較することにより行うことができる。そして、この所定時間の顔領域の変化が第５の閾値ｔｈ４より大きい場合は、顔でないと判断することができる。
【００６５】
すなわち、所定時間、例えば６フレーム前に検出された顔領域の大きさと、現在の顔領域の大きさとの差が大きければ、人間はそのように不自然な動きをしないものとの仮定に基づき、顔ではないと判断することができる。
【００６６】
また、顔検出部１１０が複数フレームから顔候補を検出するものである場合には、顔検出部１１０から比較対象となる顔領域サイズＳｆ１、Ｓｆ２を非顔判定部１２０に供給して非顔判定するようにしてもよい。
【００６７】
この第３の条件を満たすか否かの非顔判定方法は、プログラムコード形式で下記のように記載することができる。
【００６８】
if( (size_of_face  previous_size_of_face)/frame_interval > th3 ){
condition_3 = false;
}
else{
condition_3 = true;
}
Where:
size_of_face:= 現在の顔領域のサイズ(in pixel)
previous_size_of_face:= 前フレームの顔領域のサイズ(in pixel)
frame_interval:= 判定に使うframe間隔(Ex. 6 frame)
Example:
th3= 5;
【００６９】
次に、第４の条件（condition4）について説明する。スキントラッカ部１１４は、顔領域を検出すると、例えばその肌色領域を検出してトラッキングを行うことができる。この第４の条件は、このスキントラッカ部１１４のように肌色領域を検出する場合に使用することができる。また、顔検出部１１０にて肌色領域を検出し、検出された肌色領域から顔候補を認識するような場合には、この第４の条件にて非顔判定することができる。
【００７０】
第２の条件において説明したように、人間の顔には目や口が含まれているため、１００％肌色ではない。そこで、顔領域にある一定以上の割合の肌色領域が含まれる場合は、これを顔でないと判定することができる。
【００７１】
具体的には、顔検出部１１０にて顔候補とされ、非顔検出部１２０にて非顔候補とされず、真の顔領域として検出された領域の大きさと、この顔領域のトラッキングを行うスキントラッカ部１１４にて検出した肌色領域の大きさとから、顔領域の画素内の肌色占有率Ｃｆを求める。そして、この肌色占有率Ｃｆが例えばＣｆ≧９５％であるとき、その顔領域は、例えば肌色に近い色の壁や、肌色であっても顔ではない腕や足等であって、顔ではないと判断することができる。
【００７２】
ここで、上述のスキントラッカ部１１４は、顔検出部１１０により顔検出され、非顔判定部１２０により非顔候補が排除された顔領域の肌色領域をトラッキングするものであるが、非顔検出部１２０は、肌色占有率が例えば９５％より小さいものは非顔と判定せず、この顔候補が他の条件にも当てはまらない場合は真の顔領域として検出される。このような場合、スキントラッカ部１１４が肌色領域であれば全てトラッキングするようにした場合には、非顔検出部１２０において、肌色占有率が例えば７０％より大きく、且つ９５％未満であるものを顔候補とし、肌色占有率が７０％以下、９５％以上であるものを非顔候補として判定するようにしてもよい。または、スキントラッカ部１１４にて顔領域と肌色領域とから肌色占有率を測定し、肌色占有率が７０％以上である場合にのみトラッキングするようにしてもよい。また、例えば顔検出部１１０が、肌色領域を抽出し、肌色領域から顔候補を検出するような検出部からなる場合であって、肌色占有率が７０％以上であることを検出条件に含むような場合は、一度非顔判定され、スキントラッカ部１１４が肌色領域のトラッキングを開始した以降に、肌色占有率が７０％以下、９５％以上であるものを非顔候補として判定するようにしてもよい。
【００７３】
この第４の条件を満たすか否かの非顔判定方法は、プログラムコード形式で下記のように記載することができる。
【００７４】
if( (current_skin_rate > th4) }{
condition_4 = false;
}
else{
condition_4 = true;
}
Where
current_flesh_rate:=顔領域の画素内の肌色占有率(%)
Example:
th4 = 95;
【００７５】
以上説明した４つの条件の少なくとも１つを満たした場合には、顔検出部１１０にて検出した顔領域（顔候補）は、顔ではない非顔候補と判断し、顔候補から除外することができる。ここで、上述したように、これら４つの条件は、計算処理的には顔検出部に比して格段に計算量が少なく、顔検出部１１０の検出条件を緩めてある程度誤検出を多くしたとしても、これら４つの条件全てを満たすか否かの非顔判定部１２０の処理を実行することで、結果的に顔検出の誤検出を低減し、且つ演算処理量を増大させることがない。
【００７６】
また、本実施の形態においては、非顔検出部１２０により顔検出部１１０の検出結果である顔候補の非顔判定をして非顔候補を排除し、またスキントラッカ部１１４のトラッキング対象となっている領域の非顔判定をして非顔候補を排除することにより、誤検出を取り除くものであるが、顔検出部１１０は、テンプレートマッチングやＳＶＭを使用した顔検出（顔認識）ではなく他の認識方法であってもよく、例えば肌色領域を抽出しておき、更に、目、鼻、口等の特徴点を検出し、その特徴量や位置関係等に基づき顔候補を検出してもよい。また、顔検出部１１０及びスキントラッカ部１１４の何れか一方と非顔検出部１２０とを組み合わせた顔検出装置としてもよい。
【００７７】
更に、ここでは、検出された顔候補から顔ではない非顔候補を検出するものとしたが、非対象物判定部を設けることで、検出対象が顔ではない物体であっても、同様の効果を奏する。特に、顔検出のように、対象物として複雑な物体を検出するような場合に、上述の顔検出部に相当する対象物検出部の後段に、上述の非顔検出部に相当する非対象物検出部を設けることにより、演算処理を増加させることなく、簡単且つ高速に対象物検出の誤検出を排除することができる。なお、例えばボール等、検出対象として単純な物体を検出するような場合には、このような非対象物検出部を設けて、非対象物を排除する処理を設けるよりも、対象物を検出する検出処理を高精度に行った方が効率的となる。
【００７８】
（２）ロボット装置
次に、上述した本実施の形態における顔検出装置、すなわち従来の顔検出部に加えて非顔判定部を有する顔検出装置を搭載するに好適なロボット装置について説明する。上述した如く、ロボット装置は、リソースが限られており、またエンターテイメント用とされる場合は、顔検出のみならず、ユーザと対話したり、ユーザの指示に従ったり同時に行うべき処理が膨大である。このようなロボット装置には、上述したような計算量が少なく、且つ誤検出が少ない顔検出装置を搭載することが好ましい。
【００７９】
（２−１）ロボット装置のハードウェア構成
図３に示すように、本実施の形態によるロボット装置１は、４足歩行の脚式移動ロボット装置とされ、胴体部ユニット２の前後左右にそれぞれ脚部ユニット３Ａ，３Ｂ，３Ｃ，３Ｄが連結されると共に、胴体部ユニット２の前端部に頭部ユニット４が連結されて構成されている。
【００８０】
胴体部ユニット２には、図４に示すように、ＣＰＵ（Central Processing Unit）１０、ＤＲＡＭ（Dynamic Random Access Memory）１１、フラッシュＲＯＭ（Read Only Memory）１２、ＰＣ（Personal Computer）カードインターフェース回路１３及び信号処理回路１４が内部バス１５を介して相互に接続されることにより形成されたコントロール部１６と、このロボット装置１の動力源としてのバッテリ１７とが収納されている。また、胴体部ユニット２には、ロボット装置１の向きや動きの加速度を検出するための角速度センサ１８及び加速度センサ１９なども収納されている。
【００８１】
また、頭部ユニット４には、外部の状況を撮像するとともに、周囲の明るさを検出するためのＣＣＤ（Charge Coupled Device）カメラ２０と、前後に倒すといった使用者からの物理的な働きかけを検出するためのタッチセンサ２１と、前方に位置する物体までの距離を測定するための距離センサ２２と、外部音を集音するためのマイクロホン２３と、各種音声を出力するためのスピーカ２４と、頭部ユニット４内に格納可能とされたヘッドライト２５と、ロボット装置１の「目」に相当するＬＥＤ（Light Emitting Diode）（図示せず）などがそれぞれ所定位置に配置されている。なお、ロボット装置１においては、タッチセンサ２１以外にも、胴体部ユニット２及び頭部ユニット４の所定位置に複数のタッチセンサが配置されている。
【００８２】
さらに、各脚部ユニット３Ａ〜３Ｄの関節部分や各脚部ユニット３Ａ〜３Ｄ及び胴体部ユニット２の各連結部分、並びに頭部ユニット４及び胴体部ユニット２の連結部分などにはそれぞれ自由度数分のアクチュエータ２６１〜２６ｎ及びポテンショメータ２７１〜２７ｎが配設されている。例えば、アクチュエータ２６１〜２６ｎはサーボモータを構成として有している。サーボモータの駆動により、脚部ユニット３Ａ〜３Ｄが制御されて、目標の姿勢或いは動作に遷移する。
【００８３】
そして、これら角速度センサ１８、加速度センサ１９、タッチセンサ２１、距離センサ２２、マイクロホン２３、スピーカ２４、及び各ポテンショメータ２７１〜２７ｎなどの各種センサ並びにヘッドライト２５、ＬＥＤ及び各アクチュエータ２６１ 〜２６ｎは、それぞれ対応するハブ２８１〜２８ｎを介してコントロール部１６の信号処理回路１４と接続され、ＣＣＤカメラ２０及びバッテリ１７は、それぞれ信号処理回路１４と直接接続されている。
【００８４】
信号処理回路ｌ４は、上述の各センサから供給されるセンサデータや画像データ及び音声データを順次取り込み、これらをそれぞれ内部バス１５を介してＤＲＡＭ１１内の所定位置に順次格納する。また信号処理回路１４は、これと共にバッテリ１７から供給されるバッテリ残量を表すバッテリ残量データを順次取り込み、これをＤＲＡＭ１１内の所定位置に格納する。
【００８５】
このようにしてＤＲＡＭ１１に格納された各センサデータ、画像データ、音声データ及びバッテリ残量データは、この後ＣＰＵ１０がこのロボット装置１の動作制御を行う際に利用される。
【００８６】
実際上ＣＰＵ１０は、ロボット装置１の電源が投入された初期時、胴体部ユニット２の図示しないＰＣカードスロットに装填されたメモリカード２９又はフラッシュＲＯＭ１２に格納された制御プログラムをＰＣカードインターフェース回路１３を介して又は直接読み出し、これをＤＲＡＭ１１に格納する。
【００８７】
また、ＣＰＵ１０は、この後上述のように信号処理回路１４よりＤＲＡＭ１１に順次格納される各センサデータ、画像データ、音声データ及びバッテリ残量データに基づいて自己及び周囲の状況や、使用者からの指示及び働きかけの有無などを判断する。
【００８８】
ここで、例えば本実施の形態における顔検出タスクを実行する際には、ＣＣＤにより撮像された入力画像から顔候補を検出し、距離センサ等の値を使用し、上述した４つの条件に当てはめて非顔候補を検出し、顔候補から非顔候補を排除したものを顔領域として出力する。
【００８９】
さらに、ＣＰＵ１０は、この判断結果及びＤＲＡＭ１１に格納した制御プログラムに基づいて続く行動を決定すると共に、当該決定結果に基づいて必要なアクチュエータ２６１〜２６ｎを駆動させることにより、頭部ユニット４を上下左右に振らせたり、各脚部ユニット３Ａ〜３Ｄを駆動させて歩行させるなどの行動を行わせる。
【００９０】
また、この際ＣＰＵ１０は、必要に応じて音声データを生成し、これを信号処理回路１４を介して音声信号としてスピーカ２４に与えることにより当該音声信号に基づく音声を外部に出力させたり、上述のＬＥＤを点灯、消灯又は点滅させる。また、ＣＰＵ１０は、後述するように、ＣＣＤカメラ２０を用いて周囲の明るさを検出させ、その検出結果に応じてヘッドライト２５を点灯させる。
【００９１】
このようにしてこのロボット装置１においては、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。
【００９２】
（２−２）制御プログラムのソフトウェア構成
ここで、ロボット装置１における上述の制御プログラムのソフトウェア構成は、図５に示すようになる。この図５において、デバイス・ドライバ・レイヤ３０は、この制御プログラムの最下位層に位置し、複数のデバイス・ドライバからなるデバイス・ドライバ・セット３１から構成されている。この場合、各デバイス・ドライバは、ＣＣＤカメラ２０（図４）やタイマ等の通常のコンピュータで用いられるハードウェアに直接アクセスすることを許されたオブジェクトであり、対応するハードウェアからの割り込みを受けて処理を行う。
【００９３】
また、ロボティック・サーバ・オブジェクト３２は、デバイス・ドライバ・レイヤ３０の最下位層に位置し、例えば上述の各種センサやアクチュエータ２６１〜２６ｎ等のハードウェアにアクセスするためのインターフェースを提供するソフトウェア群でなるバーチャル・ロボット装置３３と、電源の切換えなどを管理するソフトウェア群でなるバワーマネージャ３４と、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ３５と、ロボット装置１の機構を管理するソフトウェア群でなるデザインド・ロボット装置３６とから構成されている。
【００９４】
マネージャ・オブジェクト３７は、オブジェクト・マネージャ３８及びサービス・マネージャ３９から構成されている。オブジェクト・マネージャ３８は、ロボティック・サーバ・オブジェクト３２、ミドル・ウェア・レイヤ４０、及びアプリケーション・レイヤ４１に含まれる各ソフトウェア群の起動や終了を管理するソフトウェア群であり、サービス・マネージャ３９は、メモリカード２９（図４）に格納されたコネクションファイルに記述されている各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
【００９５】
ミドル・ウェア・レイヤ４０は、ロボティック・サーバ・オブジェクト３２の上位層に位置し、画像処理や音声処理などのこのロボット装置１の基本的な機能を提供するソフトウェア群から構成されている。また、アプリケーション・レイヤ４１は、ミドル・ウェア・レイヤ４０の上位層に位置し、当該ミドル・ウェア・レイヤ４０を構成する各ソフトウェア群によって処理された処理結果に基づいてロボット装置１の行動を決定するためのソフトウェア群から構成されている。
【００９６】
なお、ミドル・ウェア・レイヤ４０及びアプリケーション・レイヤ４１の具体なソフトウェア構成をそれぞれ図６に示す。
【００９７】
ミドル・ウェア・レイヤ４０は、図６に示すように、騒音検出用、温度検出用、明るさ検出用、音階認識用、距離検出用、姿勢検出用、タッチセンサ用、動き検出用及び色認識用の各信号処理モジュール５０〜５８並びに入力セマンティクスコンバータモジュール５９などを有する認識系６０と、出力セマンティクスコンバータモジュール６８並びに姿勢管理用、トラッキング用、モーション再生用、歩行用、転倒復帰用、ライト点灯用及び音再生用の各信号処理モジュール６１〜６７などを有する出力系６９とから構成されている。
【００９８】
認識系６０の各信号処理モジュール５０〜５８は、ロボティック・サーバ・オブジェクト３２のバーチャル・ロボット装置３３によりＤＲＡＭ１１（図４）から読み出される各センサデータや画像データ及び音声データのうちの対応するデータを取り込み、当該データに基づいて所定の処理を施して、処理結果を入力セマンティクスコンバータモジュール５９に与える。ここで、例えば、バーチャル・ロボット装置３３は、所定の通信規約によって、信号の授受或いは変換をする部分として構成されている。
【００９９】
入力セマンティクスコンバータモジュール５９は、これら各信号処理モジュール５０〜５８から与えられる処理結果に基づいて、「うるさい」、「暑い」、「明るい」、「ボールを検出した」、「転倒を検出した」、「撫でられた」、「叩かれた」、「ドミソの音階が聞こえた」、「動く物体を検出した」又は「障害物を検出した」などの自己及び周囲の状況や、使用者からの指令及び働きかけを認識し、認識結果をアプリケーション・レイヤ４１（図４）に出力する。
【０１００】
アプリケーション・レイヤ４ｌは、図７に示すように、行動モデルライブラリ７０、行動切換モジュール７１、学習モジュール７２、感情モデル７３及び本能モデル７４の５つのモジュールから構成されている。
【０１０１】
行動モデルライブラリ７０には、図８に示すように、「バッテリ残量が少なくなった場合」、「転倒復帰する」、「障害物を回避する場合」、「感情を表現する場合」、「ボールを検出した場合」などの予め選択された複数の条件項目にそれぞれ対応させて、それぞれ独立した行動モデル７０１〜７０ｎが設けられている。
【０１０２】
そして、これら行動モデル７０１〜７０ｎは、それぞれ入力セマンティクスコンバータモジュール５９から認識結果が与えられたときや、最後の認識結果が与えられてから一定時間が経過したときなどに、必要に応じて後述のように感情モデル７３に保持されている対応する情動のパラメータ値や、本能モデル７４に保持されている対応する欲求のパラメータ値を参照しながら続く行動をそれぞれ決定し、決定結果を行動切換モジュール７１に出力する。
【０１０３】
なお、この実施の形態の場合、各行動モデル７０１〜７０ｎは、次の行動を決定する手法として、図９に示すような１つのノード（状態）ＮＯＤＥ０〜ＮＯＤＥｎから他のどのノードＮＯＤＥ０〜ＮＯＤＥｎに遷移するかを各ノードＮＯＤＥ０〜ＮＯＤＥｎに間を接続するアークＡＲＣ１〜ＡＲＣｎに対してそれぞれ設定された遷移確率Ｐ１〜Ｐｎに基づいて確率的に決定する有限確率オートマトンと呼ばれるアルゴリズムを用いる。
【０１０４】
具体的に、各行動モデル７０１〜７０ｎは、それぞれ自己の行動モデル７０１〜７０ｎを形成するノードＮＯＤＥ０〜ＮＯＤＥｎにそれぞれ対応させて、これらノードＮＯＤＥ０〜ＮＯＤＥｎごとに図１０に示すような状態遷移表８０を有している。
【０１０５】
この状態遷移表８０では、そのノードＮＯＤＥ０〜ＮＯＤＥｎにおいて遷移条件とする入力イベント（認識結果）が「入力イベント名」の列に優先順に列記され、その遷移条件についてのさらなる条件が「データ名」及び「データ範囲」の列における対応する行に記述されている。
【０１０６】
したがって、図１０の状態遷移表８０で表されるノードＮＯＤＥ１００では、「ボールを検出（ＢＡＬＬ）」という認識結果が与えられた場合に、当該認識結果と共に与えられるそのボールの「大きさ（ＳＩＺＥ）」が「0から1000」の範囲であることや、「障害物を検出（ＯＢＳＴＡＣＬＥ）」という認識結果が与えられた場合に、当該認識結果と共に与えられるその障害物までの「距離（ＤＩＳＴＡＮＣＥ）」が「0から100」の範囲であることが他のノードに遷移するための条件となっている。
【０１０７】
また、このノードＮＯＤＥ１００では、認識結果の入力がない場合においても、行動モデル７０１〜７０ｎが周期的に参照する感情モデル７３及び本能モデル７４にそれぞれ保持された各情動及び各欲求のパラメータ値のうち、感情モデル７３に保持された「喜び（ＪＯＹ）」、「驚き（ＳＵＲＰＲＩＳＥ）」若しくは「悲しみ（ＳＵＤＮＥＳＳ）」のいずれかのパラメータ値が「50から100」の範囲であるときには他のノードに遷移することができるようになっている。
【０１０８】
また、状態遷移表８０では、「他のノードヘの遷移確率」の欄における「遷移先ノード」の行にそのノードＮＯＤＥ０〜 ＮＯＤＥｎから遷移できるノード名が列記されていると共に、「入力イベント名」、「データ値」及び「データの範囲」の列に記述された全ての条件が揃ったときに遷移できる他の各ノードＮＯＤＥ０〜ＮＯＤＥｎへの遷移確率が「他のノードヘの遷移確率」の欄内の対応する箇所にそれぞれ記述され、そのノードＮＯＤＥ０〜ＮＯＤＥｎに遷移する際に出力すべき行動が「他のノードヘの遷移確率」の欄における「出力行動」の行に記述されている。なお、「他のノードヘの遷移確率」の欄における各行の確率の和は１００［％］となっている。
【０１０９】
したがって、図９の状態遷移表８０で表されるノードＮＯＤＥ１００では、例えば「ボールを検出（ＢＡＬＬ）」し、そのボールの「ＳＩＺＥ（大きさ）」が「0から1000」の範囲であるという認識結果が与えられた場合には、「30［％］」の確率で「ノードＮＯＤＥ１２０（node 120）」に遷移でき、そのとき「ＡＣＴＩＯＮ１」の行動が出力されることとなる。
【０１１０】
各行動モデル７０１〜７０ｎは、それぞれこのような状態遷移表８０として記述されたノードＮＯＤＥ０〜 ＮＯＤＥｎがいくつも繋がるようにして構成されており、入力セマンティクスコンバータモジュール５９から認識結果が与えられたときなどに、対応するノードＮＯＤＥ０〜ＮＯＤＥｎの状態遷移表を利用して確率的に次の行動を決定し、決定結果を行動切換モジュール７１に出力するようになされている。
【０１１１】
図７に示す行動切換モジュール７１は、行動モデルライブラリ７０の各行動モデル７０１〜７０ｎからそれぞれ出力される行動のうち、予め定められた優先順位の高い行動モデル７０１〜７０ｎから出力された行動を選択し、当該行動を実行すべき旨のコマンド（以下、これを行動コマンドという。）をミドル・ウェア・レイヤ４０の出力セマンティクスコンバータモジュール６８に送出する。なお、この実施の形態においては、図８において下側に表記された行動モデル７０１〜７０ｎほど優先順位が高く設定されている。
【０１１２】
また、行動切換モジュール７１は、行動完了後に出力セマンティクスコンバータモジュール６８から与えられる行動完了情報に基づいて、その行動が完了したことを学習モジュール７２、感情モデル７３及び本能モデル７４に通知する。
【０１１３】
一方、学習モジュール７２は、入力セマンティクスコンバータモジュール５９から与えられる認識結果のうち、「叩かれた」や「撫でられた」など、使用者からの働きかけとして受けた教示の認識結果を入力する。
【０１１４】
そして、学習モジュール７２は、この認識結果及び行動切換モジュール７１からの通知に基づいて、「叩かれた（叱られた）」ときにはその行動の発現確率を低下させ、「撫でられた（誉められた）」ときにはその行動の発現確率を上昇させるように、行動モデルライブラリ７０における対応する行動モデル７０１〜７０ｎの対応する遷移確率を変更する。
【０１１５】
他方、感情モデル７３は、「喜び（joy）」、「悲しみ（sadness）」、「怒り（anger）」、「驚き（surprise）」、「嫌悪（disgust）」及び「恐れ（fear）」の合計６つの情動について、各情動ごとにその情動の強さを表すパラメータを保持している。そして、感情モデル７３は、これら各情動のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール５９から与えられる「叩かれた」及び「撫でられた」などの特定の認識結果と、経過時間及び行動切換モジュール７１からの通知などに基づいて周期的に更新する。
【０１１６】
具体的には、感情モデル７３は、入力セマンティクスコンバータモジュール５９から与えられる認識結果と、そのときのロボット装置１の行動と、前回更新してからの経過時間などに基づいて所定の演算式により算出されるそのときのその情動の変動量を△Ｅ［ｔ］、現在のその情動のパラメータ値をＥ［ｔ］、その情動の感度を表す係数をｋｅとして、（１）式によって次の周期におけるその情動のパラメータ値Ｅ［ｔ＋１］を算出し、これを現在のその情動のパラメータ値Ｅ［ｔ］と置き換えるようにしてその情動のパラメータ値を更新する。また、感情モデル７３は、これと同様にして全ての情動のパラメータ値を更新する。
【０１１７】
【数１】
2005078376.tif 000003
【０１１８】
なお、各認識結果や出力セマンティクスコンバータモジュール６８からの通知が各情動のパラメータ値の変動量△Ｅ［ｔ］にどの程度の影響を与えるかは予め決められており、例えば「叩かれた」といった認識結果は「怒り」の情動のパラメータ値の変動量△Ｅ［ｔ］に大きな影響を与え、「撫でられた」といった認識結果は「喜び」の情動のパラメータ値の変動量△Ｅ［ｔ］に大きな影響を与えるようになっている。
【０１１９】
ここで、出力セマンティクスコンバータモジュール６８からの通知とは、いわゆる行動のフィードバック情報（行動完了情報）であり、行動の出現結果の情報であり、感情モデル７３は、このような情報によっても感情を変化させる。これは、例えば、「吠える」といった行動により怒りの感情レベルが下がるといったようなことである。なお、出力セマンティクスコンバータモジュール６８からの通知は、上述した学習モジュール７２にも入力されており、学習モジュール７２は、その通知に基づいて行動モデル７０１〜７０ｎの対応する遷移確率を変更する。
【０１２０】
なお、行動結果のフィードバックは、行動切換モジュール７１の出力（感情が付加された行動）によりなされるものであってもよい。
【０１２１】
一方、本能モデル７４は、「運動欲（exercise）」、「愛情欲（affection）」、「食欲（appetite）」及び「好奇心（curiosity）」の互いに独立した４つの欲求について、これら欲求ごとにその欲求の強さを表すパラメータを保持している。そして、本能モデル７４は、これらの欲求のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール５９から与えられる認識結果や、経過時間及び行動切換モジュール７１からの通知などに基づいて周期的に更新する。
【０１２２】
具体的には、本能モデル７４は、「運動欲」、「愛情欲」及び「好奇心」については、認識結果、経過時間及び出力セマンティクスコンバータモジュール６８からの通知などに基づいて所定の演算式により算出されるそのときのその欲求の変動量をΔＩ［ｋ］、現在のその欲求のパラメータ値をＩ［ｋ］、その欲求の感度を表す係数ｋｉとして、所定周期で（２）式を用いて次の周期におけるその欲求のパラメータ値Ｉ［ｋ＋１］を算出し、この演算結果を現在のその欲求のパラメータ値Ｉ［ｋ］と置き換えるようにしてその欲求のパラメータ値を更新する。また、本能モデル７４は、これと同様にして「食欲」を除く各欲求のパラメータ値を更新する。
【０１２３】
【数２】
2005078376.tif 000004
【０１２４】
なお、認識結果及び出力セマンティクスコンバータモジュール６８からの通知などが各欲求のパラメータ値の変動量△Ｉ［ｋ］にどの程度の影響を与えるかは予め決められており、例えば出力セマンティクスコンバータモジュール６８からの通知は、「疲れ」のパラメータ値の変動量△Ｉ［ｋ］に大きな影響を与えるようになっている。
【０１２５】
なお、本実施の形態においては、各情動及び各欲求（本能）のパラメータ値がそれぞれ0から100までの範囲で変動するように規制されており、また係数ｋｅ、ｋｉの値も各情動及び各欲求ごとに個別に設定されている。
【０１２６】
一方、ミドル・ウェア・レイヤ４０の出力セマンティクスコンバータモジュール６８は、図６に示すように、上述のようにしてアプリケーション・レイヤ４１の行動切換モジュール７１から与えられる「前進」、「喜ぶ」、「鳴く」又は「トラッキング（ボールを追いかける）」といった抽象的な行動コマンドを出力系６９の対応する信号処理モジュール６１〜６７に与える。
【０１２７】
そしてこれら信号処理モジュール６１〜６７は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ２６１〜２６ｎ（図４）に与えるべきサーボ指令値や、スピーカ２４（図４）から出力する音の音声データ及び又は「目」のＬＥＤに与える駆動データを生成し、これらのデータをロボティック・サーバ・オブジェクト３２のバーチャル・ロボット装置３３及び信号処理回路１４（図４）を順次介して対応するアクチュエータ２６１〜２６ｎ又はスピーカ２４又はＬＥＤに順次送出する。
【０１２８】
このようにしてロボット装置１においては、制御プログラムに基づいて、自己（内部）及び周囲（外部）の状況や、使用者からの指示及び働きかけに応じた自律的な行動を行うことができるようになされている。このような自律的動作が可能なロボット装置に上述した誤検出を低減した顔検出装置を搭載することで、リアルタイムに正確な顔検出を可能とし、ユーザとの円滑なコミュニケーションを実現することができる。
【０１２９】
（３）顔検出部の具体例
以下、上述した本発明の実施の形態における顔検出装置における非顔判定部１２０の前段にて顔候補を抽出するための顔検出部１１０の一具体例について説明する。この顔検出部は、ロボット装置等が撮像した入力画像に対して、テンプレートマッチングを行っておおまかに顔候補を抽出することでこの後段におけるＳＶＭ等の演算量を削減しつつ、顔候補の中から顔であるか否かの顔検出を行うことにより、ロボット装置の顔検出のリアルタイム性を向上させたものである（特願２００３−１３３６０１号参照）。
【０１３０】
上述したように、テンプレートマッチングを行って顔候補を抽出し（第１の工程）、この顔候補の中からＳＶＭ等により顔領域を判定して（第２の工程）顔領域を検出する方法において、第１の工程においては、単純に正規化相関値の代償により顔候補を決定すると、顔候補の見逃しを軽減しようとした場合、閾値を上げる方法又は間引きを減らす方法をとることができるものの、閾値を下げると演算量が増大してしまい、ロボット装置等のリソースの限られた環境においては好ましくない場合がある。一方、閾値を上げると、第２の工程において顔判定するための候補画像が減るため、演算量を減らすことができるものの、本来顔である画像も候補画像から取り除いてしまい、顔画像を見逃してしまう場合がある。
【０１３１】
そこで、本願発明者等は、テンプレートと同一サイズの顔領域（顔画像）が入力画像内に存在する場合、この顔画像とテンプレートとの相関をとれば、テンプレートサイズ近傍では最も相関値が大きくなることに着目し、顔領域の候補を絞り込む際に、局所的な絞り込みを行うアルゴリズムを使用することにより、本来顔である画像を見逃すことなく顔候補画像を低減して後段の第２の工程にて顔判定する計算量を低減する方法を見出した。具体的には、入力画像と所定サイズの平均顔のテンプレートとの正規化相関をとった相関値の集合であるマッチング結果における相関値の局所最大値に基づき候補となる顔領域を抽出するものである。以下、この顔検出方法について詳細に説明する。
【０１３２】
本実施の形態における顔検出装置は、例えば上述した動物を模したロボット装置１等のＣＰＵ及びメモリ等のリソースが限られたシステムにおいて、性能を保持しつつ顔検出に要する計算量を削減する場合に好適である。
【０１３３】
（３−１）顔検出タスク機能に関する信号処理回路１４の処理
本実施の形態におけるロボット装置１に搭載された顔検出タスク機能について説明する。上述した如く、ロボット装置１には、ＣＣＤカメラ２０を介して内部メモリ（ＤＲＡＭ）１１に記憶されるフレーム画像について、当該フレーム画像の中から人間の顔画像を検出する顔検出タスク機能が搭載されている。そしてこの顔検出タスク機能は、主制御部となる信号処理回路１４における各種処理により実現されている。
【０１３４】
ここで、かかる顔検出タスク機能に関する信号処理回路１４の処理内容を機能的に分類すると、図１１に示すように、テンプレートサイズ及び入力画像スケール変換決定部９０、ウィンドウ切り出し部９１、テンプレートマッチング部９２、スケール変換及び切り出し部９３、前処理部９４、及びパターン識別部９５に分けることができる。
【０１３５】
入力画像スケール変換決定部９０は、図４に示すＣＣＤカメラ２０からの画像信号に基づくフレーム画像をロボット装置等の内部メモリ（ＤＲＡＭ１１）から読み出して、当該フレーム画像を縮小率が相異なる複数のスケール画像（第１〜第５のスケール画像）に変換すると共に、後段のテンプレートマッチング部９２で使用するテンプレートサイズ、すなわち、顔画像のサイズを選択する（以下、これを第１のテンプレートサイズという）。
【０１３６】
続くウィンドウ切出部９１は、第１〜第５のスケール画像のうち、まず第１のスケール画像に対して、画像左上を起点として順に画像右下まで、適当な画素（例えば２画素）分を飛ばしながらスキャンするようにして、４００（＝20×20）画素の矩形領域でなるウィンドウ画像を順次切り出す。
【０１３７】
その際、ウィンドウ切出部９１は、第１のスケール画像から切り出した複数のウィンドウ画像のうち先頭のウィンドウ画像を、スケール変換決定部９１で選択した第１のテンプレートサイズのテンプレートと共に後段のテンプレートマッチング部９２に送出する。
【０１３８】
テンプレートマッチング部９２は、ウィンドウ切出部９１から得られた先頭のウィンドウ画像について、第１のテンプレートサイズを有する平均的な顔画像をテンプレートとして大まかなマッチングをとり、当該テンプレートとの相関値（テンプレートのうちマッチングする画素数の割合）の集合をマッチング結果として当該ウィンドウ画像と共にＤＲＡＭ１１に格納する。
【０１３９】
すなわち、図１２（ａ）に示すように、任意のスケール画像から切り出した、例えば高さ（ｙ軸方向の辺の長さ）hei_s×幅（ｘ軸方向の辺の長さ）weid_sのウィンドウ画像（スケール変換後の入力画像）Ｗ２について、図１２（ｂ）に示すように、例えば高さhei_t×幅wid_sである第１のテンプレートサイズを有する平均的な顔画像であるテンプレートＴ２を使用し、ウィンドウ画像Ｗ２をスキャンし、所定画素（例えば１画素）ずつずらしながら移動させたテンプレートＴ２と上記入力画像との相関値の集合であるマッチング結果を求める。このマッチング結果は、テンプレートＴ２の移動に伴い相関値が２次元に配列されたものであり、図１３に示すように、当該相関値を表す高さhei_r×幅wid_ｒのテンプレートマッチング結果画像Ｒ２が得られる。ここで、テンプレートレートマッチング結果画像Ｒ２の高さher_ｒは、hei_s−（hei_t＋１）であり、画像Ｒ２の幅wiｄ_ｓは、wid_s−（wid_t＋１）となる。
【０１４０】
次に、このテンプレートレートマッチング結果画像Ｒ２を所定のサイズ、例えば第１のテンプレートサイズと同一の大きさに分割し、各第１のテンプレートサイズに仕切られた分割領域毎に相関値の最大値を有する点（位置）を求め、これら各分割領域から得られた最大値を示す点のうち、所定の閾値以上のものを顔候補として抽出する。
【０１４１】
すなわち、平均顔のテンプレートを使用して正規化相関をしようした場合、必ずしも任意のパターンより、顔画像の方が相関値が高くなるという保証はないものの、テンプレートと同一のサイズの顔画像が存在する場合は、テンプレートサイズ近傍の大きさでは相関値が最大値をとることから、相関値が分割領域内で最大値となり、且つ所定の閾値以上の点を顔候補として抽出することにより、単にテンプレートマッチングの結果、相関値が所定の閾値以上であるものを顔候補として抽出する場合に比して、顔候補をより有効に絞り込むことができる。
【０１４２】
次に、この顔候補として抽出された点を顔候補（第１の顔候補）とすると共に、この顔候補近傍の点も顔候補（第２の顔候補）として抽出し、後段のパターン認識部９５において、ＳＶＭを使用して顔判定する。ここで、ＳＶＭは１画素ずれるのみで顔検出ができなくなるほど敏感であるため、本実施の形態においては、顔候補の近傍も検索範囲（第２の顔候補）とすることにより、顔候補の近傍を重点的に検索して顔検出性能を向上することができる。ここで第１の顔候補として抽出された点の上下左右に隣接する８点全てを検索範囲とすると、後段の計算量が増加するため、所定の条件を満たす場合にのみ、検索範囲に指定することにより、後段の計算量の増加を抑えつつ検出性能を向上させることができる。
【０１４３】
すなわち、第１の顔候補として抽出された点に隣接する点において、これらの点に対応するテンプレートサイズの入力画像領域において、肌色領域の占有率（肌色占有率）が所定の閾値以上である場合、又は、予め検出された（又は予め学習された）顔色情報を有し、この顔色領域の占有率（顔色占有率）が所定の閾値以上である場合にのみ、その点を検索範囲に設定することができる。ここで、肌色占有率は、例えば、肌色カラーテーブルを使用し、この肌色と比較することにより求めることができる。
【０１４４】
この後、テンプレートマッチング部９２は、ウィンドウ切出部９１に対して、第１のスケール画像のうち先頭のウィンドウ画像のテンプレートマッチングが終了した旨を通知することにより、当該ウィンドウ切出部９１から第１のスケール画像のうち次にスキャンされたウィンドウ画像をテンプレートマッチング部９２に送出させる。
【０１４５】
このようにテンプレートマッチング部９２は、ウィンドウ切出部９１において第１のスケール画像から切り出した全てのウィンドウ画像について、スキャン順にそれぞれ顔候補を検出する。
【０１４６】
スケール変換及び切出部９３は、各スケール画像毎に候補リストとしてＤＲＡＭ１１に格納された複数のスコア画像について、当該ＤＲＡＭ１１から第１のスケール画像内でかつ候補リストの決定順に１つずつスコア画像を読み出して、前処理部９４に送出する。
【０１４７】
前処理部９４は、スケール変換及び切出部９３から得られたスコア画像について、矩形領域でなる当該スコア画像（４００画素）から人間の顔画像とは無関係である背景部分に相当する４隅の領域を除去するために、当該４隅の領域を切り取ったマスクを用いて３６０画素分を抽出する。
【０１４８】
そして前処理部９４は、撮像時の照明により濃淡で表される被写体の傾き条件を解消すべく、当該抽出した３６０画素分のスコア画像のうち顔画像として最適な部位を基準とする平面を形成するように画素単位で濃淡値に補正をかける。
【０１４９】
続いて前処理部９４は、当該３６０画素分のスコア画像のコントラストを強調した結果をヒストグラム平滑化処理を行うことにより、ＣＣＤカメラ２０のゲインや照明の強弱によらずに検出できるようにする。
【０１５０】
次いで、前処理部９４は、ガボア・フィルタリング処理を行うことにより、当該３６０画素分のスコア画像をベクトル変換し、得られたベクトル群を更に１本のパターンベクトルに変換する。人間の視覚細胞には、ある特定の方位に対して選択性を持つ細胞が存在することが既に判っている。これは、垂直の線に対して反応する細胞と、水平の線に反応する細胞で構成される。ガボア・フィルタリングは、これと同様に、方位選択性を持つ複数のフィルタで構成される空間フィルタである。
【０１５１】
そして、識別手段としてのパターン識別部９５は、外部から供給される学習用のデータすなわち教師データを用いて、暫定的な識別関数を得た後、当該識別関数を前処理部９４からパターンベクトルとして得られた３６０画素分のスコア画像に試して顔の検出を行う。そして、検出に成功したものを顔データとして出力する。また検出に失敗したものを非顔データとして学習データに追加して、更に学習をし直す。
【０１５２】
このパターン識別部９５は、例えばパターン認識の分野で最も学習汎化能力が高いとされるサポートベクタマシンを用いて、前処理部９４からパターンベクトルとして得られた３６０画素分のスコア画像に試して顔か否かの識別を学習しながら行う。
【０１５３】
サポートベクタマシン自体に関しては、例えばB.sholkopf外著の報告（B.Sholkopf、C.Burges、A.Smola、“Advance in Kernel Support Vector earning”、The MIT Press、1999.）を挙げることができる。本願出願人が行った予備実験の結果からは、サポートベクタマシンによる顔認識方法は、主成分分析（ＰＣＡ）やニューラル・ネットワークを用いる手法に比べ、良好な結果を示すことが判っている。
【０１５４】
サポートベクタマシンは、識別関数に線形識別器（パーセプトロン）を用いた学習機械であり、カーネル関数を使うことで非線形空間に拡張することができる。また識別関数の学習では、クラス間分離のマージンを最大にとるように行われ、その解は２次数理計画法を解くことで得られるため、グローバル解に到達できることを理論的に保証することができる。
【０１５５】
すなわち、パターン識別部９５は、前処理部９４から与えられたスコア画像に基づくパターンベクトルについて、当該スコア画像内での顔データに相当する画像領域の位置（座標）及びその大きさ（画素数）と、当該スコア画像の切出し元となるスケール画像のフレーム画像に対する縮小率（すなわち上述の５段階のうちの該当する段階）と、テンプレートのサイズとをリスト化し、これをリストデータとしてＤＲＡＭ１１に格納する。
【０１５６】
この後、パターン識別部９５は、スケール変換及び切出部９３に対して、第１のスケール画像のうち最初のスコア画像の顔検出が終了した旨を通知することにより、当該スケール変換及び切出部９３から第１のスケール画像のうち次のスコア画像を前処理部９４に送出する。前処理部９５は、当該スコア画像をパターンベクトルに変換してパターン識別部９５に送出する。パターン識別部９５は、パターンベクトルから得られた顔データに基づいてリストデータを生成してＤＲＡＭ１１に格納する。
【０１５７】
このようにスケール変換及び切出部９３において、第１のスケール画像内で候補リストにある全てのスコア画像について、順番に前処理部９４及びパターン識別部９５の各処理を行うことにより、当該第１のスケール画像から撮像結果に存在する顔画像を検出することができる。
【０１５８】
すなわち、テンプレートマッチング部９２は、入力画像スケール変換部９０に対して、第１のスケール画像及び第１のテンプレートサイズのテンプレートを使用した顔検出が終了した旨を通知することにより、当該入力画像スケール変換部９０から、第１のスケール画像及び第２のテンプレートサイズのテンプレートをウィンドウ切り出し部９１に送出させる。第２のテンプレートサイズを使用した場合も、上述した第１のテンプレートサイズのテンプレートを使用した場合と同様の処理を行って全てのテンプレートサイズに対応する顔候補を検出した後、テンプレートマッチング部９２は、入力画像スケール変換部９０の第１のスケール画像に対して全てのテンプレートサイズを使用した顔検出が終了した旨を通知することにより、当該入力画像スケール変換決定部９０から第２のスケール画像をウィンドウ切出部９１に送出させる。
【０１５９】
そして第２のスケール画像についても、上述した第１のスケール画像と同様の処理を行って、当該第２のスケール画像から全てのウィンドウ画像に対応する顔候補を検出した後、第３〜第５のスケール画像についても同様の処理を順次行う。
【０１６０】
かくしてテンプレートマッチング部９２は、撮像画像であるフレーム画像を５段階に縮小した第１〜第５のスケール画像及び複数のテンプレートサイズのテンプレートについて、それぞれ切出した複数のウィンドウ画像に対応する顔候補を抽出して、当該ウィンドウ画像と共にＤＲＡＭ１１に格納する。
【０１６１】
ここで、本実施の形態においては、任意の大きさのテンプレートを使用することができるが、使用するテンプレートサイズを切り替えて、テンプレートサイズを選択することにより、入力画像に対して準備できる全てのテンプレートサイズに対して演算をする場合に比して、演算量を減らして高効率化することができる。例えば、一度顔が検出された場合に、次に顔検出する際はそのテンプレートサイズを使用することができる。また、例えば、ロボット装置に設けられた距離センサを使用し、この距離センサからの距離情報に基づき入力画像に含まれる対象物との間の距離を認識することにより、対象物の顔領域の大きさを予測してテンプレートサイズを選択する対象距離切り替え手段を設ける等することができ、目的に応じてテンプレートサイズを切り替えることができる。
【０１６２】
（３−２）顔検出部における動作
以上の構成において、ロボット装置１等においては、ＣＣＤカメラ２０により撮像したフレーム画像を縮小率が相異なる複数のスケール画像に変換した後、当該各スケール画像の中からそれぞれ所定サイズのウィンドウ画像を所定画素ずつずらすようにスキャンしながら１枚ずつ切り出す。
【０１６３】
このウィンドウ画像について、平均的な顔画像を表すテンプレートを用いてマッチングをとって当該テンプレートとの相関値の集合であるマッチング結果画像を生成する。このように各スケール画像毎にそれぞれ全てのウィンドウ画像についてスキャン順にそれぞれマッチング結果画像を生成する。以下、マッチング結果画像から顔候補を検出する工程について詳細に説明する。
【０１６４】
図１４は、テンプレートマッチング部９２において、テンプレートマッチング結果画像Ｒ２から顔候補となる画素を検出する各処理工程を示すフローチャートである。図１４に示すように、先ず、テンプレートマッチング結果画像Ｒ２が入力されると、マッチング結果画像Ｒ２をテンプレートサイズに分割し、その分割領域の１つ、例えば０≦ｘ≦wid_t−１、０≦ｙ≦hei_t−１において、最も相関値が高い点（座標）を抽出する（ステップＳＰ１１）。以下、マッチング結果画像Ｒ２をテンプレートサイズに分割した領域を分割領域ｒｎ、分割領域ｒｎにおいて、相関値が最も大きい点（座標）をlocal_max（ｘ，ｙ）という。ここでは、この各分割領域内において最も相関値が高い画素を抽出するが、本実施の形態においては、マッチング結果画像において分割された分割領域を左から右へ一行ずつ順に処理を行う場合について説明する。
【０１６５】
次に、local_max（ｘ，ｙ）が所定の閾値（ｔｈ５）より大きいか否かを判定し（ステップＳＰ１２）、大きい場合は、顔候補として追加する（ステップＳＰ１３）。上述した如く、入力画像スケール変換決定部９０においては、スケールと共に入力画像に含まれると想定される顔の大きさのテンプレートサイズを選択するが、テンプレートサイズは異なる大きさの複数種類あり、複数種類ある各テンプレートサイズ毎にマッチング結果画像Ｒ２を算出して顔候補を抽出すると、同一の点が抽出される場合がある。従って、ステップＳＰ１３において、顔候補として同一の点がある場合、すなわち、異なるテンプレートサイズで顔候補を抽出した際に既に抽出されている場合はこの点は追加しない。
【０１６６】
次に、顔候補として抽出された点に対応するテンプレートサイズの入力画像領域において、この画像領域内に含まれる肌色画素の占有率を求める。本実施の形態においては、肌色画素の占有率を求める際に、肌色カラーテーブル１００を参照する。そして、この肌色画素占有率が所定の閾値（ｔｈ６）より大きいか否かを判定する（ステップＳＰ１４）。大きい場合は、このlocal_max（ｘ，ｙ）の周辺、例えば上下左右の８近傍点を顔候補として追加する（ステップＳＰ１５）。ここで、ステップＳＰ１３と同様に、既にこれらの８近傍点が既に顔候補として抽出されている場合は、候補に追加しない。
【０１６７】
ステップＳＰ１２でlocal_max（ｘ，ｙ）が閾値ｔｈ５未満だった場合、ステップＳＰ１４でlocal_max（ｘ，ｙ）に相当する入力画像における肌色画素占有率が閾値ｔｈ６未満であった場合、及びステップＳＰ１５で顔候補の追加が終了した後は、いずれもステップＳＰ１６に進み、次の顔候補を抽出するために次の分割領域に移り、処理を進める。
【０１６８】
先ず、マッチング結果画像Ｒ２において、ｘ方向にテンプレートサイズ分、すなわち、wid_tだけずれた隣の分割領域に移る（ステップＳＰ１６）。次に、wid_tだけずれたｘ座標（ｘ＋wid_t）の分割領域において、そのｘ座標がマッチング結果画像の幅（ｘ方向の辺）wid_rより大きい場合は、分割領域がマッチング結果画像に含まれないことを示し、次の行に移り、０≦ｘ≦wid_t−１であって、ｙ方向にテンプレートサイズ分、すなわち、hei_tだけずれた隣の分割領域に移る（ステップＳＰ１８）。次に、分割領域のｙ座標がマッチング結果画像の高さ（ｙ方向の辺）hei_rより大きいか否かを判定し（ステップＳＰ１９）、大きい場合は、マッチング結果画像における全ての分割領域の相関値の最大値を求めたことを示し、処理を終了する。
【０１６９】
一方、ステップＳＰ１７及びステップＳＰ１８において、分割領域がマッチング結果画像に含まれると判定された場合は、再びステップＳＰ１１に戻り、その分割領域内で最も高い相関値を有する点を抽出する。
【０１７０】
本実施の形態においては、マッチング結果画像Ｒ２をテンプレートサイズに区切た分割領域における相関値の最大値を求めているため、ステップＳＰ１６において、隣接する分割領域に移る場合は、ｘ方向にwid_tだけずれるものとしたが、マッチング結果画像Ｒ２は、テンプレートサイズ以下のサイズであれば、任意の大きさに分割することができる。その際、分割する画像の大きさの幅（ｘ方向の辺）wid_step、高さ（ｙ方向）hei_stepとすると、ステップＳＰ１６及びステップＳＰ１８において、それぞれｘ方向にwid_step、又はｙ方向にhei_step移動することにより、次の分割領域に進むことができる。
【０１７１】
こうして、テンプレートマッチング部９２において、顔画像であると判断されたウィンドウ画像（すなわちスコア画像）について、当該スコア画像の矩形領域の４隅部分を除去した後、濃淡補正及び続くコントラスト強調の平滑化を行い、更に１本のパターンベクトルに変換する。
【０１７２】
そして当該パターンベクトルについて、元のスコア画像内での顔検出を行って顔データ又は非顔データを判断し、顔データが存在するスコア画像の画像領域の位置（座標）及びその大きさ（画素数）と、当該スコア画像の切出し元となるスケール画像のフレーム画像に対する縮小率とをリスト化したリストデータを生成する。
【０１７３】
このように各スケール画像毎にそれぞれ全てのスコア画像についてリストデータを生成した後、当該各リストデータに含まれるスコア画像同士を比較して、相互に重なり合う領域を除去した顔決定データを求めることにより、元のフレーム画像から顔画像を検出することができる。
【０１７４】
（３−３）具体例の効果
上述した図１３に示すマッチング結果画像Ｒ２から顔候補から、単に閾値以上である点を全て顔候補として抽出するのに比較して、テンプレートマッチング部９２にて顔候補として抽出される点を低減し、これにより、後段の処理における計算量を飛躍的に削減することができる。
【０１７５】
本具体例においては、ウィンドウ画像について、平均的な顔画像を表すテンプレートを用いてマッチングをとって大まかに顔画像であるか否かを判断する際に、テンプレートマッチング結果画像を所定のサイズに仕切り、相関値の最大値を顔候補として抽出して明らかに顔画像でないウィンドウ画像を除去することにより、本来顔である領域を見逃すことなく、後段の顔検出処理に要する演算量及び時間を減少させることができ、かくしてリアルタイム性を格段と向上した顔検出装置及びこれを搭載したロボット装置を実現することができる。
【０１７６】
また、相関値が最大となる点と共にその周囲においても顔検索範囲とすることにより、顔検出精度を向上することができる。更に、所定の閾値以上の肌色占有率又は顔の色占有率を有する場合のみ、顔検索範囲として設定することにより、顔検出精度を保ちつつ顔候補を減らして後段の演算量を減らすことができる。更にまた、テンプレートのサイズを適宜切り替えることにより、更に演算量を減らすことができる。
【０１７７】
以上説明したように、顔検出部１１０においては、例えば所定の閾値以上の肌色占有率を有する領域を顔候補とするなど、所定の条件を満たすものを顔であると判断する。そして、本実施の形態においては、このような顔検出タスクの追加機能として、上述したような非顔判定部を設け、改めて顔でないものを抽出して排除することで、演算量を増大させることなく顔検出の誤検出を低減することができる。
【０１７８】
また、ロボット装置１は、顔領域の他、入力画像から障害物を検出したり、自己位置同定のためにランドマークを検出したり、入力画像から動体を検出してトラッキングしたりと、入力画像から所定の条件を満たす種々の物体を検出する処理を行う。その場合においても、本実施の形態における非顔判定部と同様、所定の条件を満たすものを検出対象ではないとして排除する誤検出防止手段としての非対象物検出手段を設けることにより、誤検出を低減することができる。
【図面の簡単な説明】
【０１７９】
【図１】本発明の実施の形態における顔検出装置における顔検出処理を機能別に示すブロック図である
【図２】同顔検出装置に設けられる非顔判定部における非顔判定のための第２の条件を説明するための図であって、顔候補として検出されている顔領域内の画素Ｐ（ｉ，ｊ）を示す図である。
【図３】本発明の実施の形態におけるロボット装置の外観構成を示す斜視図である。
【図４】同ロボット装置の回路構成を示すブロック図である。
【図５】同ロボット装置のソフトウェア構成を示すブロック図である。
【図６】同ロボット装置のソフトウェア構成におけるミドル・ウェア・レイヤの構成を示すブロック図である。
【図７】同ロボット装置のソフトウェア構成におけるアプリケーション・レイヤの構成を示すブロック図である。
【図８】同アプリケーション・レイヤの行動モデルライブラリの構成を示すブロック図である。
【図９】同ロボット装置の行動決定のための情報となる有限確率オートマトンを説明するために使用した図である。
【図１０】有限確率オートマトンの各ノードに用意された状態遷移表を示す図である。
【図１１】同ロボット装置の非顔検出部を除いた顔検出タスク機能を示すブロック図である。
【図１２】（ａ）及び（ｂ）は、それぞれ入力画像（ウィンドウ画像）及びテンプレートを示す模式図である。
【図１３】入力画像（ウィンドウ画像）とテンプレートとから求めた相関値の集合であるマッチング結果画像を示す図である。
【図１４】本発明の実施の形態における顔検出装置のテンプレートマッチング部１２における処理工程を示すフローチャートである。
【符号の説明】
【０１８０】
１  ロボット装置、  １４  信号処理部、  １１  ＤＲＡＭ、  ２０  ＣＣＤカメラ、  ９０  入力画像スケール変換部、  ９１  ウィンドウ切出部、  ９２，１１２  テンプレートマッチング部、  ９３  スケール変換及び切出部、９４  前処理部、９５  パターン識別部、１０１  顔検出装置、１１１  入力画像部、１１３  顔識別部、１１４  スキントラッカ部、１１５  顔検出判定部、１２０  非顔判定部
【図１】
2005078376.tif 000005
【図２】
2005078376.tif 000006
【図３】
2005078376.tif 000007
【図４】
2005078376.tif 000008
【図５】
2005078376.tif 000009
【図６】
2005078376.tif 000010
【図７】
2005078376.tif 000011
【図８】
2005078376.tif 000012
【図９】
2005078376.tif 000013
【図１０】
2005078376.tif 000014
【図１１】
2005078376.tif 000015
【図１２】
2005078376.tif 000016
【図１３】
2005078376.tif 000017
【図１４】
2005078376.tif 000018