以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係る情報処理装置の一例を示した図である。図1に示すように、情報処理装置10は、光源11、撮像部12、及び演算部13を有する。
なお、情報処理装置10は、RAM(Random Access Memory)などの揮発性記憶装置(非図示)、及び、HDD(Hard Disk Drive)又はフラッシュメモリなどの不揮発性記憶装置(非図示)を有していてもよい。演算部13は、CPU(Central Processing Unit)又はDSP(Digital Signal Processor)などのプロセッサであってもよい。演算部13は、ASIC(Application Specific Integrated Circuit)又はFPGA(Field Programmable Gate Array)などのプロセッサ以外の電子回路であってもよい。演算部13は、例えば、上記不揮発性記憶装置に記憶されたプログラムを実行する。
光源11は、被写体M0に赤外光IR0を照射する。光源11としては、例えば、赤外LED(Light Emitting Diode)又は赤外LD(Laser Diode)などが用いられる。
撮像部12は、被写体M0の赤外画像PIR0を撮像する。撮像部12としては、例えば、赤外光IR0を受光して電気信号に変換する撮像素子、及び撮像素子が出力した電気信号から赤外画像PIR0を生成する画像処理ユニットを含む撮像デバイスが用いられる。撮像部12は、光源11により赤外光IR0が照射された被写体M0の赤外画像PIR0を撮像する。撮像部12から出力された赤外画像PIR0は、演算部13に入力される。
演算部13は、顔検出により被写体M0の顔領域F0を検出する(S1)。なお、顔領域F0の検出には、赤外画像PIR0が利用されてもよいし、可視光カメラを利用して別途撮像された可視光画像が利用されてもよい。また、顔領域F0の検出には、例えば、P.Viola and M.Jones, "Robust Real-time Object Detection," Int. J. of Computer Vision, vol.57, no.2, pp.137-154, 2004に記載の顔検出技術などが利用可能である。
演算部13は、赤外画像PIR0における顔領域F0の輝度を計算する(S2)。さらに、演算部13は、赤外画像PIR0のうち顔領域F0よりも輝度が大きい高輝度領域H0を検出する(S3)。例えば、演算部13は、顔領域F0の輝度から閾値Th0を計算し、計算した閾値Th0を用いて高輝度領域H0を検出する。高輝度領域H0を検出した演算部13は、例えば、高輝度領域H0における被写体M0の動きからジェスチャを認識する(S4)。
被写体M0が有する部位のうち、ジェスチャを行う部位(例えば、手)は、ジェスチャを行う際に顔よりも前に位置することが多い。光源11に近い部位ほど赤外画像PIR0内で輝度が高くなるため、赤外画像PIR0の高輝度領域H0に注目してジェスチャの認識処理を実行することで認識精度の向上が期待できる。
また、顔検出により予め検出した顔領域F0の輝度を基準に高輝度領域H0を検出することで、ジェスチャを行う部位が被写体M0の顔と重なる場合でもジェスチャを行う部位に対応する高輝度領域H0を精度良く検出することが可能になる。その結果、ジェスチャの認識精度をさらに向上させることができる。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。
[2−1.ジェスチャ認識方法]
まず、図2を参照しながら、第2実施形態に係るジェスチャ認識方法について説明する。図2は、第2実施形態に係るジェスチャ認識方法の一例を示した図である。以下、簡単のために、被写体Mであるユーザが手でジェスチャを行うことを前提に説明を進める。但し、手以外の部位でジェスチャを行う場合であっても第2実施形態の技術を適用可能である。
第2実施形態のジェスチャ認識方法に係る処理は、情報処理装置100により実行される。図2に示すように、情報処理装置100は、光源101、及びカメラ102を有する。なお、光源101は、赤外LEDや赤外LDなどの赤外光源である。カメラ102は、赤外波長の光に対する感度を有する撮像デバイスである。
ジェスチャ認識の処理を開始した情報処理装置100は、光源101を制御して被写体Mに赤外光IRを照射する。そして、情報処理装置100は、カメラ102により被写体Mの赤外画像(以下、赤外画像PIR)を撮像する。情報処理装置100は、この赤外画像PIRから被写体Mの動きを検出し、ジェスチャの認識処理を実行する。このとき、情報処理装置100は、ジェスチャを行う部位である手の領域(以下、手領域H)を赤外画像PIRの中から検出し、手領域Hに注目してジェスチャの認識処理を実行する。
手領域Hを検出するために、まず、情報処理装置100は、顔検出技術を利用して被写体Mの顔が位置する顔領域Fを検出する。顔検出技術は、画像に含まれる人間や動物の顔を自動検出する技術である。顔認識技術については、例えば、P.Viola and M.Jones, "Robust Real-time Object Detection," Int. J. of Computer Vision, vol.57, no.2, pp.137-154, 2004などに記載がある。顔領域Fを検出した情報処理装置100は、赤外画像PIRにおける顔領域Fの輝度を計算する。そして、情報処理装置100は、手領域Hとして、顔領域Fよりも輝度が高い領域を検出する。
上記のように、第2実施形態に係るジェスチャ認識方法では、顔検出により予め顔領域Fを検出し、顔領域Fの輝度を基準に手領域Hを検出しているため、被写体Mの顔と手とが赤外画像PIR上で重なっている場合でも高い精度で手領域Hを検出できる。その結果、ジェスチャの認識精度が向上する。
以上、第2実施形態に係るジェスチャ認識方法について説明した。以下では、情報処理装置100のハードウェア、機能、及び処理フローについて説明しながら、第2実施形態に係るジェスチャ認識方法について、さらに説明する。
[2−2.ハードウェア]
図3を参照しながら、情報処理装置100のハードウェアについて説明する。図3は、第2実施形態に係る情報処理装置が有する機能を実現可能なハードウェアの一例を示した図である。情報処理装置100が有する機能は、例えば、図3に示す情報処理装置のハードウェア資源を用いて実現することが可能である。つまり、情報処理装置100が有する機能は、コンピュータプログラムを用いて図3に示すハードウェアを制御することにより実現される。
図3に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インタフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。
ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。
また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSD(Solid State Drive)やRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930には、例えば、光源101及びカメラ102が含まれる。その他、外部接続機器としてはプリンタなどが用いられる。
光源101としては、例えば、近赤外波長の光を発する赤外LEDや赤外LDなどが用いられる。カメラ102としては、近赤外波長の光に対して感度を有する撮像素子を含む撮像デバイスが用いられる。なお、可視光波長の光を発する光源101が情報処理装置100に接続されていてもよい。さらに、可視光波長の光に対して感度を有する撮像素子を含む撮像デバイスがカメラ102として情報処理装置100に接続されていてもよい。また、光源101及びカメラ102は情報処理装置100の筐体内部に配置されていてもよいし、筐体外部に配置されていてもよい。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN(Local Area Network)用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
以上、情報処理装置100のハードウェアについて説明した。
[2−3.情報処理装置の機能]
次に、図4を参照しながら、情報処理装置100の機能について説明する。図4は、第2実施形態に係る情報処理装置が有する機能の一例を示したブロック図である。
図4に示すように、情報処理装置100は、画像取得部111と、画像メモリ112と、顔検出部113と、状態判断部114と、手領域検出部115とを有する。さらに、情報処理装置100は、記憶部116と、ジェスチャ認識部117と、処理部118とを有する。
なお、画像取得部111、顔検出部113、状態判断部114、手領域検出部115、ジェスチャ認識部117、及び処理部118の機能は、上述したCPU902などを用いて実現できる。画像メモリ112、及び記憶部116の機能は、上述したRAM906や記憶部920などを用いて実現できる。
画像取得部111は、被写体Mの赤外画像PIRを取得する。画像取得部111により取得された赤外画像PIRは、画像メモリ112に格納される。なお、以下では、画像取得部111が連続的に撮像された被写体Mの赤外画像PIRを取得し、取得した赤外画像PIRが逐次画像メモリ112に格納される場合を想定して説明を進める。また、このように連続して撮像された赤外画像PIRそれぞれをフレームと呼ぶ場合がある。画像メモリ112に格納された赤外画像PIRは、顔検出部113、状態判断部114、及び手領域検出部115により読み出される。
顔検出部113は、最も新しい赤外画像PIR(以下、現フレーム)を画像メモリ112から読み出す。そして、顔検出部113は、顔検出技術を用いて現フレームから被写体Mの顔を含む顔領域Fを検出する。顔検出部113が利用する顔検出技術は任意である。例えば、顔検出部113は、P.Viola and M.Jones, "Robust Real-time Object Detection," Int. J. of Computer Vision, vol.57, no.2, pp.137-154, 2004に記載の顔検出技術を利用する。
上記の顔検出技術は、例えば、被写体Mの目周辺に位置する領域について、上下に隣接する横長の長方形領域を切り出し、長方形領域毎に明度の平均を計算し、上の領域が明るく、かつ、下の領域が暗い場合に顔領域の候補にするという判断基準を利用する。さらに、この顔検出技術では、Integral-Imageを利用し、上記の判断基準に基づく演算を繰り返して顔領域の候補が絞り込まれる。この絞り込みにより最終的に残った候補が顔領域の検出結果とされる。上記の顔検出技術は絞り込み演算が高速であるため、この顔検出技術を適用することで顔領域を短時間で検出することが可能になる。
顔検出部113により検出された顔領域Fの情報は、状態判断部114に入力される。顔領域Fの情報は、例えば、図5に示すような形式で表現される。図5は、第2実施形態に係る顔検出結果の表現方法の一例について説明するための図である。図5の例では、顔領域Fが矩形領域で表現されている。この場合、顔領域Fの左上座標(xf1,yf1)と右下座標(xf2,yf2)との組み合わせで顔領域Fを表現することができる。例えば、顔検出部113は、座標の組(xf1,yf1)及び(xf2,yf2)を顔領域Fの情報として状態判断部114に入力する。なお、顔領域Fの表現形式は上記の例に限定されず、多角形や楕円形で表現する表現形式を利用することも可能である。
現フレームにおいて顔領域Fが未検出である場合、顔検出部113は、現フレームよりも前に撮像された赤外画像PIR(以下、前フレーム)を用いて顔領域Fを検出する。前フレームに対する顔領域Fの検出方法も現フレームに対する顔領域Fの検出方法と同じである。なお、以下では現フレームの直前に撮像された赤外画像PIRを前フレームとして説明を進めるが、設定したフレーム数分だけ前のフレームを前フレームとしてもよい。前フレームにおいて顔領域Fが検出された場合、検出された顔領域Fの情報は状態判断部114に入力される。一方、顔領域Fが未検出の場合、顔検出部113は、未検出である旨の情報を状態判断部114に入力する。
顔検出部113により検出された顔領域Fの情報が入力された場合、状態判断部114は、被写体Mの手と顔との位置関係に関する状態を判断する。ジェスチャを行う場合、手と顔との位置関係は、例えば、次に示す4つのシーンを考慮して分類される。
(シーン1:赤外画像PIR上で顔と手の領域とが半分以上重複していないシーン)
シーン1は、手の領域が占める面積のうち、顔と重複する手の面積よりも、顔と重複しない手の面積の方が大きい状況を想定している。シーン1は、手と顔とが全く重複しない場合を含む。シーン1では顔検出部113により顔領域Fが高い確率で検出される。顔領域Fが検出されると、顔検出部113から顔領域Fの情報が状態判断部114に入力される。
(シーン2:赤外画像PIR上で顔と手の領域とが半分以上重複するシーン)
シーン2は、手の領域が占める面積のうち、顔と重複しない手の面積よりも、顔と重複する手の面積の方が大きい状況を想定している。シーン2では赤外画像PIR上で手と顔とが重複する。但し、シーン2では顔検出部113により顔領域Fが高い確率で検出される状況を想定している。顔領域Fが検出されると、顔検出部113から顔領域Fの情報が状態判断部114に入力される。
(シーン3:手がカメラの直前に差し出されるシーン)
シーン3は、手がカメラの直前に差し出され、赤外画像PIR上で顔の領域が占める面積よりも、手の領域が占める面積の方が大きい場合である。但し、シーン3では顔検出部113により顔領域Fが検出される状況を想定している。顔領域Fが検出されると、顔検出部113から顔領域Fの情報が状態判断部114に入力される。
(シーン4:顔が手で覆われるシーン)
シーン4は、カメラから見た顔の領域が手により覆われている状況を想定している。シーン4は、シーン3よりも赤外画像PIR上で顔と手との重複部分が大きい場合である。例えば、カメラの直前に手を差し出した場合、赤外画像PIR上では手により顔が隠蔽される。シーン4では顔検出部113により顔領域Fが検出されない状況を想定している。この状況では、顔検出部113から未検出である旨の情報が状態判断部114に入力される。
状態判断部114は、シーン1〜4のいずれの状態に該当するかを判断する。
状態判断部114は、赤外画像PIRの顔領域Fにおける各画素の輝度値についてヒストグラムHinを作成する。また、状態判断部114は、赤外画像PIRについて顔領域F以外の領域(以下、非顔領域NF)における各画素の輝度値についてヒストグラムHoutを作成する。そして、状態判断部114は、シーン1〜3について、2つのヒストグラムHin及びHoutに基づいて状態を判断し、判断結果に応じてモードMdを設定する。モードMdは、後述する手領域Hの検出方法に対応する。また、状態判断部114は、シーン4について、現フレーム及び前フレームの比較結果に基づいて状態を判断し、判断結果に応じてモードMdを設定する。
シーン1の状態であると判断された場合にはモードMdが1に設定され、シーン2の状態であると判断された場合にはモードMdが2に設定され、シーン3又はシーン4の状態であると判断された場合にはモードMdが3に設定される。状態判断部114により設定されたモードMdの情報は、手領域検出部115に入力される。
手領域検出部115は、状態判断部114により設定されたモードMdの情報に応じて、被写体Mの手を含む手領域Hの検出方法を選択する。手領域検出部115は、外部手領域検出部131、内部手領域検出部132、全体手領域検出部133、及び顔隠蔽手領域検出部134を有する。
モードMdが1である場合、手領域検出部115は、外部手領域検出部131により手領域Hの検出処理を実行する。モードMdが2である場合、手領域検出部115は、内部手領域検出部132により手領域Hの検出処理を実行する。モードMdが3である場合、手領域検出部115は、全体手領域検出部133又は顔隠蔽手領域検出部134により手領域Hの検出処理を実行する。なお、各要素が実行する処理については後述する。手領域検出部115により検出された手領域Hの情報は、ジェスチャ認識部117に入力される。
記憶部116には、予め設定されたジェスチャの情報が格納されている。例えば、記憶部116には、手の動きにより描かれる軌跡の形状を示す軌跡情報と、ジェスチャをそれぞれ識別するための識別情報とが対応付けて格納されている。また、記憶部116には、ジェスチャ毎に識別情報と、予め設定された処理を示す処理情報とが対応付けて格納されている。
ジェスチャで実行される処理には、例えば、画像の拡大・縮小、音楽や映像の再生・停止、チャンネルの変更、音量調整、プログラムの起動・停止、撮像、電子メールの送信、電源オフなどの処理がある。その他にも、情報処理装置100の形態や用途に応じて様々な処理をジェスチャに対応付けることができる。また、手の動きだけでなく、手の形状(例えば、手を開いた形、拳を握った形など)を組み合わせたジェスチャに処理を対応付けることも可能である。但し、以下では簡単のため、手の動きによるジェスチャが処理に対応付けられている例を想定して説明を進める。
ジェスチャ認識部117は、画像メモリ112に格納された赤外画像PIRを参照し、記憶部116に格納された軌跡情報の中から、手領域Hの描く軌跡に対応する軌跡情報を抽出する。そして、ジェスチャ認識部117は、抽出した軌跡情報に対応付けられたジェスチャの識別情報を出力する。
ジェスチャ認識部117から出力された識別情報は、処理部118に入力される。処理部118は、記憶部116に格納された処理情報の中から、ジェスチャ認識部117から入力された識別情報に対応する処理情報を抽出する。そして、処理部118は、抽出した処理情報が示す処理を実行する。
(外部手領域検出方法について)
ここで、図6〜図8を参照しながら、モードMdが1の場合における手領域Hの検出方法について説明する。図6は、第2実施形態に係る外部手領域検出方法について説明するための第1の図である。図7は、第2実施形態に係る外部手領域検出方法について説明するための第2の図である。図8は、第2実施形態に係る外部手領域検出方法について説明するための第3の図である。
モードMdが1の場合には、顔検出部113により顔領域Fが検出されている。そして、検出された顔領域Fの情報は状態判断部114に入力される。この場合、状態判断部114は、図6の(A1)に示すような顔領域FのヒストグラムHin、及び図7の(B1)に示すような非顔領域NFのヒストグラムHoutを生成する。
なお、図6及び図7において、nはBinの番号を表す。また、簡単のために、Binは輝度値に対応するものとする。例えば、256階調の輝度を考える場合、Binは0〜255の値をとる。モードMdが1の場合には、手領域Hの検出に閾値Thが利用される。閾値Thは、状態判断部114により次のようにして計算される。
状態判断部114は、ヒストグラムHinの低輝度側から高輝度側へ向けて画素数を累積した累積ヒストグラムAHin(図6の(A2)を参照)を生成する。さらに、状態判断部114は、ヒストグラムHoutの高輝度側から低輝度側へ向けて画素数を累積した累積ヒストグラムAHout(図7の(B2)を参照)を生成する。AHin(n)及びAHout(n)は、それぞれ下記の式(1)及び式(2)により与えられる。
AHin(n)=AHin(n−1)+Hin(n) …(1)
AHout(n)=AHout(n+1)+Hout(n) …(2)
状態判断部114は、図8に示すように、累積ヒストグラムの和AHin(n)+AHout(n+1)が最大値をとる輝度値nを計算する。この最大値は、輝度値nの変化に対する累積ヒストグラムAHin及びAHoutの変化量が小さくなる部分に対応する。状態判断部114は、計算した輝度値nを閾値Thに設定する。なお、モードMdが1の場合、閾値Thは、ヒストグラムHinのピーク位置とヒストグラムHoutのピーク位置との間に位置する。
状態判断部114により設定された閾値Thの情報は、手領域検出部115に入力される。外部手領域検出部131は、赤外画像PIRに含まれる画素の輝度値と閾値Thとを比較し、閾値Thよりも大きな輝度値を有する画素の集合を抽出する。外部手領域検出部131は、抽出した画素の集合が成す領域を手領域Hに設定する。このとき、外部手領域検出部131は、抽出した領域の中で最大の輝度値を有する画素の集合が成す領域を手領域Hに設定してもよい。外部手領域検出部131により設定された手領域Hの情報は、ジェスチャ認識部117に入力される。
(内部手領域検出方法について)
次に、図9及び図10を参照しながら、モードMdが2の場合における手領域Hの検出方法について説明する。図9は、第2実施形態に係る内部手領域検出方法について説明するための第1の図である。図10は、第2実施形態に係る内部手領域検出方法について説明するための第2の図である。
モードMdが2の場合には、顔検出部113により顔領域Fが検出されている。そして、検出された顔領域Fの情報は状態判断部114に入力される。モードMdが2の場合も、モードMdが1の場合と同様に状態判断部114により閾値Thが設定される。但し、モードMdが2の場合、閾値Thは、ヒストグラムHoutのピーク位置よりも高輝度側に位置する。この場合、内部手領域検出部132は、前フレームにおける顔領域Fの輝度情報を利用して顔領域Fと手領域Hとを分離する。
内部手領域検出部132は、前フレームFL1と現フレームFL2との間で画素毎に輝度差を計算して差分画像を生成する。そして、内部手領域検出部132は、差分画像の顔領域Fについて輝度差のヒストグラム(図9の(D1)及び図10の(D2)を参照)を生成する。
図9に示すように、前フレームFL1及び現フレームFL2のいずれにも手領域Hが含まれない場合、顔領域Fにおける輝度差がヒストグラム(D1)に分布として現れる。一方、図10に示すように、前フレームFL1には手領域Hが含まれないが、現フレームFL2に手領域Hが含まれる場合、手領域Hの混入に起因する輝度差の分布成分がヒストグラム(D2)の高輝度側に現れる。つまり、このような場合には輝度差のヒストグラムに双峰性(2つの峰を持つ形状となること。)が現れる。
内部手領域検出部132は、前フレームFL1と現フレームFL2との差分画像について輝度差のヒストグラムを生成し、生成したヒストグラムに双峰性が認められるか否かを確認する。双峰性が認められた場合、内部手領域検出部132は、ヒストグラムの高輝度側に現れた分布成分に対応する画素の集合を手領域Hに設定する。内部手領域検出部132により設定された手領域Hの情報は、ジェスチャ認識部117に入力される。なお、輝度差のヒストグラムに双峰性が現れない場合には、現フレームに手領域Hが含まれないと判断される。
(全体手領域検出方法及び顔隠蔽手領域検出方法について)
次に、モードMdが3の場合における手領域Hの検出方法について説明する。モードMdが3の場合、赤外画像PIRにおける大部分の領域が手領域Hであると見なせる。顔領域Fが検出された場合(シーン3の場合)、全体手領域検出部133は、顔領域Fの輝度よりも大きな全ての領域を手領域Hに設定する。全体手領域検出部133により設定された手領域Hの情報は、ジェスチャ認識部117に入力される。
また、シーン4の場合、赤外画像PIR上において顔が手で覆われているため、現フレームから顔領域Fが検出されない。但し、手で顔を覆う前に撮像された前フレームにおいては顔領域Fが検出される。
顔隠蔽手領域検出部134は、前フレームと現フレームとの間で輝度を比較し、現フレームの輝度が大きい場合に手領域Hの検出処理を実行する。そして、顔隠蔽手領域検出部134は、前フレームにおける顔領域Fのヒストグラムのピーク位置に対応する輝度よりも大きい輝度を有する画素の集合を抽出する。次いで、顔隠蔽手領域検出部134は、抽出した画素の集合を手領域Hに設定する。顔隠蔽手領域検出部134により設定された手領域Hの情報は、ジェスチャ認識部117に入力される。
以上、情報処理装置100の機能について説明した。
[2−4.処理フロー]
次に、図11〜図17を参照しながら、情報処理装置100によるジェスチャ認識の処理フローについて説明する。
(全体)
まず、図11を参照しながら、全体的な処理フローについて説明する。図11は、第2実施形態に係るジェスチャ認識の処理フローを示したフロー図である。
(S101)情報処理装置100は、顔検出部113の機能により、顔検出技術を用いて赤外画像PIRから顔領域Fを検出する。例えば、顔検出部113は、P.Viola and M.Jones, "Robust Real-time Object Detection," Int. J. of Computer Vision, vol.57, no.2, pp.137-154, 2004に記載の顔検出技術を利用して顔領域Fを検出する。なお、顔領域Fを検出した場合、顔検出部113は、顔領域Fの検出結果を画像メモリ112に格納する。
(S102)情報処理装置100は、S101の処理で顔領域Fが検出されたか否かを判定する。S101の処理で顔領域Fが検出された場合、処理はS103に進む。一方、S101の処理で顔領域Fが検出されなかった場合、処理はS101に戻る。
(S103)情報処理装置100は、状態判断部114の機能により、上述したシーン1〜4のいずれの状態に該当するかを判断し、その判断結果に応じてモードMdを設定する。
シーン1に該当する場合、状態判断部114は、モードMdを1に設定する。シーン2に該当する場合、状態判断部114は、モードMdを2に設定する。シーン3又はシーン4に該当する場合、状態判断部114は、モードMdを3に設定する。なお、S103の処理については後段において詳述する。
(S104)情報処理装置100は、外部手領域検出部131の機能により、モードMdが1に設定されているか否かを判断する。モードMdが1に設定されている場合、外部手領域検出部131は、赤外画像PIRから手領域Hを検出する。外部手領域検出部131により検出された手領域Hの情報は、ジェスチャ認識部117に入力される。なお、S104の処理については後段において詳述する。また、モードMdが1に設定されていない場合、処理はS105に進む。
(S105)情報処理装置100は、内部手領域検出部132の機能により、モードMdが2に設定されているか否かを判断する。モードMdが2に設定されている場合、内部手領域検出部132は、赤外画像PIRから手領域Hを検出する。内部手領域検出部132により検出された手領域Hの情報は、ジェスチャ認識部117に入力される。なお、S105の処理については後段において詳述する。また、モードMdが2に設定されていない場合、処理はS106に進む。
(S106)情報処理装置100は、全体手領域検出部133の機能により、モードMdが3に設定され、かつ、顔領域Fが検出されているか否かを判断する。モードMdが3に設定され、かつ、顔領域Fが検出されている場合、全体手領域検出部133は、赤外画像PIRから手領域Hを検出する。全体手領域検出部133により検出された手領域Hの情報は、ジェスチャ認識部117に入力される。なお、S106の処理については後段において詳述する。また、モードMdが3に設定されていないか、顔領域Fが検出されていない場合、処理はS107に進む。
(S107)情報処理装置100は、顔隠蔽手領域検出部134の機能により、モードMdが3に設定され、前フレームで顔領域Fが検出され、かつ、現フレームで顔領域Fが検出されていないという設定条件を満たすか否かを判断する。この条件を満たす場合、顔隠蔽手領域検出部134は、赤外画像PIRから手領域Hを検出する。顔隠蔽手領域検出部134により検出された手領域Hの情報は、ジェスチャ認識部117に入力される。なお、S107の処理については後段において詳述する。また、上記の設定条件を満たさない場合、処理はS108に進む。
(S108)情報処理装置100は、ジェスチャ認識部117の機能により、手領域Hの動きが予め設定されたジェスチャの動きに一致するかを判定し、その判定結果によりジェスチャを認識する。ジェスチャを認識した場合、情報処理装置100は、処理部118の機能により、認識したジェスチャに対応する処理を実行する。S108の処理を完了すると、図11に示した一連の処理は終了する。なお、手領域Hが検出されていない場合、ジェスチャの認識が失敗したものとして図11に示した一連の処理は終了する。
(状態判断)
ここで、図12及び図13を参照しながら、図11に示したS103の処理について、さらに説明する。図12は、第2実施形態に係るジェスチャ認識処理に含まれる状態判断処理の流れを示した第1のフロー図である。図13は、第2実施形態に係るジェスチャ認識処理に含まれる状態判断処理の流れを示した第2のフロー図である。なお、図12及び図13に示した処理は、主に状態判断部114により実行される。
(S111)状態判断部114は、顔領域Fにおける画素毎の輝度値を参照し、輝度値毎に画素数をカウントして顔領域FのヒストグラムHinを作成する。このとき、状態判断部114は、顔検出部113による顔領域Fの検出結果を利用して顔領域Fを認識する。例えば、状態判断部114は、図6の(A1)に示すようなヒストグラムHinを作成する。
(S112)状態判断部114は、非顔領域NFにおける画素毎の輝度値を参照し、輝度値毎に画素数をカウントして非顔領域NFのヒストグラムHoutを作成する。このとき、状態判断部114は、顔検出部113による顔領域Fの検出結果を利用して非顔領域NFを認識する。例えば、状態判断部114は、図7の(B1)に示すようなヒストグラムHoutを作成する。なお、S112の処理とS111の処理とは実行順序を入れ替えてもよい。
(S113)状態判断部114は、S111で作成したヒストグラムHinを用いて、顔領域Fの累積ヒストグラムAHinを作成する。例えば、状態判断部114は、ヒストグラムHinの低輝度側から高輝度側へ向けて画素数を累積し、図6の(A2)に示すような累積ヒストグラムAHinを生成する。AHin(n)は、上記の式(1)により与えられる。但し、nは輝度値に対応する。
(S114)状態判断部114は、S112で作成したヒストグラムHoutを用いて、非顔領域NFの累積ヒストグラムAHoutを作成する。例えば、状態判断部114は、ヒストグラムHoutの高輝度側から低輝度側へ向けて画素数を累積し、図7の(B2)に示すような累積ヒストグラムAHoutを生成する。AHout(n)は、上記の式(2)により与えられる。なお、S113の処理とS114の処理とは実行順序を入れ替えてもよい。
(S115)状態判断部114は、下記の式(3)に示す評価関数E(n)が最大値を与える輝度値nを計算する。そして、状態判断部114は、計算した輝度値nを閾値Thに設定する。
E(n)=AHin(n)+AHout(n+1) …(3)
(S116)状態判断部114は、S111で作成した顔領域FのヒストグラムHinを参照し、ヒストグラムHinにおけるピーク値Pinを取得する。このピーク値Pinは、ヒストグラムHinのピーク位置(図6の(A1)を参照)における輝度値nである。
(S117)状態判断部114は、S112で作成した非顔領域NFのヒストグラムHoutを参照し、ヒストグラムHoutにおけるピーク値Poutを取得する。このピーク値Poutは、ヒストグラムHoutのピーク位置(図7の(B1)を参照)における輝度値nである。なお、S116の処理とS117の処理とは実行順序を入れ替えてもよい。S117の処理が完了すると、処理は、図13のS118に進む。
(S118)状態判断部114は、モードMdを0に設定する。つまり、状態判断部114は、モードMdの値を初期化する。
(S119)状態判断部114は、閾値Thが顔領域FのヒストグラムHinにおけるピーク値Pinより大きく、かつ、閾値Thが非顔領域NFのヒストグラムHoutにおけるピーク値Poutよりも小さいか否かを判断する。
閾値Thがピーク値Pinより大きく、かつ、閾値Thがピーク値Poutよりも小さい場合、処理はS120に進む。一方、閾値Thがピーク値Pinより大きくないか、閾値Thがピーク値Poutよりも小さくない場合、処理はS121に進む。
(S120)状態判断部114は、モードMdを1に設定する。つまり、状態判断部114は、シーン1の状態であると判断する。S120の処理が完了すると、図12及び図13に示した一連の処理は終了する。
(S121)状態判断部114は、閾値Thが非顔領域NFのヒストグラムHoutにおけるピーク値Pout以上であるか否かを判定する。閾値Thがピーク値Pout以上である場合、処理はS122に進む。一方、閾値Thがピーク値Pout以上でない場合、処理はS123に進む。
(S122)状態判断部114は、モードMdを2に設定する。つまり、状態判断部114は、シーン2の状態であると判断する。S122の処理が完了すると、図12及び図13に示した一連の処理は終了する。
(S123)状態判断部114は、モードMdを3に設定する。つまり、状態判断部114は、シーン3の状態であると判断する。S123の処理が完了すると、図12及び図13に示した一連の処理は終了する。
以上、ジェスチャ認識処理に含まれる状態判断処理の流れについて説明した。
(外部手領域検出)
次に、図14を参照しながら、図11に示したS104の処理について、さらに説明する。図14は、第2実施形態に係るジェスチャ認識処理に含まれる外部手領域検出処理の流れを示したフロー図である。なお、図14に示した処理は、主に外部手領域検出部131により実行される。
(S131)外部手領域検出部131は、モードMdが1に設定されているか否かを判断する。モードMdが1に設定されている場合、処理はS132に進む。一方、モードMdが1に設定されていない場合、図14に示した一連の処理は終了する。
(S132)外部手領域検出部131は、閾値Thに基づいて赤外画像PIRを二値化する。このとき、外部手領域検出部131は、赤外画像PIRに含まれる画素の輝度値と閾値Thとを比較する。そして、外部手領域検出部131は、輝度値が閾値Thより大きい画素の画素値を1とし、それ以外の画素の画素値を0として二値化画像を生成する。
(S133)外部手領域検出部131は、二値化画像に膨張・収縮処理を施す。膨張処理とは、画素値が1の画素を1層分太くする処理である。例えば、注目画素に隣接する少なくとも1つの画素の画素値が1の場合に注目画素の画素値を1とする。膨張処理により、二値化画像から小さな孔や溝が除かれる。収縮処理は、画素値が1の画素を1層分細くする処理である。例えば、注目画素に隣接する少なくとも1つの画素の画素値が0の場合に注目画素の画素値を0とする。膨張・収縮処理は、膨張処理及び収縮処理の組み合わせである。
(S134)外部手領域検出部131は、S132の処理で画素値が1とされた画素の集合で形成される領域の中から、最大の輝度値を有する画素の集合で形成される領域を抽出する。そして、外部手領域検出部131は、抽出した領域を手領域Hに設定する。S134の処理が完了すると、図14に示した一連の処理は終了する。
以上、ジェスチャ認識処理に含まれる外部手領域検出処理の流れについて説明した。
(内部手領域検出)
次に、図15を参照しながら、図11に示したS105の処理について、さらに説明する。図15は、第2実施形態に係るジェスチャ認識処理に含まれる内部手領域検出処理の流れを示したフロー図である。なお、図15に示した処理は、主に内部手領域検出部132により実行される。
(S141)内部手領域検出部132は、モードMdが2に設定されているか否かを判断する。モードMdが2に設定されている場合、処理はS142に進む。一方、モードMdが2に設定されていない場合、図15に示した一連の処理は終了する。
(S142)内部手領域検出部132は、前フレームにおいて検出された顔領域Fの画像(顔画像)を取得する。例えば、内部手領域検出部132は、画像メモリ112に格納された前フレームから、前フレームにおいて検出された顔領域Fの部分を切り出す。そして、内部手領域検出部132は、切り出した部分を前フレームの顔画像とする。
(S143)内部手領域検出部132は、S142で取得した顔画像のサイズを規格化する。つまり、内部手領域検出部132は、前フレームの顔画像を拡大又は縮小して、現フレームについて検出された顔領域Fのサイズと同じサイズにする。
(S144)内部手領域検出部132は、現フレームの顔画像と前フレームの顔画像との差分である差分画像を生成する。
(S145)内部手領域検出部132は、S144で生成した差分画像のヒストグラム(図9の(D1)及び図10の(D2)を参照)を生成する。図9に示すように、前フレームFL1及び現フレームFL2のいずれにも手領域Hが含まれない場合、顔領域Fにおける輝度差の分布がヒストグラム(D1)に現れる。一方、図10に示すように、前フレームFL1には手領域Hが含まれないが、現フレームFL2に手領域Hが含まれる場合、手領域Hの混入に起因する輝度差の分布成分がヒストグラム(D2)の高輝度側に現れる。つまり、輝度差のヒストグラムに双峰性が現れる。
(S146)内部手領域検出部132は、差分画像のヒストグラムに双峰性があるか否かを判定する。差分画像のヒストグラムに双峰性がある場合、処理はS147に進む。一方、差分画像のヒストグラムに双峰性がない場合、処理はS148に進む。
(S147)内部手領域検出部132は、差分画像のヒストグラムに現れる2つの峰(ピークを有する輝度差の分布)のうち、高輝度側の峰に対応する画素の集合で形成される領域を手領域Hに設定する。S147の処理が完了すると、図15に示した一連の処理は終了する。
(S148)内部手領域検出部132は、モードMdを0に設定する。差分画像のヒストグラムに双峰性がない場合とは、前フレームと現フレームとの間に手領域Hの混入に起因する変化が含まれない場合である。そのため、内部手領域検出部132は、現フレームに手領域Hが含まれていないと判断してモードMdを0に設定する。S148の処理が完了すると、図15に示した一連の処理は終了する。
以上、ジェスチャ認識処理に含まれる内部手領域検出処理の流れについて説明した。
(全体手領域検出)
次に、図16を参照しながら、図11に示したS106の処理について、さらに説明する。図16は、第2実施形態に係るジェスチャ認識処理に含まれる全体手領域検出処理の流れを示したフロー図である。なお、図16に示した処理は、主に全体手領域検出部133により実行される。
(S151)全体手領域検出部133は、モードMdが3に設定されているか否かを判断する。モードMdが3に設定されている場合、処理は、S152に進む。一方、モードMdが3に設定されていない場合、図16に示した一連の処理は終了する。
(S152)全体手領域検出部133は、現フレームから顔領域Fが検出されているか否かを判断する。現フレームから顔領域Fが検出されている場合、処理は、S153に進む。一方、現フレームから顔領域Fが検出されていない場合、図16に示した一連の処理は終了する。
(S153)全体手領域検出部133は、顔領域Fのヒストグラムが有するピーク位置の輝度値を基準に赤外画像PIRを二値化する。このとき、全体手領域検出部133は、赤外画像PIRに含まれる画素の輝度値とピーク位置の輝度値とを比較する。そして、全体手領域検出部133は、ピーク位置の輝度値よりも大きな輝度値を有する画素の画素値を1とし、それ以外の画素値を0として二値化画像を生成する。
(S154)全体手領域検出部133は、S152で生成した二値化画像を用いて顔領域Fの画素を除去する。例えば、全体手領域検出部133は、赤外画像PIRと二値化画像とを重ね、二値化画像で画素値が1の画素を除く全画素について赤外画像PIRの画素値を0とする。
(S155)全体手領域検出部133は、二値化画像に膨張・収縮処理を施す。例えば、全体手領域検出部133は、注目画素に隣接する少なくとも1つの画素の画素値が1の場合に注目画素の画素値を1とする。さらに、全体手領域検出部133は、注目画素に隣接する少なくとも1つの画素の画素値が0の場合に注目画素の画素値を0とする。
(S156)全体手領域検出部133は、画素値が1である画素の集合で形成される領域の中から、最大の輝度値を有する画素の集合で形成される領域を抽出する。そして、全体手領域検出部133は、抽出した領域を手領域Hに設定する。S156の処理が完了すると、図16に示した一連の処理は終了する。
以上、ジェスチャ認識処理に含まれる全体手領域検出処理の流れについて説明した。
(顔隠蔽手領域検出)
次に、図17を参照しながら、図11に示したS107の処理について、さらに説明する。図17は、第2実施形態に係るジェスチャ認識処理に含まれる顔隠蔽手領域検出処理の流れを示したフロー図である。なお、図17に示した処理は、主に顔隠蔽手領域検出部134により実行される。
(S161)顔隠蔽手領域検出部134は、モードMdが3であるか否かを判定する。モードMdが3である場合、処理はS162に進む。一方、モードMdが3でない場合、図17に示した一連の処理は終了する。
(S162)顔隠蔽手領域検出部134は、前フレームで顔領域Fが検出され、かつ、現フレームで顔領域Fが未検出であるか否かを判定する。前フレームで顔領域Fが検出され、かつ、現フレームで顔領域Fが未検出である場合、処理はS163に進む。一方、前フレームで顔領域Fが検出されていないか、現フレームで顔領域Fが検出されている場合、図17に示した一連の処理は終了する。
(S163)顔隠蔽手領域検出部134は、前フレームの輝度よりも設定値Thg以上明るい画素がm以上の割合で存在するか否かを判定する。設定値Thgは、輝度の揺らぎを考慮したオフセットである。割合mは輝度が高くなった領域の割合である。例えば、Thgは15などと設定される。また、30%の領域で手が出現すると仮定した場合、mは0.3などと設定される。なお、Thg及びmの値は試験を実施した結果を踏まえて予め設定されてもよい。
(S164)顔隠蔽手領域検出部134は、前フレームで検出された顔領域Fのヒストグラムが有するピーク位置の輝度値を基準に赤外画像PIRを二値化する。このとき、顔隠蔽手領域検出部134は、赤外画像PIRに含まれる画素の輝度値とピーク位置の輝度値とを比較する。そして、顔隠蔽手領域検出部134は、ピーク位置の輝度値よりも大きな輝度値を有する画素の画素値を1とし、それ以外の画素値を0として二値化画像を生成する。
(S165)顔隠蔽手領域検出部134は、S164で生成した二値化画像を用いて、二値化画像の画素値が1である画素の集合(高輝度領域)を赤外画像PIRから抽出する。そして、顔隠蔽手領域検出部134は、抽出した高輝度領域を手領域Hに設定する。S164の処理が完了すると、図17に示した一連の処理は終了する。
以上、ジェスチャ認識処理に含まれる顔隠蔽手領域検出処理の流れについて説明した。
以上説明したように、第2実施形態においては、顔検出技術を用いて検出された顔領域Fの輝度を基準に、より輝度の高い領域が手領域Hと判断される。そのため、顔領域F及び手領域Hを含む赤外画像PIRの輝度分布から手領域Hを検出するよりも、より高精度に手領域Hを検出することが可能になり、ジェスチャの検出精度の向上に寄与する。
以上、添付図面を参照しながら好適な実施形態について説明したが、本発明は係る例に限定されない。当業者であれば、特許請求の範囲に記載された範疇内において、様々な変形例や修正例に想到し得ることは明らかであり、こうした変形例や修正例についても当然に本発明の技術的範囲に属することは言うまでもない。
例えば、上記説明においては、赤外画像PIRから顔領域Fを検出する処理を例に挙げたが、可視光波長に感度を有する可視光カメラで撮像された可視光画像から顔領域Fを検出することも可能である。但し、赤外光カメラと可視光カメラとの設置位置の違いにより赤外画像と可視光画像との間で位置ずれが生じる。そのため、情報処理装置100は、赤外画像と可視光画像との間の位置ずれを補正する変換処理を顔領域Fに施す。このような変換処理を実施することで、可視光画像を利用した顔検出の結果を赤外画像による手領域Hの検出に適用することが可能になる。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
(付記1) 被写体に赤外光を照射する光源と、
前記被写体の赤外画像を撮像する撮像部と、
顔検出により前記被写体の顔領域を検出し、前記赤外画像における前記顔領域の輝度を計算し、前記赤外画像のうち前記顔領域よりも輝度が大きい高輝度領域を検出する演算部と、
を有する
情報処理装置。
(付記2) 前記演算部は、前記高輝度領域における前記被写体の動きからジェスチャを認識する
付記1に記載の情報処理装置。
(付記3) 前記撮像部は、複数の前記赤外画像を撮像し、
前記演算部は、1つの前記赤外画像から前記被写体の顔領域が検出されなかった場合に他の前記赤外画像から前記被写体の顔領域を検出する
付記1又は2に記載の情報処理装置。
(付記4) 前記演算部は、前記高輝度領域の検出対象とする第1の赤外画像の顔領域と、前記第1の赤外画像より前に撮像された第2の赤外画像の顔領域との差分である差分画像を生成し、前記差分画像の輝度ヒストグラムを計算し、前記輝度ヒストグラムに双峰性が検出された場合、高輝度側に位置する前記輝度ヒストグラムの峰に対応する前記第1の赤外画像の領域を前記高輝度領域とする
付記1又は2に記載の情報処理装置。
(付記5) 前記演算部は、前記赤外画像のうち前記顔領域における第1の輝度ヒストグラムと、前記赤外画像のうち前記顔領域以外の領域における第2の輝度ヒストグラムとを計算し、低輝度側から前記第1の輝度ヒストグラムを累積した第1の累積ヒストグラムと、高輝度側から前記第2の輝度ヒストグラムを累積した第2の累積ヒストグラムとの和が最大値をとる輝度を閾値に設定し、前記閾値より輝度が大きい領域を前記高輝度領域とする
付記1〜4のいずれか1つに記載の情報処理装置。
(付記6) 赤外光が照射された被写体の赤外画像を記憶するメモリを有するコンピュータのプロセッサが、
顔検出により前記被写体の顔領域を検出し、
前記赤外画像における前記顔領域の輝度を計算し、
前記赤外画像のうち前記顔領域よりも輝度が大きい高輝度領域を検出する
被写体部位の検出方法。
(付記7) 前記プロセッサが、前記高輝度領域における前記被写体の動きからジェスチャを認識する
付記6に記載の被写体部位の検出方法。
(付記8) 前記メモリは、複数の前記赤外画像を記憶し、
前記プロセッサが、1つの前記赤外画像から前記被写体の顔領域が検出されなかった場合に他の前記赤外画像から前記被写体の顔領域を検出する
付記6又は7に記載の被写体部位の検出方法。
(付記9) 前記プロセッサが、前記高輝度領域の検出対象とする第1の赤外画像の顔領域と、前記第1の赤外画像より前に撮像された第2の赤外画像の顔領域との差分である差分画像を生成し、前記差分画像の輝度ヒストグラムを計算し、前記輝度ヒストグラムに双峰性が検出された場合、高輝度側に位置する前記輝度ヒストグラムの峰に対応する前記第1の赤外画像の領域を前記高輝度領域とする
付記6又は7に記載の被写体部位の検出方法。
(付記10) 前記プロセッサが、前記赤外画像のうち前記顔領域における第1の輝度ヒストグラムと、前記赤外画像のうち前記顔領域以外の領域における第2の輝度ヒストグラムとを計算し、低輝度側から前記第1の輝度ヒストグラムを累積した第1の累積ヒストグラムと、高輝度側から前記第2の輝度ヒストグラムを累積した第2の累積ヒストグラムとの和が最大値をとる輝度を閾値に設定し、前記閾値より輝度が大きい領域を前記高輝度領域とする
付記6〜9のいずれか1つに記載の被写体部位の検出方法。
(付記11) 赤外光が照射された被写体の赤外画像を記憶するメモリを有するコンピュータに、
顔検出により前記被写体の顔領域を検出し、
前記赤外画像における前記顔領域の輝度を計算し、
前記赤外画像のうち前記顔領域よりも輝度が大きい高輝度領域を検出する
処理を実行させる、プログラム。