以下、本発明による画像合成装置、及び画像合成方法について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による画像合成装置、及び画像合成方法は、3次元仮想空間に配置された第1のステレオ画像、及び3次元オブジェクトから、両者を合成した第2のステレオ画像を生成するものである。
図1は、本実施の形態による画像合成装置1の構成を示すブロック図である。本実施の形態による画像合成装置1は、記憶部11と、受付部12と、配置部13と、生成部14と、出力部15とを備える。画像合成装置1は、例えば、パーソナル・コンピュータや、スマートフォン、タブレット端末などの汎用の装置であってもよく、または、ステレオ画像と3次元オブジェクトとの合成を行う専用の装置であってもよい。また、画像合成装置1は、例えば、スタンドアロンの装置であってもよく、または、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、受付部12や出力部15は、インターネット等の通信回線を介して入力を受け付けたり、情報を出力したりしてもよい。本実施の形態では、画像合成装置1がスタンドアロンの装置である場合について主に説明する。
記憶部11では、第1の右目用画像及び第1の左目用画像を有する第1のステレオ画像が記憶される。第1のステレオ画像は、例えば、動画像であってもよく、または、静止画像であってもよい。本実施の形態では、第1のステレオ画像が動画像である場合について主に説明する。第1のステレオ画像は、例えば、撮影された画像であってもよく、または、3DCG等によって生成された画像であってもよい。本実施の形態では、第1のステレオ画像が撮影されたステレオ画像である場合について主に説明する。
なお、本実施の形態では、動画である第1のステレオ画像のすべてのデータが記憶部11で記憶されている場合について主に説明するが、そうでなくてもよい。例えば、動画である第1のステレオ画像が画像合成装置1においてリアルタイムで受け付けられ、処理対象の一部のデータのみが記憶部11に記憶されていてもよい。そのような場合であっても、動画である第1のステレオ画像を構成する各フレームは少なくとも一時的に記憶部11で記憶されることになるため、第1のステレオ画像が記憶部11で記憶されると言うことができる。
また、本実施の形態では、撮影画像である第1のステレオ画像が、光軸が平行となるように配置された一対のカメラによって撮影されたものである場合について主に説明し、光軸が交わるように配置された一対のカメラによって撮影されたものである場合については後述する。
記憶部11に第1のステレオ画像が記憶される過程は問わない。例えば、記録媒体を介して第1のステレオ画像が記憶部11で記憶されるようになってもよく、通信回線等を介して送信された第1のステレオ画像が記憶部11で記憶されるようになってもよく、または、撮影デバイス等から入力された第1のステレオ画像が記憶部11で記憶されるようになってもよい。記憶部11は、不揮発性の記録媒体によって実現されることが好適であるが、揮発性の記録媒体によって実現されてもよい。記録媒体は、例えば、半導体メモリや磁気ディスク、光ディスクなどであってもよい。
受付部12は、3次元仮想空間に配置される3次元オブジェクトの操作を受け付ける。この操作は、例えば、3次元オブジェクトの姿勢、位置、形状等に関連する操作であってもよい。受付部12で受け付けられる操作は、3次元仮想空間に配置された3次元オブジェクトの向き、位置、形状等に変化が生じる操作であれば、どのような操作であってもよい。3次元オブジェクトの形状に関する操作とは、例えば、3次元オブジェクトが手術で用いる鉗子である場合に、鉗子の先端を開けたり閉じたりする操作であってもよい。受付部12は、例えば、画像合成装置1から後述する第2のステレオ画像が出力されるVR(Virtual Reality)ヘッドセット(例えば、Oculus Quest 2など)のコントローラ等から、3次元オブジェクトの操作を受け付けてもよく、ジョイスティックやマウスなどのその他の入力デバイスから3次元オブジェクトの操作を受け付けてもよい。なお、3次元オブジェクトの操作の受け付けは、例えば、加速度センサやジャイロセンサ等のセンサを用いて、3次元実空間における位置の変化、角度の変化を検出した結果の受け付けであってもよく、ボタン等の入力デバイスに対する入力の受け付けであってもよい。受付部12は、通常、HMD2や、VRヘッドセットなどのコントローラ等の入力デバイスから、リアルタイムで3次元オブジェクトの操作を受け付ける。受付部12は、入力デバイスや通信回線等を介して、3次元オブジェクトの操作を受け付けてもよい。なお、受付部12は、受け付けを行うためのデバイス(例えば、入力デバイスや通信デバイスなど)を含んでもよく、または含まなくてもよい。また、受付部12は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
配置部13は、第1の右目用画像及び第1の左目用画像の配置される3次元仮想空間に、受付部12によって受け付けられた操作に応じた3次元オブジェクトを配置する。3次元オブジェクトは、受け付けられた操作に応じて位置や姿勢、形状等が変化するため、配置部13は、その操作に応じて、3次元仮想空間上の3次元オブジェクトを変化させることになる。配置部13による3次元オブジェクトの配置は、受付部12によって受け付けられた操作に応じて行われるため、例えば、操作が継続して受け付けられている場合には、3次元仮想空間における3次元オブジェクトの配置も継続して変化することになる。3次元仮想空間に配置された3次元オブジェクトを操作に応じて配置する方法はすでに公知であり、その詳細な説明を省略する。なお、3次元仮想空間に配置された3次元オブジェクトの情報は、例えば、記憶部11で記憶されてもよい。
なお、3次元仮想空間における、第1のステレオ画像が有する第1の右目用画像及び第1の左目用画像の配置位置と、右目用視点及び左目用視点との関係は、通常、あらかじめ決まっている。両者の具体的な関係については後述するが、例えば、(A)第1の右目用画像及び第1の左目用画像は、平行な視線方向の前方側に配置されてもよい。また、例えば、(B)第1の右目用画像及び第1の左目用画像配置は、無限遠に対応する点が重なるように配置されてもよい。
通常、3次元オブジェクトは、第1のステレオ画像と、視点との間に配置される。3次元オブジェクトと視点との間に第1のステレオ画像が存在するようになると、レンダリング後の第2のステレオ画像に3次元オブジェクトが含まれなくなるからである。
生成部14は、3次元オブジェクトの配置された3次元仮想空間において、第1の右目用画像が表示された状態における右目用視点からの画像である第2の右目用画像、及び第1の左目用画像が表示された状態における左目用視点からの画像である第2の左目用画像を含む第2のステレオ画像を生成する。すなわち、第2の右目用画像を生成する際には、3次元仮想空間において第1の右目用画像を表示し、第1の左目用画像を表示しないことが好適である。また、第2の左目用画像を生成する際には、3次元仮想空間において第2の右目用画像を表示し、第2の左目用画像を表示しないことが好適である。なお、第2の右目用画像に第1の左目用画像が入らないのであれば、右目用視点を用いたレンダリング時に、第1の左目用画像が表示されていてもよい。左目用視点を用いたレンダリング時にも同様である。第2のステレオ画像は、第1のステレオ画像に含まれる立体的に表示されるオブジェクト、及び3次元オブジェクトが、第2のステレオ画像においても立体的に表示されるように生成されることが好適である。また、レンダリング時の画角は、例えば、第1のステレオ画像を撮影したカメラの画角と同じにしてもよく、または、異なっていてもよい。
3次元仮想空間における右目用視点及び左目用視点の各位置は、例えば、あらかじめ決まっていてもよく、または、リアルタイムに変更されてもよい。後者の場合には、例えば、HMD2の位置や向きに応じて右目用視点及び左目用視点の各位置が変更されてもよい。また、視点の変更に応じて、3次元仮想空間における第1のステレオ画像の配置も変更されてもよい。通常、視点の位置と、第1の右目用画像及び第1の左目用画像の配置される位置との相対的な関係はあらかじめ決まっているからである。なお、HMD2の位置や向きに応じた視点の変更についてはすでに公知であり、その詳細な説明を省略する。また、視線方向は、それぞれ対応する画像の中心を向いていることが好適である。例えば、右目用視点の視線方向は、右目用画像の中心を向いていることが好適である。本実施の形態では、説明の便宜上、右目用視点及び左目用視点の各視線方向が水平方向である場合について主に説明するが、各視線方向は、水平以外の方向であってもよいことは言うまでもない。
第1のステレオ画像が動画像である場合には、その動画像の各フレームと、3次元オブジェクトとを合成した第2のステレオ画像が生成されることになるため、第2のステレオ画像も動画像となる。この場合には、例えば、3次元仮想空間において、第1のステレオ画像が再生され、また、受け付けられた操作に応じて3次元オブジェクトの配置が変更され、再生されている第1のステレオ画像、及び操作に応じて変更される3次元オブジェクトを含む第2のステレオ画像が生成されてもよい。また、第2のステレオ画像が有する第2の右目用画像及び第2の左目用画像において、第1のステレオ画像の枠(すなわち、外縁)が表示されてもよく、または、そうでなくてもよい。後者の場合には、第1の右目用画像(または、第1の左目用画像)の枠が、第2の右目用画像(または、第2の左目用画像)の枠となるように第2のステレオ画像が生成されてもよい。
なお、配置部13、及び生成部14は、例えば、Unity(Unity Technologies社)などのリアルタイム3D開発プラットフォームを用いて実現することもできる。図8A、図8Bは、Unityの3次元仮想空間に配置された、第1のステレオ画像と、3次元オブジェクトである手術用の鉗子とを示す図である。図8Aでは、第1の右目用画像と第1の左目用画像との位置をずらして配置している。例えば、上記(A)の場合には、このように配置されることになる。なお、本来、両画像は同一平面内に存在するが、説明のため両者を少しずらしている。図8Bでは、第1の右目用画像及び第1の左目用画像を重ねて配置している。例えば、上記(B)の場合には、このように配置されることになる。また、生成部14による画像の生成は、3DCGにおけるレンダリングの処理として公知であり、その詳細な説明を省略する。なお、そのレンダリング時にテクスチャマッピング等が行われてもよいことは言うまでもない。
出力部15は、生成部14によって生成された第2のステレオ画像を出力する。ここで、この出力は、例えば、ステレオ画像を表示する表示デバイス(例えば、HMD、VRヘッドセットなど)への表示でもよく、所定の機器への通信回線を介した送信でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。本実施の形態では、上記のように、出力部15が第2のステレオ画像をHMD2に出力する場合について主に説明する。なお、出力部15は、出力を行うデバイス(例えば、表示デバイスや通信デバイスなど)を含んでもよく、または含まなくてもよい。また、出力部15は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
次に、本実施の形態による画像合成装置1の動作、すなわち画像合成方法について図2のフローチャートを用いて説明する。このフローチャートでは、記憶部11で記憶されている動画像である第1のステレオ画像に、受付部12で受け付けられた操作に応じた3次元オブジェクトを合成することによって第2のステレオ画像を生成する場合について説明する。
(ステップS101)生成部14は、第2のステレオ画像を生成するかどうか判断する。そして、第2のステレオ画像を生成する場合には、ステップS102に進み、そうでない場合には、第2のステレオ画像を生成すると判断するまで、ステップS101の処理を繰り返す。なお、生成部14は、例えば、定期的に第2のステレオ画像を生成すると判断してもよい。より具体的には、生成部14は、第2のステレオ画像のフレーム間の時間間隔ごとに第2のステレオ画像を生成すると判断してもよい。
(ステップS102)受付部12は、3次元オブジェクトの操作を受け付けたかどうか判断する。そして、操作を受け付けた場合には、ステップS103に進み、そうでない場合には、ステップS104に進む。
(ステップS103)配置部13は、受付部12によって受け付けられた操作に応じて、3次元仮想空間に3次元オブジェクトを配置する。この3次元オブジェクトの配置は、3次元仮想空間に配置されている3次元オブジェクトの配置を変更すること、例えば、3次元オブジェクトの位置や角度、形状等を変更することであってもよい。
(ステップS104)生成部14は、3次元仮想空間において第1の右目用画像を表示し、第1の左目用画像を表示していない状態において、第2の右目用画像を生成し、第1の左目用画像を表示し、第1の右目用画像を表示していない状態において、第2の左目用画像を生成することによって、第2のステレオ画像を生成する。なお、この第2の右目用画像及び第2の左目用画像の生成は、右目用の1個のフレーム及び左目用の1個のフレームを生成することであってもよい。この場合には、ステップS104の処理が実行されるごとに、3次元仮想空間に配置される第1の右目用画像及び第1の左目用画像が、1フレームずつ変更されてもよい。生成された一対のフレームは、例えば、図示しない記録媒体や記憶部11で記憶されてもよい。
(ステップS105)出力部15は、ステップS104で生成された第2のステレオ画像を出力する。この出力は、例えば、右目用の1個のフレーム及び左目用の1個のフレームの出力であってもよい。そして、ステップS101に戻る。このように、ステップS101〜S105の処理が繰り返されることによって、HMD2に第1のステレオ画像と、操作に応じて配置が変更される3次元オブジェクトとを合成した第2のステレオ画像が表示されることになる。
なお、図2のフローチャートにおいて、例えば、ステップS101,S104,S105の処理と、ステップS102、S103の処理とは並列して行われてもよい。また、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、第1のステレオ画像の撮影、及び第1のステレオ画像と3次元オブジェクトとの合成について具体的に説明する。
図3は、第1のステレオ画像の撮影について説明するための図である。図3では、右目用カメラ21aと左目用カメラ21bとを用いて第1のステレオ画像を撮影している。すなわち、右目用カメラ21aによって第1の右目用画像22aが撮影され、左目用カメラ21bによって第1の左目用画像22bが撮影される。右目用カメラ21a及び左目用カメラ21bは、通常、同じ仕様のものであり、その結果として、第1の右目用画像22a及び第1の左目用画像22bも同じ画素数の画像となる。図3では、第1のステレオ画像が、光軸が平行となるように配置された一対のカメラ21a、21bによって撮影されるものとする。また、両カメラ21a、21bの光軸は両方とも水平面内にあるものとする。右目用カメラ21aの光軸と、及び左目用カメラ21bの光軸との間の距離は、例えば、人間の平均的な瞳孔間距離程度であってもよい。なお、この例では、撮影対象のオブジェクト20は、中心軸が鉛直方向となるように配置されている円錐であるとする。そして、オブジェクト20は、第1の右目用画像22a及び第1の左目用画像22bに含まれているものとする。なお、図3は、水平面に垂直な鉛直方向からカメラ21a、21bを見ている状態を示しているため、厳密には、オブジェクト20は円形状になるはずであるが、説明の便宜上、オブジェクト20を三角形状に表示している。他の図面においても同様であるとする。
次に、第1の右目用画像22a及び第1の左目用画像22bを、3次元仮想空間において、(A)平行な視線方向の前方側にそれぞれ配置する場合、(B)無限遠に対応する点が重なるように配置する場合のそれぞれについて説明する。
(A)平行な視線方向の前方側にそれぞれ配置する場合
図4Aは、3次元仮想空間において、第1の右目用画像22a及び第1の左目用画像22bを平行な視線方向の前方側にそれぞれ配置する場合について説明するための図である。図4Aにおいて、右目用視点23a及び左目用視点23bが、瞳孔間距離や、ステレオカメラ21a、21bの光軸間の距離程度離れて配置されている。また、矢印で示される視線方向は、平行であり、同じ方向(図4Aでは上方向)を向いている。なお、図4Aでは、視線方向が水平面内に存在するものとする。すなわち、図4Aは、図3と同様に、水平面に垂直な鉛直方向から視点23a、23bや、配置された画像22a、22bを見ているものとする。また、第1の右目用画像22a及び第1の左目用画像22bはそれぞれ、右目用視点23a及び左目用視点23bの前方側において、視線方向が画像に直交し、視線方向が画像の中心を向くように配置されている。また、右目用視点23aと第1の右目用画像22aとの位置関係と、左目用視点23bと第1の左目用画像22bとの位置関係とは同じであるとする。また、第1の右目用画像22a及び第1の左目用画像22bは、同一平面内に含まれるように配置されている。右目用視点23a及び左目用視点23bから、第1の右目用画像22a及び第1の左目用画像22bが含まれる平面までの距離は、例えば、U/(2tan(φ/2))であってもよい。ここで、Uは、第1の右目用画像22a及び第1の左目用画像22bの水平方向の長さであり、φは、右目用視点23a及び左目用視点23bの水平方向の画角である。なお、図4Aでは、第1の右目用画像22a及び第1の左目用画像22bが右側と左側とに離れて配置されている場合について示しているが、両画像は一部が重なるように配置されてもよい(例えば、図8A参照)。
図4Aにおいて、第1の右目用画像22aが表示されている状態で右目用視点23aからの第2の右目用画像が生成され、第1の左目用画像22bが表示されている状態で左目用視点23bからの第2の左目用画像が生成され、それらの第2のステレオ画像がHMD2に出力されたとする。すると、その第2のステレオ画像を見たユーザには、図4Aの破線で示されるように、配置されている第1の右目用画像22a及び第1の左目用画像22bの奥側にオブジェクト20が存在するように見えることになる。
図4Aにおいて、HMD2を装着しているユーザが、ロボットハンドである3次元オブジェクトをコントローラによって操作して、3次元オブジェクト25aで示される位置に配置したとする。すると、図4Bで示されるように、ユーザにとっては、ロボットハンドは手前側に見えて、オブジェクト20は奥側に見えることになる。そのため、ユーザがロボットハンドでオブジェクト20に触ろうとする場合には、3次元オブジェクトを奥側、すなわち視点から離れる側に移動させる必要がある。そして、ユーザが、コントローラを操作して、3次元オブジェクトを奥側に移動させ、3次元オブジェクト25bで示される位置に配置すると、3次元オブジェクト25bの先端側が、第1の右目用画像22aの背面側に位置することになり、視点から見えなくなる。その結果、図4Cで示されるように、ユーザには、ロボットハンドの先端側が見えなくなる。第1の右目用画像22aは、通常、不透明だからである。なお、図4Cでは、ロボットハンドの見えない部分を破線で示している。このように、平行な視線方向の前方側に第1の右目用画像22a及び第1の左目用画像22bをそれぞれ配置する場合には、第1のステレオ画像で表示されるオブジェクト(例えば、オブジェクト20)と、3次元オブジェクトとの位置関係を調整することが困難になる。すなわち、第2のステレオ画像において、両者を重ねることが困難になる。なお、図4B、図4Cは、ステレオ画像を2次元平面上に示している図であり、実際の第2のステレオ画像とは異なるものである。ステレオ画像を示す他の図についても同様である。
なお、ここでは、平行な視線方向の前方側に右目用画像及び左目用画像をそれぞれ配置する場合のデメリットについて説明したが、第1のステレオ画像に含まれるオブジェクトと、3次元オブジェクトとが独立している状況、すなわち、両者が関連しない状況においては、上記のようにステレオ画像と3次元オブジェクトとを合成してもデメリットはないことになる。例えば、第1のステレオ画像が、風景の画像であり、3次元オブジェクトが、ユーザの操作に応じてダンスするキャラクタである場合には、風景の前景側においてキャラクタがダンスをすればよいため、この合成方法を用いることができる。
(B)無限遠に対応する点が重なるように配置する場合
図5は、ステレオ画像における無限遠に対応する点について説明するための図である。図5で示されるように、右目用撮影位置、左目用撮影位置、画角、及び矢印で示される撮影方向がそれぞれ設定されているとすると、右目用画像及び左目用画像は、それぞれ右目用撮影位置から撮影方向に見える画角の範囲内のオブジェクト等を、図中の仮想平面に投影した画像となる。なお、仮想平面は、撮影方向に垂直な平面である。この場合には、撮影方向の前方側の無限遠に存在する点は、仮想平面上の点α、及び点βの位置に投影されることになる。すなわち、右目用画像の点α、及び左目用画像の点βが、無限遠に対応する点となる。なお、点α、及び点βはそれぞれ、右目用画像と右目用撮影位置から延びる撮影方向とが交わる点、及び左目用画像と左目用撮影位置から延びる撮影方向とが交わる点である。したがって、無限遠に対応する点が重なるように第1の右目用画像及び第1の左目用画像を3次元仮想空間に配置する場合には、両者を同じ位置に配置することになる。すなわち、両画像を重ねて配置すればよいことになる。
図6Aは、3次元仮想空間において、撮影された第1の右目用画像22a及び第1の左目用画像22bを、無限遠に対応する点が重なるように配置する場合について説明するための図である。図6Aにおいても、図4Aと同様に、右目用視点23a及び左目用視点23bは、瞳孔間距離や、ステレオカメラ21a、21bの光軸間の距離程度離れて配置されている。なお、この場合には、矢印で示される視線方向は、第1の右目用画像22a及び第2の左目用画像22bの中心を向いている。また、図6Aでも、視線方向が水平面内に存在しているものとする。また、図6Aは、鉛直方向から見た図である。図6Aで示される第1の右目用画像22a及び第1の左目用画像22bはそれぞれ、図4Aで示される位置から、画像の面方向に両者が重なるまで、同じ距離だけ移動されたものである。
図6Aにおいて、第1の右目用画像22aが表示されており、第1の左目用画像22bが表示されていない状態で右目用視点23aからの第2の右目用画像が生成され、第1の左目用画像22bが表示されており、第1の右目用画像22aが表示されていない状態で左目用視点23bからの第2の左目用画像が生成され、それらの第2のステレオ画像がHMD2に出力されたとする。すると、その第2のステレオ画像を見たユーザには、図6Aの破線で示されるように、配置されている第1の右目用画像22a及び第1の左目用画像22bの手前側にオブジェクト20が存在するように見えることになる。
図6Aにおいて、HMD2を装着しているユーザが、ロボットハンドである3次元オブジェクトをコントローラによって操作して、3次元オブジェクト25cで示される位置に配置したとする。すると、図6Bで示されるように、ユーザにとっては、ロボットハンドがオブジェクト20の近傍に見えることになる。そのため、上記(A)の状況とは異なり、ユーザがコントローラを操作することによって、ロボットハンドの先端をオブジェクト20に重ねることができるようになる。このように、無限遠に対応する点が重なるように第1の右目用画像22a及び第1の左目用画像22bを配置することによって、第1のステレオ画像で表示されるオブジェクト(例えば、オブジェクト20)と、3次元オブジェクトとの位置関係を容易に調整できるようになる。すなわち、ステレオ画像で表示されるオブジェクトと、3次元オブジェクトとを重ねることができるようになる。これは、無限遠に対応する第1の右目用画像22a上の点と、無限遠に対応する第1の左目用画像22b上の点とが重なっているため、無限遠に相当する位置が、画像上に存在することになり、3次元オブジェクトを、視点から画像までの範囲内の任意の位置に配置することによって、視点に最も近い位置から無限遠までの任意の位置に配置できるからである。
次に、第1のステレオ画像が、光軸が交わるように配置された一対のカメラによって撮影される場合について説明する。例えば、手術支援ロボットであるダ・ビンチを用いてステレオ画像を撮影する場合には、光軸が交わるように配置されていることがある。この場合には、図7Aで示されるように、右目用撮影位置からの矢印で示される撮影方向(すなわち、カメラの光軸)と、左目用撮影位置からの矢印で示される撮影方向とが視線の前方側(すなわち、カメラの前方側)において交わることになる。このように撮影される右目用画像と左目用画像との無限遠に対応する位置は、図中の点α1、及び点β1となる。それらの点は、撮影方向とのなす角度が等しくなるように、右目用撮影位置及び左目用撮影位置から延びる平行な2直線と、右目用画像及び左目用画像との交点である。なお、右目側の状況と、左目側の状況とは対照になっているため、右目用画像において点α1を特定することができれば、左目用画像において点β1を特定することもできるようになる。したがって、以下、右目用画像における点α1の位置の特定について説明する。
図7Bで示されるように、撮影方向と右目用画像との交点から点α1までの距離をXとし、右目用撮影位置から撮影画像までの距離をLとし、右目用画像の水平方向の長さをUとし、水平方向の画角をφとし、撮影方向と、右目用撮影位置と点α1とを結ぶ直線とのなす角度をθとすると、次式が得られる。
tan(φ/2)=U/(2L)
tanθ=X/L
したがって、Xは、次式のようになる。
X=U×tanθ/(2tan(φ/2))
ここで、φは、撮影で用いるカメラによって決まるため既知である。また、2θが、図7Aにおける右目側及び左目側の視線方向のなす角度であるため、θも既知である。したがって、図7Aのように撮影された第1の右目用画像22a及び第1の左目用画像22bを、無限遠に対応する点が重なるように配置する際には、その画像の水平方向の幅であるUと、θ及びφを用いて上記のようにXを算出し、第1の右目用画像22aにおいて、中心から水平方向にXだけ離れた点α1と、第1の左目用画像22bにおいて、中心から水平方向にXだけ離れた点β1とが重なるように両画像を配置すればよいことになる。なお、3次元仮想空間に第1の右目用画像22a及び第1の左目用画像22bを配置する際には、図7Bにおける右目用撮影位置が右目用視点となるようにしてもよい。すなわち、3次元仮想空間に配置された右目用視点及び左目用視点からの距離がLとなる平面上に、点α1と点β1とが重なるように第1の右目用画像22a及び第1の左目用画像22bを配置してもよい。ここで、Lは、上式から、L=U/(2tan(φ/2))となる。また、第1の右目用画像22a及び第1の左目用画像22bは、右目用視点23a及び左目用視点23bを結ぶ線分の中点をとおり、その線分に垂直な平面に対して、対称になるように配置されることが好適である。すなわち、図6Aのように配置された画像を正面側から見た場合に、第1の右目用画像22aを、画像を含む平面内においてXだけ左側に移動させ、第1の左目用画像22bを、画像を含む平面内においてXだけ右側に移動させればよいことになる。その結果、図6Cで示されるように、第1の右目用画像22a及び第1の左目用画像22bが配置されることになる。なお、図6Cでは、説明の便宜上、第1の右目用画像22a及び第1の左目用画像22bをずらして表示しているが、実際には、第1の右目用画像22a及び第1の左目用画像22bは同一平面上に存在している。この場合にも、視線方向は、それぞれ対応する画像の中心を向くように設定される。このように、第1のステレオ画像が、光軸が交わるように配置された一対のカメラによって撮影される場合であっても、無限遠に対応する点が重なるように第1の右目用画像及び第1の左目用画像を配置することができ、その結果、第1のステレオ画像に含まれるオブジェクトと、3次元オブジェクトとの位置関係を容易に調整することができるようになる。
以上のように、本実施の形態による画像合成装置1、及び画像合成方法によれば、3次元仮想空間に第1のステレオ画像の有する第1の右目用画像及び第1の左目用画像と、3次元オブジェクトとを配置し、第1の右目用画像を表示している状態において新たな右目用画像を生成し、第1の左目用画像を表示している状態において新たな左目用画像を生成することによって、第1のステレオ画像と3次元オブジェクトとを合成した第2のステレオ画像を生成することができる。このようにして両者を合成することにより、ステレオ画像に含まれるオブジェクト、及び3次元オブジェクトの両方を立体的に表示することができる第2のステレオ画像を生成できることになる。また、3次元仮想空間において、無限遠に対応する点が重なるように第1の右目用画像及び第1の左目用画像を配置することによって、ステレオ画像に含まれるオブジェクトと、3次元オブジェクトとの位置関係を適切に調整することができるようになる。例えば、ステレオ画像に含まれるオブジェクトに3次元オブジェクトを重ねて表示することができるようになる。また、3次元オブジェクトと、ステレオ画像に含まれるオブジェクトとを重ねる際に、3次元オブジェクトの一部がステレオ画像の背面側に位置することによって見えなくなる事態を回避することもできる。
なお、本実施の形態では、第1及び第2のステレオ画像が動画像である場合について主に説明したが、そうでなくてもよい。第1及び第2のステレオ画像は静止画であってもよい。この場合には、静止画である第1のステレオ画像に、操作に応じて配置された3次元オブジェクトが合成された静止画である第2のステレオ画像が生成されることになる。
次に、本実施の形態による画像合成装置1の利用例について説明する。
第1のステレオ画像は、熟練者の動作を撮影した動画像であり、3次元オブジェクトは、熟練者が用いている器具等に相当するものであり、その3次元オブジェクトを操作するユーザは、熟練者の動作を真似る初心者であってもよい。この場合には、熟練者の動作を示す第1のステレオ画像に、初心者が操作する3次元オブジェクトを合成した第2のステレオ画像が生成されることになる。より具体的には、熟練者の動作は、手術の動作であってもよく、スポーツにおけるプレーの動作や、楽器の演奏などにおける動作であってもよい。また、3次元オブジェクトは、例えば、手術で用いられる鉗子などの器具や、スポーツで用いられる野球のバット、ゴルフのクラブ、テニスやバドミントン、卓球のラケット等の器具、音楽の演奏で用いる楽器などであってもよい。このようにして、初心者が熟練者の動作を真似ることができ、手術やスポーツのプレー、楽器の演奏などについて練習できるようになる。この場合には、第1のステレオ画像に含まれるオブジェクトに、3次元オブジェクトを重ねられることが重要であると考えられるため、上記(B)のように第1のステレオ画像と3次元オブジェクトとの合成が行われることが好適である。
第1のステレオ画像は、俳優や女優、歌手など人間の動画像であり、3次元オブジェクトは、ユーザの手などであり、ユーザが3次元オブジェクトである手などを操作することによって、仮想空間上で俳優などと握手をできるようになっていてもよい。この場合には、第2のステレオ画像は、俳優などの人間と、ユーザが操作する3次元オブジェクトである手などとを合成したものとなる。このようにして、ユーザは、例えば、有名人と握手をすることができるようになる。この場合にも、第1のステレオ画像に含まれる有名人等の手の位置に、ユーザの手に相当する3次元オブジェクトを重ねられることが重要であると考えられるため、上記(B)のように第1のステレオ画像と3次元オブジェクトとの合成が行われることが好適である。
第1のステレオ画像は、建物の内部の撮影画像やCGなどの静止画であり、3次元オブジェクトは家具であり、ユーザが、その家具を操作することによって、家具の配置を変更し、建物の内部に配置された家具の状況を示す第2のステレオ画像が生成されてもよい。ユーザは、この第2のステレオ画像によって、家具の配置後の状況を立体的に見ることができるようになる。この場合にも、第1のステレオ画像に含まれるオブジェクトに、3次元オブジェクトを重ねられることが重要であると考えられるため、上記(B)のように第1のステレオ画像と3次元オブジェクトとの合成が行われることが好適である。
第1のステレオ画像は、工事現場や、修理現場などの実空間にいるユーザが装着しているステレオカメラによって撮影された動画像であり、3次元オブジェクトは、熟練者が第1のステレオ画像上の位置を示すポインタや、実空間で使用される器具に相当するオブジェクトであり、第2のステレオ画像は、実空間の第1のステレオ画像に、3次元オブジェクトが合成されたものであってもよい。その第2のステレオ画像を、熟練者及び実空間にいるユーザが見てもよい。熟練者は、3次元オブジェクトを操作することによって、実空間のユーザに指示を出したり、実空間のユーザが実行すべきことを、3次元オブジェクトを用いて実演したりすることができる。また、実空間にいるユーザは、熟練者によって操作された3次元オブジェクトを含む第2のステレオ画像を見て、作業を行うことによって、実空間において適切な作業を行うことができるようになる。この場合には、画像合成装置1は、第1のステレオ画像をリアルタイムで受け付け、第2のステレオ画像をリアルタイムで出力してもよい。この場合にも、第1のステレオ画像に含まれるオブジェクトに、3次元オブジェクトを重ねられることが重要であると考えられるため、上記(B)のように第1のステレオ画像と3次元オブジェクトとの合成が行われることが好適である。
なお、ここではいくつかの利用例について示したが、第1のステレオ画像と3次元オブジェクトとを合成する他の例について画像合成装置1を利用できることは明らかであり、上記以外の状況で画像合成装置1が利用されてもよいことは言うまでもない。
また、画像合成装置1では、第1のステレオ画像に含まれるオブジェクトと、受付部12によって受け付けられる操作に応じて配置される3次元オブジェクトとの位置関係に関する判定を行ってもよい。位置関係に関する判定は、例えば、第1のステレオ画像に含まれるオブジェクトと、3次元オブジェクトとが当たっているかどうかを判定する当たり判定であってもよく、両者が重なっているかどうかを判定する重なり判定であってもよく、両者の位置関係に関するその他の判定であってもよい。この場合には、画像合成装置1は、図9で示されるように、判定部16をさらに備えてもよい。また、この場合には、第1のステレオ画像に含まれるオブジェクトと、3次元オブジェクトとの位置関係の調整が重要になるため、上記(B)のように第1のステレオ画像と3次元オブジェクトとの合成が行われることが好適である。
判定部16は、3次元仮想空間に配置された第1の右目用画像及び第1の左目用画像から、第1のステレオ画像に含まれるオブジェクトの3次元仮想空間における位置を特定する。この位置の特定は、例えば、第1の右目用画像及び第1の左目用画像の対応点を特定し、3次元仮想空間における対応点の位置と、右目用視点及び左目用視点の位置とを用いて行われてもよい。例えば、第1の右目用画像及び第1の左目用画像の一対の対応点に相当する3次元仮想空間における位置は、3次元仮想空間において、第1の右目用画像の対応点と右目用視点とを結ぶ直線と、第1の左目用画像の対応点と左目用視点とを結ぶ直線との交点の位置となってもよい。なお、誤差等によって両直線が交わらない場合には、両直線間の距離が最も近くなる両直線上の位置の中点を、第1の右目用画像及び第1の左目用画像の一対の対応点に相当する3次元仮想空間における位置としてもよい。なお、このように、ステレオ画像上の対応点に相当する3次元空間上の点を特定する処理はすでに公知であり、その詳細な説明を省略する。判定部16は、このような処理を第1のステレオ画像の各対応点について行うことによって、第1の右目用画像及び第1の左目用画像に含まれる各ピクセルに相当する3次元仮想空間における位置を特定することができる。なお、このようにして特定された位置は、通常、3次元仮想空間において面を構成することになる。ステレオ画像では、背面側の構造まではわからないからである。また、判定部16は、第1のステレオ画像において輪郭抽出等を行うことによって画像に含まれるオブジェクトを特定し、特定したオブジェクトごとに位置の特定を行ってもよい。
第1のステレオ画像に含まれるオブジェクトの3次元仮想空間における位置を特定すると、判定部16は、その特定した位置と、3次元仮想空間における3次元オブジェクトの位置との関係に関する判定を行う。この判定は、当たり判定、及び、重なり判定の少なくとも一方であってもよい。判定部16は、例えば、第1のステレオ画像に含まれるオブジェクトの3次元仮想空間における位置によって構成される面と、3次元仮想空間における3次元オブジェクトの少なくとも一部とが重なっている場合に、両者が当たっていると判定してもよい。また、判定部16は、例えば、第1のステレオ画像に含まれるオブジェクトの3次元仮想空間における位置によって構成される少なくとも一部の面と、3次元仮想空間における3次元オブジェクトの少なくとも一部の面とが重なっている場合に、両者が重なっていると判定してもよい。この場合には、例えば、重なりの程度を示す指標が取得されてもよい。その指標は、例えば、第1のステレオ画像に含まれるオブジェクトの3次元仮想空間における位置によって構成される面と、3次元仮想空間における3次元オブジェクトの面との重なりが最も多くなった場合の重なりを100%とした、重なりの程度を示す指標であってもよい。
出力部15は、第1のステレオ画像に含まれるオブジェクトと、3次元オブジェクトとの位置関係に関する判定部16による判定結果に関する出力をも行ってもよい。その出力は、例えば、当たり判定の結果や、重なり判定の結果の出力であってもよく、当たり判定の結果によって両者が当たっていることが示される場合に、両者が当たっていることを示す出力であってもよく、重なり判定の結果によって両者が重なっていることが示される場合に、両者が重なっていることを示す出力や、その重なりの程度を示す指標の出力であってもよい。より具体的には、出力部15は、第2のステレオ画像に、判定結果に応じた表示を重畳して出力してもよく、判定結果に応じて、ユーザが操作しているコントローラを振動させてもよく、判定結果に応じた音を出力してもよく、判定結果に応じたその他の出力を行ってもよい。例えば、図6Bで示されるようにユーザが3次元オブジェクトであるロボットアームを操作しており、そのロボットアームが、第1のステレオ画像に含まれる円錐形状のオブジェクトに当たった時に、両者が当たったことを示す表示(例えば、画面全体の点滅等)や、両者が当たったことを示す振動出力や音出力が行われてもよい。また、例えば、図8A,図8Bで示されるようにユーザが3次元オブジェクトである鉗子を操作しており、その鉗子が、模擬手術の映像である第1のステレオ画像に含まれる鉗子に重なった時に、両者が重なったことを示す表示(例えば、重なったこと示す図形の表示等)や、両者の重なりの程度を示す指標の出力が行われてもよい。このように、第1のステレオ画像に含まれるオブジェクトの位置と、3次元オブジェクトの位置との関係に関する判定が行われることによって、3次元オブジェクトを操作しているユーザは、例えば、3次元オブジェクトの位置を確認することができ、3次元オブジェクトを適切に操作できているかどうかを知ることができるようになる。
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
また、上記実施の形態において、画像合成装置1に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態における画像合成装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、第1の右目用画像及び第1の左目用画像を有する第1のステレオ画像が記憶される記憶部にアクセス可能なコンピュータを、3次元仮想空間に配置される3次元オブジェクトの操作を受け付ける受付部、第1の右目用画像及び第1の左目用画像の配置される3次元仮想空間に、受付部によって受け付けられた操作に応じた3次元オブジェクトを配置する配置部、3次元オブジェクトの配置された3次元仮想空間において、第1の右目用画像が表示された状態における右目用視点からの画像である第2の右目用画像、及び第1の左目用画像が表示された状態における左目用視点からの画像である第2の左目用画像を含む第2のステレオ画像を生成する生成部、第2のステレオ画像を出力する出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を受け付ける受付部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
図10は、上記プログラムを実行して、上記実施の形態による画像合成装置1を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図10において、コンピュータシステム900は、CD−ROMドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図11は、コンピュータシステム900の内部構成を示す図である。図11において、コンピュータ901は、CD−ROMドライブ905に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANやWAN等への接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態による画像合成装置1の機能を実行させるプログラムは、CD−ROM921に記憶されて、CD−ROMドライブ905に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921、またはネットワークから直接、ロードされてもよい。また、CD−ROM921に代えて他の記録媒体(例えば、DVD等)を介して、プログラムがコンピュータシステム900に読み込まれてもよい。
プログラムは、コンピュータ901に、上記実施の形態による画像合成装置1の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。