以下に、本発明にかかる認識装置、認識システム、認識方法および認識プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1で扱う人の方向の定義例を示す図である。図1に示すように、地面に垂直な直線を軸として人が正面を向いている場合を0°とする。人が左を向いている場合を90°とする。人が後ろを向いている場合を180°とする。人が右を向いている場合を270°とする。本実施例1では、90°単位で4分割した単位毎に方向を認識して骨格認識を行う。例えば、315°〜45°を正面、45°〜135°を左、135°〜225°を後ろ、225°〜315°を右とする。
図2および図3は、本実施例1で扱う方向の認識単位、認識範囲、学習範囲の一例を示す図である。例えば、認識装置は、人方向の認識の際は狭い範囲で認識し、関節位置の推定の際には各認識単位を複数結合した広い範囲によって、学習した結果を用いる。図3は、方向認識時の認識単位例を示す。認識装置が、方向認識を行う時点で、30°単位で学習・認識を行い、その結果を90°単位にまとめ、最終的に正面のグループG1、左のグループG2、後ろのグループG3、右のグループG4のいずれかに確定する。
図2に示すように、認識装置は、認識範囲A1の単位で、方向を確定する。例えば、認識範囲A1の単位は、図3で説明した各グループG1〜G4の単位(90°単位)に対応する。また、認識時の実際の人の方向が4分割の境界付近であった場合には、認識装置は、骨格認識時の精度低下を防止するために、学習範囲A2のデータを用いて学習を行う。例えば、学習範囲A2は、認識範囲A1に対して、右に30°左に30°広い150°の範囲となる。
図4は、本実施例1に係る認識システムの一例を示す図である。図4に示すように、この認識システムは、RGB(Red Green Blue)カメラ10aと、距離センサ10bと、認識装置100とを有する。認識装置100は、RGBカメラ10aおよび距離センサ10bに接続される。
RGBカメラ10aは、撮影範囲に含まれる画像(RGB画像)を撮影するカメラである。RGBカメラ10aは、撮影した画像の情報を、認識装置100に出力する。以下の説明では、RGBカメラ10aが撮影した画像の情報を「RGB画像データ」と表記する。
距離センサ10bは、距離センサ10bの設置位置から、距離センサ10bの撮影範囲に含まれる対象者6a上の各観測点までの距離を計測するセンサである。距離センサ10bは、各観測点の3次元座標を示す距離データ(距離画像)を生成し、生成した距離データを、認識装置100に出力する。
図5は、RGB画像データおよび距離データの一例を示す図である。例えば、RGB画像データ11aは、各座標に画素値(RGB値)が対応付けられている。距離データ11bは、各座標に3次元座標あるいは距離センサ10bから座標に対応する点までの距離が対応付けられている。
認識装置100は、RGB画像データ11aを基にした人方向の認識結果と、距離データ11bを基にした人方向の認識結果とを用いることで、より確からしい人方向を特定し、特定した人方向に対応する辞書を用いて、対象者6aの骨格認識を行う装置である。
図6は、本実施例1に係る認識装置の構成を示す機能ブロック図である。図6に示すように、この認識装置100は、入力部110と、表示部120と、記憶部130と、制御部140とを有する。また、認識装置100は、RGBカメラ10aおよび距離センサ10bに接続される。
入力部110は、認識装置100に各種の情報を入力するための入力装置である。例えば、入力部110は、キーボードやマウス、タッチパネル等に対応する。
表示部120は、制御部140から出力される情報を表示する表示装置である。例えば、表示部120は、液晶ディスプレイやタッチパネル等に対応する。
記憶部130は、第1識別器131、第2識別器132、方向確率保持テーブル133、人方向キュー134と、骨格辞書データ135とを有する。記憶部130は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
第1識別器131は、RGB画像データ11aに基づいて、対象者6aの体の方向を識別する識別器の情報である。以下の説明では、適宜、人物(対象者6a)の体の方向を「人方向」と表記する。例えば、第1識別器131は、予め学習されるRGB画像データの人物の特徴量と、人方向とを対応付ける。
第2識別器132は、距離データ11bに基づいて、対象者6aの人方向を識別する識別器の情報である。例えば、第2識別器132は、予め学習される距離データの人物の特徴量と、人方向とを対応付ける。
方向確率保持テーブル133は、対象者に関する認識単位に分割された各方向と、確率値とを対応付けるテーブルである。図7は、方向確率保持テーブルのデータ構造の一例を示す図である。図7に示すように、方向確率保持テーブル133は、第1確率保持テーブル133aと、第2確率保持テーブル133bとを含む。
第1確率保持テーブル133aは、後述する第1認識部142の認識結果を保存するテーブルである。第2確率保持テーブル133bは、後述する第2認識部143の認識結果を保存するテーブルである。第1確率保持テーブル133aおよび第2確率保持テーブル133bは、方向と、確率値とを対応付ける。例えば、方向は、図2で説明した認識単位となる30°単位で区切られる。確率値は、人方向が該当する方向である確からしさを示す値であり、確率値が高いほど、より確からしいことを示す。
人方向キュー134は、後述する第3認識部145により特定される人方向の過去の履歴を保持するキューである。図8は、人方向キューのデータ構造の一例を示す図である。図8に示すように、この人方向キュー134は、各人方向が順に記録される。例えば、第3認識部145は、人方向を特定する度に、上から順番に、人方向を人方向キュー134に保存する。
骨格辞書データ135は、人方向と、この人方向に対応する人物の関節位置とを対応付ける情報である。例えば、人物の関節位置を繋げたものが、人物の骨格に対応する。
図6の説明に戻る。制御部140は、学習部141と、第1認識部142と、第2認識部143と、移動推定部144と、第3認識部145とを有する。制御部140は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部140は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
例えば、学習部141は、学習フェーズで動作する。第1認識部142、第2認識部143、移動推定部144、第3認識部145は、認識フェーズで動作する。
学習部141は、学習フェーズにおいて、第1識別器131および第2識別器132を生成する処理部である。図9は、学習部の処理の一例を説明するための図である。まず、学習部141が、第1識別器131を生成する処理の一例について説明する。学習部141は、学習画像データ20aを取得する。学習画像データ20aは、複数のRGB画像データ21aが含まれる。各RGB画像データ21aには、教師ラベルが付与されている。教師ラベルは、RGB画像データ21aに含まれる人物の人方向を一意に識別する情報であり、「正面」、「左」、「後ろ」、「右」のうちいずれか一つの人方向となる。なお、教師ラベルは図3のような人方向範囲を直接示す情報であっても良いし、RGB画像データ21aに含まれる人物の方向を示す角度値そのものであっても良い。
学習部141は、教師ラベル「正面」が付与された複数のRGB画像データ21aを基にして機械学習を行い、人方向「正面」の特徴量を抽出する。学習部141は、人方向「正面」と、人方向「正面」の特徴量とを対応付けて、第1識別器131に登録する。学習部141は、他の教師ラベル「左」、「後ろ」、「右」が付与された複数のRGB画像データ21aについても同様に機械学習を行う。学習部141は、人方向「左」、「後ろ」、「右」の各特徴量を、人方向「左」、「後ろ」、「右」と対応付けて、第1識別器131に登録する。
学習部141が、第2識別器132を生成する処理の一例について説明する。学習部141は、学習距離データ20bを取得する。学習距離データ20bは、複数の距離データ21bが含まれる。各距離データ21bには、教師ラベルが付与されている。教師ラベルは、距離データ21bに含まれる人物の方向を一意に識別する情報であり、「正面」、「左」、「後ろ」、「右」のうちいずれか一つの人方向となる。なお、教師ラベルは図3のような人方向範囲を直接示す情報であっても良いし、距離データ21bに含まれる人物の方向を示す角度値そのものであっても良い。
学習部141は、教師ラベル「正面」が付与された複数の距離データ21bを基にして機械学習を行い、人方向「正面」の特徴量を抽出する。学習部141は、人方向「正面」と人方向「正面」の特徴量とを対応付けて、第2識別器132に登録する。学習部141は、他の教師ラベル「左」、「後ろ」、「右」が付与された複数の距離データ21bについても同様に機械学習を行う。学習部141は、人方向「左」、「後ろ」、「右」の各特徴量を、人方向「左」、「後ろ」、「右」と対応付けて、第2識別器132に登録する。
上記の説明では、学習部141が学習フェーズにおいて、第1識別器131および第2識別器132を生成する場合について説明したが、これに限定されるものではない。例えば、認識装置100は、第1識別器131、第2識別器132を、予め記憶部130に保存しておいても良い。また、学習部141は、ディープラーニング等を用いて、各人方向の特徴量を求め、第1識別器131、第2識別器132を生成しても良い。
第1認識部142は、認識フェーズにおいて、RGBカメラ10aからRGB画像データ11aを取得し、第1識別器131を基にして、対象者6aの人方向を認識する処理部である。以下の説明において、第1認識部142が人方向を認識する処理を「第1認識処理」と表記する。第1認識部142は、第1認識処理の認識結果を、第1確率保持テーブル133aに保存する。第1認識処理の認識結果を「第1認識結果」と表記する。
第1認識処理の一例について説明する。第1認識部142は、RGB画像データ11aの特徴量と、第1識別器131に含まれる「正面」、「左」、「後ろ」、「右」の特徴量とを比較して、類似具合等に基づき、人方向毎の確率値を特定する。かかる人方向毎の確率値が、第1認識結果となる。なお、人方向範囲を直接示す情報を用いて学習した場合についても同様に確率値を特定し、人方向を示す角度値を学習した場合は認識結果の角度が含まれる人方向の確率を1とする事により確率値を特定する。また、複数の異なる学習データセットを用いて複数の識別器を作成しておき、それぞれの識別器を用いて認識した結果の多数決により人方向毎の確率値を特定しても良い。
図10は、第1認識結果の一例を示す図である。ここでは一例として、第1認識結果142aの確率値の大小を色の濃淡で表し、色が濃いほど、確率値が大きいことを示す。図10に示す例では、人方向が90°〜300°の範囲に含まれる可能性があることを示す。例えば、第1認識結果142aを数値で表したものが、図7の第1確率保持テーブル133aとなる。
ここでは一例として、第1認識部142が、RGB画像データ11aと、第1識別器131とを比較して、第1認識処理を実行する場合について説明したが、色情報を用いたルールベースに基づいて、人方向を判定しても良い。図11は、ルールベースの一例を示す図である。図11に示すように、ルールベース150は、ユニホームの前後、下半身の色の位置関係により、対象者6aの人方向を判別するものである。
例えば、ユニホームの前後、下半身の色の位置関係が画像151に対応する場合には、人方向は「正面」となる。ユニホームの前後、下半身の色の位置関係が画像152に対応する場合には、人方向は「左」となる。ユニホームの前後、下半身の色の位置関係が画像153に対応する場合には、人方向は「後ろ」となる。ユニホームの前後、下半身の色の位置関係が画像154に対応する場合には、人方向は「右」となる。なお、ルールベース150は、画像151〜154以外のその他のバリエーションの画像があっても良く、他のバリエーションの画像と人方向とが対応付けられていても良い。
第2認識部143は、認識フェーズにおいて、距離センサ10bから距離データ11bを取得し、第2識別器132を基にして、対象者6aの人方向を認識する処理部である。以下の説明において、第2認識部143が人方向を認識する処理を「第2認識処理」と表記する。第2認識部143は、第2認識処理の認識結果を、第2確率保持テーブル133bに保存する。第2認識処理の認識結果を「第2認識結果」と表記する。
第2認識処理の一例について説明する。第2認識部143は、距離データ11bの特徴量と、第2識別器132に含まれる「正面」、「左」、「後ろ」、「右」の特徴量とを比較して、類似具合等に基づき、人方向毎の確率値を特定する。人方向範囲を直接示す情報を用いて学習した場合についても同様に確率値を特定し、人方向を示す角度値を学習した場合は認識結果の角度が含まれる人方向の確率を1とする事により確率値を特定する。また、複数の異なる学習データセットを用いて複数の識別器を作成しておき、それぞれの識別器を用いて認識した結果の多数決により人方向毎の確率値を特定しても良い。かかる人方向毎の確率値が、第2認識結果となる。距離データ11bを用いた人方向の認識では、上記の第1識別処理と比較して、ある程度正確に人方向を認識することが可能である。
図12は、第2認識結果の一例を示す図である。ここでは一例として、第2認識結果143aの確率値の大小を色の濃淡で表し、色が濃いほど、確率値が大きいことを示す。図12に示す例では、人方向が0°〜60°の範囲に含まれる可能性があることを示す。例えば、第2認識結果143aを数値で表したものが、図7の第2確率保持テーブル133bとなる。
ここで、人物の形状は、対角方向の3次元形状が類似しているため、人方向の認識が間違っている可能性がある。図13は、間違えやすい人方向の一例を示す図である。図13に示すように、正面(0°)と背中(180°)、右(270°)と左(90°)の組は、3次元形状が類似しているため、第2認識処理による第2認識結果が誤っている可能性がある。
このため、第2認識部143は、第2認識処理を実行した後に、対角方向追加処理を実行する。図14および図15は、対角方向追加処理の一例を説明するための図である。第2認識部143は、第2認識結果143aの対角線上の範囲にも同様の確率値を設定することで、第2認識結果143bを生成する。図14に示すように、第2認識部143は、第2認識結果143aの方向「60°」、「30°」、「0°」の確率値を、方向「240°」、「210°」、「180°」の確率値としてそれぞれ設定する。
すなわち、第2認識部143は、方向確率保持テーブル133にアクセスし、第2確率保持テーブル133bを更新する。例えば、図15に示すように、第2認識部143は、方向「60°」、「30°」、「0°」の確率値を、方向「240°」、「210°」、「180°」の確率値としてそれぞれ設定する。これにより、第2確率保持テーブル133bは、第2確率保持テーブル133b’に更新される。
図6の説明に戻る。移動推定部144は、人方向キュー134を基にして、移動方向および移動距離を推定する処理部である。移動推定部144は、推定結果を第3認識部145に出力する。
移動推定部144が、「移動方向」を推定する処理の一例について説明する。推定される移動方向は、右回転か左回転となる。移動推定部144は、人方向キュー134を参照し、連続2フレーム分の方向を読み出す。一例として、読み出した2フレーム分の方向のうち、古い方の方向を第1方向、新しい方の方向を第2方向とする。移動推定部144は、第1方向から第2方向への回転方向が右方向である場合には、移動方向を「右回転」と推定する。移動推定部144は、第1方向から第2方向への回転方向が左方向である場合には、移動方向を「左回転」と推定する。なお、移動推定部144は、上記処理を繰り返し実行し、多数決により、移動方向を推定しても良い。
移動推定部144が、「移動距離」を推定する処理の一例について説明する。ここでの移動距離は、連続2フレーム間で、人方向がどれほどの角度変化したのかを示す情報となる。人方向キュー134を参照し、連続2フレーム分の方向を読み出す。移動推定部144は、連続する2フレームの各方向の差分を、移動距離として推定する。なお、移動推定部144は、上記処理を繰り返し実行し、各移動距離の平均値を算出し、平均値を移動距離として推定しても良い。
第3認識部145は、方向確率保持テーブル133および移動推定部144の推定結果を基にして、最も確からしい対象者6aの人方向を特定する。第3認識部145は、特定した人方向と骨格辞書データ135とを基にして、対象者6aの骨格を認識する。例えば、第3認識部145は、フィルタリング処理、人方向認識処理、骨格認識処理を順に実行する。
第3認識部145が実行するフィルタリング処理の一例について説明する。図16及び図17は、フィルタリング処理の一例を説明するための図である。まず、第3認識部145は、前フレームの方向、移動方向、移動距離に基づき、フィルタリング範囲を設定する。第3認識部145は、「前フレームの方向を起点」として、「移動方向に移動距離+30°」、「移動方向とは逆方向に移動距離」に対応する範囲を、フィルタリング範囲とする。第3認識部145は、前フレームの方向の情報を、人方向キュー134から取得するものとする。
例えば、前フレームの方向を「0°」、移動方向を「右回転」とし、移動距離を「60°」とすると、フィルタリング範囲は、図16に示すフィルタリング範囲F1となる。
第3認識部145は、フィルタリング範囲を特定した後に、フィルタリング範囲F1と、第2確率保持テーブル133bとを比較して、フィルタリング範囲F1に含まれない方向の確率値を「0」に設定する。図17を用いて説明する。例えば、前フレームの方向を「300°」とし、移動方向を「右回転」とし、移動距離を「60°」とすると、フィルタリング範囲はF2となる。このため、第3認識部145は、第2認識結果133b’(第2認識結果143b)の各方向のうち、「180°、210°」の確率値を0に設定することで、フィルタリング認識結果143cを得る。
第3認識部145が実行する人方向認識処理の一例について説明する。図18は、人方向認識処理の一例を説明するための図である。第3認識部145は、第1認識結果142a(第1確率保持テーブル133a)と、フィルタリング認識結果143cとを比較する。
第3認識部145は、双方に確率値の存在する方向について、大きい方の確率値を残す。第3認識部145は、双方に確率値の存在しない方向の確率値を0に設定する。係る処理を実行することで、第3認識部145は、中間認識結果144dを生成する。図18に示す例では、中間認識結果144dの方向0°および30°の確率値が、フィルタリング認識結果143cの方向0°および30°の確率値となり、他の方向の確率値は0となる。
第3認識部145は、中間認識結果144dの各方向の確率値を参照し、確率値が最大となる方向を、対象者6aの人方向として特定する。例えば、図18の特定結果144eに示す例では、人方向は「30°」と特定する。
第3認識部145が実行する骨格認識処理の一例について説明する。図19は、骨格認識処理の一例を説明するための図である。図19に示すように、第3認識部145は、特定結果144eにより特定された人方向に対応する関節位置の情報を骨格辞書データ135から取得し、対象者6aの関節位置推定を行うことで骨格位置6bを推定する。
第3認識部145は、骨格位置6bを基にして、対象者6aのより正確な人方向を特定する。例えば、第3認識部145は、骨格位値6bに含まれる両肩、背骨中央の3点の3次元座標を取得し、3点により定まる法線ベクトルを算出する。第3認識部145は、法線ベクトルをXZ平面(床面)に射影した投影ベクトルを算出する。第3認識部145は、投影ベクトルと正面方向ベクトルとの角度を算出する。第3認識部145は、算出した角度と、認識単位とを比較して、最終的な人方向を特定する。図19の最終結果144fに示す例では、人方向60°を最終的な人方向としている。第3認識部145は、最終的な人方向の情報を、人方向キュー134に登録する。
認識フェーズにおいて、上記の第1認識部142、第2認識部143、移動推定部144、第3認識部145は、RGBカメラ10aおよび距離センサ10bから、RGB画像データ、距離データを取得する度に、上記処理を繰り返し実行する。
次に、本実施例1に係る認識装置100の処理手順の一例について説明する。図20は、本実施例1に係る認識装置の処理手順を示すフローチャートである。図20に示すように、この認識装置100の第1認識部142は、RGBカメラ10aからRGB画像データ11aを取得する(ステップS101a)。第1認識部141は、第1認識処理を実行する(ステップS102a)。第1認識部142は、第1認識結果を方向確率保持テーブル133に保存する(ステップS103a)。
一方、認識装置100の第2認識部143は、距離センサ10bから距離データ11bを取得する(ステップS101b)。第2認識部143は、第2認識処理を実行する(ステップS102b)。第2認識部143は、対角方向追加処理を実行する(ステップS103b)。認識装置100の移動推定部144は、移動方向算出処理を実行する(ステップS104b)。認識装置100の第3認識部145は、フィルタリング処理を実行する(ステップS105b)。
第3認識部145は、第1認識結果およびフィルタリング処理された第2認識結果に基づいて、人方向を決定する(ステップS106)。第3認識部145は、決定した人方向と骨格辞書データとを基にして、関節位置を推定する(ステップS107)。
第3認識部145は、関節位置を出力し(ステップS108)、人方向算出処理を実行する(ステップS109)。第3認識部145は、人方向を人方向キュー134に保存する(ステップS110)。認識装置100は、処理を継続する場合には(ステップS111,Yes)、ステップS101a、101bに移行する。認識装置100は、処理を継続しない場合には(ステップS111,No)、処理を終了する。
図20のステップS103bに示した対角方向追加処理の一例について説明する。図21は、対角方向追加処理の処理手順を示すフローチャートである。図21に示すように、認識装置100の第2認識部143は、方向確率保持テーブル133(第2確率保持テーブル133b)を読み出し(ステップS201)、未選択の方向を選択する(ステップS202)。
第2認識部143は、選択した方向の確率値が0である場合には(ステップS203,Yes)、ステップS205に移行する。一方、第2認識部143は、選択した方向の確率値が0でない場合には(ステップS203,No)、一時保存テーブルの対角方向に確率値を保存する(ステップS204)。
第2認識部143は、全ての方向の確認を完了していない場合には(ステップS205,No)、ステップS202に移行する。一方、第2認識部143は、全ての方向の確認を完了した場合には、一時保存テーブルの確率値を、方向確率保持テーブル133(第2確率保持テーブル133b)に加算することで、方向確率保持テーブル133を更新する(ステップS206)。
図20のステップS104bに示した移動方向算出処理の一例について説明する。図22は、移動方向算出処理の処理手順を示すフローチャートである。図22に示すように、認識装置100の移動推定部144は、方向変数を0に初期化する(ステップS301)。移動推定部144は、人方向キュー134から連続2フレーム分の人方向を読み出す(ステップS302)。
移動推定部144は、角度から回転方向を検出する(ステップS303)。移動推定部144は、右回転である場合には(ステップS304,Yes)、「方向変数−差分/30」により、方向変数を更新する(ステップS306)。ここで、差分は、連続するフレームの人方向の差分に対応する。
移動推定部144は、右方向でない場合には(ステップS304,No)、「方向変数+差分/30」により、方向変数を更新する(ステップS305)。
移動推定部144は、人方向キュー134の全ての値を確認完了したかを判定する(ステップS307)。移動推定部144は、人方向キュー134の全ての値を確認完了していない場合には(ステップS308,No)、ステップS302に移行する。
一方、移動推定部144は、人方向キュー134の全ての値を確認完了した場合には(ステップS308,Yes)、ステップS309に移行する。移動推定部144は、方向変数がプラスの場合は右回転として出力し、方向変数がマイナスの場合は左回転として出力する(ステップS309)。
図20のステップS105bに示したフィルタリング処理の一例について説明する。図23は、フィルタリング処理の処理手順を示すフローチャートである。図23に示すように、第3認識部145は、人方向キュー134から前フレームの人方向を読み出す(ステップS401)。
第3認識部145は、別途求めた移動方向と前フレームからフィルタリング範囲を決定する(ステップS402)。第3認識部145は、方向確率保持テーブル133(第2確率保持テーブル133b’)の1要素を確認する(ステップS403)。
第3認識部145は、方向がフィルタリング範囲内である場合には(ステップS404,Yes)、ステップS406に移行する。第3認識部145は、方向がフィルタリング範囲内でない場合には(ステップS404,No)、該当方向の確率値を0に設定する(ステップS405)。
第3認識部145は、全ての方向の確認を完了していない場合には(ステップS406,No)、ステップS403に移行する。一方、第3認識部145は、全ての方向の確認を完了した場合には(ステップS406,Yes)、フィルタリング処理を終了する。
図20のステップS109に示した人方向算出処理の一例について説明する。図24は、人方向算出処理の処理手順を示すフローチャートである。図24に示すように、第3認識部145は、骨格推定結果から両肩、背骨中央の3点の3次元座標を取得する(ステップS501)。
第3認識部145は、3点により決まる平面の法線ベクトルを算出する(ステップS502)。第3認識部145は、法線ベクトルをXZ平面(床面)に射影する(ステップS503)。第3認識部145は、射影したベクトルと正面方向ベクトルとの角度を算出する(ステップS504)。第3認識部145は、角度を基にして、人方向を判定する(ステップS505)。
次に、本実施例1に係る認識装置100の効果について説明する。認識装置100は、RGB画像データに基づく人方向の範囲と、距離データに基づく人方向の範囲とを基にして、より確からしい人方向を特定し、特定した人方向に基づいて、骨格認識を実行するため、人体の骨格認識の精度を向上させることができる。例えば、距離データだけでなく、RGB画像データによる認識結果を用いる事により、距離画像では似た形状となり判断が難しい、対角方向の角度について、色情報、顔検出等の技術により高い確率で方向を認識できる。
例えば、単に従来技術1を、従来の骨格認識システムに適用した場合には、人方向に基づいて、該当する関節位置データを利用し、骨格認識をする参考技術が考えられる。かかる参考技術は、人方向を精度良く判定することが前提となっており、人方向の判定を正しく行えないと、骨格認識の精度が低下してしまう。例えば、対象者6aの人方向が「正面」である場合には、人方向「正面」に対応する関節位置を用いて、骨格認識を行うことが望ましい。しかし、人物の正面および後ろ、右および左は、間違えやすいため、誤って、人方向を「後ろ」と判定してしまうと、人方向「後ろ」に対応する関節位置を用いて、骨格認識を行うことになり、正しい結果を得ることができない。
これに対して、本実施例1に係る認識装置100は、距離データに基づく人方向の範囲に、第2識別器132に基づく人方向の範囲の他に、対角方向の範囲を追加して、最終的な人方向の判定を行う。このように、対角方向の候補を追加することにより、最初の方向認識で方向を誤った場合でも正しい結果を得られる可能性が高くなるという効果が得られる。特に体操競技のように前後左右、上下も含め様々な方向を向くような場合、誤りが発生しやすくなるため効果が得られやすい。
また、本実施例1に係る認識装置100は、過去の人方向の履歴に基づき、対象者6aの移動方向および移動距離を特定して、対象者6aの移動範囲となるフィルタリング範囲を設定し、フィルタリング範囲に含まれない人方向を除外する。このため、人方向をより精度良く判定することができる。すなわち、最終的な骨格認識結果から求めた方向をフィードバックする事により移動方向・距離によるフィルタリングの起点となる前フレーム位置の精度が向上し、結果的としてフィルタリング結果の精度も向上するという効果が得られる。これは、すべての方向のデータを用いて学習する必要がある距離画像、RGBを使った方向認識と比べ、骨格推定では、狭い範囲の学習データにより学習された結果を用いているため、骨格の位置とそこから求める方向の精度が高くなるためである。
また、認識装置100は、認識単位を狭くし、認識範囲を広くすることにより、方向の認識が多少間違っても広い範囲の学習結果が使われることになるため、狭い範囲でそれぞれの学習を行った場合と比べ、精度を向上させることができる。
なお、本実施例1では、一例として、第2認識部143が、対角方向追加処理を実行して、第2認識結果を修正したが、対角方向追加処理をスキップすることで、処理負荷を軽減させても良い。
次に、本実施例2として、認識装置100のその他の処理について説明する。上述した実施例1では、認識装置100は、人方向を判定する場合に、倒立方向を更に追加しても良い。例えば、倒立方向は、水平方向を軸とした対象者の回転方向に対応するものである。
図25は、倒立方向の分割定義例を示す図である。図25に示すように、対象者の頭が上で直立している状態を「0°」とし、真下を向いている状態を「90°」とする。また、対象者が倒立して頭が下となる状態を「180°」とし、真上を向いている状態を「270°」とする。
図26および図27は、本実施例2で扱う方向の認識単位、認識範囲、学習範囲の一例を示す図である。図26に示すように、認識装置100は、倒立方向についても、認識単位、認識範囲、学習範囲を設定する。例えば、認識単位を30°単位とし、180°単位で2分割した単位(認識範囲B1)毎に方向を認識する。また、認識装置100は、骨格認識時の精度低下を防止するために、学習範囲B2のデータを用いて学習を行う。例えば、学習範囲B2は、認識範囲B1に対して上方向に30°広い210°の範囲とする。
図27に示すように、認識装置100は、人物の頭が上となるグループG5と、人物の頭が下となるグループG6のいずれかに確定する。
第1識別器131は、図3等で説明した人方向「正面」、「左」、「後ろ」、「右」に加えて、倒立方向「上向き」、「下向き」を追加した人方向と、RGB画像データの人物の特徴量とを対応付ける。第1認識部142は、RGB画像データ11aと、第1識別器131とを比較して、人方向「正面」、「左」、「後ろ」、「右」と、人物の倒立方向「上向き」、「下向き」とを識別する。
第2識別器132は、図3等で説明した人方向「正面」、「左」、「後ろ」、「右」に加えて、倒立方向「上向き」、「下向き」を追加した人方向と、距離データの人物の特徴量とを対応付ける。第2認識部143は、距離データ11bと、第2識別器132とを比較して、人方向「正面」、「左」、「後ろ」、「右」と、人物の倒立方向「上向き」、「下向き」とを認識する。また、第2識別器132は、人物の倒立方向「上向き」、「下向き」の認識結果に対して、対角方向追加処理を実行する。
移動推定部144は、人方向「正面」、「左」、「後ろ」、「右」の移動方向、移動距離を求める処理と同様にして、倒立方向の移動方向、移動距離を推定する。
第3認識部145は、人物の倒立方向について、フィルタリング処理、人方向認識処理を実行し、最終的な人物の倒立方向を特定する。第3認識部145は、最終的に決定した人方向、人物の倒立方向に対応する関節位置の情報を、骨格辞書データ135から取得し、対象者6aの骨格を認識する。骨格辞書データ135は、人方向「正面」、「左」、「後ろ」、「右」と、人物の倒立方向「上向き」、「下向き」との組み合わせに対応する関節位置の情報を保持しておくものとする。
上記のように、認識装置100は、人方向を判定する場合に、倒立方向を更に追加して処理することで、複雑な動きをするものについて、より精度良く骨格認識を行うことができる。
続いて、本実施例1、2に示した利用システム例について説明する。例えば、認識装置100の出力結果となる骨格認識結果について下記の様に利用することができる。例えば、骨格(3次元関節座標)を用いて、フレーム単位で各関節の角度を算出する事により、審判の採点支援を行うことができる。関節座標で決まる手足の位置を用いてリアルタイムに何の技を行っているかを認識して放送等でリアルタイムに表示を行うことができる。トレーニング時に関節角度や動きを数値化することにより、トレーニングの支援を行う等の事ができる。
次に、上記実施例に示した認識装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図28は、認識装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図28に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、記憶媒体からプログラム等を読み取る読み取り装置304と、有線または無線ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置305とを有する。例えば、インターフェース装置305は、RGBカメラ10a、距離センサ10b等に接続される。また、コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301〜307は、バス308に接続される。
ハードディスク装置307は、第1認識プログラム307a、第2認識プログラム307b、移動推定プログラム307c、第3認識プログラム307dを有する。CPU301は、第1認識プログラム307a、第2認識プログラム307b、移動推定プログラム307c、第3認識プログラム307dを読み出してRAM306に展開する。
第1認識プログラム307aは、第1認識プロセス306aとして機能する。第2認識プログラム307bは、第2認識プロセス306bとして機能する。移動推定プログラム307cは、移動推定プロセス306cとして機能する。第3認識プログラム307dは、第3認識プロセス306dとして機能する。
第1認識プロセス306aの処理は、第1認識部142の処理に対応する。第2認識プロセス306bの処理は、第2認識部143の処理に対応する。移動推定プロセス306cの処理は、移動推定部144の処理に対応する。第3認識プロセス306dの処理は、第3認識部145dの処理に対応する。
なお、各プログラム306a〜307dについては、必ずしも最初からハードディスク装置307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム306a〜307dを読み出して実行するようにしても良い。