(57)【要約】【課題】物体が有する関節の３次元座標データを算出する際のエラーを回避することを目的とする。【解決手段】関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する情報処理装置が、前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、処理を実行する処理部を備える。【選択図】図１１
2020030613.tif 000002
【特許請求の範囲】
【請求項１】
関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する情報処理装置であって、
前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、
算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、
前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、
前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、
前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、
処理を実行する処理部を備える情報処理装置。
【請求項２】
前記処理部は、
入力された画像から関節の２次元座標を含むデータを出力する第１ソフトウェアを利用して、前記２次元座標データを算出し、
前記データから関節の３次元座標を含む別のデータを出力する第２ソフトウェアを利用して、前記３次元座標データを算出する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理部は、
前記欠損があり、前記欠損がある前記２次元座標データを算出した前記第１画像が複数の画像の中の先頭に相当する場合、前記第１画像の次の画像が存在するか否かを判断し、
前記次の画像が存在する場合、前記次の画像を前記第１画像として利用する、
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記処理部は、
前記第１画像が動画像である場合、前記動画像を静止画像単位に分割し、前記静止画像から前記２次元座標データを算出する、
ことを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する処理をコンピュータに実行させるためのデータ算出プログラムであって、
前記コンピュータに、
前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、
算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、
前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、
前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、
前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、
処理を実行させることを特徴とするデータ算出プログラム。
【請求項６】
関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する処理をコンピュータが実行するデータ算出方法であって、
前記コンピュータが、
前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、
算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、
前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、
前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、
前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、
処理を実行することを特徴とするデータ算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、情報処理装置、データ算出プログラム、及びデータ算出方法に関する。
【背景技術】
【０００２】
単眼カメラで撮像した関節を有する物体（例えば人を含む動物や、ロボットを含む機械など）の画像に基づいて、その物体の関節の２次元座標を含む２次元座標データを算出するOpen Source Software（ＯＳＳ）（以下、２次元座標推定ＯＳＳという）が知られている。具体的には、tf-pose-estimationやOpenPose、Chainer_Realtime_Multi-Person_Pose_Estimationなどが２次元座標推定ＯＳＳとして知られている。その他、３次元座標空間に設置された単眼カメラによって撮像された画像の画像データから、画像に含まれる人の各部位の画像上の位置を推定し、部位推定マップを生成する技術も知られている（例えば特許文献１参照）。
【０００３】
また、２次元座標推定ＯＳＳの推定結果として出力された２次元座標データに基づいて関節の３次元座標を含む３次元座標データを算出するＯＳＳ（以下、３次元座標推定ＯＳＳという）が知られている。具体的には、3d-pose-baselineなどが３次元座標推定ＯＳＳとして知られている。その他、人間の関節に取り付けられた反射マーカに赤外光を照射し、赤外光の反射光を含む撮像画像に基づいて、反射マーカの３次元座標上の位置を測定するモーションキャプチャ装置も知られている（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１２５４０２号公報
【特許文献２】特許第６２５３８３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、２次元座標推定ＯＳＳが単眼カメラによって撮像された画像を利用する場合、物体の動きによっては物体が有する関節の一部が隠れる場合がある。例えば、単眼カメラが人の正面側を撮像している状態で、その人が自身の右腕を胴体の後ろに回した姿勢をとると、右肘や右手首が胴体の後ろに隠れることがある。
【０００６】
この場合、２次元座標推定ＯＳＳは物体が有する関節の一部を特定できないため、一部の関節の２次元座標が欠損した２次元座標データを算出する。このような一部の関節の２次元座標が欠損した２次元座標データに基づいて、３次元座標推定ＯＳＳが３次元座標データを算出すると、３次元座標推定ＯＳＳでは処理の過程でエラーが発生する。
【０００７】
そこで、１つの側面では、物体が有する関節の３次元座標データを算出する際のエラーを回避することを目的とする。
【課題を解決するための手段】
【０００８】
１つの実施態様では、関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する情報処理装置が、前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、処理を実行する処理部を備える。
【発明の効果】
【０００９】
物体が有する関節の３次元座標データを算出する際のエラーを回避することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は情報処理システムの一例を説明するための図である。
【図２】図２は端末装置のハードウェア構成の一例である。
【図３】図３は端末装置のブロック図の一例である。
【図４】図４は２次元座標算出部の動作の一例を示すフローチャートである。
【図５】図５（ａ）は動画の１フレーム目を表す第１フレームの一例である。図５（ｂ）は第１フレームに現れる関節の２次元座標データの一例である。
【図６】図６（ａ）は動画の２フレーム目を表す第２フレームの一例である。図６（ｂ）は第２フレームに現れる関節の２次元座標データの一例である。
【図７】図７（ａ）は動画の３フレーム目を表す第３フレームの一例である。図７（ｂ）は第３フレームに現れる関節の２次元座標データの一例である。
【図８】図８は３次元座標算出部の動作の一例を示すフローチャートである。
【図９】図９は１フレーム目の２次元座標データの一例である。
【図１０】図１０は１フレーム目の３次元座標データの一例である。
【図１１】図１１（ａ）は２フレーム目の上書前の２次元座標データの一例である。図１１（ｂ）は２フレーム目の上書後の２次元座標データの一例である。
【図１２】図１２は２フレーム目の３次元座標データの一例である。
【図１３】図１３（ａ）は３フレーム目の上書前の２次元座標データの一例である。図１３（ｂ）は３フレーム目の上書後の２次元座標データの一例である。
【図１４】図１４は３フレーム目の３次元座標データの一例である。
【図１５】図１５は描画部の動作の一例を示すフローチャートである。
【図１６】図１６（ａ）は１フレーム目のキャラクタ画像の動きの一例である。図１６（ｂ）は２フレーム目のキャラクタ画像の動きの一例である。図１６（ｃ）は３フレーム目のキャラクタ画像の動きの一例である。
【図１７】図１７は３次元座標算出部の動作の一例を示すフローチャートの一部である。
【発明を実施するための形態】
【００１１】
以下、本件を実施するための形態について図面を参照して説明する。
【００１２】
（第１実施形態）
図１は情報処理システムＳＴの一例を説明するための図である。情報処理システムＳＴは単眼カメラ１００と情報処理装置としての端末装置２００を含んでいる。単眼カメラ１００としては例えばビデオカメラやＷｅｂカメラなどがある。端末装置２００としては例えばPersonal Computer（ＰＣ）やスマートデバイスなどがある。スマートデバイスとしてはスマートフォンやタブレット端末などがある。尚、スマートデバイスを単眼カメラ１００として利用してもよい。また、端末装置２００に撮像カメラが付属していれば、その撮像カメラを単眼カメラ１００として利用してもよい。
【００１３】
単眼カメラ１００と端末装置２００は通信ケーブル１５０によって互いに接続されている。通信ケーブル１５０に代えて通信ネットワークが利用されてもよい。通信ネットワークはインターネットとLocal Area Network（ＬＡＮ）の少なくとも一方を含んでいればよい。尚、通信ネットワークの通信方式は有線通信であってもよいし、無線通信であってもよい。
【００１４】
単眼カメラ１００は撮像領域ＡＲ内を撮像する。単眼カメラ１００は撮像領域ＡＲ内を撮像すると、撮像領域ＡＲ内に相当する動画像又は映像（以下、単に動画という）を生成する。したがって、人１０が撮像領域ＡＲ内に含まれていれば、単眼カメラ１００は人１０を含む動画を生成する。人１０は物体の一例である。単眼カメラ１００は動画を生成すると、生成した動画を端末装置２００に出力する。尚、人１０は、独自に制作した動画を動画投稿サイトに投稿する動画投稿者などであってもよい。例えばYouTube（登録商標）と呼ばれる動画投稿サイトに継続的に動画を投稿する動画投稿者はYouTuberなどと呼ばれることがある。
【００１５】
端末装置２００は単眼カメラ１００から出力された動画の入力を受け付ける。詳細は後述するが、端末装置２００は動画の入力を受け付けると、種々の処理を実行して、特定の容姿などを有するキャラクタ画像２０やそのキャラクタ画像２０を含む３次元の仮想空間ＶＳを描画して表示する。キャラクタ画像２０は事前に用意され、端末装置２００に格納されている。キャラクタ画像２０は例えばコンピュータグラフィックス（以下、ＣＧという）技術を用いてキャラクタ化された３次元モデルの画像である。キャラクタ化は、擬人化、デザイン化、イラスト化、ＣＧ化、アニメ-ション化、特徴付けなどの概念を含んでいる。端末装置２００は２次元座標推定ＯＳＳと３次元座標推定ＯＳＳなどを利用して、人１０の動きとキャラクタ画像２０の動きを関連付けている。したがって、例えば人１０が右手を挙げる動きを行うと、端末装置２００は単眼カメラ１００から出力された動画と２次元座標推定ＯＳＳ及び３次元座標推定ＯＳＳなどを利用して、キャラクタ画像２０に右手を挙げさせる処理を実行する。すなわち、人１０の動きとキャラクタ画像２０の動きが連動する。
【００１６】
ここで、動画では動画投稿者など現実の人１０が出演していることが多いが、上述したように、動画によっては人１０に代えて上述したキャラクタ画像２０が仮想空間ＶＳ上に出演している場合もある。この場合、YouTube（登録商標）と呼ばれる動画投稿サイトであれば、キャラクタ画像２０は現実のYouTuberと対比してバーチャルYouTuberやVTuberなどと呼ばれることがある。
【００１７】
次に、図２を参照して、端末装置２００のハードウェア構成について説明する。
【００１８】
図２は端末装置２００のハードウェア構成の一例である。図２に示すように、端末装置２００は、少なくともハードウェアプロセッサとしてのCentral Processing Unit（ＣＰＵ）２００Ａ、Random Access Memory（ＲＡＭ）２００Ｂ、Read Only Memory（ＲＯＭ）２００Ｃ、及びネットワークＩ／Ｆ（インタフェース）２００Ｄを含んでいる。また、端末装置２００は、Hard Disk Drive（ＨＤＤ）２００Ｅ、キーボード２００Ｆ、液晶ディスプレイ２００Ｇ、及び複数の入出力Ｉ／Ｆ２００Ｈを含んでいる。
【００１９】
端末装置２００は、必要に応じて、ドライブ装置２００Ｉやポインティングデバイス（不図示）などを含んでいてもよい。ＣＰＵ２００Ａ、・・・、ドライブ装置２００Ｉは、内部バス２００Ｊによって互いに接続されている。すなわち、端末装置２００はコンピュータによって実現することができる。尚、ＣＰＵ２００Ａに代えてGraphics Processing Unit（ＧＰＵ）をハードウェアプロセッサとして利用してもよい。
【００２０】
入出力Ｉ／Ｆ２００Ｈには、単眼カメラ１００や半導体メモリ７３０が接続される。半導体メモリ７３０としては、例えばUniversal Serial Bus（ＵＳＢ）メモリやフラッシュメモリなどがある。入出力Ｉ／Ｆ２００Ｈは単眼カメラ１００が撮像した動画の入力を受け付ける。入出力Ｉ／Ｆ２００Ｈは半導体メモリ７３０に記憶されたプログラムやデータを読み取る。入出力Ｉ／Ｆ２００Ｈは、例えばＵＳＢポートを備えている。
【００２１】
ドライブ装置２００Ｉには、可搬型記録媒体７４０が挿入される。可搬型記録媒体７４０としては、例えばCompact Disc（ＣＤ）−ＲＯＭ、Digital Versatile Disc（ＤＶＤ）といったリムーバブルディスクがある。ドライブ装置２００Ｉは、可搬型記録媒体７４０に記録されたプログラムやデータを読み込む。ネットワークＩ／Ｆ２００Ｄは、例えばLocal Area Network（ＬＡＮ）ポートを備えている。
【００２２】
上述したＲＡＭ２００Ｂには、ＨＤＤ２００Ｅに記憶されたプログラムがＣＰＵ２００Ａによって格納される。ＲＡＭ２００Ｂには、可搬型記録媒体７４０に記録されたプログラムがＣＰＵ２００Ａによって格納される。格納されたプログラムをＣＰＵ２００Ａが実行することにより、ＣＰＵ２００Ａは後述する各種の機能を実現する。また、格納されたプログラムをＣＰＵ２００Ａが実行することにより、ＣＰＵ２００Ａは後述する各種の処理を実行する。尚、プログラムは後述するフローチャートに応じたものとすればよい。
【００２３】
次に、図３を参照して、端末装置２００の機能構成について説明する。
【００２４】
図３は端末装置２００のブロック図の一例である。図３では端末装置２００の機能の要部が示されている。図３に示すように、端末装置２００は記憶部２１０、処理部２２０、入出力部２３０、及び表示部２４０を備えている。記憶部２１０は上述したＲＡＭ２００Ｂ及びＨＤＤ２００Ｅの少なくとも一方によって実現することができる。処理部２２０は上述したＣＰＵ２００Ａによって実現することができる。入出力部２３０は上述した入出力Ｉ／Ｆ２００Ｈによって実現することができる。表示部２４０は上述した液晶ディスプレイ２００Ｇによって実現することができる。記憶部２１０、処理部２２０、入出力部２３０、及び表示部２４０は機能的に互いに接続されている。
【００２５】
ここで、記憶部２１０は画像記憶部２１１、２次元座標記憶部２１２、及び３次元座標記憶部２１３を構成要素として含んでいる。一方、処理部２２０は２次元座標算出部２２１、３次元座標算出部２２２、及び描画部２２３を構成要素として含んでいる。処理部２２０の各構成要素は記憶部２１０の各構成要素の少なくとも１つにアクセスして、各種の処理を実行する。例えば、２次元座標算出部２２１は画像記憶部２１１にアクセスして、画像記憶部２１１が記憶する動画を取得する。２次元座標算出部２２１は動画を取得すると、動画を静止画であるフレーム単位に分割し、フレーム毎に関節の２次元座標を含む２次元座標データを算出する。尚、その他の構成要素については、端末装置２００の動作を説明する際に詳しく記載する。
【００２６】
次に、端末装置２００の動作について説明する。まず、図４から図７を参照して、２次元座標算出部２２１の動作について説明する。
【００２７】
図４は２次元座標算出部２２１の動作の一例を示すフローチャートである。図５（ａ）は動画の１フレーム目を表す第１フレームの一例である。図５（ｂ）は第１フレームに現れる関節の２次元座標データの一例である。図６（ａ）は動画の２フレーム目を表す第２フレームの一例である。図６（ｂ）は第２フレームに現れる関節の２次元座標データの一例である。図７（ａ）は動画の３フレーム目を表す第３フレームの一例である。図７（ｂ）は第３フレームに現れる関節の２次元座標データの一例である。
【００２８】
図４に示すように、２次元座標算出部２２１は動画をフレーム単位に分割する（ステップＳ１０１）。より詳しくは、まず、２次元座標算出部２２１は画像記憶部２１１が記憶する動画を取得する。画像記憶部２１１は入出力部２３０から出力された動画を記憶しているため、２次元座標算出部２２１は動画を取得することができる。尚、入出力部２３０は単眼カメラ１００から出力された動画の入力を受け付けており、動画の入力を受け付けると、動画を画像記憶部２１１に保存する。２次元座標算出部２２１は画像記憶部２１１から動画を取得すると、取得した動画をフレーム単位に分割する。
【００２９】
これにより、図５（ａ）、図６（ａ）、及び図７（ａ）に示すように、１つの動画から、第１フレーム、第２フレーム、第３フレームを含む、連続する複数のフレームが発生する。第１フレーム、第２フレーム、第３フレームのそれぞれには単眼カメラ１００により撮像された直立又は正立した状態の人１０が含まれている。人１０の関節に相当する各位置にはマークＭ２，Ｍ３，Ｍ４などが重畳している。
【００３０】
例えば、第１フレームでは、図５（ａ）に示すように、人１０の右腕全体と左腕全体の両方が現れている。したがって、右腕であれば、マークＭ２，Ｍ３，Ｍ４が第１フレーム内に出現する。しかしながら、人１０が単眼カメラ１００の前で動いたことで、第２フレームでは、図６（ａ）に示すように、人１０の右腕の一部（具体的には右肘及び右手首）が胴体により隠れ、左腕全体が胴体の前に現れている。この結果、右腕であれば、マークＭ２は第２フレーム内に出現するが、マークＭ３，Ｍ４は第２フレーム内に出現しない。その後、人１０がさらに動いたことで、第３フレームでは、図７（ａ）に示すように、人１０の右腕の一部が胴体により隠れ、左腕全体が胴体の前に現れた状態で、ｙ軸に平行な胴体の中心軸から右足が離れている。この場合も第２フレームと同様に、マークＭ２は第３フレーム内に出現するが、マークＭ３，Ｍ４は第３フレーム内に出現しない。
【００３１】
ステップＳ１０１の処理が完了すると、次いで、２次元座標算出部２２１は２次元座標データを算出し（ステップＳ１０２）、算出した２次元座標データを出力する（ステップＳ１０３）。より詳しくは、２次元座標算出部２２１は第１フレーム、第２フレーム、第３フレームの各々と２次元座標推定ＯＳＳとに基づいて、ファイル形式がjson形式である２次元座標データを算出して出力する。
【００３２】
これにより、２次元座標算出部２２１は第１フレームから、図５（ｂ）に示すように、関節の２次元座標データを算出して出力する。同様に、２次元座標算出部２２１は第２フレームから、図６（ｂ）に示すように、関節の２次元座標データを算出して出力する。２次元座標算出部２２１は第３フレームから、図７（ｂ）に示すように、関節の２次元座標データを算出して出力する。
【００３３】
図５（ｂ）、図６（ｂ）、及び図７（ｂ）に示すように、２次元座標データは、複数の関節を識別する関節ＩＤ、各関節の２次元座標、算出した２次元座標の信頼度を表すスコアを含んでいる。関節ＩＤは「０」〜「１７」の１８種類が存在する。一例を挙げると、関節ＩＤが「２」の場合、人１０の「右肩」を表し、関節ＩＤが「３」の場合、人１０の「右肘」を表し、関節ＩＤが「４」の場合、人１０の「右手首」を表している。その他、図５（ｂ）、図６（ｂ）、及び図７（ｂ）では省略されているが、関節ＩＤが「１」の場合、人１０の「首」を表し、関節ＩＤが「１１」の場合、人１０の「左骨盤」を表している。２次元座標は「０．０」〜「１．０」の数値で範囲が規定されるｘ座標、及び「０．０」〜「１．０」の数値で範囲が規定されるｙ座標により表される。スコアは「０．０」〜「１．０」の数値で範囲が表され、数値が高いほど信頼性が高いことを表している。このように、２次元座標データは１８種類の関節の２次元座標（具体的には２次元座標値）やその２次元座標のスコア（具体的にはスコア値）を含んでいる。
【００３４】
ここで、図５（ａ）に示すように、第１フレームでは、マークＭ２，Ｍ３，Ｍ４が出現している。特に、マークＭ２は人１０の「右肩」に出現している。マークＭ３は人１０の「右肘」に出現している。マークＭ４は人１０の「右手首」に出現している。したがって、マークＭ２，Ｍ３，Ｍ４はそれぞれ上述した関節ＩＤと対応付けることができる。２次元座標算出部２２１は、図５（ｂ）に示すように、マークＭ２，Ｍ３，Ｍ４のそれぞれについて、第１フレーム内での２次元座標を算出することができる。しかしながら、図６（ａ）に示すように、第２フレームでは、マークＭ２が出現しているが、マークＭ３，Ｍ４は出現してない。このため、２次元座標算出部２２１は、図６（ｂ）に示すように、マークＭ２について、第２フレーム内での２次元座標を算出することができるが、マークＭ３，Ｍ４について、第２フレーム内での２次元座標を算出することができない。同様に、２次元座標算出部２２１は、図７（ｂ）に示すように、マークＭ２について、第３フレーム内での２次元座標を算出することができるが、マークＭ３，Ｍ４について、第３フレーム内での２次元座標を算出することができない。このような場合、２次元座標算出部２２１は、第２フレーム及び第３フレームで出現しないマークＭ３，Ｍ４について、例えば欠損を表す文字列を２次元座標推定ＯＳＳに含まれる所定の関数の結果として出力する。本実施形態では、図６（ｂ）及び図７（ｂ）に示すように、２次元座標算出部２２１は文字列「なし」を出力している。尚、２次元座標算出部２２１は、欠損として、文字列「なし」と異なる別の文字列「エラー」を出力してもよいし、記号「−（ハイフン）」を出力してもよいし、空（くう）を表すＮＵＬＬを出力してもよい。２次元座標算出部２２１が２次元座標推定ＯＳＳをコールするApplication Programming Interface（ＡＰＩ）を利用している場合には、ＡＰＩをコールした結果を欠損として出力してもよい。このように、２次元座標算出部２２１は第１フレームについて２次元座標の欠損がない２次元座標データを出力するが、第２フレーム及び第３フレームについて２次元座標の欠損がある２次元座標データを出力する。
【００３５】
引き続き、端末装置２００の動作について説明する。ここでは、図８から図１４を参照して、３次元座標算出部２２２の動作について説明する。
【００３６】
図８は３次元座標算出部２２２の動作の一例を示すフローチャートである。図９は１フレーム目の２次元座標データの一例である。図１０は１フレーム目の３次元座標データの一例である。図１１（ａ）は２フレーム目の上書前の２次元座標データの一例である。図１１（ｂ）は２フレーム目の上書後の２次元座標データの一例である。図１２は２フレーム目の３次元座標データの一例である。図１３（ａ）は３フレーム目の上書前の２次元座標データの一例である。図１３（ｂ）は３フレーム目の上書後の２次元座標データの一例である。図１４は３フレーム目の３次元座標データの一例である。
【００３７】
図８に示すように、３次元座標算出部２２２は２次元座標算出部２２１から出力された２次元座標データを出力順に読み込む（ステップＳ２０１）。本実施形態では、まず、３次元座標算出部２２２は、図９に示すように、１フレーム目の２次元座標データを読み込む。ステップＳ２０１の処理が完了すると、次いで、３次元座標算出部２２２は２次元座標データに、２次元座標の欠損があるか否かを判断する（ステップＳ２０２）。本実施形態では、図９に示すように、右肘及び右手首に関する２次元座標は欠損していないため、３次元座標算出部２２２は２次元座標の欠損がないと判断する（ステップＳ２０２：ＮＯ）。２次元座標の欠損がない場合、３次元座標算出部２２２は２次元座標の欠損がないと判断した２次元座標データを２次元座標記憶部２１２に保存する（ステップＳ２０３）。これにより、２次元座標記憶部２１２は２次元座標の欠損がない２次元座標データを記憶する。すなわち、２次元座標記憶部２１２は図９に示す２次元座標データを記憶する。
【００３８】
ステップＳ２０３の処理が完了すると、次いで、３次元座標算出部２２２は３次元座標データを算出し（ステップＳ２０４）、算出した３次元座標データを出力する（ステップＳ２０５）。より詳しくは、３次元座標算出部２２２は１フレーム目の２次元座標データと３次元座標推定ＯＳＳとに基づいて、ファイル形式がテキスト形式である３次元座標データを算出して出力する。３次元座標算出部２２２は出力した３次元座標データを３次元座標記憶部２１３に保存する。これにより、３次元座標記憶部２１３は３次元座標データを記憶する。
【００３９】
したがって、図１０に示すように、２次元座標の欠損がない１フレーム目の２次元座標データから１フレーム目の３次元座標データが算出される。１フレーム目の３次元座標データは３次元座標記憶部２１３に保存される。尚、３次元座標データにおける行番号には関節を識別するが上述した関節ＩＤと異なる数値が採用される。これは２次元座標データのデータフォーマットと３次元座標データのデータフォーマットの相違に基づいている。行番号は「１」〜「３２」の３２種類が存在するが、右肩、右肘、右手首を除く部位の行番号は図１０において省略されている。３次元座標はｘ座標、ｙ座標、及びｚ座標により表される。ｘ座標、ｙ座標、及びｚ座標はいずれも「−１００００．０」〜「１００００．０」の数値で範囲が規定される。図１０では「ｅ＋０２」、すなわち、１０の二乗を用いてｘ座標、ｙ座標、及びｚ座標が表されている。
【００４０】
ステップＳ２０５の処理が完了すると、次いで、３次元座標算出部２２２は次のフレームの２次元座標データが存在するか否かを判断する（ステップＳ２０６）。本実施形態では、１フレーム目に連続する２フレーム目の２次元座標データが存在するため、３次元座標算出部２２２は次のフレームの２次元座標データが存在すると判断する（ステップＳ２０６：ＹＥＳ）。この場合、３次元座標算出部２２２は次のフレームの２次元座標データを読み込む（ステップＳ２０７）。すなわち、３次元座標算出部２２２は２フレーム目の２次元座標データを読み込む。３次元座標算出部２２２は次のフレームの２次元座標データを読み込むと、再び、ステップＳ２０２の処理を実行する。
【００４１】
ここで、図１１（ａ）に示すように、２フレーム目の２次元座標データでは、右肩に関する２次元座標は欠損していないが、右肘及び右手首に関する２次元座標は欠損している。このため、３次元座標算出部２２２は２次元座標の欠損があると判断する（ステップＳ２０２：ＹＥＳ）。２次元座標の欠損がある場合、３次元座標算出部２２２は２次元座標の欠損があると判断した２次元座標データが先頭フレームに相当するか否かを判断する（ステップＳ２０８）。本実施形態では、２フレーム目の２次元座標データであるため、３次元座標算出部２２２はその２次元座標データが先頭フレームに相当しないと判断する（ステップＳ２０８：ＮＯ）。この場合、３次元座標算出部２２２は前フレームの２次元座標データを参照して、欠損部分を前フレームの２次元座標データの２次元座標で上書きする（ステップＳ２０９）。本実施形態の場合、２フレーム目の前（より詳しくは直前）のフレームである１フレーム目の２次元座標データは２次元座標記憶部２１２に記憶されている。このため、３次元座標算出部２２２は２次元座標記憶部２１２にアクセスする。そして、３次元座標算出部２２２は２次元座標記憶部２１２が記憶する１フレーム目の２次元座標データを参照する。
【００４２】
具体的には、図１１（ａ）に示すように、２フレーム目の２次元座標データにおける右肘及び右手首に関する２次元座標が欠損している場合、３次元座標算出部２２２は２次元座標記憶部２１２が記憶する１フレーム目の２次元座標データ（図９参照）を参照する。１フレーム目の２次元座標データでは右肘及び右手首に関する２次元座標が欠損していない。このため、３次元座標算出部２２２は１フレーム目の２次元座標データに含まれる右肘及び右手首に関する２次元座標で、図１１（ｂ）に示すように、２フレーム目の２次元座標データにおける右肘及び右手首に関する２次元座標及びスコアを上書きする。これにより、欠損部分が補完される。このように、３次元座標算出部２２２が右肘及び右手首に関する２次元座標などを上書きしても、動画の連続性から関節の位置を特定する座標が前回と比べて大きく変動する可能性は低い。このため、欠損部分に対する上書きによる悪影響はない若しくは軽微である。特に、動画をフレーム単位に分割し、フレームに対応する２次元座標データを２次元座標記憶部２１２が記憶しているため、３次元座標算出部２２２はその２次元座標データを参照することができる。
【００４３】
ステップＳ２０９の処理が完了すると、３次元座標算出部２２２は上述したステップＳ２０３からＳ２０５の処理を実行する。これにより、図１２に示すように、２次元座標及びスコアが上書きされた２フレーム目の２次元座標データから２フレーム目の３次元座標データが算出される。２フレーム目の３次元座標データは１フレーム目の３次元座標データと同様に３次元座標記憶部２１３に保存される。また、２次元座標及びスコアが上書きされた２フレーム目の２次元座標データは１フレーム目の２次元座標データと同様に２次元座標記憶部２１２に保存される。
【００４４】
尚、本実施形態では、図１３（ａ）に示すように、３フレーム目の２次元座標データでも２フレーム目の２次元座標データと同様に右肘及び右手首に関する２次元座標が欠損している。したがって、３次元座標算出部２２２は２フレーム目の２次元座標データに含まれる右肘及び右手首に関する２次元座標で、図１３（ｂ）に示すように、３フレーム目の２次元座標データにおける右肘及び右手首に関する２次元座標及びスコアを上書きする。２次元座標記憶部２１２は２次元座標などが上書きされた２フレーム目の２次元座標データを記憶しているため、３次元座標算出部２２２は３フレーム目の２次元座標データの欠損部分を上書きできる。この結果、図１４に示すように、２次元座標などが上書きされた３フレーム目の２次元座標データから３フレーム目の３次元座標データが算出される。３フレーム目の３次元座標データも２フレーム目の３次元座標データと同様に３次元座標記憶部２１３に保存される。３次元座標算出部２２２は、ステップＳ２０６の処理において、次のフレームの２次元座標データが存在しないと判断し（ステップＳ２０６：ＮＯ）、処理を終える。
【００４５】
ここで、ステップＳ２０８の処理において、２次元座標の欠損があると判断した２次元座標データについて、３次元座標算出部２２２がその２次元座標データが先頭フレームに相当すると判断した場合（ステップＳ２０８：ＹＥＳ）、エラー処理を実行する（ステップＳ２１０）。すなわち、本実施形態において、１フレーム目の２次元座標データに２次元座標の欠損がある場合、欠損を上書きするために参照する２次元座標データが存在しない。このような場合、３次元座標算出部２２２はエラー処理を実行する。例えば、３次元座標算出部２２２は１フレーム目の２次元座標データに２次元座標の欠損がある旨を通知する処理をエラー処理として実行する。ステップＳ２１０の処理が完了すると、３次元座標算出部２２２は処理を終える。
【００４６】
さらに、端末装置２００の動作について説明する。ここでは、図１５及び図１６を参照して、描画部２２３の動作について説明する。
【００４７】
図１５は描画部２２３の動作の一例を示すフローチャートである。図１６（ａ）は１フレーム目のキャラクタ画像２０の動きの一例である。図１６（ｂ）は２フレーム目のキャラクタ画像２０の動きの一例である。図１６（ｃ）は３フレーム目のキャラクタ画像２０の動きの一例である。尚、描画部２２３はゲームエンジン上で動作する簡易的なプログラムであるスクリプトにより実現することができる。ゲームエンジンとしては、例えばUnity（登録商標）やUnreal（登録商標） Engineなどがある。
【００４８】
まず、図１５に示すように、描画部２２３は３次元座標記憶部２１３から３次元座標データを読み込む（ステップＳ３０１）。３次元座標記憶部２１３は１フレーム目、２フレーム目、及び３フレーム目の３次元座標データを記憶しているため、描画部２２３は複数の３次元座標データの中から先頭の３次元座標データを読み込む。描画部２２３は複数の３次元座標データの中から最も保存日時が古い３次元座標データを先頭の３次元座標データとして読み込む。したがって、本実施形態では、まず、描画部２２３は１フレーム目の３次元座標データを読み込む。
【００４９】
描画部２２３は３次元座標データを読み込むと、読み込んだ３次元座標データの中から関節操作に要する一部の３次元座標データを抽出する。３次元座標データは３２種類の部位の３次元座標を含んでいるが、描画部２２３は関節操作に要する１７種類の部位の３次元座標データを抽出する。描画部２２３が抽出する３次元座標データとしては、右肩、右肘、右手首に関するもののほか、胸椎、腰、左膝、左足首、骨盤、右骨盤、頭に関するものなどがある。
【００５０】
ステップＳ３０１の処理が完了すると、次いで、描画部２２３は３次元ベクトルを算出する（ステップＳ３０２）。より詳しくは、描画部２２３はキャラクタ画像２０の姿勢の制御に必要なbone（ボーン：骨）を特定できる関節の組み合わせを特定する。例えば、描画部２２３は上腕骨を特定できる右肩と右肘の組み合わせを特定する。描画部２２３は前腕骨を特定できる右肘と右手首の組み合わせを特定する。描画部２２３は関節の組み合わせを特定すると、２つの関節の一方を子の関節、２つの関節の他方を親の関節と認定する。そして、描画部２２３は子の関節の３次元座標から親の関節の３次元座標を減算することで、３次元ベクトルを算出する。例えば、描画部２２３は右肘を子、右肩を親と認定し、右肘の３次元座標から右肩の３次元座標を減算することで、上腕骨に関する３次元ベクトルを算出する。同様に、描画部２２３は右手首を子、右肘を親と認定し、右手首の３次元座標から右肘の３次元座標を減算することで、前腕骨に関する３次元ベクトルを算出する。
【００５１】
ステップＳ３０２の処理が完了すると、次いで、描画部２２３は３次元ベクトルを３次元回転値に変換する（ステップＳ３０３）。例えば、描画部２２３がUnity（登録商標）により実現されている場合、描画部２２３はLookRotation関数を利用して、３次元ベクトルを３次元回転値に変換する。ステップＳ３０３の処理が完了すると、次いで、描画部２２３はキャラクタ画像２０の関節に３次元回転値を関連付ける（ステップＳ３０４）。例えば、描画部２２３がUnity（登録商標）により実現されている場合、描画部２２３はHumanBodyBonesと呼ばれる機能を利用して、キャラクタ画像２０の関節に３次元回転値を関連付ける。ステップＳ３０４の処理が完了すると、描画部２２３はキャラクタ画像２０を表示部２４０に描画する（ステップＳ３０５）。これにより、図１６（ａ）に示すように、表示部２４０には関節の動きが関連付けられた１フレーム目のキャラクタ画像２０が出現する。キャラクタ画像２０には人１０が身に着けていない髪飾り及び尻尾が付着している。
【００５２】
ステップＳ３０５の処理が完了すると、次いで、描画部２２３は次フレームの３次元座標データが存在するか否かを判断する（ステップＳ３０６）。本実施形態では、２フレーム目の３次元座標データが存在するため、描画部２２３は次フレームの３次元座標データが存在すると判断する（ステップＳ３０６：ＹＥＳ）。この場合、描画部２２３は再びステップＳ３０１からＳ３０５の処理を繰り返す。これにより、図１６（ｂ）に示すように、表示部２４０には関節の動きが関連付けられた２フレーム目のキャラクタ画像２０が出現する。特に、２フレーム目の３次元座標データは右肘及び右手首の２次元座標の欠損が上書きされた２フレーム目の２次元座標データに基づいて算出されている。２フレーム目の２次元座標データは１フレーム目を参照して２次元座標の欠損が上書きされているため、キャラクタ画像２０の右肘及び右手首が１フレーム目のキャラクタ画像２０と同様に出現する。また、本実施形態では、３フレーム目の３次元座標データが存在するため、図１６（ｃ）に示すように、表示部２４０には関節の動きが関連付けられた３フレーム目のキャラクタ画像２０が出現する。特に、３フレーム目の３次元座標データは右肘及び右手首の２次元座標の欠損が上書きされた３フレーム目の２次元座標データに基づいて算出されている。３フレーム目の２次元座標データは２フレーム目を参照して２次元座標の欠損が上書きされているため、キャラクタ画像２０の右肘及び右手首が２フレーム目のキャラクタ画像２０と同様に出現する。そして、描画部２２３は次フレームの３次元座標データが存在しないと判断すると（ステップＳ３０６：ＮＯ）、処理を終える。
【００５３】
このように、次フレームの３次元座標データが存在しなくなるまで、表示部２４０には関節の動きが関連付けられたキャラクタ画像２０が連続的に出現する。この結果、動画の視聴者にはキャラクタ画像２０があたかも動いているように見える。
【００５４】
以上、第１実施形態によれば、端末装置２００は関節を有する人１０を撮像した動画に基づいて、仮想空間ＶＳに人１０の動きと一部が連動するキャラクタ画像２０を連続して描画する。端末装置２００は記憶部２１０と処理部２２０を備えている。特に、記憶部２１０は２次元座標記憶部２１２を含み、処理部２２０は２次元座標算出部２２１と３次元座標算出部２２２を含んでいる。２次元座標算出部２２１は動画から、関節の位置を表す２次元座標を含む２次元座標データを算出する。３次元座標算出部２２２は２次元座標算出部２２１が算出した２次元座標データに、２次元座標の欠損があるか否かを判断し、欠損がない場合、算出した２次元座標データを２次元座標記憶部２１２に保存する。一方、３次元座標算出部２２２は２次元座標の欠損がある場合、２次元座標記憶部２１２に保存した２次元座標データを参照する。３次元座標算出部２２２は２次元座標の欠損を上書きした上書済の２次元座標データを２次元座標記憶部２１２に保存する。３次元座標算出部２２２は２次元座標記憶部２１２に保存した２次元座標データ又は上書済の２次元座標データから、関節の位置を表す３次元座標を含む、キャラクタ画像２０に利用するための３次元座標データを算出する。これにより、人１０が有する関節の３次元座標データを算出する際のエラーを回避することができる。
【００５５】
（第２実施形態）
続いて、図１７を参照して、本件の第２実施形態について説明する。図１７は３次元座標算出部２２２の動作の一例を示すフローチャートの一部である。特に、図１７に示すフローチャートは、図８を参照して説明したフローチャートに追加されるフローチャートである。
【００５６】
具体的には、３次元座標算出部２２２は、第１実施形態で説明したステップＳ２０８の処理において、２次元座標の欠損があると判断した２次元座標データが先頭フレームに相当すると判断した場合、次のフレームが存在するか否かを判断する（ステップＳ２１１）。３次元座標算出部２２２は、次のフレームが存在すると判断した場合（ステップＳ２１１：ＹＥＳ）、次のフレームを先頭フレームとして利用し（ステップＳ２１２）、ステップＳ２０７の処理を実行する。一方で、３次元座標算出部２２２は、次のフレームが存在しないと判断した場合（ステップＳ２１１：ＮＯ）、ステップＳ２１０の処理を実行する。すなわち、３次元座標算出部２２２はエラー処理を実行する。
【００５７】
このように、第２実施形態によれば、２次元座標の欠損がある２次元座標データであり、その２次元座標データを生成したフレームが先頭フレームに相当する場合であっても、早急なエラー処理を回避することができる。
【００５８】
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。動画に代えて連続した静止画を利用してもよい。また、上述した実施形態では、２次元座標データのファイル形式としてjson形式を説明したが、ファイル形式は特に限定されない。また、３次元座標データのファイル形式としてテキスト形式を説明したが、ファイル形式は特に限定されない。
【００５９】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する情報処理装置であって、前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、処理を実行する処理部を備える情報処理装置。
（付記２）前記処理部は、入力された画像から関節の２次元座標を含むデータを出力する第１ソフトウェアを利用して、前記２次元座標データを算出し、前記データから関節の３次元座標を含む別のデータを出力する第２ソフトウェアを利用して、前記３次元座標データを算出する、ことを特徴とする付記１に記載の情報処理装置。
（付記３）前記処理部は、前記欠損があり、前記欠損がある前記２次元座標データを算出した前記第１画像が複数の画像の中の先頭に相当する場合、前記第１画像の次の画像が存在するか否かを判断し、前記次の画像が存在する場合、前記次の画像を前記第１画像として利用する、ことを特徴とする付記１又は２に記載の情報処理装置。
（付記４）前記処理部は、前記第１画像が動画像である場合、前記動画像を静止画像単位に分割し、前記静止画像から前記２次元座標データを算出する、ことを特徴とする付記１から３のいずれか１項に記載の情報処理装置。
（付記５）関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する処理をコンピュータに実行させるためのデータ算出プログラムであって、前記コンピュータに、前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、処理を実行させることを特徴とするデータ算出プログラム。
（付記６）関節を有する物体を撮像した第１画像に基づいて、仮想空間に前記物体と連動する第２画像を連続して描画する処理をコンピュータが実行するデータ算出方法であって、前記コンピュータが、前記第１画像から、関節の位置を表す２次元座標を含む２次元座標データを算出し、算出した前記２次元座標データに、前記２次元座標の欠損があるか否かを判断し、前記欠損がない場合、算出した前記２次元座標データを記憶部に保存し、前記欠損がある場合、前記記憶部に保存した前記２次元座標データを参照して前記欠損を上書きした上書済２次元座標データを前記記憶部に保存し、前記記憶部に保存した前記２次元座標データ又は前記上書済２次元座標データから、関節の位置を表す３次元座標を含む、前記第２画像に利用するための３次元座標データを算出する、処理を実行することを特徴とするデータ算出方法。
（付記７）前記コンピュータが、入力された画像から関節の２次元座標を含むデータを出力する第１ソフトウェアを利用して、前記２次元座標データを算出し、前記データから関節の３次元座標を含む別のデータを出力する第２ソフトウェアを利用して、前記３次元座標データを算出する、ことを特徴とする付記６に記載のデータ算出方法。
（付記８）前記コンピュータが、前記欠損があり、前記欠損がある前記２次元座標データを算出した前記第１画像が複数の画像の中の先頭に相当する場合、前記第１画像の次の画像が存在するか否かを判断し、前記次の画像が存在する場合、前記次の画像を前記第１画像として利用する、ことを特徴とする付記６又は７に記載のデータ算出方法。
（付記９）前記コンピュータが、前記第１画像が動画像である場合、前記動画像を静止画像単位に分割し、前記静止画像から前記２次元座標データを算出する、ことを特徴とする付記６から８のいずれか１項に記載のデータ算出方法。
【符号の説明】
【００６０】
ＳＴ  情報処理システム
１００  単眼カメラ
２００  端末装置
２１０  記憶部
２１１  画像記憶部
２１２  ２次元座標記憶部
２１３  ３次元座標記憶部
２２０  処理部
２２１  ２次元座標算出部
２２２  ３次元座標算出部
２２３  描画部
２３０  入出力部
２４０  表示部
【図１】
2020030613.tif 000003
【図２】
2020030613.tif 000004
【図３】
2020030613.tif 000005
【図４】
2020030613.tif 000006
【図５】
2020030613.tif 000007
【図６】
2020030613.tif 000008
【図７】
2020030613.tif 000009
【図８】
2020030613.tif 000010
【図９】
2020030613.tif 000011
【図１０】
2020030613.tif 000012
【図１１】
2020030613.tif 000013
【図１２】
2020030613.tif 000014
【図１３】
2020030613.tif 000015
【図１４】
2020030613.tif 000016
【図１５】
2020030613.tif 000017
【図１６】
2020030613.tif 000018
【図１７】
2020030613.tif 000019