図1は本実施の形態を適用できる情報処理システムの構成例を示す。情報処理システム2は、ユーザ1などの対象物を撮影する2つのカメラを搭載した撮像装置12、撮影した画像に基づき、ユーザの要求に応じた情報処理を行う情報処理装置10、情報処理装置10が処理した結果得られた画像データを出力する表示装置16を含む。情報処理装置10はインターネットなどのネットワークと接続可能としてもよい。
情報処理装置10と、撮像装置12、表示装置16とは、有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。撮像装置12、情報処理装置10、表示装置16のうちいずれか2つ、または全てが組み合わされて一体的に装備されていてもよい。また、撮像装置12は必ずしも表示装置16の上に設置されていなくてもよい。さらに被写体の数や種類は限定されない。
撮像装置12は、それぞれがCCD(Charge Coupled Device)またはCMOS(Complementary Metal Oxide Semiconductor)等の撮像素子を備えた2つのデジタルビデオカメラを既知の間隔で左右に配置した構成を有する。2つのデジタルビデオカメラはそれぞれ、同一空間に存在する被写体を左右の位置から所定のフレームレートで撮影する。以後、このように撮影されたフレームの対を「ステレオ画像」とも呼ぶ。
情報処理装置10は、画像平面およびカメラからの奥行き方向を含む3次元空間における被写体の位置を検出する。検出結果は、被写体の位置や動きを入力情報として用いる後段の処理に利用する。例えば被写体であるユーザ1の手や足の動きに反応する仮想オブジェクトを撮影画像上に描画するようなAR(拡張現実)を実現するのに用いる。あるいはユーザ1の動きをトラッキングしてゲームの画像に反映させたり情報処理のコマンド入力に変換したりしてもよい。このように本実施の形態で得られる被写体の位置に係る情報の使用目的は特に限定されない。
表示装置16は、情報処理装置10が行った処理の結果を、必要に応じて画像として表示する。表示装置16は、画像を出力するディスプレイおよび音声を出力するスピーカを有するテレビであってよく、例えば液晶テレビ、プラズマテレビ、PCディスプレイ等である。上述のとおり情報処理装置10が最終的に実行する処理内容や表示すべき画像はその使用目的によって特に限定されるものではないため、以後は情報処理装置10が行う、被写体の位置検出処理に主眼を置き説明する。
図2は情報処理装置10の内部回路構成を示している。情報処理装置10は、CPU(Central Processing Unit)22、GPU(Graphics Porcessing Unit)24、メインメモリ26を含む。CPU22は、オペレーティングシステムやアプリケーションなどのプログラムに基づいて、情報処理装置10内部の構成要素における処理や信号伝送を制御する。GPU24は画像処理を行う。メインメモリ26はRAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
これらの各部は、バス30を介して相互に接続されている。バス30にはさらに入出力インターフェース28が接続されている。入出力インターフェース28には、USBやIEEE1394などの周辺機器インターフェースや、有線又は無線LANのネットワークインタフェースからなる通信部32、ハードディスクドライブや不揮発性メモリなどの記憶部34、表示装置16やスピーカなどの出力装置へデータを出力する出力部36、キーボード、マウス、撮像装置12、マイクロホンなどの入力装置からデータを入力する入力部38、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部40が接続される。
CPU22は、記憶部34に記憶されているオペレーティングシステムを実行することにより情報処理装置10の全体を制御する。CPU22はまた、リムーバブル記録媒体から読み出されてメインメモリ26にロードされた、あるいは通信部32を介してダウンロードされた各種プログラムを実行する。GPU24は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU22からの描画命令に従って描画処理を行い、表示画像を図示しないフレームバッファに格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部36などに出力する。
図3は撮像装置12と情報処理装置10の構成を示している。図3に示す各機能ブロックは、ハードウェア的には、図2に示したCPU、GPU、RAM、各種プロセッサなどの構成で実現でき、ソフトウェア的にはデータ入力機能、データ保持機能、画像解析機能、描画機能などの諸機能を発揮するプログラムで実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
撮像装置12は第1カメラ13a、第2カメラ13bを含む。各カメラはそれぞれ、既知の幅を隔てた左右の位置から所定のフレームレートで被写体を撮影する。撮影して得られるステレオ画像は情報処理装置10からの要求により一般的な手法で随時、情報処理装置10へ送信される。情報処理装置10は、撮像装置12からステレオ画像を取得する画像取得部42、ユーザからの指示入力を取得する入力情報取得部44、撮影画像に基づき対象物の位置情報を生成する位置情報生成部46、対象物の位置に基づき必要な処理を行い出力情報を生成する出力情報生成部50、撮像装置12から入力されたステレオ画像および位置情報生成部46が取得した奥行き画像のデータを記憶する画像記憶部48を含む。
入力情報取得部44は、処理の開始や終了、撮像装置12による撮影以外の手段によるユーザからの指示入力を受け付け、それに応じた処理要求信号をその他の機能ブロックに送信する。入力情報取得部44は、ボタン、キーボード、マウス、トラックボール、タッチパネルなど一般的な入力装置と、当該入力装置になされた操作内容を解釈して処理要求信号を生成するCPUなどの協働により実現する。
画像取得部42は、入力情報取得部44からの要求に従い撮像装置12からステレオ画像等の画像データを取得し、画像記憶部48に格納する。取得する画像は出力情報生成部50が後段で実施する処理や出力する情報に応じて様々であってよい。例えば第1カメラ13aが撮影した画像のみを撮影時のフレームレートで取得し、それより低いレート、すなわち頻度で第1カメラ13a、第2カメラ13bが撮影したステレオ画像を取得するなどでよい。つまり第1カメラ13aが撮影した画像と第2カメラ13bが撮影した画像の取得レートは独立に設定できるようにしてもよい。
位置情報生成部46は、画像記憶部48に格納されたステレオ画像のデータに基づき、被写体のうち特定部位の3次元空間での位置を検出する。位置情報生成部46は奥行き画像取得部52、マッチング処理部54、座標点解析部56を含む。奥行き画像取得部52はステレオ画像を用いて、撮像装置12の視野内に存在する被写体の奥行き方向の位置分布を表す奥行き画像を生成する。被写体の奥行き方向の位置分布は、ステレオ画像法など一般的な技術によって求められる。ここでステレオ画像法は、ステレオ画像の特徴点を対応づけ、それらの視差から被写体の奥行き方向の位置を算出する一般的な手法である。また奥行き画像は、各被写体の撮像装置12からの奥行き方向の距離を、画像平面の2次元座標にマッピングし画素値として表した画像である。
したがって奥行き画像には、人など主たる被写体のほか、椅子や机など撮影対象の空間に存在する各種物体の奥行き方向の位置が、その形状を伴って表される。なお撮像装置12に奥行き画像を生成する機能を設けてもよい。この場合、画像取得部42が奥行き画像のデータを撮像装置12から取得して画像記憶部48に格納し、奥行き画像取得部52がそれを読み出す。あるいは赤外線センサや赤外線カメラ、参照光照射型のカメラなどを別途設け、被写体に照射した赤外線、参照光の反射時間や赤外線画像を解析することにより、被写体の奥行き方向の位置分布を取得し、それに基づき奥行き画像を生成してもよい。いずれの場合も、奥行き画像取得部52は、生成あるいは取得した奥行き画像をマッチング処理部54および座標点解析部56に供給する。あるいは画像記憶部48に格納し、その識別情報をマッチング処理部54および座標点解析部56に通知する。
マッチング処理部54および座標点解析部56は、奥行き画像を利用し、被写体のうち後段の処理に必要な部位の3次元空間での位置を特定する。例えば頭部、手、足など動きのある部位の位置を所定のレートで特定することにより、ユーザの動きを検知でき、これによりゲームを進捗させたりARを実現したりできる。
検出対象の部位によって形状変化や可動範囲などの特性は様々である。例えば頭部はユーザの向きや動きによらずその像の形状変化が小さい。手は形状が変化する可能性が高いが、頭部から推定される肩の位置に対し可動範囲が限定的である。足についても胴体の位置に対し可動範囲が限定的である。本実施形態ではそのような部位ごとの特性を考慮して複数段階で異なる検出手法を適用することにより、効率的かつ高精度な検出を行う。具体的には、マッチング処理部54は、人の頭部の位置をテンプレート画像とのマッチングにより検出する。そのためマッチング処理部54がアクセス可能なメモリなどに、頭部の形状およびサイズを表すマッチング用の基準テンプレート画像のデータを格納しておく。
座標点解析部56は、マッチング処理部54が検出した頭部の位置に基づき、手や足の可動範囲を推定する。そして奥行き画像で表される座標点のうち、当該可動範囲を考慮して設定した検出領域内に存在する座標点に基づき手先や足先の位置を特定する。そのため、形状および大きさを含む検出領域の設定規則、検出領域における対象物の有無を判定するため座標点の数に対し設定するしきい値、各検出領域において手先等のあるべき向きを表す基準ベクトルなどの情報を、座標点解析部56がアクセス可能なメモリなどに格納しておく。
なおマッチング処理部54および座標点解析部56が位置を検出する対象は人の頭部や手足に限定されない。定性的にはマッチング処理部54は形状変化が少ない物、座標点解析部56は可動範囲や方向が推定できる物の検出に適している。また後者の検出は、前者の検出結果を利用して行うのが効率的であるが、処理順を限定するものではない。対象物や環境などによって、前者のみ、後者のみを検出してもよいし、両者を異なるレートで検出してもよい。
出力情報生成部50は、位置情報生成部46から入力された、対象物の位置に係る情報に基づき、画像記憶部48から読み出した撮影画像にさらに描画処理を施すなど、使用目的に応じた処理を適宜行う。上述のとおりここで行う処理は特に限定されず、入力情報取得部44が受け付けたユーザからの指示や実行するプログラムなどに応じて適宜切り替えてよい。処理の結果得られた画像のデータは、表示装置16に出力され表示される。あるいはネットワークを介して別の装置へ送信してもよい。出力情報生成部50はさらに、被写体の動きに応じた音声データを生成し、スピーカから出力するようにしてもよい。
次に、上記構成によって実現される情報処理装置の動作を説明する。図4は情報処理システム2によってなされる情報処理のうち、主に対象物の位置検出に係る処理の基本的な手順を示すフローチャートである。この例では、被写体を人とし、その頭部および手の位置を所定のレートで検出することにより、それらの動きを表示画像に反映させる。まずユーザが入力情報取得部44に対し処理の開始を指示すると、画像取得部42を介した撮影開始要求により、撮像装置12は被写体の撮影を開始する(S10)。情報処理装置10の画像取得部42は、そのようにして撮影された動画像のフレームデータを順次取得し、画像記憶部48に格納する(S12)。このデータには所定のレートでステレオ画像のデータが含まれる。
次に位置情報生成部46の奥行き画像取得部52は、画像記憶部48に格納されたステレオ画像のデータを用いて、被写体の奥行き方向の距離の分布を画素値とした奥行き画像を生成する(S14)。上述のとおり撮像装置12が奥行き画像を生成する機能を含む場合は、画像記憶部48に当該奥行き画像のデータが格納されるため、S34で奥行き画像を生成する代わりに当該データを読み出す。次に位置情報生成部46のマッチング処理部54は、人間の頭部の形状を表すテンプレート画像を用いて奥行き画像とのマッチングを行うことにより、被写体の頭部の像、ひいては3次元空間における頭部の位置を検出する(S16)。
次に位置情報生成部46の座標点解析部56は、頭部の位置に基づき推定できる手の可動範囲に基づき検出領域を決定し、当該検出領域に存在する奥行き画像の座標点に基づき手の位置を検出する(S18)。より詳細には、まず検出領域内の座標点の数に基づき手の存在を検出し、さらにその位置における手先の向くべき方向に基づき手先の位置を検出する。肩や肘を基準とした場合、手はそれを中心とした球面上を可動範囲内で動くため、手先の向きはおよそ当該球面の法線ベクトルで表される。
そこでそのような特性を利用し、当該手先の向くべき方向を検出領域ごとに基準ベクトルとして設定する。そして実際の座標点の分布と比較することにより手先の位置を特定する。ここで「手先」とは拳か手のひらかに関わらず、手の先端部分をいう。手先の位置が判明すれば、手や腕などの位置も撮影画像や奥行き画像における像の連続性により特定できる。肩や肘を、足の付け根や膝に置き換えれば、足先も同様に検出できる。さらに肘や膝も、肩や足の付け根を基準として同様に検出できる。出力情報生成部50は、頭部や手先の3次元空間での位置情報に基づき、使用目的に応じた画像加工処理や画像解析処理などを実施し、必要に応じて処理結果を表す表示画像を生成、出力する(S20)。
ユーザが処理の終了を指示するまで、所定のレートでS12〜S20の処理を繰り返すことにより、対象物の動きを反映した動画像等を出力し続け(S22のN)、処理の終了指示に応じて全ての処理を終了する(S22のY)。なおS20の表示画像出力処理は、S12からS18までの位置検出処理とは独立した周期で行ってよい。例えば表示画像は、撮像装置12が撮影した動画のフレームレートと同等のレートで出力し、検出処理はそれより小さいレートで行ってもよい。またS16における頭部検出処理とS18の手検出処理の周期も異なっていてよい。
次にマッチング処理部54が図4のフローチャート中、S16で行う頭部検出処理について説明する。この処理は人の頭部のほか、位置、向き、動きに対し形状変化の小さい特性を有する対象物について適用できる。まず対象物の奥行き方向の位置とテンプレート画像のサイズの関係について説明する。ここで長さの単位は記載がない限りメートル等で揃えているものとする。図5はステレオ画像における視差と被写体の奥行き方向の位置の関係を説明するための図である。第1カメラ13a、第2カメラ13bは距離Lを隔てた平行な光軸を有するように設置される。このようなステレオカメラに対し、被写体は奥行き方向に距離Z離れた右端の矢印の位置に存在するとする。
各カメラが撮影した画像の1画素が表す実空間での幅Δxは、距離Zに比例して次のように表される。
Δx=Z×w/W (1)
ここでWはカメラの横方向の画素数、wは距離Zが1のときの実空間の横方向の視野範囲であり視角によって定まる。
距離Lだけ離れたカメラで撮影された同一の被写体は、その画像上でおよそ下記のような画素数上の視差D(画素)を有する。
D=L/Δx=L×(W/w)×(1/Z)=C/Z (2)
ここでCはカメラおよびそのセッティングにより定まる値であり、運用時は定数とみなせる。距離Zが1のときの視差Dat1(画素)を既知とすると、任意の視差D(画素)に対し奥行き方向の距離Zは次のように求められる。
Z=Dat1/D (3)
一方、マッチング処理部54が読み出す基準テンプレート画像が、対象物を画素数上の幅ptmp(画素)で表しているとすると、任意の距離Zにいるときの対象物の画素数上の幅p(画素)は、視差D(画素)と同様、奥行き方向の距離Zに反比例し、次のように表される。
p=ptmp ×(Ztmp/Z) (4)
ここでZtmpは、撮影画像中、基準テンプレートに合致するサイズで対象物が表されるときの当該対象物の奥行き方向の距離である。
基準テンプレート1画素が表す実空間での幅をΔxtmp、距離Zが1における、カメラが撮影した画像の1画素が表す実空間での幅をΔxat1とすると、式(1)より、
Δxtmp=Ztmp ×w/W (5)
Δxat1=w/W (6)
であるから、下式が得られる。
Ztmp = Δxtmp/Δxat1 (7)
したがって式(4)は
p=ptmp×Δxtmp/Δxat1/Z (8)
となり、結果として、任意の距離Zにいるときの被写体の画像上のサイズに合わせるために基準テンプレート画像に乗算すべき倍率Mは次の式により求められる。
M=Δxtmp/Δxat1/Z (9)
Δxat1はカメラなどに依存する固定値であるため、準備する基準テンプレート画像に応じてΔxtmpを決定することによりサイズ調整を実現できる。例えば人の頭部の位置を特定する場合、頭部の幅を0.2m程度とし、周囲のマージン領域を含め実際の幅0.3mを幅16画素で表した基準テンプレート画像を準備した場合、Δxtmp=0.3/16=0.019mなどとなる。なお本実施の形態では上述のとおり奥行き画像と、サイズを調整したテンプレート画像とでマッチング処理を行うため、カメラが撮影した画像と奥行き画像の解像度が異なる場合は、奥行き画像の1画素が表す実空間の幅をΔxat1とする。
図6は撮影空間における奥行き方向の軸について説明するための図である。同図上段は撮影空間を上から見た模式図56a、下段は横から見た模式図56bである。第1カメラ13a、第2カメラ13bの視野内には被写体である人物58および人物59が存在している。
なお図5に示したように、第1カメラ13a、第2カメラ13bの光軸は平行で、縦方向のずれはないとする。実際にはずれが生じている場合があるが、そのような環境で撮影された画像は、一般的な手法によりずれのない状態に補正されているものとする。図中、点線は等視差面を表している。ここで等視差面とは、面上の全ての点において視差が等しい平面であり、ひいては(2)式より、カメラからの距離Zが等しく算出される面である。したがって奥行き方向の距離Zは、図示するように当該等視差面に対し垂直な軸(光軸)上での、カメラの撮影面(センサ面)からの距離によって定義される。
図7はマッチング処理部54が行う、テンプレートマッチング処理の手順を模式的に示している。まず上述のとおり対象物の形状およびサイズを規定する基準テンプレート画像60を準備しておく。同図の例では人の頭部を対象物とするため、基準テンプレート画像60は縦長の楕円形を表す画像としている。また基準テンプレート画像60のうち、対象物の形状を表す楕円形の領域を白(画素値1)、それ以外の領域を黒(画素値0)、とした2値画像としている。以後、このデータ形式に則り説明するが、基準テンプレート画像のデータ形式はこれに限らない。
一方、奥行き画像取得部52は、撮像装置12から取得した各時刻のステレオ画像に基づき奥行き画像62を生成する。あるいは上述のとおり撮像装置12から直接、奥行き画像62を取得する。奥行き画像62は画素値が大きいほど奥行き方向の距離Zが小さい、すなわちカメラから近いことを表す画像である。ただし奥行き画像のデータ形式をそれに限る主旨ではない。このような奥行き画像62を画像として表示すると、カメラから近い被写体ほど輝度が大きくなる。
同図では画素値が大きい領域ほど網掛けの密度を小さくすることで画像表示上の輝度の差を表している。すなわち奥行き画像62において、3つの被写体64、66、68が視野内に存在しており、被写体64、66は比較的カメラに近い同様の距離に位置し、被写体68はそれらより遠い距離に位置している。ここで被写体64、68の位置関係は、図6の人物58、59の位置関係に対応している。
マッチング処理部54は、各被写体64、66、68の奥行き方向の距離Zに応じて、式(9)から倍率Mを求めることにより、基準テンプレート画像60を拡縮する。ただし当然、倍率Mが1であれば拡縮は行わない。例えば同図に示すように被写体64の距離Z64、被写体66の距離Z66がZ64≒Z66であり、それらから算出される倍率M64≒M66が1より大きければ、基準テンプレート画像60を当該倍率で拡大する(S30)。そしてその距離にある被写体64、66に対し、拡大したテンプレート画像70を用いてテンプレートマッチングを行う(S32、S34)。
一方、被写体68の距離Z68から算出した倍率M68が1より小さければ、基準テンプレート画像60を当該倍率で縮小する(S36)。そしてその距離Z68にある被写体68に対し、縮小したテンプレート画像72を用いてテンプレートマッチングを行う(S38)。
テンプレートマッチングの処理は次のように行う。すなわちテンプレート画像を奥行き画像上に配置してマッチング評価値を算出する、という処理を、テンプレート画像を微少量ずつ動かしながら繰り返す。これを被写体単位で実施し、いずれかの位置でしきい値以上の良好なマッチング評価値が得られる被写体を対象物と特定し、そのときのテンプレート画像の位置を対象物の位置とする。テンプレート画像の各位置におけるマッチング評価値の算出手順については一般的な手法を適用できる。例えば、双方の画像の画素値の差を表す指標を、テンプレート画像の領域内で合計しマッチング評価値としてもよい。
本実施の形態では、奥行き方向の距離Zの位置にいる被写体の像の領域と、その被写体に適用するテンプレート画像とが一意に対応するため、撮影画像全面に対しテンプレートマッチングを行う一般的な手法に比べ、テンプレート画像を移動させる領域が限定的となる。またテンプレート画像の各位置におけるマッチング評価値の算出処理を、テンプレート画像のサイズを変化させて繰り返す必要がない。図7の例では、被写体64と被写体66は同じ形状で大きさが異なる物体であるが、拡大したテンプレート画像70を用いてマッチングを行えば、所望の対象物は被写体64のみであることがマッチング評価値から判別できる。結果として所望の形状およびサイズの対象物の位置を効率的に検出することができる。
図8は基準テンプレート画像のサイズを調整し、その後にマッチング評価値を算出する具体的な手法を説明するための図である。基準テンプレート画像60、サイズ調整後のテンプレート画像70、72、および奥行き画像62は、図7で示した各画像と同様であるため同じ符号を付している。ただし図8の基準テンプレート画像60は、格子状に区分けすることにより1つの区画で1つの画素を表している。また奥行き画像62はわかりやすさのために被写体64および68の頭部の輪郭のみを実線で示している。
基準テンプレート画像60の横方向の画素数pw(画素)および縦方向の画素数ph(画素)は同図の場合、pw=ph=8としている。ただしこれに限る主旨ではない。マッチング処理部54は、まず奥行き画像62の各画素をラスタ順等で走査し、画素値が所定範囲内にある画素を検出する。ここで所定範囲とは、被写体の奥行き方向の距離として有効な値と考えられる範囲であり、その上限および下限をあらかじめ設定しておく。ゲームなど位置情報の使用目的に応じて範囲を変化させてもよい。
同図ではそのように検出した画素の1つを、画素の座標(i1,j1)で表している。この画素は被写体68の像の領域に含まれている。このような画素が検出されたら、当該画素の位置を中心としてテンプレート画像72を配置する。ただしこの画素の画素値、すなわち奥行き方向の距離Z68に応じた倍率M68(M68<1)で基準テンプレート画像60を縮小するため、配置するテンプレート画像72の横方向の幅は画素数に換算するとpw×M68(画素)、縦方向の幅はph×M68(画素)となる。
そしてテンプレート画像72の画素値と奥行き画像62の画素値を同じ位置で比較する。同図に示すように被写体68に対しては基準テンプレート画像60を縮小するため、テンプレート画像72の画素同士の間隔は奥行き画像62の画素同士の間隔より小さくなる。すなわち比較対象の画素同士が一対一に対応しないことがあり得る。この場合、基本的にはテンプレート画像72の画素に距離が近い奥行き画像62の画素を「同じ位置」とみなす。結果的にテンプレート画像72の複数の画素を奥行き画像62の1つの画素と比較することもあり得る。
テンプレート画像72における各画素の座標を(x,y)とすると、奥行き画像62上において「同じ位置」とみなされる画素の座標(i,j)は例えば次のように求められる。
i=i1+(x−pw/2)× M1 (10)
j=j1+(y−ph/2)× M1 (11)
ここで右辺第2項は四捨五入や切り捨てなどによって整数とする。
被写体64に対するマッチングも同様である。すなわち走査によって検出された画素の1つの座標(i0,j0)が被写体64の像の領域内にあった場合、この画素の画素値は被写体64の奥行き方向の距離Z64であるため、それに従い倍率M64(M64>1)を算出する。そして基準テンプレート画像60を倍率M64で拡大したテンプレート画像70を、当該画素が中心となるように配置する。ここでテンプレート画像70の横方向の幅はpw×M64(画素)、縦方向の幅はph×M64(画素)である。
そしてテンプレート画像70の画素値と奥行き画像62の画素値を同じ位置で比較する。この場合、基準テンプレート画像60を拡大しているため、テンプレート画像70の画素同士の間隔は奥行き画像62の画素同士の間隔より大きくなるが、式(10)、(11)と同様にして、テンプレート画像70の各画素と同じ位置にあるとみなされる奥行き画像62の画素を決定できる。
このようにしてテンプレート画像の画素と奥行き画像の画素とを対応づけたら、双方の画素値を用いてマッチング評価値を算出する。マッチング評価値の算出手法は上述のとおり、一般的なマッチング処理で適用されているものを用いることができるが、本実施の形態では特に次のように算出する。まずテンプレート画像の各画素に対応する奥行き画像の画素の値、すなわち奥行き方向の距離Zを取得したら、その値が、テンプレート画像を配置するきっかけとなった画素、図8の例では座標(i1,j1)や(i0,j0)の画素の画素値であるZ68やZ64から所定の範囲内にあるか否かを判定する。
画素値が所定範囲内にあれば、奥行き画像において座標(i1,j1)や座標(i0,j0)で検出されたのと同一の被写体が該当画素まで連続していると推定できるためである。例えば頭部の位置を検出する場合、前後に10〜30cm程度の範囲内にあれば頭部の連続した面の一部であると判断できる。具体的な範囲は対象物の実際の形状に応じて決定する。
そしてマッチング評価値Vを次にように算出する。
V=Σun×Bn (12)
ここでΣはテンプレート画像の全画素についての合計、unはテンプレート画像のn番目の画素に対応する奥行き画像の画素値が上記のとおり所定の範囲内にある場合に+1、ない場合に−1の値をとる。Bnはテンプレート画像におけるn番目の画素の画素値であり、上述のように対象物の形状の内部にあれば1、なければ0の値をとる。
このような算出手法により、奥行き方向の距離が所定範囲内にある、ひいては一体的な物体であり、かつテンプレート画像として準備した形状およびサイズに近い被写体ほど、あるテンプレート画像の位置において高い評価値Vが得られることになる。なおこの算出手法は一例であり、各画像のデータ形式等によって様々に応用できることは当業者には理解されるところである。
これまで説明した構成によるマッチング処理部54の動作は次のとおりである。図9は図4のS16において情報処理装置10のマッチング処理部54が頭部の位置を検出する処理手順を示すフローチャートである。まずマッチング処理部54は、奥行き画像取得部52が取得した奥行き画像をラスタ順などで走査し、所定範囲内に画素値を有する画素、すなわち有効な被写体の像を表す画素を検出する(S40)。
該当する画素が検出されたら、マッチング処理部54はその画素値、すなわち奥行き方向の距離に応じた倍率で基準テンプレート画像を拡縮させる(S42)。そして図8に示したように当該画素を中心として奥行き画像上に当該テンプレート画像を配置し、各画素と奥行き画像の対応する画素とを用いて式12のようにマッチング評価値を算出する(S44)。S40からS44の処理を、奥行き画像の全ての画素を走査し終えるまで繰り返す(S46のN)。これにより奥行き画像のうち被写体の像を構成する各画素に対しマッチング評価値を対応づけた、マッチング評価値分布を得ることができる。
マッチング処理部54は、当該分布を画像平面上に表したデータ、あるいはそれに基づき対象物と推定される像の領域を表したデータ等を位置情報として出力する(S46のY、S48)。出力された位置情報は、座標点解析部56における検出領域の設定等に利用される。さらに当該位置情報に基づき、出力情報生成部50が頭部の領域を絞り込んだうえで顔認識処理、トラッキング処理など使用目的に応じた画像解析処理を実施し、表示画像の生成に利用してもよい。
図10はS48で出力される位置情報のデータ例を示している。マッチング処理部54は上述のように、奥行き画像の画素に対しマッチング評価値を対応づけたマッチング評価値分布を生成する。そして当該分布において、マッチング評価値が所定のしきい値以上で極大となる点82、84を抽出する。さらに当該極大点82、84を中心にテンプレート画像を配置する。このテンプレート画像は、極大点82、84を中心としたマッチング評価時のサイズ調整と同じ倍率で基準テンプレート画像を拡縮したものである。
そして配置したテンプレート画像における対象物の像に対応する領域を、その他の領域と区別して表すことにより、極大点82、84のそれぞれに対し、所望の対象物の像と推定される領域86、88を表した画像80が得られる。図10の例は図7で示した奥行き画像62から得られる、人間の頭部と推定される領域を他と異なる画素値で表した画像である。なお位置情報として出力する画像80の解像度は特に限定されないが、テンプレート画像は拡大すると図8で示したように画素の間隔が広くなるため、画像80の解像度に応じて適宜補間して領域88を表してもよい。
次に座標点解析部56が図4のフローチャート中、S18で行う手の検出処理について説明する。図11は検出処理において設定する検出領域について説明するための図である。まず撮影画像104に写る像106は、同図左上に示した軸を有する3次元空間(カメラ座標系)に存在する被写体102を、画像平面に投影したものである。撮影画像104が表す空間は、奥行き方向の距離が遠くなるほど大きくなる。ここで、被写体102が存在する3次元空間を奥行き方向の距離Z1、Z2、Z3で分割したとすると、その分割面は図示するように、撮影画像104に平行な3つの面となる。
さらに撮影画像104の画像平面についても、図示するように、縦方向、横方向に領域分割したとすると、それらの分割によって3次元空間が錐台に分割されることになる。ここで被写体102が奥行き方向の距離Z1とZ2の間に存在する場合、撮影画像104における領域108に写る被写体の手は、3次元空間では錐台の領域110に存在することになる。奥行き画像の画素値は、撮影画像104の画像平面における被写体の奥行き方向の距離を表すため、画素の位置座標及び画素値からなる3次元の情報を領域110と比較することにより内外判定ができる。
このように、画像平面および奥行き方向がなす3次元空間の各軸を分割してなる領域を検出領域として設定し、奥行き画像中の像と比較することにより、対象物が当該検出領域に存在するか否かを判定でき、ひいては対象物の位置を検出できる。最も単純には、3次元空間を図示するように分割してなる全ての錐台の領域を検出領域とすれば、対象物がどの位置にあってもいずれかの検出領域で検出されることになる。
一方、本実施の形態では、上述のようにマッチング処理部54によって被写体102の頭部の位置を特定するため、首や肩の位置が推定できる。したがって例えば手を検出する場合、当該肩を基準とした手の可動範囲に対応する領域のみに、1つまたは複数の検出領域を設定する。これにより、検出処理の効率を格段に向上させることができるとともに、手以外の物が検出結果に含まれる可能性を小さくでき、結果として検出精度も向上する。なお図11で示した領域の分割面は一例に過ぎず、例えば検出領域ごとに分割面を異ならせてもよい。検出領域の一部が重なっていてもよい。また後述するように、検出領域を設定する座標系はカメラ座標系に限らず、検出領域の形状も様々であってよい。
図12は、設定した検出領域に対象物が存在するか否かを判定する処理を説明するための図である。検出領域112は図11で示したような錐台の形状を有する。一方、奥行き画像における各画素は、被写体の画像平面上での位置座標および奥行き方向の距離の情報、すなわちカメラ座標系の3次元空間における座標点を表している。実際の被写体の手が検出領域112に入ったとき、奥行き画像において手の像114を構成する画素が表す座標点は、検出領域112内に存在することになる。同図では各画素を黒い点で示している。
したがって、頭部から推定される手の可動範囲に設定した検出領域における座標点の有無によって、手がその位置にあるか否かを判定できる。実際には、一定数以上の座標点の集合によって手の像が表されるため、判定に際しては、座標点の数に対ししきい値を設ける。そしてしきい値以上の座標点が存在する検出領域に手が存在すると判定する。なお判定に用いる座標点の空間解像度は、奥行き画像の解像度と同じでもよいし異なっていてもよい。
図13は、検出領域を設定する座標系と検出領域の形状を例示している。図11に示したように撮影画像は錐台の視体積内の被写体を画像平面に投影したものであり、撮像装置から離れるほど広い範囲の情報が1画素に表れる。したがって、カメラ座標系において奥行き画像の画素が表す座標点(X,Y,Z)に対しX1≦X<X2、Y1≦Y<Y2、Z1≦Z<Z2なる範囲を設定すると、検出領域112は同図(A)に示すように錐台となる。また、撮像装置12の光軸(Z軸)が、図示するように実空間の水平面に対し傾きを有する場合、画像上の縦方向(Y軸)、ひいては検出領域の縦方向は、実空間の鉛直方向とは異なることになる。
一方、検出領域を設定する座標系はカメラ座標系でなくてもよい。例えば撮像装置12に加速度センサを設けることにより重力ベクトルから光軸の傾きを特定すれば、カメラ座標系と、実空間の縦横奥行きからなる3次元座標系、すなわちワールド座標系との関係が判明する。これにより、奥行き画像における画素が表す座標点を、ワールド座標系における座標点に変換することができ、ひいては同図(B)に示すように、ワールド座標系に対し検出領域115を設定することができる。同図の例では、変換後の座標点(X’,Y’,Z’)に対しX’1≦X’<X’2、Y’1≦Y’<Y’2、Z’1≦Z’<Z’2なる範囲が設定されている。
多くの場合において人体は地面や床に対し垂直方向の軸を基準とするため、胴体や立っている足などを検出する場合は特に、ワールド座標系に対し検出領域を設定する方が処理効率や精度の面で有利であると考えられる。ただしこの場合、座標変換が必要となるため、検出対象、想定される動き、要求される精度、演算性能などに応じて、座標系を適応的に選択することが望ましい。
図14は、ある検出領域120において手の存在が検出された場合に、手先の位置を特定する原理を説明するための図である。上述のとおり、手は肩や肘を中心とした球面上を移動する。例えば肘の曲げ角が小さいような動作であれば、腕は図の矢印に例示されるように、肩、すなわち上腕部の付け根を中心とした放射状の動きとなる。この場合、肩を基準点122とし、それに対する検出領域120の相対位置によって、手先の向くべき方向を決定できる。同図の場合、被写体は右手を右斜め上に挙げた結果、基準点122に対し右斜め上方向の検出領域120で手が検出される。このとき手先の向きは、基準点122から当該検出領域120へ向かうベクトル(矢印124)の方向にあると推定できる。
すなわち基準点122を中心とし、手の存在が検出された検出領域を通る球面のうち、当該検出領域の位置における法線ベクトルを、手の向くべき方向を示す基準ベクトルとして決定する。そして検出領域内の座標点と比較することにより手先の位置を特定する。基準点は、検出対象が手先の場合は肩や肘、肘の場合は肩、足先の場合は足の付け根や膝、膝の場合は足の付け根などである。肘が大きく曲がるような動作の場合は、まず肩を基準点として肘の先端部を検出し、そこを基準点として手先を検出するなど段階的に検出処理を進めてもよい。あるいは基準点から手先までの距離に応じて肘の曲げ角を推定し、それに応じて基準点を肩と肘で切り替えてもよい。足の場合も同様である。
図15は基準ベクトルを用いて手先の位置を特定する手法を説明するための図である。図12と同様、検出領域112に手が入ったことにより、その手の像114を構成する画素が表す座標点(白丸および黒丸)が当該検出領域112に存在している。これらの座標点のうち、基準ベクトル126の方向において基準点122から最も遠い座標点が手先の位置を表していると考えられる。そこで基準点122から各座標点への座標点ベクトルと、基準ベクトル126との内積を計算し、その内積値を比較する。
例えば手先付近にある座標点132へのベクトル134と手首寄りにある座標点128へのベクトル130を比較すると、基準ベクトル126との方向差が小さく、より長いベクトル134の方が内積値が大きくなる。この特性を利用し、検出領域112内の全ての座標点について内積値を計算し大きい順に座標点をソートしたうえ、上位の所定数の座標点を抽出すると、それらの座標点はおよそ手先近傍の像を表していることになる。したがって、抽出した座標点が表す位置座標の平均値をとることにより手先の位置座標とする。複数の座標点の平均値を採用することにより、座標点のノイズや誤差の影響を抑えることができる。なお座標点ベクトルの算出においては、座標点と基準点の座標系が一致するように適宜座標変換を行う。
これまで説明した構成による座標点解析部56の動作は次のとおりである。図16は図4のS18において情報処理装置10の座標点解析部56が手の位置を検出する処理手順を示すフローチャートである。まず座標点解析部56は、マッチング処理部54が検出した頭部の位置に基づき検出領域を決定し、さらに当該検出領域の位置に手が存在すると判定する際の、座標点の数のしきい値を決定する(S52)。例えば右手を検出する場合、奥行き画像において特定された頭部の像から首、胴体、とたどることにより右肩の箇所を特定し、そこを中心とし腕の長さを半径とする球面やその内部などに複数の検出領域を分布させる。ゲームの内容などによって動きが限定される場合は、検出領域の分布範囲をさらに限定してもよい。
なお図4のS22におけるループにより、それ以前の時間ステップで既に手が検出されている場合は、その位置を中心に検出領域を決定してもよい。またそれまでの動きから手の位置を予測し検出領域の設定に反映させてもよい。存在を判定するために座標点の数に設定するしきい値は、検出領域の位置によって適応的に決定してよい。例えば撮像装置から遠くなるほど1つの座標点が表す空間が大きくなり、空間に対する座標点が分散する。したがって、ワールド座標系で同じサイズに検出領域を設定する場合などは、撮像装置から遠い検出領域ほどしきい値を小さくする。これにより、カメラからの距離によらず同程度の精度で存在を検出できる。
また室内の明るさや撮影条件などの撮影環境によって、奥行き値の情報取得精度や解像度が異なる場合がある。したがって当該撮影環境等、その時々の状況に応じてもしきい値を切り替えてよい。このため、環境を表す各種パラメータとしきい値との対応を表す情報をあらかじめ準備しておいてもよい。次に、奥行き画像の画素が表す3次元空間での座標点のうち、設定した検出領域内に存在する座標点の数をカウントする(S54)。
座標点の数がしきい値以上の場合(S56のY)、当該検出領域の位置に手があると判断し、その先端、つまり手先の位置を検出する処理を行う(S58)。座標点の数がしきい値より小さい場合は、その位置に手がないとして処理を終了する(S56のN)。S52において複数の検出領域を設定した場合は、S54からS58の処理を検出領域ごとに行う。
図17は図16のS58において座標点解析部56が行う、手先の位置を検出する処理の手順を示すフローチャートである。まず先端を特定する対象となる領域を決定する(S60)。図15の説明では、手の存在を検出するために設定した検出領域112をそのまま用い、その中にある座標点について内積を計算し比較した。一方、存在を検出するために設定する検出領域と、先端を検出するために内積の比較対象とする座標点集合を定める領域とは、必ずしも同じでなくてもよい。以後の説明では前者を「存在検出領域」、後者を「先端検出領域」と呼ぶことがある。
図18は、手の存在を検出するための存在検出領域と、先端の位置を検出するための先端検出領域とを異ならせる例を模式的に示している。この例では、存在検出領域140a、140b、140c、140dの4つの領域に手が渡っている。この場合、例えば存在検出領域140dのように、座標点の数がしきい値以上となる存在検出領域に手先が含まれていないことがあり得る。また複数の存在検出領域で座標点の数がしきい値以上になることも考えられる。そのため、隣接する複数の検出領域において連続して座標点の集合が存在する場合は、それらを包含するように先端検出領域を設定し直す。図示する例では、4つの存在検出領域140a、140b、140c、140dを統合し、1つの先端検出領域とすればよい。
逆に、存在検出領域を分割するなどしてその一部を先端検出領域としてもよい。例えば手の像を表す座標点の集合以外に、ノイズや誤差によって座標点が存在する場合がある。この場合、当該ノイズを含む領域を、先端検出領域から除外することにより、当該ノイズを先端として誤認識しないようにする。いずれの場合も、存在を検出した座標点集合(クラスタ)全体が入り、かつ集合から離れた余分な座標点が入らない領域を先端検出領域として適切に設定することにより検出精度が向上する。
例えば検出領域のサイズを微調整しながらそれに含まれる座標点の数を取得していき、数の変化に基づき適切なサイズの先端検出領域を決定してもよい。あるいは存在検出領域140dのように先端の位置が領域の端近傍にある場合に、当該存在検出領域140dに隣接する存在検出領域140a、140b、140cを先端検出領域に含めるようにしてもよい。
図17に戻り、次に座標点解析部56は、設定した先端検出領域に対する基準ベクトルを図14で説明したように決定し(S62)、各座標点に対応するベクトルとの内積を計算する(S64)。次に内積値の大きい順に座標点をソートし、上位の所定数の座標点を抽出する(S66)。そして各座標点が表す位置座標の平均値を算出することにより、手先の位置とする(S68)。
図16のS52や図17のS60では、カメラ座標系およびワールド座標系の双方に対し存在検出領域や先端検出領域をそれぞれ設定してもよい。またそれらの検出領域は、各座標系の座標軸を分割してなる錐台あるいは直方体の領域のみならず、検出対象の形状や可動範囲などに応じた任意の立体形状を有していてよい。図19は複数の座標系に複数の形状を有する検出領域を設定した例を模式的に示している。同図において検出領域150は、カメラ座標系に対し設定された錐台形状を有する。検出領域152および154は、ワールド座標系に対し設定され、前者は球形状、後者は円柱形状を有する。
例えば人が直立している状態は鉛直方向を軸とする円柱あるいは四角柱に近いため、そのような検出領域とすることにより、存在の検出や先端の検出において、その他の部位や周辺環境の影響を排除しやすい。また腕全体を検出する場合は、肩を中心とした球形状に検出領域を設定することにより、その可動範囲を網羅することができる。このように、存在や先端を検出する対象、検出結果の使用目的等に応じて、検出領域の形状を、錐台、直方体、球、楕円体、柱体、錐体などから適切に選択することが望ましい。
異なる形状の検出領域を同時に複数の領域に設定し、それぞれに対し、対象物の存在や先端を検出してもよいし、まず、ある形状の検出領域において存在や先端を検出したあと、少なくとも一部の領域が重複するように別の形状の検出領域を設定して存在や先端を検出し直すことにより、検出効率や精度を向上させてもよい。図20は異なる形状の検出領域を重複するように設定して段階的に検出を行う態様の例を模式的に示している。この例ではまず、カメラ座標系に対し設定した錐台の検出領域112によって、手114の存在を検出する。
当該検出領域112に存在する座標点の数がしきい値以上であったら、例えば当該錐台に内接する球形状の検出領域160を設定し、その中に存在する座標点の数をしきい値と比較する。錐台に対するしきい値と球形状に対するしきい値は同じでも異なっていてもよい。球形状の検出領域160内の座標点の数がしきい値以上であったら、その位置に手があることを最終的に判定する。あるいは当該球形状の検出領域160内の座標点に基づき先端を検出する。
このようにすることで、座標変換を必要とせず演算負荷の低い錐台の検出領域112をより多く設定して手が存在する可能性の高い領域をおよそ同定し、その部分にのみ、手のひらの形状や可動範囲に近い球形状の検出領域160を設定したうえ高精度に存在や先端を検出する、という構成を実現でき、処理効率と検出精度を両立できる。なお同図は錐台とそれに内接する球を例示したが、形状の組み合わせや位置関係は、検出対象の形状や動きの特性などによって適宜選択してよい。
これまでの説明では、中に存在する座標点に基づき存在や先端部を検出するために検出領域を設定した。これを応用し、中に存在する座標点を処理対象から除外するための領域を不感領域として設定してもよい。図21は検出領域とともに不感領域を設定する態様を説明するための図である。図示するようにユーザ170の手が頭の近傍にある可能性を含め、手を検出する場合、そのための検出領域172は頭部の像を含むことがあり得る。
すると、同図右側に拡大して示すように、検出領域172には頭部の像176を表す座標点が含まれてしまうため、手がその位置になくても座標点の数がしきい値以上となれば手の存在として誤検出してしまう可能性がある。また図示するように手の像174を表す座標点が実際にあったとしても、頭部の像176を表す座標点によって先端の検出に誤差を生じさせる可能性もある。
そこで、頭部の像を含む所定範囲の領域に不感領域178を設定することにより、その中に存在する座標点は検出処理の対象から除外する。この場合、不感領域178は、マッチング処理部54が検出した頭部の中心を中心とする楕円体などで設定する。頭部に限らず、体幹部や足など、検出対象以外の部位に対し不感領域を設定してもよい。設定に際しては、マッチング処理部54による検出結果のみならず、座標点解析部56自身が前の時間ステップで検出した結果を利用してもよい。いずれの場合も、検出領域について上述したのと同様、部位の形状に応じて不感領域の形状を適宜選択してよい。このようにすることで、広範囲に多くの検知領域を設定する場合や、検出対象の部位が他の部位と接近する可能性が高い場合などでも、検出誤差を抑えることができる。
不感領域は同じ被写体の部位以外に、カメラの視野に含まれる周辺の物に対し設定してもよい。図22は床に対し不感領域を設定する例を模式的に示している。ユーザ182の足先を検出する場合、足の甲の可動範囲である検出領域180a、180b、180cなどを設定する。ここで検出領域180cのように、足が床に接地している状態を検出するための検出領域では、常に床の像が含まれるため足がなくても存在を検出してしまうことが考えられる。また、実際に足が接地していても、足と床の区別がつかず足先の検出ができなくなってしまう。
そこで、床面以下の領域に対し不感領域180を設定することにより、足の存在や足先の検出を精度よく行えるようにする。この場合、マッチング処理部54、あるいは座標点解析部56は、撮像装置12が撮影を開始した時点などにおいて、床面の位置を検出しておく。図23はこのような態様において天井面や床面を検出する手法を説明するための図である。同図右側は撮影環境を横から見た模式図250であり、左側は当該撮影環境で撮影された画像252の模式図である。
このような撮影環境において、撮像装置12が加速度センサを備えている場合、重力ベクトル266に基づき、撮影画像の平面に対する天井面254、床面256の面、すなわちワールド座標系における水平面が判明するため、原理的にはその高さを特定すればよいことになる。そこで、例えば図示するように、天井面254、床面256の存在を検出するための検出領域270、272を、ワールド座標系における水平面に敷き詰めるとともにそれと垂直な方向に積層させるように設定する。図中、矩形で表される各検出領域270、272は、四角形の平板状を想定しているが、その他の形状でもよい。
そして検出領域内の座標点の数に基づき床面および天井面の高さを特定する。最も単純には、各高さ(層)の検出領域内に存在する座標点を合計し、最も多い座標点が得られた高さを床面や天井面とする。あるいはさらに、重力ベクトル266から推定されるワールド座標系の水平面と実際の水平面に誤差が生じている場合を考慮し、想定水平面の角度を調整してもよい。図24は検出領域の角度を調整し正しい水平面を検出する手法を説明するための図である。同図左側は想定する水平面と実際の床面256の角度がずれている場合を示している。
この場合まず、検出領域のうち最も座標点の数が多い検出領域、あるいは上下の検出領域を比較し座標点の数が突出している検出領域を抽出し、少なくともその位置には床が存在すると推定する。同図においては検出領域280が抽出される。そして抽出した検出領域280の重心等を中心に、想定される水平面の角度を微調整しながら、検出領域280と同じ高さに設定した各検出領域内の座標点を数えていく。全ての検出領域に同程度の座標点が入ったときの検出領域272bが、実際の床面を表すことになる。そして当該検出領域272bを、実際の運用時に足先などを検出する際の不感領域として利用すればよい。
上述は、座標点解析部56が、検出領域内の座標点を利用して床面や天井面を検出する手法であったが、マッチング処理部54がマッチング処理によって床面や天井面を検出することも考えられる。この場合、左右のステレオ画像同士をマッチングする。具体的には、ワールド座標系における想定される水平面に対し、検知面を設定する。ここで検知面とは、その面上に被写体があるか否かを判定するために3次元空間に任意に設定する面である。
そして当該検知面を画像平面に投影した場合の領域を、ステレオ画像を構成する左右の撮影画像から切り出す。このとき、左右どちらかの切り出し領域を、他方の画像における切り出し領域より視差分だけ左あるいは右にずらす。床面や天井面の場合、面がワールド座標系における前後に分布しているため、手前側の像を表す画素ラインほど大きくずらす必要がある。すらし量は上述の式(2)を用いることができる。
このようにして切り出した両画像を、特徴点などに基づきマッチングする。このとき特徴点として抽出されるのは、天井の照明器具、タイルなどの建材の連結部分が形成する格子模様、絨毯の模様などである。床面や天井面が、設定された検知面と一致していれば、ステレオ画像から視差を考慮して切り出した画像は原理的には全く同一のものとなる。一方、床面や天井面が検知面とずれているほど、両画像は差が大きくなる。したがって、複数の高さや角度で設定した検知面のうち、切り出した画像同士のマッチング評価値の合計が最も高いときの検知面を、床面や天井面として特定することができる。
このように検知面を利用する場合も、初めに高さ方向に複数の平行な検知面を分布させてマッチングを行い、評価値の合計が高かった検知面のうち、評価値が高い部分を中心に検知面の角度を調整して再度マッチング処理を行う、という2段階の処理としてもよい。検出領域を利用する場合も検知面を利用する場合も、撮像装置12に加速度センサを設け重力ベクトルを取得するようにすれば、角度については微調整ですむことになる。ただし加速度センサがない場合であっても、上述のように想定水平面の角度を調整すれば床面等を正確に検出できる。
なお図22の態様では、足先を検出するために床面以下の領域に不感領域180を設定したが、天井近傍にある対象物を検出する場合は、上述のように検出した天井面以上の領域を不感領域とする。同様の手法を垂直方向の面に応用して壁面を検出し、当該壁面に不感領域を設定してもよい。不感領域はこれら以外に、検出対象としているユーザ以外の人の体や、検出対象の手や足と逆側の手や足に対し設定してもよい。検出対象以外の他人の体は、検出した頭部の位置や頭部領域内部に対する顔認識処理などに基づき特定できる。同一人物の逆側の手や足は、前の時間ステップで検出した手先や足先からの、微少時間における可動範囲に基づき判別できる。さらに所定時間、座標点の時間変化がない領域を、家具などの物の像として抽出し、当該領域に不感領域を設定してもよい。
このように不感領域を臨機応変に設定することにより、手が体、顔、家具に触れるなど、検出対象が他の物に近づくような状況であっても、検出領域の設定サイズによる検出精度への影響を抑えることができる。すなわちノイズ誤差が小さく先端形状が判明しやすい十分な大きさの検出領域を設定することにより、他の物が当該検出領域に入りやすくなっても、その影響を小さくすることができる。結果として状況によらず、対象物のみに着目してその存在や先端を、高精度かつ高感度に検出できる。これにより、例えば手や腕の大きな動きばかりでなく、手先の細かな動きをも検出し、それに応じた多様な情報処理を行える。
以上述べた本実施の形態によれば、テンプレートマッチングにより検出した頭部など基準部位の位置に基づき、手や足など必要な部位の検出領域を設定する。そして奥行き画像の各画素が表す3次元座標を3次元空間に表したときの座標点のうち検出領域に入っている座標点の数に基づき、対象部位の存在を検出する。これにより、全空間に対し何らかの検出処理を行うのに比べ処理の負荷が軽く、かつ他の物やノイズの影響を受けにくい検出技術を実現できる。
また、そのようにして存在を検出したら、手の場合は肩や肘、足の場合は足の付け根や膝など、人体の動きを考慮した基準点を設定し、当該基準点に対する検出領域までの位置応じて、対象部位の先端の向くべき方向を表す基準ベクトルを特定する。そして、基準点から検出領域内の座標点へのベクトルと基準ベクトルとの内積を比較することにより、対象部位の先端部を表す座標点を抽出し、それに基づき位置を特定する。これにより、対象部位が向く方向によらず、人体の動きという拘束条件を利用して、精度のよい先端部検出を行える。先端部の位置が判明すれば、奥行き画像あるいは撮影画像から、人体全体の状態や姿勢を特定することができるため、ゲームなど様々な目的に活用できる。
存在検出領域や先端検出領域は、使用目的、対象部位の形状や動きなどに応じてその形状を自由に設定できるため、使用状況によらず、処理負荷を抑えながら高精度な検出を行える。また、検出領域と同様に不感領域を設定することにより、処理負荷を増大させることなく対象部位のみを正確に検出できる。これらのことから、人の動きを利用した精度の高いユーザインターフェースを提供できるとともに、ゲームやARなどにおいて応答性のよい画像表示を行える。また、検出結果を撮像装置12における撮影条件にフィードバックすれば、顔、手、足など処理において重要な部位に露出を合わせるなどした撮影画像が得られ、部屋の明るさなどの撮影環境によらずその後の処理の精度をさらに向上させることができる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。