(57)【特許請求の範囲】
【請求項１】
画像に写る識別子を認識する認識部と、
前記識別子に対応する3Dオブジェクトのデータを取得する取得部と、
前記画像に基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変えるとともに、前記識別子を認識できなくなった場合、前記識別子を最後に認識できたタイミングから、所定の時間内の期間、または所定の値以上の計測値がセンサデータとして計測されるまでの期間だけ、前記センサデータに基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変える処理部と、
前記識別子と情報処理端末自身の位置関係に応じて向きを変えた前記3Dオブジェクトを、前記画像に重ねて、前記画像に写る前記識別子の上に表示させる表示制御部と
を備える情報処理端末。
【請求項２】
撮影部をさらに備え、
前記認識部は、前記撮影部により撮影された前記画像に写る前記識別子を認識する
請求項１に記載の情報処理端末。
【請求項３】
前記処理部は、前記識別子を認識できなくなった場合、最後に前記識別子を認識できたとき以降に検出された前記センサデータに基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変える
請求項１または２に記載の情報処理端末。
【請求項４】
前記センサデータを検出するセンサ部をさらに備える
請求項１乃至３のいずれかに記載の情報処理端末。
【請求項５】
前記センサ部はジャイロセンサにより構成される
請求項４に記載の情報処理端末。
【請求項６】
前記識別子は、色の異なる領域から構成される二次元のコードである
請求項１乃至５のいずれかに記載の情報処理端末。
【請求項７】
画像に写る識別子を認識し、
前記識別子に対応する3Dオブジェクトのデータを取得し、
前記画像に基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変えるとともに、前記識別子を認識できなくなった場合、前記識別子を最後に認識できたタイミングから、所定の時間内の期間、または所定の値以上の計測値がセンサデータとして計測されるまでの期間だけ、前記センサデータに基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変え、
前記識別子と情報処理端末自身の位置関係に応じて向きを変えた前記3Dオブジェクトを、前記画像に重ねて、前記画像に写る前記識別子の上に表示させる
ステップを含む情報処理方法。
【請求項８】
画像に写る識別子を認識し、
前記識別子に対応する3Dオブジェクトのデータを取得し、
前記画像に基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変えるとともに、前記識別子を認識できなくなった場合、前記識別子を最後に認識できたタイミングから、所定の時間内の期間、または所定の値以上の計測値がセンサデータとして計測されるまでの期間だけ、前記センサデータに基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変え、
前記識別子と情報処理端末自身の位置関係に応じて向きを変えた前記3Dオブジェクトを、前記画像に重ねて、前記画像に写る前記識別子の上に表示させる
ステップを含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理端末、情報処理方法、およびプログラムに関し、特に、識別子を認識できなくなった場合でも、識別子に対応する情報を表示させ続けることができるようにした情報処理端末、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、拡張現実感（AR(Augmented Reality)）に関する技術が注目されている。ARのアプリケーションには、いわゆるスマートフォンなどでユーザによって撮影された画像に写る対象を認識し、認識した対象に関する情報を撮影画像に重ねて表示するものがある。
【０００３】
ユーザは、例えば商品の広告のポスターに印刷された二次元マーカーを撮影したときにディスプレイ上のポスターの画像に重ねて表示される情報から、商品の詳細を確認することができる。二次元マーカーは、白の領域と黒の領域のパターンによって所定の情報を表すものである。表現したい情報をコード化することによって、白の領域と黒の領域のパターンが決定される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２０４０４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
二次元マーカーを認識して情報を表示するようなマーカー型ARのアプリケーションにおいては、当然、撮影した画像に二次元マーカーが写っている必要がある。
【０００６】
従って、例えば二次元マーカーを認識している間、二次元マーカーに対応する情報を表示し続けるような場合、それまで写っていた二次元マーカーが画像から外れてしまうと、二次元マーカーの認識が途切れてしまい、情報の表示が終了してしまう。
【０００７】
本技術はこのような状況に鑑みてなされたものであり、識別子を認識できなくなった場合でも、識別子に対応する情報を表示させ続けることができるようにするものである。
【課題を解決するための手段】
【０００８】
本技術の一側面の情報処理端末は、画像に写る識別子を認識する認識部と、前記識別子に対応する3Dオブジェクトのデータを取得する取得部と、前記画像に基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変えるとともに、前記識別子を認識できなくなった場合、前記識別子を最後に認識できたタイミングから、所定の時間内の期間、または所定の値以上の計測値がセンサデータとして計測されるまでの期間だけ、前記センサデータに基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変える処理部と、前記識別子と情報処理端末自身の位置関係に応じて向きを変えた前記3Dオブジェクトを、前記画像に重ねて、前記画像に写る前記識別子の上に表示させる表示制御部とを備える。オブジェクトの向きだけでなく、オブジェクトの表示サイズを変更することも可能である。
【０００９】
撮影部をさらに設けることができる。この場合、前記認識部には、前記撮影部により撮影された前記画像に写る前記識別子を認識させることができる。
【００１０】
前記処理部には、前記識別子を認識できなくなった場合、最後に前記識別子を認識できたとき以降に検出された前記センサデータに基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変えさせることができる。
【００１１】
前記センサデータを検出するセンサ部をさらに設けることができる。
【００１２】
前記センサ部はジャイロセンサにより構成されるようにすることができる。
【００１３】
前記識別子は、色の異なる領域から構成される二次元のコードであるようにすることができる。
【００１４】
本技術の一側面においては、画像に写る識別子が認識され、前記識別子に対応する3Dオブジェクトのデータが取得される。また、前記画像に基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変えるとともに、前記識別子を認識できなくなった場合、前記識別子を最後に認識できたタイミングから、所定の時間内の期間、または所定の値以上の計測値がセンサデータとして計測されるまでの期間だけ、前記センサデータに基づいて特定される前記識別子と情報処理端末自身の位置関係に応じて前記3Dオブジェクトの向きを変える処理が行われ、前記識別子と情報処理端末自身の位置関係に応じて向きを変えた前記3Dオブジェクトが、前記画像に重ねて、前記画像に写る前記識別子の上に表示される。
【発明の効果】
【００１５】
本技術によれば、識別子を認識できなくなった場合でも、識別子に対応する情報を表示させ続けることができる。
【図面の簡単な説明】
【００１６】
【図１】情報処理端末の正面の構成例を示す図である。
【図２】情報処理端末の背面の構成例を示す図である。
【図３】二次元マーカーの例を示す図である。
【図４】3Dオブジェクトの例を示す図である。
【図５】二次元マーカーが印刷された紙が置かれている実空間を示す斜視図である。
【図６】表示部の表示例を示す図である。
【図７】表示部の他の表示例を示す図である。
【図８】表示部のさらに他の表示例を示す図である。
【図９】情報処理端末と二次元マーカーの位置の関係について説明する図である。
【図１０】表示部の表示例を示す図である。
【図１１】情報処理端末のハードウェア構成例を示す図である。
【図１２】ジャイロセンサが計測する角速度について説明する図である。
【図１３】制御部の機能構成例を示すブロック図である。
【図１４】情報処理端末による3Dオブジェクト表示処理について説明するフローチャートである。
【図１５】図１４のステップＳ６において行われる回転行列計算処理について説明するフローチャートである。
【図１６】座標系の例を示す図である。
【図１７】センサデータに基づく回転行列の計算について説明する図である。
【図１８】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
＜情報処理端末の外観構成＞
図１は、本技術の一実施形態に係る情報処理端末の外観の例を示す図である。
【００１８】
情報処理端末１はいわゆるスマートフォンなどの、ユーザが片手で把持可能な大きさの筐体を有する携帯端末である。情報処理端末１の筐体の正面１ＡにはLCD(Liquid Crystal Display)などよりなる表示部１１が設けられる。表示部１１にはタッチパネルが積層して設けられており、ユーザは、表示部１１に表示されるボタンなどに指で直接触れて各種の操作を行うことができる。
【００１９】
情報処理端末１の筐体の背面１Ｂには、図２に示すようにカメラ１２が設けられる。カメラ１２により取り込まれた画像（キャプチャ画像）は表示部１１にリアルタイムで表示される。ユーザは、表示部１１の表示を見て、キャプチャ画像に写る対象を確認することができる。
【００２０】
このような外観構成を有する情報処理端末１には二次元マーカーの認識機能が搭載されている。キャプチャ画像に写る二次元マーカーを認識したとき、情報処理端末１は、認識した二次元マーカーに対応する情報を取得し、取得した情報をキャプチャ画像に重ねて表示させる。
【００２１】
後述するように、二次元マーカーに対応する情報として3Dオブジェクトのデータがインターネットなどを介して取得され、キャプチャ画像に重ねて表示される。3Dオブジェクトの向きと位置が、二次元マーカーと情報処理端末１の位置関係によって変化する。
【００２２】
＜二次元マーカーの例＞
図３は、二次元マーカーの例を示す図である。
【００２３】
二次元マーカー２１は、破線で示す範囲内に白の領域と黒の領域が配置されることによって構成される。ほぼ正方形の形状を有する黒の領域であるマークＭ１は二次元マーカー２１の左上隅を表し、マークＭ２は二次元マーカー２１の左下隅を表す。マークＭ３は二次元マーカー２１の右下隅を表し、マークＭ４は二次元マーカー２１の右上隅を表す。マークＭ２とマークＭ３の下に配置され、長手方向の長さが二次元マーカー２１の左右方向の長さとほぼ同じ長さの長方形の形状を有するマークＭ５は、二次元マーカー２１の向きの基準を表す。
【００２４】
情報処理端末１は、キャプチャ画像に二次元マーカー２１が写っている場合、マークＭ１〜Ｍ４の位置から、実空間上の二次元マーカー２１の範囲を特定することができる。また、情報処理端末１は、マークＭ５の位置から、実空間上の二次元マーカー２１の向きを特定することができる。
【００２５】
マークＭ１とマークＭ２の間に配置されるマークＭ１１の形状と、マークＭ２とマークＭ３の間に配置されるマークＭ１２の形状が識別情報を表す。情報処理端末１は、マークＭ１１の形状とマークＭ１２の形状を認識し、認識した形状により表される識別情報に対応する3Dオブジェクトのデータを二次元マーカー２１に対応する情報として取得する。なお、二次元マーカー２１による識別情報の表現方法はマークＭ１２の形状を用いた方法に限定されるものではなく、他の方法であってもよい。また、特定の3Dオブジェクトだけを表示する場合、識別情報は不要となる。
【００２６】
＜3Dオブジェクトの表示例＞
図４は、3Dオブジェクトの例を示す図である。
【００２７】
図４に示すオブジェクト３１は、デジタルスチルカメラの外観を有する3Dオブジェクトである。情報処理端末１には、図４のデジタルスチルカメラを様々な角度から見たときの外観のデータがオブジェクト３１のデータとしてインターネットなどを介して取得され、用意されている。オブジェクト３１の正面にはレンズなどが設けられ、上面にはシャッタボタンが設けられている。
【００２８】
例えば、ユーザが情報処理端末１のカメラ１２を図３の二次元マーカー２１に向けたとき、キャプチャ画像に写る二次元マーカー２１が情報処理端末１により認識される。情報処理端末１の表示部１１には、キャプチャ画像上に図４のオブジェクト３１が重ねて表示される。
【００２９】
図５は、二次元マーカー２１が印刷された紙が置かれている実空間を示す斜視図である。
【００３０】
机などの水平面上に置かれた紙Ｐには、マークＭ５の長手方向の辺が紙Ｐの下辺とほぼ平行になるように二次元マーカー２１が印刷されている。ユーザは、このような状態で用意される二次元マーカー２１にカメラ１２を向け、二次元マーカー２１を情報処理端末１に認識させることになる。
【００３１】
以下、適宜、図５の左右方向をＸ軸方向（右方向を＋、左方向を−）、左下から右上に向かう方向をＹ軸方向（右上方向を＋、左下方向を−）、上下方向をＺ軸方向（上方向を＋、下方向を−）として説明する。カメラ１２の位置を基準とすると、白抜き矢印＃１の方向は二次元マーカー２１を斜め上から＋Ｙ方向に見る方向であり、白抜き矢印＃２の方向は二次元マーカー２１を斜め上から−Ｘ方向に見る方向である。
【００３２】
図６は、図５の二次元マーカー２１が認識されたときの表示部１１の表示例を示す図である。
【００３３】
図６は、表示部１１のほぼ中央に二次元マーカー２１がくるように、カメラ１２を図５の白抜き矢印＃３の方向に向けた状態で撮影が行われた場合の表示例を示している。二次元マーカー２１が認識されることによって、キャプチャ画像中の二次元マーカー２１が写っている位置の近くには、実空間上で二次元マーカー２１上に若干浮いているような状態のオブジェクト３１が表示されている。
【００３４】
オブジェクト３１の向きは、レンズなどが設けられている正面がマークＭ５に向くような向きになっている。オブジェクト３１は、常に、正面がマークＭ５に向くような状態で表示される。これにより、ユーザは、図５に示す状態の二次元マーカー２１を撮影することによって、オブジェクト３１が表すデジタルスチルカメラの正面を若干右斜め上の位置から見ることができる。
【００３５】
図７は、表示部１１のほぼ中央に二次元マーカー２１がくるように、カメラ１２を図５の白抜き矢印＃１の方向に向けた状態で撮影が行われた場合の表示例を示している。この例の場合、キャプチャ画像に重ねて表示されるオブジェクト３１は、デジタルスチルカメラのほぼ正面を、斜め上の位置から見たものになる。
【００３６】
図８は、表示部１１のほぼ中央に二次元マーカー２１がくるように、カメラ１２を図５の白抜き矢印＃２の方向に向けた状態で撮影が行われた場合の表示例を示している。この例の場合、キャプチャ画像に重ねて表示されるオブジェクト３１は、デジタルスチルカメラの右側面を、斜め上の位置から見たものになる。
【００３７】
このように、情報処理端末１にはデジタルスチルカメラを様々な位置から見たときのデータが用意されており、キャプチャ画像に重ねて表示されるオブジェクト３１の向きと位置が、情報処理端末１と二次元マーカー２１の位置関係に応じて変化する。
【００３８】
ユーザは、撮影位置を変え、紙Ｐに印刷された二次元マーカー２１を様々な位置から撮影することによって、その位置に応じたデジタルスチルカメラの外観を見ることができる。図示は省略するが、例えばマークＭ５を奥にして、マークＭ１とマークＭ４が手前にくるようにして二次元マーカー２１を撮影することによって、ユーザは、デジタルスチルカメラの背面を見ることができる。
【００３９】
図６〜図８のようなオブジェクト３１の表示は、二次元マーカー２１が認識されている間、リアルタイムで続けて行われる。撮影範囲から二次元マーカー２１が外れないように位置を変えてキャプチャ画像の撮影が行われている場合、キャプチャ画像に写る二次元マーカー２１の向きに応じて、順次、異なる方向から見たオブジェクト３１が表示されることになる。
【００４０】
また、オブジェクト３１の表示は、二次元マーカー２１を認識できなくなった後においても、ジャイロセンサなどのセンサデータより推定される情報処理端末１と二次元マーカー２１の位置関係に応じて続けられる。情報処理端末１にはジャイロセンサなどのセンサが設けられている。
【００４１】
図９は、情報処理端末１と二次元マーカー２１の位置の関係について説明する図である。図９は、図５の環境を、机の上面の高さと同じ高さから−Ｘ方向に見た断面図である。
【００４２】
例えば、二次元マーカー２１を真正面から撮影可能な位置である位置ｐ１に情報処理端末１がある場合、表示部１１には、真上から見た状態のオブジェクト３１がキャプチャ画像に重ねて表示される。位置ｐ１は、カメラ１２の光軸Ｌが、二次元マーカー２１面（二次元マーカー２１が印刷された紙Ｐが置かれた水平面）の垂線と平行になる位置である。なお、図９に示すオブジェクト３１は実空間にあるものではなく、情報処理端末１からの見え方を説明するために示すものである。
【００４３】
二次元マーカー２１との距離を固定とし、カメラ１２を二次元マーカー２１に向けたまま、矢印Ａ１で示すように情報処理端末１の位置を位置ｐ１から水平面に近づけた場合について説明する。この場合、オブジェクト３１の見え方は、キャプチャ画像から特定される情報処理端末１と二次元マーカー２１の位置関係に応じて、オブジェクト３１の正面が徐々に見えてくるように変化する。例えばカメラ１２が位置ｐ２にあるとき、表示部１１には、図７に示す見え方のオブジェクト３１が表示される。
【００４４】
情報処理端末１を水平面に近づけ、情報処理端末１の位置が位置ｐ３を超えたとき、情報処理端末１は、キャプチャ画像に写る二次元マーカー２１を認識できなくなる。位置ｐ３は、カメラ１２の光軸Ｌと水平面との角度が角度αとなる位置である。キャプチャ画像に写る二次元マーカー２１の歪みが大きくなることによって、位置ｐ３が、二次元マーカー２１を認識できる限界の位置となる。
【００４５】
位置ｐ３を超えたとき、情報処理端末１は、最後に二次元マーカー２１を認識できたとき以降の自身の位置の変化をセンサデータに基づいて特定し、現在の情報処理端末１と二次元マーカー２１の位置関係に応じてオブジェクト３１の表示を続ける。
【００４６】
図１０は、情報処理端末１の位置が位置ｐ３より低い位置にあるときの表示部１１の表示例を示す図である。この場合、キャプチャ画像に重ねて表示されるオブジェクト３１は、図７の位置より低い位置から、デジタルスチルカメラのほぼ真正面を見たものになる。
【００４７】
これにより、情報処理端末１は、二次元マーカー２１の認識限界位置である位置ｐ３より低い位置から見た状態のオブジェクト３１を表示させることが可能になる。すなわち、ジャイロセンサなどのセンサの計測値が、キャプチャ画像に基づいて特定された二次元マーカー２１と情報処理端末１の位置関係の補正に用いられ、オブジェクト３１の表示が続けられることになる。
【００４８】
以上のようにしてオブジェクト３１を表示させる情報処理端末１の一連の処理についてはフローチャートを参照して後述する。
【００４９】
＜情報処理端末１の構成例＞
図１１は、情報処理端末１のハードウェア構成例を示す図である。
【００５０】
情報処理端末１には、上述した表示部１１、カメラ１２の他に、制御部５１、ジャイロセンサ５２、メモリ５３、および通信部５４が設けられる。
【００５１】
制御部５１は、メモリ５３などに記憶されているプログラムを実行し、情報処理端末１の全体の動作を制御する。例えば、制御部５１は、カメラ１２から供給されたキャプチャ画像に写る二次元マーカー２１を認識できたとき、二次元マーカー２１により表される識別情報に対応する3Dオブジェクトのデータを取得する。制御部５１は、情報処理端末１と二次元マーカー２１の位置の関係をキャプチャ画像に基づいて特定し、特定した関係に応じて向きと位置を変えた3Dオブジェクトをキャプチャ画像に重ねて表示部１１に表示させる。
【００５２】
また、制御部５１は、二次元マーカー２１を認識できなくなったとき、最後に二次元マーカー２１を認識できたときの状態を基準として、現在の情報処理端末１と二次元マーカー２１の位置関係をジャイロセンサ５２の出力に基づいて特定する。制御部５１は、情報処理端末１と二次元マーカー２１の位置関係に応じて3Dオブジェクトの向きと位置を変え、3Dオブジェクトをキャプチャ画像に重ねて表示部１１に表示させることを、二次元マーカー２１を認識できなくなった後も続ける。
【００５３】
ジャイロセンサ５２は、図１２に示すように、Ｘ軸、Ｙ軸、Ｚ軸のそれぞれの軸周りに生じた角速度を計測し、計測値をセンサデータとして制御部５１に出力する。
【００５４】
メモリ５３はフラッシュメモリなどよりなり、制御部５１により実行されるプログラムや、インターネット上のサーバから送信されてきた3Dオブジェクトのデータを記憶する。メモリ５３に記憶されたデータは制御部５１により適宜読み出される。
【００５５】
通信部５４は、制御部５１による制御に従って外部の装置と通信を行う。例えば、通信部５４は、インターネットを介してサーバと通信を行い、二次元マーカー２１により表される識別情報に対応する3Dオブジェクトのデータの送信を要求する。通信部５４は、要求に応じてサーバから送信されてきたデータを受信し、制御部５１に出力する。制御部５１に出力されたデータは、表示部１１の表示に用いられるとともに、メモリ５３に供給され、保存される。
【００５６】
図１３は、制御部５１の機能構成例を示すブロック図である。図１３に示す機能部のうちの少なくとも一部は、図１１の制御部５１により所定のプログラムが実行されることによって実現される。
【００５７】
制御部５１においては、画像解析部６１、マーカー認識部６２、オブジェクトデータ取得部６３、回転行列計算部６４、回転処理部６５、および表示制御部６６が実現される。カメラ１２により取り込まれたキャプチャ画像は画像解析部６１と表示制御部６６に入力される。
【００５８】
画像解析部６１は、キャプチャ画像を解析し、二次元マーカー２１の位置を取得する。画像解析部６１により取得される二次元マーカー２１の位置の情報には、二次元マーカー２１を構成するそれぞれの黒の領域の位置に関する情報が含まれる。画像解析部６１により取得された二次元マーカー２１の位置に関する情報は、キャプチャ画像の解析結果としてマーカー認識部６２と回転行列計算部６４に供給される。
【００５９】
マーカー認識部６２は、画像解析部６１の解析結果に基づいて二次元マーカー２１の認識を行う。マーカー認識部６２は、二次元マーカー２１を認識できたとき、そのことを表す情報を回転行列計算部６４に出力するとともに、二次元マーカー２１により表される識別情報をオブジェクトデータ取得部６３に出力する。また、マーカー認識部６２は、二次元マーカー２１を認識できなくなったとき、そのことを表す情報を回転行列計算部６４に出力する。
【００６０】
オブジェクトデータ取得部６３は、マーカー認識部６２から供給された識別情報に対応する3Dオブジェクトのデータをメモリ５３から読み出すことによって、または、通信部５４を制御してサーバと通信を行うことによって取得する。オブジェクトデータ取得部６３は、取得した3Dオブジェクトのデータを回転処理部６５に出力する。
【００６１】
回転行列計算部６４は、マーカー認識部６２により二次元マーカー２１の認識が行われている場合、画像解析部６１の解析結果に基づいて、キャプチャ画像に重ねて表示させる3Dオブジェクトの向きの回転量と位置の変換量を表す回転行列を計算する。マーカー認識部６２により二次元マーカー２１の認識が行われている場合に求められる回転行列は、キャプチャ画像に基づいて特定される、情報処理端末１と二次元マーカー２１の位置の関係に応じたものになる。回転行列の計算については後述する。
【００６２】
また、回転行列計算部６４は、二次元マーカー２１を認識できなくなった場合、ジャイロセンサ５２から供給されるセンサデータに基づいて回転行列を計算する。二次元マーカー２１の認識ができなくなった場合に求められる回転行列は、センサデータに基づいて特定される現在の情報処理端末１と二次元マーカー２１の位置の関係に応じたものになる。
【００６３】
回転行列計算部６４は、計算により求めた回転行列を回転処理部６５に出力する。
【００６４】
回転処理部６５は、回転行列計算部６４により求められた回転行列を、オブジェクトデータ取得部６３から供給されたデータにより表される3Dオブジェクトに適用し、回転行列適用後の3Dオブジェクトのデータを表示制御部６６に出力する。回転行列を適用することによって、3Dオブジェクトの向きと位置が情報処理端末１と二次元マーカー２１の位置の関係に応じて変わることになる。
【００６５】
表示制御部６６は、回転処理部６５から供給された回転行列適用後の3Dオブジェクトをキャプチャ画像に重ねて表示部１１に表示させる。
【００６６】
＜情報処理端末１の動作＞
ここで、図１４のフローチャートを参照して、情報処理端末１による3Dオブジェクトの表示処理について説明する。
【００６７】
図１４の処理は、例えば、表示部１１に表示されるメニュー画面から、二次元マーカー２１の認識機能を有するアプリケーションの起動が指示された後に開始される。アプリケーションが起動したとき、カメラ１２によるキャプチャ画像の取り込みが開始される。ジャイロセンサ５２においては所定の周期で角速度が繰り返し計測される。
【００６８】
ステップＳ１において、カメラ１２はキャプチャ画像を取得する。
【００６９】
ステップＳ２において、画像解析部６１は、カメラ１２により取得されたキャプチャ画像を解析し、二次元マーカー２１の位置を取得する。
【００７０】
ステップＳ３において、マーカー認識部６２は、画像解析部６１の解析結果に基づいて二次元マーカー２１の認識を行う。
【００７１】
ステップＳ４において、マーカー認識部６２は、二次元マーカー２１を認識できたか否かを判定する。
【００７２】
二次元マーカー２１を認識できたとステップＳ４において判定された場合、ステップＳ５において、オブジェクトデータ取得部６３は、二次元マーカー２１により表される識別情報に対応する3Dオブジェクトのデータを取得する。二次元マーカー２１を認識できた場合、マーカー認識部６２からオブジェクトデータ取得部６３に対しては、二次元マーカー２１の認識結果である識別情報が供給される。
【００７３】
ステップＳ６において、回転行列計算部６４は回転行列計算処理を行う。回転行列計算処理については図１５のフローチャートを参照して後述する。回転行列計算処理により、3Dオブジェクトの向きの回転と位置の変換に用いられる行列が回転行列計算部６４により求められる。
【００７４】
ステップＳ７において、回転処理部６５は、回転行列計算処理により求められた回転行列を、オブジェクトデータ取得部６３から供給されたデータにより表される3Dオブジェクトに適用する。
【００７５】
ステップＳ８において、表示制御部６６は、回転行列適用後の3Dオブジェクトをキャプチャ画像に重ねて表示部１１に表示させる。
【００７６】
一方、二次元マーカー２１を認識できなかったとステップＳ４において判定された場合、ステップＳ９において、回転行列計算部６４は、ジャイロ補正、すなわちジャイロセンサ５２の出力に基づく情報処理端末１と二次元マーカー２１の位置関係の補正を行う期間であるか否かを判定する。例えば、二次元マーカー２１を最後に認識できたタイミングから所定の時間内の期間、または、所定の値以上の角速度が計測されるまでの期間が、ジャイロ補正を行う期間として設定される。
【００７７】
ジャイロ補正を行う期間内であるとステップＳ９において判定した場合、ステップＳ１０において、回転行列計算部６４は、ジャイロセンサ５２の現在の測定値と直前の測定値との差分を計算する。
【００７８】
ステップＳ１１において、回転行列計算部６４は、計算により求めた差分に基づいて回転行列を計算する。ここで求められる回転行列は、ジャイロセンサ５２の測定値の差分により表される情報処理端末１の位置の変化から推定される、現在の情報処理端末１と二次元マーカー２１の位置関係に応じた3Dオブジェクトの向きの回転量と位置の変換量を表すものになる。3Dオブジェクトの回転の基軸は、二次元マーカー２１を最後に認識できたときのもので固定しておいてもよい。
【００７９】
ジャイロセンサ５２の現在の測定値と直前の測定値との差分に基づいて回転行列が求められた後、ステップＳ７以降の処理が行われる。すなわち、現在の測定値と直前の測定値との差分に基づいて求められた回転行列が3Dオブジェクトに適用され、回転行列適用後の3Dオブジェクトがキャプチャ画像に重ねて表示される。
【００８０】
回転行列適用後の3DオブジェクトがステップＳ８においてキャプチャ画像に重ねて表示された後、または、ステップＳ９においてジャイロ補正を行う期間内ではないと判定された場合、処理は終了される。
【００８１】
以上の処理が、キャプチャ画像が取得される毎に繰り返し行われ、図６〜図８、および図９を参照して説明したようなオブジェクト３１の表示が実現される。ユーザは、キャプチャ画像に基づく二次元マーカー２１の認識限界位置である位置ｐ３より低い位置にカメラ１２の位置を移動させた場合であっても、その位置から見た状態のオブジェクト３１を表示させ、確認することが可能になる。
【００８２】
次に、図１５のフローチャートを参照して、図１４のステップＳ６において行われる回転行列計算処理について説明する。
【００８３】
回転行列計算処理は、三次元空間（実空間）における二次元マーカー２１の座標系であるマーカー座標系を、同じ三次元空間における情報処理端末１の座標系であるカメラ座標系に変換するための４×４行列を計算する処理である。
【００８４】
ここで、二次元マーカー２１の四隅を示すマークＭ１〜Ｍ４のキャプチャ画像における中心位置の座標が、画像解析部６１による解析結果に基づいて特定されているものとする。
【００８５】
また、変換先となるカメラ座標系を、キャプチャ画像の右方向を＋Ｘ方向、キャプチャ画像の下方向を＋Ｙ方向、キャプチャ画像の奥行き方向を＋Ｚ方向で表される座標系とする。原点はカメラ１２の位置である。
【００８６】
さらに、変換元となるマーカー座標系を、図３の向きを基準として二次元マーカー２１の右方向を＋Ｘ方向、二次元マーカー２１の下方向を＋Ｙ方向、二次元マーカー２１の表面から裏面へ向かう方向を＋Ｚ方向で表される座標系とする。原点は二次元マーカー２１の中央である。二次元マーカー２１のサイズを長さ１×１で表されるサイズとする。
【００８７】
キャプチャ画像の２次元の座標を、右方向を＋Ｘ方向、下方向を＋Ｙ方向で表される座標とする。キャプチャ画像の中央位置を原点とする。
【００８８】
三次元空間におけるカメラ位置をOとする。また、二次元マーカー２１の左上隅のマークＭ１、左下隅のマークＭ２、右下隅のマークＭ３、および右上隅のマークＭ４をそれぞれ点A,B,C,Dとする。マーカー座標系では、点A,B,C,DはそれぞれA=(-0.5,-0.5), B=(-0.5,0.5), C=(0.5,0.5), D=(0.5,-0.5)で表される。点A,B,C,Dを、キャプチャ画像中では点A2,B2,C2,D2とする。
【００８９】
ステップＳ２１において、回転行列計算部６４は、図１６に示すようにカメラ座標系にZ=Z1（Z1は正の定数）の平面を規定し、この平面上に点A2,B2,C2,D2を投影する。投影した平面上の点をそれぞれ点A3,B3,C3,D3とする。カメラ位置Oと点A3,B3,C3,D3より、△OA3B3, OB3C3, OC3D3, OD3A3の４つの三角形が規定される。
【００９０】
ステップＳ２２において、回転行列計算部６４は、規定した４つの三角形の法線ベクトルを外積計算により求める。△OA3B3, OB3C3, OC3D3, OD3A3のそれぞれの法線ベクトルをVab, Vbc, Vcd, Vdaとする。
【００９１】
ステップＳ２３において、回転行列計算部６４は、外積Vab×VcdとVbc×Vdaを計算し、それぞれの計算結果をV1, V2とする。また、回転行列計算部６４はV1×V2を行い、計算結果をV3とする。ベクトルV3が、平面ABCDの法線ベクトル、すなわちマーカー座標系のＺ軸となる。
【００９２】
ステップＳ２４において、回転行列計算部６４は、カメラ位置Oと、点A3とC3を結ぶ対角線の両端より△OA3C3を規定するとともに、カメラ位置Oと、点B3とD3を結ぶ対角線の両端より△OB3D3を規定する。また、回転行列計算部６４は、規定した２つの三角形の法線ベクトルを外積計算によって求め、求めた法線ベクトルをそれぞれVac, Vbdとする。
【００９３】
ステップＳ２５において、回転行列計算部６４は、外積Vac×V3とVbd×V3を計算し、それぞれの計算結果を対角線ベクトルV4, V5とする。
【００９４】
ステップＳ２６において、回転行列計算部６４は、対角線ベクトルV4, V5の和V4＋V5を求め、ベクトルABとする。ベクトルABがマーカー座標系のＹ軸となる。
【００９５】
ステップＳ２７において、回転行列計算部６４は、対角線ベクトルV4, V5の差V4−V5を求め、ベクトルADとする。ベクトルADがマーカー座標系のＸ軸となる。これにより、二次元マーカー２１のＸ,Ｙ,Ｚ軸の各方向の単位ベクトルが求められた状態になる。
【００９６】
ステップＳ２８において、回転行列計算部６４は、それぞれの単位ベクトルを３方向の要素成分により(x1,x2,x3), (y1,y2,y3), (z1,z2,z3)とし、以下の（１）の４×４行列である回転行列を求める。その後、図１４のステップＳ６に戻り、それ以降の処理が行われる。
【数１】
0005387668.tif 000002
【００９７】
＜４×４行列について＞
以上のようにして求められる４×４行列について説明する。４×４行列は、三次元座標における回転と平行移動（座標の変換）を示すために使用される表現の一つである。
【００９８】
４×４行列の作成手順は以下の３つのステップからなる。
１．回転変換を構成する３×３行列の作成
２．平行移動を構成する３×１行列の作成
３．２つの行列を合成して４×４行列の作成
【００９９】
［１．回転変換を構成する３×３行列の作成］
三次元座標をx,y,zの三つの成分を持つ３行１列ベクトルで表現すると、回転前の３×１ベクトルを回転後の３×１ベクトルに変換する計算は、３×３行列の右側に回転前ベクトルを掛け合わせる下式（２）として表される。
【数２】
0005387668.tif 000003
【０１００】
［２．平行移動を構成する３×１行列の作成］
［x' y' z'］の３成分を持つベクトルを平行移動することは、平行移動成分［x1 y1 z1］のベクトルを加算することに等しい。移動後ベクトル［x'' y'' z''］は下式（３）として表される。
【数３】
0005387668.tif 000004
【０１０１】
［３．２つの行列を合成して４×４行列の作成］
回転変換と平行移動を一度の行列計算で行う手法が存在する。３次元ベクトルに４つ目の成分１を加えて４×１ベクトル［x y z 1］が作成される。４×４行列の１〜３行目かつ１〜３列目に３×３の回転変換行列が代入され、１〜３行目かつ４列目の１〜３行目に平行移動ベクトルが代入される。４×４行列の４行目には、１〜３列目に0が代入され、４列目に１が代入される。結果として求まる行列は、４×１ベクトル［x y z 1］を回転した後に平行移動して［x'' y'' z'' 1］に変換する行列として作用することになる。［x'' y'' z'' 1］への変換式は下式（４）のようになる。
【数４】
0005387668.tif 000005
【０１０２】
＜センサデータに基づく回転行列の計算＞
ここで、センサデータに基づく回転行列の計算について説明する。図１７は、センサデータに基づく回転行列の計算と、計算により求めた回転行列を用いた描画の流れの具体例を示す図である。
【０１０３】
図１７の処理（１）は現在のジャイロセンサ５２の計測値を取得する処理である。また、処理（２）はジャイロセンサ５２の現在の計測値と直前の計測値から回転を表す３×３行列を計算する処理である。処理（１）と（２）を合わせた処理が、上述した図１４のステップＳ１０，Ｓ１１の処理に相当する。
【０１０４】
処理（２）により求められる回転を表す３×３行列は下の（５）として表される。
【数５】
0005387668.tif 000006
【０１０５】
図１７の処理（３）は、回転を表す回転行列の値から４×４行列を作成する処理である。処理（３）により求められる４×４行列は下の（６）として表される。
【数６】
0005387668.tif 000007
【０１０６】
図１７の処理（４）は、４×４行列を用いた3Dオブジェクトの描画処理である。処理（４）が、図１４のステップＳ１０，Ｓ１１の処理が行われた後に行われるステップＳ７，Ｓ８の処理に相当する。
【０１０７】
＜変形例＞
デジタルスチルカメラの外観を有するオブジェクト３１の表示の切り替えについて説明したが、当然、二次元マーカー２１を認識したときに表示される3Dオブジェクトはデジタルカメラの外観を有するオブジェクトに限られるものではない。
【０１０８】
また、二次元マーカー２１を認識できなくなった後に情報処理端末１と二次元マーカー２１の位置関係の補正に用いるセンサデータがジャイロセンサ５２の出力であるものとしたが、加速度センサや地磁気センサなどの他のセンサの出力であってもよい。
【０１０９】
認識する対象が二次元マーカーであるものとしたが、キャプチャ画像に写る他の識別子を認識し、認識した識別子に対応する3Dオブジェクトを表示する場合にも上述した技術は適用可能である。識別子として認識する対象には、一次元のバーコードの他に、キャプチャ画像に写る人の顔や建物などがある。
【０１１０】
3Dオブジェクトの向きと位置の変換が４×４行列を用いて行われるものとしたが、3Dオブジェクトの向きと位置を情報処理端末１と二次元マーカー２１の位置関係に応じて変えるものであれば他の方法を用いて行われるようにしてもよい。
【０１１１】
［コンピュータの構成例］
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０１１２】
図１８は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０１１３】
CPU(Central Processing Unit)１０１、ROM(Read Only Memory)１０２、RAM(Random Access Memory)１０３は、バス１０４により相互に接続されている。
【０１１４】
バス１０４には、さらに、入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、キーボード、マウスなどよりなる入力部１０６、ディスプレイ、スピーカなどよりなる出力部１０７が接続される。また、入出力インタフェース１０５には、ハードディスクや不揮発性のメモリなどよりなる記憶部１０８、ネットワークインタフェースなどよりなる通信部１０９、リムーバブルメディア１１１を駆動するドライブ１１０が接続される。
【０１１５】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、記憶部１０８に記憶されているプログラムを入出力インタフェース１０５及びバス１０４を介してRAM１０３にロードして実行することにより、上述した一連の処理が行われる。
【０１１６】
CPU１０１が実行するプログラムは、例えばリムーバブルメディア１１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供され、記憶部１０８にインストールされる。
【０１１７】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１１８】
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１２０】
例えば、本技術は、１つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０１２１】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０１２２】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【符号の説明】
【０１３２】
１  情報処理端末，  １１  表示部，  １２  カメラ，  ５１  制御部，  ５２  ジャイロセンサ，  ５３  メモリ，  ５４  通信部，  ６１  画像解析部，  ６２  マーカー認識部，  ６３  オブジェクトデータ取得部，  ６４  回転行列計算部，  ６５  回転処理部，  ６６  表示制御部
【図１】
0005387668.tif 000008
【図２】
0005387668.tif 000009
【図３】
0005387668.tif 000010
【図４】
0005387668.tif 000011
【図５】
0005387668.tif 000012
【図６】
0005387668.tif 000013
【図７】
0005387668.tif 000014
【図８】
0005387668.tif 000015
【図９】
0005387668.tif 000016
【図１０】
0005387668.tif 000017
【図１１】
0005387668.tif 000018
【図１２】
0005387668.tif 000019
【図１３】
0005387668.tif 000020
【図１４】
0005387668.tif 000021
【図１５】
0005387668.tif 000022
【図１６】
0005387668.tif 000023
【図１７】
0005387668.tif 000024
【図１８】
0005387668.tif 000025