(57)【要約】【課題】ロボットの頭あるいは胴体の回転完了時から顔検出にかかる時間を短縮する。【解決手段】ロボット１００は、カメラ１１１と、第１のタイミングにおいてカメラ１１１が撮像した第１の画像と、第１のタイミングより後の第２のタイミングにおいてカメラ１１１が撮像した第２の画像と、の重複する領域を判別し、第２の画像のうち、判別した重複する領域を除く領域に含まれる人の顔を検出する制御部１２７と、を備える。【選択図】図３
2018165881.tif 000002
【特許請求の範囲】
【請求項１】
撮像部と、
第１のタイミングにおいて前記撮像部が撮像した第１の画像と、前記第１のタイミングより後の第２のタイミングにおいて前記撮像部が撮像した第２の画像と、の重複する領域を判別する判別部と、
前記第２の画像のうち、前記判別部が判別した前記重複する領域を除く領域に含まれる人の顔を検出する顔検出部と、
を備えた顔検出装置。
【請求項２】
前記撮像部の撮像方向を変える動作部をさらに備え、
前記撮像部は、前記動作部による前記撮像部の撮像方向を変える動作により、撮像方向が変化している間に、複数回撮像を行う、
請求項１に記載の顔検出装置。
【請求項３】
周囲の音を検出する音検出部と、
前記音検出部が検出した音に基づいて、音源の方向を判別する音源方向判別部と、
をさらに備え、
前記動作部は、前記撮像部の撮像方向を前記音源方向判別部が判別した音源の方向に向け、前記撮像部を前記音源の方向に近づけるように、自機を移動する、
請求項２に記載の顔検出装置。
【請求項４】
前記顔検出部は、前記音検出部が検出した音の大きさに基づいて、音源を発したものまでの距離を推定し、推定した距離に応じた縮小率の検出窓を顔検出に使用する、
請求項３に記載の顔検出装置。
【請求項５】
自機周辺の撮像画像を記憶した記憶部をさらに備え、
前記顔検出部は、前記音源方向判別部が判別した音源の方向を撮像した画像を前記記憶部から取得し、取得した画像と、前記撮像部が撮像した画像と、が重複する領域に対して、顔検出を行う、
請求項３または４に記載の顔検出装置。
【請求項６】
前記顔検出部は、前記第１の画像に対して顔検出するとともに、前記判別部が判別した前記重複する領域を除く領域に含まれる人の顔を検出する、
請求項１から５のいずれか１項に記載の顔検出装置。
【請求項７】
前記顔検出部は、人の顔の検出を行った領域を検出処理済み領域とし、前記検出処理済み領域以外の領域に対して検出を行う、
請求項１から６のいずれか１項に記載の顔検出装置。
【請求項８】
前記判別部は、音源から発せられる音が自機宛てに発せられた音か否かを判別し、自機宛ての音であると判別した場合のみ、前記重複する領域を判別する、
請求項１から７のいずれか１項に記載の顔検出装置。
【請求項９】
第１のタイミングにおいて撮像された第１の画像と、前記第１のタイミングより後の第２のタイミングにおいて撮像された第２の画像と、の重複する領域を判別する判別ステップと、
前記第２の画像のうち、前記判別ステップにおいて判別された前記重複する領域を除く領域の画像に含まれる人の顔を検出する顔検出ステップと、
を備えた顔検出方法。
【請求項１０】
コンピュータに、
第１のタイミングにおいて撮像された第１の画像と、前記第１のタイミングより後の第２のタイミングにおいて撮像された第２の画像と、の重複する領域を判別する判別機能と、
前記第２の画像のうち、前記判別機能により判別された前記重複する領域を除く領域の画像に含まれる人の顔を検出する顔検出機能と、
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、顔検出装置、顔検出方法、及びプログラムに関する。
【背景技術】
【０００２】
人間、動物等に模した形態を有し、人間と会話等のコミュニケーションをすることができるロボットが知られている。このようなロボットには、自機に搭載されたカメラ、マイク等のセンサの出力に基づいて顔認識を行い、顔認識により自機周辺に人がいることを判別し、その人に話しかける、手を振る等の動作をするものもある。
【０００３】
特許文献１には、ロボットが、顔認識により、正対する話者が誰であるかを特定し、特定した話者の回答を音声認識することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１９８６５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されているような顔認識は、ロボットと人が正対した状態で行う必要がある。このため、ロボットと人が正対していない状態では、ロボットが、周囲で人の声が発せられたことを検出したときに、自身の頭の向きあるいは胴体全体の向きを声が発せられた方向へ向けてから、カメラで撮像した画像を使用して顔検出をした後、顔認識を行う必要がある。
【０００６】
このように、顔検出を行う前に、ロボットの頭あるいは胴体の回転が完了するのを待つ必要がある。よって、顔検出処理の完了までに時間を要してしまうという問題があった。
【０００７】
本発明は、上記実情を鑑みてなされたものであり、ロボットの頭あるいは胴体の回転完了時から顔検出にかかる時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係る顔検出装置は、
撮像部と、
第１のタイミングにおいて前記撮像部が撮像した第１の画像と、前記第１のタイミングより後の第２のタイミングにおいて前記撮像部が撮像した第２の画像と、の重複する領域を判別する判別部と、
前記第２の画像のうち、前記判別部が判別した前記重複する領域を除く領域に含まれる人の顔を検出する顔検出部と、
を備える。
【発明の効果】
【０００９】
本発明によれば、ロボットの頭あるいは胴体の回転完了時から顔検出にかかる時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態にかかるロボットの外観図である。
【図２】ロボットの頭の自由度を説明するための図である。
【図３】ロボットの構成を示すブロック図である。
【図４】部屋内のロボットとユーザの位置の一例を示す図である。
【図５】呼びかけ応答処理のフローチャートである。
【図６】音源定位の処理のフローチャートである。
【図７】仮の音源位置を説明するための図である。
【図８】（ａ）は部屋内のロボットとユーザそれぞれの位置の一例を示す図であり、（ｂ）〜（ｄ）は、回転途中の撮像画像と回転完了時の撮像画像の重複範囲を説明するための図である。
【図９】分散顔検出の処理のフローチャートである。
【図１０】（ａ）〜（ｃ）は、回転途中の顔検出の対象の領域を説明するための図である。
【発明を実施するための形態】
【００１１】
（実施の形態）
以下、図面を参照しながら本発明の実施の形態について説明する。図１は、実施の形態に係るロボット１００を正面から見た場合の外観を模式的に示した図である。ロボット１００は、頭１１０と胴体１２０とを備えた人型のコミュニケーションロボットである。ロボット１００は、住宅内に設置されており、住人に呼びかけられると、呼びかけた住人と会話する。
【００１２】
図１に示すように、ロボット１００の頭１１０には、カメラ１１１と、マイク１１２と、スピーカ１１３と、が設けられている。
【００１３】
カメラ１１１（撮像部）は、頭１１０の前面の下側、人の顔でいうところの鼻の位置に設けられている。カメラ１１１は、後述する制御部１２７の制御の下、撮像を行う。
【００１４】
マイク１１２（音検出部）は、１３個のマイクを含む。１３個のマイクのうちの８個のマイクが、人の顔でいうところの額の高さの位置であって、頭１１０の周周りに等間隔で配置されている。これら８個のマイクより上側に、４個のマイクが頭１１０の周回りに等間隔で配置されている。さらに、１個のマイクが頭１１０の頭頂部に配置されている。マイク１１２はロボット１００の周囲で発生した音を検出する。
【００１５】
スピーカ１１３は、カメラ１１１より下側、人の顔でいうところの口の位置に設けられている。スピーカ１１３は、後述する制御部１２７の制御の下、各種の音声を出力する。
【００１６】
首関節１２１は、頭１１０と胴体１２０とを連結する部材である。頭１１０は、破線で示される首関節１２１によって、胴体１２０に連結されている。首関節１２１は、複数のモータを含む。後述する制御部１２７がこれら複数のモータを駆動すると、ロボット１００の頭１１０が回転する。図２にロボット１００の頭１１０の回転の自由度を模式的に表した図を示す。首関節１２１により、ロボット１００の頭１１０は、胴体１２０に対して、ピッチ軸Ｘｍの軸回り、ロール軸Ｚｍの軸回り、ヨー軸Ｙｍの軸回り回転可能である。首関節１２１は、後述の足回り部１２６とともに、ロボット１００の各部位を動作させる動作部としての役割を果たす。
【００１７】
図３を参照する。上述の構成に加え、ロボット１００は、操作ボタン１２２と、センサ群１２３と、電源部１２４と、記憶部１２５と、足回り部１２６と、制御部１２７と、を備える。
【００１８】
操作ボタン１２２は、胴体１２０の背中に設けられている（図１において不図示）。操作ボタン１２２は、ロボット１００を操作するための各種のボタンであり、電源ボタン、スピーカ１１３の音量調節ボタン等を含む。
【００１９】
図１に示すように、センサ群１２３は、人の顔でいうところの目の位置と耳の位置とに設けられている。センサ群１２３は、加速度センサ、障害物検知センサ等を含み、ロボット１００の姿勢制御や、安全性の確保のために使用される。
【００２０】
図３を参照する。電源部１２４は、胴体１２０に内蔵された充電池であり、ロボット１００の各部に電力を供給する。
【００２１】
記憶部１２５は、ハードディスクドライブ、フラッシュメモリ等を含み、胴体１２０の内部に設けられている。記憶部１２５は、後述の制御部１２７によって実行されるプログラム、カメラ１１１が撮像した画像データ等を含む各種データを記憶する。記憶部１２５が記憶するプログラムには、後述の呼びかけ応答処理に係る呼びかけ応答プログラム１２５１が含まれる。
【００２２】
足回り部１２６は、胴体１２０の下側に設けられた４つの車輪（ホイール）を含む。図１に示すように、４つの車輪のうち、２つが胴体１２０の前側に、残り２つが後ろ側に（不図示）が配置されている。車輪として、例えば、オムニホイール、メカナムホイールが使用される。後述の制御部１２７が足回り部１２６の車輪を回転させると、ロボット１００は移動する。足回り部１２６は、前述の首関節１２１とともに、ロボット１００の各部位を動作させる動作部としての役割を果たす。
【００２３】
図３を参照する。制御部１２７は、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）等で構成される。制御部１２７は、上述のロボット１００の各部に接続されており、ＲＡＭをワークスペースとして、記憶部１２５に記憶されたプログラムを実行することにより、ロボット１００の各部を制御する。
【００２４】
上述のように、ロボット１００は、住人（ユーザ）に呼びかけられると会話するので、呼びかけられたことを判別すると、呼びかけた住人（ユーザ）の顔検出処理を行う必要がある。以下、ロボット１００が行う顔検出の処理を説明する。ここでは、ユーザの呼びかけに応答する一連の処理（呼びかけ応答処理）の中で、ロボット１００がユーザの顔検出を行う例を説明する。図４に示すように、部屋Ｒ内にロボット１００とユーザＰがおり、ロボット１００とユーザＰとが正対していない場合を想定する。ユーザＰがロボット１００に呼びかけると、ロボット１００は、ユーザＰの方向に首を向け、ユーザＰの顔認識を行う。さらに、ロボット１００は、ユーザＰと対話可能な距離まで移動して、ユーザＰと対話する。なお、ここでは、部屋Ｒ内のテレビの電源はオフであり、ドアホンも鳴らず、室外から何らかの音が聞こえることはない場面を想定する。即ち、音源がユーザＰのみである場面を想定している。
【００２５】
本実施の形態においては、顔検出処理の完了時点を早めるため、ロボット１００の頭１１０の回転が終了した後に顔検出を行うのではなく、ロボット１００の頭１１０が回転している間に顔検出処理の一部の処理（以下、分散顔検出処理）を行う。
【００２６】
制御部１２７は、記憶部１２５に記憶されている呼びかけ応答プログラム１２５１を実行することで、以下の呼びかけ応答処理を行い、マイク１１２の入力音声の音源の方向を判別する音源方向判別部、異なる時間に撮像された撮像画像の重複する領域を判別する判別部、撮像画像に含まれる人の顔を検出する顔検出部として機能する。
【００２７】
図５のフローチャートを参照しながら、呼びかけ応答処理を説明する。制御部１２７は、ロボット１００の周辺である程度の大きさの音を検出したか否かを判別する（ステップＳ１０１）。具体的には、制御部１２７は、１つ以上のマイク１１２に所定の閾値以上の振幅の音が入力されたか否かを判別する。なお、所定の大きさとは、マイク１１２の入力感度によるものとする。
【００２８】
マイク１１２により所定の大きさの音が検出できない場合（ステップＳ１０１；Ｎｏ）、制御部１２７は、音を検出するまで待ち受ける。
【００２９】
一方、ある程度の大きさの音を検出したと判別した場合（ステップＳ１０１；Ｙｅｓ）、制御部１２７は、マイク１１２により検出した音が人間の声か否かを判別する（ステップＳ１０２）。具体的には、制御部１２７は、ステップＳ１０１で検出した音が特定の周波数帯域の音（人の声の周波数パターン）であるか否かを判別する。ステップＳ１０１で検出した音が人間の声でない場合（ステップＳ１０２；Ｎｏ）、制御部１２７はステップＳ１０１へ戻り、音を検出するまで待ち受ける。
【００３０】
一方、人間の声であると判別すると（ステップＳ１０２；Ｙｅｓ）、制御部１２７は、音源の位置（ここではユーザＰの声が発せられた位置）を求めるため、音声定位を行う（ステップＳ１０３）。ここでは、音源の位置を推定するため、音源定位のひとつの手法であるＭＵＳＩＣ（ＭＵｌｔｉｐｌｅ  ＳＩｇｎａｌ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ）を採用することとする。なお、音源定位の最中に音源であるユーザＰは移動せず、静止しているものとする。
【００３１】
図６にＭＵＳＩＣを採用した音源定位の処理のフローチャートを示す。以下、図６を参照しながら、音源定位の処理を説明する。
【００３２】
まず、マイク１１２に入力された音声を時間周波数変換する（ステップＳ１０３０１）。ここでは、時間周波数変換として、ＳＴＦＴ（Ｓｈｏｒｔ−Ｔｉｍｅ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）（短時間フーリエ変換）を行う。
【００３３】
音源数をＮとすると、第ｎ番目の音源の信号Ｓｎは、下記式（１）で表せる。
Ｓｎ（ω，ｆ）（ｎ＝１，２，…，Ｎ） …（１）
ωは角周波数、ｆはフレーム番号である（以下の説明でも同様）。
【００３４】
マイク１１２で観測される信号は、マイク１１２の数をＭとすると、下記式（２）で表せる。
Ｘｍ（ω，ｆ）（ｍ＝１，２，…，Ｍ） …（２）
【００３５】
音源から出た音は、空気を伝わってマイク１１２で観測されるが、そのときの伝達関数をＨｎｍ（ω）とすると、音源の信号を表す数式に、伝達関数を乗じることで、マイク１１２で観測される信号を求めることができる。ｍ番目のマイク１１２で観測される信号Ｘｍ（ω，ｆ）は下記式（３）のように表される。
【００３６】
【数１】
2018165881.tif 000003
【００３７】
ロボット１００は、マイク１１２を複数有しているので、マイク１１２全体で観測される信号ｘ（ω，ｆ）は下記式４で表すことができる。
【００３８】
【数２】
2018165881.tif 000004
【００３９】
同様に、全音源の信号ｓ（ω，ｆ）も下記式（５）で表すことができる。
【００４０】
【数３】
2018165881.tif 000005
【００４１】
同様に、第ｎ番目の音源の伝達関数ｈｎ（ω）は下記式（６）で表すことができる。
【００４２】
【数４】
2018165881.tif 000006
【００４３】
全ての伝達関数を下記式（７）のように表記する。
ｈ（ω）＝［ｈ１（ω），ｈ２（ω），…ｈＮ（ω）］ …（７）
【００４４】
上記の式（７）で表される伝達関数を、上述の式（３）に適用すると、下記式（８）のように表される。
ｘ（ω，ｆ）＝ｈ（ω）ｓ（ω，ｆ） …（８）
【００４５】
ｈｎ（ω）は音源位置毎に独立であり、ある程度のフレーム数（例えば、フレーム数をＬとする）で見ればＳｎ（ω，ｆ）は無相関とみなせるので、ｘ（ω，ｆ）は音源数ＮをＲＡＮＫとする超平面を構成する。このとき、距離で正規化した音量が大きな音源の伝達関数方向に分布が広がりやすい。そこで、部分空間とゼロ空間に分解することを考える。
【００４６】
再び図６を参照する。次の式（９）に示すように相関行列を計算する（ステップＳ１０３０２）。ここで、＊は複素共役転置を意味する。
【００４７】
【数５】
2018165881.tif 000007
【００４８】
続いて、固有値分解する（ステップＳ１０３０３）。ここで、固有値λｍ（ω，ｆ）と固有ベクトルｅｍ（ω，ｆ）は固有値が降順になるように並べ替えられているものとする。
【００４９】
原理的には、ｈｎ（ω）は部分空間の固有ベクトルｅｍ（ω，ｆ）（ｍ＝１〜Ｎ）の重み付け加算から復元できるが、実際には復元が困難であるためゼロ空間を構成する固有ベクトルｅｍ（ω，ｆ）（ｍ＝Ｎ＋１〜Ｍ）がｈｎ（ω）と直交することを使って音源定位を実現する。
【００５０】
しかし、音源であるユーザＰが部屋Ｒ内を移動する可能性があるため、音源位置を予め知ることはできず、音源位置の伝達関数を予め取得しておくことは難しい。このため、仮の音源位置を決め、仮の音源位置の伝達関数をあらかじめ用意しておき、音源定位を行う。
【００５１】
図７に、仮の音源位置とマイクの配置の一例を示す。図７では、太線の円がロボット１００の頭１１０を表し、太線上の黒丸がマイク１１２を表す。なお、ここでは、便宜上１３個のマイク１１２の全てを表示していない。ロボット１００の回りには４個の仮の音源位置があるものとする。
【００５２】
複数のマイク１１２は、ロボット１００の頭１１０に配置されていることから、円周に沿って配置されているとみなすことができる。Ｘ軸の正の向きと、マイク１１２が成す円の中心（ロボット１００の頭１１０の中心位置に相当）と仮の音源１〜４とをそれぞれ結んだ線と、がなす角度をθ１、θ２、θ３、θ４とし、それぞれの伝達関数ｈθ（ω）を予め計算しておく。
【００５３】
図７では、音源が４個の例を示したが、音源数がＮ個の場合、θ１、θ２、…θＮのそれぞれの伝達関数ｈθ（ω）を予め計算しておけばよい。また、あるいは、仮の音源位置の伝達関数を用意するのではなく、幾何的な情報をもとに予め伝達関数を計算しておいてもよい。
【００５４】
次に、式（１０）を使用して、周波数帯毎のＭＵＳＩＣスペクトルを計算する（ステップＳ１０３０４）。
【００５５】
【数６】
2018165881.tif 000008
【００５６】
ここで、式（１０）の分母は、ノイズや誤差、ＳＴＦＴの周波数帯間の信号漏洩の影響等からゼロにはならない。また、音源の方向とあらかじめ決めた角度θ（θ１、θ２、…θＮ）のいずれかが近い場合、つまりｈｎ（ω）とｈθ（ω）が近い場合、式（１０）の値は極端に大きなものになる。図７に示す例では、音源である人と仮の音源２の位置が近いため、θ２の伝達関数を使用した場合、式（１０）の値が極端に大きくなることが想定される。
【００５７】
そして、統合したＭＵＳＩＣのパワーを求めるため、式（１１）に示すように周波数帯毎のＭＵＳＩＣスペクトルを重み付け加算する（ステップＳ１０３０５）。
【００５８】
【数７】
2018165881.tif 000009
【００５９】
重み付け係数は、固有値λｍ（ω，ｆ）が大きいほど大きくすれば、Ｓｎ（ω，ｆ）に含まれるパワーに応じた計算をすることもできる。この場合はＳｎ（ω，ｆ）に殆どパワーがない場合の悪影響を軽減できる。
【００６０】
続いて、パワースペクトルから適切なピーク（極大値）を選択する（ステップＳ１０３０６）。具体的には、まず、複数のピークを求め、その中から適切なピークを選択し、選択したピークにおけるθを音源方向とする。ここで、ピークを求めるのは以下のような理由による。本来の音源方向のθのパワーが必ずしも一番大きいとは限らず、本来の音源方向に近いθのパワーは総じて大きくなるので、音源方向は複数のピークの何れかに正解があるからである。
【００６１】
また、テレビが点いている、ドアホンが鳴る等の部屋Ｒ内に他の音源がある場合でも、多くの場合、人は、テレビ、ドアホン等の周囲の音より大きな声でロボット１００に呼びかけると考えられる。よって、人の声のパワーの方が、人以外のテレビ、ドアホン等の音源から発せられる音のパワーより大きくなることが想定される。よって、単純にパワーが最大となる仮の音源位置を示すθを音源方向として選択しても問題はない。ただし、周囲の環境などによっては、パワーが最大となる仮の音源位置ではなく、パワーが２番目あるいはそれ以降となる仮の音源位置を、音源方向と選択することが適切な場合もある。このようにして、音源方向、ここでは、ロボット１００の位置から見たユーザＰがいる方向、を判別することができる。
【００６２】
音源定位の処理は以上である。ここでは、平面を仮定して説明したが、３次元を仮定しても上記説明は成り立つ。
【００６３】
再び図５を参照する。ステップＳ１０３の音源定位を実行して音源方向を判別すると、制御部１２７は、音源方向を示す情報として、ロボット１００の向いている方向に対する音源の方向を示す角度θを記憶部１２５に記憶する。続いて、制御部１２７は、ステップＳ１０４へ進み、分散顔検出の処理を実行する。分散顔検出の処理においては、ロボット１００の頭１１０が回転を開始し、回転完了するまでの間に、カメラ１１１が１又は複数回撮像を行い、撮像した画像に対して顔検出の処理を行う。
【００６４】
ロボット１００の頭が音源方向を向いたところで回転が完了するため、ロボット１００の頭１１０の回転が完了する前に撮像された画像は、回転が完了したときに撮像される画像の一部を含む、あるいは、全く含まないことになる。
【００６５】
具体的な例を、図８を参照しながら説明する。図８（ａ）は、部屋Ｒ内のロボット１００とユーザＰとの位置関係の一例を示したものである。ここで、回転が開始する前には、ロボット１００のカメラ１１１のレンズは、紙面上側を向いている。ロボット１００は、ユーザＰの声を検出すると、時計回りに、ほぼ９０度回転して、カメラ１１１のレンズをユーザＰに向けると想定される。
【００６６】
回転を開始した時点である時刻ｔ１、時刻ｔ１より後の時刻ｔ２、時刻ｔ２より後の時刻ｔ３に、それぞれ撮像を行ったと仮定する。時刻ｔ４は回転が完了した時刻である。
【００６７】
時刻ｔ１における撮像画像は、図８（ｂ）に時刻ｔ１における撮像画像と、回転が完了した時刻ｔ４にカメラ１１１が撮像することが予測される画像と、が重複する領域を示す。斜線で塗りつぶした範囲が相互に重複する領域である。重複する領域については、カメラ１１１の画角、現在のカメラ１１１の撮像方向と音源方向と求められる頭１１０を回転すべき角度、ロボット１００の姿勢、首関節１２１の回転の速度等に基づいて求められる。
【００６８】
図８（ｃ）に、時刻ｔ２における撮像画像と、回転が完了した時刻ｔ４にカメラ１１１が撮像することが予測される画像と、が重複する領域を示す。斜線で塗りつぶした範囲が相互に重複する領域である。頭１１０の回転が進んでいるため、時刻ｔ２と時刻ｔ４の重複範囲（図８（ｃ）の斜線範囲）の方が、時刻ｔ１と時刻ｔ４の重複範囲（図８（ｂ）の斜線範囲）の方より広い。
【００６９】
図８（ｄ）に、時刻ｔ３における撮像画像と、回転が完了した時刻ｔ４にカメラ１１１が撮像することが予測される画像と、が重複する領域を示す。斜線で塗りつぶした範囲が相互に重複する領域である。頭１１０の回転がさらに進んでいるため、時刻ｔ３と時刻ｔ４の重複範囲（図８（ｄ）の斜線範囲）の方が、時刻ｔ２と時刻ｔ４の重複範囲（図８（ｃ）の斜線範囲）の方より広い。
【００７０】
本実施の形態では、時刻ｔ１に撮像した後に、撮像した画像のうち、時刻ｔ４にカメラ１１１が撮像することが予測される画像と重なる領域（図８（ｂ）の斜線の範囲）に対して、顔検出の処理を実行する。
【００７１】
時刻ｔ２に撮像した後は、撮像した画像のうち、時刻ｔ４にカメラ１１１が撮像することが予測される画像と重なる領域（図８（ｃ）の斜線部分）のうち、時刻ｔ１の撮像の後に処理された範囲と重複する部分を除く領域に対して顔検出の処理を実行する。
【００７２】
時刻ｔ３に撮像した後は、撮像した画像のうち、時刻ｔ４にカメラ１１１が撮像することが予測される画像と重なる領域（図８（ｄ）の斜線部分）のうち、それより前の時刻（時刻ｔ１、時刻ｔ２）の撮像の後に処理された範囲と重複する部分を除く領域に対して顔検出の処理を実行する。
【００７３】
このように、回転途中のあるタイミング（第１のタイミング）に撮像した画像（第１の画像）と、回転完了した後（第２のタイミング）に撮像される画像（第２の画像）との重複する領域を判別する。回転途中では、重複する領域かつ顔検出の処理が未処理である領域に対して顔検出の処理を実行する。そして、回転完了した後には、判別した重複する領域以外に対して顔検出の処理を実行することになる。
【００７４】
図９の分散顔検出の処理のフローチャートを参照しながら、制御部１２７が実行する分散顔検出の具体的な処理を説明する。
【００７５】
まず、制御部１２７は、記憶部１２５に記憶された検出済み領域データの初期化を行う（ステップＳ１０４０１）。検出済み領域データは、顔検出の処理が済んだ範囲を示す情報が含まれる。上述のように、回転途中に複数回にわたって顔検出の処理を実行するため、既に顔検出が済んでいる範囲については、重複処理を行わないようにするためである。
【００７６】
ここでは、検出済み領域データには、回転完了した位置においてカメラ１１１が撮像することが予測される画像（回転完了時の予測撮像画像）の範囲と、当該範囲のうち回転途中に撮像した画像を使用して顔検出を行った範囲と、を示す座標の情報が含まれる。
【００７７】
例えば、図１０（ａ）に示すように、回転完了時の予測撮像画像が、座標Ｐ１（ｘ１，ｙ２）、Ｐ２（ｘ２，ｙ２）、Ｐ３（ｘ２，ｙ１）、Ｐ４（ｘ１，ｙ１）の４点の座標を結んだ範囲であるとする。時刻ｔ１に撮像した画像のうち、予測撮像画像と重複する領域が、斜線で塗りつぶされた座標Ｐ５（ｘ３，ｙ２）、Ｐ２（ｘ２，ｙ２）、Ｐ３（ｘ２，ｙ１）、Ｐ６（ｘ３，ｙ１）の４点の座標を結んだ範囲であるとする。
【００７８】
時刻ｔ１の撮像後においては、それより前に顔検出が行われていないため、図１０（ａ）の斜線範囲に対して顔検出処理を行う。当該処理のあと、検出済み領域データには、座標Ｐ５、Ｐ２、Ｐ３、Ｐ６の４点の座標値が格納される。
【００７９】
図１０（ｂ）に示すように、時刻ｔ２に撮像した画像のうち、予測撮像画像と重複する領域が、Ｐ７、Ｐ２、Ｐ３、Ｐ８の４点の座標を結んだ範囲であるとする。このとき、検出済み領域データには、座標Ｐ５、Ｐ２、Ｐ３、Ｐ６の４点の座標値が格納されているため、時刻ｔ２の撮像後においては、Ｐ７、Ｐ２、Ｐ３、Ｐ８の４点の座標を結んだ範囲から、検出済み領域である座標Ｐ５、Ｐ２、Ｐ３、Ｐ６の４点の座標を結んだ範囲を除いた範囲が、顔検出の対象の領域となる。
【００８０】
時刻ｔ２の撮像後の顔検出処理が終わると、検出済み領域データには、座標Ｐ７、Ｐ２、Ｐ３、Ｐ８の４点の座標値が格納される。
【００８１】
図１０（ｃ）に示すように、時刻ｔ３に撮像した画像のうち、予測撮像画像と重複する領域が、Ｐ９、Ｐ２、Ｐ３、Ｐ１０の４点の座標を結んだ範囲であるとする。このとき、検出済み領域データには、座標Ｐ７、Ｐ２、Ｐ３、Ｐ８の４点の座標値が格納されているため、時刻ｔ３の撮像後においては、Ｐ９、Ｐ２、Ｐ３、Ｐ１０の４点の座標を結んだ範囲から、検出済み領域である座標Ｐ７、Ｐ２、Ｐ３、Ｐ８の４点の座標を結んだ範囲を除いた範囲が、顔検出の対象の領域となる。
【００８２】
また、図１０（ｃ）の顔検出処理が行われていない座標Ｐ１、Ｐ９、Ｐ１０、Ｐ４の４点の座標を結んだ範囲については、回転完了後に、顔検出が行われる。
【００８３】
なお、詳細は後述するが、回転によるカメラの見え方は対象までの距離によって変わるので、以下に説明する顔検出においては、ピラミッド画像（元画像を一定の比率で縮小を繰り返して作成した一連の画像群）を使用し、ピラミッド画像の各階層に対して、顔検出器を適用する。このため、図１０（ａ）〜（ｃ）では、１階層分の範囲を図示したが、実際には、撮像画像に対して、複数階層にわたる顔検出を行うことになる。
【００８４】
再び図９を参照する。続いて制御部１２７は、首関節１２１のモータを駆動して、頭１１０の回転を開始する（ステップＳ１０４０２）。ここで、制御部１２７は、ロボット１００の頭１１０の正面（カメラ１１１のレンズ面）が音源（ユーザＰ）の方向に向くまで、頭１１０を回転する。具体的には、制御部１２７は、記憶部１２５に記憶されている音源定位により求められた角度θだけ、ロボット１００の頭１１０を回転するよう首関節１２１を制御する。
【００８５】
制御部１２７は、カメラ１１１を制御して撮像し（ステップＳ１０４０３）、撮像した画像（撮像画像）を記憶部１２５に格納する。さらに、制御部１２７は、カメラ１１１が撮像像した位置における外部カメラパラメータ（回転行列と並進ベクトル）を記憶部１２５から取得し、撮像した画像の情報と、外部カメラパラメータとを対応づけて記憶部１２５に記憶する。外部カメラパラメータは回転駆動の完了位置を基準にしたものである。ロボット１００の姿勢の現在位置と回転完了位置から、あらかじめ回転に関する外部カメラパラメータはわかっているものとする。
【００８６】
次に、制御部１２７は、撮像した画像と、回転完了時の予測撮像画像と、の重複する領域が、回転完了位置における予測撮像画像のどの位置に対応するかを求める（ステップＳ１０４０４）。回転行列による位置対応関係は透視変換により求めることができる。並進ベクトルによる位置対応関係は、内部カメラパラメータと被写体までの奥行き方向の距離から求めることができる。内部カメラパラメータは、事前に計測済みであるものとする。奥行き方向の距離（の代表値）は、ピラミッド画像の縮小率と検出窓のサイズ等から予め設定することができる。
【００８７】
制御部１２７は、顔検出する範囲を判別する（ステップＳ１０４０５）。ステップＳ１０４０４で求めた対応位置が示す範囲には、すでに顔検出の処理が施された範囲も含まれている。よって、制御部１２７は、記憶部１２５に格納されている検出済み領域データと、Ｓ１０４０４で求めた対応位置が示す範囲とに基づき、顔検出する範囲を判別する。なお、顔検出処理の対象の範囲はマージンを見て少し小さめにすることもできる。
【００８８】
制御部１２７は、ステップＳ１０４０５で判別した範囲の大きさが所定値以上であるか否かを判別する（ステップＳ１０４０６）。判別した範囲の大きさが所定値未満の場合（ステップＳ１０４０６；Ｎｏ）、制御部１２７は、ステップＳ１０４０３の処理に戻る。所定値は少なくとも１画素であるが、制御部１２７の性能から、計算負荷などからやや大きめの値にしてもよい。
【００８９】
所定値以上である場合（ステップＳ１０４０６；Ｙｅｓ）、制御部１２７は、ステップＳ１０４０５で判別した範囲の画像変換（画像の切り出し）を行う（ステップＳ１０４０７）。ステップＳ１０４０３で所得した画像（撮像画像）から、ステップＳ１０４０４で求めた対応位置に基づいて、撮像画像から、回転完了時の撮像予測画像と重複する部分＋αの範囲を切り出した画像を作成する。＋α分は検出窓のサイズや外部カメラパラメータの誤差などを考慮して決める。
【００９０】
制御部１２７は、ステップＳ１０４０７で生成した画像に対して顔検出を行う（ステップＳ１０４０８）。
【００９１】
制御部１２７が行う顔検出の方法は以下の通りである。まず、ピラミッド画像を作成する。ピラミッド画像とは、元画像を一定の比率で縮小を繰り返して作成した一連の画像群であり、ピラミッド画像の各階層に対して、固定サイズの顔検出器を適用することで様々なサイズ（つまり距離に相当）の顔を検出することができる。ここでは、回転によるカメラの見え方は対象までの距離によって変わるので、ピラミッド画像を使用して顔検出を行う。
【００９２】
まず、顔探索対象を最初の階層に設定する。ここでは縮小前の元の画像とする。最初の検出窓を設定する。初期位置は例えば左上の隅とする。設定した検出窓に対して、固定サイズの顔検出器を適用する。この階層でのスライドによる探索が完了したかを判定する。スライドによる探索が完了でないなら、検索窓をスライドさせ、再度顔検出を行う。スライドによる探索が完了ならば、ピラミッド画像のすべての階層での処理が完了したかの判定を行う。すべての階層での処理が完了でないなら、階層を移動し、移動先の階層でもスライドによる顔検出を行う。すべての階層での処理が完了したならば、顔検出の処理を終了する。
【００９３】
なお、ロボット１００から近い場所にユーザＰがいた場合、その顔が撮像画像に入りきらない場合があることと、全体の計算負荷の割合が小さいことを考慮して、縮小率の大きい階層の顔探索はしないほうがより望ましい。
【００９４】
図９を参照する。顔検出が成功したと判別すると（ステップＳ１０４０８；Ｙｅｓ）、制御部１２７は、分散顔検出処理を終了し、図５のステップＳ１０６へ進む。一方、図９の顔検出が成功していないと判別すると（ステップＳ１０４０８；Ｎｏ）、制御部１２７は、検出済み領域データを記憶部１２５に記録する（ステップＳ１０４０９）。ここでは、制御部１２７は、ステップＳ１０４０８で顔検出が済んだ範囲を表す座標値を記録する。
【００９５】
続いて、制御部１２７は、回転が完了したかを判別し（ステップＳ１０４１０）、回転が完了していないと判別すると（ステップＳ１０４１０；Ｎｏ）、ステップＳ１０４０３に戻り、再び、カメラ１１１を制御して撮像を行う。
【００９６】
一方、制御部１２７は、音源定位で求めた角度θだけ回転した、即ち、回転が完了したと判別すると（ステップＳ１０４１０；Ｙｅｓ）、記憶部１２５に記憶されている検出済み領域データに基づいて、回転完了時の予測撮像画像のうち未処理の範囲について、顔検出を行う（ステップＳ１０４１１）。
【００９７】
再び図５を参照する。制御部１２７は、顔検出が成功しなかった場合（ステップＳ１０５；Ｎо）、再びステップＳ１０１に戻る。
【００９８】
一方、顔検出が成功すると（ステップＳ１０５；Ｙｅｓ）、制御部１２７は、ユーザＰに正対するよう顔向き調整を行う（ステップＳ１０６）。ここで、制御部１２７は、ユーザＰと正対しているか否かを判別し、正対していないと判別した場合には、首関節１２１を制御して、ロボット１００の顔（頭１１０の正面）がユーザＰに正対するよう頭１１０を回転する。
【００９９】
続いて、制御部１２７は、ユーザＰがロボット１００に注目しているかどうかを判別する（ステップＳ１０７）。具体的には、制御部１２７は、カメラ１１１を制御して、ユーザＰを撮像し、撮像した画像に対して顔検出を行い、ユーザＰの顔がロボット１００の方を向いているか否かを判別する。あるいは、顔の向きだけではなく、持続時間についても判別してもよい。具体的には、制御部１２７は、カメラ１１１を制御して、所定の期間において複数回撮像し、所定の期間、ユーザＰの顔がロボット１００の方を向いており、かつ、顔の向きが変わっていないか否かを判別してもよい。
【０１００】
制御部１２７は、撮像した画像に基づいて、ユーザＰがロボット１００に注目していないと判別すると（ステップＳ１０７；Ｎｏ）、再びステップＳ１０１へ戻り、音の入力を待ち受ける。
【０１０１】
一方、ユーザＰの顔が、ロボット１００の方を向いていると判別すると（ステップＳ１０７；Ｙｅｓ）、制御部１２７は、ユーザＰに近づくように所定の距離だけ移動し（ステップＳ１０８）、ユーザＰとの距離が決められた距離となったかを判別する（ステップＳ１０９）。このユーザＰとロボット１００との間の決められた距離は、ロボット１００が、ユーザＰが発声する内容を音声認識することができる程度の距離である。制御部１２７は、ユーザＰとロボット１００との間の距離が決められた距離に満たないと判別した場合に（ステップＳ１０９；Ｎｏ）。再びステップＳ１０８に戻る。
【０１０２】
一方、制御部１２７は、ユーザＰとロボット１００との間の距離が決められた距離となったと判別した場合に（ステップＳ１０９；Ｙｅｓ）、ユーザＰと対話する（ステップＳ１１０）。例えば、制御部１２７は、スピーカ１１３を制御して、ユーザＰに対して、例えば、「何かご用ですか？」と話しかけ、また、マイク１１２から入力したユーザの発言を音声解析し、解析した内容に基づいて、なんらかの音声をスピーカ１１３から出力する。
【０１０３】
以上、説明したように、本実施の形態においては、回転完了を待つことなく、顔検出処理を開始する。このため、従来に比べ、回転完了後に顔検出処理の対象となる範囲が狭くなり、回転完了後に顔検出に要する時間を短くすることができる。従って、顔検出の完了の時点を早めることができる。よって、ロボットの応答性を向上することができる。
【０１０４】
なお、上述の説明においては、回転駆動はｙａｗを前提で説明したが、他の方向の回転があっても成立する。
【０１０５】
また、図５のフローのステップＳ１０６の処理のように、また、本実施形態によれば、カメラ１１１によって撮像された画像からユーザＰを検出できても、そのユーザＰがロボット１００と正対していない場合は、制御部１２７は、ユーザＰと正対するようにロボット１００の顔の向きを調整する。このように、制御部１２７が顔向き調整部として機能することでユーザは正対しているロボット１００と円滑にコミュニケーションすることが可能となる。
【０１０６】
本発明は、上記実施形態に限定されず、本発明の要旨を逸脱しない部分での種々の修正は勿論可能である。
【０１０７】
上述の図８、図１０を参照しての説明では、時刻ｔ１〜ｔ４に撮像をする例を示したが、回転途中の撮像のタイミングは、決められた時刻でなくてもよい。撮像のタイミングは任意である。例えば、回転開始から、所定の時間が経過した後に撮像し、当該撮像後、さらに所定の時間が経過した後に撮像する、といった繰り返しでもよい。あるいは、所定の時間間隔ではなく、撮像と顔検出の処理が終わったタイミングで、次の撮像を開始してもよい。
【０１０８】
さらに、また、回転開始の時点で撮像しても、しなくてもよい。判別した音源方向に応じて、回転開始の時点で撮像するか否かを判別してもよい。例えば、カメラ１１１の撮像方向と音源方向とがなす角度が所定の範囲内の場合、回転開始の時点に撮像し、それ以外は、回転開始の時点で撮像しない、といったようにしてもよい。
【０１０９】
上述の実施の形態では、ロボット１００、ユーザＰともに屋内（部屋Ｒ内）にいる例を説明したが、屋外であっても同様に、回転完了前に顔検出処理を開始することができる。
【０１１０】
上述の実施の形態では、回転が完了するまで、撮像と撮像画像の顔検出を繰り返したが、例えば、タイマーを使用し、初回の撮像と撮像画像の顔検出後、所定期間が経過した後に次の撮像と撮像画像の顔検出を行ってもよい。
【０１１１】
上述の顔検出では、ピラミッド画像の階層を順次移動して、顔検出を行ったが、制御部１２７は、マイク１１２の入力音声の大きさ（振幅の大きさ）に基づいて、ロボット１００から音源までの距離を推定し、推定した距離に基づいて、ピラミッド画像の全ての階層について顔検出を行わないようにしてもよい。例えば、ユーザＰが近くにいると判別した場合、ある程度小さく縮小したピラミッド画像を使用する必要はない。
【０１１２】
制御部１２７は、音源から発せられる音が、ロボット１００に向けられたものか否かを判別し、ロボット１００に向けられたものであると判別した場合だけ、撮像、顔検出等の処理を行うことで反応し、その他の場合には、反応しないようにしてもよい。この場合、例えば、マイク１１２に含まれる１３個のマイクとして単一指向性マイクを使用することで、音源から発せられる音の方向を精度良く判別することができる。
【０１１３】
制御部１２７は、決められたタイミングで（例えば、毎正時、２時間おき）、カメラ１１１を制御して、自機の周辺を撮像し、撮像した画像をあらかじめ記憶部１２５に記憶しておく。そして、マイク１１２により音を検出し、音源方向を判別した後、判別した音源方向を含む範囲の画像を記憶部１２５から取得し、取得した画像と、カメラ１１１が撮像した画像とが重複する領域に対して、顔検出を行う。
【０１１４】
この場合、カメラ１１１が、撮像した範囲に、音源であるユーザＰがいる周辺の画像が含まれていないときは、顔検出を行うことがない。よって、無駄な検出処理を行うことがなく、効率的に顔検出を行うことができる。
【０１１５】
また、本発明に係る顔認識装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、ネットワークに接続されているコンピュータに、上記動作を実行するためのプログラムを、コンピュータシステムが読み取り可能な記録媒体（ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ）等）に格納して配布し、当該プログラムをコンピュータシステムにインストールすることにより、上述の処理を実行する顔認識装置を構成してもよい。
【０１１６】
また、コンピュータにプログラムを提供する方法は任意である。例えば、プログラムは、通信回線の掲示板（ＢＢＳ（Ｂｕｌｌｅｔｉｎ  Ｂｏａｒｄ  Ｓｙｓｔｅｍ））にアップロードされ、通信回線を介してコンピュータに配信されてもよい。また、プログラムは、プログラムを表す信号により搬送波を変調した変調波により伝送され、この変調波を受信した装置が変調波を復調してプログラムを復元するようにしてもよい。そして、コンピュータは、このプログラムを起動して、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の制御のもと、他のアプリケーションと同様に実行する。これにより、コンピュータは、上述の処理を実行する顔認識装置として機能する。
【０１１７】
この発明は、この発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この発明を説明するためのものであり、この発明の範囲を限定するものではない。すなわち、この発明の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【０１１８】
（付記）
（付記１）
撮像部と、
第１のタイミングにおいて前記撮像部が撮像した第１の画像と、前記第１のタイミングより後の第２のタイミングにおいて前記撮像部が撮像した第２の画像と、の重複する領域を判別する判別部と、
前記第２の画像のうち、前記判別部が判別した前記重複する領域を除く領域に含まれる人の顔を検出する顔検出部と、
を備えた顔検出装置。
【０１１９】
（付記２）
前記撮像部の撮像方向を変える動作部をさらに備え、
前記撮像部は、前記動作部による前記撮像部の撮像方向を変える動作により、撮像方向が変化している間に、複数回撮像を行う、
付記１に記載の顔検出装置。
【０１２０】
（付記３）
周囲の音を検出する音検出部と、
前記音検出部が検出した音に基づいて、音源の方向を判別する音源方向判別部と、
をさらに備え、
前記動作部は、前記撮像部の撮像方向を前記音源方向判別部が判別した音源の方向に向け、前記撮像部を前記音源の方向に近づけるように、自機を移動する、
付記２に記載の顔検出装置。
【０１２１】
（付記４）
前記顔検出部は、前記音検出部が検出した音の大きさに基づいて、音源を発したものまでの距離を推定し、推定した距離に応じた縮小率の検出窓を顔検出に使用する、
付記３に記載の顔検出装置。
【０１２２】
（付記５）
自機周辺の撮像画像を記憶した記憶部をさらに備え、
前記顔検出部は、前記音源方向判別部が判別した音源の方向を撮像した画像を前記記憶部から取得し、取得した画像と、前記撮像部が撮像した画像と、が重複する領域に対して、顔検出を行う、
付記３または４に記載の顔検出装置。
【０１２３】
（付記６）
前記顔検出部は、前記第１の画像に対して顔検出するとともに、前記判別部が判別した前記重複する領域を除く領域に含まれる人の顔を検出する、
付記１から５のいずれか１つに記載の顔検出装置。
【０１２４】
（付記７）
前記顔検出部は、人の顔の検出を行った領域を検出処理済み領域とし、前記検出処理済み領域以外の領域に対して検出を行う、
付記１から６のいずれか１つに記載の顔検出装置。
【０１２５】
（付記８）
前記判別部は、音源から発せられる音が自機宛てに発せられた音か否かを判別し、自機宛ての音であると判別した場合のみ、前記重複する領域を判別する、
付記１から７のいずれか１つに記載の顔検出装置。
【０１２６】
（付記９）
第１のタイミングにおいて撮像された第１の画像と、前記第１のタイミングより後の第２のタイミングにおいて撮像された第２の画像と、の重複する領域を判別する判別ステップと、
前記第２の画像のうち、前記判別ステップにおいて判別された前記重複する領域を除く領域の画像に含まれる人の顔を検出する顔検出ステップと、
を備えた顔検出方法。
【０１２７】
（付記１０）
コンピュータに、
第１のタイミングにおいて撮像された第１の画像と、前記第１のタイミングより後の第２のタイミングにおいて撮像された第２の画像と、の重複する領域を判別する判別機能と、
前記第２の画像のうち、前記判別機能により判別された前記重複する領域を除く領域の画像に含まれる人の顔を検出する顔検出機能と、
を実現させるプログラム。
【符号の説明】
【０１２８】
１００…ロボット、１１０…頭、１１１…カメラ、１１２…マイク、１１３…スピーカ、１２０…胴体、１２１…首関節、１２２…操作ボタン、１２３…センサ群、１２４…電源部、１２５…記憶部、１２６…足回り部、１２７…制御部、１２５１…呼びかけ応答プログラム
【図１】
2018165881.tif 000010
【図２】
2018165881.tif 000011
【図３】
2018165881.tif 000012
【図４】
2018165881.tif 000013
【図５】
2018165881.tif 000014
【図６】
2018165881.tif 000015
【図７】
2018165881.tif 000016
【図８】
2018165881.tif 000017
【図９】
2018165881.tif 000018
【図１０】
2018165881.tif 000019