(57)【要約】【課題】距離画像カメラから送信される距離画像を用いて対象の姿勢推定を行うコンピュータシステムの処理負荷を低減する。【解決手段】距離画像を取得し出力する距離画像カメラと、距離画像カメラとネットワークを介して接続される姿勢推定装置からなる姿勢推定システムであって、距離画像カメラは、入力距離画像から前景画素を含む領域を抽出し、抽出した領域から第１の関節位置を推定し、距離画像と推定された第１の関節位置とを姿勢推定装置に送信し、姿勢推定装置は、距離画像カメラから受信した距離画像から、第１の関節位置と異なる第２の関節位置を識別し、第１の関節位置と第２の関節位置から推定姿勢情報を生成し出力する。【選択図】図４
2019066238.tif 000002
【特許請求の範囲】
【請求項１】
距離画像を取得し出力する距離画像カメラと、該距離画像カメラとネットワークを介して接続される姿勢推定装置からなる姿勢推定システムであって、
前記距離画像カメラは、
距離画像センサと、
前記距離画像センサから取得した入力距離画像から前景画素を含む領域を抽出し、前記抽出した領域を含む距離画像を生成する距離画像生成部と、
前記距離画像から第１の関節位置を推定する第１の姿勢推定部と、
前記距離画像と前記推定された第１の関節位置とを送信する第１の通信部を有し、
前記姿勢推定装置は、
前記距離画像カメラからの前記距離画像と前記第１の関節位置を受信する第２の通信部と、
前記距離画像を前記第２の通信部を介して受信する距離画像受信部と、
前記距離画像受信部で受信した距離画像から、前記第１の関節位置と異なる第２の関節位置を識別し、前記第１の関節位置と前記第２の関節位置から推定姿勢情報を生成する姿勢推定部と、
前記生成された推定姿勢情報を出力する出力部とを有し、
前記第１の通信部は、前記第２の関節位置を抽出するのに使用する距離画像を前記ネットワークに送出することを特徴とする姿勢推定システム。
【請求項２】
請求項１に記載の姿勢推定システムであって、
前記第１の通信部は、前記距離画像から前記第１の関節位置を抽出するのに使用した距離画像を除いて送信することを特徴とする姿勢推定システム。
【請求項３】
請求項１に記載の姿勢推定システムであって、
前記距離画像は人の距離画像であり、前記第１の関節位置および前記第２の関節位置は人の関節位置であることを特徴とする姿勢推定システム。
【請求項４】
請求項１に記載の姿勢推定システムであって、
前記第１の通信部は、前記第１の関節位置の座標を送信することを特徴とする姿勢推定システム。
【請求項５】
距離画像カメラとネットワークを介して接続される姿勢推定装置であって、
前記距離画像カメラから距離画像と第１の関節位置を受信する通信部と、
前記距離画像を前記通信部を介して受信する距離画像受信部と、
前記距離画像受信部で受信した距離画像から、前記第１の関節位置と異なる第２の関節位置を識別し、前記第１の関節位置と前記第２の関節位置から推定姿勢情報を生成する姿勢推定部と、
前記生成された推定姿勢情報を出力する出力部と、
を備えることを特徴とする姿勢推定装置。
【請求項６】
請求項５に記載の姿勢推定装置であって、
前記姿勢推定部は、
前記通信部を経由して、距離画像カメラから入力される前記第１の関節位置を受信する関節入力部と、
前記通信部を介して入力した距離画像の前景画素を座標軸変換する距離画像変換部と、
前記距離画像変換部で変換された前景画素から体積要素データを生成する体積要素生成部と、
前記体積要素生成部で生成された体積要素データから、前記第２の関節位置を識別する関節識別部と、
前記関節識別部で識別した第２の関節座標と、前記関節入力部に入力された第１の関節座標をもとに座標を統合する関節統合部
からなることを特徴とする姿勢推定装置。
【請求項７】
請求項５に記載の姿勢推定装置であって、
前記姿勢推定部は、
前記通信部を経由して、距離画像カメラから入力される前記第１の関節位置を受信する関節入力部と、
前記距離画像の前景画素から注目画素の特徴量を算出する特徴量算出部と、
前記特徴量算出部で算出された特徴量から当該注目画素の部位ラベルを取得する部位識別部と、
前記部位識別部で識別された各注目画素の部位ラベルを用いて、部位毎に、その重心位置を取得し、取得した各部位の重心位置に基づいて前記第２の関節位置を決定する関節識別部と、
前記関節識別部で識別した前記第２の関節位置と、前記関節入力部に入力された前記第１の関節位置をもとに座標を統合する関節統合部
からなることを特徴とする姿勢推定装置。
【請求項８】
距離画像を取得し出力する距離画像カメラであって、
距離画像センサと、
前記距離画像センサから取得した入力距離画像から前景画素を含む領域を抽出し、前記抽出した領域を含む距離画像を生成する距離画像生成部と、
前記距離画像から関節位置を推定する姿勢推定部と、
前記生成された距離画像から前記推定した関節位置の距離画像を除いた距離画像と、前記推定された関節位置とを外部に送信する通信部と、
を備えることを特徴とする距離画像カメラ。
【請求項９】
請求項８に記載の距離画像カメラであって、
前記姿勢推定部は、
前記前景画素を座標変換する距離画像変換部と、
前記距離画像変換部で変換した前景画素を体積要素データに変換する体積要素生成部と、  前記体積要素生成部で変換した体積要素データを探索して関節位置を推定する関節識別部からなることを特徴とする距離画像カメラ。
【請求項１０】
請求項８に記載の距離画像カメラであって、
前記姿勢推定部は、
前記前景画素から注目画素の特徴量を算出する特徴量算出部と、
前記特徴量算出部で算出された特徴量から当該注目画素の部位ラベルを取得する部位識別部と、
前記部位識別部で識別された各注目画素の部位ラベルを用いて、部位毎に、その重心位置を取得し、取得した各部位の重心位置に基づいて関節位置を決定する関節識別部とからなることを特徴とする距離画像カメラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、姿勢推定システム、姿勢推定装置、及び距離画像カメラに関する。
【背景技術】
【０００２】
距離画像センサから取得した距離画像（「深度画像」ともいう）を用いて、人間等の対象の関節位置及び姿勢を推定する技術が知られている。例えば、特許文献１には、深度カメラを使ってゲームプレーヤーの動きを認識するコンピュータゲーミングシステムが記載されている。特許文献１に記載されているようなコンピュータシステムは、１台の深度カメラから送られる距離画像を処理するために十分な処理能力を持っていることが前提となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８２９５５４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、様々な場所に設置した多数の距離画像カメラと、これらの距離画像カメラにネットワークを介して接続される遠隔サーバ装置とを用意し、この遠隔サーバ装置で各距離画像カメラから受信した各距離画像から対象の姿勢推定を実行する、コンピュータシステムが望まれている。例えば、距離画像解析技術を用いて、ヒトの動作を認識し、人の動作を認識し、生産効率改善や不良品低減、及び、顧客行動分析や従業員監視等を目指す監視システムが考えられる。このようなコンピュータシステムでは、多量の距離画像データによってネットワークの通信負荷が増大するとともに、遠隔サーバ装置の処理負荷が増大してしまう課題がある。または、非常に処理能力の高いコンピュータを用意する必要があるという課題がある。また、遠隔サーバ装置が実行する姿勢推定の方法も、多量の距離画像データを効率的に処理できるように改善する必要がある。
【０００５】
本発明は、距離画像カメラから送信される距離画像を用いて対象の姿勢推定を行うコンピュータシステムの処理負荷を低減することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記背景技術に鑑み、その一例を挙げるならば、距離画像を取得し出力する距離画像カメラと、距離画像カメラとネットワークを介して接続される姿勢推定装置からなる姿勢推定システムであって、距離画像カメラは、距離画像センサと、距離画像センサから取得した入力距離画像から前景画素を含む領域を抽出し、抽出した領域を含む距離画像を生成する距離画像生成部と、距離画像から第１の関節位置を推定する第１の姿勢推定部と、距離画像と推定された第１の関節位置とを送信する第１の通信部を有し、姿勢推定装置は、距離画像カメラからの距離画像と第１の関節位置を受信する第２の通信部と、距離画像を第２の通信部を介して受信する距離画像受信部と、距離画像受信部で受信した距離画像から、第１の関節位置と異なる第２の関節位置を識別し、第１の関節位置と第２の関節位置から推定姿勢情報を生成する姿勢推定部と、生成された推定姿勢情報を出力する出力部とを有し、第１の通信部は、第２の関節位置を抽出するのに使用する距離画像をネットワークに送出するように構成する。
【発明の効果】
【０００７】
本発明によれば、距離画像カメラから送信される距離画像を用いて対象の姿勢推定を行うコンピュータシステムの処理負荷を低減することができる。
【図面の簡単な説明】
【０００８】
【図１】実施例１における姿勢推定システムのシステム構成図である。
【図２】実施例１の前提となる従来の距離画像カメラ及び姿勢推定装置の機能構成図である。
【図３】実施例１の前提となる従来の姿勢推定システムの処理フローチャートである。
【図４】実施例１における距離画像カメラ及び姿勢推定装置の機能構成図である。
【図５】実施例１における距離画像カメラの姿勢推定部の構成図である。
【図６】実施例１における姿勢推定装置の姿勢推定部の構成図である。
【図７】実施例１における姿勢推定装置を実現するコンピュータのハードウェア構成図である。
【図８】実施例１における姿勢推定システムの処理フローチャートである。
【図９】実施例１における距離画像カメラの姿勢推定処理の具体例を示すフローチャートである。
【図１０】実施例１における体積要素を２次元座標に投影した図である。
【図１１】実施例１における体積要素を3次元座標で示した俯瞰図である。
【図１２】実施例１における体積要素データのデータフォーマットである。
【図１３】実施例１における姿勢推定装置の姿勢推定処理の具体例を示すフローチャートである。
【図１４】実施例２における距離画像カメラの姿勢推定部の構成図である。
【図１５】実施例２における姿勢推定装置の姿勢推定部の構成図である。
【図１６】実施例２における距離画像カメラの処理フローチャートである。
【図１７】実施例２における距離画像カメラの姿勢推定処理の具体例を示すフローチャートである。
【図１８】実施例２における姿勢推定装置の姿勢推定処理の具体例を示すフローチャートである。
【図１９】実施例５における距離画像カメラの姿勢推定処理のフローチャートである。
【図２０】実施例６における姿勢推定システムの姿勢推定処理のフローチャートである。
【図２１】実施例７における姿勢推定システムのシステム構成図である。
【図２２】実施例７における姿勢推定装置の姿勢推定部の構成図である。
【図２３】実施例７における姿勢推定システムの姿勢推定処理のフローチャートである。
【図２４】実施例７における距離画像データを示す図である。
【図２５】実施例７における特徴量を示す図である。
【図２６】実施例７における特徴量ベクトルのデータフォーマットを示す図である。
【図２７】実施例７における特徴量データのデータフォーマットを示す図である。
【図２８】実施例８における距離画像カメラ及び姿勢推定装置の機能構成図である。
【図２９】実施例８における姿勢推定装置の姿勢推定部の構成図である。
【図３０】実施例８における姿勢推定システムの姿勢推定処理のフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施例について、図面を参照して説明する。
【実施例１】
【００１０】
図１は、本実施例における姿勢推定システムのシステム構成例を示す図である。姿勢推定システムは、１台以上の距離画像カメラ１と、１台の姿勢推定装置２とを含む。各距離画像カメラ１と姿勢推定装置２は、ネットワークＮを介して接続され、互いに通信することができる。ネットワークＮは、例えば、有線ＬＡＮ（Local Area Network）、無線ＬＡＮ、ＷＡＮ（Wide Area Network）、モバイル通信網、インターネット等の電気通信網であり、これらの２つ以上を組み合わせてもよい。
【００１１】
距離画像カメラ１は、人間等の対象が存在する対象空間の距離画像を撮像する撮像装置である。距離画像（「深度画像」ともいう）とは、画像中の各画素に、その階調情報（例えば、ＲＧＢ）に加え、深さ方向の距離情報が所定のスケーリングで記録された画像である。距離画像カメラ１は、例えばＴＯＦ（Time of Flight）方式のカメラであるが、距離画像を出力できれば、例えば可視光により撮像する２つの光学系を備えたステレオカメラ等の他の方式のカメラであってもよい。また、距離画像カメラは、距離画像センサと呼んでもよい。
【００１２】
本実施例における距離画像カメラ１は、背景画素の階調情報及び距離情報に所定値（例えば「１」）を設定することにより、撮像した距離画像から背景を消去し、前景画素を含む距離画像を姿勢推定装置２に送信する。前景画素とは、人間や当該人間が持つ道具等の動作する対象に対応する画素群である。背景画素とは、前景画素以外の画素であり、背景に対応する画素群である。
【００１３】
姿勢推定装置２は、距離画像に含まれる前景画素から人間等の対象の姿勢を推定する装置である。姿勢推定装置２は、例えば、後述するようにサーバ等のコンピュータ装置で実現される。姿勢推定装置２は、複数台のコンピュータで実現されてもよい。
【００１４】
本実施例における姿勢推定装置２は、距離画像に含まれる前景画素の距離情報に基づいて、対象を構成する部位（例えば、頭、腕、手、胴体などの体のパーツ、関節は含まない）を識別し、各部位に対して関節位置を識別し、識別した関節位置に基づいて対象の姿勢を推定する。
【００１５】
本実施例では、後述するが、距離画像カメラ１によって距離画像から背景が消去され、この距離画像をもとに距離画像カメラ１の内部で姿勢推定を行なう。その結果としての関節座標から構成される姿勢情報と前景画素の一部のみが姿勢推定装置２に送信される。これにより、背景画素と前景画素の両方を含む一般的な距離画像を送信する場合と比べ、ネットワークＮの通信負荷を低減することができる。また、姿勢推定装置２は前景画素の一部に対して処理を実行すればよいため、一般的な距離画像を処理する場合と比べ、姿勢推定装置２の処理負荷を低減することができる。なお、距離画像カメラ１の台数あるいは距離画像カメラ１の撮像レートが増加するほど、効果が大きくなる。
【００１６】
本実施例では、距離画像カメラの設置条件、例えば、床からの高さや鉛直軸と距離画像カメラのＸＹＺカメラ座標系のＺ軸のなす角度、を、あらかじめ測定しておき、距離画像カメラおよび姿勢推定装置にインプットして初期設定する。測定の方法としては、設置作業者が実測する方法や、距離画像カメラ内にカメラの姿勢（向き）を検出するセンサを内蔵し、その出力をもとに鉛直軸とのなす角度を求める方法が考えられる。姿勢を検出するセンサとしては加速度センサなどがある。また、床からの高さは、距離画像カメラで得られる床からの距離情報と加速度センサから得られる鉛直軸となす角度から、三角測量法で求めることができる。これにより、カメラ座標系と世界座標系の関係を算出するための情報を得ることが可能である。
【００１７】
図２は、本実施例の前提となる従来の距離画像カメラ及び姿勢推定装置の機能構成例を示す図である。距離画像カメラ１は、制御部１１と、光源１２と、距離画像センサ１３と、距離画像生成部１４と、通信部１５とを含む。姿勢推定装置２は、通信部２１と、距離画像受信部２２と、姿勢推定部２３と、出力部２７とを含む。姿勢推定部２３は、特徴量算出部２４と、部位識別部２５と、関節識別部２６とを含む。
【００１８】
制御部１１は、光源１２、距離画像センサ１３、距離画像生成部１４、及び通信部１５を制御する。例えば、制御部１１は、光源１２に光の照射を指示し、距離画像センサ１３に照射光と反射光の位相差情報の生成を指示し、距離画像生成部１４に距離画像の生成を指示し、通信部１５に距離画像の送信を指示する。制御部１１は、例えば、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）等を含むマイクロコンピュータや、専用ハードウェア回路により実現することができる。
【００１９】
光源１２は、人間等の対象が存在する対象空間に対して光を照射する。光源１２は、例えば、赤外光もしくは可視光を照射する発光ダイオード、半導体レーザ等のデバイスにより実現することができる。
【００２０】
距離画像センサ１３は、対象空間からの反射光を、結像レンズ（図示せず）を介して受光し、画素毎に、照射時と受光時の位相差情報と、階調情報とを生成して出力する。距離画像センサ１３は、例えば、照射時と受光時の位相差情報と階調情報とを生成する複数の受光素子を、二次元状に配列することで構成することができる。
【００２１】
距離画像生成部１４は、距離画像センサ１３から出力される画素毎の位相差情報を用いて、画素毎にその距離情報を算出する。そして、画素毎に距離情報と階調情報を含む入力距離画像を生成する。
【００２２】
また、距離画像生成部１４は、入力距離画像から前景画素を抽出するとともに、背景を消去し、抽出された前景画素と消去された背景を含む出力距離画像を生成し、通信部１５を介して姿勢推定装置２に送信する。例えば、距離画像生成部１４は、対象が存在しないときに取得した対象空間の距離画像（背景のみを含む）と入力距離画像との、対応する画素の距離の差分を取り、差分がある部分を前景画素として抽出することができる。前景画素の抽出方法はこれに限定されない。例えば、距離が所定値未満の画素を前景画素として抽出してもよい。例えば、距離画像生成部１４は、背景画素の階調情報及び距離情報を所定値（例えば「１」）に設定することにより、入力距離画像のサイズ（縦横の画素数を指す、以下同様）を変更することなく、背景を消去する。
【００２３】
なお、距離画像生成部１４は、出力距離画像に対して所定の圧縮処理を施してデータ量を削減してもよい。上記の例では、背景画素が同じ値に設定されるため、背景画素が連続する領域では圧縮率を高めることができる。距離画像生成部１４は、例えば、ＣＰＵ、ＲＡＭ等を含むマイクロコンピュータや、専用ハードウェア回路により実現することができる。
【００２４】
通信部１５は、ネットワークＮに接続され、距離画像生成部１４から出力された距離画像を、姿勢推定装置２に送信する。通信部１５は、例えば、ＬＡＮ等の規格のネットワークインターフェイスにより実現することができる。
【００２５】
通信部２１は、ネットワークＮに接続され、各距離画像カメラ１から送信された距離画像を受信する。
【００２６】
距離画像受信部２２は、距離画像を通信部２１を介して受信し、姿勢推定部２３に出力する。なお、距離画像受信部２２は、受信した距離画像に所定の圧縮処理が施されている
場合、当該距離画像に対して所定の伸長処理を施してもよい。
【００２７】
姿勢推定部２３は、距離画像受信部２２から出力された距離画像を用いて、当該距離画像に含まれる人物等の対象の姿勢を推定する。姿勢推定処理を行うため、姿勢推定部２３は、特徴量算出部２４、部位識別部２５、及び関節識別部２６を含む。
【００２８】
特徴量算出部２４は、距離画像を構成する各画素の距離情報を取得する。また、特徴量算出部２４は、前景画素を構成する画素（注目画素）毎に、特徴量を算出する。上述のように背景画素には所定値が設定されているため、前景画素は背景画素から区別することができる。特徴量の算出方法は、既存の技術を用いることができ、限定されない。例えば、注目画素とその周囲画素の距離の差を特徴量とすればよい。具体例としては、注目画素を中心とする縦９画素×横９画素の８１画素の矩形領域から、注目画素とその周囲の８０画素それぞれとの距離の差を有する８０次元（２次元配列）の特徴量ベクトルを用いることができる。
【００２９】
部位識別部２５は、各注目画素が含まれる部位（例えば、頭、腕、手、胴体などの体のパーツ、関節は含まない）を識別する。部位の識別方法は、既存の技術を用いることができ、限定されない。例えば、特徴量閾値と部位ラベルを関連付けた決定木（識別器）に対して、注目画素の特徴量を入力することで、当該注目画素の部位ラベルを取得すればよい。部位ラベルとは、各部位の種類を示す情報などの、部位の識別子である。識別器には、例えば、ランダムフォレスト等の複数の決定木を用いることができ、予め学習したものを姿勢推定装置２の備える記憶装置に記憶しておけばよい。
【００３０】
関節識別部２６は、識別された各注目画素の部位ラベルを用いて、対象の関節位置を識別する。関節位置の識別方法は、既存の技術を用いることができ、限定されない。例えば、同一部位ラベルが付与された注目画素群である部位毎に、その重心位置（関節位置候補）を取得すればよい。重心位置の取得には、例えば、mean-shift法を用いることができる。また、例えば、直線距離や角度などの関節間の関係を定義した骨格関節モデルを用いて、各重心位置の関節モデルに対する整合性を評価し、最終的な各関節位置を決定すればよい。また、各関節位置の関節ラベルを決定してもよい。関節ラベルとは、例えば、首関節、手首関節、肩関節など関節の種類を示す情報などの、関節の識別子である。
【００３１】
出力部２７は、関節識別部２６により識別された関節位置を含む推定姿勢情報を出力する。関節位置は、例えば、距離画像と同じ座標系の位置座標情報である。推定姿勢情報は、各関節位置の距離情報、各関節位置の関節ラベル、関節どうしを結ぶ線分情報等を含んでもよい。例えば、出力部２７は、通信部２１を介して推定姿勢情報を外部のコンピュータやストレージに送信してもよいし、各関節位置を示す画像情報を姿勢推定装置２の備えるディスプレイに表示させてもよい。出力部２７は、距離画像を出力してもよい。
【００３２】
図３は、従来の姿勢推定システムの処理例を示すフローチャートである。本図のフローチャートは、１フレームの距離画像毎に実行される。
【００３３】
図３において、まず、図２の距離画像カメラ１の距離画像生成部１４は、距離画像センサ１３から出力される画素毎の情報を用いて、画素毎に距離情報と階調情報を含む入力距離画像を生成する（ステップＳ１０）。
【００３４】
それから、距離画像生成部１４は、ステップＳ１０で生成した入力距離画像から前景画素を抽出するとともに、背景を消去し、抽出された前景画素と消去された背景を含む出力距離画像を生成する（ステップＳ２０）。
【００３５】
距離画像生成部１４は、ステップＳ２０で生成した出力距離画像を、通信部１５を介して姿勢推定装置２に送信する（ステップＳ３０）。
【００３６】
それから、姿勢推定装置２の距離画像受信部２２は、ステップＳ３０で距離画像カメラ１から送信された距離画像を、通信部２１を介して受信する（ステップＳ４０）。
【００３７】
それから、姿勢推定部２３は、ステップＳ４０で受信された距離画像を用いて、当該距離画像に含まれる人物等の対象の姿勢を推定する（ステップＳ５０）。
【００３８】
最後に、出力部２７は、ステップＳ５０で姿勢推定部２３から出力された関節位置を含む推定姿勢情報を出力する（ステップＳ６０）。
【００３９】
このように、従来は、ステップＳ３０で、距離画像生成部１４は、生成された距離画像を姿勢推定装置２に送信するので、通信負荷が大となる。また、ステップＳ５０で、距離画像を用いて対象の姿勢を推定するため処理負荷が大となる課題がある。
【００４０】
そこで、本実施例では、通信負荷及び処理負荷を低減することが可能な距離画像カメラ及び姿勢推定装置について以下説明する。
【００４１】
図４は、本実施例における距離画像カメラ及び姿勢推定装置の機能構成図である。図４において、距離画像カメラ１は、制御部１１と、光源１２と、距離画像センサ１３と、距離画像生成部１４と、通信部１５と、姿勢推定部１６とを含む。また、姿勢推定装置２は、通信部２１と、距離画像受信部２２と、姿勢推定部２３と、出力部２７とを含む。なお、詳細な説明は後述する。
【００４２】
また、図５は、距離画像カメラ１の姿勢推定部１６の機能構成図である。姿勢推定部１６は、距離画像変換部７１と、体積要素生成部７２と、関節識別部７３とを含む。なお、詳細な説明は後述する。
【００４３】
また、図６は、姿勢推定装置２の姿勢推定部２３の機能構成図である。姿勢推定部２３は、距離画像変換部８１と、体積要素生成部８２と、関節識別部８３と、関節入力部２９と、関節統合部３０とを含む。なお、詳細な説明は後述する。
【００４４】
図７は、本実施例における、姿勢推定装置を実現するコンピュータのハードウェア構成図である。姿勢推定装置２は、図７に示すようなコンピュータ９０により実現することができる。コンピュータ９０は、例えば、サーバーコンピュータであるが、パーソナルコンピュータ、スマートフォン、タブレットコンピューター等のコンピュータ機器であってもよい。また、姿勢推定装置２は、複数のコンピュータ９０により構成されてもよい。
【００４５】
図７において、コンピュータ９０は、演算装置９１と、主記憶装置９２と、外部記憶装置９３と、通信装置９４と、読み書き装置９５と、入力装置９６と、出力装置９７とを含む。
【００４６】
演算装置９１は、例えば、ＣＰＵなどの演算ユニットである。主記憶装置９２は、例えば、ＲＡＭなどの記憶装置である。外部記憶装置９３は、例えば、ハードディスクやＳＳＤ（Solid State Drive）、あるいはフラッシュＲＯＭ（Read Only Memory）などの記憶装置である。通信装置９４は、ネットワークケーブルを介して有線通信を行う通信装置、アンテナを介して無線通信を行う通信装置を含む、情報を送受信する装置である。読み書き装置９５は、DVD（Digital Versatile Disk）、USB（Universal Serial Bus）メモリー等の記録媒体に情報を読み書きする装置である。入力装置９６は、キーボードやマウスなどのポインティングデバイス、タッチパネル、マイクロフォンなどを含む、入力情報を受け付ける装置である。出力装置９７は、ディスプレイ、プリンター、スピーカーなどを含む、出力情報を出力する装置である。主記憶装置９２及び外部記憶装置９３の少なくとも一部は、例えば、通信装置９４を介して接続されるネットワーク上のストレージにより実現されてもよい。
【００４７】
図４における、距離画像受信部２２、姿勢推定部２３、及び出力部２７（これらを「制御部」と呼んでもよい）は、例えば、演算装置９１が所定のアプリケーションプログラムを実行することによって実現することができる。このアプリケーションプログラムは、例えば、外部記憶装置９３内に記憶され、実行にあたって主記憶装置９２上にロードされ、演算装置９１によって実行される。通信部２１は、例えば、通信装置９４によって実現される。
【００４８】
図８は、本実施例における姿勢推定システムの処理フローチャートである。図８において、図３の処理フローチャートと同様のステップについては同じ符号を付し、その説明は省略する。図８において、図３と異なる点は、距離画像カメラにおいて、ステップＳ２１、Ｓ３１、姿勢推定装置において、Ｓ４１、Ｓ５１、Ｓ５２を有する点である。
【００４９】
図８において、距離画像カメラの姿勢推定部１６は、ステップＳ２０で生成した出力距離画像を用いて、当該距離画像に含まれる人物等の対象の一部の姿勢を推定する（ステップＳ２１）。詳細は後述する。
【００５０】
そして、ステップＳ２１で推定した姿勢推定結果と、距離画像カメラの距離画像生成部１４で生成した出力距離画像のうちステップＳ２１で推定した部分の距離画像を除いた距離画像を、通信部１５を介して姿勢推定装置２に送信する（ステップＳ３１）。詳細は後述する。
【００５１】
それから、姿勢推定装置の距離画像受信部２２は、ステップＳ３１で距離画像カメラ１から送信された距離画像を、通信部２１を介して受信し、姿勢推定装置の姿勢推定部２３は、ステップＳ３１で距離画像カメラ１から送信された姿勢推定結果を、通信部２１を介して受信する（ステップＳ４１）。
【００５２】
姿勢推定部２３は、ステップＳ４１で受信した距離画像を用いて、当該距離画像に含まれる人物等の対象の姿勢を推定する（ステップＳ５１）。
【００５３】
次に、姿勢推定部２３は、ステップＳ５１で推定した姿勢推定結果と、ステップＳ４１で受信した姿勢推定結果を用いて、当該距離画像に含まれる人物等の対象の姿勢を統合する（ステップＳ５２）。
【００５４】
最後に、出力部２７は、ステップＳ５２で姿勢推定部２３から出力された推定姿勢情報を出力する（ステップＳ６０）。
【００５５】
図９は、図８におけるステップＳ２１とＳ３１の詳細処理フローチャートである。
【００５６】
図９において、図５の距離画像変換部７１は、ステップＳ２０で抽出した前景画素を、２次元のｒθφ座標系から、３次元のＸＹＺ座標系に変換する（ステップＳ１１００）。
【００５７】
次に距離座標変換部７１は、ステップＳ１１００でＸＹＺ座標系に変換した前景画素を、Ｘ軸、Ｙ軸、Ｚ軸それぞれに回転させることで、カメラ座標系から世界座標系に変換する（ステップＳ１１１０）。カメラ座標系と、世界座標系の回転角度は、距離画像カメラを設置した際のＸ軸とＹ軸とＺ軸の設置条件から、あらかじめ算出が可能である。
【００５８】
次に図５の体積要素生成部７２は、ステップＳ１１００で変換したＸＹＺ座標系の前景画素を体積要素データに変換する（ステップＳ１１２０）。
【００５９】
体積要素は、体積の要素であり、３次元空間での正規格子単位の値を表すものである。体積要素を、ＸＹＺ空間内のＸ軸およびＹ軸およびＺ軸方向に３次元的に連続して並べて埋め尽くすことで、３次元空間を離散的に表現することが可能である。例えば、体積要素の大きさを（ｘ，ｙ，ｚ）＝（１０，１０，１０）とした場合、原点（０，０，０）に存在する画素が属する体積要素は、その中心座標が（０，０，０）の体積要素であると表現でき、座標（１２，１２，１２）に存在する画素が属する体積要素は、その中心座標（１０，１０，１０）の体積要素であると表現できる。別の表現としては、中心座標が（Ｘ，Ｙ，Ｚ）の体積要素に属する画素は、ｘ、ｙ、ｚ座標がそれぞれ、Ｘ−５からＸ＋５まで、Ｙ−５からＹ＋５まで、Ｚ−５からＺ＋５までの画素である、といえる。
【００６０】
図１０は、体積要素を２次元座標で示した図の例である。ＸＹＺ空間に存在する体積要素をＺ軸方向にＸＹ平面に射影した図である。図の右方向がＸ軸方向、下方向がＹ軸方向である。４５０１は、Ｘ軸である。４５０２は、Ｙ軸である。４５１０から４５６０までは、体積要素である。例えば、体積要素４５１０はｄ３９というＺ座標を持つ。
【００６１】
図１１は、図１０に対応した体積要素をＸＹＺ座標で示した俯瞰図の例である。４５０１は、Ｘ軸である。４５０２は、Ｙ軸である。４５０３は、Ｚ軸である。４５１０から４５６０までは、体積要素である。
【００６２】
このように、体積要素の座標を、ＸＹＺ空間における中心座標とし、体積要素のサイズをあらかじめ定義した大きさ（ｘ，ｙ，ｚ）とし、体積要素に含まれる画素の数を体積要素の要素数ｄとした場合、前景画素全体を含む体積要素の（ｘ，ｙ，ｚ，ｄ）をすべてリスト化したものを、体積要素データと定義する。
【００６３】
図１２は、体積要素データのデータ構造を示した例である。カラム４８１０は、当該体積要素の中心のＸ座標を示す。カラム４８２０は、当該体積要素の中心のＹ座標を示す。カラム４８３０は、当該体積要素の中心のＺ座標を示す。カラム４８４０は、当該体積要素に属する画素の総数を示す。ロー４８５０は、ひとつめの体積要素の、ＸＹＺ座標と属する画素の数をひとまとめにしたデータである。ロー４８６０は、ふたつめの体積要素の、ＸＹＺ座標と属する画素の数をひとまとめにしたデータである。ロー４８７０以下、ロー４８８０まで、同様に各体積要素の、ＸＹＺ座標と当該体積要素に属する画素の数である。
【００６４】
図９に戻って、ステップＳ１１３０において、図５の関節識別部７３は、ステップＳ１１２０で変換した体積要素データを探索して頭部の関節を識別する。
【００６５】
頭部の探索は、例えば世界座標のＺ軸が鉛直下向きである場合は、体積要素データをｚ値で昇順ソートし、先頭の体積要素を頭部と検出することができる。図１０、１１におけるｄ４５がそれに相当する。これは、姿勢を推定する対象が直立している場合などに有効な手法である。
【００６６】
次に、ステップＳ１１４０において、関節識別部７３は、ステップＳ１１３０で検出した頭部座標をもとに、肩部の関節を識別する。
【００６７】
肩部の探索は、頭部の座標を（Ｘ１，Ｙ１，Ｚ１）とすると、座標（Ｘ１，Ｙ１，Ｚ１＋ｈ）を中心とした、半径ｓの円と交差する体積要素を抽出し、左右の肩の候補とすることができる。ここで、ｈは肩から頭部への高さ、ｓ×２は肩幅、である。図１０、１１における４５１０や４５４０がそれに相当する。
【００６８】
抽出した左右の肩候補の体積要素が複数の場合は、肩候補の体積要素のうち、円の中心座標（Ｘ１，Ｙ１，Ｚ１＋ｈ）から肩候補の体積要素の中心座標へのベクトルの内積が最小となるような組み合わせの、２つの体積要素を、それぞれ左右の肩として、確定することができる。抽出した左右の肩候補の体積要素が１つの場合は、左右いずれかの肩と確定することができる。
【００６９】
このようにして識別した頭部の座標と、肩の座標をもとに、頭部を構成する前景画素と、肩を構成する前景画素を抽出する（ステップＳ１１５０）。例えば、頭部を構成する体前景画素は、ステップＳ１１３０で識別した頭部の座標を中心とした、半径ｈの球の内部に存在する前景画素、とみなすことができる。また、肩を構成する前景画素は、ステップＳ１１４０で識別した肩のＺ座標よりも小さなＺ座標を持つ前景画素とみなすことができる。
【００７０】
最後に、関節識別部７３は、ステップＳ１１５０で算出した前景画素を、前景画素全体から除外する、例えば、ステップＳ１１５０で算出した前景画素を所定値で埋めることにより、頭部と肩部以外の残りの前景画素を算出する（ステップＳ１１６０）。
【００７１】
それから、関節識別部７３は、通信部１５を経由して、ステップＳ１１６０で算出した頭部と肩部以外の残りの前景画素の距離画像データと、ステップＳ１１３０とステップＳ１１４０で識別した頭部の座標と肩部の座標を、姿勢推定装置に出力する（ステップＳ３１）。
【００７２】
図１３は、図８におけるステップＳ４１とＳ５１とＳ５２の詳細処理フローチャートである。
【００７３】
図１３において、図６の関節入力部２９は、通信部２１を経由して、距離画像カメラから入力される頭部と肩部の座標を受信する（ステップＳ１０１０）。
【００７４】
図４の距離画像受信部２２は、通信部２１を経由して、距離画像カメラから入力される距離画像を受信し、姿勢推定部２３に出力する（ステップＳ１０２０）。
【００７５】
次に図６の距離画像変換部８１は、ステップＳ１０２０で距離画像受信部２２から入力した距離画像を、座標軸変換し、回転変換する（ステップＳ１０３０）。これは、図９のステップＳ１１００およびステップＳ１１１０と同様の処理である。
【００７６】
次に体積要素生成部８２は、ステップＳ１０３０で変換された前景画像データから、体積要素データを生成する（ステップＳ１０４０）。これは、図９のステップＳ１１２０と同様の処理である。
【００７７】
さらに関節識別部８３は、ステップＳ１０４０で生成された体積要素データから、未推定の関節の座標（肘と手首と手の座標）を識別する（ステップＳ１０５０）。このとき、識別済みの関節がどれかという情報は、関節入力部２９から、推定済みの関節座標（頭や肩）を入力することで取得可能である。
【００７８】
最後に、図６の関節統合部３０は、ステップＳ１０５０で識別した関節の座標と、関節入力部２９に入力された関節座標をもとに、頭と肩と肘と手首と手の座標を統合する（ステップＳ５２）。
【００７９】
統合する際に、単純に各関節座標をそのまま使用することも可能であるし、あるいは、関節間の位置関係を確認して、推定が間違っていると判断できる関節座標は、無効な識別結果として、除外することも可能である。除外することで、誤情報を出力してしまい検出精度を劣化させるリスクを回避できるという効果がある。
【００８０】
関節間の位置関係から、推定が正しいか間違っているかを判断する手法としては、関節可動範囲や、骨格の平均的な長さからの、逸脱度やずれの大きさをもとに判断することができる。
【００８１】
以上のように、本実施例では、距離画像カメラと姿勢推定装置で推定処理を分担するように構成する。そして、距離画像は、姿勢推定装置で推定する関節に関係する部分のみ距離画像カメラから姿勢推定装置に送り、それ以外の関節については距離画像カメラで推定した推定結果を送る。具体的には、距離画像カメラ１が距離画像から前景画素を抽出するとともに背景を消去し、頭と肩の関節を推定し、さらに頭と肩に相当する画素を前景画素から消去し、頭と肩の関節の推定結果とともに姿勢推定装置２に送信する。これにより、ネットワークＮの通信負荷を低減することができるとともに、姿勢推定装置２の処理負荷を低減することができる。
【実施例２】
【００８２】
本実施例は、実施例１と異なる姿勢推定処理について説明する。本実施例における距離画像カメラ及び姿勢推定装置の全体機能構成図は図４と同様である。本実施例では、実施例１での図５の距離画像カメラの姿勢推定部１６と、図６の姿勢推定装置の姿勢推定部２３が異なる。本実施例では、実施例１において同じ機能は同じ符号を付し、異なる点を中心に説明する。
【００８３】
図１４は、本実施例における距離画像カメラの姿勢推定部１６の機能構成図である。図１４において、姿勢推定部１６は、特徴量算出部２４と、部位識別部２５と、関節識別部２６とを含む。
【００８４】
図１５は、本実施例における姿勢推定装置の姿勢推定部２３の機能構成図である。図１５おいて、姿勢推定部２３は、特徴量算出部２４と、部位識別部２５と、関節識別部２６と、関節入力部２９と、関節統合部３０とを含む。
【００８５】
また、図１６は、本実施例における距離画像カメラの姿勢推定処理のフローチャートである。図１６のフローチャートは、図８のステップＳ２１とステップＳ３１の詳細を示している。
【００８６】
図１６において、まず、図１４の特徴量算出部２４は、前景画素から最も距離画像カメラに近い画素を検出し、その画素の座標を頭部の座標とみなす（ステップＳ１２００）。
【００８７】
次に、特徴量算出部２４は、ステップＳ１２００で検出した頭部座標を、カメラ座標系から世界座標系へと変換し、距離画像カメラ自身の座標から頭部座標へのベクトルを求めることで、鉛直軸と前記ベクトルのなす角度を求めることができる（ステップＳ１２１０）。例えば、距離画像カメラが鉛直軸方向を向いており、その軸上に頭部が検出された場合は、なす角度は０度である。また、例えば、距離画像カメラが水平方向を向いており、その軸上に頭部が検出された場合は、なす角度は９０度である。
【００８８】
次に、特徴量算出部２４は、ステップＳ１２１０で得られた角度が、閾値よりも大きいかどうかを判定する（ステップＳ１２２０）。もし、ステップＳ１２２０で、閾値よりも大きい場合は、姿勢推定部１６の識別処理を飛ばして、距離画像を送信する（ステップＳ１２４０）。
【００８９】
また、ステップＳ１２２０で、閾値よりも小さい場合は、姿勢推定を行う（ステップＳ１２３０）。最後に、ステップＳ１２３０の識別結果を送信する（ステップＳ１２５０）。
【００９０】
図１７は、本実施例における距離画像カメラの姿勢推定処理の一例を示すフローチャートである。図１７のフローチャートは、図１６のステップＳ１２３０の詳細を示している。
【００９１】
図１７において、まず、図１４の特徴量算出部２４は、前景画素から注目画素を１つ選択し（ステップＳ５１）、選択した注目画素と１つ以上の周囲画素の距離情報を用いて、当該注目画素の特徴量を算出する（Ｓ５２）。それから、部位識別部２５は、算出された注目画素の特徴量を、予め用意した識別器に入力することで、当該注目画素の部位ラベルを取得する（ステップＳ５３）。
【００９２】
それから、姿勢推定部２３は、前景画素を構成する全ての注目画素を選択したかどうかを判定する（ステップＳ５４）。全画素を選択していないと判定した場合（ステップＳ５４でＮＯ）、姿勢推定部２３は、処理をステップＳ５１に戻す。全画素を選択したと判定した場合（ステップＳ５４でＹＥＳ）、姿勢推定部２３は、処理をステップＳ５５に進める。
【００９３】
図１４の関節識別部２６は、ステップＳ５３で識別された各注目画素の部位ラベルを用いて、部位毎に、その重心位置（関節位置候補）を取得する（ステップＳ５５）。最後に、関節識別部２６は、取得した各部位の重心位置に基づいて、最終的な１つ以上の関節位置を決定する（ステップＳ５６）。
【００９４】
図１８は、本実施例における姿勢推定装置の姿勢推定処理のフローチャートである。図１８のフローチャートは、図８のステップＳ４１、Ｓ５１，Ｓ５２に代わる処理の詳細を示している。
【００９５】
図１８において、まず、姿勢推定部２３は、通信部２１を経由して、姿勢推定結果を受信する（ステップＳ１５００）。もし、推定結果を受信できた場合は、その推定結果をそのまま出力する。もし、推定結果を受信しなかった場合は、距離画像受信部２２から距離画像データを受信し、そのデータをもとに姿勢推定処理を行う（ステップＳ１５１０）。ステップＳ１５１０の処理は、図１７で説明した、姿勢推定処理と同様である。
【００９６】
以上のように本実施例における姿勢推定システムでは、距離画像カメラ１が被写体の頭上に近い角度に位置する場合は、上半身の関節のみを推定すればよいので、カメラ内で姿勢推定処理を行うことができ、推定結果のみを送信するため、送信データ量が距離画像データよりも少なくでき、通信負荷及び処理負荷を低減することができる。また、距離画像カメラ１が被写体の頭上から離れた角度の位置にある場合は、全身の関節を推定する必要があるため、カメラ内の限られたリソースでは負荷が高く姿勢推定処理を行うことができず、距離画像データを送信して、姿勢推定装置で姿勢を推定することで精度よく姿勢推定を行うことができる。例えば、カメラを高所に設置し、鉛直真下向きに設置した場合、カメラのＦＯＶ（Field Of View）の外周付近では、カメラから見て被写体の全身が撮像でき、全身の関節を推定するケースとなり、また、ＦＯＶの中央付近では、カメラから見て被写体の上半身のみが撮像でき、上半身の関節のみを推定するケースとなる。そのため、カメラのＦＯＶを横切って歩くような動きを被写体がとるとき、全身⇒上半身⇒全身という推定処理となり、処理負荷は、高⇒低⇒高と推移する。本実施例では、このうち、処理負荷が「高」の状態、つまり、ＦＯＶの外周付近に被写体が存在する場合が、距離画像データを距離画像カメラから姿勢推定装置をつなぐネットワーク負荷と、姿勢推定装置の処理負荷の要因となるが、複数の被写体がランダムに行き交うような状況では、推定処理の処理負荷の高低が平均化され、負荷が分散される効果がある。また、図１のように、複数の距離画像カメラが接続され、広い領域を分担して撮像している構成の姿勢推定システムでは、カメラごとに推定処理の高低の位相が異なるため、複数の被写体がランダムに行き交うような状況では、推定処理の処理負荷の高低が平均化され、負荷が分散される効果がある。
【実施例３】
【００９７】
本実施例では、実施例２と異なる条件で距離画像カメラ内の姿勢推定処理を行うかどうかを判断する点について説明する。以下、実施例２と異なる点を中心に説明する。
【００９８】
本実施例における距離画像カメラの姿勢推定処理は、実施例２の図１６において、ステップＳ１２１０およびステップＳ１２２０の代わりに、下記ステップＳ１３１０およびステップＳ１３２０を有し、その他の点は同じである。そのため、本実施例における処理フローチャートは省略し、図１６において、ステップＳ１２１０およびステップＳ１２２０を下記ステップＳ１３１０およびステップＳ１３２０に置き換えて説明する。
【００９９】
すなわち、ステップＳ１３１０では、ステップＳ１２００で頭部を検出した後、被写体の頭部座標とカメラ自身の座標から、相対距離を算出する。
【０１００】
そして、ステップＳ１３２０において、ステップＳ１３１０で算出した相対距離が、閾値よりも大きい場合は、距離画像を送信し、閾値よりも小さい場合は、姿勢推定を行う、という判定を行う。
【０１０１】
以上のように、本実施例における姿勢推定システムでは、被写体が推定しにくい距離に位置する場合は、姿勢推定装置に距離画像データを送信し姿勢推定装置で高精度に推定処理を行い、被写体が容易に推定できる距離に位置する場合は、距離画像カメラ内で推定処理を行うことで、ネットワーク負荷と姿勢推定装置の負荷を分散できるという効果がある。
【実施例４】
【０１０２】
本実施例では、さらに、実施例２と異なる条件で距離画像カメラ内の姿勢推定処理を行うかどうかを判断する点について説明する。以下、実施例２と異なる点を中心に説明する。  本実施例における距離画像カメラの姿勢推定処理は、実施例２の図１６において、ステップＳ１２１０およびステップＳ１２２０の代わりに、下記ステップＳ１４１０およびステップＳ１４２０を有し、その他の点は同じである。そのため、本実施例における処理フローチャートは省略し、図１６において、ステップＳ１２１０およびステップＳ１２２０を下記ステップＳ１４１０およびステップＳ１４２０に置き換えて説明する。
【０１０３】
すなわち、ステップＳ１４１０では、ステップＳ１２００で頭部を検出した後、被写体の頭部座標から、被写体を構成する画素（点群）の総数を算出する。
【０１０４】
そして、ステップＳ１４２０において、ステップＳ１４１０で算出した点群数が、閾値よりも小さい場合は、距離画像を送信し、閾値よりも大きい場合は、姿勢推定を行う、という判定を行う。
【０１０５】
以上のように、本実施例における姿勢推定システムでは、点群数が少なく被写体の推定が困難な場合は、姿勢推定装置に距離画像データを送信し姿勢推定装置で高精度に推定処理を行い、点群が十分あるため被写体が容易に推定できる場合は、距離画像カメラ内で推定処理を行うことで、ネットワーク負荷と姿勢推定装置の負荷を分散できるという効果がある。
【０１０６】
例えば、被写体が隣接した距離画像カメラのカバーするＦＯＶにまたがって存在している場合、ひとつひとつのカメラで得られる点群数は不十分でも、隣接したセンサから距離画像データが姿勢推定装置に送られてくることで、それらを世界座標上で統合することで、十分な数の点群を得ることができ、姿勢推定を高精度に行うことができるという効果がある。
【実施例５】
【０１０７】
本実施例では、さらに、実施例２と異なる条件で距離画像カメラ内の姿勢推定処理を行うかどうかを判断する点について説明する。以下、実施例２と異なる点を中心に説明する。
【０１０８】
図１９は、本実施例における距離画像カメラの姿勢推定処理のフローチャートである。図１６との違いは、最初に姿勢推定処理を実行するように順番が変わっており（ステップＳ１２３０）、ステップＳ１２１０およびステップＳ１２２０の代わりに、ステップＳ１５１０およびステップＳ１５２０となっている点であり、その他の点は同じである。
【０１０９】
ステップＳ１２３０で姿勢推定を実行した後、推定結果の確信度を算出する（ステップＳ１５１０）。確信度は、統計的手法で得ることが可能である。
【０１１０】
ステップＳ１５１０で算出した確信度が、閾値よりも小さい場合は、距離画像を送信し、閾値よりも大きい場合は、推定結果を送信する、という判定を行う（ステップＳ１５２０）。
【０１１１】
以上のように、本実施例における姿勢推定システムでは、確信度が低い場合のみ距離画像データを送信するため、ネットワーク負荷と姿勢推定装置の推定処理負荷を低減することができるという効果がある。確信度は姿勢推定した部位ごとに算出が可能であるため、確信度が低い部位を構成する距離画像データのみを抽出して送信することで、さらにネットワーク負荷を軽減可能である。
【実施例６】
【０１１２】
本実施例では、フレームごとに、距離画像カメラ内で姿勢推定を行うかどうかを切り替える点について説明する。以下、実施例２と異なる点を中心に説明する。
【０１１３】
図２０は、本実施例における姿勢推定システムの処理フローチャートである。本図のフローチャートは、１フレームの距離画像毎に繰り返して実行される。３フレームあたり１フレームを、姿勢推定装置２で姿勢推定を行い、３フレームあたり２フレームを、距離画像カメラ１で姿勢推定を行う例で説明する。
【０１１４】
図２０において、まず、距離画像カメラは、第１のフレームの処理段階で、カメラ内では姿勢推定処理を行わず、距離画像データを姿勢推定装置２に送信する（ステップＳ１６００）。
【０１１５】
姿勢推定装置は、ステップＳ１６００で送信される距離画像データを受信し、受信した距離画像データを用いて姿勢推定処理を実行する（ステップＳ１６４０）。
【０１１６】
次に、距離画像カメラは、第２のフレームの処理段階で、カメラ内で姿勢推定処理を実行し、その結果得られる姿勢推定結果を、姿勢推定装置に送信する（ステップＳ１６１０）。
【０１１７】
姿勢推定装置２は、ステップＳ１６１０で送信される姿勢推定結果を受信する（ステップＳ１６５０）。
【０１１８】
受信した姿勢推定結果に対して、ステップＳ１６４０で第１のフレームに対して姿勢推定した結果からの関節の移動距離を、関節ごとに算出し、受信した姿勢推定結果の妥当性を評価し、補正・調整する（ステップＳ１６６０）。評価の基準としては、例えば、ステップＳ１６４０で推定した頭部の座標と、ステップＳ１６５０で受信した頭部の座標の推定結果から、頭部の移動距離を算出し、それがある閾値以下であれば妥当であると判断し、さもなければ、ステップＳ１６５０の推定結果をご推定であると判断する。この閾値は、１フレームに相当する時間（例えば、３０ｆｐｓの場合、約３３ミリ秒）に、人の頭部が移動する距離が考えられ、例えば、行進程度の、通常の歩行速度は時速４キロメートル程度であるので、３３ミリ秒の移動距離は３７ミリメートルであり、閾値として３７ミリメートルという値を設定できる。また、肩や手など頭部から遠いほど、また被写体の動作が大きいほど、閾値を大きく設定することで適切な判断が可能となる。評価の結果、妥当であると判断すれば、ステップＳ１６５０で受信した推定結果を採用し、妥当でないと判断すれば、ステップＳ１６４０で推定した結果をもとにステップＳ１６５０で受信した座標を補正する。補正の方法としては、例えば、ステップＳ１６４０で推定した頭部の座標から、ステップＳ１６５０で受信した頭部の座標へ向かうベクトルの大きさを、閾値の大きさに縮小した座標を、頭部の座標に補正する、などが考えられる。
【０１１９】
次に、距離画像カメラは、第３のフレームの処理段階で、ステップＳ１６１０と同様に、カメラ内で姿勢推定処理を実行し、その結果得られる姿勢推定結果を、姿勢推定装置２に送信する（ステップＳ１６２０）。
【０１２０】
姿勢推定装置は、ステップＳ１６５０と同様に、ステップＳ１６２０で送信される姿勢推定結果を受信し（ステップＳ１６７０）、ステップＳ１６６０と同様に、補正・調整する（ステップＳ１６８０）。
【０１２１】
距離画像カメラは、終了するかどうか判定し（ステップＳ１６３０）、終了しない場合は、ステップＳ１６００に戻り、繰り返し処理を行う。
【０１２２】
以上のように、本実施例における姿勢推定システムでは、３フレームに１フレームの割合で距離画像データを送信するため、ネットワーク負荷を３分の１に削減可能である。また、姿勢推定装置の処理負荷を３分の２に削減可能である。
【実施例７】
【０１２３】
本実施例では、距離画像カメラで特徴量データの生成処理を実行し、姿勢推定装置で部位識別処理と関節識別処理を実行する。以下、実施例１と異なる点を中心に説明する。
【０１２４】
図２１は、本実施例における距離画像カメラ及び姿勢推定装置の機能構成図である。本実施例における距離画像カメラ及び姿勢推定装置の構成要素は、距離画像演算部２２１０と、演算結果受信部２２２０以外は、図４と同様である。
【０１２５】
図２２は、姿勢推定部２３の機能構成例を示す図である。姿勢推定部２３の処理は、部位識別部２２３０の入力が２系統存在する以外は、図１４で説明した距離画像カメラの処理と同様である。
【０１２６】
図２３は、本実施例における姿勢推定システムの処理フローチャートである。本図のフローチャートは、１フレームの距離画像毎に実行される。
【０１２７】
図２３において、図２１の距離画像生成部１４は、距離画像データを生成し、距離画像演算部２２１０に出力する（ステップＳ２７１０）。
【０１２８】
距離画像演算部２２１０は、距離画像生成部１４により生成された距離画像データから、特徴量データを演算して生成する（ステップＳ２７２０）。特徴量データとしては、距離画像データの着目する１画素に対して、例えば周囲８画素を選択し、着目画素と周囲８画素それぞれとの、距離の差分データを８次元のベクトルデータとして、特徴量データとすることが考えられる。１フレームの距離画像がＮ画素で構成される場合、（８×Ｎ）次元ベクトルデータが特徴量データとなる。
【０１２９】
例えば、図２４に示すような、距離データｄ３９をもつ画素４１１０から画素４１２０、画素４１３０、の順に、距離データｄｘを持つ画素４１５０までの画素で構成される距離画像データに対して、画素４１１０から順に、着目画素をひとつずつ選択する。
【０１３０】
そして、図２５に示すように、例えば、着目画素４１１０の周囲８画素を、画素４２１０、画素４２２０、画素４２３０、画素４２４０、画素４２５０、画素４２６０、画素４２７０、画素４２８０、のように選択する。ここで、例えば、画素４２５０は画素４１２０と同一の画素であり、画素４２６０は画素４１４０と同一の画素である。
【０１３１】
これにより、図２６に示すように、８次元のベクトルデータを生成することが可能である。ここで、差分データ４３１０、差分データ４３２０、差分データ４３３０、差分データ４３４０は、ＮＡと記載しているが、ＮＡは画素が有効な距離データを持っていない場合であり、例えば前景画素でない場合が相当する。この場合、例えば、ＮＡには−１を入れるように定義することで、無効データであることを示すことができる。また、差分データ４３５０は、周辺画素４１２０の持つ距離データｄ４０と、着目画素４１１０の持つ距離データｄ３９との差分である。同様に、差分データ４３６０、４３７０、４３８０は、周辺画素４２６０、４２７０、４２８０と着目画素４１１０との、距離データの差分である。
【０１３２】
図２７に示すように、画素４１１０から画素４１５０までの、全画素に対して、８次元の特徴量ベクトルデータを算出し、座標データとともに、当該フレームの特徴量データとする。例えば、カラム４４１０は、画素４１１０のＸＹ座標と、８次元の特徴量ベクトルから構成される特徴量データである。カラム４４２０は、画素４１２０のＸＹ座標と、８次元の特徴量ベクトルから構成される特徴量データである。カラム４４３０以降も、同様に、ＸＹ座標と、８次元の特徴量ベクトルから構成される特徴量データである。ロー４４１０は、各画素のＸＹ座標である。ロー４４２０からロー４４３０までは、各画素の８次元の特徴量ベクトルである。ここで、例えば、画素４１２０の８次元特徴量ベクトルは、図２６で示したデータと同じである。
【０１３３】
図２３において、図２１の距離画像演算部２２１０は、ステップＳ２７２０で生成した特徴量データを、通信部１５を介して姿勢推定装置１に送信する（ステップＳ２７３０）。
【０１３４】
図２１の演算結果受信部２２２０は、通信部２１を介して、距離画像カメラ１から受信した特徴量データを、姿勢推定部２３に入力する。
【０１３５】
距離画像演算部２２１０は、ステップＳ２７２０で算出した特徴量データを、通信部１５を介して、姿勢推定装置１に送信する（ステップＳ２７３０）。
【０１３６】
演算結果受信部２２２０は、通信部２１を介して、距離画像カメラから入力される特徴量データを受信し、部位識別部２２３０に出力する（ステップＳ２７５０）。特徴量データは、距離画像演算部２２１０で算出される特徴量データと同じである。これは、図１７のステップＳ５２に相当する処理である。
【０１３７】
図２２の部位識別部２２３０は、演算結果受信部２２２０から入力される特徴量データを受信し、部位識別を実行することで、部位識別結果を算出し、関節識別部２３３０に部位識別結果を出力する（ステップＳ２７５０）。これは、図１７のステップＳ５３に相当する処理である。
【０１３８】
図２２の関節識別部２３３０は、部位識別部２２３０から入力される部位識別結果から、関節識別を実行し、出力部２７に関節識別結果を出力する（ステップＳ２７６０）。これは、図１７のステップＳ５５に相当する処理である。
【０１３９】
以上のように、本実施例における姿勢推定システムでは、推定処理のうち、前処理である特徴量抽出を距離画像カメラで行い、後処理を姿勢推定装置で行う。これにより、特徴量データの演算を距離画像カメラで実行するため、その分だけ姿勢推定装置の処理負荷を削減可能である。
【実施例８】
【０１４０】
本実施例では、距離画像カメラで距離画像データの変換処理を実行し、姿勢推定装置で体積要素生成処理と関節識別処理を実行する。以下、実施例７と異なる点を中心に説明する。
【０１４１】
図２８は、本実施例における距離画像カメラ及び姿勢推定装置の機能構成図である。図２８において、距離画像変換部２３１０と、点群データ受信部２３２０以外は、実施例７の図２１と同様である。
【０１４２】
図２９は、姿勢推定部２３の機能構成例を示す図である。距離画像変換部２５１０と、体積要素生成部２５２０と、関節識別部２５３０から構成される。
【０１４３】
図３０は、本実施例における姿勢推定システムの処理フローチャートである。本図のフローチャートは、１フレームの距離画像毎に実行される。
【０１４４】
図３０において、図２８の距離画像変換部２３１０は、ステップＳ２７１０で生成された距離画像データを、座標変換する。これは、図９のテップＳ１１００と同様の処理である。
【０１４５】
次に距離画像変換部２３１０は、ステップＳ１１００で変換された距離画像データを、回転処理する。これは、図９のステップＳ１１１０と同様の処理である。さらに、必要に応じて、並進処理を行ってもよい。例えば、カメラの設置位置を世界座標の原点に定義していない場合は、原点に並進させる処理を行うことが処理コストの軽減に効果がある場合がある。
【０１４６】
最後に距離画像変換部２３１０は、ステップＳ１１１０で変換された距離画像データ（＝点群データ）を、通信部１５を介して、姿勢推定装置に送信する（ステップＳ２７３０）。
【０１４７】
点群データ受信部２３２０は、ステップＳ２７３０で送信された点群データを受信し（ステップＳ２７４０）、体積要素生成部２５２０に出力する。
【０１４８】
体積要素生成部２５２０は、体積要素データを生成する。これは、図９のステップＳ１１２０と同様の処理である。それから、体積要素生成部２５２０は、生成した体積要素データを、関節識別部２５３０に出力する。
【０１４９】
関節識別部２５３０は、体積要素データから、姿勢推定処理を行う。これは、図３のステップＳ５０と同様の処理である。
【０１５０】
以上のように、本実施例における姿勢推定システムでは、距離画像データの座標変換処理と回転並進処理を距離画像カメラで実行するため、その分だけ姿勢推定装置の処理負荷を削減可能である。
【０１５１】
以上、本発明の実施例について説明したが、本発明は、上記した実施形態に限定されるものではなく、様々な変形例が含まれる。
【０１５２】
例えば、上記実施例において、姿勢推定部２３での識別器を1つとした場合、距離画像カメラの設置姿勢、あるいは距離画像カメラに対する対象の姿勢が変化した場合、すなわち撮像角度が変化した場合にも同じ識別器を用いていたのでは、部位あるいは関節の識別精度が低下する可能性がある。そこで、姿勢推定部２３は、撮像角度に応じた複数の識別器を予め学習して記憶しておき、実際の撮像角度に応じて使用する識別器を選択してもよい。姿勢推定部２３は、例えば、距離画像カメラの撮像角度を通信装置あるいは入力装置を介してユーザーから受け付けてもよいし、距離画像中に撮像されたマーカー等の形状や前景画素の位置に基づいて撮像角度を決定してもよい。なお、姿勢推定部２３は、特徴量の算出方法も、撮像角度に応じて切り替えてもよい。
【０１５３】
また、距離画像を蓄積するデータベースをネットワークＮに接続し、各距離画像カメラは距離画像を当該データベースに送信して蓄積し、姿勢推定装置は当該データベースから距離画像を取得するようにしてもよい。
【０１５４】
また、距離画像生成部１４は、入力距離画像から背景を消去せずに、前景画素を含む領域を切り出してもよい。
【０１５５】
また、上記実施例において、被写体は、主に人体を想定しているが、それに限定するものではない。人体以外にも、ヒト型のロボットや、産業用ロボットアーム、サルやゴリラなどの動物などのように、骨格の長さや関節の可動範囲に一定の制約や範囲を有する、動体であれば、対象とすることが可能である。
【０１５６】
また、上記実施例において示した距離画像カメラ及び姿勢推定装置の構成は、これらのデバイスの構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本発明が制限されることはない。距離画像カメラ及び姿勢推定装置の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、１つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、１つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。また、各構成要素の処理又は機能の分担は、本発明の目的及び効果を達成できるのであれば、図示したものに限られない。
【０１５７】
また、上記実施例において示したフローチャートの処理単位は、距離画像カメラ及び姿勢推定装置の処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本発明が制限されることはない。距離画像カメラ及び姿勢推定装置の処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、１つの処理単位がさらに多くの処理を含むように分割することもできる。さらに、本発明の目的及び効果を達成できるのであれば、上記のフローチャートの処理順序も、図示した例に限られるものではない。
【０１５８】
また、上記した各実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、本発明が、必ずしも説明した全ての構成要素を備えるものに限定されるものではない。また、ある実施例の構成の一部を、他の実施形態の構成に置き換えることが可能であり、ある実施形態の構成に、他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１５９】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現されてもよい。
【０１６０】
また、本発明は、姿勢推定システム、姿勢推定装置、及び距離画像カメラだけでなく、姿勢推定装置や距離画像カメラで実行されるコンピュータ読み取り可能なプログラム、姿勢推定システム、姿勢推定装置、又は距離画像カメラにおける処理方法、などの様々な態様で提供することができる。
【符号の説明】
【０１６１】
１…距離画像カメラ、２…姿勢推定装置、１１…制御部、１２…光源、１３…距離画像センサ、１４…距離画像生成部、１５…通信部、１６…姿勢推定部、２１…通信部、２２…距離画像受信部、２８…姿勢推定部、２７…出力部、９０…コンピュータ、９１…演算装置、９２…主記憶装置、９３…外部記憶装置、９４…通信装置、９５…読み書き装置、９６…入力装置、９７…出力装置
【図１】
2019066238.tif 000003
【図２】
2019066238.tif 000004
【図３】
2019066238.tif 000005
【図４】
2019066238.tif 000006
【図５】
2019066238.tif 000007
【図６】
2019066238.tif 000008
【図７】
2019066238.tif 000009
【図８】
2019066238.tif 000010
【図９】
2019066238.tif 000011
【図１０】
2019066238.tif 000012
【図１１】
2019066238.tif 000013
【図１２】
2019066238.tif 000014
【図１３】
2019066238.tif 000015
【図１４】
2019066238.tif 000016
【図１５】
2019066238.tif 000017
【図１６】
2019066238.tif 000018
【図１７】
2019066238.tif 000019
【図１８】
2019066238.tif 000020
【図１９】
2019066238.tif 000021
【図２０】
2019066238.tif 000022
【図２１】
2019066238.tif 000023
【図２２】
2019066238.tif 000024
【図２３】
2019066238.tif 000025
【図２４】
2019066238.tif 000026
【図２５】
2019066238.tif 000027
【図２６】
2019066238.tif 000028
【図２７】
2019066238.tif 000029
【図２８】
2019066238.tif 000030
【図２９】
2019066238.tif 000031
【図３０】
2019066238.tif 000032