(57)【要約】【課題】仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにする。【解決手段】画像処理装置３００において、記憶部３０１には仮想空間に配置されるオブジェクトの位置と姿勢と、仮想視点の位置と、仮想視点の位置から仮想空間を見る仮想視線の向きとが記憶される。検知部３０２は、現実空間におけるユーザの第１の部位の位置と姿勢と、ユーザの第２の部位の位置と姿勢を検知する。変化部３０３は、検知された第１の部位の位置と姿勢に基づいてオブジェクトの位置と姿勢を変化させ、検知された第２の部位の第１の部位に対する相対的な位置と姿勢に基づいて仮想視点の位置と仮想視線の向きを変化させる。画像生成部３０４は、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。表示部３０５は、生成された画像を表示する。【選択図】図３
2011191899.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される記憶部と、
現実空間におけるユーザの第１の部位の位置と姿勢と、当該ユーザの第２の部位の位置と姿勢と、を検知する検知部と、
前記検知された第１の部位の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された第２の部位の前記第１の部位に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる変化部と、
前記仮想視点の位置から前記仮想視線の向きに前記オブジェクトを見た様子を表す画像を生成する画像生成部と、
前記生成された画像を前記現実空間におけるモニター画面に表示する表示部と、
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記変化部は、前記検知された第２の部位の位置と姿勢とに基づいて、前記ユーザの視点から現実世界を見るときの視線（以下「ユーザ視線」という。）の位置と向きを推定し、
前記画像生成部は、前記ユーザ視線の位置又は向きが変化を始めてから所定時間内に前記ユーザ視線が前記モニター画面と交差した場合、前記ユーザ視線が前記モニター画面と交差している間、前記変化を始める前に前記記憶部に記憶されていた、前記オブジェクトの位置と姿勢と、前記仮想視点の位置と、前記仮想視線の向きと、に基づいて、前記オブジェクトを見た様子を表す画像を生成する、
ことを特徴とする画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記記憶部には、前記オブジェクトの位置と姿勢の履歴と、前記仮想視点の位置の履歴と、前記仮想視線の向きの履歴と、が記憶され、
前記画像生成部は、前記記憶された前記オブジェクトの位置と姿勢の履歴と、前記記憶された前記仮想視点の位置の履歴と、前記記憶された前記仮想視線の向きの履歴と、に基づいて、前記変化を始める前に前記オブジェクトを見た様子を表す画像を生成する、
ことを特徴とする画像処理装置。
【請求項４】
請求項１又は３に記載の画像処理装置であって、
前記変化部は、前記検知された第１の部位の位置と姿勢の各変化量の所定倍数量だけ、前記記憶される仮想視点の位置と仮想視線の向きとを変化させ、前記検知された第２の部位の位置と姿勢の相対的な各変化量の所定倍数量だけ、前記記憶されるオブジェクトの位置と姿勢とを変化させる、
ことを特徴とする画像処理装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の画像処理装置であって、
前記変化部は、前記検知された第１の部位の位置と姿勢とに基づいて前記第１の部位の表面の形状を近似する平面を求め、当該求められた平面を用いて前記オブジェクトの位置と姿勢とを決定する、
ことを特徴とする画像処理装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の画像処理装置であって、
前記変化部は、前記検知された第２の部位の位置と姿勢とに基づいて前記第２の部位の表面の形状を近似する平面を求め、当該求められた平面を用いて前記仮想視点の位置と前記仮想視線の向きとを決定する、
ことを特徴とする画像処理装置。
【請求項７】
請求項１乃至６のいずれか１項に記載の画像処理装置であって、
前記第１の部位は前記ユーザの手であり、前記第２の部位は前記ユーザの頭であり、
前記検知部は、現実空間における前記ユーザの手の位置と姿勢と、前記ユーザの頭の位置と姿勢と、を検知し、
前記変化部は、前記検知された手の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された頭の、手に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる、
ことを特徴とする画像処理装置。
【請求項８】
記憶部、検知部、変化部、画像生成部、表示部を有する画像処理装置にて実行される画像処理方法であって、
前記記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶され、
前記検知部が、現実空間におけるユーザの第１の部位の位置と姿勢と、当該ユーザの第２の部位の位置と姿勢と、を検知する検知ステップと、
前記変化部が、前記検知された第１の部位の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された第２の部位の前記第１の部位に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる変化ステップと、
前記画像生成部が、前記仮想視点の位置から前記仮想視線の向きに前記オブジェクトを見た様子を表す画像を生成する画像生成ステップと、
前記表示部が、前記生成された画像を前記現実空間におけるモニター画面に表示する表示ステップと、
を備えることを特徴とする画像処理方法。
【請求項９】
コンピュータを、
仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される記憶部、
現実空間におけるユーザの第１の部位の位置と姿勢と、当該ユーザの第２の部位の位置と姿勢と、を検知する検知部、
前記検知された第１の部位の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された第２の部位の前記第１の部位に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる変化部、
前記仮想視点の位置から前記仮想視線の向きに前記オブジェクトを見た様子を表す画像を生成する画像生成部、
前記生成された画像を前記現実空間におけるモニター画面に表示する表示部、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムに関する。
【背景技術】
【０００２】
人間などのモデルにマーカーを取り付け、このマーカーの動きを検出することによって、現実空間におけるモデルの動きをデジタル化して捉える、いわゆるモーションキャプチャーと呼ばれる技術がある。また、モデルの動きを１つ又は複数のカメラで撮影したり、周囲に照射した赤外線の飛行時間やその反射波の位相差を用いてモデルまでの距離（“深さ”とも言う。）を計測したりすることによって、モデルの動きを捉える技術もある。
【０００３】
現実空間の様子を捉えるこれらの技術は、例えば、仮想空間でのゲームにおいて、画面内のキャラクタをより自然に動かすために用いられる。特許文献１には、プレイヤーを撮影し、プレイヤーの所定の部位（例えば、頭部、両眼部など）を追尾することによって、より変化に富んだゲームを楽しめるようにした装置が開示されている。
【０００４】
一方で、ＣＡＤ（Computer Aided Design）のように、３次元仮想空間に配置した、製品や部品などといったオブジェクトを、様々な方向から眺めたり設計したりすることができるシステムが広く普及している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４１１７６８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、従来のＣＡＤシステムでは、ユーザは、仮想空間内のオブジェクトの位置や姿勢、あるいは、オブジェクトを見る位置（仮想視点）や方向（仮想視線）などを変えたい場合、キーボードやマウスなどの所定の入力装置を使って、所望のアングルになるように調節しなければならず、操作が面倒であったり操作が複雑で扱いにくかったりするという問題があった。
【０００７】
本発明はこのような課題を解決するものであり、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００９】
本発明の第１の観点に係る画像処理装置は、記憶部、検知部、変化部、画像生成部、表示部を備える。
記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される。
検知部は、現実空間におけるユーザの第１の部位の位置と姿勢と、当該ユーザの第２の部位の位置と姿勢と、を検知する。
変化部は、検知された第１の部位の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された第２の部位の第１の部位に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させる。
画像生成部は、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。
表示部は、生成された画像を現実空間におけるモニター画面に表示する。
【００１０】
仮想空間には、位置と姿勢が可変のオブジェクトが配置される。任意の立体がオブジェクトとなりえるが、例えば、オブジェクトは、ゲームに登場するキャラクター、飛行機の立体モデル、製品、部品、立体地形図などである。
現実空間には、オブジェクトの様子を表す画像を表示するためのモニターと、ユーザを撮影するカメラと、ユーザの所定の部位の位置と姿勢を検知するセンサーと、が配置される。所定の部位は、例えば、ユーザの手、指、頭、顔、足、胴体などである。
【００１１】
画像処理装置は、現実空間におけるユーザの第１の部位の位置と姿勢を検知する。第１の部位は、例えば、手である。また、画像処理装置は、現実空間におけるユーザの第２の部位の位置と姿勢を検知する。第２の部位は、例えば、頭である。第１の部位の位置と姿勢、及び、第２の部位の位置と姿勢は、定期的なタイミングで繰り返し検知される。
撮影された画像のパターンや特徴点を画像解析することにより、第１の部位と第２の部位のこの画像内における位置と形状が判別される。更に、画像処理装置から発射された照射波（例えば赤外線）の物体による反射波を検知し、照射波の飛行時間や位相差を解析することにより、画像処理装置から第１の部位と第２の部位までの距離（センサーからの“深さ”）が判別される。画像を解析した結果と、検知された深さと、に基づいて、現実空間における第１の部位と第２の部位の位置と姿勢が特定される。
【００１２】
本発明では、仮想空間におけるオブジェクトの動きが、現実空間におけるユーザの第１の部位と第２の部位の動きに連動するようになっている。ユーザが第１の部位の位置と姿勢を変えると、それに応じてオブジェクトの位置と姿勢が変わる。また、ユーザが第２の部位の位置と姿勢を変えると、それに応じてオブジェクトを見る視点（仮想視点）の位置とオブジェクトを見る視線（仮想視線）の向きが変わる。
【００１３】
従って、本発明によれば、ユーザは、仮想空間に配置されたオブジェクトを異なるアングルから眺めたい場合には、第１の部位の位置と姿勢を変えることによってオブジェクトの位置と姿勢を自由に変えればよいし、あるいは、第２の部位の位置と姿勢を変えることによって仮想視点の位置と仮想視線の向きを自由に変えればよい。その際、ユーザは、コントローラ、キーボード、マウスなどの入力装置を用いなくてもよく、自分の体の一部を動かすだけでよい。ユーザは、仮想空間に配置されるオブジェクトの見方を簡単な操作で変えることができる。
【００１４】
変化部は、検知された第２の部位の位置と姿勢とに基づいて、ユーザの視点から現実世界を見るときの視線（以下「ユーザ視線」という。）の位置と向きを推定してもよい。
そして、画像生成部は、ユーザ視線の位置又は向きが変化を始めてから所定時間内にユーザ視線がモニター画面と交差した場合、ユーザ視線がモニター画面と交差している間、変化を始める前に記憶部に記憶されていた、オブジェクトの位置と姿勢と、仮想視点の位置と、仮想視線の向きと、に基づいて、オブジェクトを見た様子を表す画像を生成する。
【００１５】
本発明によれば、画像処理装置は、ユーザがモニター画面を見ているか否かを推測し、その推測結果に応じて表示の態様を変えることができる。例えば、ユーザが仮想空間内のオブジェクトを異なるアングルから眺めたい場合、まず、ユーザは、第１の部位を所望の位置と姿勢にセットする。その後、ユーザは、一旦第１の部位から目を離してモニター画面の方を向く。すると、モニター画面には、モニター画面に向く直前の様子が表示される。
つまり、ユーザがモニター画面を見ていない（その代わりにユーザが第１の部位を見ている）と推測されるときには、仮想空間におけるオブジェクトの動きが、現実空間におけるユーザの第１の部位と第２の部位の動きに連動する。一方、ユーザがモニター画面を見ている（その代わりにユーザが第１の部位を見ていない）と推測されるときには、仮想空間におけるオブジェクトの動きと、現実空間におけるユーザの第１の部位と第２の部位の動きと、の連動が停止し、あたかも直前のリプレイ画像が表示されるかのように、オブジェクトの様子が表示される。
従って、ユーザは、第１の部位の位置と姿勢と、第２の部位の位置と姿勢と、を所望の位置と姿勢にセットした後、すぐにモニター画面に目を転じなくてもよい。また、ユーザは、第１の部位の位置と姿勢と、第２の部位の位置と姿勢と、を所望の位置と姿勢にセットしつつ、横目でモニター画面も見る、といった不自由が生じなくて済む。
【００１６】
記憶部には、オブジェクトの位置と姿勢の履歴と、仮想視点の位置の履歴と、仮想視線の向きの履歴と、が記憶されてもよい。
そして、画像生成部は、記憶されたオブジェクトの位置と姿勢の履歴と、記憶された仮想視点の位置の履歴と、記憶された仮想視線の向きの履歴と、に基づいて、変化を始める前にオブジェクトを見た様子を表す画像を生成してもよい。
【００１７】
本発明によれば、オブジェクトを見た画像を表示するために必要な各種パラメータの履歴が記憶されるので、画像処理装置は、任意の過去の時刻においてオブジェクトを見た画像を表示することができる。
【００１８】
変化部は、検知された第１の部位の位置と姿勢の各変化量の所定倍数量だけ、記憶される仮想視点の位置と仮想視線の向きとを変化させ、検知された第２の部位の位置と姿勢の相対的な各変化量の所定倍数量だけ、記憶されるオブジェクトの位置と姿勢とを変化させてもよい。
【００１９】
つまり、第１の部位の位置の変化量、第１の部位の姿勢の変化量、第２の部位の位置の変化量、及び、第２の部位の姿勢の変化量が、オブジェクトの位置の変化量、オブジェクトの姿勢の変化量、仮想視点の位置の変化量、及び、仮想視線の向きの変化量に忠実に再現されなくてもよい。本発明によれば、例えば、第１の部位を９０度傾ければ、オブジェクトがその２倍の１８０度傾く、といった仕様を実現することができる。なお、所定倍数は２倍に限定されるわけではなく、所定倍数を任意の値に設定することが可能である。
【００２０】
変化部は、検知された第１の部位の位置と姿勢とに基づいて第１の部位の表面の形状を近似する平面を求め、当該求められた平面を用いてオブジェクトの位置と姿勢とを決定してもよい。
【００２１】
本発明によれば、画像処理装置は第１の部位の正確な形状を判別しなくてもよいので、画像処理がより簡略化される。
【００２２】
変化部は、検知された第２の部位の位置と姿勢とに基づいて第２の部位の表面の形状を近似する平面を求め、当該求められた平面を用いて仮想視点の位置と仮想視線の向きとを決定してもよい。
【００２３】
本発明によれば、画像処理装置は第２の部位の正確な形状を判別しなくてもよいので、画像処理がより簡略化される。
【００２４】
第１の部位はユーザの手であり、第２の部位はユーザの頭であってもよい。
また、検知部は、現実空間におけるユーザの手の位置と姿勢と、ユーザの頭の位置と姿勢と、を検知してもよい。
そして、変化部は、検知された手の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された頭の、手に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させてもよい。
【００２５】
すなわち、ユーザは、手と頭を動かすだけで、様々なアングルからオブジェクトを眺めた様子を見ることができる。その際、ユーザは、コントローラ、キーボード、マウスといった入力装置を扱わなくてもよく、手と頭を動かすという直感的な動作をするだけでよい。
【００２６】
本発明のその他の観点に係る画像処理方法は、記憶部、検知部、変化部、画像生成部、表示部を有する画像処理装置にて実行される画像処理方法であって、検知ステップ、変化ステップ、画像生成ステップ、表示ステップを備える。
記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される。
検知ステップでは、検知部が、現実空間におけるユーザの第１の部位の位置と姿勢と、当該ユーザの第２の部位の位置と姿勢と、を検知する。
変化ステップでは、変化部が、検知された第１の部位の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された第２の部位の第１の部位に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させる。
画像生成ステップでは、画像生成部が、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。
表示ステップでは、表示部が、生成された画像を現実空間におけるモニター画面に表示する。
【００２７】
本発明によれば、ユーザは、仮想空間に配置されるオブジェクトの見方を簡単な操作で変えることができる。
【００２８】
本発明のその他の観点に係るプログラムは、コンピュータを、記憶部、検知部、変化部、画像生成部、表示部として機能させる。
記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される。
検知部は、現実空間におけるユーザの第１の部位の位置と姿勢と、当該ユーザの第２の部位の位置と姿勢と、を検知する。
変化部は、検知された第１の部位の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された第２の部位の第１の部位に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させる。
画像生成部は、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。
表示部は、生成された画像を現実空間におけるモニター画面に表示する。
【００２９】
本発明によれば、コンピュータを上述のように動作する画像処理装置として機能させることができる。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００３０】
本発明によれば、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の画像処理装置が実現される典型的な情報処理装置の概要構成を示す図である。
【図２】情報処理装置の外観を模式的に表す図である。
【図３】画像処理装置の機能的な構成を説明するための図である。
【図４】（ａ）仮想空間に配置されるオブジェクトと仮想視点と仮想視線を説明するための図である。（ｂ）仮想視線の延長上の点からオブジェクトを見た様子を表す図である。
【図５】（ａ）現実空間における第１の部位と第２の部位を説明するための図である。（ｂ）第１の部位の近似平面を表す図である。（ｃ）第２の部位の近似平面を表す図である。
【図６】（ａ）初期状態におけるオブジェクトを表す図である。（ｂ）オブジェクトの位置を移動する様子を表す図である。（ｃ）オブジェクトの姿勢を変化させる様子を表す図である。
【図７】（ａ），（ｂ）は、第１の部位の姿勢の変化量と、オブジェクトの姿勢の変化量と、の関係を示す図である。
【図８】（ａ）初期状態における仮想視点と仮想視線を表す図である。（ｂ）仮想視点を移動する様子を表す図である。（ｃ）仮想視線を移動する様子を表す図である。
【図９】（ａ），（ｂ）は、第２の部位の第１の部位に対する相対的な姿勢の変化量と、仮想視線の変化量と、の関係を示す図である。
【図１０】画像処理を説明するためのフローチャートである。
【図１１】ユーザ視線の向きの履歴の構成例を示す図である。
【図１２】（ａ），（ｂ）は、現実空間におけるユーザの第１の部位と第２の部位とモニターとの位置関係を模式的に表す図である。
【図１３】（ａ），（ｂ），（ｃ）は、現実空間におけるユーザの第１の部位と第２の部位と、仮想空間に配置されるオブジェクトを見た様子と、の関係を説明するための図である。
【発明を実施するための形態】
【００３２】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【００３３】
（実施形態１）
図１は、本発明の画像処理装置の機能を果たす典型的な情報処理装置１００の概要構成を示す模式図である。
【００３４】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、ハードディスク１０４と、インターフェース１０５と、外部メモリ１０６と、入力装置１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disk - Read Only Memory）ドライブ１０８と、画像処理部１０９と、音声処理部１１０と、ＮＩＣ（Network Interface Card）１１１と、を備える。
【００３５】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着し、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の画像処理装置が実現される。
【００３６】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、ＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて、レジスタという高速アクセスが可能な記憶領域に記憶されたデータの加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、ＣＰＵ  １０１は、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行うことができるコプロセッサを備える。
【００３７】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録される。ＩＰＬがＣＰＵ  １０１によって実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムがＲＡＭ  １０３に読み出され、ＣＰＵ  １０１による起動処理が開始される。
【００３８】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、例えば、ＤＶＤ−ＲＯＭから読み出されたプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００３９】
ハードディスク１０４は、情報処理装置１００全体の動作制御に必要なオペレーティングシステム（ＯＳ）のプログラムや各種のゲームデータ等を格納する。ＣＰＵ  １０１は、ハードディスク１０４に記憶される情報を随時書き換えることができる。
【００４０】
インターフェース１０５を介して着脱自在に接続された外部メモリ１０６には、ゲームのプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いた他の装置との通信のログ（記録）のデータなどが記憶される。ＣＰＵ  １０１は、外部メモリ１０６に記憶される情報を随時書き換えることができる。また、情報処理装置１００は、インターフェース１０５を介して、増設用のハードディスクを接続することができる。
【００４１】
入力装置１０７は、図２に示すように、ゲーム画面が表示されるモニター２５０付近に設置される。入力装置１０７は、ユーザの様子などを撮影するカメラを備える。ＣＰＵ  １０１は、カメラによって撮影された画像を表す画像データを解析し、画像に含まれるユーザの部位（例えばユーザの手、足、顔など）を判別する。画像解析の手法には、例えば、パターン認識による解析、特徴点の抽出による解析、空間周波数の算出による解析などがある。カメラによる撮影は、ゲーム中に継続的に行われる。
【００４２】
また、入力装置１０７は、入力装置１０７からユーザ（もしくはユーザの任意の部位）までの距離を測定する深度センサーを備える。例えば、入力装置１０７は、赤外線を周囲に照射し、この赤外線の反射波を検知する。そして、入力装置１０７は、照射波と反射波との位相差や、赤外線が発射されてからその反射光が検知されるまでの時間（飛行時間）に基づいて、照射波の発射口から照射波を反射した物体までの距離（以下「深度」ともいう。）を求める。深度センサーによる深度の検知は、赤外線を発射可能な方向のそれぞれについて、所定の時間間隔で繰り返し行われる。
【００４３】
深度センサーを備えることにより、情報処理装置１００は、現実空間に配置された物体の３次元的な位置や形状をより詳しく把握することが可能になる。具体的には、ＣＰＵ  １０１が第１の時刻に取得された第１の画像データと第２の時刻に取得された第２の画像データとを画像解析した結果、第１の画像データと第２の画像データの両方にユーザの頭部を表す部分が含まれていることを判別したとする。ＣＰＵ  １０１は、第１の画像データ内における頭部の位置と、第２の画像データ内における頭部の位置と、の変化から、カメラから見てユーザの頭部が上下左右のどの方向にどの程度動いたのかを判別することができるだけでなく、第１の画像データにおける頭部の深度と、第２の画像データ内における頭部の深度と、の変化から、カメラから見てユーザの頭部が前後のどちらの方向にどの程度動いたのか（どの程度カメラに近づいたりカメラから遠ざかったりしたのか）を判別することもできる。
【００４４】
このように、ＣＰＵ  １０１は、入力装置１０７が備えるカメラによって撮影された画像と、入力装置１０７が備える深度センサーによって測定された距離（深度）と、に基づいて、いわゆるモーションキャプチャーのように、現実空間におけるユーザの３次元的な動きをデジタル化して把握することができる。
【００４５】
例えば、ボーリングゲームにおいて、プレイヤーがモニター２５０画面の前（つまり入力装置１０７の前）でボールを投げるモーションをすると、ＣＰＵ  １０１は、プレイヤーがボールを投げるモーションを行ったことを認識することができる。そして、ＣＰＵ  １０１は、認識したモーションに応じて、ゲームを進行することができる。つまり、プレイヤーは、タッチパッド型のコントローラなどを持つことなく、自分の体を自由に動かすことによって、所望の指示を入力することができる。入力装置１０７は、プレイヤーからの指示入力を受け付ける、いわゆる“コントローラ”の役割を果たす。
【００４６】
撮影された画像を表すデジタルの画像データは、複数の画素の集合である。典型的には、画素のそれぞれに三原色（Ｒ，Ｇ，Ｂ）の強度を表す値が対応付けられる。画像深度センサーにより各方向の深度が測定されるということは、実質的には、１つの画素が、赤（Ｒ），緑（Ｇ），青（Ｂ）に加えて、深度（Ｄ）というもう一次元を用いて表されることを意味する。
【００４７】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データなどが予め記録される。ＤＶＤ−ＲＯＭドライブ１０８は、ＣＰＵ  １０１の制御によって、装着されたＤＶＤ−ＲＯＭに記録されたプログラムやデータを読み出す。ＣＰＵ  １０１は、読み出されたプログラムやデータをＲＡＭ  １０３等に一時的に記憶する。
【００４８】
画像処理部１０９は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０９が備える画像演算プロセッサ（図示せず）によって加工処理した後、画像処理部１０９が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され、画像処理部１０９に接続されるモニター２５０へ出力される。
【００４９】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。また、画像演算プロセッサは、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００５０】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報に従って、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００５１】
また、ＣＰＵ  １０１と画像演算プロセッサがＤＶＤ−ＲＯＭに予め格納された画像データをフレームメモリに書き込むことによって、ゲームの様子などを画面に表示することができる。画像データをフレームメモリに書き込み表示させる処理を、定期的なタイミング（典型的には垂直同期割り込み（ＶＳＹＮＣ）のタイミング）で繰り返し行うことにより、モニター２５０にアニメーションを表示することが可能になる。
【００５２】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、スピーカーから出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲などの音声データを生成し、生成された音声データをデコードすることにより、様々な音声をスピーカーから出力させる。
【００５３】
音声処理部１１０は、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、音声処理部１１０が有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、音声処理部１１０は、ＡＤＰＣＭ（Adaptive Differential Pulse Code Modulation）形式やOgg Vorbis形式等により圧縮された音声データである場合には、圧縮された音声データをＰＣＭデータに変換する。ＰＣＭデータは、サンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカーに出力することにより、音声出力が可能となる。
【００５４】
ＮＩＣ  １１１は、情報処理装置１００をインターネット等のコンピュータ通信網に接続する。ＮＩＣ  １１１は、例えば、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）と、から構成される。
【００５５】
次に、上記構成を有する情報処理装置１００により実現される、本実施形態の画像処理装置３００の機能的な構成等について説明する。画像処理装置３００は、現実空間におけるユーザの位置や姿勢に応じて、仮想空間に配置されるオブジェクトの位置や姿勢を変化させた画像をモニター２５０に表示する。ユーザは、まるで現実のプラモデルを手に持って回しながら眺めるかのように、仮想空間に配置されるオブジェクトを様々な角度から眺めることができるのである。以下詳述する。
【００５６】
図３は、画像処理装置３００の機能的な構成を示す図である。画像処理装置３００は、記憶部３０１、検知部３０２、変化部３０３、画像生成部３０４、表示部３０５を備える。
【００５７】
記憶部３０１は、（１）３次元の仮想空間に配置されるオブジェクトの位置と姿勢と、（２）この仮想空間に配置される仮想視点の位置と、（３）仮想視点の位置からこの仮想空間を見る仮想視線の向きと、を記憶する。ＲＡＭ  １０３が記憶部３０１として機能する。
【００５８】
図４（ａ）に、仮想空間に配置されるオブジェクト４００と仮想視点４５０と仮想視線４７０とを模式的に示す。仮想空間には、グローバル座標系（ＸＹＺ座標系）が予め定義される。図４では、グローバル座標系としてデカルト座標系が用いられているが、極座標系など他の種類の座標系を用いてグローバル座標系が定義されてもよい。
【００５９】
仮想空間におけるオブジェクト４００の位置は、グローバル座標系における座標値で表される。オブジェクト４００の位置として、オブジェクト４００の代表点４０１の座標値が用いられる。代表点４０１は、例えば、オブジェクト４００の重心である。
【００６０】
図４（ｂ）に、仮想視線４７０の延長上の点からオブジェクト４００を見た様子の例を示す。仮想空間におけるオブジェクト４００の姿勢は、グローバル座標系におけるベクトル４０２と、基準方向４０３からの傾きの角度αと、によって表される。本実施形態では、基準方向４０３はＺ軸方向である。
【００６１】
仮想視点４５０の位置は、グローバル座標系における座標値で表される。仮想視点４５０の位置は、仮想空間を写す仮想カメラが配置される位置であり、ユーザからの指示により、もしくは、所定のアルゴリズムにより、変化しうる。
【００６２】
仮想視線４７０の向きは、グローバル座標系におけるベクトルで表される。仮想視線４７０の向きは、仮想空間を写す仮想カメラの向きであり、ユーザからの指示により、もしくは、所定のアルゴリズムにより、変化しうる。
【００６３】
ＣＰＵ  １０１は、ユーザからの指示により、もしくは、所定のアルゴリズムにより、ＲＡＭ  １０３に記憶されるオブジェクトの位置と姿勢と、仮想視点４５０の位置と、仮想視線４７０の向きと、を随時更新する。
【００６４】
検知部３０２は、現実空間におけるユーザの第１の部位の位置と姿勢と、このユーザの第２の部位の位置と姿勢と、を検知する。ＣＰＵ  １０１と入力装置１０７が協働して、検知部３０２として機能する。
【００６５】
図５（ａ）に、現実空間におけるユーザの第１の部位５１０と第２の部位５２０を示す。本実施形態では、ユーザの第１の部位５１０は“手”（左手と右手のどちらでもよい）であり、ユーザの第２の部位５２０は“頭”である。
【００６６】
ＣＰＵ  １０１は、入力装置１０７によって取得された画像データの画像解析結果と、入力装置１０７によって検知された第１の部位５１０の深度（入力装置１０７が備える赤外線発射口からユーザの手までの距離）と、に基づいて、現実空間において第１の部位５１０がどの位置にどのような姿勢で配置されているかを判別する。
【００６７】
第１の部位５１０の位置は、現実空間に定義される座標系（ｘｙｚ座標系）における座標値で表される。
【００６８】
第１の部位５１０の姿勢は、以下に示すように、近似平面を用いて特定される。図５（ｂ）は、第１の部位５１０の姿勢を説明するための図である。
【００６９】
まず、ＣＰＵ  １０１は、ユーザの手の表面の形状を近似する平面（近似平面）５１２を求める。例えば、ＣＰＵ  １０１は、画像解析等によって判別された手のひら（もしくは手の甲）の表面上の点を所定個数抽出し、抽出した各点の現実空間における座標値を取得する。そして、ＣＰＵ  １０１は、最小自乗法などを用いて、抽出した各点による近似平面５１２を計算する。
【００７０】
現実空間に定義される座標系（ｘｙｚ座標系）において、近似平面５１２は、パラメータａ１，ｂ１，ｃ１，ｒ１を用いて、［数１］で表される。
【００７１】
ａ１・ｘ  ＋  ｂ１・ｙ  ＋  ｃ１・ｚ  ＝  ｒ１      ・・・［数１］
【００７２】
次に、ＣＰＵ  １０１は、近似平面５１２上の単位ベクトルであって、画像認識等によって判別された手の指が伸びる方向のベクトル５１１を求める。このベクトル５１１の向きが、第１の部位５１０の向きとなる。
【００７３】
更に、ＣＰＵ  １０１は、現実空間における鉛直方向５１３と、近似平面５１２の法線ベクトル５１４と、のなす角度αを求める。鉛直方向５１３と、現実空間に定義される座標系における１つの軸の向き（本実施形態ではｚ軸方向）と、を一致させると良い。
【００７４】
法線ベクトル５１４は、［数１］で表されるパラメータａ１，ｂ１，ｃ１を用いて、［数２］のように定義される。
【００７５】
法線ベクトル５１４  ：  （ａ１，ｂ１，ｃ１）      ・・・［数２］
【００７６】
ベクトル５１１の向きが“手がどちらを向いているか”を表し、角度αが“どのくらい手が傾いているか”を表す。従って、ベクトル５１１と角度αが求まれば、第１の部位５１０の姿勢が特定されたことになる。
【００７７】
同様に、ＣＰＵ  １０１は、入力装置１０７によって取得された画像データの画像解析結果と、入力装置１０７によって検知された第２の部位５２０の深度（入力装置１０７が備える赤外線発射口からユーザの頭までの距離）と、に基づいて、現実空間において第２の部位５２０がどの位置にどのような姿勢で配置されているかを判別する。
【００７８】
第２の部位５２０の位置は、現実空間に定義される座標系における座標値で表される。
【００７９】
第２の部位５２０の姿勢は、第１の部位５１０の姿勢を求める手法と同様に、近似平面を用いて特定される。図５（ｃ）は、第２の部位５２０の姿勢を説明するための図である。
【００８０】
まず、ＣＰＵ  １０１は、ユーザの顔の表面の形状を表す近似平面５２２を求める。例えば、ＣＰＵ  １０１は、画像解析等によって判別された顔の表面上の点を所定個数抽出し、抽出した各点の現実空間における座標値を取得する。そして、ＣＰＵ  １０１は、最小自乗法などを用いて、抽出した各点による近似平面５２２を計算する。
【００８１】
現実空間に定義される座標系（ｘｙｚ座標系）において、近似平面５２２は、パラメータａ２，ｂ２，ｃ２，ｒ２を用いて、［数３］で表される。
【００８２】
ａ２・ｘ  ＋  ｂ２・ｙ  ＋  ｃ２・ｚ  ＝  ｒ２      ・・・［数３］
【００８３】
次に、ＣＰＵ  １０１は、第２の部位５２０の向きを求める。第２の部位５２０の向きは、近似平面５２２の法線ベクトル５２１の向きで表される。法線ベクトル５２１は、［数４］で表されるパラメータａ２，ｂ２，ｃ２を用いて、［数４］のように定義される。
【００８４】
法線ベクトル５２１  ：  （ａ２，ｂ２，ｃ２）      ・・・［数４］
【００８５】
第２の部位５２０の向き、つまりユーザの頭（もしくは顔）の向きは、現実空間におけるユーザの視線（以下「ユーザ視線」という。）の向きと推定される。
【００８６】
更に、ＣＰＵ  １０１は、現実空間における水平方向を表す直線５２３と、画像解析等によって判別された左目と右目とを通過する直線５２４と、のなす角度βを求める。直線５２４は、画像解析等によって判別された左耳と右耳とを通過する直線でもよい。
【００８７】
法線ベクトル５２１の向きが“顔がどちらを向いているか”を表し、角度βが“どのくらい頭が傾いているか”を表す。従って、法線ベクトル５２１と角度βが求まれば、第２の部位５２０の姿勢が特定されたことになる。
【００８８】
なお、ここで説明した第１の部位５１０の姿勢と第２の部位５２０の姿勢を特定する手法は一例に過ぎず、他の手法を用いてこれらの姿勢を特定してもよい。例えば、近似平面５１２，５２２を求める代わりに、手の形状を近似する近似曲面と顔の形状を近似する近似曲面を求めてもよい。この場合、近似曲面の重心位置における法線ベクトルを、手の向き又は頭の向きとすればよい。
【００８９】
次に、変化部３０３は、検知部３０２により検知された第１の部位５１０の位置と姿勢とに基づいて、記憶部３０１に記憶されるオブジェクト４００の位置と姿勢とを変化させる。また、変化部３０３は、検知部３０２により検知された第２の部位５２０の第１の部位５１０に対する相対的な位置と姿勢とに基づいて、記憶部３０１に記憶される仮想視点４５０の位置と仮想視線４７０の向きとを変化させる。ＣＰＵ  １０１とＲＡＭ  １０３が協働して、変化部３０３として機能する。
【００９０】
まず、変化部３０３がオブジェクト４００の位置と姿勢を変化させる処理について説明する。
【００９１】
初期状態において、ＣＰＵ  １０１は、仮想空間内の所定の位置に所定の姿勢でオブジェクト４００を配置する。例えば、ＣＰＵ  １０１は、仮想空間に定義されるグローバル座標系における原点の位置へ、水平方向に、オブジェクト４００を配置する。
【００９２】
例えば、図６（ａ）に示すように、ＣＰＵ  １０１は、初期状態のオブジェクト４００の代表点の位置４０１を、グローバル座標系における原点の位置とし、初期状態のオブジェクト４００の向きを表すベクトル４０２の向きを、グローバル座標系におけるＸ軸の正の向きとする。この例では、オブジェクト４００は飛行機のモデルであるが、ＣＰＵ  １０１は、初期状態では飛行機の翼が水平になるように配置している。また、ＣＰＵ  １０１は、現実空間における近似平面５１２を、仮想空間に定義されるグローバル座標系におけるＸ−Ｙ平面と対応付ける。
【００９３】
検知された第１の部位５１０（本実施形態ではユーザの手）の位置が変化すると、図６（ｂ）に示すように、ＣＰＵ  １０１は、第１の部位５１０の位置の変化量に応じて、仮想空間内におけるオブジェクト４００の代表点４０１を移動する。つまり、現実空間においてユーザが手を平行移動させると、仮想空間においてオブジェクト４００も平行移動する。
【００９４】
ＣＰＵ  １０１は、現実空間における第１の部位５１０の位置の変化量ΔＰrealが大きいほど、仮想空間における代表点４０１の移動量ΔＰvirtualを大きくする。典型的には、変化量ΔＰrealと移動量ΔＰvirtualは、比例関係にある。
【００９５】
また、検知される第１の部位５１０の姿勢が変化すると、ＣＰＵ  １０１は、第１の部位５１０の姿勢の変化量に応じて、仮想空間におけるオブジェクト４００の姿勢を変化させる。
【００９６】
例えば、第１の部位５１０の近似平面５１２が角度αだけ傾くと、図６（ｃ）に示すように、ＣＰＵ  １０１は、オブジェクト４００を角度αだけ傾ける。つまり、現実空間においてユーザが手を傾けると、仮想空間においてオブジェクト４００が同じ量だけ傾く。ユーザは、仮想空間内のオブジェクト４００を傾けたときの様子を眺めたい場合には、同じ量だけ手を傾ければよい。
【００９７】
ここで、ＣＰＵ  １０１は、第１の部位５１０の近似平面５１２が角度αだけ傾いた場合にオブジェクト４００を傾ける量を、角度αではなく、角度αを所定倍した量としてもよい。すなわち、現実空間における第１の部位５１０の近似平面５１２の傾きαrealと、仮想空間におけるオブジェクト４００の傾きαvirtualと、の間には、［数５］の関係が成り立つ。
【００９８】
αvirtual  ＝  Ｃ・αreal      ・・・［数５］
ただし、Ｃは倍率を表し、ゼロでない実数である。
【００９９】
Ｃ＝１の場合、図６（ｃ）に示すように、現実空間における手の傾き量と同じ量だけ、仮想空間におけるオブジェクト４００が傾く。
【０１００】
０＜Ｃ＜１の場合、図７（ａ）に示すように、仮想空間におけるオブジェクト４００の傾き量は、現実空間における手の傾き量よりも少ない。つまり、姿勢変化の感度がより鈍くなる。
【０１０１】
Ｃ＞１の場合、図７（ｂ）に示すように、仮想空間におけるオブジェクト４００の傾き量は、現実空間における手の傾き量よりも多い。つまり、姿勢変化の感度がより敏感になる。
【０１０２】
なお、大抵の場合、人間が自分の手を３６０度近く（もしくは３６０度以上）ねじることは難しいため、オブジェクト４００をどの方向からも簡単に眺めることができる仕様にしたい場合、「Ｃ＝２」程度にすることが望ましい。この場合、手を半回転させれば、オブジェクト４００は一回転することになる。
【０１０３】
図６（ｃ）は、Ｙ軸を回転軸にしてオブジェクト４００を回転させたとき、すなわち指先が上になるようにユーザが手を傾けたときの様子を表しているが、任意の軸を回転軸にすることができ、また、任意の点を回転の中心点にすることができる。
【０１０４】
次に、変化部３０３が仮想視点４５０の位置と仮想視線４７０の向きを変化させる処理について説明する。
【０１０５】
初期状態において、ＣＰＵ  １０１は、仮想空間の所定の位置に仮想視点４５０を配置し、所定の方向を仮想視線４７０の向きに設定する。
【０１０６】
例えば、図８（ａ）に示すように、ＣＰＵ  １０１は、位置（Ｘ０，Ｙ０，Ｚ０）を初期状態の仮想視点４５０の位置とし、初期状態の仮想視点４５０の位置から初期状態のオブジェクト４００の代表点４０１への向きを、初期状態の仮想視線４７０の向きとする。
【０１０７】
検知された第２の部位５２０（本実施形態ではユーザの頭）の第１の部位５１０に対する相対的な位置が変化すると、図８（ｂ）に示すように、ＣＰＵ  １０１は、第２の部位５２０の相対位置の変化量に応じて、仮想空間における仮想視点４５０の位置を移動する。つまり、現実空間においてユーザが頭の手に対する相対位置を移動させると、仮想空間において仮想視点４５０が移動する。
【０１０８】
ＣＰＵ  １０１は、現実空間における第２の部位５２０の第１の部位５１０に対する相対位置の変化量ΔＱrealが大きいほど、仮想空間における仮想視点４５０の移動量ΔＱvirtualを大きくする。典型的には、変化量ΔＱrealと移動量ΔＱvirtualは、比例関係にある。
【０１０９】
また、検知される第２の部位５２０の姿勢が変化すると、ＣＰＵ  １０１は、第２の部位５２０の第１の部位５１０に対する相対的な姿勢の変化量に応じて、仮想空間における仮想視線４７０の姿勢を変化させる。
【０１１０】
例えば、第２の部位５２０の近似平面５２２が角度βだけ傾くと、図８（ｃ）に示すように、ＣＰＵ  １０１は、仮想視線４７０の向きを角度βだけ傾ける。つまり、現実空間においてユーザが頭を傾けると、仮想空間において仮想視線４７０が同じ量だけ傾く。ユーザは、仮想空間内のオブジェクト４００を違う角度から眺めたい場合には、同じ量だけ頭を傾ければよい。
【０１１１】
ここで、ＣＰＵ  １０１は、第２の部位５２０の近似平面５２２が角度βだけ傾いた場合に仮想視線４７０を傾ける量を、角度βではなく、角度βを所定倍した量としてもよい。すなわち、現実空間における第２の部位５２０の近似平面５２２の傾きβrealと、仮想空間における仮想視線４７０の傾きβvirtualと、の間には、［数６］の関係が成り立つ。
【０１１２】
βvirtual  ＝  Ｄ・βreal      ・・・［数６］
ただし、Ｄは倍率を表し、ゼロでない実数である。
【０１１３】
Ｄ＝１の場合、図８（ｃ）に示すように、現実空間における頭の傾き量と同じ量だけ、仮想空間における仮想視線４７０が傾く。
【０１１４】
０＜Ｄ＜１の場合、図９（ａ）に示すように、仮想空間における仮想視線４７０の傾き量は、現実空間における頭の傾き量よりも少ない。つまり、仮想視線４７０の変化の感度がより鈍くなる。
【０１１５】
Ｄ＞１の場合、図９（ｂ）に示すように、仮想空間における仮想視線４７０の傾き量は、現実空間における頭の傾き量よりも多い。つまり、仮想視線４７０の変化の感度がより敏感になる。
【０１１６】
次に、画像生成部３０４は、仮想視点４５０の位置から仮想視線４７０の向きにオブジェクト４００を見た様子を表す画像を生成する。ＣＰＵ  １０１と画像処理部１０９が協働して、画像生成部３０４として機能する。
【０１１７】
表示部３０５は、画像生成部３０４によって生成された画像をモニター２５０に表示する。ＣＰＵ  １０１と画像処理部１０９が協働して、表示部３０５として機能する。
【０１１８】
上述のように、オブジェクト４００の位置とオブジェクト４００の姿勢と仮想視点４５０の位置と仮想視線４７０の向きは、現実空間におけるユーザの第１の部位５１０の位置と姿勢と、第２の部位５２０の位置と姿勢の変化とに応じて変わるので、ユーザは、様々な位置から様々な方向にオブジェクト４００を眺めた様子を見ることができる。ユーザは、所望のアングルになるように、手と頭を動かせばよい。例えば、オブジェクト４００が飛行機のモデルであるとき、ユーザが飛行機を下から（車輪が出る側から）見たいときには、手の姿勢を裏返すように変えるか、もしくは、手を静止したまま手を下からのぞき込むような格好をすればよい。また、例えば、ユーザが飛行機を前から（コックピット側から）見たいときには、手先を顔に向けて伸ばすように手の姿勢を変えるか、もしくは、手を静止したまま爪先からのぞき込むような格好をすればよい。
【０１１９】
次に、画像処理装置３００の上記各部が実行する画像処理について、図１０のフローチャートを用いて説明する。
【０１２０】
まず、ＣＰＵ  １０１は、仮想空間におけるオブジェクト４００の位置と姿勢と、仮想視点４５０の位置と、仮想視線４７０の向きを、それぞれ初期値に設定する（ステップＳ１００１）。
【０１２１】
ＣＰＵ  １０１は、入力装置１０７を制御して、現実空間におけるユーザの第１の部位５１０の位置と姿勢と、ユーザの第２の部位５２０の位置と姿勢と、を取得する（ステップＳ１００２）。
【０１２２】
ＣＰＵ  １０１は、ステップＳ１００２で取得した第１の部位５１０の位置又は姿勢が、前回取得した第１の部位５１０の位置又は姿勢と比べて変化したか否かを判別する（ステップＳ１００３）。
【０１２３】
例えば、ＣＰＵ  １０１は、入力装置１０７を制御して、第１の部位５１０の位置と姿勢、及び、第２の部位５２０の位置と姿勢を、所定の定期的なタイミングで繰り返し検知し、所定回数分の検知結果の履歴をＲＡＭ  １０３に記憶する。ＣＰＵ  １０１は、第１のタイミングで検知しＲＡＭ  １０３に記憶した第１の部位５１０の位置と姿勢及び第２の部位５２０の位置と姿勢と、第１のタイミングより後の第２のタイミングで検知しＲＡＭ  １０３に記憶した第１の部位５１０の位置と姿勢及び第２の部位５２０の位置と姿勢と、を比較する。
【０１２４】
第１の部位５１０の位置又は姿勢が変化していないと判別された場合（ステップＳ１００３；ＮＯ）、ＣＰＵ  １０１は、後述のステップＳ１００５の処理に移る。一方、第１の部位５１０の位置又は姿勢が変化したと判別された場合（ステップＳ１００３；ＹＥＳ）、ＣＰＵ  １０１は、ステップＳ１００２で取得した第１の部位５１０の位置と姿勢に基づいて、オブジェクト４００の位置又は姿勢を変化させる（ステップＳ１００４）。ＣＰＵ  １０１は、変化させたオブジェクト４００の位置を示す情報と、変化させたオブジェクト４００の姿勢を示す情報を、ＲＡＭ  １０３に記憶する。
【０１２５】
次に、ＣＰＵ  １０１は、ステップＳ１００２で取得した第２の部位５２０の第１の部位５１０に対する相対的な位置（以下「相対位置」という。）、又は、ステップＳ１００２で取得した第２の部位５２０の第１の部位５１０に対する相対的な姿勢（以下「相対姿勢」という。）が、前回取得した第２の部位５２０の相対位置又は相対姿勢と比べて変化したか否かを判別する（ステップＳ１００５）。
【０１２６】
第２の部位５２０の相対位置又は相対姿勢が変化していないと判別された場合（ステップＳ１００５；ＮＯ）、ＣＰＵ  １０１は、後述のステップＳ１００７の処理に移る。一方、第２の部位５２０の相対位置又は相対姿勢が変化したと判別された場合（ステップＳ１００５；ＹＥＳ）、ＣＰＵ  １０１は、今回取得した相対位置と相対姿勢に基づいて、仮想視点４５０の位置又は仮想視線４７０の向きを変化させる（ステップＳ１００６）。ＣＰＵ  １０１は、変化させた仮想視点４５０の位置を示す情報と、変化させた仮想視線４７０の向きを示す情報を、ＲＡＭ  １０３に記憶する。
【０１２７】
ＣＰＵ  １０１は、オブジェクト４００の位置と姿勢と、仮想視点４５０の位置と、仮想視線４７０の向きと、に基づいて、仮想視点４５０の位置から仮想視線４７０の向きへオブジェクト４００を見た様子を表す画像を生成する（ステップＳ１００７）。
【０１２８】
そして、ＣＰＵ  １０１は、ステップＳ１００７で生成した画像をモニター２５０に表示する（ステップＳ１００８）。
【０１２９】
ＣＰＵ  １０１は、ステップＳ１００２〜Ｓ１００８の処理を繰り返し行う。この結果、ユーザが手や頭を動かすとそれに応じてオブジェクト４００の位置や姿勢が変化する様子が、モニター２５０に映し出される。
【０１３０】
本実施形態によれば、画像処理装置３００は、仮想空間に配置されたオブジェクト４００の位置や姿勢をユーザが容易に且つ自由に動かして見ることができる。例えば、ユーザは、現実空間で模型を手にとって様々な角度から眺めるかのように、仮想空間に配置されたオブジェクト４００を動かして眺めることができる。その際、ユーザは、コントローラのボタンを押すような面倒な操作を必要とせず、自分の手をオブジェクト４００に見立てて直感的に位置や姿勢を変えることができる。
【０１３１】
（実施形態２）
次に、本発明のその他の実施形態について説明する。上記実施形態では、オブジェクト４００の位置と姿勢、及び、仮想視点４５０の位置と仮想視線４７０の向きが、ユーザの第１の部位５１０の位置の変化と姿勢の変化、及び、第２の部位５２０の位置の変化と姿勢の変化に応じて直ちに変化する様子がモニター２５０に表示される。ところで、現実空間における第１の部位５１０と第２の部位５２０とモニター２５０との位置関係によっては、ユーザは、第１の部位５１０や第２の部位５２０を動かしつつモニター２５０を眺めることが困難になる可能性がある。そこで、本実施形態では、画像処理装置３００は、オブジェクト４００の位置と姿勢、及び、仮想視点４５０の位置と仮想視線４７０の向きを直ちに変化させるのではなく、第１の部位５１０の位置の変化と姿勢の変化、又は、第２の部位５２０の位置の変化が発生してから時間差を置いて、オブジェクト４００の位置と姿勢、及び、仮想視点４５０の位置と仮想視線４７０の向きを変化させることができるようにしている。以下詳述する。
【０１３２】
変化部３０３は、検知部３０２によって検知された第２の部位５２０の位置と姿勢とに基づいて、ユーザの視点から現実世界を見るときの視線（ユーザ視線）の位置と向きを推定する。
【０１３３】
上述したように、ＣＰＵ  １０１は、第２の部位５２０の表面の形状を表す近似平面５２２の法線ベクトル５２１の向きを、ユーザ視線の向きと推定する。
【０１３４】
また、ＣＰＵ  １０１は、画像認識等によって判別された左目と右目を結ぶ線分の中点の座標を、現実空間におけるユーザ視線の位置と推定する。
【０１３５】
画像生成部３０４は、ユーザ視線の位置又は向きが変化を始めてから所定時間内に、ユーザ視線がモニター２５０の画像表示領域と交差した場合、ユーザ視線がモニター２５０と交差している間、変化を始める前に記憶部３０１に記憶されていた、オブジェクト４００の位置と姿勢と、仮想視点４５０の位置と、仮想視線４７０の向きと、に基づいて、オブジェクト４００を見た様子を表す画像を生成する。
【０１３６】
ＣＰＵ  １０１は、オブジェクト４００の位置と姿勢と、仮想視点４５０の位置と、仮想視線４７０の向きのそれぞれについて、直近の所定回数分の判別結果の履歴をＲＡＭ  １０３に記憶する。
【０１３７】
図１１は、仮想視線４７０の向きの履歴の構成例を示す図である。
図１２（ａ），（ｂ）は、現実空間におけるユーザの第１の部位５１０と第２の部位５２０とモニター２５０との位置関係を模式的に表す図である。本図は、ユーザの真上から（頭上から）見下ろしたときの様子を表している。
【０１３８】
図１１では、ＲＡＭ  １０３には、直近のｎ回分（ｎは２以上の整数）の判別結果の履歴が記憶されている。時刻は、第２の部位５２０の位置と姿勢が検知部３０２によって検知された時刻である。ユーザ視線の向きは、ユーザ視線の位置１２１０とモニター２５０の表示領域の中心１２３０とを結ぶ線分１２４０と、近似平面５２２の法線ベクトル５２１の向きと、のなす角度γで表される。
【０１３９】
例えば、時刻Ｔ（ｎ−２）までの向きの変位γ１−γ０、γ２−γ１、・・・、γｎ−２−γｎ−３がいずれも所定の閾値より小さかったものの、時刻Ｔ（ｎ−２）から時刻Ｔ（ｎ−１）までの間の向きの変位γｎ−１−γｎ−２が所定の閾値より大きかった場合、ＣＰＵ  １０１は、時刻Ｔ（ｎ−１）にユーザが第２の部位５２０を動かし始めたと判断する。つまり、時刻Ｔ（ｎ−１）が、ユーザ視線の向きが変化し始めた時刻と推定される。
【０１４０】
ユーザ視線がモニター２５０の画像表示領域と交差する場合とは、図１２（ｂ）に示すように、ユーザ視線の位置１２１０から法線ベクトル５２１の向きに延伸した半直線１２５０が、モニター２５０と交差する場合を指す。
【０１４１】
ＣＰＵ  １０１は、現実空間におけるモニター２５０の四隅の座標値を予めＲＡＭ  １０３に記憶しておく。そして、ＣＰＵ  １０１は、半直線１２５０とモニター２５０の表面を含む平面との交点が、モニター２５０の四隅によって作られる矩形の中に入る場合に、ユーザ視線がモニター２５０の画像表示領域に含まれる（つまり、ユーザがモニターに表示される画像を見ている）と判別する。それ以外の場合、ＣＰＵ  １０１は、ユーザ視線がモニター２５０の画像表示領域に含まれない（つまり、ユーザがモニターに表示される画像を見ていない）と判別する。
【０１４２】
上述のステップＳ１００７において、ＣＰＵ  １０１は、ユーザ視線がモニター２５０の画像表示領域と交差する場合、ユーザ視線がモニター２５０と交差している間、変化が始まる前の仮想視点４５０の位置から、変化が始まる前の仮想視線４７０の向きへ、変化が始まる前の位置と姿勢で配置されたオブジェクト４００を見た様子を表す画像を生成する。そして、ステップＳ１００８において、ＣＰＵ  １０１は、生成した画像をモニター２５０に表示する。
【０１４３】
例えば、時刻Ｔ（ｎ−２）までの向きの変位γ１−γ０、γ２−γ１、・・・、γｎ−２−γｎ−３がいずれも所定の閾値より小さかったものの、時刻Ｔ（ｎ−２）から時刻Ｔ（ｎ−１）までの間の向きの変位γｎ−１−γｎ−２が所定の閾値より大きかった場合、ＣＰＵ  １０１は、ユーザが第２の部位５２０を動かし始めたと判断した時刻Ｔ（ｎ−１）に対応付けられてＲＡＭ  １０３に記憶されている、オブジェクト４００の位置と姿勢を示す情報と、仮想視点４５０の位置を示す情報と、仮想視線４７０の向きを示す情報と、に基づいて、画像を生成する。
【０１４４】
仮に、手の位置の変化と姿勢の変化と、頭の位置の変化と姿勢の変化と、に直ちに連動するように、オブジェクト４００の位置と姿勢を変化させるとしたとき、現実空間においてモニター２５０と手が離れていると、ユーザのとって、手を動かしながらモニター２５０を見る、という動作がやりづらいことがある。
例えば、図１３（ａ）に示すように、ユーザが現実空間で第１の部位５１０と第２の部位５２０を配置し、且つ、ユーザの視線方向や矢印ＹＡ方向であるときに、オブジェクト４００がモニター２５０の表示領域の中央に配置されたとする。ここで、ユーザがモニター２５０を正面から眺めようと向き直り、視線方向が矢印ＹＢ方向になると、第２の部位５２０の位置もしくは姿勢が変化するため、仮想視点４５０もしくは仮想視線４７０が変化してしまう。すると、モニター２５０には、図１３（ｂ）に示すように、仮想視点４５０もしくは仮想視線４７０が変化した後の様子が映ることになり、結果としてユーザはオブジェクト４００がモニター２５０の中央に表示されているときの様子を見られないことになってしまう。この問題を回避するために、モニター２５０を横目でチラチラと見続けることは、ユーザにとって大きな負担であり、またこのような行為にも限界がある。
そこで、ユーザの視線方向がモニター２５０の画像表示領域外から画像表示領域内に入ってきた場合には、本実施形態の画像処理装置３００は、図１３（ｃ）に示すように、ユーザがモニター２５０の方向へ振り向く直前に表示していた画像を表示することとしている。つまり、ユーザは、視線方向を矢印ＹＢ方向に移動した後でも、視線方向が矢印ＹＡ方向である場合の映像を見ることができるのである。ユーザは、“少し前の”手と頭の位置と姿勢によって作られる画像を見ることができる。
なお、ＣＰＵ  １０１が、ユーザがモニター２５０を眺めていると判断する場合とは、図１３（ｂ）に示すように、「視線方向を示すベクトルの向きが、第２の部位の位置１３０５から、モニター２５０の表示領域の４隅の点１３０１〜１３０４へ、結ぶ４つの線分によって囲まれる四角柱状の領域内に収まる場合」である。
【０１４５】
なお、ＣＰＵ  １０１は、変化が始まる前の仮想視点４５０の位置から、変化が始まる前の仮想視線４７０の向きへ、変化が始まる前の位置と姿勢で配置されたオブジェクト４００を見た様子を表す画像を表示した後、ユーザ視線がモニター２５０と交差しなくなった場合、ユーザがモニター２５０から目をそらしたと推定し、手の位置の変化と姿勢の変化と、頭の位置の変化と姿勢の変化と、に直ちに連動させてオブジェクト４００の位置と姿勢を変化させた画像を生成して表示する。
【０１４６】
言い換えれば、ユーザがモニター２５０を向いていないと推定される場合、オブジェクト４００が手や頭と“連動”して表示され、ユーザがモニター２５０を向いていると推定される場合、オブジェクト４００と手や頭との連動が一旦中断して“リプレイ”画像が表示される。
【０１４７】
本実施形態では、ＣＰＵ  １０１は、ユーザがモニター２５０の方へ振り向く動作をする直前のオブジェクト４００を表す画像を表示するが、ＲＡＭ  １０３に記憶している任意の過去のタイミングにおけるオブジェクト４００を表す画像を表示することもできる。例えば、ＣＰＵ  １０１は、ユーザがモニター２５０の方へ振り向いたと推定された場合、直近の過去の所定時間分（例えば、現在よりＸ秒前から、現在まで、など）の履歴を用いて、オブジェクト４００を表す画像を生成して表示してもよい。また、この所定時間をユーザが自由に設定できるようにしてもよい。
【０１４８】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【０１４９】
上記の画像処理装置３００の全部又は一部としてコンピュータを動作させるためのプログラムを、メモリカード、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ（Magneto Optical disk）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１５０】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【０１５１】
以上説明したように、本発明によれば、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムを提供することができる。
【符号の説明】
【０１５２】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ハードディスク
１０５  インターフェース
１０６  外部メモリ
１０７  入力装置
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  画像処理部
１１０  音声処理部
１１１  ＮＩＣ
２５０  モニター
３００  画像処理装置
３０１  記憶部
３０２  検知部
３０３  変化部
３０４  画像生成部
３０５  表示部
４００  オブジェクト
４５０  仮想視点
４７０  仮想視線
５１０  第１の部位
５１１  ベクトル（第１の部位の向き）
５１２  近似平面（第１の部位を表す近似平面）
５１３  鉛直方向
５１４  法線ベクトル（第１の部位を表す近似平面の法線ベクトル）
５２０  第２の部位
５２１  法線ベクトル（第２の部位を表す近似平面の法線ベクトル）
５２２  近似平面（第２の部位を表す近似平面）
５２３  水平方向を表す直線
５２４  直線
１２１０  ユーザ視線の位置
１２３０  中心（モニターの表示領域の中心）
１２４０  線分
１２５０  半直線
【図１】
2011191899.tif 000003
【図２】
2011191899.tif 000004
【図３】
2011191899.tif 000005
【図４】
2011191899.tif 000006
【図５】
2011191899.tif 000007
【図６】
2011191899.tif 000008
【図７】
2011191899.tif 000009
【図８】
2011191899.tif 000010
【図９】
2011191899.tif 000011
【図１０】
2011191899.tif 000012
【図１１】
2011191899.tif 000013
【図１２】
2011191899.tif 000014
【図１３】
2011191899.tif 000015