【新規性喪失の例外の表示】特許法第30条第2項適用 日本デジタルゲーム学会2015年年次大会予稿集 発行日:平成28年2月27日 [刊行物等] 米国電気電子学会バーチャルリアリティ2016年会議(IEEE Virtual Reality 2016 conference)予稿集 発行日:平成28年3月19日
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、図面を参照して本発明の一実施形態について説明する。
図1は、本発明の一実施形態である画像処理システム100の構成を示す図である。画像処理システム100は、画像処理装置110、カメラ120、及びディスプレイ130を備える。カメラ120及びディスプレイ130は、画像処理装置110に内蔵されていてもよい。また、画像処理装置110は、マーカ情報記憶部140、基準マーカ識別部141、起点特定部142、姿勢情報再演算部143、正規化部144、構造化マーカ判定部145、及び操作指示部146を備える。また、基準マーカ識別部141は、姿勢情報演算部150を含む。画像処理装置110は、例えば、スマートフォンやタブレット端末、パーソナルコンピュータ等の情報処理装置である。画像処理装置110は、プロセッサ及びメモリを備え、メモリに格納されたプログラムを実行することにより、
図1に示す各部を含む様々な機能を実現することができる。
【0011】
図2は、画像処理システム100の利用イメージを説明するための図である。
図2に示す例では、ユーザは手袋200を着用している。この手袋200には、後述するマーカが付されている。手袋200に付されたマーカはカメラ120によって認識され、その認識結果に応じて、AR空間(視錐台)210におけるオブジェクト220に対する操作指示が行われる。例えば、ユーザの指の動きに連動するようにオブジェクト220が描画される。
【0012】
図3は、手袋200に付されたマーカの一例を示す図である。
図3に示すように、手袋200には、基準マーカ(Fiducial Marker)300及び構造化マーカ(Structured Markers)310(310a〜310e)が設けられている。基準マーカ300及び構造化マーカ310は、手袋200の色に対してコントラストが比較的大きい色であることが好ましい。例えば、手袋200の色が黒である場合、基準マーカ300及び構造化マーカ310の色を白とすることができる。
【0013】
基準マーカ300は、オブジェクト220を識別するためのものであり、状態の変化が比較的小さい領域(もしくは状態の変化がないことが前提の領域)である手のひらの部分に設けられている。ここで、状態の変化の一例としてあげられるのは、変形である。構造化マーカ310(310a〜310e)は、その状態によってオブジェクト220に対する操作指示を行うためのものであり、状態の変化が比較的大きい領域(もしくは状態の変化があることが前提の領域)である指の部分に設けられている。
【0014】
なお、本実施形態では、マーカが付される物体の一例として手袋200を示すが、マーカが付される物体は手袋200に限られず、状態の変化が比較的小さい領域と状態の変化が比較的大きい領域とを有する任意の物体を採用することができる。例えば、シャツの胸の部分に基準マーカ300を付し、シャツの袖の部分に構造化マーカ310を付してもよい。また例えば、可動腕を有する人型構造物の胴体部分に基準マーカを付し、腕部分に構造化マーカを付してもよい。また、
図3において、基準マーカ300は、いくつかの図形の群によって示されているが、これは一例であり、一つの図形のみによって示されていてもよく、構造化マーカ310も一例である。すなわち、マーカの形状には任意の形状を採用することができる。また、本実施形態では、構造化マーカ310が基準マーカ300とは別個に設けられている例を説明するが、構造化マーカは、基準マーカを含んでもよい。具体的には、基準マーカ300及び構造化マーカ310の組を、構造化マーカとすることもできる。
【0015】
図1に戻り、画像処理装置110の各部の説明を行う。マーカ情報記憶部140には、基準マーカと、オブジェクト220を識別するためのオブジェクトIDとの対応関係を示すマーカ情報が予め記憶されている。
図4は、マーカ情報の一例を示す図である。
図4に示すように、マーカ情報は、基準マーカの特徴を示す基準マーカ情報400、構造化マーカの特徴を示す構造化マーカ情報410、基準マーカの姿勢を再演算する際の基準点の特徴を示す基準点情報420、及びオブジェクト220を識別するためのオブジェクトID430を含む。
【0016】
基準マーカ情報400は、例えば、基準マーカの画像の特徴を示す情報(例えば特徴量ベクトル)を含む。構造化マーカ情報410は、例えば、基準マーカに対する構造化マーカの起点の位置関係を示す起点位置情報や、構造化マーカの画像の特徴を示す情報(例えば特徴量ベクトル)を含む。基準点情報420は、基準マーカに対する基準点の位置関係を示す基準点位置情報を含む。マーカ情報において、基準マーカ情報400は、オブジェクトID430ごとに異なっている。なお、マーカ情報記憶部140は、画像処理装置110の外部に設けられてもよい。例えば、マーカ情報記憶部140は、クラウドのサーバに設けられていてもよい。
【0017】
基準マーカ識別部141は、マーカ情報記憶部140に記憶されているマーカ情報に基づいて、カメラ120から連続的に出力される撮像画像から、基準マーカを識別する。
図5は、基準マーカの識別を説明するための図である。
図5に示すように、基準マーカ識別部141は、撮像画像内において基準マーカ500を識別する。この基準マーカ500とは、後述するように、基準マーカ情報400と所定の類似度を有する画像領域を撮像画像内から識別したものと言える。この識別は、撮像画像内での基準マーカ500の存在の有無の検出のみならず、姿勢情報演算部150による姿勢情報の演算をともなって行われる。姿勢情報とは、位置、角度、距離などを含めた概念である。撮像画像からの基準マーカ500の存在の有無の検出および姿勢情報の演算は、既知の画像処理技術(Computer Vision)を適宜用いることで実現可能であるので詳細な説明は割愛するが、例えば、マーカ情報記憶部140に記憶されている基準マーカ情報400に対して所定の類似性を満たす特徴点の群を撮像画像から検出し、これらの特徴点を用いてPnP(Perspective N−Point)問題を解く演算を行うことで実現される。また、基準マーカ識別部141は、基準マーカ500を識別した際に、基準マーカ情報400との類似度に基づいて、識別精度を示す精度情報を出力する。基準マーカ識別部141は、他の画像処理装置と精度情報を共有するために、クラウドのサーバや他の画像処理装置に精度情報を送信する。精度情報は、例えば、識別された基準マーカ500に対応するオブジェクトIDと、識別精度(例えば、0〜1の範囲の値)とを含む。また、基準マーカ情報400として複数種類の情報(例えば、F1、F2、・・・)がマーカ情報記憶部140に記憶されている場合、基準マーカ識別部141は、撮像画像内において、複数の基準マーカ500を識別する。複数の基準マーカ500が識別された場合、基準マーカ識別部141は、各基準マーカ300に関する精度情報を出力する。
【0018】
起点特定部142は、識別された基準マーカ500と、マーカ情報記憶部140に記憶されている構造化マーカ情報410とに基づいて、撮像画像における1つ又は複数の構造化マーカの起点を特定する。また、起点特定部142は、識別された基準マーカ500と、この基準マーカ500を識別するための基準マーカ情報400と対応付けられてマーカ情報記憶部140に記憶されている基準点情報420とによって、撮像画像における1つ又は複数の基準点を特定する。
図6は、起点及び基準点の特定を説明するための図である。基準マーカに対する構造化マーカの起点の位置関係は、マーカ情報記憶部140に記憶されている構造化マーカ情報410に含まれる起点位置情報によって示される。また、基準マーカに対する基準点の位置関係は、マーカ情報記憶部140に記憶されている基準点情報によって示される。基準マーカ500に対する起点600及び基準点610の位置関係は、基準マーカ500の姿勢によって変化する。そこで、起点特定部142は、起点位置情報及び基準点情報を、姿勢情報演算部150により演算された姿勢情報で変換することにより、基準マーカ500に対応する起点600及び基準点610を特定する。なお、
図6では基準点が1つしか示されていないが、基準点は複数存在する。
図6の例では、起点600a,600b,600eは基準点を兼ねている。
【0019】
ところで、手のひらは、実際は変形するものであるため、基準マーカ500と、起点600及び基準点610との位置関係は、カメラ120によって撮像される瞬間の手袋の状態によって変化する。そのため、特定された起点600及び基準点610の位置は、予め設計された理想の位置とは異なっている可能性がある。そこで、起点特定部142は、例えば、ミーンシフト(Mean Shift)により起点600及び基準点610を補正する。
【0020】
図7は、起点600及び基準点610をミーンシフトにより補正する例を示す図である。
図7において、点700(700a〜700c)は、起点又は基準点に対応する。また、
図7において、領域710は、起点又は基準点を含む領域である。起点特定部142は、特定された点700aを中心とする所定の大きさの円720aを規定する。起点特定部142は、この円720a内において、構造化マーカの色(例えば、白色)を基準とした重心の点700bを求める。続いて、起点特定部142は、この重心の点700bを中心とする円720bを規定する。さらに、起点特定部142は、この円720b内における重心の点700cを求め、重心の点700cを中心とする円720cを規定する。
図7に示す例では、領域710は、構造化マーカの他の箇所よりも幅が広くなっているため、ミーンシフトの処理を繰り返していくことにより、重心700が領域710の中心付近に収束し、点700が補正される。即ち、最初に特定された点700aが領域710内の点700cに補正される。この補正は、数値演算によって求められた起点600及び基準点に関する情報を、実際の手の状態を画像化した撮像画像の特徴を利用して、より正確な情報へ変換するものと言える。
【0021】
姿勢情報再演算部143は、補正された基準点610(起点600の一部を含む)に基づいて、基準マーカ500の姿勢情報を再度求める。具体的には、姿勢情報再演算143は、姿勢情報演算部150により演算された姿勢情報を、補正された基準点610を用いて再演算する。姿勢情報の再演算は、例えば、マーカ情報記憶部140に記憶されている基準点位置情報と、補正された基準点610とに基づいて、PnP問題を解く演算を行うことにより実現される。この再演算により、より正しい姿勢情報が求められる。
【0022】
正規化部144は、姿勢情報再演算部143によって再演算された姿勢情報に基づいて、識別された基準マーカ500が所定の姿勢となるように撮像画像を正規化する。なお、撮像画像の正規化においては、撮像画像内の構造化マーカの状態判定を容易にするために、撮像画像の座標情報の変換が行われる。
【0023】
図8は、撮像画像の正規化の一例を説明するための図である。撮像画像800aには、手袋の画像が含まれている。前述したように、姿勢情報再演算部143により、撮像画像800aにおいては、補正された基準点600a,600b,600e,610に基づいて、姿勢情報が再演算されている。この再演算された姿勢情報に基づいて、正規化部144は、基準マーカ500が所定の姿勢によって示される情報となるように、撮像画像800aの座標値を変換し、撮像画像800bを生成する。
図8に示す例では、所定の姿勢は、手のひらが正面を向き、手首が下側となる姿勢である。このような正規化は、例えば、ホモグラフィ変換により行うことができる。そして、このように正規化を行うことにより、撮像画像内の構造化マーカの状態判定が容易となる。例えば、正規化後の撮像画像800bにおいては、起点600からどの方向に構造化マーカが形成されているかは手袋のデザインから自明である。そのため、構造化マーカ判定部145が構造化マーカの状態を判定する際に用いるアルゴリズムを設計する際、これが容易になる。
【0024】
構造化マーカ判定部145は、正規化後の撮像画像において、起点600から連続する構造化マーカの状態を判定する。
図9は、構造化マーカの状態の判定を説明するための図である。
図9に示すように、構造化マーカ判定部145は、起点600(600a〜600e)から連続する領域を探索することにより、構造化マーカ900(900a〜900e)の状態を判定することができる。具体的には、構造化マーカ判定部145は、マーカ情報記憶部140に記憶されている構造化マーカ情報410に基づいて、正規化後の撮像画像内の起点600を出発地点として、撮像画像内を探索することにより、構造化マーカ900の状態を判定する。構造化マーカ情報410は、構造化マーカ900の状態判定に用いるアルゴリズムを特定する情報を含む。
【0025】
図10は、構造化マーカの状態を迷路探索アルゴリズム(Wall Follower)を利用して判定する例を示す図である。構造化マーカ判定部145は、正規化後の撮像画像において、起点600を出発地点として、ある方向(例えば、
図10に示す矢印A1の方向)に探索を進める。そして、コントラストが大きく変化する点(例えば、
図10に示すX点)に達すると、構造化マーカ判定部145は、基準マーカ500とは反対の方向(例えば、
図10に示すA2の方向)に探索方向を変更する。このように、構造化マーカ判定部145は、構造化マーカ900の端部を迷路の壁と見なして、この壁にそって探索を進めることにより、構造化マーカ900の方向及び長さを演算する。もちろん、迷路探索アルゴリズムは一例であり、起点600を出発地点としてコントラストが大きく変化している境界を、撮像画像から検知することを利用した様々な手法を採用可能である。具体的には、構造化マーカ判定部145は、マーカ情報記憶部140に記憶されている構造化マーカ情報410に基づいて、構造化マーカ900の状態判定に用いるアルゴリズムを選択することができる。
【0026】
構造化マーカ判定部145は、各構造化マーカ900の方向及び長さを演算することにより、複数の構造化マーカ900により規定される、構造化マーカ900の状態を判定することができる。
図11は、構造化マーカの状態を説明するための図である。
図11に示すように、構造化マーカ900の状態には、各構造化マーカ900の方向及び長さ1100(1100a〜1100e)、隣接する構造化マーカ900間の角度1110(1110a〜1110d)、隣接する構造化マーカ900の先端間の距離1120(1120a〜1120d)が含まれる。
【0027】
また、構造化マーカ判定部145は、複数の構造化マーカ900の状態をパターンとして認識することもできる。
図12は、構造化マーカ900の状態のパターンの一例を示す図である。
図12には、4つのパターンが示されている。いずれのパターンも、薬指と小指は折られており、構造化マーカ900d,900eは認識されていない。パターン01は、親指(構造化マーカ900a)と人差し指(構造化マーカ900b)が離れ、人差し指(構造化マーカ900b)と中指(構造化マーカ900c)が接触している状態である。パターン02は、親指(構造化マーカ900a)と人差し指(構造化マーカ900b)が離れ、人差し指(構造化マーカ900b)と中指(構造化マーカ900c)も離れている状態である。パターン03は、親指(構造化マーカ900a)と人差し指(構造化マーカ900b)が接触し、人差し指(構造化マーカ900b)と中指(構造化マーカ900c)が離れている状態である。パターン04は、親指(構造化マーカ900a)と人差し指(構造化マーカ900b)が接触し、人差し指(構造化マーカ900b)と中指(構造化マーカ900c)も接触している状態である。このように、構造化マーカ判定部145は、複数の構造化マーカ900の状態をパターンとして認識することもできる。
【0028】
画像処理システム100では、複数の画像処理装置110を用いて、複数の手袋200に付されたマーカを同時に処理することができる。この点について説明する。
図13は、3つの画像処理装置110a〜110cを用いて4つの手袋200a〜200dに付されたマーカを処理している状態を示す図である。このような状態において、各画像処理装置110が、全ての手袋200a〜200dについて構造化マーカの状態判定を行うことは効率が悪い。そこで、画像処理システム100では、各画像処理装置110の基準マーカ識別部141が、撮像画像内の基準マーカ500(手袋200a〜200dに付された基準マーカ300a〜300dに対応)から、所定の優先条件に基づいて、構造化マーカ900の状態判定を行う対象とする基準マーカ500を選択することができる。所定の優先条件としては、例えば、基準マーカ500の識別精度や、予め登録されたオブジェクトIDを用いることができる。
【0029】
図14は、識別精度に基づいて基準マーカ500を選択するための精度情報テーブルの一例を示す図である。精度情報テーブルは、画像処理装置110(D1,D2,・・・,Dm)とオブジェクトID(A1,A2,・・・,An)のマトリクスであり、各セルには、識別精度を示す0〜1の値が設定されている。ここでは、値が1に近いほど識別精度が高いものとする。なお、オブジェクトIDは、基準マーカ500に対応するものである。精度情報テーブルは、例えば、各画像処理装置110において保持される。このような精度情報テーブルは、例えば、各画像処理装置110の基準マーカ識別部141が、基準マーカ500の識別精度を他の画像処理装置に送信することにより生成することができる。
【0030】
例えば、各画像処理装置110の基準マーカ識別部141は、オブジェクトA1〜Anの中から、識別精度が所定の基準値以上のものを選択することができる。なお、画像処理装置110において選択可能なオブジェクトの数には上限値を設定してもよい。この上限値は、画像処理装置110の処理能力等に応じて可変であってもよい。また例えば、複数のオブジェクトA1〜Anのそれぞれについて、オブジェクトの識別精度が最も高い画像処理装置110が当該オブジェクトを選択するように構成してもよい。
【0031】
操作指示部146は、基準マーカ識別部141により識別された基準マーカ500に対応するオブジェクトIDによって識別されるオブジェクトに対して、構造化マーカ判定部145により判定された構造化マーカ900の状態に応じた操作指示を出力する。なお、オブジェクトは、オブジェクトIDによって識別可能であり、操作指示を受け付けることが可能な任意のものを対象とすることができる。例えば、オブジェクトは、オブジェクトIDによって識別されるユーザの手のオブジェクトであってもよい。この場合、操作指示部146は、例えば、構造化マーカ900の状態に応じて、ディスプレイ130に表示される手のオブジェクトにおける指の動きを制御することができる。また例えば、オブジェクトは、オブジェクトIDによって識別されるゲームのキャラクタであってもよい。この場合、操作指示部146は、例えば、構造化マーカ900の状態に応じて、ディスプレイ130に表示されるキャラクタの動作を制御することができる。
【0032】
図15A及び
図15Bは、画像処理システム100における処理の一例を示すフローチャートである。なお、画像処理システム100に複数の画像処理装置110が存在する場合、
図15A及び
図15Bに示す処理は、各画像処理装置110において実行される。
【0033】
図15Aに示すように、まず、基準マーカ識別部141は、マーカ情報記憶部140に記憶されたマーカ情報を読み出す(S1501)。このマーカ情報は、
図4に示すように、基準マーカ情報400、構造化マーカ情報410、基準点情報420、及びオブジェクトID430を含む。そして、基準マーカ識別部141は、カメラ120から連続的に出力される撮像画像を取得する(S1502)。そして、基準マーカ識別部141は、基準マーカ情報記憶部140に記憶されている基準マーカ情報400に基づいて、撮像画像から、基準マーカ500を識別する(S1503)。このとき、基準マーカ識別部141の姿勢情報演算部150は、識別された基準マーカ500と、マーカ情報記憶部140に記憶されている基準マーカ情報400とに基づいて、PnP問題を解くことにより、基準マーカ500の姿勢情報の演算も行う(S1504)。
【0034】
起点特定部142は、識別された基準マーカ500と、マーカ情報記憶部140に記憶されている構造化マーカ情報410とに基づいて、撮像画像における1つ又は複数の構造化マーカの起点600を特定する(S1505)。また、起点特定部142は、識別された基準マーカ500と、マーカ情報記憶部140に記憶されている基準点情報420とに基づいて、撮像画像における複数の基準点610を特定する(S1506)。その後、起点特定部142は、ミーンシフトにより起点600及び基準点610を補正する(S1507)。
【0035】
続いて、姿勢情報再演算部143は、補正された基準点610(起点600の一部を含む)と、マーカ情報記憶部140に記憶されている基準点位置情報とに基づいて、PnP問題を解くことにより、基準マーカ500の姿勢情報を再演算する(S1508)。そして、正規化部144は、再演算された姿勢情報に基づいて、識別された基準マーカ500が所定の姿勢となるように、例えばホモグラフィ変換によって、撮像画像を正規化する(S1509)。
【0036】
構造化マーカ判定部145は、正規化後の撮像画像において、構造化マーカの状態判定処理を実行する(S1510)。
図15Bに示すように、構造化マーカ判定部145は、マーカ情報記憶部140に記憶されている構造化マーカ情報410に基づいて、構造化マーカ900の状態判定に用いるアルゴリズムを選択する(S1520)。そして、構造化マーカ判定部145は、選択されたアルゴリズムを用いて、正規化後の撮像画像内の起点600を出発地点として撮像画像内を探索することにより、構造化マーカ900の状態を判定する(S1521)。構造化マーカ判定部145は、全ての構造化マーカ900の状態判定が完了したかどうか判断し(S1522)、完了していない場合は(S1522:N)、アルゴリズム選択(S1520)及び状態判定(S1521)を繰り返し実行する。全ての構造化マーカ900の状態判定が完了すると(S1522:Y)、操作指示部146は、全ての構造化マーカ900に基づいて、オブジェクトに対する操作指示内容を演算する(S1523)。その後、
図15Aに示す処理に戻り、操作指示部146は、演算された操作指示内容に基づいて、オブジェクトに対して操作指示を行う(S1530)。
【0037】
上述の処理が、処理終了が指示されるまでの間(S1531:N)、カメラ120から出力され続ける撮像画像に対してリアルタイムに実行される。そして、例えば、ユーザ操作によって処理終了が指示されると(S1509:Y)、処理が終了する。
【0038】
以上、本発明の一実施形態について説明した。上述したように、本実施形態によれば、基準マーカとオブジェクトIDとの対応関係を示すマーカ情報に基づいて、カメラ120から連続的に出力される撮像画像から、基準マーカ500が識別される。そして、識別された基準マーカ500と、基準マーカに対応して定められた起点位置情報とによって、撮像画像における1つ又は複数の構造化マーカの起点600が特定される。その後、起点600から連続する1つ又は複数の構造化マーカ900の状態が判定される。そして、識別された基準マーカ500に対応するオブジェクトIDによって識別されるオブジェクトに対して、1つ又は複数の構造化マーカ900の判定された状態に応じた操作指示が出力される。このように、本実施形態によれば、識別された基準マーカ500がどのオブジェクトに対応するものであるかを判断し、当該オブジェクトに対して構造化マーカ900の状態に応じた操作指示を出力することができる。
【0039】
また、本実施形態によれば、姿勢情報演算部150及び姿勢情報再演算部143が、基準マーカ500に対応する複数の基準点に基づいて、識別された基準マーカ500の姿勢を演算(判定)する。その後、演算された姿勢に基づいて、識別された基準マーカ500が所定の姿勢となるように撮像画像が正規化される。そして、正規化された撮像画像において、1つ又は複数の構造化マーカ900の状態が判定される。このように、基準マーカ500が所定の姿勢となるように撮像画像を正規化した後に、構造化マーカ900の状態を判定することにより、構造化マーカ900の状態を判定する際の計算量を削減することができる。なお、本実施形態では、姿勢情報演算部150及び姿勢情報再演算部143によって、基準マーカ500の姿勢を判定する姿勢判定部を実現する例を示したが、姿勢情報再演算部143は必須ではない。すなわち、姿勢情報演算部150により演算された姿勢情報の再演算を行わずに撮像画像の正規化を行ってもよい。
【0040】
また、本実施形態によれば、識別された複数の基準マーカ500から、所定の優先条件に基づいて、構造化マーカ900の状態判定の対象とする少なくとも1つの基準マーカ500を選択することができる。これにより、例えば、複数の画像処理装置110において処理負荷を分散させることが可能となる。
【0041】
なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更/改良され得るととともに、本発明にはその等価物も含まれる。
【解決手段】プログラムは、コンピュータに、基準マーカとオブジェクト識別子との対応関係を示すマーカ情報に基づいて、カメラから連続的に出力される撮像画像から、基準マーカを識別する基準マーカ識別部と、識別された基準マーカと、基準マーカに対応して定められた位置情報とによって、撮像画像における1つ又は複数の構造化マーカの起点を特定する起点特定部と、起点から連続する1つ又は複数の構造化マーカの状態を判定する構造化マーカ判定部と、識別された基準マーカに対応するオブジェクト識別子によって識別されるオブジェクトに対して、1つ又は複数の構造化マーカの判定された状態に応じた操作指示を出力する操作指示部と、を実現させる。