以下に、本願の開示する画像処理装置、画像処理方法及び画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[情報処理装置の構成]
まず、本実施例に係る画像処理装置を含む情報処理装置の機能的構成について説明する。図1は、実施例1に係る画像処理装置の機能的構成を示すブロック図である。図1に示す情報処理装置1は、カメラ3によって撮像された画像から人の身振りや手振り、いわゆるジェスチャを操作情報として認識するマンマシンインタフェースが組み込まれた端末装置である。
図1に示すように、情報処理装置1は、カメラ3と、第1の認識部5aと、第2の認識部5bとを有する。なお、情報処理装置1は、図1に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどを始め、他の装置との通信を制御する通信インターフェースなどの機能部を有することとしてもかまわない。
このうち、カメラ3は、画像を撮像する撮像装置である。かかるカメラ3の一態様としては、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)などを用いた撮像装置が挙げられる。
かかるカメラ3は、図示しない表示部の表裏のうち画面が表示される表側と同じ方向を撮像可能に設置される。このカメラ3によって経時的に撮像された画像には、情報処理装置1の表示部の表側に相対する操作者が映る場合がある。そして、操作者が映る画像の中には、操作者がカメラ3に向けてジェスチャを行った様子が含まれる場合がある。なお、以下では、カメラ3によって撮像された画像のことを「カメラ画像」と記載する場合がある。
第1の認識部5aは、人体の部位、例えば手の形状を画像認識してからその部位の動きを追跡する第1の方式によってジェスチャを認識する処理部である。かかる第1の方式のジェスチャ認識には、上記の特許文献1や特許文献2に記載された技術の他、公知の技術を任意に採用することができる。
一態様としては、第1の認識部5aは、後述の画像処理装置10からの指示にしたがってカメラ画像から手の形状や姿勢を認識する。そして、第1の認識部5aは、手の形状や姿勢の認識に成功した場合には、以降に手の形状や姿勢が認識できなくなるまでカメラ画像上における手の動きを追跡することによってジェスチャを認識する。このとき、第1の認識部5aは、手の形状や姿勢の認識に成功する度に、以降のフレームで手の動きを追跡するための追跡座標p(x,y)、例えば手の中心位置や重心位置などの座標を後述の画像処理装置10へ出力する。また、第1の認識部5aは、手の形状や姿勢の認識に失敗した場合や後述の第2の認識部5bによってジェスチャ認識が実行されている場合には、追跡座標p(x,y)として(0xFFFF,0xFFFF)を後述の画像処理装置10へ出力する。なお、第1の認識部5aは、手の動きからジェスチャを認識した場合には、当該ジェスチャに対応するコマンド、例えば図示しないアプリケーションプログラムやOSなどのソフトウェア、表示部や音声出力部などのデバイスに対するコマンドを実行する。
第2の認識部5bは、時系列に撮像されるカメラ画像から動きがある領域であってジェスチャを認識する対象である人の手を特徴付ける色を有する領域を検出する第2の方式によってジェスチャを認識する処理部である。かかる第2の方式のジェスチャ認識には、上記の特許文献3に記載された技術の他、公知の技術を任意に採用することができる。
一態様としては、第2の認識部5bは、後述の画像処理装置10からの指示にしたがってカメラ画像のフレーム間で動きがある肌色の領域を検出する。このとき、第2の認識部5bは、第2の方式によってジェスチャ認識を開始してから所定のフレーム数Tにわたってカメラ画像が入力されるまで動きがある肌色の領域を検出する処理を繰り返し実行する。そして、第2の認識部5bは、所定のフレーム数Tの間で動きがある肌色の領域が所定の閾値以上である場合には、その領域の形状に対応するジェスチャが実行されたと認識する。なお、第2の認識部5bは、動きからジェスチャを認識した場合には、当該ジェスチャに対応するコマンド、例えば図示しないアプリケーションプログラムやOSなどのソフトウェア、表示部や音声出力部などのデバイスに対するコマンドを実行する。
さらに、情報処理装置1は、カメラ3から取得されたカメラ画像を第1の認識部5a及び第2の認識部5bのうちいずれの認識部によってジェスチャ認識させるのかを選択する機能がモジュール化された画像処理装置10を有する。
ここで、本実施例に係る画像処理装置10は、カメラ3から取得されたカメラ画像からジェスチャを認識する対象を特徴付ける色を有する画素を抽出する。さらに、本実施例に係る画像処理装置10は、カメラ画像から先の色を有する画素が抽出されることによって得られた色画像のフレーム間で差分を抽出する。さらに、本実施例に係る画像処理装置10は、色画像のフレーム間で差分が抽出された領域の大きさに基づいて、第1の方式および第2の方式のうち一方の方式を選択する。
このため、本実施例に係る画像処理装置10では、第1の方式および第2の方式のうちジェスチャを認識できる可能性が高い方の方式を適応的に選択できる。例えば、本実施例に係る画像処理装置10では、ジェスチャ認識時にカメラ画像のフレーム間で動きのある肌色の領域が大きい場合には動き重視の第2の方式を選択し、また、動きのある肌色の領域が小さい場合には形状重視の第1の方式を選択することができる。
それゆえ、本実施例に係る画像処理装置10では、第1の方式で認識が困難であるジェスチャを第2の方式によって認識できる。例えば、本実施例に係る画像処理装置10では、第1の方式を選択することによって動きが大きいジェスチャ、例えば手がカメラ3の撮像範囲を横断または縦断するパターンのジェスチャを認識できる。また、本実施例に係る画像処理装置10では、第2の方式で認識が困難であるジェスチャを第1の方式によって認識できる。例えば、本実施例に係る画像処理装置10では、第2の方式を選択することによって動きが小さいジェスチャ、例えば手を静止又はそれに準じた状態から上下左右等に動かすパターンのジェスチャを認識できる。
したがって、本実施例に係る画像処理装置10によれば、多様なパターンのジェスチャを高精度に認識することが可能になる。さらに、本実施例に係る画像処理装置10は、第1の方式または第2の方式を排他的に選択する。このため、本実施例に係る画像処理装置10では、第1の方式および第2の方式のジェスチャ認識を並行して実行させる場合よりも処理負荷を低減できる。よって、本実施例に係る画像処理装置10によれば、パーソナルコンピュータ等よりも処理性能が劣る移動体端末にもジェスチャ認識を適用することが可能になる。
[画像処理装置の構成]
続いて、本実施例に係る画像処理装置10の機能的構成について詳細に説明する。図1に示すように、画像処理装置10は、画像取得部11と、肌色抽出部12と、肌色画像記憶部13と、肌色差分抽出部14と、輝度画像記憶部15と、輝度差分抽出部16と、方式選択部17とを有する。
このうち、画像取得部11は、画像を取得する処理部である。一態様としては、画像取得部11は、カメラ3によって撮像されるカメラ画像を順次取得する。他の一様としては、画像取得部11は、インターネットやLAN(Local Area Network)などのネットワークを介して画像を取得することもできる。更なる一態様としては、画像取得部11は、メモリカードやUSB(Universal Serial Bus)メモリなどの記録媒体から画像を取得することもできる。なお、以下では、カメラ3を始めとする各種の入手経路を介して取得される画像であって後段の処理部によって加工される前の画像のことを「原画像」と記載する場合がある。
肌色抽出部12は、画像取得部11によって取得された原画像からジェスチャを認識する対象を特徴付ける色を有する画素を抽出する処理部である。一態様としては、肌色抽出部12は、原画像Iに含まれる画素をラスタースキャンすることによって各画素の画素値をRGB表色系からHSV表色系へ変換する。その上で、肌色抽出部12は、HSV表色系に変換された画素の色相Hおよび彩度Sが所定の範囲、例えば予め肌色であると定義された肌色領域内に含まれるか否かによって2値化する。なお、RGB表色系からHSV表色系への変換については、一例として、「松橋 聡,藤本 研司,中村 納,南 敏,“顔領域抽出に有効な修正HSV表色系の提案,”テレビ誌,vol.49,no.6,pp.787−797,June 1995」に記載の技術を採用できる。
これを説明すると、肌色抽出部12は、原画像I(x,y,t)に含まれる各画素のRGB値を下記の式(1)〜式(3)に代入することによってHSV表色系の色相H、彩度S及び輝度Vへ変換する。そして、肌色抽出部12は、色相H及び彩度Sを含んで構成されるHS平面に投影された画素の色相Hおよび彩度SがHmin及びHmaxとSmin及びSmaxとによって定義される肌色領域に含まれるか否かを判定する。
図2は、肌色領域の一例を示す図である。図2の例では、グラフの縦軸が彩度Sを指し、グラフの横軸が色相Hを指す。図2に示す例で言えば、HS平面上でHmin及びHmaxとSmin及びSmaxとによって囲まれる部分、すなわち図中の斜線の網掛け部分が肌色領域となる。なお、上記の「Hmin」、「Hmax」、「Smin」及び「Smax」の値には、任意の値を設定することができる。一例としては、カメラ3の特性、例えばカメラ3から操作者がジェスチャを行うと推定される距離や太陽または照明が当たる角度をもとに設定することとしてもよい。他の一例としては、操作者が限定されている場合には、全操作者の肌を含み得る範囲内であれば肌色領域を拡張したり、縮小したりすることもできる。
このような肌色領域の設定の下、肌色抽出部12は、HS平面に投影された画素の色相HがHminよりも大きく、かつHmaxよりも小さいか否か、すなわち「Hmin<H<Hmax」を満たすか否かを判定する。このとき、肌色抽出部12は、色相Hが「Hmin<H<Hmax」を満たす場合には、HS平面に投影された画素の彩度SがSminよりも大きく、かつSmaxよりも小さいか否か、すなわち「Smin<S<Smax」を満たすか否かをさらに判定する。そして、肌色抽出部12は、彩度Sが「Smin<S<Smax」を満たす場合には、当該画素の値に「1」を割り当てる。一方、肌色抽出部12は、色相Hが「Hmin<H<Hmax」を満たさないか、或いは彩度Sが「Smin<S<Smax」を満たさない場合には、当該画素の値に「0」を割り当てる。これによって、原画像I(x,y,t)から肌色らしい画素を抽出した肌色画像C(x,y,t)が生成される。このようにして生成された肌色画像C(x,y,t)は、後述の肌色画像記憶部13へ登録される。
また、肌色抽出部12は、原画像I(x,y,t)に含まれる各画素のRGB値をHSV表色系へ変換後の輝度Vの値に置き換えることによって輝度画像V(x,y,t)を生成する。このようにして生成された輝度画像V(x,y,t)は、後述の輝度画像記憶部15へ登録される。
なお、上記の「原画像I(x,y,t)」の表記は、フレームtにおいて座標が(x,y)である画素を含んでなる原画像Iを表す。また、「肌色画像C(x,y,t)」及び「輝度画像V(x,y,t)」の表記も原画像が肌色画像や輝度画像に置き換わること以外は同様である。また、上記の「座標」は、画像に設定された2次元のローカル座標を指し、原点には、画像内または画像外の任意の点、例えば原画像Iの左上の点などを設定できる。
肌色画像記憶部13は、肌色画像を記憶する記憶部である。一例としては、肌色画像記憶部13は、後述の肌色差分抽出部14によって肌色画像のフレーム間で差分を抽出させるための前処理として、肌色画像が生成される度に肌色抽出部12によって登録される。他の一例としては、肌色画像記憶部13は、肌色画像のフレーム間で差分を抽出するために、後述の肌色差分抽出部14によって参照される。なお、肌色画像記憶部13に記憶された肌色画像は、肌色抽出部12によって登録されてから所定のフレーム後の肌色画像が登録された場合や肌色画像の登録期間が所定の時間を経過した場合に自動的に削除することもできる。
肌色差分抽出部14は、肌色画像のフレーム間で差分を抽出する処理部である。一態様としては、肌色差分抽出部14は、肌色抽出部12によって生成された肌色画像C(x,y,t)及び肌色画像記憶部13に記憶された前フレームの肌色画像C(x,y,t−1)に含まれる各画素間で差分を抽出する。このとき、肌色差分抽出部14は、肌色画像C(x,y,t)及び前フレームの肌色画像C(x,y,t−1)に含まれる画素をラスタースキャンしつつ、各画素間でC(x,y,t)−C(x,y,t−1)を抽出する。
ここで、肌色差分抽出部14は、C(x,y,t)−C(x,y,t−1)の差分値がゼロよりも大きい場合、すなわち「正」の値をとる場合には、当該画素の値に「1」を割り当てる。一方、肌色差分抽出部14は、C(x,y,t)−C(x,y,t−1)の差分値がゼロ以下である場合、すなわち「0」もしくは「負」の値をとる場合には、当該画素の値に「0」を割り当てる。これによって、肌色画像C(x,y,t)及び前フレームの肌色画像C(x,y,t−1)から現に肌が所在する可能性が高い画素が抽出された肌色差分画像D(x,y,t)が生成される。
なお、ここでは、現フレームtの肌色画像C(x,y,t)及び1つ前のフレームt−1の肌色画像C(x,y,t−1)の間で差分を抽出する場合を例示したが、開示の装置はこれに限定されない。例えば、開示の装置は、カメラ3によって入力されるカメラ画像のフレームレートが高い場合には、現フレームtの肌色画像C(x,y,t)及び2つ以上前のフレームt−nの肌色画像C(x,y,t−n)の間で差分を抽出することとしてもよい。
輝度画像記憶部15は、輝度画像を記憶する記憶部である。一例としては、後述の輝度差分抽出部16によって輝度画像のフレーム間で差分を抽出させるための前処理として、輝度画像が生成される度に肌色抽出部12によって登録される。他の一例としては、輝度画像記憶部15は、輝度画像のフレーム間で差分を抽出するために、後述の輝度差分抽出部16によって参照される。なお、輝度画像記憶部15に記憶された輝度画像は、肌色抽出部12によって登録されてから所定のフレーム後の輝度画像が登録された場合や輝度画像の登録期間が所定の時間を経過した場合に自動的に削除することもできる。
輝度差分抽出部16は、輝度画像のフレーム間で差分を抽出する処理部である。一態様としては、輝度差分抽出部16は、肌色抽出部12によって生成された輝度画像V(x,y,t)及び輝度画像記憶部15に記憶された前フレームの輝度画像V(x,y,t−1)に含まれる各画素間で差分を抽出する。このとき、輝度差分抽出部16は、輝度画像V(x,y,t)及び前フレームの輝度画像V(x,y,t−1)に含まれる画素をラスタースキャンしつつ、各画素間で輝度差分画像F(x,y,t)、即ち「V(x,y,t)−V(x,y,t−1)」を抽出する。
ここで、輝度差分抽出部16は、V(x,y,t)−V(x,y,t−1)の差分値が所定の閾値以上である場合には、当該画素の値に「1」を割り当てる。一方、輝度差分抽出部16は、V(x,y,t)−V(x,y,t−1)の差分値が所定の閾値未満である場合には、当該画素の値に「0」を割り当てる。これによって、輝度画像V(x,y,t)及び前フレームの輝度画像V(x,y,t−1)の間で閾値上の変化があった画素が抽出された輝度差分画像F’(x,y,t)が生成される。
方式選択部17は、第1の方式および第2の方式のうち一方の方式を選択する処理部である。一態様としては、方式選択部17は、肌色差分抽出部14により生成された肌色差分画像D(x,y,t)で現に肌が存在すると推定される画素、すなわち値に「1」が割り当てられた画素のラベリング処理を実行する。かかるラベリング処理には、「コンピュータ画像処理 田村 秀行著 オーム社」に開示の技術などを適用できる。このラベリング処理によって、肌色差分画像D(x,y,t)で値に「1」が割り当てられた画素のうち同じ領域に属すると推定される画素同士がグルーピングされる。その上で、方式選択部17は、ラベリング処理された領域のうち最大の領域と輝度差分画像F’(x,y,t)で差分が抽出された領域との大小関係に基づいて、第1の方式および第2の方式のうち一方の方式を選択する。
このように、上記の肌色差分画像Dの他に輝度差分画像F’を併用するのは、操作者の手だけが動いたか否かを判別することによって操作者が意図的に行ったジェスチャとジェスチャとは無関係に行われた動作とを切り分けた上で方式の選択を実行するためである。
すなわち、手によってジェスチャがなされる場合には、腕の部位のうち動作するのは一般に肘から先の前腕部になり、肘が支点となって動作する。ところが、操作者が情報処理装置1に対する操作を意図しない動作では、体全体が動作したり、肩から先の部位がすべて動いたりする。このように、上記の輝度差分画像F’(x,y,t)で差分が抽出された領域には、手の領域のほかに前腕部の動きが含まれる。
図3は、手および腕の動きのモデル化の一例を示す図である。図3に示すように、上腕から指先までを矩形モデルとして仮定した場合には、手の部分を含め前腕部の動きによるF’の領域Rは、「2×πr2×ω/2π=ωr2」と表される。ここで言う「r」は、肘から指先までの長さを指し、また、「ω」は、手を動作させる角速度を指す。また、肘から手首までの長さが「r’」であるとしたとき、上記の矩形モデルのうち、手の領域を除いた領域R’は、上記の領域Rと同様にして、「2×πr’2×ω/2π=ωr’2」と表される。
このため、領域Rから領域R’を差し引いた「ω(r2−r’2)」が手として得られる差分領域R−R’となる。ただし、上記の肌色差分画像Dで手の領域として差分が抽出されているのは、現フレームに手がある部分、すなわち差分値が「正」の値をとる画素だけである。このため、前フレームで手があった部分、すなわち差分値が「0」または「負」の値をとる画素は含まれない。図3の例で言えば、肌色差分画像Dは、図中の上段の右側にある点の塗りつぶし部分だけが差分として抽出される。したがって、肌色差分画像Dで正の差分が得られる領域を「A」とすると、「A=ω/2×(r2−r’2)」が成立する。
このとき、「r」及び「r’」は、標準体型に代表させることによって一般化できる。例えば、肘から指先までの長さ及び肘から手首までの長さの比、すなわち「x=r/r’」は、およそ0.6〜0.7であることから、領域Aの式は「A=ωr2/2×(1−x2)」と変形できる。さらに、変形後の式のうち「(1−x2)」の部分を定数αとみなすと、領域Aの式は「A=αωr2/2」と変形できることから、更なる変形式「ωr2/2=A/α」が得られる。
これらのことから、肌色差分画像Dで差分が抽出された領域のうち最大領域を「A」、輝度差分画像F’で差分が抽出された領域を「B」としたとき、判定式「B/2<A/α」が成立する場合には、操作者によって手だけが動作されているとみなすことができる。なお、上記の判定式でBに1/2を乗算しているのは、上記の輝度差分画像F’では移動前後の変化、すなわち符号の正負は関係なく閾値以上である画素が抽出されるからである。すなわち、図3の例で言えば、輝度差分画像F’は、図中の上段の右側にある点の塗りつぶし部分+斜線の塗りつぶし部分が差分として抽出される。
このように、操作者がジェスチャを行う際に肘がぶれないと仮定してモデル化を行った場合には、肌色差分画像Dで差分が抽出された領域のうち最大の領域である最大領域「A」および輝度差分画像F’で差分が抽出された領域「B」を扇形に近似できる。ところが、操作者がジェスチャを行う際に肘がぶれた場合には、肌色差分画像Dでは手の動きだけでなく、肘のぶれも最大領域「A」として抽出されるので、領域「A」が領域「B」よりも相対的に大きくなる。
したがって、方式選択部17では、上記の判定式における「A/α」に肘のぶれを調整する調整値qを乗算した判定式「B/2<q×A/α」を用いて、方式の選択を実行する。なお、上記の調整値qには、ジェスチャが行われる場合に肘がぶれても領域「A」の値が大きくなりすぎないように「0<q<1」の値が設定されるのが好ましい。
ここで、上記の判定式「B/2<q×A/α」を満たす場合には、手だけが動作されている可能性が高いので、動きが大きいジェスチャ、例えば手がカメラ3の撮像範囲を横断または縦断するパターンのジェスチャがなされている可能性が高いと推定できる。この場合には、方式選択部17は、第2の方式によってジェスチャの認識を実行させるべく、第2の認識部5bを動作させるフラグ番号「1」を図示しない内部メモリに格納する。一方、上記の判定式「B/2<q×A/α」を満たさない場合には、操作者が体全体を動かしていたり、情報処理装置1が移動されたりする可能性が高い。この場合には、方式選択部17は、第2の方式を実行することによってジェスチャが誤認識されるのを回避するために、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する。
他の一態様としては、方式選択部17は、肌色差分画像Dで差分が抽出された最大領域Aが所定の閾値Th_pixよりも大きいか否かによって第1の方式または第2の方式を選択する。このとき、最大領域Aが所定の閾値Th_pixよりも大きい場合には、動きのある肌色の領域が大きいので、動きが大きいジェスチャがなされている可能性が高いと推定できる。よって、方式選択部17は、第2の方式によってジェスチャの認識を実行させるべく、第2の認識部5bを動作させるフラグ番号「1」を図示しない内部メモリに格納する。一方、最大領域Aが所定の閾値Th_pix以下である場合には、動きのある肌色の領域が小さいので、動きが小さいジェスチャが開始されてようとしているか、或いは動作なく静観されている可能性が高いと推定できる。この場合には、方式選択部17は、第1の方式によってジェスチャの認識を実行させるべく、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する。
更なる一態様としては、方式選択部17は、第1の認識部5aによって図示しない内部メモリに書き込まれた追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)であるか否かによって第1の方式または第2の方式を選択する。このとき、追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)でない場合には、第1の方式によって手の動きが追跡できているので、改めて第2の方式に変える必要はない。むしろ、第1の方式から第2の方式へ変更した場合には、追跡中のジェスチャを認識できなくなるおそれもある。よって、方式選択部17は、第1の方式によるジェスチャの認識を継続させるべく、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する。一方、追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)でない場合には、第1の方式によって手の動きが追跡できていないので、第1の方式によるジェスチャの認識を継続させる意義が薄い。よって、方式選択部17は、第2の方式によってジェスチャの認識を実行させるべく、第2の認識部5bを動作させるフラグ番号「1」を図示しない内部メモリに格納する。
他の一態様としては、方式選択部17は、第2の方式によるジェスチャ認識の実行回数Fが第2の方式によるジェスチャ認識の所要フレーム数Tよりも少ないか否かによって第1の方式または第2の方式を選択する。このとき、第2の方式によるジェスチャ認識の実行回数Fが所要フレーム数Tよりも少ない場合には、未だジェスチャ認識の結果が得られていないので、第2の方式によるジェスチャの認識を継続させるのが好ましい。よって、第2の方式によるジェスチャの認識を継続させるべく、第2の認識部5bを動作させるフラグ番号「1」を図示しない内部メモリに格納する。一方、第2の方式によるジェスチャ認識の実行回数Fが所要フレーム数Tと等しい場合には、ジェスチャ認識の結果が既に得られた後であるので、第2の方式によるジェスチャの認識を継続させる意義が薄い。よって、方式選択部17は、第1の方式によってジェスチャの認識を実行させるべく、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する。
ここで、方式選択部17は、上記の4つの態様を組み合わせて実行することができる。一例としては、方式選択部17は、上記の判定式「B/2<q×A/α」を満たすか否かを判定する。このとき、方式選択部17は、上記の判定式「B/2<q×A/α」を満たす場合には、肌色差分画像Dで差分が抽出された最大領域Aが所定の閾値Th_pixよりも大きいか否かをさらに判定する。そして、方式選択部17は、最大領域Aが所定の閾値Th_pixよりも大きい場合には、第1の認識部5aによって内部メモリに書き込まれた追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)であるか否かをさらに判定する。このとき、方式選択部17は、追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)である場合には、第2の方式によるジェスチャ認識の実行回数Fが第2の方式によるジェスチャ認識の所要フレーム数Tよりも少ないか否かをさらに判定する。
そして、方式選択部17は、第2の方式によるジェスチャ認識の実行回数Fが所要フレーム数Tよりも少ない場合には、第2の方式によってジェスチャの認識を実行させるべく、第2の認識部5bを動作させるフラグ番号「1」を図示しない内部メモリに格納する。一方、方式選択部17は、下記のように、一度でも否定的な判定結果が得られた場合には、第1の方式によってジェスチャの認識を実行させるべく、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する。なお、上記の否定的な判定結果には、上記の判定式「B/2<q×A/α」を満たさない場合、最大領域Aが所定の閾値Th_pix以下である場合、追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)でない場合などが含まれる。さらに、上記の否定的な判定結果には、第2の方式によるジェスチャ認識の実行回数Fが所要フレーム数Tと等しい場合も含まれる。
なお、上記の画像取得部11、肌色抽出部12、肌色差分抽出部14、輝度差分抽出部16及び方式選択部17には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
また、上記の肌色画像記憶部13及び輝度画像記憶部15などの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
[処理の流れ]
次に、本実施例に係る画像処理装置の処理の流れについて説明する。なお、ここでは、画像処理装置10によって実行される(1)方式選択処理を説明した後に、方式選択処理のサブルーチンとして実行される(2)肌色抽出処理を説明し、最後に、方式選択処理のサブルーチンとして実行される(3)肌色差分抽出処理を説明する。
(1)方式選択処理
図4は、実施例1に係る方式選択処理の手順を示すフローチャートである。この方式選択処理は、画像処理装置10の電源がON状態である場合に繰り返し実行される処理であり、画像取得部11によって原画像が取得された場合に処理が起動される。
図4に示すように、画像取得部11によって原画像I(x,y,t)が取得されると(ステップS101)、方式選択部17は、前フレームt−1における追跡座標p(x,y)を取得する(ステップS102)。
そして、肌色抽出部12は、原画像I(x,y,t)から肌色らしい画素を抽出する「肌色抽出処理」を実行する(ステップS103)。これによって、原画像I(x,y,t)から肌色画像C(x,y,t)が生成される。
続いて、肌色差分抽出部14は、肌色画像C(x,y,t)及び前フレームの肌色画像C(x,y,t−1)から現に肌が所在する可能性が高い画素を抽出する「肌色差分抽出処理」を実行する(ステップS104)。これによって、肌色画像C(x,y,t)及び前フレームの肌色画像C(x,y,t−1)から肌色差分画像D(x,y,t)が生成される。
そして、輝度差分抽出部16は、輝度画像V(x,y,t)及び前フレームの輝度画像V(x,y,t−1)の間で閾値上の変化があった画素を抽出する輝度差分抽出処理を実行する(ステップS105)。これによって、輝度画像V(x,y,t)及び前フレームの輝度画像V(x,y,t−1)から輝度差分画像F’(x,y,t)が生成される。
その後、方式選択部17は、肌色差分抽出部14により生成された肌色差分画像D(x,y,t)で現に肌が存在すると推定される画素、すなわち値に「1」が割り当てられた画素のラベリング処理を実行する(ステップS106)。そして、方式選択部17は、ラベリング処理によって肌色差分画像D内でラベリングされた領域のうち最大の領域である最大領域Aを算出する(ステップS107)。
ここで、方式選択部17は、肌色差分画像Dでラベリングされた最大領域A及び輝度差分画像F’で差分が抽出された領域Bが上記の判定式「B/2<q×A/α」を満たすか否かを判定する(ステップS108)。
このとき、上記の判定式「B/2<q×A/α」を満たさない場合(ステップS108否定)には、操作者が体全体を動かしていたり、情報処理装置1が移動されたりする可能性が高い。この場合には、方式選択部17は、第2の方式を実行することによってジェスチャが誤認識されるのを回避するために、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する(ステップS109)。
また、上記の判定式「B/2<q×A/α」を満たす場合(ステップS108肯定)には、方式選択部17は、肌色差分画像Dでラベリングされた最大領域Aが所定の閾値Th_pixよりも大きいか否かをさらに判定する(ステップS110)。
このとき、最大領域Aが所定の閾値Th_pix以下である場合(ステップS110否定)には、動きのある肌色の領域が小さいので、動きが小さいジェスチャが開始されてようとされているか、或いは動作なく静観されている可能性が高いと推定できる。この場合には、方式選択部17は、第1の方式によってジェスチャの認識を実行させるべく、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する(ステップS109)。
また、最大領域Aが所定の閾値Th_pixよりも大きい場合(ステップS110肯定)には、方式選択部17は、次のような処理を実行する。すなわち、方式選択部17は、第1の認識部5aによって内部メモリに書き込まれた追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)であるか否かをさらに判定する(ステップS111)。
このとき、追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)ではない場合(ステップS111否定)には、第1の方式によって手の動きが追跡できているので、改めて第2の方式に変える必要はない。よって、方式選択部17は、第1の方式によってジェスチャの認識を実行させるべく、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する(ステップS109)。
また、追跡座標p(x,y)が追跡不能コード(0xFFFF,0xFFFF)である場合(ステップS111肯定)には、方式選択部17は、次のような処理を実行する。すなわち、方式選択部17は、第2の方式によるジェスチャ認識の実行回数Fが第2の方式によるジェスチャ認識の所要フレーム数Tよりも少ないか否かをさらに判定する(ステップS112)。
このとき、第2の方式によるジェスチャ認識の実行回数Fが所要フレーム数Tと等しい場合(ステップS112否定)には、ジェスチャ認識の結果が既に得られた後であるので、第2の方式によるジェスチャの認識を継続させる意義が薄い。よって、方式選択部17は、第1の方式によってジェスチャの認識を実行させるべく、第1の認識部5aを動作させるフラグ番号「0」を図示しない内部メモリに格納する(ステップS109)。
一方、第2の方式によるジェスチャ認識の実行回数Fが所要フレーム数Tよりも少ない場合(ステップS112肯定)には、上述した多面的な観点から第2の方式によるジェスチャ認識を実行させるのが好ましいと判断できる。よって、方式選択部17は、第2の方式によってジェスチャの認識を実行させるべく、第2の認識部5bを動作させるフラグ番号「1」を図示しない内部メモリに格納する(ステップS113)。
このように、第1の方式または第2の方式が選択された後に、方式選択部17は、第1の認識部5aによって内部メモリに書き込まれた追跡座標p(x,y)を初期化し(ステップS114)、処理を終了する。
(2)肌色抽出処理
続いて、本実施例に係る肌色抽出処理について説明する。図5は、実施例1に係る肌色抽出処理の手順を示すフローチャートである。この肌色抽出処理は、図4に示したステップS103に対応する処理であり、追跡座標p(x,y)が取得された場合に処理が起動される。
図5に示すように、肌色抽出部12は、肌色画像C(x,y,t)を初期化する(ステップS301)。さらに、肌色抽出部12は、Y方向パラメータiを「0」にリセットするとともに(ステップS302)、X方向パラメータjを「0」にリセットする(ステップS303)。
その後、肌色抽出部12は、原画像I(x,y,t)のRGB値を上記の式(1)〜式(2)に代入することによってHSV表色系の色相H及び彩度Sを含んで構成されるHS平面に投影する(ステップS304)。
そして、肌色抽出部12は、HS平面に投影された画素の色相HがHminよりも大きく、かつHmaxよりも小さいか否か、すなわち「Hmin<H<Hmax」を満たすか否かを判定する(ステップS305)。
このとき、色相Hが「Hmin<H<Hmax」を満たす場合(ステップS305肯定)には、肌色抽出部12は、次のような判定をさらに実行する。すなわち、肌色抽出部12は、HS平面に投影された画素の彩度SがSminよりも大きく、かつSmaxよりも小さいか否か、すなわち「Smin<S<Smax」を満たすか否かをさらに判定する(ステップS306)。
そして、彩度Sが「Smin<S<Smax」を満たす場合(ステップS306肯定)には、肌色抽出部12は、肌色画像C(j,i,t)の値に「1」を割り当てる(ステップS307)。
一方、色相Hが「Hmin<H<Hmax」を満たさない場合または彩度Sが「Smin<S<Smax」を満たさない場合(ステップS305否定またはステップS306否定)には、ステップS307の処理を実行せずにステップS308の処理へ移行する。
その後、肌色抽出部12は、X方向パラメータjをインクリメントし(ステップS308)、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さいか否かを判定する(ステップS309)。
このとき、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さい場合(ステップS309肯定)には、X方向の走査が終了していないと判断できる。よって、肌色抽出部12は、原画像I(j+1,i,t)に対し、上記のステップS304〜S308までの処理を繰り返し実行する。
一方、インクリメント後のX方向パラメータjがX方向の画像サイズdxと等しい場合(ステップS309否定)には、肌色抽出部12は、X方向の走査が終了したと判断できるので、Y方向パラメータiをインクリメントする(ステップS310)。
そして、肌色抽出部12は、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さいか否かを判定する(ステップS311)。このとき、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さい場合(ステップS311肯定)には、Y方向の走査が終了していないと判断できる。
よって、肌色抽出部12は、X方向パラメータjを「0」にリセットした上で(ステップS303)、原画像I(0,i+1,t)に対し、上記のステップS304〜S310までの処理を繰り返し実行する。
一方、インクリメント後のY方向パラメータiがY方向の画像サイズdyと等しい場合(ステップS311否定)には、Y方向の走査が終了したと判断できるので、そのまま処理を終了する。
(3)肌色差分抽出処理
続いて、本実施例に係る肌色差分抽出処理の手順について説明する。図6は、実施例1に係る肌色差分抽出処理の手順を示すフローチャートである。この「肌色差分抽出処理」は、図4に示したステップS104に対応する処理であり、肌色抽出処理によって肌色画像が生成された後に処理が起動される。
図6に示すように、肌色差分抽出部14は、肌色差分画像D(x,y,t)を初期化するとともに(ステップS501)、肌色画像記憶部13に記憶された前フレームt−1の肌色画像C(x,y,t−1)を読み出す(ステップS502)。さらに、肌色差分抽出部14は、Y方向パラメータiを「0」にリセットするとともに(ステップS503)、X方向パラメータjを「0」にリセットする(ステップS504)。
続いて、肌色差分抽出部14は、C(j,i,t)−C(j,i,t−1)を計算することによって肌色差分画像D(j,i,t)を算出する(ステップS505)。このとき、肌色差分画像D(j,i,t)がゼロまたは負の値である場合(ステップS506否定)には、肌色差分抽出部14は、肌色差分画像D(j,i,t)の値にゼロを割り当てる(ステップS507)。
また、肌色差分画像D(j,i,t)が正の値である場合(ステップS506肯定)には、肌色差分抽出部14は、ステップS507の処理を実行することにより肌色差分画像D(j,i,t)の値をゼロにせず、値を維持させたままステップS508へ移行する。
その後、肌色差分抽出部14は、X方向パラメータjをインクリメントし(ステップS508)、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さいか否かを判定する(ステップS509)。
このとき、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さい場合(ステップS509肯定)には、X方向の走査が終了していないと判断できる。よって、肌色差分抽出部14は、肌色画像C(j+1,i,t)及び肌色画像C(j+1,i,t−1)に対し、上記のステップS505〜S508までの処理を繰り返し実行する。
一方、インクリメント後のX方向パラメータjがX方向の画像サイズdxと等しい場合(ステップS509否定)には、肌色差分抽出部14は、X方向の走査が終了したと判断できるので、Y方向パラメータiをインクリメントする(ステップS510)。
そして、肌色差分抽出部14は、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さいか否かを判定する(ステップS511)。このとき、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さい場合(ステップS511肯定)には、Y方向の走査が終了していないと判断できる。
よって、肌色差分抽出部14は、X方向パラメータjを「0」にリセットした上で(ステップS504)、肌色画像C(0,i+1,t)及び肌色画像C(0,i+1,t−1)に対し、上記のステップS505〜S510までの処理を繰り返し実行する。
一方、インクリメント後のY方向パラメータiがY方向の画像サイズdyと等しい場合(ステップS511否定)には、Y方向の走査が終了したと判断できるので、そのまま処理を終了する。
[実施例1の効果]
上述してきたように、本実施例に係る画像処理装置10によれば、多様なパターンのジェスチャを高精度に認識することが可能である。さらに、本実施例に係る画像処理装置10は、第1の方式または第2の方式を排他的に選択する。このため、本実施例に係る画像処理装置10では、第1の方式および第2の方式のジェスチャ認識を並行して実行させる場合よりも処理負荷を低減できる。よって、本実施例に係る画像処理装置10によれば、パーソナルコンピュータ等よりも処理性能が劣る移動体端末にもジェスチャ認識を適用することが可能である。
加えて、本実施例に係る画像処理装置10では、入力される原画像のフレームレートを調節する必要はない。ここで、一例として、第1の方式によるジェスチャ認識が15fpsのフレームレートで動作するのに対し、第2の方式によるジェスチャ認識が30fpsのフレームレートで動作する場合を想定する。この場合にも、原画像が排他的に利用されるので、それぞれのフレームレートで処理を実現することが可能になる。
一般に、形状を認識するには、動きを認識する場合よりも演算量が多くなるので、処理時間が長くなる結果、第2の方式によるジェスチャ認識よりも第1の方式によるジェスチャ認識の方が遅いフレームレートになる。逆に、第2の方式によるジェスチャ認識では、より高速なフレームレートで処理するほうが高い精度を維持することができる。これら両者の長所を発揮しようとすると、第1の認識部5a及び第2の認識部5bの両者を同時に動作させることも考えられるが、両者の処理時間の和としてフレームレートを定める必要がある。ところが、本実施例に係る画像処理装置10では、第1の認識部5a及び第2の認識部5bに各々のジェスチャ認識の所要時間で各フレームを処理させることができる。このため、高速なフレームレートが必要な第2の方式によるジェスチャ認識の処理中に、低速な第1の方式によるジェスチャ認識の処理時間が含まれることはない。
また、本実施例に係る画像処理装置10は、肌色差分画像Dでラベリング処理された最大の領域Aと輝度差分画像F’で差分が抽出された領域Bとの大小関係に基づいて、第1の方式および第2の方式のうち一方の方式を選択する。このため、本実施例に係る画像処理装置10では、動きのある肌色の領域よりも輝度が変化した領域が大きい場合には、第1の方式を選択できる。それゆえ、本実施例に係る画像処理装置10によれば、第2の方式を実行することによって操作者が体全体を動かしていたり、情報処理装置1が移動されたりなどのジェスチャとは無関係な動きがジェスチャと誤認識されるのを回避することが可能である。
さらに、本実施例に係る画像処理装置10は、第1の方式または第2の方式のうち一方の方式を選択した場合に、第1の方式または第2の方式の終了条件を満たすまで当該方式を継続して選択する。このため、本実施例に係る画像処理装置10では、例えば、一度選択した方式によってジェスチャ認識の結果が得られるまではジェスチャ認識を継続させることができ、高頻度の方式の切り替えによってジェスチャの認識精度が低下するのを防止できる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
[ノイズ除去]
例えば、画像処理装置10は、肌色画像Cのフレーム間で差分が抽出された領域のうち水平成分の大きさが所定の閾値未満である領域を除去することにより、操作者がジェスチャを行うのに伴って生じるノイズを除去することもできる。
すなわち、上記の実施例1では、情報処理装置1の操作者がジェスチャで認識する部位である手以外は動かさない場合を想定する説明を行ったが、操作者がジェスチャを意図して手を動かした場合であっても他の関連部位にも変位が生じる場合がある。なぜなら、人間が手を上下に動作しても顔は大きく動作しないものの、左右に動作させた場合には手の動きに連動して顔が反対方向に動作するからである。これは、手の動かしたことに対する反力によるもので、体全体が手を動かした方向とは逆の方向に動作する。
図7は、ジェスチャのノイズの一例を示す図である。図8は、顔が左右に動いた場合における肌色差分画像への影響を示す図である。図9は、ノイズ除去前及びノイズ除去後の肌色差分画像の一部を示す図である。なお、図7の例では、操作者が情報処理装置1の表示部に向かって左側から右側へ横断するように左手を動かすことによってジェスチャを行った場合を想定する。また、図9の例では、肌色差分画像Dの値が「1」である画素を網掛けで図示し、肌色差分画像Dの値が「0」である画素を白地で図示している。
図7に示すように、操作者が左側から右側へ横断するように左手を動かした場合には、操作者の左手のみならず、操作者の頭が右側から左側へ動いてしまう。このように、操作者の顔が右側から左側へ動いた場合には、図8に示すように、操作者の顔が水平方向に動いた縦長の変位部分、すなわち図中の網掛け部分が動きのある肌色の領域として肌色差分画像Dに算出される。この場合には、操作者がジェスチャを行うために動かした左手だけでなく、操作者の顔もラベリングされてしまう場合もある。
これらのことから、画像処理装置10は、ジェスチャに伴って生じるノイズが顔である場合には、鉛直方向に比べて水平方向の幅が少ないという知見をもとに、次のような処理を実行する。すなわち、画像処理装置10は、肌色画像Cのフレーム間で差分が抽出された領域のうち水平成分の大きさが所定の閾値Th_noise、例えば5画素未満である領域を除去する。図9の上段に示すノイズ除去前の肌色差分画像の一部には、操作者の顔が水平方向に動いた縦長の変位部分に相当する縦長のノイズがあるが、これらの水平方向の幅はいずれも3画素以下である。これら水平方向の幅は、いずれも閾値Th_noise「5」未満であるので、図9の下段に示すように、縦長のノイズの部分に対応する肌色差分画像Dの値が全て「0」に置き換えられる。このようにして、ジェスチャに伴うノイズを除去できる。
図10は、応用例に係るノイズ除去処理(1)の手順を示すフローチャートである。このノイズ除去処理(1)は、図4に示したステップS104の処理が終了してからステップS106の処理が開始されるまでの間の任意のタイミングで起動できる。
図10に示すように、画像処理装置10は、Y方向パラメータiを「0」にリセットし(ステップS701)、画素カウンタNを「0」にリセットするとともに(ステップS702)、X方向パラメータjを「0」にリセットする(ステップS703)。
そして、肌色差分画像D(j,i,t)が「1」である場合(ステップS704肯定)には、画像処理装置10は、画素カウンタNをインクリメントし(ステップS705)、ステップS709の処理へ移行する。
一方、肌色差分画像D(j,i,t)が「1」でない場合(ステップS704否定)には、画像処理装置10は、画素カウンタNが閾値Th_noise以上であるか否かをさらに判定する(ステップS706)。
このとき、画素カウンタNが閾値Th_noise未満である場合(ステップS706否定)には、画像処理装置10は、肌色差分画像D(j,i,t)のN画素前までの値を「1」から「0」へ置き換える(ステップS707)。そして、画像処理装置10は、画素カウンタNを「0」にリセットする(ステップS708)。
一方、画素カウンタNが閾値Th_noise以上である場合(ステップS706肯定)には、画像処理装置10は、ステップS707及びステップS708の処理を実行せずに、ステップS709の処理へ移行する。
その後、画像処理装置10は、X方向パラメータjをインクリメントし(ステップS709)、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さいか否かを判定する(ステップS710)。
このとき、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さい場合(ステップS710肯定)には、X方向の走査が終了していないと判断できる。よって、画像処理装置10は、肌色差分画像D(j+1,i,t)に対し、上記のステップS704〜S709までの処理を繰り返し実行する。
一方、インクリメント後のX方向パラメータjがX方向の画像サイズdxと等しい場合(ステップS710否定)には、画像処理装置10は、X方向の走査が終了したと判断できるので、Y方向パラメータiをインクリメントする(ステップS711)。
そして、画像処理装置10は、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さいか否かを判定する(ステップS712)。このとき、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さい場合(ステップS712肯定)には、Y方向の走査が終了していないと判断できる。
よって、画像処理装置10は、X方向パラメータjを「0」にリセットした上で(ステップS703)、肌色差分画像D(0,i+1,t)に対し、上記のステップS704〜S711までの処理を繰り返し実行する。
一方、インクリメント後のY方向パラメータiがY方向の画像サイズdyと等しい場合(ステップS712否定)には、Y方向の走査が終了したと判断できるので、そのまま処理を終了する。
このように、画像処理装置10は、肌色画像Cのフレーム間で差分が抽出された領域のうち水平成分の大きさが所定の閾値未満である領域を除去することにより、ジェスチャに伴って生じるノイズを除去できる。
また、画像処理装置10は、ラベリング処理を行い、各ラベルにおけるランレングスを計数し、Th_noise以下のランレングスが閾値Th_rate以下の割合の場合、当該ラベルを構成する領域の肌色差分画像Dの各画素を「0」にすることもできる。
図11及び図12は、応用例に係るノイズ除去処理(2)の手順を示すフローチャートである。このノイズ除去処理(2)は、図4に示したステップS106の処理が実行された場合に処理が起動される。
図11に示すように、画像処理装置10は、Y方向パラメータiを「0」にリセットし(ステップS901)、画素カウンタNを「0」にリセットするとともに(ステップS902)、X方向パラメータjを「0」にリセットする(ステップS903)。
そして、肌色差分画像D(j,i,t)が「1」である場合(ステップS904肯定)には、画像処理装置10は、画素カウンタNをインクリメントし(ステップS905)、ステップS908の処理へ移行する。
一方、肌色差分画像D(j,i,t)が「1」でない場合(ステップS904否定)には、画像処理装置10は、ヒストグラムH[D’(j,i)][N]のランレングスをインクリメントする(ステップS906)。そして、画像処理装置10は、画素カウンタNを「0」にリセットする(ステップS907)。
ここで、ヒストグラムH[A][B]の表記のうち[A]は、ラベル番号を指し、また、[B]は、水平方向の幅、すなわちランレングスを指す。また、D’(j,i)は、肌色差分画像D(x,y,t)内でラベリングされた領域画像を指すものとする。
その後、画像処理装置10は、X方向パラメータjをインクリメントし(ステップS908)、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さいか否かを判定する(ステップS909)。
このとき、インクリメント後のX方向パラメータjがX方向の画像サイズdxよりも小さい場合(ステップS909肯定)には、X方向の走査が終了していないと判断できる。よって、画像処理装置10は、肌色差分画像D(j+1,i,t)に対し、上記のステップS904〜S908までの処理を繰り返し実行する。
一方、インクリメント後のX方向パラメータjがX方向の画像サイズdxと等しい場合(ステップS909否定)には、画像処理装置10は、X方向の走査が終了したと判断できるので、Y方向パラメータiをインクリメントする(ステップS910)。
そして、画像処理装置10は、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さいか否かを判定する(ステップS911)。このとき、インクリメント後のY方向パラメータiがY方向の画像サイズdyよりも小さい場合(ステップS911肯定)には、Y方向の走査が終了していないと判断できる。
よって、画像処理装置10は、画素カウンタNを「0」にリセットし、X方向パラメータjを「0」にリセットした上で(ステップS902及びステップS903)、次のような処理を実行する。すなわち、画像処理装置10は、肌色差分画像D(0,i+1,t)に対し、上記のステップS904〜S910までの処理を繰り返し実行する。
一方、インクリメント後のY方向パラメータiがY方向の画像サイズdyと等しい場合(ステップS911否定)には、Y方向の走査が終了したと判断できる。この場合には、画像処理装置10は、ラベルパラメータkを「0」にリセットする(ステップS912)。
図12に遷り、画像処理装置10は、ヒストグラムH[k][1]からヒストグラムH[k][Th_noise]までのランレングスの累積値Vを算出する(ステップS913)。さらに、画像処理装置10は、ヒストグラムH[k][1]からヒストグラムH[k][dx]までのランレングスの累積値Uを算出する(ステップS914)。なお、上記の「dx」は、X方向の画像サイズを指す。
その上で、画像処理装置10は、ランレングスの累積値Vをランレングスの累積値Uで除算した除算値V/Uが閾値Th_rateよりも大きいか否かを判定する(ステップS915)。この判定によって、ラベリングされた領域画像D’(x,y)の水平方向の幅の分布が閾値Th_noise以下に偏っているか否かを判定する。
このとき、除算値V/Uが閾値Th_rateよりも大きい場合(ステップS915肯定)には、画像処理装置10は、次のような処理を実行する。すなわち、画像処理装置10は、肌色差分画像D(x,y,t)のうちラベル番号kが付与された領域画像D’(x,y,t)に対応する画素の値を「1」から「0」に置き換える(ステップS916)。
その後、画像処理装置10は、ラベルパラメータkをインクリメントする(ステップS917)。なお、除算値V/Uが閾値Th_rate以下であった場合(ステップS915否定)には、ステップS916の処理が実行されずに、ラベルパラメータkがインクリメントされる(ステップS917)。
その後、画像処理装置10は、ラベルパラメータkがラベル数Sと等しくなるまで(ステップS918否定)、上記のステップS913〜ステップS917までの処理を繰り返し実行する。そして、ラベルパラメータkがラベル数Sと等しくなると(ステップS918肯定)、処理を終了する。
このように、Th_noise以下のランレングスが閾値Th_rate以下の割合の場合、当該ラベルを構成する領域の肌色差分画像Dの各画素を「0」に置き換えることによって、ジェスチャに伴うノイズを同様に除去できる。
[補間処理]
また、画像処理装置10は、肌色差分画像Dに対する膨張処理および収縮処理を実行することによって差分が十分に抽出されなかった領域の欠落部分を補完することができる。
すなわち、肌色差分画像Dを生成してラベリングを実行するにあたって、実際には、肌色と同等の色の背景が原画像に映り込んでいることが原因となって、肌と背景の差分が完全に抽出できない場合がある。例えば、操作者が柄のある衣服を着用し、その色の一部が肌色に近い場合には、その柄の部分で差分が得られないケースがある。
そこで、画像処理装置10は、n画素の膨張処理とn画素の収縮処理を実行することで欠落部分を補間する。図13は、膨張処理および収縮処理を説明するための図である。図13に示すように、画像処理装置10は、注目点画素(x,y)の肌色差分画像D(x,y,t)の値が「1」である場合に、周囲n画素にある画素を全て「1」とする膨張処理を膨張画像Eに対して実行する。これによって、図13の上段では内部で差分が抽出されていなかった部分を含めて値が「1」をとる領域が膨張した膨張画像Eが得られる。その後、画像処理装置10は、膨張画像Eの注目点座標(x,y)の画素が「0」である場合に、周囲n画素にある全ての画素を「0」にする収縮処理を収縮画像Lに対して実行する。これによって、図13の中段では、値が「1」をとる領域が膨張していた領域が収縮して図13の上段に示した外郭部分と同等の大きさまで収縮した収縮画像を得ることができる。なお、上述の方法の代わりにモルフォロジー処理を適用することもできる。
このように、肌色差分画像Dに対する膨張処理および収縮処理を実行することによって、肌色と同等の色の背景が原画像に映り込んだ場合などのように肌と背景の差分が完全に抽出できなかった場合でも欠落部分を補完することが可能になる。
[分散および統合]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、画像取得部11、肌色抽出部12、肌色差分抽出部14、輝度差分抽出部16または方式選択部17を画像処理装置の外部装置としてネットワーク経由で接続するようにしてもよい。また、画像取得部11、肌色抽出部12、肌色差分抽出部14、輝度差分抽出部16または方式選択部17を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の画像処理装置の機能を実現するようにしてもよい。
[画像処理プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図14を用いて、上記の実施例と同様の機能を有する画像処理プログラムを実行するコンピュータの一例について説明する。
図14は、実施例1及び実施例2に係る画像処理プログラムを実行するコンピュータの一例について説明するための図である。図14に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180と有する。これら110〜180の各部はバス140を介して接続される。
HDD170には、図14に示すように、上記の実施例1で示した画像取得部11と、肌色抽出部12と、肌色差分抽出部14と、輝度差分抽出部16と、方式選択部17と同様の機能を発揮する画像処理プログラム170aが予め記憶される。この画像処理プログラム170aについては、図1に示した各々の画像取得部11、肌色抽出部12、肌色差分抽出部14、輝度差分抽出部16及び方式選択部17の各構成要素と同様、適宜統合又は分離しても良い。すなわち、HDD170に格納される各データは、常に全てのデータがHDD170に格納される必要はなく、処理に必要なデータのみがHDD170に格納されれば良い。
そして、CPU150が、画像処理プログラム170aをHDD170から読み出してRAM180に展開する。これによって、図14に示すように、画像処理プログラム170aは、画像処理プロセス180aとして機能する。この画像処理プロセス180aは、HDD170から読み出した各種データを適宜RAM180上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、画像処理プロセス180aは、図1に示した画像取得部11、肌色抽出部12、肌色差分抽出部14、輝度差分抽出部16及び方式選択部17にて実行される処理、例えば図4〜図6及び図10〜図12に示す処理を含む。また、CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
なお、上記の画像処理プログラム170aについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。