JP2004133637A - 顔検出装置、顔検出方法及びプログラム、並びにロボット装置 - Google Patents
顔検出装置、顔検出方法及びプログラム、並びにロボット装置 Download PDFInfo
- Publication number
- JP2004133637A JP2004133637A JP2002296783A JP2002296783A JP2004133637A JP 2004133637 A JP2004133637 A JP 2004133637A JP 2002296783 A JP2002296783 A JP 2002296783A JP 2002296783 A JP2002296783 A JP 2002296783A JP 2004133637 A JP2004133637 A JP 2004133637A
- Authority
- JP
- Japan
- Prior art keywords
- image
- face
- correlation
- input image
- template
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
【課題】顔が傾いたり向きが違ったりしているような非正面顔であっても、顔画像を高効率に検出する。
【解決手段】顔検出装置は、テンプレートマッチングにより顔検出する。入力画像が供給されると、前回の入力画像において顔検出された場合における回転角R_foundが存在するか否かが判定され、存在しない場合はテンプレート画像を使用して相関値を求め、この相関値に基づき判定部302において、顔検出する。顔検出できなかった場合、テンプレート画像を現在の状態から例えば90°回転する。そして、顔検出されるか、全ての回転角について、マッチングを行うまで一連の処理を繰り返す。一方、前回のテンプレート画像の回転角が記憶されている場合、その回転角で回転したテンプレート画像を使用し、入力画像に対してマッチングを行い、顔検出された場合は、そのときの回転角R=R_foundを記憶し、次の入力画像の処理を行う。
【選択図】 図1
【解決手段】顔検出装置は、テンプレートマッチングにより顔検出する。入力画像が供給されると、前回の入力画像において顔検出された場合における回転角R_foundが存在するか否かが判定され、存在しない場合はテンプレート画像を使用して相関値を求め、この相関値に基づき判定部302において、顔検出する。顔検出できなかった場合、テンプレート画像を現在の状態から例えば90°回転する。そして、顔検出されるか、全ての回転角について、マッチングを行うまで一連の処理を繰り返す。一方、前回のテンプレート画像の回転角が記憶されている場合、その回転角で回転したテンプレート画像を使用し、入力画像に対してマッチングを行い、顔検出された場合は、そのときの回転角R=R_foundを記憶し、次の入力画像の処理を行う。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、入力画像から対象物の顔を検出する顔検出装置、及び顔検出方法、並びに顔検出装置を搭載してエンターテインメント性の向上等を図ったロボット装置、並びに顔検出を行う動作をコンピュータに実行させるためのプログラムに関する。
【0002】
【従来の技術】
電気的又は磁気的な作用を用いて人間(生物)の動作に似た運動を行う機械装置を「ロボット」という。我が国においてロボットが普及し始めたのは、1960年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット等の産業用ロボット(Industrial
Robot)であった。
【0003】
最近では、人間のパートナーとして生活を支援する、即ち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボットの開発が進められている。このような実用ロボットは、産業用ロボットとは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように4足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット、或いは、2足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット(Humanoid Robot)等のロボット装置は、既に実用化されつつある。
【0004】
これらのロボット装置は、産業用ロボットと比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボットと呼称される場合もある。また、そのようなロボット装置には、CCD(Charge Coupled Device)カメラ及びマイクロホン等の各種外部センサが搭載され、これら外部センサの出力に基づいて外部状況を認識して、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【0005】
ところで、かかるエンターテインメント型のロボット装置において、対話中にその相手となる人間の顔や、移動中に視界内に入る人間の顔を検出して、その人間の顔を見ながら対話や動作を行うことができれば、人間が普段行う場合と同様に、その自然性から考えて最も望ましく、エンターテインメントロボット装置としてのエンターテインメント性をより一層向上させ得るものと考えられる。
【0006】
例えば、下記特許文献1には、顔の向き傾き及び表情等による顔パターンの変化に左右されることなく顔パターンを認識するための顔認識装置が開示されている。この特許文献1に記載の技術においては、顔認識装置は、同じ顔画像が入力され、この顔画像に対し夫々異なる変形を除去するための変換を施して正規化された顔パターンを出力する、互いに独立して動作可能な複数の逆変換部と、この逆変換部から出力された複数の顔パターンと、予め用意された複数の人物の参照パターンと比較して類似度を計算する識別部と、この識別結果に基づいて顔画像に対応する人物を特定する結合部とを備える。逆変換部が除去する変形は、顔の位置ずれ、顔のカメラに映りこむ大きさの違い、顔の上下左右の向きの違い、顔の傾きの違い等の変形要素の組み合わせからなり、変形がない顔領域として切り出した正方形領域を、画面に平行な軸周りの回転を考慮したり、画面に垂直な軸周りの回転を考慮したりした領域に変換する。これにより、顔が前後に傾いていたり、顔の向きが違っているような場合においても、その逆変換部にて逆変換すれば認識することができる。
【0007】
【特許文献1】
特開平12−090191号公報
【0008】
【発明が解決しようとする課題】
しかしながら、上述の特許文献1に記載の技術においては、予め想定される変形要素に対応した変形方法の数の逆変換部を設ける必要があり、装置が大型化するため、ロボット装置等の限られたリソースしか持たない装置に搭載するのは不向きである。また、顔の上下左右の向き又は傾き等の大きさを予め設定しておかなければならず、移動可能なロボット装置に搭載する場合、どれくらいの変形になるか予想できない場合等には認識率が低下する。例えば、上述の特許文献1においては、逆変換部では、予め設定する変形度合いにおいて、変形度合いが小さくなる可能性が大きく、変形度合いが大きくなる可能性が低いとして、変形度合いが小さく設定された逆変換部からの出力に対して識別部で算出された類似度ほど大きくなるような重みづけをして人物を特定しているが、ロボット装置に搭載された場合、ロボット装置が転倒すれば、撮影される顔画像は標準の顔パターンから大きく外れたものになるため、認識率が低下してしまう。一方、変形度合いが大きいほど、識別部で算出された類似度に対して大きい重み付けをした場合、変形により、元の顔パターンが別人に近い顔に変形されることになり、認識率が低下してしまう。
【0009】
本発明は、このような従来の実情に鑑みて提案されたものであり、顔が傾いたり向きが違っているような非正面顔であっても、高効率に検出可能な顔検出装置、顔検出方法及びプログラム並びにこれを搭載したロボット装置を提供することを目的とする。
【0010】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係る顔検出装置は、入力画像から対象物の顔を検出する顔検出装置において、入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段と備え、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めることを特徴とする。
【0011】
本発明においては、判定手段により入力画像に顔画像が含まれないと判定された場合には、テンプレート画像を所定角度回転させたテンプレート画像を使用して入力画像との相関を再び算出することにより、入力画像に含まれる顔画像が正面顔でない場合においても正面顔のテンプレート画像を使用して検出することができると共に、入力画像に顔画像が含まれると判定された場合には、判定時の回転角度(0°を含む)のテンプレート画像を使用して次の入力画像との相関を求めるため、マッチングの処理が高速化する。
【0012】
また、供給された入力情報に基づいて動作を行うロボット装置に搭載されることができ、例えばロボット装置が転倒した場合等で正面顔が撮影できないような状況においても顔検出を可能とする。
【0013】
更に、上記相関算出手段は、上記ロボット装置に備えられたロボット装置自身の姿勢を検出する姿勢検出手段からの姿勢検出結果に基づき、上記回転角度を決定してもよく、例えば転倒した場合、姿勢情報に基づき、テンプレート画像の回転角を推定することにより、テンプレート画像を順次回転させて顔を検出するより処理が更に高速化する。
【0014】
本発明に係る顔検出方法は、入力画像から対象物の顔を検出する顔検出装置の顔検出方法において、入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出工程と、上記相関に基づき、上記入力画像に顔画像が含まれるか否かを判定する判定工程とを有し、上記相関算出工程では、上記判定工程にて上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定工程にて上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関が求められることを特徴とする。
【0015】
また、本発明に係るプログラムは、上述した顔検出処理をコンピュータに実行させるものである。
【0016】
本発明に係るロボット装置は、供給された入力情報に基づいて動作を行うロボット装置において、画像を撮像する撮像部と、上記撮像部から供給される入力画像から対象物の顔を検出する顔検出部とを備え、上記顔検出部は、上記入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段とを有し、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めることを特徴とする。
【0017】
【発明の実施の形態】
(1)第1の実施の形態
本実施の形態における顔検出装置は、例えば後述するロボット装置に搭載することができる。以下、ロボット装置に搭載して周囲の人間の顔を認識するのに好適な顔検出装置について説明するが、ロボット装置の構成についての詳細は後述する。ロボット装置は、CCDカメラと、CCDカメラにより取得したフレーム画像を記憶するメモリと、このメモリに記憶されたフレーム画像の中から人間の顔画像を検出する顔検出タスク機能を有する顔検出モジュールとを備えている。テンプレート画像を使用した顔検出において、通常、テンプレートマッチングで使用される平均顔は、正面から撮影された一般的なものを使用して行うため、例えば、逆さから写した場合等、正面から写した顔以外(以下、非正面顔という。)を検出することが難しい。例えば、ロボット装置において、画像を取得するためのCCDカメラが例えばロボット装置の顔部に搭載されていると、転倒して仰向けになったロボット装置を使用者等が覗き込んだ際等に写される顔画像は、通常の正面顔とは逆方向、即ち、正面顔を画面に垂直な方向を軸として略180°回転した状態の非正面顔となる。このような非正面顔が撮影された場合であっても顔検出を可能とするため、本実施の形態においては、正面顔のテンプレート画像を使用しても顔検出できなかった場合は、テンプレート画像を所定の角度回転して使用すると共に、顔検出された場合は、その回転角度を記憶し、次の入力画像のマッチングの際は、記憶した回転角度で回転したテンプレート画像を使用してマッチングを行うものである。
【0018】
図1は、本発明の第1の本実施の形態における顔検出モジュールの機能を模式的に示すブロック図である。図1に示すように、画像検出モジュール300は、CCDカメラ等の撮像手段による撮像結果として得られるフレーム画像を入力画像とし、この入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求めるテンプレートマッチング部(相関手段)301と、相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定部302と、顔画像が含まれると判定された場合に、該顔画像を抽出する顔抽出部303とから構成される。
【0019】
テンプレートマッチング部301に供給される入力画像は、用意されたテンプレート画像における顔の大きさと一致させるため、フレーム画像を例えば複数のスケールに変換した後、所定の大きさに切り出した画像とすることができ、テンプレートマッチング部301は、各スケール毎の入力画像についてマッチングを行う。テンプレート画像としては、例えば100人程度の人物の平均からなる平均的な顔画像を使用することができる。本実施の形態においては、テンプレート画像は正面顔とし、このときの回転角R=0°とする。
【0020】
判定部302は、テンプレートマッチング部301におけるテンプレートマッチングにおいて、所定の閾値以上の相関値を示した場合にその入力画像に顔画像が含まれると判定し、顔抽出部303により、該当する顔領域を抽出する。
【0021】
ここで、判定部302において、いずれのマッチング結果も所定の閾値未満である場合は、入力画像にはテンプレート画像が示す顔が含まれていないと判定し、その判定結果をテンプレートマッチング部301に返す。マッチング部301は、入力画像に顔画像が含まれないと判定された場合、テンプレート画像を画面に垂直な方向を軸として所定角度回転し、入力画像に対して回転後の回転テンプレート画像を使用して再びテンプレートマッチングを行う。本実施の形態においては、顔画像が検出されなかった場合、テンプレート画像を画面に垂直な軸に対して所定方向に90°ずつ、即ち、回転角R=90°、180°、270°となるよう、顔が検出されるまでテンプレート画像を順次回転させた回転テンプレート画像を使用するものとする。なお、この回転方向は、右でも左でもよく、順次回転させる回転角は90°に限らず、例えば180°、45°等適宜設定するものとする。
【0022】
判定部302は、入力画像とR=90°として回転させた変形後のテンプレート画像とのマッチング結果を基に顔画像が含まれるか否かを判定する。そして、上述した如く、相関値が所定の閾値以上である場合、顔画像が含まれると判定する。顔画像が含まれると判定された場合は、その結果をテンプレートマッチング部301に入力し、テンプレートマッチング部301では、この顔画像が含まれると判定された回転角度(以下、R=R_foundという。)が記憶される。テンプレートマッチング部301は、顔画像が検出された際の回転角度を記憶し、その回転角度のテンプレート画像を使用して次回の入力画像に対してマッチングを行う。ここで、顔画像が検出されなかった場合は、更に90°回転させ、回転角R=180°としたテンプレート画像を使用して再びマッチングをとる。
【0023】
テンプレートマッチング部301に入力される画像は、例えば40msec等毎に撮影されたものであり、一旦顔画像が検出された場合、次の入力画像が入力されるまでの短い間では、その顔の方向が急には変わらないことを利用し、例えば、180°回転した状態の顔画像が検出された場合に、次回の入力画像においても、その回転角のテンプレート画像を使用して顔検出する方が、再び正面顔を順次回転させてテンプレートマッチングを行うのに比して、格段に処理効率が高いためでる。
【0024】
図2は、本実施の形態における顔検出方法を示すフローチャートである。図2に示すように、テンプレートマッチング部301に入力画像が供給されると(ステップS1)、前回の入力画像において顔検出された場合における回転角R_foundが存在するか否かが判定される(ステップS2)。ここで、前回の入力画像において、顔検出されてない場合は、回転角R_foundが存在しないため、テンプレート画像の回転角R=0°、即ち、正面顔のテンプレート画像を使用して相関値を求める(ステップS3)。そして、この相関値に基づき判定部302において、相関値が所定の閾値以上か否かを判定する(ステップS4)。ステップ4において、相関値が所定の閾値未満であるとき、顔検出できなかったものとし、テンプレート画像の回転が終了したか否か、即ち、例えば、所定方向に90°回転させる場合は、最初の状態から270°回転したが否かを判定し(ステップS5)、回転していない場合は、テンプレート画像を現在の状態から所定角度、即ち、本実施の形態においては、90°回転する(ステップS6)。そして、ステップS4で顔が検出されると判定されるまでか、又はステップS5で270°、即ち、全ての回転角について、テンプレートマッチングを行うまで一連の処理を繰り返す。
【0025】
一方、ステップS2において、前回の入力画像において顔画像が検出され、そのときのテンプレート画像の回転角R_foundが記憶されている場合、回転角をR_foundとたテンプレート画像を使用し、入力画像に対してマッチングを行う(ステップS7)。そして、上述のステップ4の顔検出判定に進む。
【0026】
ステップS4において、相関値が所定の閾値以上であり、顔検出されたと判定された場合は、そのときの回転角R=R_foundを記憶し(ステップS8)、ステップS1に戻り、次の入力画像の処理を行う。
【0027】
このように構成された本実施の形態においては、前回の入力画像で顔画像が検出された場合は、そのときのテンプレート画像の回転角を記憶しておき、この回転角としたテンプレート画像を使用して、次の入力画像に対してマッチングを行うため、マッチング処理が高速化する。また、正面顔のテンプレート画像を使用し、例えば回転角0°の正面顔でマッチングを行い、顔が検出できなかった場合に、例えば90°等、所定角度回転させて非正面顔としたテンプレート画像を使用して顔検出を行う動作を繰り返すことにより、正面顔のテンプレート画像のみを使用して、非正面顔を検出することが可能となり、極めて高効率で顔検出を行うことができる。
【0028】
ここで、非正面顔を検出しようとした際に全ての方向に対して演算を行う場合に比して演算量を低減するために、上述のように、所定角度ずつ順次回転させたテンプレート画像を使用するのではなく、例えば、回転角R=180°のテンプレート画像のみ等、所定の回転角のテンプレート画像のみのマッチングを行ってもよい。
【0029】
また、前回のマッチングにおいて、回転角R_foundが記憶されていた場合に、次の入力画像において、顔画像が検出されなかった場合は、回転角をR_foundから更に所定方向に90°回転させるものとしたが、再び回転角R=0°から処理を開始してもよい。また、本実施の形態においては、所定方向に90°回転するものとしたが、R=0°の次に、R=180°としたり、R=90°の次にR=270°としたりする等、適宜回転角度を選択できるようにしてもよい。
【0030】
更に、回転角R_foundが記憶されている場合に、上述したように、例えば入力画像は、例えば40msec間隔で入力されるような場合、次の入力画像においても、回転角R_foundで顔検出される可能性が高い。この際、次の入力画像において、回転角R_foundのテンプレート画像を使用しても顔検出できなかった場合、回転角R_found近傍で顔検出される可能性が高いため、回転角R_found±αとしたテンプレート画像を使用して顔検出を行ってもよい。
【0031】
更にまた、テンプレートマッチングにより顔検出されなかった場合、テンプレート画像を回転するものとしたが、R=0°のテンプレート画像と共に、例えばR=90°、180°、270°で回転した回転後のテンプレート画像を予め準備するようにしてもよい。
【0032】
(2)第2の実施の形態
次に、本発明の第2の実施の形態について説明する。本第2の実施の形態は、テンプレートマッチングの際に姿勢情報が供給され、これに基づき、得られる顔画像の回転角を予測し、テンプレート画像の回転角を選択するようにした点が上述の第1の実施の形態と異なる。
【0033】
即ち、ロボット装置には、自身の姿勢を検出する姿勢センサ等が設けられており、この姿勢センサからの姿勢情報がテンプレート画像マッチン部に供給される。上述したように、例えばロボット装置が転倒した場合、周囲の人間がそのロボット装置を覗き込む等すれば、ロボット装置が取得する画像、即ち、顔検出モジュールに供給される入力画像に含まれる顔画像は、通常の正面顔から画面に垂直な方向を軸として略180°回転したものとなることが予想される。従って、このような姿勢情報をテンプレートマッチング部に供給し、テンプレート画像の回転角を選択させるようにすることにより、処理が高速化する。
【0034】
図3は、本発明の第2の実施の形態における顔検出方法を示すフローチャートである。図3に示すように、入力画像が供給されると(ステップS11)、姿勢情報が供給されているか否かが判定される(ステップS12)。ここで、姿勢情報が供給されている場合は、その姿勢情報に基づき最も可能性が高いと考えられる回転角R_sensorを選択し、この回転角R_sensorのテンプレート画像を使用して、テンプレートマッチングを行い(ステップS20)、その結果、相関値が所定の閾値以上であるか否かが判定される(ステップS15)。
【0035】
一方、ステップS12において、姿勢情報が供給されてない場合は、上述の第1の実施の形態と同様の方法にて顔検出が行われる。即ち、前回の入力画像において顔検出された場合における回転角R_foundが存在するか否かが判定され(ステップS13)、回転角R_foundが存在しなければ、テンプレート画像の回転角R=0°、即ち、正面顔のテンプレート画像を使用して相関値を求める(ステップS14)。そして、この相関値に基づき判定部12において、相関値が所定の閾値以上か否かが判定され(ステップS15)、相関値が所定の閾値未満であるとき、顔検出できなかったものとし、テンプレート画像を正面顔であるR=0°から270°回転させたか否かを判定し(ステップS16)、回転していない場合はテンプレート画像を現在の状態から90°回転する(ステップS17)。そして、再びステップS14に戻り、テンプレートマッチングを行う。
【0036】
一方、ステップS13において、前回の入力画像において顔画像が検出され、そのときのテンプレート画像の回転角R_foundが記憶されている場合、回転角をR_foundとしたテンプレート画像を使用し、入力画像に対してマッチングを行い(ステップS18)、相関値が所定の閾値以上か否かを判定する(ステップS15)。
【0037】
ステップS15において、相関値が所定の閾値以上であり、顔検出されたと判定された場合は、そのときの回転角R=R_foundを記憶し(ステップS19)、ステップS1に戻り、次の入力画像の処理を行う。
【0038】
このように構成された本実施の形態においても、第1の実施の形態と同様に、前回の入力画像において顔検出された場合には、そのテンプレート画像の回転角R_foundを記憶しておき、この回転角R_foundのテンプレート画像を使用してマッチングを行うため、処理が高速化すると共に、姿勢情報が入力された場合は、姿勢情報に基づきテンプレート画像の回転角を予測し、この予測した回転角R_sensorのテンプレート画像を使用してマッチングを行うので、例えばロボット装置が転倒する等、急な動作にも対応して高効率で短時間に顔検出することが可能となる。
【0039】
(3)第1の適用例
次に、上述の第1及び第2の実施の形態で説明したようなテンプレートマッチングを適用して顔検出する本発明の第1の適用例について説明する(特願2002−163622号参照)。本適用例においてもロボット装置に設けられたものであり、ロボット装置の全体の制御を司るコントロール部及びその内部に設けられた内部メモリ等により、顔検出処理が行われるものであり、第1及び第2の実施の形態においては、テンプレートマッチングにおいて所定の閾値以上である場合は、該当する画像を顔画像として抽出するものとしたが、本適用例においては、テンプレート画像マチングにより顔画像と判定された後、これを顔候補とし、更に、サポートベクタマシン等の識別手段を使用して顔であるか否かを判定するものである。
【0040】
図4は、本発明の適用例を示す顔検出装置の機能を模式的に示すブロック図である。本適用例における顔検出タスク機能に関するコントロール部の処理内容を機能的に分類すると、図4に示すように、入力画像スケール変換部360、ウィンドウ切出部361、テンプレートマッチング部362、前処理部363、パターン識別部364及び重なり判定部365に分けることができる。
【0041】
入力画像スケール変換部360は、ロボット装置の頭部等に設けられたCCDカメラからの画像信号S1Aに基づくフレーム画像を内部メモリから読み出して、当該フレーム画像を縮小率が相異なる複数のスケール画像に変換する。この適用例の場合、25344(=176×144)画素からなるフレーム画像に対して、これを0.8倍ずつ順次縮小して5段階(1.0倍、0.8倍、0.64倍、0.51倍、0.41倍)のスケール画像(以下、これを第1〜第5のスケール画像と呼ぶ)に変換する。
【0042】
続くウィンドウ切出部361は、第1〜第5のスケール画像のうち、まず第1のスケール画像に対して、画像左上を起点として順に画像右下まで、適当な画素(例えば2画素)分を右側又は下側にずらしながらスキャンするようにして、400(=20×20)画素の矩形領域(以下、この領域をウィンドウ画像と呼ぶ。)を順次切り出す。
【0043】
その際、ウィンドウ切出部361は、第1のスケール画像から切り出した複数のウィンドウ画像のうち先頭のウィンドウ画像を後段のテンプレートマッチング部362に送出する。
【0044】
テンプレートマッチング部362は、ウィンドウ切出部361から得られた先頭のウィンドウ画像について、正規化相関法や誤差二乗法等の演算処理を実行してピーク値をもつ関数曲線に変換した後、当該関数曲線に対して認識性能が落ちない程度に十分に低い閾値を設定して、当該閾値を基準として当該ウィンドウ画像が顔画像か否かを判断する。この際、上述の第1及び第2の実施の形態において、説明した如く、顔が検出されない場合は、テンプレート画像を所定角度回転させ、再度テンプレートマッチングを行うと共に、前回の入力画像において顔検出されている場合には、そのとき回転角R_foundが記憶されており、この回転角R_foundのテンプレート画像を使用してマッチング処理を行う。
【0045】
本適用例の場合においても、テンプレートマッチング部362では、例えば100人程度の人物の平均からなる平均的な顔画像をテンプレート画像として、かかる顔画像か否かの判断基準となる閾値を設定するようになされている。これにより当該ウィンドウ画像について、テンプレート画像となる平均的な顔画像との大まかなマッチングをとり得るようになされている。
【0046】
このようにしてテンプレートマッチング部362は、ウィンドウ切出部361から得られたウィンドウ画像について、テンプレート画像によるマッチングをとり、顔画像であると判断された場合には、当該ウィンドウ画像をスコア画像として後段の前処理部363に送出する一方、顔画像でないと判断された場合には、当該ウィンドウ画像をそのまま後段の重なり判定部365に送出する。
【0047】
この時点で顔画像であると判断されたウィンドウ画像(スコア画像)には、実際には顔画像以外の判断誤りの画像が大量に含まれるが、日常のシーンの中では顔に類似した背景画像が多く存在することはあまりないため、ほとんどのウィンドウ画像は顔画像ではないと判断されることとなり極めて有効である。
【0048】
実際に上述した正規化相関法や誤差二乗法等の演算処理は、後段の前処理部及びパターン識別部における演算処理と比較すると、演算量が10分の1から100分の1程度で済むと共に、実験上この段階で顔画像以外の画像を80〔%〕以上はふるい落とすことができることが確認されたため、コントロール部全体としては大幅な演算量の削減につながることがわかる。
【0049】
前処理部363は、テンプレートマッチング部362から得られたスコア画像について、矩形領域でなる当該スコア画像から人間の顔画像とは無関係である背景部分に相当する4隅の領域を除去するために、当該4隅の領域を切り取ったマスクを用いて、400(=20×20)画素あるスコア画像から360画素分を抽出する。
【0050】
そして前処理部363は、撮像時の照明により濃淡で表される被写体の傾き条件を解消すべく、当該抽出した360画素分のスコア画像のうち顔画像として最適な部位を基準とする平面を形成するように、例えば平均二乗誤差(RSM:Root Mean Square)等による算出方法を用いて当該360画素の濃淡値に補正をかける。
【0051】
続いて前処理部363は、当該360画素分のスコア画像のコントラストを強調した結果をヒストグラム平滑化処理を行うことにより、CCDカメラ50のゲインや照明の強弱によらずに検出できるようにする。
【0052】
次いで、前処理部363は、ガボア・フィルタリング(Gabor Filtering)処理を行うことにより、当該360画素分のスコア画像をベクトル変換し、得られたベクトル群を更に1本のパターンベクトルに変換する。
【0053】
パターン識別部364は、外部から供給される学習用のデータすなわち教師データを用いて、暫定的な識別関数を得た後、当該識別関数を前処理部363からパターンベクトルとして得られた360画素分のスコア画像に試して顔の検出を行う。そして、検出に成功したものを顔データとして出力する。また検出に失敗したものを非顔データとして学習データに追加して、更に学習をし直す。
【0054】
パターン識別部364における顔認識に関して、例えば、パターン認識の分野で最も学習汎化能力が高いとされるサポートベクタマシン(Support Vector Machine:SVM)を用いて該当する顔か否かの識別を行うことができる。
【0055】
サポートベクタマシン自体に関しては、例えばB.sholkopf外著の報告(B.Sholkopf、C.Burges、A.Smola、Advance in Kernel Support Vector earning、The MIT Press、1999.)を挙げることができる。本願出願人が行った予備実験の結果からは、サポートベクタマシンによる顔認識方法は、主成分分析(PCA)やニューラル・ネットワークを用いる手法に比べ、良好な結果を示すことが判っている。
【0056】
そして、パターン識別部364は、前処理部363から与えられたスコア画像に基づくパターンベクトルについて、当該スコア画像内に顔データが存在するか否かを判断し、存在する場合のみ当該スコア画像の画像領域における左上位置(座標)及びその大きさ(縦横の画素数)と、当該スコア画像の切出し元となるスケール画像のフレーム画像に対する縮小率(すなわち上述の5段階のうちの該当する段階)とをリスト化し、これをリストデータとして内部メモリに格納する。
【0057】
この後、パターン識別部364は、ウィンドウ切出部361に対して、第1のスケール画像のうち先頭のウィンドウ画像の顔検出が終了した旨を通知することにより、当該ウィンドウ切出部361から第1のスケール画像のうち次にスキャンされたウィンドウ画像をテンプレートマッチング部362に送出させる。
【0058】
そしてテンプレートマッチング部362は、当該ウィンドウ画像がテンプレート画像にマッチングした場合のみスコア画像とし、そのときのテンプレート画像の回転角R_foundを記憶すると共に、上記スコア画像を前処理部363に送出する。前処理部363は、当該スコア画像をパターンベクトルに変換してパターン識別部364に送出する。パターン識別部364は、パターンベクトルから識別結果として得られた顔データに基づいてリストデータを生成して内部メモリに格納する。
【0059】
このようにウィンドウ切出部361おいて第1のスケール画像から切り出した全てのウィンドウ画像について、スキャン順にテンプレートマッチング部362、前処理部363及びパターン識別部364の各処理を行うことにより、当該第1のスケール画像から撮像結果に存在する顔画像を含むスコア画像を複数検出することができる。
【0060】
この後、パターン識別部364は、入力画像スケール変換部360に対して、第1のスケール画像の顔検出が終了した旨を通知することにより、当該入力画像スケール変換部360から第2のスケール画像をウィンドウ切出部361に送出させる。
【0061】
そして第2のスケール画像についても、上述した第1のスケール画像と同様の処理を行って、当該第2のスケール画像から撮像結果に存在する顔画像を含むスコア画像を複数検出した後、第3〜第5のスケール画像についても同様の処理を順次行う。テンプレートマッチング部362で記憶された回転角R_foundは、次の入力画像における同スケール画像とのマッチングをとる際に使用することができる。また、上述の第2の実施の形態と同様に、姿勢情報から推定される回転角R_sensorのテンプレート画像を使用してマッチングを行うようにしてもよい。
【0062】
かくしてパターン識別部364は、撮像画像であるフレーム画像を5段階に縮小した第1〜第5のスケール画像について、当該撮像画像内に存在する顔画像を含むスコア画像をそれぞれ複数検出した後、その結果得られた回転角R_foundを含むリストデータをそれぞれ内部メモリに格納する。この場合、元のフレーム画像内での顔画像のサイズによっては、全くスコア画像が得られない場合もあるが、少なくとも1以上(2又は3以上でもよい)のスケール画像でスコア画像が得られれば、顔検出処理を続行することとする。
【0063】
ここで、各スケール画像において顔画像を含む複数のスコア画像は、ウィンドウ切出部361におけるスキャンが2画素ずつすらして行われたため、実際に顔がある領域とその近傍領域とで高い相関性があり、隣接するスコア画像同士で相互に重なり合う画像領域を含むこととなる。
【0064】
そこで続く重なり判定部365は、内部メモリに格納されている第1〜第5のスケール画像ごとに複数のリストデータをそれぞれ読み出して、当該各リストデータに含まれるスコア画像同士を比較して、相互に重なり合う領域を含むか否かを判定する。
【0065】
重なり判定部365は、当該判定結果に基づいて、スコア画像同士で重なり合う領域を除去することにより、各スケール画像において、最終的に複数のスコア画像を互いに重なることなく寄せ集めた単一の画像領域として得ることができ、当該画像領域を顔決定データとして新たに内部メモリに格納する。
【0066】
また重なり判定部365は、テンプレートマッチング部62において顔画像でないと判断された場合には、そのまま何もすることなく、内部メモリの格納も行わない。
【0067】
次に、この適用例における動作について説明する。以上の構成において、このロボット装置では、CCDカメラにより撮像したフレーム画像を縮小率が相異なる複数のスケール画像に変換した後、当該各スケール画像の中からそれぞれ所定サイズのウィンドウ画像を所定画素ずつずらすようにスキャンしながら1枚ずつ切り出す。
【0068】
このウィンドウ画像について、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって大まかに顔画像であるか否かを判断するようにして、明らかに顔画像でないウィンドウ画像を除去することにより、後段の顔検出処理に要する演算量及び時間をその分減少させることができる。また、顔画像でないと判定された場合は、テンプレート画像を所定の回転角で順次回転させたテンプレート画像を使用しマッチングを行なうことにより、非正面顔であっても検出を可能にする。
【0069】
続いてテンプレートマッチングで顔画像であると判断されたウィンドウ画像(すなわちスコア画像)について、当該スコア画像の矩形領域の4隅部分を除去した後、濃淡補正及び続くコントラスト強調の平滑化を行い、更に1本のパターンベクトルに変換する。
【0070】
そして当該パターンベクトルについて、元のスコア画像内での顔検出を行って顔データ又は非顔データを判断し、顔データが存在するスコア画像の画像領域の位置(座標)及びその大きさ(画素数)と、当該スコア画像の切出し元となるスケール画像のフレーム画像に対する縮小率とをリスト化したリストデータを生成する。
【0071】
このように各スケール画像毎にそれぞれ全てのスコア画像についてリストデータを生成した後、当該各リストデータに含まれるスコア画像同士を比較して、相互に重なり合う領域を除去した顔決定データを求めることにより、元のフレーム画像から顔画像を検出することができる。
【0072】
このような顔検出タスク処理のうち特にテンプレートマッチング処理は、比較的構成が簡易な演算器にもたやすく実装できる上に、画像圧縮等で利用されるブロックマッチングの手法と類似する処理であることからCPUを用いた高速処理を行うハードウェアが数多く存在する。従ってテンプレートマッチング処理に関してはさらなる高速化が可能である。
【0073】
以上の構成によれば、このロボット装置において、CCDカメラにより撮像したフレーム画像について顔画像を検出する顔検出タスク処理の際、当該フレーム画像を相異なる縮小率で縮小した各スケール画像の中からそれぞれ所定サイズのウィンドウ画像を所定画素ずつずらすようにスキャンしながら1枚ずつ切り出した後、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって大まかに顔画像であるか否かを判断するようにして、明らかに顔画像でないウィンドウ画像を除去するようにしたことにより、当該テンプレートマッチングで顔画像であると判断されたスコア画像に対する種々の顔検出処理に要する演算量及び時間をその分減少させることができ、ロボット装置全体の制御を司る主制御部381の処理負担を軽減させることができ、かくしてリアルタイム性を格段と向上し得るロボット装置を実現できると共に、テンプレート画像を順次回転させてマッチングを行うため、非正面顔であっても見逃すことなく検出することができる。
【0074】
(4)第2の適用例
テンプレートマッチングを行って顔候補を抽出し(第1の工程)、この顔候補の中からSVM等により顔領域を判定して(第2の工程)顔領域を検出する方法において、第1の工程においては、単純に正規化相関値の代償により顔候補を決定しているため、顔候補の見逃しを軽減しようとした場合、閾値を上げる方法又は間引きを減らす方法をとることができるものの、閾値を下げると演算量が増大してしまい、ロボット装置等のリソースの限られた環境においては好ましくない場合がある。一方、閾値を上げると、第2の工程において顔判定するための候補画像が減るため、演算量を減らすことができるものの、本来顔である画像も候補画像から取り除いてしまい、顔画像を見逃してしまう場合がある。そこで、このような場合に好適な本発明の第2の適用例について説明する。
【0075】
テンプレート画像と同一サイズの顔領域(顔画像)が入力画像内に存在する場合、この顔画像とテンプレート画像との相関をとれば、テンプレート画像サイズ近傍では最も相関値が大きくなる。よって、顔領域の候補を絞り込む際に、局所的な絞り込みを行うアルゴリズムを使用することにより、本来顔である画像を見逃すことなく顔候補画像を低減して後段の第2の工程にて顔判定する計算量を低減することができる。具体的には、入力画像と所定サイズの平均顔のテンプレート画像との正規化相関をとった相関値の集合であるマッチング結果における相関値の局所最大値に基づき候補となる顔領域を抽出するようにする。
【0076】
即ち、図5(a)に示すように、任意のスケール画像から切り出した、例えば垂直方向の大きさ(y軸方向の辺の長さ、以下高さという。)hei_s×水平方向の大きさ(x軸方向の辺の長さ、以下幅という。)weid_sのウィンドウ画像(スケール変換後の入力画像)W2について、図5(b)に示すように、例えば高さhei_t×幅wid_sである第1のテンプレート画像サイズを有する平均的な顔画像であるテンプレート画像T21を使用し、ウィンドウ画像W2をスキャンし、所定画素(例えば1画素)ずつずらしながら移動させたテンプレート画像T21と上記入力画像との相関値の集合であるマッチング結果を求める。このマッチング結果は、テンプレート画像T21の移動に伴い相関値が2次元に配列されたものであり、図6に示すように、当該相関値を表す高さhei_r×幅wid_rのテンプレートマッチング結果画像R2が得られる。ここで、テンプレート画像レートマッチング結果画像R2の高さher_rは、hei_s−(hei_t+1)であり、画像R2の幅wid_sは、wid_s−(wid_t+1)となる。
【0077】
次に、このテンプレート画像レートマッチング結果画像R2を所定のサイズ、例えば第1のテンプレート画像サイズと同一の大きさに分割し、各第1のテンプレート画像サイズに仕切られた分割領域毎に相関値の最大値を有する点(位置)を求め、これら各分割領域から得られた最大値を示す点のうち、所定の閾値以上のものを顔候補として抽出する。
【0078】
即ち、平均顔のテンプレート画像を使用して正規化相関をしようした場合、必ずしも任意のパターンより、顔画像の方が相関値が高くなるという保証はないものの、テンプレート画像と同一のサイズの顔画像が存在する場合は、テンプレート画像サイズ近傍の大きさでは相関値が最大値をとることから、相関値が分割領域内で最大値となり、且つ所定の閾値以上の点を顔候補として抽出することにより、単にテンプレートマッチングの結果、相関値が所定の閾値以上であるものを顔候補として抽出する場合に比して、顔候補をより有効に絞り込むことができる。
【0079】
ここで、本第2の適用例においては、任意の大きさのテンプレート画像を使用することができるが、使用するテンプレート画像サイズを切り替えて、テンプレート画像サイズを選択することにより、入力画像に対して準備できる全てのテンプレート画像サイズに対して演算をする場合に比して、演算量を減らして高効率化することができる。例えば、一度顔が検出された場合に、次に顔検出する際はそのテンプレート画像サイズを使用することができる。また、例えば、ロボット装置に設けられた距離センサを使用し、この距離センサからの距離情報に基づき入力画像に含まれる対象物との間の距離を認識することにより、対象物の顔領域の大きさを予測してテンプレート画像サイズを選択する対象距離切り替え手段を設ける等することができ、目的に応じてテンプレート画像サイズを切り替えることができる。
【0080】
このウィンドウ画像について、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって当該テンプレート画像との相関値の集合であるマッチング結果画像を生成する。このように各スケール画像毎にそれぞれ全てのウィンドウ画像についてスキャン順にそれぞれマッチング結果画像を生成する。以下、マッチング結果画像から顔候補を検出する工程について詳細に説明する。
【0081】
図7は、テンプレートマッチング部において、テンプレートマッチング結果画像R2から顔候補となる画素を検出する各処理工程を示すフローチャートである。図7に示すように、先ず、テンプレートマッチング結果画像R2が入力されると、マッチング結果画像R2をテンプレート画像サイズに分割し、その分割領域の1つ、例えば0≦x≦wid_t−1、0≦y≦hei_t−1において、最も相関値が高い点(座標)を抽出する(ステップS21)。以下、マッチング結果画像R2をテンプレート画像サイズに分割した領域を分割領域rn、分割領域rnにおいて、相関値が最も大きい点(座標)をlocal_max(x,y)という。ここでは、この各分割領域内において最も相関値が高い画素を抽出するが、本適用例においては、マッチング結果画像において分割された分割領域を左から右へ一行ずつ順に処理を行う場合について説明する。
【0082】
次に、local_max(x,y)が所定の閾値(th1)より大きいか否かを判定し(ステップS22)、大きい場合は、顔候補として追加する(ステップS23)。本適用例における顔検出装置は、スケールと共に入力画像に含まれると想定される顔の大きさのテンプレート画像サイズを選択する手段を有しているが、テンプレート画像サイズは異なる大きさの複数種類あり、複数種類ある各テンプレート画像サイズ毎にマッチング結果画像R2を算出して顔候補を抽出すると、同一の点が抽出される場合がある。従って、ステップS23において、顔候補として同一の点がある場合、即ち、異なるテンプレート画像サイズで顔候補を抽出した際に既に抽出されている場合はこの点は追加しない。
【0083】
次に、顔候補として抽出された点に対応するテンプレート画像サイズの入力画像領域において、この画像領域内に含まれる肌色画素の占有率を求める。本適用例においては、肌色画素の占有率を求める際に、肌色カラーテーブル100を参照する。そして、この肌色画素占有率が所定の閾値(th2)より大きいか否かを判定する(ステップSP14)。大きい場合は、このlocal_max(x,y)の周辺、例えば上下左右の8近傍点を顔候補として追加する(ステップS25)。ここで、ステップS23と同様に、既にこれらの8近傍点が既に顔候補として抽出されている場合は、候補に追加しない。
【0084】
ステップS22でlocal_max(x,y)が閾値th1未満だった場合、ステップS24でlocal_max(x,y)に相当する入力画像における肌色画素占有率が閾値th2未満であった場合、及びステップS25で顔候補の追加が終了した後は、いずれもステップS26に進み、次の顔候補を抽出するために次の分割領域に移り、処理を進める。
【0085】
先ず、マッチング結果画像R2において、x方向にテンプレート画像サイズ分、即ち、wid_tだけずれた隣の分割領域に移る(ステップS26)。次に、wid_tだけずれたx座標(x+wid_t)の分割領域において、そのx座標がマッチング結果画像の幅(x方向の辺)wid_rより大きい場合は、分割領域がマッチング結果画像に含まれないことを示し、次の行に移り、0≦x≦wid_t−1であって、y方向にテンプレート画像サイズ分、即ち、hei_tだけずれた隣の分割領域に移る(ステップS28)。次に、分割領域のy座標がマッチング結果画像の高さ(y方向の辺)hei_rより大きいか否かを判定し(ステップS29)、大きい場合は、マッチング結果画像における全ての分割領域の相関値の最大値を求めたことを示し、処理を終了する。
【0086】
一方、ステップS27及びステップS28において、分割領域がマッチング結果画像に含まれると判定された場合は、再びステップS21に戻り、その分割領域内で最も高い相関値を有する点を抽出する。
【0087】
このようにマッチング結果画像R2をテンプレート画像サイズに区切った分割領域における相関値の最大値を求めているため、ステップS26において、隣接する分割領域に移る場合は、x方向にwid_tだけずれるものとしたが、マッチング結果画像R2は、テンプレート画像サイズ以下のサイズであれば、任意の大きさに分割することができる。その際、分割する画像の大きさの幅(x方向の辺)wid_step、高さ(y方向)hei_stepとすると、ステップS26及びステップS28において、夫々x方向にwid_step、又はy方向にhei_step移動することにより、次の分割領域に進むことができる。
【0088】
図8は、テンプレートマッチング部において、ウィンドウ画像W2から顔候補として検出された点を示す図である。図8において、白で示す点が、図6に示すマッチング結果画像R2から顔候補として抽出された点である。比較として、図9は、マッチング結果画像R2において、閾値以上である点を全て顔候補として抽出した例を示す図である。図9に示す図と比較すると、本適用例において、テンプレートマッチング部にて顔候補として抽出される点が飛躍的に少なくなっているのがわかる。これにより、後段の処理における計算量を飛躍的に削減することができる。また、第1の実施の形態と同様に、テンプレート画像マッチン部において顔候補が抽出されなかった場合、又は顔候補として抽出される点が所定の閾値未満であるときは、図5(c)に示すように、例えばテンプレート画像T21を180°回転させたテンプレート画像T22とする等、適宜テンプレート画像を回転させ、再度マッチングを行うことができる。更に、第2の実施の形態と同様に、姿勢情報からテンプレート画像の回転角を推定し、この推定した回転角のテンプレート画像を使用してマッチングを行うようにしてもよい。
【0089】
このように、ウィンドウ画像について、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって大まかに顔画像であるか否かを判断する際に、テンプレートマッチング結果画像を所定のサイズに仕切り、相関値の最大値を顔候補として抽出して明らかに顔画像でないウィンドウ画像を除去することにより、本来顔である領域を見逃すことなく、後段の顔検出処理に要する演算量及び時間を減少させることができ、かくしてリアルタイム性を格段と向上した顔検出装置及びこれを搭載したロボット装置を実現することができる。
【0090】
また、相関値が最大となる点と共にその周囲においても顔検索範囲とすることにより、顔検出精度を向上することができる。更に、所定の閾値以上の肌色占有率又は顔の色占有率を有する場合のみ、顔検索範囲として設定することにより、顔検出精度を保ちつつ顔候補を減らして後段の演算量を減らすことができる。更にまた、テンプレート画像のサイズを適宜切り替えることにより、更に演算量を減らすことができる。
【0091】
(5)ロボット装置の構成
次に、上述の第1及び第2の実施の形態におけるような顔検出モジュールを有するロボット装置について説明する。先ず、ロボット装置の構成について説明する。
【0092】
図10に示すように、本実施の形態におけるロボット装置1は、周囲環境(或いは外部刺激)や内部状態に応じて自律行動をする自律型のロボット装置であり、「犬」等の動物を模した形状のいわゆるペット型ロボットとされ、胴体部ユニット2の前後左右にそれぞれ脚部ユニット3A,3B,3C,3Dが連結されると共に、胴体部ユニット2の前端部に頭部ユニット4が連結されて構成されている。
【0093】
胴体部ユニット2には、図11に示すように、CPU(Central Processing Unit)10、DRAM(Dynamic Random Access Memory)11、フラッシュROM(Read Only Memory)12、PC(Personal Computer)カードインターフェイス回路13及び信号処理回路14が内部バス15を介して相互に接続されることにより形成されたコントロール部16と、このロボット装置1の動力源としてのバッテリ17とが収納されている。また、胴体部ユニット2には、ロボット装置1の向きや動きの加速度を検出するための角速度センサ18及び加速度センサ19が収納されている。また、胴体部ユニット2には、鳴き声等の音声又はメロディを出力するためのスピーカ20が、図10に示すように所定位置に配置されている。また、胴体部ユニット2の尻尾部5には、使用者からの操作入力を検出する検出機構としての操作スイッチ21が備えられている。操作スイッチ21は、使用者による操作の種類を検出できるスイッチであって、ロボット装置1は、操作スイッチ21によって検出される操作の種類に応じて、例えば「誉められた」か「叱られた」かを認識する。
【0094】
頭部ユニット4には、ロボット装置1の「目」に相当し、外部の状況や対象物の色、形、動き等を撮像するためのCCD(Charge Coupled Device)カメラ22と、前方に位置する対象物までの距離を測定するための距離センサ23と、ロボット装置1の左右の「耳」に相当し、外部音を集音するためのマイクロホン24と、例えばLED(Light Emitting Diode)を備えた発光部25等が、図10に示すように所定位置にそれぞれ配置されている。ただし、発光部25は、構成の説明等においては、必要に応じてLED25と示す。また、頭部ユニット4内部には、図10には図示しないが、ユーザの頭部ユニット4に対する接触を間接的に検出するための検出機構として頭部スイッチ26が備えられている。頭部スイッチ26は、例えば、使用者の接触によって頭部が動かされた場合、その傾き方向を検出できるスイッチであって、ロボット装置1は、頭部スイッチ26によって検出される頭部の傾き方向に応じて、「誉められた」か「叱られた」かを認識する。
【0095】
各脚部ユニット3A〜3Dの関節部分、各脚部ユニット3A〜3Dと胴体部ユニット2との連結部分、頭部ユニット4と胴体部ユニット2との連結部分には、自由度数分のアクチュエータ281〜28n及びポテンショメータ291〜29nがそれぞれ配設されている。アクチュエータ281〜28nは、例えば、サーボモータを備えている。サーボモータの駆動により、脚部ユニット3A〜3Dが制御されて目標の姿勢、或いは動作に遷移する。各脚部ユニット3A〜3Dの先端の「肉球」に相当する位置には、主としてユーザからの接触を検出する検出機構としての肉球スイッチ27A〜27Dが設けられ、ユーザによる接触等を検出できるようになっている。
【0096】
ロボット装置1は、この他にも、ここでは図示しないが、該ロボット装置1の内部状態とは別の動作状態(動作モード)を表すための発光部や、充電中、起動中、起動停止等、内部電源の状態を表す状態ランプ等を、適切な箇所に適宜備えていてもよい。
【0097】
そして、ロボット装置1において、操作スイッチ21、頭部スイッチ26及び肉球スイッチ27等の各種スイッチと、角速度センサ18、加速度センサ19、距離センサ23等の各種センサと、スピーカ20、マイク24、発光部25、各アクチュエータ281〜28n、各ポテンショメータ291〜29nは、それぞれ対応するハブ301〜30nを介してコントロール部16の信号処理回路14と接続されている。一方、CCDカメラ22及びバッテリ17は、それぞれ信号処理回路14と直接接続されている。
【0098】
信号処理回路14は、上述の各種スイッチから供給されるスイッチデータ、各種センサから供給されるセンサデータ、画像データ及び音声データを順次取り込み、これらをそれぞれ内部バス15を介してDRAM11内の所定位置に順次格納する。また信号処理回路14は、これとともにバッテリ17から供給されるバッテリ残量を表すバッテリ残量データを順次取り込み、DRAM11内の所定位置に格納する。
【0099】
このようにしてDRAM11に格納された各スイッチデータ、各センサデータ、画像データ、音声データ及びバッテリ残量データは、CPU10が当該ロボット装置1の動作制御を行う際に使用される。
【0100】
CPU10は、ロボット装置1の電源が投入された初期時において、フラッシュROM12に格納された制御プログラムを読み出して、DRAM11に格納する。又は、CPU10は、図10に図示しない胴体部ユニット2のPCカードスロットに装着された半導体メモリ装置、例えば、メモリカード31に格納された制御プログラムをPCカードインターフェイス回路13を介して読み出してDRAM11に格納する。
【0101】
CPU10は、上述のように信号処理回路14よりDRAM11に順次格納される各センサデータ、画像データ、音声データ、及びバッテリ残量データに基づいて自己及び周囲の状況や、使用者からの指示及び働きかけの有無を判断している。
【0102】
さらに、CPU10は、この判断結果及びDRAM11に格納した制御プログラムに基づいて続く行動を決定すると共に、当該決定結果に基づいて必要なアクチュエータ281〜28nを駆動させることにより、頭部ユニット4を上下左右に振らせたり、各脚部ユニット3A〜3Dを駆動させて歩行させるなどの行動を行わせる。
【0103】
また、この際CPU10は、必要に応じて音声データを生成し、これを信号処理回路14を介して音声信号としてスピーカ20に与えることにより当該音声信号に基づく音声を外部に出力させたり、上述の発光部25におけるLEDの点灯及び消灯を指示する信号を生成し、発光部25を点灯したり消灯したりする。
【0104】
このようにしてこのロボット装置1においては、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。
【0105】
(6)制御プログラムのソフトウェア構成
ここで、ロボット装置1における上述の制御プログラムのソフトウェア構成は、図12に示すようになる。この図12において、デバイス・ドライバ・レイヤ40は、この制御プログラムの最下位層に位置し、複数のデバイス・ドライバからなるデバイス・ドライバ・セット41から構成されている。この場合、各デバイス・ドライバは、CCDカメラ22(図11)やタイマ等の通常のコンピュータで用いられるハードウェアに直接アクセスすることを許されたオブジェクトであり、対応するハードウェアからの割り込みを受けて処理を行う。
【0106】
また、ロボティック・サーバ・オブジェクト42は、デバイス・ドライバ・レイヤ40の最下位層に位置し、例えば上述の各種センサやアクチュエータ281〜28n等のハードウェアにアクセスするためのインターフェースを提供するソフトウェア群でなるバーチャル・ロボット43と、電源の切換えなどを管理するソフトウェア群でなるパワーマネージャ44と、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ45と、ロボット装置1の機構を管理するソフトウェア群でなるデザインド・ロボット46とから構成されている。
【0107】
マネージャ・オブジェクト47は、オブジェクト・マネージャ48及びサービス・マネージャ49から構成されている。オブジェクト・マネージャ48は、ロボティック・サーバ・オブジェクト42、ミドル・ウェア・レイヤ50、及びアプリケーション・レイヤ51に含まれる各ソフトウェア群の起動や終了を管理するソフトウェア群であり、サービス・マネージャ49は、メモリカード31(図11)に格納されたコネクションファイルに記述されている各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
【0108】
ミドル・ウェア・レイヤ50は、ロボティック・サーバ・オブジェクト42の上位層に位置し、画像処理や音声処理などのこのロボット装置1の基本的な機能を提供するソフトウェア群から構成されている。また、アプリケーション・レイヤ51は、ミドル・ウェア・レイヤ50の上位層に位置し、当該ミドル・ウェア・レイヤ50を構成する各ソフトウェア群によって処理された処理結果に基づいてロボット装置1の行動を決定するためのソフトウェア群から構成されている。
【0109】
なお、ミドル・ウェア・レイヤ50及びアプリケーション・レイヤ51の具体なソフトウェア構成をそれぞれ図13に示す。
【0110】
ミドル・ウェア・レイヤ50は、図13に示すように、騒音検出用、温度検出用、明るさ検出用、音階認識用、距離検出用、姿勢検出用、接触検出用、操作入力検出用、動き検出用及び色認識用の各信号処理モジュール60〜69並びに入力セマンティクスコンバータモジュール70などを有する認識系71と、出力セマンティクスコンバータモジュール79並びに姿勢管理用、トラッキング用、モーション再生用、歩行用、転倒復帰用、LED点灯用及び音再生用の各信号処理モジュール72〜78などを有する出力系80とから構成されている。
【0111】
認識系71の各信号処理モジュール60〜69は、ロボティック・サーバ・オブジェクト42のバーチャル・ロボット43によりDRAM11(図11)から読み出される各センサデータや画像データ及び音声データのうちの対応するデータを取り込み、当該データに基づいて所定の処理を施して、処理結果を入力セマンティクスコンバータモジュール70に与える。ここで、例えば、バーチャル・ロボット43は、所定の通信規約によって、信号の授受或いは変換をする部分として構成されている。
【0112】
入力セマンティクスコンバータモジュール70は、これら各信号処理モジュール60〜69から与えられる処理結果に基づいて、「うるさい」、「暑い」、「明るい」、「ドミソの音階が聞こえた」、「障害物を検出した」、「転倒を検出した」、「叱られた」、「誉められた」、「動く物体を検出した」又は「ボールを検出した」などの自己及び周囲の状況や、使用者からの指令及び働きかけを認識し、認識結果をアプリケーション・レイヤ51(図11)に出力する。
【0113】
アプリケーション・レイヤ5lは、図14に示すように、行動モデルライブラリ90、行動切換モジュール91、学習モジュール92、感情モデル93及び本能モデル94の5つのモジュールから構成されている。
【0114】
行動モデルライブラリ90には、図15に示すように、「バッテリ残量が少なくなった場合」、「転倒復帰する」、「障害物を回避する場合」、「感情を表現する場合」、「ボールを検出した場合」などの予め選択されたいくつかの条件項目にそれぞれ対応させて、それぞれ独立した行動モデル901〜90nが設けられている。
【0115】
そして、これら行動モデル901〜90nは、それぞれ入力セマンティクスコンバータモジュール71から認識結果が与えられたときや、最後の認識結果が与えられてから一定時間が経過したときなどに、必要に応じて後述のように感情モデル93に保持されている対応する情動のパラメータ値や、本能モデル94に保持されている対応する欲求のパラメータ値を参照しながら続く行動をそれぞれ決定し、決定結果を行動切換モジュール91に出力する。
【0116】
なお、この実施の形態の場合、各行動モデル901〜90nは、次の行動を決定する手法として、図16に示すような1つのノード(状態)NODE0〜NODEnから他のどのノードNODE0〜NODEnに遷移するかを各ノードNODE0〜NODEnに間を接続するアークARC1〜ARCnに対してそれぞれ設定された遷移確率P1〜Pnに基づいて確率的に決定する有限確率オートマトンと呼ばれるアルゴリズムを用いる。
【0117】
具体的に、各行動モデル901〜90nは、それぞれ自己の行動モデル901〜90nを形成するノードNODE0〜NODEnにそれぞれ対応させて、これらノードNODE0〜NODEnごとに図17に示すような状態遷移表100を有している。
【0118】
この状態遷移表100では、そのノードNODE0〜NODEnにおいて遷移条件とする入力イベント(認識結果)が「入力イベント名」の列に優先順に列記され、その遷移条件についてのさらなる条件が「データ名」及び「データ範囲」の列における対応する行に記述されている。
【0119】
したがって、図17の状態遷移表100で表されるノードNODE100では、「ボールを検出(BALL)」という認識結果が与えられた場合に、当該認識結果と共に与えられるそのボールの「大きさ(SIZE)」が「0から1000」の範囲であることや、「障害物を検出(OBSTACLE)」という認識結果が与えられた場合に、当該認識結果と共に与えられるその障害物までの「距離(DISTANCE)」が「0から100」の範囲であることが他のノードに遷移するための条件となっている。
【0120】
また、このノードNODE100では、認識結果の入力がない場合においても、行動モデル901〜90nが周期的に参照する感情モデル93及び本能モデル94にそれぞれ保持された各情動及び各欲求のパラメータ値のうち、感情モデル93に保持された「喜び(JOY)」、「驚き(SURPRISE)」若しくは「悲しみ(SUDNESS)」のいずれかのパラメータ値が「50から100」の範囲であるときには他のノードに遷移することができるようになっている。
【0121】
また、状態遷移表100では、「他のノードヘの遷移確率」の欄における「遷移先ノード」の行にそのノードNODE0〜 NODEnから遷移できるノード名が列記されていると共に、「入力イベント名」、「データ値」及び「データの範囲」の列に記述された全ての条件が揃ったときに遷移できる他の各ノードNODE0〜NODEnへの遷移確率が「他のノードヘの遷移確率」の欄内の対応する箇所にそれぞれ記述され、そのノードNODE0〜NODEnに遷移する際に出力すべき行動が「他のノードヘの遷移確率」の欄における「出力行動」の行に記述されている。なお、「他のノードヘの遷移確率」の欄における各行の確率の和は100[%]となっている。
【0122】
したがって、図17の状態遷移表100で表されるノードNODE100では、例えば「ボールを検出(BALL)」し、そのボールの「SIZE(大きさ)」が「0から1000」の範囲であるという認識結果が与えられた場合には、「30[%]」の確率で「ノードNODE120(node 120)」に遷移でき、そのとき「ACTION1」の行動が出力されることとなる。
【0123】
各行動モデル901〜90nは、それぞれこのような状態遷移表100として記述されたノードNODE0〜NODEnがいくつも繋がるようにして構成されており、入力セマンティクスコンバータモジュール71から認識結果が与えられたときなどに、対応するノードNODE0〜NODEnの状態遷移表を利用して確率的に次の行動を決定し、決定結果を行動切換モジュール91に出力するようになされている。
【0124】
図14に示す行動切換モジュール91は、行動モデルライブラリ90の各行動モデル901〜90nからそれぞれ出力される行動のうち、予め定められた優先順位の高い行動モデル901〜90nから出力された行動を選択し、当該行動を実行すべき旨のコマンド(以下、これを行動コマンドという。)をミドル・ウェア・レイヤ50の出力セマンティクスコンバータモジュール79に送出する。なお、この実施の形態においては、図15において下側に表記された行動モデル901〜90nほど優先順位が高く設定されている。
【0125】
また、行動切換モジュール91は、行動完了後に出力セマンティクスコンバータモジュール79から与えられる行動完了情報に基づいて、その行動が完了したことを学習モジュール92、感情モデル93及び本能モデル94に通知する。
【0126】
一方、学習モジュール92は、入力セマンティクスコンバータモジュール71から与えられる認識結果のうち、「叱られた」や「誉められた」など、使用者からの働きかけとして受けた教示の認識結果を入力する。そして、学習モジュール92は、この認識結果及び行動切換モジュール91からの通知に基づいて、「叱られた」ときにはその行動の発現確率を低下させ、「誉められた」ときにはその行動の発現確率を上昇させるように、行動モデルライブラリ90における対応する行動モデル901〜90nの対応する遷移確率を変更する。
【0127】
他方、感情モデル93は、「喜び(joy)」、「悲しみ(sadness)」、「怒り(anger)」、「驚き(surprise)」、「嫌悪(disgust)」及び「恐れ(fear)」の合計6つの情動について、各情動ごとにその情動の強さを表すパラメータを保持している。そして、感情モデル93は、これら各情動のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール71から与えられる「叱られた」及び「誉められた」などの特定の認識結果と、経過時間及び行動切換モジュール91からの通知などに基づいて周期的に更新する。
【0128】
具体的には、感情モデル93は、入力セマンティクスコンバータモジュール71から与えられる認識結果と、そのときのロボット装置1の行動と、前回更新してからの経過時間などに基づいて所定の演算式により算出されるそのときのその情動の変動量を△E[t]、現在のその情動のパラメータ値をE[t]、その情動の感度を表す係数をkeとして、(1)式によって次の周期におけるその情動のパラメータ値E[t+1]を算出し、これを現在のその情動のパラメータ値E[t]と置き換えるようにしてその情動のパラメータ値を更新する。また、感情モデル73は、これと同様にして全ての情動のパラメータ値を更新する。
【0129】
【数1】
【0130】
なお、各認識結果や出力セマンティクスコンバータモジュール79からの通知が各情動のパラメータ値の変動量△E[t]にどの程度の影響を与えるかは予め決められており、例えば「叩かれた」といった認識結果は「怒り」の情動のパラメータ値の変動量△E[t]に大きな影響を与え、「撫でられた」といった認識結果は「喜び」の情動のパラメータ値の変動量△E[t]に大きな影響を与えるようになっている。
【0131】
ここで、出力セマンティクスコンバータモジュール79からの通知とは、いわゆる行動のフィードバック情報(行動完了情報)であり、行動の出現結果の情報であり、感情モデル93は、このような情報によっても感情を変化させる。これは、例えば、「吠える」といった行動により怒りの感情レベルが下がるといったようなことである。なお、出力セマンティクスコンバータモジュール79からの通知は、上述した学習モジュール92にも入力されており、学習モジュール92は、その通知に基づいて行動モデル901〜90nの対応する遷移確率を変更する。
【0132】
なお、行動結果のフィードバックは、行動切換モジュール91の出力(感情が付加された行動)によりなされるものであってもよい。
【0133】
一方、本能モデル94は、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求ごとにその欲求の強さを表すパラメータを保持している。そして、本能モデル94は、これらの欲求のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール71から与えられる認識結果や、経過時間及び行動切換モジュール91からの通知などに基づいて周期的に更新する。
【0134】
具体的には、本能モデル94は、「運動欲」、「愛情欲」及び「好奇心」については、認識結果、経過時間及び出力セマンティクスコンバータモジュール68からの通知などに基づいて所定の演算式により算出されるそのときのその欲求の変動量をΔI[k]、現在のその欲求のパラメータ値をI[k]、その欲求の感度を表す係数kiとして、所定周期で(2)式を用いて次の周期におけるその欲求のパラメータ値I[k+1]を算出し、この演算結果を現在のその欲求のパラメータ値I[k]と置き換えるようにしてその欲求のパラメータ値を更新する。また、本能モデル94は、これと同様にして「食欲」を除く各欲求のパラメータ値を更新する。
【0135】
【数2】
【0136】
なお、認識結果及び出力セマンティクスコンバータモジュール79からの通知などが各欲求のパラメータ値の変動量△I[k]にどの程度の影響を与えるかは予め決められており、例えば出力セマンティクスコンバータモジュール79からの通知は、「疲れ」のパラメータ値の変動量△I[k]に大きな影響を与えるようになっている。
【0137】
なお、本実施の形態においては、各情動及び各欲求(本能)のパラメータ値がそれぞれ0から100までの範囲で変動するように規制されており、また係数ke、kiの値も各情動及び各欲求ごとに個別に設定されている。
【0138】
一方、ミドル・ウェア・レイヤ50の出力セマンティクスコンバータモジュール79は、図13に示すように、上述のようにしてアプリケーション・レイヤ51の行動切換モジュール91から与えられる「前進」、「喜ぶ」、「鳴く」又は「トラッキング(ボールを追いかける)」といった抽象的な行動コマンドを出力系80の対応する信号処理モジュール72〜78に与える。
【0139】
そしてこれら信号処理モジュール72〜78は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ281〜28n(図11)に与えるべきサーボ指令値や、スピーカ20(図11)から出力する音の音声データ及び/又は発光部25(図11)のLEDに与える駆動データを生成し、これらのデータをロボティック・サーバ・オブジェクト42のバーチャル・ロボット43及び信号処理回路14(図11)を順次介して対応するアクチュエータ281〜28n、スピーカ20又は発光部25に順次送出する。
【0140】
このようにしてロボット装置1においては、制御プログラムに基づいて、自己(内部)及び周囲(外部)の状況や、使用者からの指示及び働きかけに応じた自律的な行動を行うことができるようになされている。
【0141】
このようなロボット装置1において、上述した顔検出処理は、ミドル・ウェア・レイヤ50の顔検出モジュール33において行うことができる。図18は、図11乃至図15に示すロボット装置において、顔検出により、その行動を制御するために必要な構成部分を取り出して示すブロック図である。
【0142】
上述したように、CCDカメラ22により撮像された画像データは、DRAM11の所定の場所に格納され、ロボティック・サーバ・オブジェクト42におけるバーチャル・ロボット43に供給される。このバーチャル・ロボット43は、画像データをDRAM11から読み出し、ミドル・ウェア・レイヤ50における顔検出モジュール33に供給する。顔検出モジュールでは、上述の第1及び第2の実施の形態において説明したような顔検出処理がなされ、その処理結果がアプリケーション・レイヤ51における行動モデルライブラリ90に供給されることにより、その処理結果がロボット装置の行動に反映される。
【0143】
即ち、行動モデルライブラリ90は、必要に応じて情動のパラメータ値や欲求のパラメータ値を参照しながら続く行動を決定し、決定結果を行動切換モジュール91に与える。そして、行動切換モジュール91は、当該決定結果に基づく行動コマンドをミドル・ウェア・レイヤ50の出力系80における歩行モジュール75に送出する。
【0144】
歩行モジュール75は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ281〜28nに与えるべきサーボ指令値を生成し、このデータをロボティック・サーバ・オブジェクト42のバーチャル・ロボット43及び信号処理回路14(図2)を順次介して対応するアクチュエータ281〜28nに順次送出する。この結果、ロボット装置1の行動が制御され、例えば対象物に対して近づく等の行動を発現する。
【0145】
例えば、ロボット装置1は、顔検出モジュール33の顔検出処理によって検出された顔画像の大きさ、方向等に基づき、検出された顔を有する対象物の方向を見たり、対象物に近くづくように移動することができる。そして、ロボット装置1は、検出した顔画像が正面顔であって、距離センサ23からの距離データから対象物に対して所定の範囲内に近づいたと判定した場合、移動を開始して所定の距離進んだ場合、又は接触検出モジュール66により接触が検出された場合等に、移動を停止するよう制御することができる。
【0146】
また、例えば、図11のCCDカメラ22により取得された画像データを基に、動体検出を行う動体検出手段を設け、動体検出手段により検出された動体の位置に基づく動体位置方向、又は、図11のマイククロホン24等の音声検出手段により、音声データを取得し、この音声データから音源方向を推定する音源方向推定手段を設け、音源方向推定手段により推定された音源方向等を、上述の顔検出結果に基づき移動制御する際に、利用するようにしてもよい。
【0147】
なお、上述の実施の形態においては、本発明を図10のように構成された4足歩行型のロボット装置1に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のロボット装置及びロボット装置以外のこの他種々の装置に広く適用することができる。例えば、ロボット装置は、2足歩行であってもよく、更に、移動手段は、脚式移動方式に限定されない。
【0148】
また、上述の実施の形態では、ソフトウェアの構成として説明したが、これに限定されるものではなく、これに限定されるものではなく、各機能をハードウェアで構成することも可能である。
【0149】
【発明の効果】
以上詳細に説明したように本発明に係る顔検出装置は、入力画像から対象物の顔を検出する顔検出装置において、入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段と備え、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めるので、入力画像に含まれる顔画像が、正面を向いていない非正面顔であっても、入力画像から顔画像を検出することができる。
【0150】
また、本発明に係るプログラムは、上述した顔検出処理をコンピュータに実行させるものあり、このようなプログラムによれば、上述した顔検出処理をソフトウェアにより実現することができる。
【0151】
更に、本発明に係るロボット装置は、供給された入力情報に基づいて動作を行うロボット装置において、画像を撮像する撮像部と、上記撮像部から供給される入力画像から対象物の顔を検出する顔検出部とを備え、上記顔検出部は、上記入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段とを有し、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めるので、顔検出対象となる人間等の対象物がロボット装置に対して正面を向いていない場合であっても、対象物の顔を検出し、対象物の方向に近づく等、顔検出結果に応じた行動を実行することができる。
【図面の簡単な説明】
【図1】本発明の第1の本実施の形態における顔検出モジュールの機能を模式的に示すブロック図である。
【図2】本実施の形態における顔検出方法を示すフローチャートである。
【図3】本発明の第2の実施の形態における顔検出方法を示すフローチャートである。
【図4】本発明の第1の適用例を示す顔検出装置の機能を模式的に示すブロック図である。
【図5】(a)及び(b)は、夫々入力画像(ウィンドウ画像)及びテンプレート画像を示す模式図である。
【図6】入力画像(ウィンドウ画像)とテンプレート画像とから求めた相関値の集合であるマッチング結果画像を示す図である。
【図7】本発明の第1の適用例におけるテンプレートマッチング結果画像から顔候補となる画素を検出する各処理工程を示すフローチャートである。
【図8】本発明の第1の適用例における顔検出装置のテンプレートマッチング部においてマッチング結果画像から顔候補を抽出した結果を示す図である。
【図9】マッチング結果画像において、所定の閾値以上のものを顔候補として抽出した結果を示す図である。
【図10】本発明の実施の形態におけるロボット装置の外観構成を示す斜視図である。
【図11】同ロボット装置の回路構成を示すブロック図である。
【図12】同ロボット装置のソフトウェア構成を示すブロック図である。
【図13】同ロボット装置のソフトウェア構成におけるミドル・ウェア・レイヤの構成を示すブロック図である。
【図14】同ロボット装置のソフトウェア構成におけるアプリケーション・レイヤの構成を示すブロック図である。
【図15】同アプリケーション・レイヤの行動モデルライブラリの構成を示すブロック図である。
【図16】同ロボット装置の行動決定のための情報となる有限確率オートマトンを説明するために使用した図である。
【図17】有限確率オートマトンの各ノードに用意された状態遷移表を示す図である。
【図18】図11乃至図15に示すロボット装置において、顔検出により、その行動を制御するために必要な構成部分を取り出して示すブロック図である。
【符号の説明】
1 ロボット装置、10 CPU、11 DRAM、14 信号処理回路、22 CCDカメラ、281〜28n アクチュエータ、33 顔検出モジュール、42 ロボティック・サーバ・オブジェクト、43 バーチャル・ロボット、50 ミドル・ウェア・レイヤ、51 アプリケーション・レイヤ、68 動き検出用信号処理モジュール、70 入力セマンティクスコンバータモジュール、71 認識系、73 トラッキング用信号処理モジュール、75 歩行モジュール、79 出力セマンティクスコンバータモジュール、80 出力系、90 行動モデルライブラリ、91 行動切換モジュール
【発明の属する技術分野】
本発明は、入力画像から対象物の顔を検出する顔検出装置、及び顔検出方法、並びに顔検出装置を搭載してエンターテインメント性の向上等を図ったロボット装置、並びに顔検出を行う動作をコンピュータに実行させるためのプログラムに関する。
【0002】
【従来の技術】
電気的又は磁気的な作用を用いて人間(生物)の動作に似た運動を行う機械装置を「ロボット」という。我が国においてロボットが普及し始めたのは、1960年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット等の産業用ロボット(Industrial
Robot)であった。
【0003】
最近では、人間のパートナーとして生活を支援する、即ち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボットの開発が進められている。このような実用ロボットは、産業用ロボットとは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように4足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット、或いは、2足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット(Humanoid Robot)等のロボット装置は、既に実用化されつつある。
【0004】
これらのロボット装置は、産業用ロボットと比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボットと呼称される場合もある。また、そのようなロボット装置には、CCD(Charge Coupled Device)カメラ及びマイクロホン等の各種外部センサが搭載され、これら外部センサの出力に基づいて外部状況を認識して、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【0005】
ところで、かかるエンターテインメント型のロボット装置において、対話中にその相手となる人間の顔や、移動中に視界内に入る人間の顔を検出して、その人間の顔を見ながら対話や動作を行うことができれば、人間が普段行う場合と同様に、その自然性から考えて最も望ましく、エンターテインメントロボット装置としてのエンターテインメント性をより一層向上させ得るものと考えられる。
【0006】
例えば、下記特許文献1には、顔の向き傾き及び表情等による顔パターンの変化に左右されることなく顔パターンを認識するための顔認識装置が開示されている。この特許文献1に記載の技術においては、顔認識装置は、同じ顔画像が入力され、この顔画像に対し夫々異なる変形を除去するための変換を施して正規化された顔パターンを出力する、互いに独立して動作可能な複数の逆変換部と、この逆変換部から出力された複数の顔パターンと、予め用意された複数の人物の参照パターンと比較して類似度を計算する識別部と、この識別結果に基づいて顔画像に対応する人物を特定する結合部とを備える。逆変換部が除去する変形は、顔の位置ずれ、顔のカメラに映りこむ大きさの違い、顔の上下左右の向きの違い、顔の傾きの違い等の変形要素の組み合わせからなり、変形がない顔領域として切り出した正方形領域を、画面に平行な軸周りの回転を考慮したり、画面に垂直な軸周りの回転を考慮したりした領域に変換する。これにより、顔が前後に傾いていたり、顔の向きが違っているような場合においても、その逆変換部にて逆変換すれば認識することができる。
【0007】
【特許文献1】
特開平12−090191号公報
【0008】
【発明が解決しようとする課題】
しかしながら、上述の特許文献1に記載の技術においては、予め想定される変形要素に対応した変形方法の数の逆変換部を設ける必要があり、装置が大型化するため、ロボット装置等の限られたリソースしか持たない装置に搭載するのは不向きである。また、顔の上下左右の向き又は傾き等の大きさを予め設定しておかなければならず、移動可能なロボット装置に搭載する場合、どれくらいの変形になるか予想できない場合等には認識率が低下する。例えば、上述の特許文献1においては、逆変換部では、予め設定する変形度合いにおいて、変形度合いが小さくなる可能性が大きく、変形度合いが大きくなる可能性が低いとして、変形度合いが小さく設定された逆変換部からの出力に対して識別部で算出された類似度ほど大きくなるような重みづけをして人物を特定しているが、ロボット装置に搭載された場合、ロボット装置が転倒すれば、撮影される顔画像は標準の顔パターンから大きく外れたものになるため、認識率が低下してしまう。一方、変形度合いが大きいほど、識別部で算出された類似度に対して大きい重み付けをした場合、変形により、元の顔パターンが別人に近い顔に変形されることになり、認識率が低下してしまう。
【0009】
本発明は、このような従来の実情に鑑みて提案されたものであり、顔が傾いたり向きが違っているような非正面顔であっても、高効率に検出可能な顔検出装置、顔検出方法及びプログラム並びにこれを搭載したロボット装置を提供することを目的とする。
【0010】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係る顔検出装置は、入力画像から対象物の顔を検出する顔検出装置において、入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段と備え、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めることを特徴とする。
【0011】
本発明においては、判定手段により入力画像に顔画像が含まれないと判定された場合には、テンプレート画像を所定角度回転させたテンプレート画像を使用して入力画像との相関を再び算出することにより、入力画像に含まれる顔画像が正面顔でない場合においても正面顔のテンプレート画像を使用して検出することができると共に、入力画像に顔画像が含まれると判定された場合には、判定時の回転角度(0°を含む)のテンプレート画像を使用して次の入力画像との相関を求めるため、マッチングの処理が高速化する。
【0012】
また、供給された入力情報に基づいて動作を行うロボット装置に搭載されることができ、例えばロボット装置が転倒した場合等で正面顔が撮影できないような状況においても顔検出を可能とする。
【0013】
更に、上記相関算出手段は、上記ロボット装置に備えられたロボット装置自身の姿勢を検出する姿勢検出手段からの姿勢検出結果に基づき、上記回転角度を決定してもよく、例えば転倒した場合、姿勢情報に基づき、テンプレート画像の回転角を推定することにより、テンプレート画像を順次回転させて顔を検出するより処理が更に高速化する。
【0014】
本発明に係る顔検出方法は、入力画像から対象物の顔を検出する顔検出装置の顔検出方法において、入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出工程と、上記相関に基づき、上記入力画像に顔画像が含まれるか否かを判定する判定工程とを有し、上記相関算出工程では、上記判定工程にて上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定工程にて上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関が求められることを特徴とする。
【0015】
また、本発明に係るプログラムは、上述した顔検出処理をコンピュータに実行させるものである。
【0016】
本発明に係るロボット装置は、供給された入力情報に基づいて動作を行うロボット装置において、画像を撮像する撮像部と、上記撮像部から供給される入力画像から対象物の顔を検出する顔検出部とを備え、上記顔検出部は、上記入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段とを有し、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めることを特徴とする。
【0017】
【発明の実施の形態】
(1)第1の実施の形態
本実施の形態における顔検出装置は、例えば後述するロボット装置に搭載することができる。以下、ロボット装置に搭載して周囲の人間の顔を認識するのに好適な顔検出装置について説明するが、ロボット装置の構成についての詳細は後述する。ロボット装置は、CCDカメラと、CCDカメラにより取得したフレーム画像を記憶するメモリと、このメモリに記憶されたフレーム画像の中から人間の顔画像を検出する顔検出タスク機能を有する顔検出モジュールとを備えている。テンプレート画像を使用した顔検出において、通常、テンプレートマッチングで使用される平均顔は、正面から撮影された一般的なものを使用して行うため、例えば、逆さから写した場合等、正面から写した顔以外(以下、非正面顔という。)を検出することが難しい。例えば、ロボット装置において、画像を取得するためのCCDカメラが例えばロボット装置の顔部に搭載されていると、転倒して仰向けになったロボット装置を使用者等が覗き込んだ際等に写される顔画像は、通常の正面顔とは逆方向、即ち、正面顔を画面に垂直な方向を軸として略180°回転した状態の非正面顔となる。このような非正面顔が撮影された場合であっても顔検出を可能とするため、本実施の形態においては、正面顔のテンプレート画像を使用しても顔検出できなかった場合は、テンプレート画像を所定の角度回転して使用すると共に、顔検出された場合は、その回転角度を記憶し、次の入力画像のマッチングの際は、記憶した回転角度で回転したテンプレート画像を使用してマッチングを行うものである。
【0018】
図1は、本発明の第1の本実施の形態における顔検出モジュールの機能を模式的に示すブロック図である。図1に示すように、画像検出モジュール300は、CCDカメラ等の撮像手段による撮像結果として得られるフレーム画像を入力画像とし、この入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求めるテンプレートマッチング部(相関手段)301と、相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定部302と、顔画像が含まれると判定された場合に、該顔画像を抽出する顔抽出部303とから構成される。
【0019】
テンプレートマッチング部301に供給される入力画像は、用意されたテンプレート画像における顔の大きさと一致させるため、フレーム画像を例えば複数のスケールに変換した後、所定の大きさに切り出した画像とすることができ、テンプレートマッチング部301は、各スケール毎の入力画像についてマッチングを行う。テンプレート画像としては、例えば100人程度の人物の平均からなる平均的な顔画像を使用することができる。本実施の形態においては、テンプレート画像は正面顔とし、このときの回転角R=0°とする。
【0020】
判定部302は、テンプレートマッチング部301におけるテンプレートマッチングにおいて、所定の閾値以上の相関値を示した場合にその入力画像に顔画像が含まれると判定し、顔抽出部303により、該当する顔領域を抽出する。
【0021】
ここで、判定部302において、いずれのマッチング結果も所定の閾値未満である場合は、入力画像にはテンプレート画像が示す顔が含まれていないと判定し、その判定結果をテンプレートマッチング部301に返す。マッチング部301は、入力画像に顔画像が含まれないと判定された場合、テンプレート画像を画面に垂直な方向を軸として所定角度回転し、入力画像に対して回転後の回転テンプレート画像を使用して再びテンプレートマッチングを行う。本実施の形態においては、顔画像が検出されなかった場合、テンプレート画像を画面に垂直な軸に対して所定方向に90°ずつ、即ち、回転角R=90°、180°、270°となるよう、顔が検出されるまでテンプレート画像を順次回転させた回転テンプレート画像を使用するものとする。なお、この回転方向は、右でも左でもよく、順次回転させる回転角は90°に限らず、例えば180°、45°等適宜設定するものとする。
【0022】
判定部302は、入力画像とR=90°として回転させた変形後のテンプレート画像とのマッチング結果を基に顔画像が含まれるか否かを判定する。そして、上述した如く、相関値が所定の閾値以上である場合、顔画像が含まれると判定する。顔画像が含まれると判定された場合は、その結果をテンプレートマッチング部301に入力し、テンプレートマッチング部301では、この顔画像が含まれると判定された回転角度(以下、R=R_foundという。)が記憶される。テンプレートマッチング部301は、顔画像が検出された際の回転角度を記憶し、その回転角度のテンプレート画像を使用して次回の入力画像に対してマッチングを行う。ここで、顔画像が検出されなかった場合は、更に90°回転させ、回転角R=180°としたテンプレート画像を使用して再びマッチングをとる。
【0023】
テンプレートマッチング部301に入力される画像は、例えば40msec等毎に撮影されたものであり、一旦顔画像が検出された場合、次の入力画像が入力されるまでの短い間では、その顔の方向が急には変わらないことを利用し、例えば、180°回転した状態の顔画像が検出された場合に、次回の入力画像においても、その回転角のテンプレート画像を使用して顔検出する方が、再び正面顔を順次回転させてテンプレートマッチングを行うのに比して、格段に処理効率が高いためでる。
【0024】
図2は、本実施の形態における顔検出方法を示すフローチャートである。図2に示すように、テンプレートマッチング部301に入力画像が供給されると(ステップS1)、前回の入力画像において顔検出された場合における回転角R_foundが存在するか否かが判定される(ステップS2)。ここで、前回の入力画像において、顔検出されてない場合は、回転角R_foundが存在しないため、テンプレート画像の回転角R=0°、即ち、正面顔のテンプレート画像を使用して相関値を求める(ステップS3)。そして、この相関値に基づき判定部302において、相関値が所定の閾値以上か否かを判定する(ステップS4)。ステップ4において、相関値が所定の閾値未満であるとき、顔検出できなかったものとし、テンプレート画像の回転が終了したか否か、即ち、例えば、所定方向に90°回転させる場合は、最初の状態から270°回転したが否かを判定し(ステップS5)、回転していない場合は、テンプレート画像を現在の状態から所定角度、即ち、本実施の形態においては、90°回転する(ステップS6)。そして、ステップS4で顔が検出されると判定されるまでか、又はステップS5で270°、即ち、全ての回転角について、テンプレートマッチングを行うまで一連の処理を繰り返す。
【0025】
一方、ステップS2において、前回の入力画像において顔画像が検出され、そのときのテンプレート画像の回転角R_foundが記憶されている場合、回転角をR_foundとたテンプレート画像を使用し、入力画像に対してマッチングを行う(ステップS7)。そして、上述のステップ4の顔検出判定に進む。
【0026】
ステップS4において、相関値が所定の閾値以上であり、顔検出されたと判定された場合は、そのときの回転角R=R_foundを記憶し(ステップS8)、ステップS1に戻り、次の入力画像の処理を行う。
【0027】
このように構成された本実施の形態においては、前回の入力画像で顔画像が検出された場合は、そのときのテンプレート画像の回転角を記憶しておき、この回転角としたテンプレート画像を使用して、次の入力画像に対してマッチングを行うため、マッチング処理が高速化する。また、正面顔のテンプレート画像を使用し、例えば回転角0°の正面顔でマッチングを行い、顔が検出できなかった場合に、例えば90°等、所定角度回転させて非正面顔としたテンプレート画像を使用して顔検出を行う動作を繰り返すことにより、正面顔のテンプレート画像のみを使用して、非正面顔を検出することが可能となり、極めて高効率で顔検出を行うことができる。
【0028】
ここで、非正面顔を検出しようとした際に全ての方向に対して演算を行う場合に比して演算量を低減するために、上述のように、所定角度ずつ順次回転させたテンプレート画像を使用するのではなく、例えば、回転角R=180°のテンプレート画像のみ等、所定の回転角のテンプレート画像のみのマッチングを行ってもよい。
【0029】
また、前回のマッチングにおいて、回転角R_foundが記憶されていた場合に、次の入力画像において、顔画像が検出されなかった場合は、回転角をR_foundから更に所定方向に90°回転させるものとしたが、再び回転角R=0°から処理を開始してもよい。また、本実施の形態においては、所定方向に90°回転するものとしたが、R=0°の次に、R=180°としたり、R=90°の次にR=270°としたりする等、適宜回転角度を選択できるようにしてもよい。
【0030】
更に、回転角R_foundが記憶されている場合に、上述したように、例えば入力画像は、例えば40msec間隔で入力されるような場合、次の入力画像においても、回転角R_foundで顔検出される可能性が高い。この際、次の入力画像において、回転角R_foundのテンプレート画像を使用しても顔検出できなかった場合、回転角R_found近傍で顔検出される可能性が高いため、回転角R_found±αとしたテンプレート画像を使用して顔検出を行ってもよい。
【0031】
更にまた、テンプレートマッチングにより顔検出されなかった場合、テンプレート画像を回転するものとしたが、R=0°のテンプレート画像と共に、例えばR=90°、180°、270°で回転した回転後のテンプレート画像を予め準備するようにしてもよい。
【0032】
(2)第2の実施の形態
次に、本発明の第2の実施の形態について説明する。本第2の実施の形態は、テンプレートマッチングの際に姿勢情報が供給され、これに基づき、得られる顔画像の回転角を予測し、テンプレート画像の回転角を選択するようにした点が上述の第1の実施の形態と異なる。
【0033】
即ち、ロボット装置には、自身の姿勢を検出する姿勢センサ等が設けられており、この姿勢センサからの姿勢情報がテンプレート画像マッチン部に供給される。上述したように、例えばロボット装置が転倒した場合、周囲の人間がそのロボット装置を覗き込む等すれば、ロボット装置が取得する画像、即ち、顔検出モジュールに供給される入力画像に含まれる顔画像は、通常の正面顔から画面に垂直な方向を軸として略180°回転したものとなることが予想される。従って、このような姿勢情報をテンプレートマッチング部に供給し、テンプレート画像の回転角を選択させるようにすることにより、処理が高速化する。
【0034】
図3は、本発明の第2の実施の形態における顔検出方法を示すフローチャートである。図3に示すように、入力画像が供給されると(ステップS11)、姿勢情報が供給されているか否かが判定される(ステップS12)。ここで、姿勢情報が供給されている場合は、その姿勢情報に基づき最も可能性が高いと考えられる回転角R_sensorを選択し、この回転角R_sensorのテンプレート画像を使用して、テンプレートマッチングを行い(ステップS20)、その結果、相関値が所定の閾値以上であるか否かが判定される(ステップS15)。
【0035】
一方、ステップS12において、姿勢情報が供給されてない場合は、上述の第1の実施の形態と同様の方法にて顔検出が行われる。即ち、前回の入力画像において顔検出された場合における回転角R_foundが存在するか否かが判定され(ステップS13)、回転角R_foundが存在しなければ、テンプレート画像の回転角R=0°、即ち、正面顔のテンプレート画像を使用して相関値を求める(ステップS14)。そして、この相関値に基づき判定部12において、相関値が所定の閾値以上か否かが判定され(ステップS15)、相関値が所定の閾値未満であるとき、顔検出できなかったものとし、テンプレート画像を正面顔であるR=0°から270°回転させたか否かを判定し(ステップS16)、回転していない場合はテンプレート画像を現在の状態から90°回転する(ステップS17)。そして、再びステップS14に戻り、テンプレートマッチングを行う。
【0036】
一方、ステップS13において、前回の入力画像において顔画像が検出され、そのときのテンプレート画像の回転角R_foundが記憶されている場合、回転角をR_foundとしたテンプレート画像を使用し、入力画像に対してマッチングを行い(ステップS18)、相関値が所定の閾値以上か否かを判定する(ステップS15)。
【0037】
ステップS15において、相関値が所定の閾値以上であり、顔検出されたと判定された場合は、そのときの回転角R=R_foundを記憶し(ステップS19)、ステップS1に戻り、次の入力画像の処理を行う。
【0038】
このように構成された本実施の形態においても、第1の実施の形態と同様に、前回の入力画像において顔検出された場合には、そのテンプレート画像の回転角R_foundを記憶しておき、この回転角R_foundのテンプレート画像を使用してマッチングを行うため、処理が高速化すると共に、姿勢情報が入力された場合は、姿勢情報に基づきテンプレート画像の回転角を予測し、この予測した回転角R_sensorのテンプレート画像を使用してマッチングを行うので、例えばロボット装置が転倒する等、急な動作にも対応して高効率で短時間に顔検出することが可能となる。
【0039】
(3)第1の適用例
次に、上述の第1及び第2の実施の形態で説明したようなテンプレートマッチングを適用して顔検出する本発明の第1の適用例について説明する(特願2002−163622号参照)。本適用例においてもロボット装置に設けられたものであり、ロボット装置の全体の制御を司るコントロール部及びその内部に設けられた内部メモリ等により、顔検出処理が行われるものであり、第1及び第2の実施の形態においては、テンプレートマッチングにおいて所定の閾値以上である場合は、該当する画像を顔画像として抽出するものとしたが、本適用例においては、テンプレート画像マチングにより顔画像と判定された後、これを顔候補とし、更に、サポートベクタマシン等の識別手段を使用して顔であるか否かを判定するものである。
【0040】
図4は、本発明の適用例を示す顔検出装置の機能を模式的に示すブロック図である。本適用例における顔検出タスク機能に関するコントロール部の処理内容を機能的に分類すると、図4に示すように、入力画像スケール変換部360、ウィンドウ切出部361、テンプレートマッチング部362、前処理部363、パターン識別部364及び重なり判定部365に分けることができる。
【0041】
入力画像スケール変換部360は、ロボット装置の頭部等に設けられたCCDカメラからの画像信号S1Aに基づくフレーム画像を内部メモリから読み出して、当該フレーム画像を縮小率が相異なる複数のスケール画像に変換する。この適用例の場合、25344(=176×144)画素からなるフレーム画像に対して、これを0.8倍ずつ順次縮小して5段階(1.0倍、0.8倍、0.64倍、0.51倍、0.41倍)のスケール画像(以下、これを第1〜第5のスケール画像と呼ぶ)に変換する。
【0042】
続くウィンドウ切出部361は、第1〜第5のスケール画像のうち、まず第1のスケール画像に対して、画像左上を起点として順に画像右下まで、適当な画素(例えば2画素)分を右側又は下側にずらしながらスキャンするようにして、400(=20×20)画素の矩形領域(以下、この領域をウィンドウ画像と呼ぶ。)を順次切り出す。
【0043】
その際、ウィンドウ切出部361は、第1のスケール画像から切り出した複数のウィンドウ画像のうち先頭のウィンドウ画像を後段のテンプレートマッチング部362に送出する。
【0044】
テンプレートマッチング部362は、ウィンドウ切出部361から得られた先頭のウィンドウ画像について、正規化相関法や誤差二乗法等の演算処理を実行してピーク値をもつ関数曲線に変換した後、当該関数曲線に対して認識性能が落ちない程度に十分に低い閾値を設定して、当該閾値を基準として当該ウィンドウ画像が顔画像か否かを判断する。この際、上述の第1及び第2の実施の形態において、説明した如く、顔が検出されない場合は、テンプレート画像を所定角度回転させ、再度テンプレートマッチングを行うと共に、前回の入力画像において顔検出されている場合には、そのとき回転角R_foundが記憶されており、この回転角R_foundのテンプレート画像を使用してマッチング処理を行う。
【0045】
本適用例の場合においても、テンプレートマッチング部362では、例えば100人程度の人物の平均からなる平均的な顔画像をテンプレート画像として、かかる顔画像か否かの判断基準となる閾値を設定するようになされている。これにより当該ウィンドウ画像について、テンプレート画像となる平均的な顔画像との大まかなマッチングをとり得るようになされている。
【0046】
このようにしてテンプレートマッチング部362は、ウィンドウ切出部361から得られたウィンドウ画像について、テンプレート画像によるマッチングをとり、顔画像であると判断された場合には、当該ウィンドウ画像をスコア画像として後段の前処理部363に送出する一方、顔画像でないと判断された場合には、当該ウィンドウ画像をそのまま後段の重なり判定部365に送出する。
【0047】
この時点で顔画像であると判断されたウィンドウ画像(スコア画像)には、実際には顔画像以外の判断誤りの画像が大量に含まれるが、日常のシーンの中では顔に類似した背景画像が多く存在することはあまりないため、ほとんどのウィンドウ画像は顔画像ではないと判断されることとなり極めて有効である。
【0048】
実際に上述した正規化相関法や誤差二乗法等の演算処理は、後段の前処理部及びパターン識別部における演算処理と比較すると、演算量が10分の1から100分の1程度で済むと共に、実験上この段階で顔画像以外の画像を80〔%〕以上はふるい落とすことができることが確認されたため、コントロール部全体としては大幅な演算量の削減につながることがわかる。
【0049】
前処理部363は、テンプレートマッチング部362から得られたスコア画像について、矩形領域でなる当該スコア画像から人間の顔画像とは無関係である背景部分に相当する4隅の領域を除去するために、当該4隅の領域を切り取ったマスクを用いて、400(=20×20)画素あるスコア画像から360画素分を抽出する。
【0050】
そして前処理部363は、撮像時の照明により濃淡で表される被写体の傾き条件を解消すべく、当該抽出した360画素分のスコア画像のうち顔画像として最適な部位を基準とする平面を形成するように、例えば平均二乗誤差(RSM:Root Mean Square)等による算出方法を用いて当該360画素の濃淡値に補正をかける。
【0051】
続いて前処理部363は、当該360画素分のスコア画像のコントラストを強調した結果をヒストグラム平滑化処理を行うことにより、CCDカメラ50のゲインや照明の強弱によらずに検出できるようにする。
【0052】
次いで、前処理部363は、ガボア・フィルタリング(Gabor Filtering)処理を行うことにより、当該360画素分のスコア画像をベクトル変換し、得られたベクトル群を更に1本のパターンベクトルに変換する。
【0053】
パターン識別部364は、外部から供給される学習用のデータすなわち教師データを用いて、暫定的な識別関数を得た後、当該識別関数を前処理部363からパターンベクトルとして得られた360画素分のスコア画像に試して顔の検出を行う。そして、検出に成功したものを顔データとして出力する。また検出に失敗したものを非顔データとして学習データに追加して、更に学習をし直す。
【0054】
パターン識別部364における顔認識に関して、例えば、パターン認識の分野で最も学習汎化能力が高いとされるサポートベクタマシン(Support Vector Machine:SVM)を用いて該当する顔か否かの識別を行うことができる。
【0055】
サポートベクタマシン自体に関しては、例えばB.sholkopf外著の報告(B.Sholkopf、C.Burges、A.Smola、Advance in Kernel Support Vector earning、The MIT Press、1999.)を挙げることができる。本願出願人が行った予備実験の結果からは、サポートベクタマシンによる顔認識方法は、主成分分析(PCA)やニューラル・ネットワークを用いる手法に比べ、良好な結果を示すことが判っている。
【0056】
そして、パターン識別部364は、前処理部363から与えられたスコア画像に基づくパターンベクトルについて、当該スコア画像内に顔データが存在するか否かを判断し、存在する場合のみ当該スコア画像の画像領域における左上位置(座標)及びその大きさ(縦横の画素数)と、当該スコア画像の切出し元となるスケール画像のフレーム画像に対する縮小率(すなわち上述の5段階のうちの該当する段階)とをリスト化し、これをリストデータとして内部メモリに格納する。
【0057】
この後、パターン識別部364は、ウィンドウ切出部361に対して、第1のスケール画像のうち先頭のウィンドウ画像の顔検出が終了した旨を通知することにより、当該ウィンドウ切出部361から第1のスケール画像のうち次にスキャンされたウィンドウ画像をテンプレートマッチング部362に送出させる。
【0058】
そしてテンプレートマッチング部362は、当該ウィンドウ画像がテンプレート画像にマッチングした場合のみスコア画像とし、そのときのテンプレート画像の回転角R_foundを記憶すると共に、上記スコア画像を前処理部363に送出する。前処理部363は、当該スコア画像をパターンベクトルに変換してパターン識別部364に送出する。パターン識別部364は、パターンベクトルから識別結果として得られた顔データに基づいてリストデータを生成して内部メモリに格納する。
【0059】
このようにウィンドウ切出部361おいて第1のスケール画像から切り出した全てのウィンドウ画像について、スキャン順にテンプレートマッチング部362、前処理部363及びパターン識別部364の各処理を行うことにより、当該第1のスケール画像から撮像結果に存在する顔画像を含むスコア画像を複数検出することができる。
【0060】
この後、パターン識別部364は、入力画像スケール変換部360に対して、第1のスケール画像の顔検出が終了した旨を通知することにより、当該入力画像スケール変換部360から第2のスケール画像をウィンドウ切出部361に送出させる。
【0061】
そして第2のスケール画像についても、上述した第1のスケール画像と同様の処理を行って、当該第2のスケール画像から撮像結果に存在する顔画像を含むスコア画像を複数検出した後、第3〜第5のスケール画像についても同様の処理を順次行う。テンプレートマッチング部362で記憶された回転角R_foundは、次の入力画像における同スケール画像とのマッチングをとる際に使用することができる。また、上述の第2の実施の形態と同様に、姿勢情報から推定される回転角R_sensorのテンプレート画像を使用してマッチングを行うようにしてもよい。
【0062】
かくしてパターン識別部364は、撮像画像であるフレーム画像を5段階に縮小した第1〜第5のスケール画像について、当該撮像画像内に存在する顔画像を含むスコア画像をそれぞれ複数検出した後、その結果得られた回転角R_foundを含むリストデータをそれぞれ内部メモリに格納する。この場合、元のフレーム画像内での顔画像のサイズによっては、全くスコア画像が得られない場合もあるが、少なくとも1以上(2又は3以上でもよい)のスケール画像でスコア画像が得られれば、顔検出処理を続行することとする。
【0063】
ここで、各スケール画像において顔画像を含む複数のスコア画像は、ウィンドウ切出部361におけるスキャンが2画素ずつすらして行われたため、実際に顔がある領域とその近傍領域とで高い相関性があり、隣接するスコア画像同士で相互に重なり合う画像領域を含むこととなる。
【0064】
そこで続く重なり判定部365は、内部メモリに格納されている第1〜第5のスケール画像ごとに複数のリストデータをそれぞれ読み出して、当該各リストデータに含まれるスコア画像同士を比較して、相互に重なり合う領域を含むか否かを判定する。
【0065】
重なり判定部365は、当該判定結果に基づいて、スコア画像同士で重なり合う領域を除去することにより、各スケール画像において、最終的に複数のスコア画像を互いに重なることなく寄せ集めた単一の画像領域として得ることができ、当該画像領域を顔決定データとして新たに内部メモリに格納する。
【0066】
また重なり判定部365は、テンプレートマッチング部62において顔画像でないと判断された場合には、そのまま何もすることなく、内部メモリの格納も行わない。
【0067】
次に、この適用例における動作について説明する。以上の構成において、このロボット装置では、CCDカメラにより撮像したフレーム画像を縮小率が相異なる複数のスケール画像に変換した後、当該各スケール画像の中からそれぞれ所定サイズのウィンドウ画像を所定画素ずつずらすようにスキャンしながら1枚ずつ切り出す。
【0068】
このウィンドウ画像について、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって大まかに顔画像であるか否かを判断するようにして、明らかに顔画像でないウィンドウ画像を除去することにより、後段の顔検出処理に要する演算量及び時間をその分減少させることができる。また、顔画像でないと判定された場合は、テンプレート画像を所定の回転角で順次回転させたテンプレート画像を使用しマッチングを行なうことにより、非正面顔であっても検出を可能にする。
【0069】
続いてテンプレートマッチングで顔画像であると判断されたウィンドウ画像(すなわちスコア画像)について、当該スコア画像の矩形領域の4隅部分を除去した後、濃淡補正及び続くコントラスト強調の平滑化を行い、更に1本のパターンベクトルに変換する。
【0070】
そして当該パターンベクトルについて、元のスコア画像内での顔検出を行って顔データ又は非顔データを判断し、顔データが存在するスコア画像の画像領域の位置(座標)及びその大きさ(画素数)と、当該スコア画像の切出し元となるスケール画像のフレーム画像に対する縮小率とをリスト化したリストデータを生成する。
【0071】
このように各スケール画像毎にそれぞれ全てのスコア画像についてリストデータを生成した後、当該各リストデータに含まれるスコア画像同士を比較して、相互に重なり合う領域を除去した顔決定データを求めることにより、元のフレーム画像から顔画像を検出することができる。
【0072】
このような顔検出タスク処理のうち特にテンプレートマッチング処理は、比較的構成が簡易な演算器にもたやすく実装できる上に、画像圧縮等で利用されるブロックマッチングの手法と類似する処理であることからCPUを用いた高速処理を行うハードウェアが数多く存在する。従ってテンプレートマッチング処理に関してはさらなる高速化が可能である。
【0073】
以上の構成によれば、このロボット装置において、CCDカメラにより撮像したフレーム画像について顔画像を検出する顔検出タスク処理の際、当該フレーム画像を相異なる縮小率で縮小した各スケール画像の中からそれぞれ所定サイズのウィンドウ画像を所定画素ずつずらすようにスキャンしながら1枚ずつ切り出した後、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって大まかに顔画像であるか否かを判断するようにして、明らかに顔画像でないウィンドウ画像を除去するようにしたことにより、当該テンプレートマッチングで顔画像であると判断されたスコア画像に対する種々の顔検出処理に要する演算量及び時間をその分減少させることができ、ロボット装置全体の制御を司る主制御部381の処理負担を軽減させることができ、かくしてリアルタイム性を格段と向上し得るロボット装置を実現できると共に、テンプレート画像を順次回転させてマッチングを行うため、非正面顔であっても見逃すことなく検出することができる。
【0074】
(4)第2の適用例
テンプレートマッチングを行って顔候補を抽出し(第1の工程)、この顔候補の中からSVM等により顔領域を判定して(第2の工程)顔領域を検出する方法において、第1の工程においては、単純に正規化相関値の代償により顔候補を決定しているため、顔候補の見逃しを軽減しようとした場合、閾値を上げる方法又は間引きを減らす方法をとることができるものの、閾値を下げると演算量が増大してしまい、ロボット装置等のリソースの限られた環境においては好ましくない場合がある。一方、閾値を上げると、第2の工程において顔判定するための候補画像が減るため、演算量を減らすことができるものの、本来顔である画像も候補画像から取り除いてしまい、顔画像を見逃してしまう場合がある。そこで、このような場合に好適な本発明の第2の適用例について説明する。
【0075】
テンプレート画像と同一サイズの顔領域(顔画像)が入力画像内に存在する場合、この顔画像とテンプレート画像との相関をとれば、テンプレート画像サイズ近傍では最も相関値が大きくなる。よって、顔領域の候補を絞り込む際に、局所的な絞り込みを行うアルゴリズムを使用することにより、本来顔である画像を見逃すことなく顔候補画像を低減して後段の第2の工程にて顔判定する計算量を低減することができる。具体的には、入力画像と所定サイズの平均顔のテンプレート画像との正規化相関をとった相関値の集合であるマッチング結果における相関値の局所最大値に基づき候補となる顔領域を抽出するようにする。
【0076】
即ち、図5(a)に示すように、任意のスケール画像から切り出した、例えば垂直方向の大きさ(y軸方向の辺の長さ、以下高さという。)hei_s×水平方向の大きさ(x軸方向の辺の長さ、以下幅という。)weid_sのウィンドウ画像(スケール変換後の入力画像)W2について、図5(b)に示すように、例えば高さhei_t×幅wid_sである第1のテンプレート画像サイズを有する平均的な顔画像であるテンプレート画像T21を使用し、ウィンドウ画像W2をスキャンし、所定画素(例えば1画素)ずつずらしながら移動させたテンプレート画像T21と上記入力画像との相関値の集合であるマッチング結果を求める。このマッチング結果は、テンプレート画像T21の移動に伴い相関値が2次元に配列されたものであり、図6に示すように、当該相関値を表す高さhei_r×幅wid_rのテンプレートマッチング結果画像R2が得られる。ここで、テンプレート画像レートマッチング結果画像R2の高さher_rは、hei_s−(hei_t+1)であり、画像R2の幅wid_sは、wid_s−(wid_t+1)となる。
【0077】
次に、このテンプレート画像レートマッチング結果画像R2を所定のサイズ、例えば第1のテンプレート画像サイズと同一の大きさに分割し、各第1のテンプレート画像サイズに仕切られた分割領域毎に相関値の最大値を有する点(位置)を求め、これら各分割領域から得られた最大値を示す点のうち、所定の閾値以上のものを顔候補として抽出する。
【0078】
即ち、平均顔のテンプレート画像を使用して正規化相関をしようした場合、必ずしも任意のパターンより、顔画像の方が相関値が高くなるという保証はないものの、テンプレート画像と同一のサイズの顔画像が存在する場合は、テンプレート画像サイズ近傍の大きさでは相関値が最大値をとることから、相関値が分割領域内で最大値となり、且つ所定の閾値以上の点を顔候補として抽出することにより、単にテンプレートマッチングの結果、相関値が所定の閾値以上であるものを顔候補として抽出する場合に比して、顔候補をより有効に絞り込むことができる。
【0079】
ここで、本第2の適用例においては、任意の大きさのテンプレート画像を使用することができるが、使用するテンプレート画像サイズを切り替えて、テンプレート画像サイズを選択することにより、入力画像に対して準備できる全てのテンプレート画像サイズに対して演算をする場合に比して、演算量を減らして高効率化することができる。例えば、一度顔が検出された場合に、次に顔検出する際はそのテンプレート画像サイズを使用することができる。また、例えば、ロボット装置に設けられた距離センサを使用し、この距離センサからの距離情報に基づき入力画像に含まれる対象物との間の距離を認識することにより、対象物の顔領域の大きさを予測してテンプレート画像サイズを選択する対象距離切り替え手段を設ける等することができ、目的に応じてテンプレート画像サイズを切り替えることができる。
【0080】
このウィンドウ画像について、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって当該テンプレート画像との相関値の集合であるマッチング結果画像を生成する。このように各スケール画像毎にそれぞれ全てのウィンドウ画像についてスキャン順にそれぞれマッチング結果画像を生成する。以下、マッチング結果画像から顔候補を検出する工程について詳細に説明する。
【0081】
図7は、テンプレートマッチング部において、テンプレートマッチング結果画像R2から顔候補となる画素を検出する各処理工程を示すフローチャートである。図7に示すように、先ず、テンプレートマッチング結果画像R2が入力されると、マッチング結果画像R2をテンプレート画像サイズに分割し、その分割領域の1つ、例えば0≦x≦wid_t−1、0≦y≦hei_t−1において、最も相関値が高い点(座標)を抽出する(ステップS21)。以下、マッチング結果画像R2をテンプレート画像サイズに分割した領域を分割領域rn、分割領域rnにおいて、相関値が最も大きい点(座標)をlocal_max(x,y)という。ここでは、この各分割領域内において最も相関値が高い画素を抽出するが、本適用例においては、マッチング結果画像において分割された分割領域を左から右へ一行ずつ順に処理を行う場合について説明する。
【0082】
次に、local_max(x,y)が所定の閾値(th1)より大きいか否かを判定し(ステップS22)、大きい場合は、顔候補として追加する(ステップS23)。本適用例における顔検出装置は、スケールと共に入力画像に含まれると想定される顔の大きさのテンプレート画像サイズを選択する手段を有しているが、テンプレート画像サイズは異なる大きさの複数種類あり、複数種類ある各テンプレート画像サイズ毎にマッチング結果画像R2を算出して顔候補を抽出すると、同一の点が抽出される場合がある。従って、ステップS23において、顔候補として同一の点がある場合、即ち、異なるテンプレート画像サイズで顔候補を抽出した際に既に抽出されている場合はこの点は追加しない。
【0083】
次に、顔候補として抽出された点に対応するテンプレート画像サイズの入力画像領域において、この画像領域内に含まれる肌色画素の占有率を求める。本適用例においては、肌色画素の占有率を求める際に、肌色カラーテーブル100を参照する。そして、この肌色画素占有率が所定の閾値(th2)より大きいか否かを判定する(ステップSP14)。大きい場合は、このlocal_max(x,y)の周辺、例えば上下左右の8近傍点を顔候補として追加する(ステップS25)。ここで、ステップS23と同様に、既にこれらの8近傍点が既に顔候補として抽出されている場合は、候補に追加しない。
【0084】
ステップS22でlocal_max(x,y)が閾値th1未満だった場合、ステップS24でlocal_max(x,y)に相当する入力画像における肌色画素占有率が閾値th2未満であった場合、及びステップS25で顔候補の追加が終了した後は、いずれもステップS26に進み、次の顔候補を抽出するために次の分割領域に移り、処理を進める。
【0085】
先ず、マッチング結果画像R2において、x方向にテンプレート画像サイズ分、即ち、wid_tだけずれた隣の分割領域に移る(ステップS26)。次に、wid_tだけずれたx座標(x+wid_t)の分割領域において、そのx座標がマッチング結果画像の幅(x方向の辺)wid_rより大きい場合は、分割領域がマッチング結果画像に含まれないことを示し、次の行に移り、0≦x≦wid_t−1であって、y方向にテンプレート画像サイズ分、即ち、hei_tだけずれた隣の分割領域に移る(ステップS28)。次に、分割領域のy座標がマッチング結果画像の高さ(y方向の辺)hei_rより大きいか否かを判定し(ステップS29)、大きい場合は、マッチング結果画像における全ての分割領域の相関値の最大値を求めたことを示し、処理を終了する。
【0086】
一方、ステップS27及びステップS28において、分割領域がマッチング結果画像に含まれると判定された場合は、再びステップS21に戻り、その分割領域内で最も高い相関値を有する点を抽出する。
【0087】
このようにマッチング結果画像R2をテンプレート画像サイズに区切った分割領域における相関値の最大値を求めているため、ステップS26において、隣接する分割領域に移る場合は、x方向にwid_tだけずれるものとしたが、マッチング結果画像R2は、テンプレート画像サイズ以下のサイズであれば、任意の大きさに分割することができる。その際、分割する画像の大きさの幅(x方向の辺)wid_step、高さ(y方向)hei_stepとすると、ステップS26及びステップS28において、夫々x方向にwid_step、又はy方向にhei_step移動することにより、次の分割領域に進むことができる。
【0088】
図8は、テンプレートマッチング部において、ウィンドウ画像W2から顔候補として検出された点を示す図である。図8において、白で示す点が、図6に示すマッチング結果画像R2から顔候補として抽出された点である。比較として、図9は、マッチング結果画像R2において、閾値以上である点を全て顔候補として抽出した例を示す図である。図9に示す図と比較すると、本適用例において、テンプレートマッチング部にて顔候補として抽出される点が飛躍的に少なくなっているのがわかる。これにより、後段の処理における計算量を飛躍的に削減することができる。また、第1の実施の形態と同様に、テンプレート画像マッチン部において顔候補が抽出されなかった場合、又は顔候補として抽出される点が所定の閾値未満であるときは、図5(c)に示すように、例えばテンプレート画像T21を180°回転させたテンプレート画像T22とする等、適宜テンプレート画像を回転させ、再度マッチングを行うことができる。更に、第2の実施の形態と同様に、姿勢情報からテンプレート画像の回転角を推定し、この推定した回転角のテンプレート画像を使用してマッチングを行うようにしてもよい。
【0089】
このように、ウィンドウ画像について、平均的な顔画像を表すテンプレート画像を用いてマッチングをとって大まかに顔画像であるか否かを判断する際に、テンプレートマッチング結果画像を所定のサイズに仕切り、相関値の最大値を顔候補として抽出して明らかに顔画像でないウィンドウ画像を除去することにより、本来顔である領域を見逃すことなく、後段の顔検出処理に要する演算量及び時間を減少させることができ、かくしてリアルタイム性を格段と向上した顔検出装置及びこれを搭載したロボット装置を実現することができる。
【0090】
また、相関値が最大となる点と共にその周囲においても顔検索範囲とすることにより、顔検出精度を向上することができる。更に、所定の閾値以上の肌色占有率又は顔の色占有率を有する場合のみ、顔検索範囲として設定することにより、顔検出精度を保ちつつ顔候補を減らして後段の演算量を減らすことができる。更にまた、テンプレート画像のサイズを適宜切り替えることにより、更に演算量を減らすことができる。
【0091】
(5)ロボット装置の構成
次に、上述の第1及び第2の実施の形態におけるような顔検出モジュールを有するロボット装置について説明する。先ず、ロボット装置の構成について説明する。
【0092】
図10に示すように、本実施の形態におけるロボット装置1は、周囲環境(或いは外部刺激)や内部状態に応じて自律行動をする自律型のロボット装置であり、「犬」等の動物を模した形状のいわゆるペット型ロボットとされ、胴体部ユニット2の前後左右にそれぞれ脚部ユニット3A,3B,3C,3Dが連結されると共に、胴体部ユニット2の前端部に頭部ユニット4が連結されて構成されている。
【0093】
胴体部ユニット2には、図11に示すように、CPU(Central Processing Unit)10、DRAM(Dynamic Random Access Memory)11、フラッシュROM(Read Only Memory)12、PC(Personal Computer)カードインターフェイス回路13及び信号処理回路14が内部バス15を介して相互に接続されることにより形成されたコントロール部16と、このロボット装置1の動力源としてのバッテリ17とが収納されている。また、胴体部ユニット2には、ロボット装置1の向きや動きの加速度を検出するための角速度センサ18及び加速度センサ19が収納されている。また、胴体部ユニット2には、鳴き声等の音声又はメロディを出力するためのスピーカ20が、図10に示すように所定位置に配置されている。また、胴体部ユニット2の尻尾部5には、使用者からの操作入力を検出する検出機構としての操作スイッチ21が備えられている。操作スイッチ21は、使用者による操作の種類を検出できるスイッチであって、ロボット装置1は、操作スイッチ21によって検出される操作の種類に応じて、例えば「誉められた」か「叱られた」かを認識する。
【0094】
頭部ユニット4には、ロボット装置1の「目」に相当し、外部の状況や対象物の色、形、動き等を撮像するためのCCD(Charge Coupled Device)カメラ22と、前方に位置する対象物までの距離を測定するための距離センサ23と、ロボット装置1の左右の「耳」に相当し、外部音を集音するためのマイクロホン24と、例えばLED(Light Emitting Diode)を備えた発光部25等が、図10に示すように所定位置にそれぞれ配置されている。ただし、発光部25は、構成の説明等においては、必要に応じてLED25と示す。また、頭部ユニット4内部には、図10には図示しないが、ユーザの頭部ユニット4に対する接触を間接的に検出するための検出機構として頭部スイッチ26が備えられている。頭部スイッチ26は、例えば、使用者の接触によって頭部が動かされた場合、その傾き方向を検出できるスイッチであって、ロボット装置1は、頭部スイッチ26によって検出される頭部の傾き方向に応じて、「誉められた」か「叱られた」かを認識する。
【0095】
各脚部ユニット3A〜3Dの関節部分、各脚部ユニット3A〜3Dと胴体部ユニット2との連結部分、頭部ユニット4と胴体部ユニット2との連結部分には、自由度数分のアクチュエータ281〜28n及びポテンショメータ291〜29nがそれぞれ配設されている。アクチュエータ281〜28nは、例えば、サーボモータを備えている。サーボモータの駆動により、脚部ユニット3A〜3Dが制御されて目標の姿勢、或いは動作に遷移する。各脚部ユニット3A〜3Dの先端の「肉球」に相当する位置には、主としてユーザからの接触を検出する検出機構としての肉球スイッチ27A〜27Dが設けられ、ユーザによる接触等を検出できるようになっている。
【0096】
ロボット装置1は、この他にも、ここでは図示しないが、該ロボット装置1の内部状態とは別の動作状態(動作モード)を表すための発光部や、充電中、起動中、起動停止等、内部電源の状態を表す状態ランプ等を、適切な箇所に適宜備えていてもよい。
【0097】
そして、ロボット装置1において、操作スイッチ21、頭部スイッチ26及び肉球スイッチ27等の各種スイッチと、角速度センサ18、加速度センサ19、距離センサ23等の各種センサと、スピーカ20、マイク24、発光部25、各アクチュエータ281〜28n、各ポテンショメータ291〜29nは、それぞれ対応するハブ301〜30nを介してコントロール部16の信号処理回路14と接続されている。一方、CCDカメラ22及びバッテリ17は、それぞれ信号処理回路14と直接接続されている。
【0098】
信号処理回路14は、上述の各種スイッチから供給されるスイッチデータ、各種センサから供給されるセンサデータ、画像データ及び音声データを順次取り込み、これらをそれぞれ内部バス15を介してDRAM11内の所定位置に順次格納する。また信号処理回路14は、これとともにバッテリ17から供給されるバッテリ残量を表すバッテリ残量データを順次取り込み、DRAM11内の所定位置に格納する。
【0099】
このようにしてDRAM11に格納された各スイッチデータ、各センサデータ、画像データ、音声データ及びバッテリ残量データは、CPU10が当該ロボット装置1の動作制御を行う際に使用される。
【0100】
CPU10は、ロボット装置1の電源が投入された初期時において、フラッシュROM12に格納された制御プログラムを読み出して、DRAM11に格納する。又は、CPU10は、図10に図示しない胴体部ユニット2のPCカードスロットに装着された半導体メモリ装置、例えば、メモリカード31に格納された制御プログラムをPCカードインターフェイス回路13を介して読み出してDRAM11に格納する。
【0101】
CPU10は、上述のように信号処理回路14よりDRAM11に順次格納される各センサデータ、画像データ、音声データ、及びバッテリ残量データに基づいて自己及び周囲の状況や、使用者からの指示及び働きかけの有無を判断している。
【0102】
さらに、CPU10は、この判断結果及びDRAM11に格納した制御プログラムに基づいて続く行動を決定すると共に、当該決定結果に基づいて必要なアクチュエータ281〜28nを駆動させることにより、頭部ユニット4を上下左右に振らせたり、各脚部ユニット3A〜3Dを駆動させて歩行させるなどの行動を行わせる。
【0103】
また、この際CPU10は、必要に応じて音声データを生成し、これを信号処理回路14を介して音声信号としてスピーカ20に与えることにより当該音声信号に基づく音声を外部に出力させたり、上述の発光部25におけるLEDの点灯及び消灯を指示する信号を生成し、発光部25を点灯したり消灯したりする。
【0104】
このようにしてこのロボット装置1においては、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。
【0105】
(6)制御プログラムのソフトウェア構成
ここで、ロボット装置1における上述の制御プログラムのソフトウェア構成は、図12に示すようになる。この図12において、デバイス・ドライバ・レイヤ40は、この制御プログラムの最下位層に位置し、複数のデバイス・ドライバからなるデバイス・ドライバ・セット41から構成されている。この場合、各デバイス・ドライバは、CCDカメラ22(図11)やタイマ等の通常のコンピュータで用いられるハードウェアに直接アクセスすることを許されたオブジェクトであり、対応するハードウェアからの割り込みを受けて処理を行う。
【0106】
また、ロボティック・サーバ・オブジェクト42は、デバイス・ドライバ・レイヤ40の最下位層に位置し、例えば上述の各種センサやアクチュエータ281〜28n等のハードウェアにアクセスするためのインターフェースを提供するソフトウェア群でなるバーチャル・ロボット43と、電源の切換えなどを管理するソフトウェア群でなるパワーマネージャ44と、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ45と、ロボット装置1の機構を管理するソフトウェア群でなるデザインド・ロボット46とから構成されている。
【0107】
マネージャ・オブジェクト47は、オブジェクト・マネージャ48及びサービス・マネージャ49から構成されている。オブジェクト・マネージャ48は、ロボティック・サーバ・オブジェクト42、ミドル・ウェア・レイヤ50、及びアプリケーション・レイヤ51に含まれる各ソフトウェア群の起動や終了を管理するソフトウェア群であり、サービス・マネージャ49は、メモリカード31(図11)に格納されたコネクションファイルに記述されている各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
【0108】
ミドル・ウェア・レイヤ50は、ロボティック・サーバ・オブジェクト42の上位層に位置し、画像処理や音声処理などのこのロボット装置1の基本的な機能を提供するソフトウェア群から構成されている。また、アプリケーション・レイヤ51は、ミドル・ウェア・レイヤ50の上位層に位置し、当該ミドル・ウェア・レイヤ50を構成する各ソフトウェア群によって処理された処理結果に基づいてロボット装置1の行動を決定するためのソフトウェア群から構成されている。
【0109】
なお、ミドル・ウェア・レイヤ50及びアプリケーション・レイヤ51の具体なソフトウェア構成をそれぞれ図13に示す。
【0110】
ミドル・ウェア・レイヤ50は、図13に示すように、騒音検出用、温度検出用、明るさ検出用、音階認識用、距離検出用、姿勢検出用、接触検出用、操作入力検出用、動き検出用及び色認識用の各信号処理モジュール60〜69並びに入力セマンティクスコンバータモジュール70などを有する認識系71と、出力セマンティクスコンバータモジュール79並びに姿勢管理用、トラッキング用、モーション再生用、歩行用、転倒復帰用、LED点灯用及び音再生用の各信号処理モジュール72〜78などを有する出力系80とから構成されている。
【0111】
認識系71の各信号処理モジュール60〜69は、ロボティック・サーバ・オブジェクト42のバーチャル・ロボット43によりDRAM11(図11)から読み出される各センサデータや画像データ及び音声データのうちの対応するデータを取り込み、当該データに基づいて所定の処理を施して、処理結果を入力セマンティクスコンバータモジュール70に与える。ここで、例えば、バーチャル・ロボット43は、所定の通信規約によって、信号の授受或いは変換をする部分として構成されている。
【0112】
入力セマンティクスコンバータモジュール70は、これら各信号処理モジュール60〜69から与えられる処理結果に基づいて、「うるさい」、「暑い」、「明るい」、「ドミソの音階が聞こえた」、「障害物を検出した」、「転倒を検出した」、「叱られた」、「誉められた」、「動く物体を検出した」又は「ボールを検出した」などの自己及び周囲の状況や、使用者からの指令及び働きかけを認識し、認識結果をアプリケーション・レイヤ51(図11)に出力する。
【0113】
アプリケーション・レイヤ5lは、図14に示すように、行動モデルライブラリ90、行動切換モジュール91、学習モジュール92、感情モデル93及び本能モデル94の5つのモジュールから構成されている。
【0114】
行動モデルライブラリ90には、図15に示すように、「バッテリ残量が少なくなった場合」、「転倒復帰する」、「障害物を回避する場合」、「感情を表現する場合」、「ボールを検出した場合」などの予め選択されたいくつかの条件項目にそれぞれ対応させて、それぞれ独立した行動モデル901〜90nが設けられている。
【0115】
そして、これら行動モデル901〜90nは、それぞれ入力セマンティクスコンバータモジュール71から認識結果が与えられたときや、最後の認識結果が与えられてから一定時間が経過したときなどに、必要に応じて後述のように感情モデル93に保持されている対応する情動のパラメータ値や、本能モデル94に保持されている対応する欲求のパラメータ値を参照しながら続く行動をそれぞれ決定し、決定結果を行動切換モジュール91に出力する。
【0116】
なお、この実施の形態の場合、各行動モデル901〜90nは、次の行動を決定する手法として、図16に示すような1つのノード(状態)NODE0〜NODEnから他のどのノードNODE0〜NODEnに遷移するかを各ノードNODE0〜NODEnに間を接続するアークARC1〜ARCnに対してそれぞれ設定された遷移確率P1〜Pnに基づいて確率的に決定する有限確率オートマトンと呼ばれるアルゴリズムを用いる。
【0117】
具体的に、各行動モデル901〜90nは、それぞれ自己の行動モデル901〜90nを形成するノードNODE0〜NODEnにそれぞれ対応させて、これらノードNODE0〜NODEnごとに図17に示すような状態遷移表100を有している。
【0118】
この状態遷移表100では、そのノードNODE0〜NODEnにおいて遷移条件とする入力イベント(認識結果)が「入力イベント名」の列に優先順に列記され、その遷移条件についてのさらなる条件が「データ名」及び「データ範囲」の列における対応する行に記述されている。
【0119】
したがって、図17の状態遷移表100で表されるノードNODE100では、「ボールを検出(BALL)」という認識結果が与えられた場合に、当該認識結果と共に与えられるそのボールの「大きさ(SIZE)」が「0から1000」の範囲であることや、「障害物を検出(OBSTACLE)」という認識結果が与えられた場合に、当該認識結果と共に与えられるその障害物までの「距離(DISTANCE)」が「0から100」の範囲であることが他のノードに遷移するための条件となっている。
【0120】
また、このノードNODE100では、認識結果の入力がない場合においても、行動モデル901〜90nが周期的に参照する感情モデル93及び本能モデル94にそれぞれ保持された各情動及び各欲求のパラメータ値のうち、感情モデル93に保持された「喜び(JOY)」、「驚き(SURPRISE)」若しくは「悲しみ(SUDNESS)」のいずれかのパラメータ値が「50から100」の範囲であるときには他のノードに遷移することができるようになっている。
【0121】
また、状態遷移表100では、「他のノードヘの遷移確率」の欄における「遷移先ノード」の行にそのノードNODE0〜 NODEnから遷移できるノード名が列記されていると共に、「入力イベント名」、「データ値」及び「データの範囲」の列に記述された全ての条件が揃ったときに遷移できる他の各ノードNODE0〜NODEnへの遷移確率が「他のノードヘの遷移確率」の欄内の対応する箇所にそれぞれ記述され、そのノードNODE0〜NODEnに遷移する際に出力すべき行動が「他のノードヘの遷移確率」の欄における「出力行動」の行に記述されている。なお、「他のノードヘの遷移確率」の欄における各行の確率の和は100[%]となっている。
【0122】
したがって、図17の状態遷移表100で表されるノードNODE100では、例えば「ボールを検出(BALL)」し、そのボールの「SIZE(大きさ)」が「0から1000」の範囲であるという認識結果が与えられた場合には、「30[%]」の確率で「ノードNODE120(node 120)」に遷移でき、そのとき「ACTION1」の行動が出力されることとなる。
【0123】
各行動モデル901〜90nは、それぞれこのような状態遷移表100として記述されたノードNODE0〜NODEnがいくつも繋がるようにして構成されており、入力セマンティクスコンバータモジュール71から認識結果が与えられたときなどに、対応するノードNODE0〜NODEnの状態遷移表を利用して確率的に次の行動を決定し、決定結果を行動切換モジュール91に出力するようになされている。
【0124】
図14に示す行動切換モジュール91は、行動モデルライブラリ90の各行動モデル901〜90nからそれぞれ出力される行動のうち、予め定められた優先順位の高い行動モデル901〜90nから出力された行動を選択し、当該行動を実行すべき旨のコマンド(以下、これを行動コマンドという。)をミドル・ウェア・レイヤ50の出力セマンティクスコンバータモジュール79に送出する。なお、この実施の形態においては、図15において下側に表記された行動モデル901〜90nほど優先順位が高く設定されている。
【0125】
また、行動切換モジュール91は、行動完了後に出力セマンティクスコンバータモジュール79から与えられる行動完了情報に基づいて、その行動が完了したことを学習モジュール92、感情モデル93及び本能モデル94に通知する。
【0126】
一方、学習モジュール92は、入力セマンティクスコンバータモジュール71から与えられる認識結果のうち、「叱られた」や「誉められた」など、使用者からの働きかけとして受けた教示の認識結果を入力する。そして、学習モジュール92は、この認識結果及び行動切換モジュール91からの通知に基づいて、「叱られた」ときにはその行動の発現確率を低下させ、「誉められた」ときにはその行動の発現確率を上昇させるように、行動モデルライブラリ90における対応する行動モデル901〜90nの対応する遷移確率を変更する。
【0127】
他方、感情モデル93は、「喜び(joy)」、「悲しみ(sadness)」、「怒り(anger)」、「驚き(surprise)」、「嫌悪(disgust)」及び「恐れ(fear)」の合計6つの情動について、各情動ごとにその情動の強さを表すパラメータを保持している。そして、感情モデル93は、これら各情動のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール71から与えられる「叱られた」及び「誉められた」などの特定の認識結果と、経過時間及び行動切換モジュール91からの通知などに基づいて周期的に更新する。
【0128】
具体的には、感情モデル93は、入力セマンティクスコンバータモジュール71から与えられる認識結果と、そのときのロボット装置1の行動と、前回更新してからの経過時間などに基づいて所定の演算式により算出されるそのときのその情動の変動量を△E[t]、現在のその情動のパラメータ値をE[t]、その情動の感度を表す係数をkeとして、(1)式によって次の周期におけるその情動のパラメータ値E[t+1]を算出し、これを現在のその情動のパラメータ値E[t]と置き換えるようにしてその情動のパラメータ値を更新する。また、感情モデル73は、これと同様にして全ての情動のパラメータ値を更新する。
【0129】
【数1】
【0130】
なお、各認識結果や出力セマンティクスコンバータモジュール79からの通知が各情動のパラメータ値の変動量△E[t]にどの程度の影響を与えるかは予め決められており、例えば「叩かれた」といった認識結果は「怒り」の情動のパラメータ値の変動量△E[t]に大きな影響を与え、「撫でられた」といった認識結果は「喜び」の情動のパラメータ値の変動量△E[t]に大きな影響を与えるようになっている。
【0131】
ここで、出力セマンティクスコンバータモジュール79からの通知とは、いわゆる行動のフィードバック情報(行動完了情報)であり、行動の出現結果の情報であり、感情モデル93は、このような情報によっても感情を変化させる。これは、例えば、「吠える」といった行動により怒りの感情レベルが下がるといったようなことである。なお、出力セマンティクスコンバータモジュール79からの通知は、上述した学習モジュール92にも入力されており、学習モジュール92は、その通知に基づいて行動モデル901〜90nの対応する遷移確率を変更する。
【0132】
なお、行動結果のフィードバックは、行動切換モジュール91の出力(感情が付加された行動)によりなされるものであってもよい。
【0133】
一方、本能モデル94は、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求ごとにその欲求の強さを表すパラメータを保持している。そして、本能モデル94は、これらの欲求のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール71から与えられる認識結果や、経過時間及び行動切換モジュール91からの通知などに基づいて周期的に更新する。
【0134】
具体的には、本能モデル94は、「運動欲」、「愛情欲」及び「好奇心」については、認識結果、経過時間及び出力セマンティクスコンバータモジュール68からの通知などに基づいて所定の演算式により算出されるそのときのその欲求の変動量をΔI[k]、現在のその欲求のパラメータ値をI[k]、その欲求の感度を表す係数kiとして、所定周期で(2)式を用いて次の周期におけるその欲求のパラメータ値I[k+1]を算出し、この演算結果を現在のその欲求のパラメータ値I[k]と置き換えるようにしてその欲求のパラメータ値を更新する。また、本能モデル94は、これと同様にして「食欲」を除く各欲求のパラメータ値を更新する。
【0135】
【数2】
【0136】
なお、認識結果及び出力セマンティクスコンバータモジュール79からの通知などが各欲求のパラメータ値の変動量△I[k]にどの程度の影響を与えるかは予め決められており、例えば出力セマンティクスコンバータモジュール79からの通知は、「疲れ」のパラメータ値の変動量△I[k]に大きな影響を与えるようになっている。
【0137】
なお、本実施の形態においては、各情動及び各欲求(本能)のパラメータ値がそれぞれ0から100までの範囲で変動するように規制されており、また係数ke、kiの値も各情動及び各欲求ごとに個別に設定されている。
【0138】
一方、ミドル・ウェア・レイヤ50の出力セマンティクスコンバータモジュール79は、図13に示すように、上述のようにしてアプリケーション・レイヤ51の行動切換モジュール91から与えられる「前進」、「喜ぶ」、「鳴く」又は「トラッキング(ボールを追いかける)」といった抽象的な行動コマンドを出力系80の対応する信号処理モジュール72〜78に与える。
【0139】
そしてこれら信号処理モジュール72〜78は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ281〜28n(図11)に与えるべきサーボ指令値や、スピーカ20(図11)から出力する音の音声データ及び/又は発光部25(図11)のLEDに与える駆動データを生成し、これらのデータをロボティック・サーバ・オブジェクト42のバーチャル・ロボット43及び信号処理回路14(図11)を順次介して対応するアクチュエータ281〜28n、スピーカ20又は発光部25に順次送出する。
【0140】
このようにしてロボット装置1においては、制御プログラムに基づいて、自己(内部)及び周囲(外部)の状況や、使用者からの指示及び働きかけに応じた自律的な行動を行うことができるようになされている。
【0141】
このようなロボット装置1において、上述した顔検出処理は、ミドル・ウェア・レイヤ50の顔検出モジュール33において行うことができる。図18は、図11乃至図15に示すロボット装置において、顔検出により、その行動を制御するために必要な構成部分を取り出して示すブロック図である。
【0142】
上述したように、CCDカメラ22により撮像された画像データは、DRAM11の所定の場所に格納され、ロボティック・サーバ・オブジェクト42におけるバーチャル・ロボット43に供給される。このバーチャル・ロボット43は、画像データをDRAM11から読み出し、ミドル・ウェア・レイヤ50における顔検出モジュール33に供給する。顔検出モジュールでは、上述の第1及び第2の実施の形態において説明したような顔検出処理がなされ、その処理結果がアプリケーション・レイヤ51における行動モデルライブラリ90に供給されることにより、その処理結果がロボット装置の行動に反映される。
【0143】
即ち、行動モデルライブラリ90は、必要に応じて情動のパラメータ値や欲求のパラメータ値を参照しながら続く行動を決定し、決定結果を行動切換モジュール91に与える。そして、行動切換モジュール91は、当該決定結果に基づく行動コマンドをミドル・ウェア・レイヤ50の出力系80における歩行モジュール75に送出する。
【0144】
歩行モジュール75は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ281〜28nに与えるべきサーボ指令値を生成し、このデータをロボティック・サーバ・オブジェクト42のバーチャル・ロボット43及び信号処理回路14(図2)を順次介して対応するアクチュエータ281〜28nに順次送出する。この結果、ロボット装置1の行動が制御され、例えば対象物に対して近づく等の行動を発現する。
【0145】
例えば、ロボット装置1は、顔検出モジュール33の顔検出処理によって検出された顔画像の大きさ、方向等に基づき、検出された顔を有する対象物の方向を見たり、対象物に近くづくように移動することができる。そして、ロボット装置1は、検出した顔画像が正面顔であって、距離センサ23からの距離データから対象物に対して所定の範囲内に近づいたと判定した場合、移動を開始して所定の距離進んだ場合、又は接触検出モジュール66により接触が検出された場合等に、移動を停止するよう制御することができる。
【0146】
また、例えば、図11のCCDカメラ22により取得された画像データを基に、動体検出を行う動体検出手段を設け、動体検出手段により検出された動体の位置に基づく動体位置方向、又は、図11のマイククロホン24等の音声検出手段により、音声データを取得し、この音声データから音源方向を推定する音源方向推定手段を設け、音源方向推定手段により推定された音源方向等を、上述の顔検出結果に基づき移動制御する際に、利用するようにしてもよい。
【0147】
なお、上述の実施の形態においては、本発明を図10のように構成された4足歩行型のロボット装置1に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のロボット装置及びロボット装置以外のこの他種々の装置に広く適用することができる。例えば、ロボット装置は、2足歩行であってもよく、更に、移動手段は、脚式移動方式に限定されない。
【0148】
また、上述の実施の形態では、ソフトウェアの構成として説明したが、これに限定されるものではなく、これに限定されるものではなく、各機能をハードウェアで構成することも可能である。
【0149】
【発明の効果】
以上詳細に説明したように本発明に係る顔検出装置は、入力画像から対象物の顔を検出する顔検出装置において、入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段と備え、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めるので、入力画像に含まれる顔画像が、正面を向いていない非正面顔であっても、入力画像から顔画像を検出することができる。
【0150】
また、本発明に係るプログラムは、上述した顔検出処理をコンピュータに実行させるものあり、このようなプログラムによれば、上述した顔検出処理をソフトウェアにより実現することができる。
【0151】
更に、本発明に係るロボット装置は、供給された入力情報に基づいて動作を行うロボット装置において、画像を撮像する撮像部と、上記撮像部から供給される入力画像から対象物の顔を検出する顔検出部とを備え、上記顔検出部は、上記入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段とを有し、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求めるので、顔検出対象となる人間等の対象物がロボット装置に対して正面を向いていない場合であっても、対象物の顔を検出し、対象物の方向に近づく等、顔検出結果に応じた行動を実行することができる。
【図面の簡単な説明】
【図1】本発明の第1の本実施の形態における顔検出モジュールの機能を模式的に示すブロック図である。
【図2】本実施の形態における顔検出方法を示すフローチャートである。
【図3】本発明の第2の実施の形態における顔検出方法を示すフローチャートである。
【図4】本発明の第1の適用例を示す顔検出装置の機能を模式的に示すブロック図である。
【図5】(a)及び(b)は、夫々入力画像(ウィンドウ画像)及びテンプレート画像を示す模式図である。
【図6】入力画像(ウィンドウ画像)とテンプレート画像とから求めた相関値の集合であるマッチング結果画像を示す図である。
【図7】本発明の第1の適用例におけるテンプレートマッチング結果画像から顔候補となる画素を検出する各処理工程を示すフローチャートである。
【図8】本発明の第1の適用例における顔検出装置のテンプレートマッチング部においてマッチング結果画像から顔候補を抽出した結果を示す図である。
【図9】マッチング結果画像において、所定の閾値以上のものを顔候補として抽出した結果を示す図である。
【図10】本発明の実施の形態におけるロボット装置の外観構成を示す斜視図である。
【図11】同ロボット装置の回路構成を示すブロック図である。
【図12】同ロボット装置のソフトウェア構成を示すブロック図である。
【図13】同ロボット装置のソフトウェア構成におけるミドル・ウェア・レイヤの構成を示すブロック図である。
【図14】同ロボット装置のソフトウェア構成におけるアプリケーション・レイヤの構成を示すブロック図である。
【図15】同アプリケーション・レイヤの行動モデルライブラリの構成を示すブロック図である。
【図16】同ロボット装置の行動決定のための情報となる有限確率オートマトンを説明するために使用した図である。
【図17】有限確率オートマトンの各ノードに用意された状態遷移表を示す図である。
【図18】図11乃至図15に示すロボット装置において、顔検出により、その行動を制御するために必要な構成部分を取り出して示すブロック図である。
【符号の説明】
1 ロボット装置、10 CPU、11 DRAM、14 信号処理回路、22 CCDカメラ、281〜28n アクチュエータ、33 顔検出モジュール、42 ロボティック・サーバ・オブジェクト、43 バーチャル・ロボット、50 ミドル・ウェア・レイヤ、51 アプリケーション・レイヤ、68 動き検出用信号処理モジュール、70 入力セマンティクスコンバータモジュール、71 認識系、73 トラッキング用信号処理モジュール、75 歩行モジュール、79 出力セマンティクスコンバータモジュール、80 出力系、90 行動モデルライブラリ、91 行動切換モジュール
Claims (11)
- 入力画像から対象物の顔を検出する顔検出装置において、
入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、
上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段と備え、
上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求める
ことを特徴とする顔検出装置。 - 上記判定手段により顔画像が含まれると判定された場合に、該顔画像を抽出する抽出手段を有することを特徴とする請求項1記載の顔検出装置。
- 供給された入力情報に基づいて動作を行うロボット装置に搭載される
ことを特徴とする請求項1記載の顔検出装置。 - 上記相関算出手段は、上記ロボット装置に備えられたロボット装置自身の姿勢を検出する姿勢検出手段からの姿勢検出結果に基づき、上記所定の角度を決定する
ことを特徴とする請求項3記載の顔検出装置。 - 入力画像から対象物の顔を検出する顔検出装置の顔検出方法において、
入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出工程と、
上記相関に基づき、上記入力画像に顔画像が含まれるか否かを判定する判定工程とを有し、
上記相関算出工程では、上記判定工程にて上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関が求められ、上記判定工程にて上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関が求められる
ことを特徴とする顔検出方法。 - 上記判定工程にて上記入力画像に顔画像が含まれると判定された場合に上記顔画像を抽出する抽出工程を有する
ことを特徴とする請求項5記載の顔検出方法。 - 上記顔検出装置は、供給された入力情報に基づいて動作を行うロボット装置に搭載される
ことを特徴とする請求項5記載の顔検出方法。 - 上記相関算出工程では、上記ロボット装置に備えられたロボット装置自身の姿勢を検出する姿勢検出手段からの姿勢検出結果に基づき、上記所定の角度が決定される
ことを特徴とする請求項7記載の顔検出方法。 - 入力画像から対象物の顔を検出する動作を実行させるためのプログラムにおいて、
入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出工程と、
上記相関に基づき、上記入力画像に顔画像が含まれるか否かを判定する判定工程とを有し、
上記相関算出工程では、上記判定工程にて上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定工程にて上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関が求められる
ことを特徴とするプログラム。 - 供給された入力情報に基づいて動作を行うロボット装置において、
画像を撮像する撮像部と、
上記撮像部から供給される入力画像から対象物の顔を検出する顔検出部とを備え、
上記顔検出部は、上記入力画像と平均的な顔画像を示す所定サイズのテンプレート画像との相関を求める相関算出手段と、上記相関に基づき、該入力画像に顔画像が含まれるか否かを判定する判定手段とを有し、上記相関算出手段は、上記判定手段により上記入力画像に顔画像が含まれないと判定された場合には、該テンプレート画像を画面に垂直な方向を軸として所定の角度回転させたテンプレート画像を使用して上記入力画像との相関を求め、上記判定手段により上記入力画像に顔画像が含まれると判定された場合には、該判定時のテンプレート画像を使用して次の入力画像との相関を求める
ことを特徴とするロボット装置。 - 自身の姿勢を検出する姿勢検出部を備え、
上記顔検出部は、上記姿勢検出部からの姿勢検出結果に基づき、上記所定の角を選択する
ことを特徴とする請求項10記載のロボット装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002296783A JP2004133637A (ja) | 2002-10-09 | 2002-10-09 | 顔検出装置、顔検出方法及びプログラム、並びにロボット装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002296783A JP2004133637A (ja) | 2002-10-09 | 2002-10-09 | 顔検出装置、顔検出方法及びプログラム、並びにロボット装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2004133637A true JP2004133637A (ja) | 2004-04-30 |
Family
ID=32286646
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002296783A Withdrawn JP2004133637A (ja) | 2002-10-09 | 2002-10-09 | 顔検出装置、顔検出方法及びプログラム、並びにロボット装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2004133637A (ja) |
Cited By (42)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2006041020A1 (ja) * | 2004-10-14 | 2006-04-20 | Sharp Kabushiki Kaisha | 携帯端末を利用した個人認証システム |
| JP2006285944A (ja) * | 2004-08-11 | 2006-10-19 | Fuji Photo Film Co Ltd | 被写体の構成要素を検出する装置および方法 |
| JP2007052547A (ja) * | 2005-08-16 | 2007-03-01 | Kddi Corp | 顔検出装置 |
| JP2007065844A (ja) * | 2005-08-30 | 2007-03-15 | Fujifilm Corp | 顔検出方法および装置並びにプログラム |
| JP2007102286A (ja) * | 2005-09-30 | 2007-04-19 | Seiko Epson Corp | 特定画像検出装置、特定画像検出方法および特定画像検出プログラム |
| JP2007213182A (ja) * | 2006-02-08 | 2007-08-23 | Fujifilm Corp | 対象物状態認識方法および装置並びにプログラム |
| JP2007249852A (ja) * | 2006-03-17 | 2007-09-27 | Sony Corp | 情報処理装置および方法、記録媒体、並びにプログラム |
| US7366330B2 (en) | 2005-04-19 | 2008-04-29 | Fujifilm Corporation | Method, apparatus, and program for detecting faces |
| EP2037320A1 (en) | 2007-09-14 | 2009-03-18 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program |
| EP2106127A2 (en) | 2008-03-24 | 2009-09-30 | Sony Corporation | Imaging apparatus, control method thereof, and program |
| EP2131266A2 (en) | 2008-06-02 | 2009-12-09 | Sony Ericsson Mobile Communications Japan, Inc. | Display processing device, display processing method, display processing program, and mobile terminal device |
| EP2133819A2 (en) | 2008-06-11 | 2009-12-16 | Sony Corporation | Image processing apparatus and image processing method |
| EP2180698A1 (en) | 2008-10-27 | 2010-04-28 | Sony Corporation | Image processing apparatus, image processing method, and program |
| US7714927B2 (en) | 2006-06-09 | 2010-05-11 | Sony Corporation | Imaging apparatus, imaging apparatus control method and computer program product, with eye blink detection features |
| US7783186B2 (en) | 2006-06-09 | 2010-08-24 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program |
| US7801437B2 (en) | 2006-10-25 | 2010-09-21 | Sony Corporation | Imaging device, imaging device controlling method, and computer program |
| EP2257046A2 (en) | 2009-05-27 | 2010-12-01 | Sony Corporation | Image pickup apparatus, electronic device, panoramic image recording method, and program |
| US7860386B2 (en) | 2006-06-09 | 2010-12-28 | Sony Corporation | Imaging apparatus, control method of imaging apparatus, and computer program |
| US7869630B2 (en) * | 2005-03-29 | 2011-01-11 | Seiko Epson Corporation | Apparatus and method for processing image |
| US7929042B2 (en) | 2006-09-22 | 2011-04-19 | Sony Corporation | Imaging apparatus, control method of imaging apparatus, and computer program |
| CN102075682A (zh) * | 2009-11-20 | 2011-05-25 | 索尼公司 | 图像捕获装置、图像处理装置、及其控制方法和程序 |
| US7986808B2 (en) | 2004-09-30 | 2011-07-26 | Canon Kabushiki Kaisha | Image-capturing device, image-processing device, method for controlling image-capturing device, and program for causing computer to execute the method |
| WO2011096278A1 (ja) | 2010-02-08 | 2011-08-11 | ソニー株式会社 | 画像処理装置、画像処理方法およびプログラム |
| US8072612B2 (en) | 2006-12-22 | 2011-12-06 | Canon Kabushiki Kaisha | Method and apparatus for detecting a feature of an input pattern using a plurality of feature detectors, each of which corresponds to a respective specific variation type and outputs a higher value when variation received by the input pattern roughly matches the respective specific variation type |
| WO2012011341A1 (ja) | 2010-07-23 | 2012-01-26 | ソニー株式会社 | 撮像装置、その制御方法およびプログラム |
| EP2458881A2 (en) | 2010-11-29 | 2012-05-30 | Sony Corporation | Information Processing Apparatus, Information Processing Method and Program |
| EP2458895A2 (en) | 2010-11-29 | 2012-05-30 | Sony Corporation | Information processing apparatus, information processing method and program |
| JP2012125878A (ja) * | 2010-12-15 | 2012-07-05 | Canon Inc | 情報処理装置、情報処理方法及びプログラム |
| US8379138B2 (en) | 2008-01-25 | 2013-02-19 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program |
| WO2013073107A1 (en) | 2011-11-14 | 2013-05-23 | Sony Corporation | Iimage display in three dimensional image capturing means used in two dimensional capture mode |
| US8503735B2 (en) | 2008-12-09 | 2013-08-06 | Sony Corporation | Image processing to perform grouping based on depth-of-relationship values |
| US8531541B2 (en) | 2007-09-18 | 2013-09-10 | Sony Corporation | Display control apparatus, image capturing apparatus, display control method, and program |
| US8649574B2 (en) | 2006-06-09 | 2014-02-11 | Sony Corporation | Imaging apparatus, control method of imaging apparatus, and computer program |
| US8670047B2 (en) | 2009-12-28 | 2014-03-11 | Sony Corporation | Image processing apparatus, imaging apparatus, image processing method, and program |
| WO2014068990A1 (ja) * | 2012-11-05 | 2014-05-08 | 株式会社デンソー | 関連性判定装置、同上用持続的有形コンピュータ読み取り媒体、及び関連性判定方法 |
| JP2014191400A (ja) * | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 画像検出装置及び制御プログラム並びに画像検出方法 |
| WO2014203463A1 (en) | 2013-06-21 | 2014-12-24 | Sony Corporation | Information processing system, method and non-transitory computer-readable medium |
| US9172858B2 (en) | 2011-11-21 | 2015-10-27 | Sony Corporation | Apparatus and method for controlling settings of an imaging operation |
| US9407804B2 (en) | 2009-11-20 | 2016-08-02 | Sony Corporation | Method, apparatus, and non-transitory medium for generating a synthetic image from a series of captured images |
| EP3179353A1 (en) | 2010-03-05 | 2017-06-14 | Sony Corporation | Image processing device, image processing method and program |
| WO2019070388A2 (en) | 2017-09-14 | 2019-04-11 | Sony Interactive Entertainment Inc. | ROBOT USED AS A PERSONAL COACH |
| US11194894B2 (en) | 2018-02-21 | 2021-12-07 | Samsung Electronics Co., Ltd. | Electronic device and control method thereof |
-
2002
- 2002-10-09 JP JP2002296783A patent/JP2004133637A/ja not_active Withdrawn
Cited By (55)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006285944A (ja) * | 2004-08-11 | 2006-10-19 | Fuji Photo Film Co Ltd | 被写体の構成要素を検出する装置および方法 |
| US7986808B2 (en) | 2004-09-30 | 2011-07-26 | Canon Kabushiki Kaisha | Image-capturing device, image-processing device, method for controlling image-capturing device, and program for causing computer to execute the method |
| JP2006113820A (ja) * | 2004-10-14 | 2006-04-27 | Sharp Corp | 携帯端末を利用した個人認証システム |
| WO2006041020A1 (ja) * | 2004-10-14 | 2006-04-20 | Sharp Kabushiki Kaisha | 携帯端末を利用した個人認証システム |
| US7869630B2 (en) * | 2005-03-29 | 2011-01-11 | Seiko Epson Corporation | Apparatus and method for processing image |
| US7366330B2 (en) | 2005-04-19 | 2008-04-29 | Fujifilm Corporation | Method, apparatus, and program for detecting faces |
| JP2007052547A (ja) * | 2005-08-16 | 2007-03-01 | Kddi Corp | 顔検出装置 |
| JP2007065844A (ja) * | 2005-08-30 | 2007-03-15 | Fujifilm Corp | 顔検出方法および装置並びにプログラム |
| US8155396B2 (en) | 2005-08-30 | 2012-04-10 | Fujifilm Corporation | Method, apparatus, and program for detecting faces |
| JP2007102286A (ja) * | 2005-09-30 | 2007-04-19 | Seiko Epson Corp | 特定画像検出装置、特定画像検出方法および特定画像検出プログラム |
| JP2007213182A (ja) * | 2006-02-08 | 2007-08-23 | Fujifilm Corp | 対象物状態認識方法および装置並びにプログラム |
| US8331631B2 (en) | 2006-02-08 | 2012-12-11 | Fujifilm Corporation | Method, apparatus, and program for discriminating the states of subjects |
| US7844108B2 (en) | 2006-03-17 | 2010-11-30 | Sony Corporation | Information processing apparatus and method, recording medium and program |
| JP2007249852A (ja) * | 2006-03-17 | 2007-09-27 | Sony Corp | 情報処理装置および方法、記録媒体、並びにプログラム |
| US7783186B2 (en) | 2006-06-09 | 2010-08-24 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program |
| US7714927B2 (en) | 2006-06-09 | 2010-05-11 | Sony Corporation | Imaging apparatus, imaging apparatus control method and computer program product, with eye blink detection features |
| US8649574B2 (en) | 2006-06-09 | 2014-02-11 | Sony Corporation | Imaging apparatus, control method of imaging apparatus, and computer program |
| US8253848B2 (en) | 2006-06-09 | 2012-08-28 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program product, with eye blink detection features |
| US7860386B2 (en) | 2006-06-09 | 2010-12-28 | Sony Corporation | Imaging apparatus, control method of imaging apparatus, and computer program |
| US7929042B2 (en) | 2006-09-22 | 2011-04-19 | Sony Corporation | Imaging apparatus, control method of imaging apparatus, and computer program |
| US7801437B2 (en) | 2006-10-25 | 2010-09-21 | Sony Corporation | Imaging device, imaging device controlling method, and computer program |
| US8072612B2 (en) | 2006-12-22 | 2011-12-06 | Canon Kabushiki Kaisha | Method and apparatus for detecting a feature of an input pattern using a plurality of feature detectors, each of which corresponds to a respective specific variation type and outputs a higher value when variation received by the input pattern roughly matches the respective specific variation type |
| EP2037320A1 (en) | 2007-09-14 | 2009-03-18 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program |
| US8531541B2 (en) | 2007-09-18 | 2013-09-10 | Sony Corporation | Display control apparatus, image capturing apparatus, display control method, and program |
| US9137445B2 (en) | 2007-09-18 | 2015-09-15 | Sony Corporation | Efficient display and selection of images generated during bracketed imaging |
| US8379138B2 (en) | 2008-01-25 | 2013-02-19 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program |
| US8493493B2 (en) | 2008-01-25 | 2013-07-23 | Sony Corporation | Imaging apparatus, imaging apparatus control method, and computer program |
| CN102186019A (zh) * | 2008-03-24 | 2011-09-14 | 索尼株式会社 | 成像设备、其控制方法、以及程序 |
| EP2106127A2 (en) | 2008-03-24 | 2009-09-30 | Sony Corporation | Imaging apparatus, control method thereof, and program |
| EP2131266A2 (en) | 2008-06-02 | 2009-12-09 | Sony Ericsson Mobile Communications Japan, Inc. | Display processing device, display processing method, display processing program, and mobile terminal device |
| EP2133819A2 (en) | 2008-06-11 | 2009-12-16 | Sony Corporation | Image processing apparatus and image processing method |
| EP2180698A1 (en) | 2008-10-27 | 2010-04-28 | Sony Corporation | Image processing apparatus, image processing method, and program |
| US8503735B2 (en) | 2008-12-09 | 2013-08-06 | Sony Corporation | Image processing to perform grouping based on depth-of-relationship values |
| EP2257046A2 (en) | 2009-05-27 | 2010-12-01 | Sony Corporation | Image pickup apparatus, electronic device, panoramic image recording method, and program |
| EP2852151A1 (en) | 2009-05-27 | 2015-03-25 | Sony Corporation | Image processing electronic device and method |
| US8896626B2 (en) | 2009-11-20 | 2014-11-25 | Sony Corporation | Image capturing apparatus, image processing apparatus, control method thereof and program |
| CN102075682A (zh) * | 2009-11-20 | 2011-05-25 | 索尼公司 | 图像捕获装置、图像处理装置、及其控制方法和程序 |
| US9407804B2 (en) | 2009-11-20 | 2016-08-02 | Sony Corporation | Method, apparatus, and non-transitory medium for generating a synthetic image from a series of captured images |
| CN102075682B (zh) * | 2009-11-20 | 2013-11-06 | 索尼公司 | 图像捕获装置、图像处理装置、及其控制方法 |
| US8670047B2 (en) | 2009-12-28 | 2014-03-11 | Sony Corporation | Image processing apparatus, imaging apparatus, image processing method, and program |
| WO2011096278A1 (ja) | 2010-02-08 | 2011-08-11 | ソニー株式会社 | 画像処理装置、画像処理方法およびプログラム |
| EP3179353A1 (en) | 2010-03-05 | 2017-06-14 | Sony Corporation | Image processing device, image processing method and program |
| WO2012011341A1 (ja) | 2010-07-23 | 2012-01-26 | ソニー株式会社 | 撮像装置、その制御方法およびプログラム |
| EP2458895A2 (en) | 2010-11-29 | 2012-05-30 | Sony Corporation | Information processing apparatus, information processing method and program |
| EP2458881A2 (en) | 2010-11-29 | 2012-05-30 | Sony Corporation | Information Processing Apparatus, Information Processing Method and Program |
| JP2012125878A (ja) * | 2010-12-15 | 2012-07-05 | Canon Inc | 情報処理装置、情報処理方法及びプログラム |
| WO2013073107A1 (en) | 2011-11-14 | 2013-05-23 | Sony Corporation | Iimage display in three dimensional image capturing means used in two dimensional capture mode |
| US9172858B2 (en) | 2011-11-21 | 2015-10-27 | Sony Corporation | Apparatus and method for controlling settings of an imaging operation |
| JP2014112358A (ja) * | 2012-11-05 | 2014-06-19 | Denso It Laboratory Inc | 関連性判定装置、関連性判定プログラム、及び関連性判定方法 |
| WO2014068990A1 (ja) * | 2012-11-05 | 2014-05-08 | 株式会社デンソー | 関連性判定装置、同上用持続的有形コンピュータ読み取り媒体、及び関連性判定方法 |
| US10409886B2 (en) | 2012-11-05 | 2019-09-10 | Denso Corporation | Relatedness determination device, non-transitory tangible computer-readable medium for the same, and relatedness determination method |
| JP2014191400A (ja) * | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 画像検出装置及び制御プログラム並びに画像検出方法 |
| WO2014203463A1 (en) | 2013-06-21 | 2014-12-24 | Sony Corporation | Information processing system, method and non-transitory computer-readable medium |
| WO2019070388A2 (en) | 2017-09-14 | 2019-04-11 | Sony Interactive Entertainment Inc. | ROBOT USED AS A PERSONAL COACH |
| US11194894B2 (en) | 2018-02-21 | 2021-12-07 | Samsung Electronics Co., Ltd. | Electronic device and control method thereof |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2004133637A (ja) | 顔検出装置、顔検出方法及びプログラム、並びにロボット装置 | |
| US7532743B2 (en) | Object detector, object detecting method and robot | |
| JP4609584B2 (ja) | ロボット装置、顔認識方法及び顔認識装置 | |
| JP4590717B2 (ja) | 顔識別装置及び顔識別方法 | |
| JP3855812B2 (ja) | 距離計測方法、その装置、そのプログラム、その記録媒体及び距離計測装置搭載型ロボット装置 | |
| JP4239635B2 (ja) | ロボット装置、その動作制御方法、及びプログラム | |
| US7515992B2 (en) | Robot apparatus and emotion representing method therefor | |
| US6539283B2 (en) | Robot and action deciding method for robot | |
| JP4329398B2 (ja) | 顔検出装置及び方法、並びにプログラム及び記録媒体 | |
| JPWO2002099545A1 (ja) | マン・マシン・インターフェースユニットの制御方法、並びにロボット装置及びその行動制御方法 | |
| JP2003285288A (ja) | 充電システム及び充電制御方法、ロボット装置、充電装置、及び充電制御プログラム及び記録媒体 | |
| JP2003271933A (ja) | 顔検出装置及び顔検出方法並びにロボット装置 | |
| JP2004302644A (ja) | 顔識別装置、顔識別方法、記録媒体、及びロボット装置 | |
| JP2004298975A (ja) | ロボット装置、障害物探索方法 | |
| JP2004130427A (ja) | ロボット装置及びロボット装置の動作制御方法 | |
| JP2003136456A (ja) | ロボット装置、ロボット装置の明るさ検出方法、明るさ検出プログラム及び記録媒体 | |
| JP2003271958A (ja) | 画像処理方法、その装置、そのプログラム、その記録媒体及び画像処理装置搭載型ロボット装置 | |
| JP2004302645A (ja) | 顔登録装置、顔登録方法、記録媒体、及びロボット装置 | |
| JP4193098B2 (ja) | トラッキング装置、トラッキング装置のトラッキング方法及びロボット装置 | |
| JP4379052B2 (ja) | 動体検出装置、動体検出方法、及びロボット装置 | |
| JP2003346150A (ja) | 床面認識装置及び床面認識方法並びにロボット装置 | |
| JP2002326176A (ja) | ロボット装置、並びに、画像記憶方法及び画像記憶装置、並びに、制御プログラム及び記録媒体 | |
| JP2004130426A (ja) | ロボット装置及びその動作制御方法 | |
| JP2001157980A (ja) | ロボット装置及びその制御方法 | |
| JP2004298976A (ja) | ロボット装置及びロボット装置の認識制御方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060110 |
