(57)【要約】  画像生成装置２００の位置・姿勢取得部２５０は、ユーザの視点に係る位置情報を取得する。ビュースクリーン設定部２５２はビュースクリーンを設定する。原画像操作部２５４は、原画像の各画素の視差値および視点の移動量から、オブジェクトが固定されて見えるように画素の補正量を計算し、補正後の各画素の座標から補正前の位置を参照する画像参照ベクトルを画素ごとに格納した画像参照ベクトルマップを左右の視点ごとに生成する。この際、視点によっては参照先を別視点からの原画像とする。表示画像生成部２６８は、ビュースクリーンの各画素に対応する画像参照ベクトルに基づき原画像を参照しカラー値を決定する。出力部２７０は表示画像を出力する。
2017212720.tif 000002
【特許請求の範囲】
【請求項１】
複数の視点から取得された原画像を用いて、オブジェクトを立体視できる画像を生成する画像生成装置であって、
ユーザの視点の移動に応じて前記原画像の各画素に生じさせるべき変位を算出し、変位後の位置から前記原画像における変位前の位置を参照する参照ベクトルを変位後の画像平面上に並べたベクトルマップを、左右の視点ごとに生成する原画像操作部と、
表示画像の各画素に対応する前記ベクトルマップ上の位置における前記参照ベクトルに基づき、当該表示画素の画素値を、前記原画像上の対応する位置における画素値を参照することにより決定して、左右の視点に対応する表示画像をそれぞれ生成する表示画像生成部と、
前記表示画像のデータを出力する出力部と、
を備え、
前記原画像操作部は、前記左右の視点のうち一方の視点に対する前記ベクトルマップに設定する前記参照ベクトルに、別視点から取得された原画像を参照先とする前記参照ベクトルを含め、
前記表示画像生成部は、前記一方の視点に対する表示画像の画素値を決定する際、前記別視点から取得された原画像を参照先に含めることを特徴とする画像生成装置。
【請求項２】
前記原画像操作部は、前記一方の視点から取得された原画像において死角となる画素領域について、前記別視点から取得された原画像を参照先とする前記参照ベクトルを設定することを特徴とする請求項１に記載の画像生成装置。
【請求項３】
前記原画像操作部は、立体視に想定される左右の視点から取得された原画像のうちの一方を、前記別視点から取得された原画像として用いることを特徴とする請求項１または２に記載の画像生成装置。
【請求項４】
前記原画像操作部は、立体視に想定される左右の視点と異なる視点から取得された原画像を、前記別視点から取得された原画像として用いることを特徴とする請求項１から３のいずれかに記載の画像生成装置。
【請求項５】
前記原画像操作部は、前記一方の視点から取得された原画像における各画素の視差値に基づき、前記別視点から取得された原画像における対応する画素を特定し、当該原画像におけるそれ以外の画素を参照先とする前記参照ベクトルを、前記一方の視点に対する前記ベクトルマップに含めることを特徴とする請求項１から４のいずれかに記載の画像生成装置。
【請求項６】
前記原画像操作部は、前記別視点から取得された原画像を参照先とする前記参照ベクトルを前記ベクトルマップに設定する際、設定先の画素に別の前記参照ベクトルがすでに設定されている場合、それぞれが参照先とする画素における前記オブジェクトの距離値に基づく比較を行い、距離値が小さい場合に設定を更新することを特徴とする請求項１から５のいずれかに記載の画像生成装置。
【請求項７】
前記原画像操作部は、前記一方の視点から取得された原画像を参照先とする前記参照ベクトルを前記ベクトルマップに設定する際、設定した参照ベクトルが参照先とする画素における前記オブジェクトの距離値の信頼度の高低を表すフラグを対応づけて設定し、前記別視点から取得された原画像を参照先とする前記参照ベクトルを設定する際、設定先の画素にすでに設定されている前記参照ベクトルに対応する前記フラグが、低い信頼度を示している場合、前記距離値に基づく比較を省略して設定を更新することを特徴とする請求項６に記載の画像生成装置。
【請求項８】
前記原画像操作部は、前記一方の視点から取得された原画像における前記変位による画素の広がりの度合いを評価し、当該評価の結果に基づき、前記信頼度の高低を決定することを特徴とする請求項７に記載の画像生成装置。
【請求項９】
複数の視点から取得された原画像を用いて、オブジェクトを立体視できる画像を生成する画像生成方法であって、
ユーザの視点に係る情報を取得するステップと、
前記視点の移動に応じて前記原画像の各画素に生じさせるべき変位を算出し、変位後の位置から前記原画像における変位前の位置を参照する参照ベクトルを変位後の画像平面上に並べたベクトルマップを、左右の視点ごとに生成するステップと、
表示画像の各画素に対応する前記ベクトルマップ上の位置における前記参照ベクトルに基づき、当該表示画素の画素値を、前記原画像上の対応する位置における画素値を参照することにより決定して、左右の視点に対応する表示画像をそれぞれ生成するステップと、
前記表示画像のデータを出力するステップと、
を含み、
前記ベクトルマップを生成するステップは、前記左右の視点のうち一方の視点に対する前記ベクトルマップに設定する前記参照ベクトルに、別視点から取得された原画像を参照先とする前記参照ベクトルを含め、
前記表示画像を生成するステップは、前記一方の視点に対する表示画像の画素値を決定する際、前記別視点から取得された原画像を参照先に含めることを特徴とする画像生成装置による画像生成方法。
【請求項１０】
複数の視点から取得された原画像を用いて、オブジェクトを立体視できる画像を生成するコンピュータプログラムであって、
ユーザの視点に係る情報を取得する機能と、
前記視点の移動に応じて前記原画像の各画素に生じさせるべき変位を算出し、変位後の位置から前記原画像における変位前の位置を参照する参照ベクトルを変位後の画像平面上に並べたベクトルマップを、左右の視点ごとに生成する機能と、
表示画像の各画素に対応する前記ベクトルマップ上の位置における前記参照ベクトルに基づき、当該表示画素の画素値を、前記原画像上の対応する位置における画素値を参照することにより決定して、左右の視点に対応する表示画像をそれぞれ生成する機能と、
前記表示画像のデータを出力する機能と、
をコンピュータに実現させ、
前記ベクトルマップを生成する機能は、前記左右の視点のうち一方の視点に対する前記ベクトルマップに設定する前記参照ベクトルに、別視点から取得された原画像を参照先とする前記参照ベクトルを含め、
前記表示画像を生成する機能は、前記一方の視点に対する表示画像の画素値を決定する際、前記別視点から取得された原画像を参照先に含めることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、立体映像を生成する画像生成装置および画像生成方法に関する。
【背景技術】
【０００２】
映像を立体的に提示できる３次元テレビやヘッドマウントディスプレイ等の３次元表示デバイスが利用されている。携帯電話や携帯ゲーム機等の携帯端末機において映像を立体的に提示できるデバイスも開発されており、一般のユーザが立体的な映像を視聴する機会が増加してきている。【０００３】
立体的な映像を表示する３次元表示デバイスは、ユーザの左右の目に視差のある画像を見せることでユーザが画像を立体視することを可能にする。左右の目に視差のある画像を見せるために特殊な光学メガネを利用する方式や、光学メガネを使わずにパララックスバリアやレンチキュラーレンズを用いる方式などがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
歪みのない立体映像を見せるためには、ユーザの視点に基づく正確な視差画像を生成する必要がある。したがって視点の動きを許容して立体映像を提示するには、一般的には仮想３次元空間にオブジェクトを配置しカメラ座標系を変化させて射影するなどの処理が必要になる。しかしながら画像の質や精度を追求するほど、そのような処理に要する時間が増え、表示が視点の動きに追随しにくくなる。また元の視差画像のデータに多くの操作が加わることにより、画質が劣化する可能性が高くなる。【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、視点が変位しても高品質な立体画像を少ない遅延で生成できる技術を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様は画像生成装置に関する。この画像生成装置は、複数の視点から取得された原画像を用いて、オブジェクトを立体視できる画像を生成する画像生成装置であって、ユーザの視点の移動に応じて原画像の各画素に生じさせるべき変位を算出し、変位後の位置から前記原画像における変位前の位置を参照する参照ベクトルを変位後の画像平面上に並べたベクトルマップを、左右の視点ごとに生成する原画像操作部と、表示画像の各画素に対応するベクトルマップ上の位置における参照ベクトルに基づき、当該表示画素の画素値を、原画像上の対応する位置における画素値を参照することにより決定して、左右の視点に対応する表示画像をそれぞれ生成する表示画像生成部と、表示画像のデータを出力する出力部と、を備え、原画像操作部は、左右の視点のうち一方の視点に対するベクトルマップに設定する参照ベクトルに、別視点から取得された原画像を参照先とする参照ベクトルを含め、表示画像生成部は、一方の視点に対する表示画像の画素値を決定する際、別視点から取得された原画像を参照先に含めることを特徴とする。【０００７】
本発明の別の態様は画像生成方法に関する。この画像生成方法は、複数の視点から取得された原画像を用いて、オブジェクトを立体視できる画像を生成する画像生成方法であって、ユーザの視点に係る情報を取得するステップと、視点の移動に応じて原画像の各画素に生じさせるべき変位を算出し、変位後の位置から原画像における変位前の位置を参照する参照ベクトルを変位後の画像平面上に並べたベクトルマップを、左右の視点ごとに生成するステップと、表示画像の各画素に対応するベクトルマップ上の位置における参照ベクトルに基づき、当該表示画素の画素値を、原画像上の対応する位置における画素値を参照することにより決定して、左右の視点に対応する表示画像をそれぞれ生成するステップと、表示画像のデータを出力するステップと、を含み、ベクトルマップを生成するステップは、左右の視点のうち一方の視点に対するベクトルマップに設定する参照ベクトルに、別視点から取得された原画像を参照先とする参照ベクトルを含め、表示画像を生成するステップは、一方の視点に対する表示画像の画素値を決定する際、別視点から取得された原画像を参照先に含めることを特徴とする。【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によると、視点が変位しても高品質な立体画像を少ない遅延で提示できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１における画像表示システムの構成図である。
【図２】実施の形態１の画像表示システムによって実現される表示の形態を説明するための図である。
【図３】図２の態様を実現するために画像生成装置が生成する画像を模式的に示している。
【図４】実施の形態１において立体視用の画像を取得する段階で与えられる視差と画像の関係を説明するための図である。
【図５】実施の形態１において適切な位置から視差画像を鑑賞する場合の視点と画像の関係を示す図である。
【図６】図５の配置において、仮想空間における鑑賞者の視点がずれたときの視覚的な歪みを説明するための図である。
【図７】実施の形態１における画像生成装置が、原画像から表示画像を生成する処理手順の概略を示すフローチャートである。
【図８】実施の形態１における画像生成装置の内部回路構成を示す図である。
【図９】実施の形態１における画像生成装置の機能ブロックを示す図である。
【図１０】実施の形態１における視点の移動量と、それに応じた原画像の画素の移動量との関係を説明するための図である。
【図１１】実施の形態１において左右の原画像に表される同一のオブジェクトの像を重ねて示す図である。
【図１２】実施の形態１における原画像の各画素の変位ベクトルを示す図である。
【図１３】実施の形態１における画像参照ベクトルの生成方法を説明するための図である。
【図１４】実施の形態１における画像参照ベクトルを説明するための図である。
【図１５】実施の形態１において、１画素のみが有効な場合の、画像参照ベクトルの生成手法を説明する図である。
【図１６】実施の形態１において、２画素が有効な場合を示す図である。
【図１７】実施の形態１において、２画素のみが有効な場合の、画像参照ベクトルの生成手法を説明する図である。
【図１８】実施の形態１において、２画素のみが有効な場合の、画像参照ベクトルの生成手法を説明する図である。
【図１９】実施の形態１において、３画素が有効な場合の、画像参照ベクトルの生成手法を説明する図である。
【図２０】実施の形態１において、４画素が有効な場合の、画像参照ベクトルの生成手法を説明する図である。
【図２１】実施の形態１における仮想空間を観察するユーザの両目の位置の回転を説明する図である。
【図２２】実施の形態１における仮想空間に配置された原画像を中心視点から見た場合の画像を説明する図である。
【図２３】実施の形態１における左目用画像と右目用画像とを中心視点で重ねた状態を説明する図である。
【図２４】実施の形態１における右目用画像における回転補正を説明する図である。
【図２５】図７のＳ１２において、原画像操作部が画像参照ベクトルマップを生成する処理手順をより詳細に示すフローチャートである。
【図２６】図７のＳ１４において、表示画像生成部が原画像をビュースクリーンにマッピングする処理手順をより詳細に示すフローチャートである。
【図２７】実施の形態１における表示画像、画像参照ベクトルマップ、および原画像の関係を説明するための図である。
【図２８】実施の形態１において画像参照ベクトルマップをサンプリングする方法を説明するための図である。
【図２９】実施の形態１における、画像参照ベクトルマップの指定されたテクスチャ座標の周囲の４画素とも有効な場合のフィルタリングを説明する図である。
【図３０】実施の形態１における、画像参照ベクトルマップの指定されたテクスチャ座標の周囲の４画素のうち、３画素が有効な場合のフィルタリングを説明する図である。
【図３１】実施の形態１において、右目から死角領域にある、左目用原画像の画素を説明するための図である。
【図３２】実施の形態１において、視点の移動量と、右目用の画像参照ベクトルマップにおいて左目用の原画像を参照する際の画素の移動量との関係を説明するための図である。
【図３３】実施の形態１における原画像の例を示す図である。
【図３４】実施の形態１における原画像の例を示す図である。
【図３５】実施の形態１における、左目用の表示画像生成処理において右目用の原画像を参照する相互参照フラグを右目画像において示した図である。
【図３６】実施の形態１における、右目用の表示画像生成処理において左目用の原画像を参照する相互参照フラグを左目画像において示した図である。
【図３７】実施の形態１においてＺバッファに信用度フラグを設定する必要性を説明する図である。
【図３８】実施の形態１において視点を右方向に移動させた場合の、左目用のマップに対する信用度フラグを示す図である。
【図３９】実施の形態１において視点を右方向に移動させた場合の、左目用のマップに設定される相互参照を行う画像参照ベクトルを説明するための図である。
【図４０】実施の形態１において視点を下方向に移動させた場合の、左目用のマップに設定される相互参照を行う画像参照ベクトルを説明するための図である。
【図４１】実施の形態１において相互参照を導入した場合の画像参照ベクトルを説明する図である。
【図４２】実施の形態１において画像参照ベクトルのフィルタ処理の場合分けを説明するための図である。
【図４３】実施の形態１において相互参照がない場合の、表示画像のカラー値の決定処理を説明するための図である。
【図４４】実施の形態１において異なる原画像を参照先に含む場合の、表示画像のカラー値の決定処理を説明するための図である。
【図４５】実施の形態１において原画像操作部が、画像参照ベクトルマップに相互参照のための画像参照ベクトルを設定する処理手順を示すフローチャートである。
【図４６】実施の形態１において相互参照を適用した場合に、表示画像生成部が原画像をビュースクリーンにマッピングする処理手順を示すフローチャートである。
【図４７】実施の形態１との比較のため、相互参照を行わなかった場合の左目画像の表示画像例を示す図である。
【図４８】実施の形態１において相互参照を行った場合の左目画像の表示画面例を示す図である。
【図４９】実施の形態１との比較のため、相互参照を行わなかった場合の左目画像の別の表示画面例を示す図である。
【図５０】実施の形態１において相互参照を行った場合の左目画像の表示画面例を示す図である。
【図５１】図５０の相互参照描画画像において、左目画素と右目画素を区別して示す図である。
【図５２】実施の形態２におけるヘッドマウントディスプレイの外観図である。
【図５３】実施の形態２の画像表示システムによって実現される表示の形態を説明するための図である。
【図５４】実施の形態２の画像生成装置が生成する画像を模式的に示す図である。
【図５５】実施の形態２において、仮想空間で画像スクリーンの位置を固定し、ユーザが画像側に移動した際の画像の見え方を模式的に示す図である。
【図５６】実施の形態２において、視点の位置に応じて原画像を変化させる手法を説明するための図である。
【図５７】実施の形態２において、視線の方向を加味して原画像をビュースクリーン上に描画する様子を示す図である。
【図５８】実施の形態２において、視点の移動量のうちＺ軸方向およびＸ軸方向の移動量成分と、それに応じた原画像の画素の移動量との関係を説明するための図である。
【図５９】実施の形態２において、視点の移動量のうちＺ軸方向およびＹ軸方向の移動量成分と、それに応じた原画像の画素の移動量との関係を説明するための図である。
【図６０】実施の形態２において、画像スクリーンを移動させない場合の画素の移動量を説明するための図である。
【図６１】実施の形態２において、原画像および画像参照ベクトルマップにおける画素の区分と位置の対応関係を模式的に示す図である。
【図６２】実施の形態２において、視点の移動量のうちＺ軸方向およびＸ軸方向の移動量成分と、右目用の画像参照ベクトルマップにおいて左目用の原画像を参照する際の画素の移動量との関係を説明するための図である。
【図６３】実施の形態２において、拡張参照における画像参照ベクトルの計算手法を説明するための図である。
【図６４】図７のＳ１２において原画像操作部が画像参照ベクトルマップを生成する処理手順を示すフローチャートである。
【図６５】図６４のＳ１２２において、自己画像を参照先とする画像参照ベクトルを設定する処理手順を示すフローチャートである。
【図６６】図６４のＳ１２４において、相互参照および拡張参照時の画像参照ベクトルを設定する処理手順を示すフローチャートである。
【図６７】実施の形態２において、原画像の画素中心とそれに対応する画像参照ベクトルマップ上の位置との関係例を模式的に示す図である。
【図６８】実施の形態２において、Ｚ値の補間対象となった画素と、相互参照または拡張参照を行う画素との関係を説明するための図である。
【図６９】実施の形態２における画像参照ベクトルの補間手法を説明するための図である。
【図７０】図７のＳ１４において、表示画像生成部が画像参照ベクトルマップを用いて表示画像を生成する手順を示すフローチャートである。
【図７１】実施の形態２において、表示画像、画像参照ベクトルマップ、原画像の関係を説明するための図である。
【図７２】実施の形態２において、画像参照ベクトルのバイリニア補間について説明するための図である。
【図７３】実施の形態２において、原画像をミップマップテクスチャとする場合の表示画像との関係を説明するための図である。
【図７４】実施の形態２において、画像スクリーンからマップスクリーンへの変換時のＬＯＤを計算する手法を説明するための図である。
【図７５】実施の形態２の手法を用いずに、オブジェクトの像を微小三角形に分割した単位で直接マッピングする場合の、ミップマッピングにおける問題を説明するための図である。
【図７６】実施の形態２において、視点の移動によって像をサブピクセルレベルで移動させるときの画像の変化を模式的に示す図である。
【図７７】実施の形態２において、視差値画像の拡張前後の画像参照ベクトルマップを模式的に示す図である。
【図７８】実施の形態２において視差値画像を拡張した場合の、サブピクセルレベルでの移動に伴う画像の変化を模式的に示す図である。
【図７９】実施の形態２において、画像参照ベクトルマップおよびＺバッファが画素単位で保持するデータの構造を例示する図である。
【図８０】レンズ歪み補正処理を含む画像の変遷を模式的に示す図である。
【図８１】実施の形態２において、画像参照ベクトルマップを利用して、一旦描画された画像にその後の視点移動を反映させる手法を説明するための図である。
【発明を実施するための形態】
【００１１】
実施の形態１
本実施の形態は、視差を有する一対のステレオ画像のうち右目用画像を右目に、左目用画像を左目に到達させることにより立体視させる３次元画像表示システムに関する。その限りにおいて画像の表示形態やユーザの鑑賞形態は限定されない。例えば平板型ディスプレイやスクリーンに同時あるいは交互に視差画像を表示させ、偏光眼鏡やシャッター眼鏡により鑑賞する態様が考えられる。あるいは左右の目に対し独立に画像を提示できるヘッドマウントディスプレイを利用することも考えられる。
【００１２】
図１は、本実施の形態における画像表示システムの構成の一例を示す図である。この例の画像表示システムは表示装置として平板型ディスプレイ１２を導入している。平板型ディスプレイ１２は、無線通信またはＵＳＢなどの周辺機器を接続するインタフェース１４で画像生成装置２００に接続される。画像生成装置２００は、さらにネットワークを介してサーバに接続されてもよい。その場合、サーバは、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションを画像生成装置２００に提供してもよい。画像生成装置２００はゲーム装置、パーソナルコンピュータ、携帯端末などのいずれでもよい。また画像生成装置２００と平板型ディスプレイ１２とを一体的に構成してもよい。
【００１３】
図２は、画像表示システムによって実現される表示の形態を説明するための図である。本実施の形態では、画像を表す平面を、さらに仮想空間に配置した状態を作り出す。すなわち観念的には、立体視用の画像を表示させた画像スクリーン２０を仮想空間における場２２上に配置させ、ユーザ２４が、ビュースクリーン２６を介してそれを鑑賞できるようにする。ここでビュースクリーン２６は、平板型ディスプレイ１２に表示される画像の視野に対応する。なお仮想空間における場２２は仮想空間の座標系を表象しているに過ぎず、形状などを限定する主旨ではない。また必ずしも表示させなくてよい。
【００１４】
図３は、図２の態様を実現するために画像生成装置２００が生成する画像を模式的に示している。本実施の形態において画像スクリーン２０に表示させる画像は、立体視用の一対の視差画像、すなわち左目用画像３０ａおよび右目用画像３０ｂで構成される。図２で示すような画像を立体視させるためには、同じオブジェクトが左目用画像３０ａでは右寄りに、右目用画像３０ｂでは左寄りに表れる。
【００１５】
また画像スクリーン２０に対する視点の位置が左右の目で異なるため、それぞれの視点に対応する位置に左目用画像３０ａ、右目用画像３０ｂを表示させる必要がある。すなわち画像スクリーン２０の枠の位置は左目用画像３０ａ、右目用画像３０ｂで異なり、それらを同一平面上に重ねて表すと、平面３２に示すような位置関係となる。このような左目用画像３０ａ、右目用画像３０ｂを生成し、既知の手法により左目、右目にそれぞれ到達させることにより、ユーザには画像スクリーン２０に表れるオブジェクトが立体に見えるようになる。
【００１６】
このように本実施の形態では、あらかじめ立体視用に準備された一対の画像を鑑賞する態様を想定している。仮想的な空間を立体視させる技術としては、仮想世界が３次元空間で定義済みであり、鑑賞者の左右の視点に応じたビュースクリーンに仮想世界のオブジェクトを射影して視差画像を生成する技術がある。一方、３次元動画のようにあらかじめ撮影または生成された２次元画像を立体視させる場合、元々視差が与えられているためそのままでは鑑賞者の視点が限定される。
【００１７】
図４は、立体視用の画像を取得する段階で与えられる視差と画像の関係を説明するための図である。同図は想定する左右の視点（カメラ７０ａ、７０ｂ）、画像が取得される画像スクリーン７６、および画像に写るオブジェクト７８を含む仮想的な空間を俯瞰した状態を模式的に示している。なお当該画像はステレオカメラで撮影した画像とすることもでき、カメラ７０ａ、７０ｂはその場合のステレオカメラに相当する。
【００１８】
また同図では一対の画像の平面を画像スクリーン７６で同時に表している。以後、このように画像スクリーン７６上で元々取得されている画像を、鑑賞段階での表示画像と区別するために「原画像」と呼ぶことがある。また以後の説明において原画像の平面と垂直な方向をＺ軸、画像平面における水平方向および垂直方向をそれぞれＸ軸、Ｙ軸とする。
【００１９】
原画像にはオブジェクト７８の像が表れている。例えばオブジェクト７８表面のある点８０は、左のカメラ７０ａからは光軸８２ａから右側にａだけ離れた位置８４ａに、右のカメラ７０ｂからは光軸８２ｂから左側にｂだけ離れた位置８４ｂに表れる。つまり点８０に対する視差Ｄｐはａ＋ｂである。実際には様々な位置にオブジェクトが存在してよく、その深さ方向の距離に応じた視差で、左右の原画像に像が表される。
【００２０】
画像スクリーン７６からオブジェクト７８上の点８０までの距離Ｚｐは、視差Ｄｐを用いて三角形の相似により次のように求められる。
Ewp : Exp - Dp = Scp + Zp : Zp
よって
Zp = Scp * Ewp / Dp - Scp
ここでＥｗｐは左右のカメラ７０ａ、７０ｂの間隔、Ｓｃｐはカメラ７０ａ、７０ｂから画像スクリーン７６までの距離である。
【００２１】
このように得られた原画像を上述のように鑑賞する場合を考える。図５は適切な位置から視差画像を鑑賞する場合の視点と画像の関係を示している。図の形式は図４と同様である。画像を鑑賞する段階では、鑑賞者の視点８８ａ、８８ｂと、それらから距離Ｓｃｓだけ隔てた位置に鑑賞者が見るビュースクリーン８６が存在する。そのような空間に図４で示した視差画像取得時の位置関係を当てはめた場合、図示するように鑑賞者の視点８８ａ、８８ｂがカメラ７０ａ、７０ｂと同じ位置になるように画像スクリーン７６の位置を決め、その位置での視差画像をビュースクリーン８６にそれぞれ射影すれば、オブジェクト７８を歪みなく立体視できる。
【００２２】
これは原画像を取得した際のカメラ７０ａ、７０ｂの視錐台と、それを鑑賞する際の視点８８ａ、８８ｂの視錐台がそれぞれ一致していることに相当する。一方、鑑賞者が移動して視点８８ａ、８８ｂが図示するような位置関係から外れると、オブジェクトが歪んで見えたり適正に立体視できなかったりすることが考えられる。場合によっては体調に悪影響を及ぼすこともある。
【００２３】
図６は、図５の配置において、仮想空間における鑑賞者の視点がずれたときの視覚的な歪みを説明するための図である。図６に示すように、鑑賞者の視点がＸ軸方向にｘ＿ｏｆｆだけずれ、視点８８ａ、８８ｂから視点８９ａ、８９ｂへ移動した場合、そのままの画像では、視点に対して相対的に像が移動していることになる。結果として仮想空間においてオブジェクト７８がオブジェクト７９の位置に動いたように見え、視覚的な歪みを生じさせる。本実施の形態では表示画像を適切に補正することにより、視点がずれても歪みのない立体映像を視認できるようにする。
【００２４】
具体的には視点が移動しても、それに応じて仮想空間でのオブジェクトの位置が変化したり歪んだりすることがないように原画像を補正する。なお以後の説明では、図５に示した、カメラと鑑賞者の視錐台が一致した状態での視点の位置を基点とし、そこからの視点の移動とそれによる画像の変化に主眼を置く。
【００２５】
図７は、本実施の形態における画像生成装置２００が、原画像から表示画像を生成する処理手順の概略を示すフローチャートである。画像生成装置２００はまず、ユーザの視点の位置を取得する（Ｓ１０）。例えば立体映像を鑑賞するユーザの姿を、図示しない撮像装置で撮影し、その画像に基づきユーザの位置や姿勢を取得する。発光マーカーを備えた眼鏡をかけさせることにより、より厳密に頭部の位置や傾きを取得してもよい。このようにして取得した頭部の位置や姿勢から、視点の位置を推定できる。このほか、ユーザの視点の取得方法が様々に考えられることは当業者には理解されるところである。
【００２６】
次に画像生成装置２００は、表示装置の画面に対応するビュースクリーン上の画素が原画像のどの位置に対応するかを計算する（Ｓ１２）。より詳細にはまず、視点の動きに応じて画像に表されているオブジェクトが変化しないように、すなわちオブジェクトの位置が仮想空間で固定されて見えるように、像を構成する各画素の移動量、移動方向を求めて原画像を変化させた補正画像を生成する。
【００２７】
そのうえで、視線の方向に応じて補正画像全体に透視変換をかける。定性的には、このような一連の動きを逆に辿ることにより、ビュースクリーンの画素ごとに原画像の対応する位置を求められる。そして原画像における当該位置のカラー値をビュースクリーンの画素に反映させることにより表示画像を描画する（Ｓ１４）。これらの処理を左右の視点に対して行うことで、表示画像を生成できる。当該表示画像のデータを、表示装置に出力することで（Ｓ１６）、視点が移動しても歪みが生じない立体画像を視認させることができる。
【００２８】
図７のＳ１２およびＳ１６の２段階の処理は、原画像自体を順次変化させて実現することも可能である。すなわち視点の移動により、一旦、原画像を変化させた補正画像を生成し、それをビュースクリーン上に透視変換することにより表示画像を描画できる。ただしこの場合、原画像に対して２度の変換処理が施されるため、表示画像の品質が維持されない可能性がある。そこで上述の補正画像そのものを生成する代わりに、視点移動に応じた補正画像における各画素が、元は原画像のどの位置にあったかを表す画像マップを生成する。
【００２９】
そして当該画像マップをビュースクリーン上に射影してビュースクリーンとマップとの位置関係を特定したうえで、ビュースクリーン上の画素が原画像のどの位置に対応するかを確認して原画像からカラー値を取得する。このようにすることで、原画像に対する操作は１度ですむことになり、画質を原画像レベルに維持することができる。
【００３０】
ここで補正画像における各画素が原画像のどの位置に対応するかを表す情報は、画像平面上で始点および終点が規定されるベクトル値となるため、以後、「画像参照ベクトル」と呼ぶ。また補正画像上で画素ごとに画像参照ベクトルの情報を保持する、画像平面に対応するマップを「画像参照ベクトルマップ」または単に「マップ」と呼ぶ。
【００３１】
図８は画像生成装置２００の内部回路構成を示している。画像生成装置２００は、ＣＰＵ（Central Processing Unit）２２２、ＧＰＵ（Graphics Processing Unit)２２４、メインメモリ２２６を含む。これらの各部は、バス２３０を介して相互に接続されている。バス２３０にはさらに入出力インタフェース２２８が接続されている。
【００３２】
入出力インタフェース２２８には、ＵＳＢやＩＥＥＥ１３９４などの周辺機器インタフェースや、有線又は無線ＬＡＮのネットワークインタフェースからなる通信部２３２、ハードディスクドライブや不揮発性メモリなどの記憶部２３４、ヘッドマウントディスプレイ１００などの表示装置へデータを出力する出力部２３６、ヘッドマウントディスプレイ１００からデータを入力する入力部２３８、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部２４０が接続される。
【００３３】
ＣＰＵ２２２は、記憶部２３４に記憶されているオペレーティングシステムを実行することにより画像生成装置２００の全体を制御する。ＣＰＵ２２２はまた、リムーバブル記録媒体から読み出されてメインメモリ２２６にロードされた、あるいは通信部２３２を介してダウンロードされた各種プログラムを実行する。ＧＰＵ２２４は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、ＣＰＵ２２２からの描画命令に従って描画処理を行い、表示画像を図示しないフレームバッファに格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部２３６に出力する。メインメモリ２２６はＲＡＭ（Random Access Memory）により構成され、処理に必要なプログラムやデータを記憶する。
【００３４】
図９は、本実施の形態における画像生成装置２００の機能ブロックを示している。なお図９で示した画像生成装置２００の機能のうち少なくとも一部を、表示装置に実装してもよい。あるいは、画像生成装置２００の機能のうち少なくとも一部を、ネットワークを介して画像生成装置２００に接続されたサーバに実装してもよい。また画像生成装置２００を、ゲーム機やパーソナルコンピュータなどの情報処理装置の一部としてもよい。
【００３５】
同図は画像生成装置２００が有する機能のうち、主に表示画像を生成する機能に着目したブロック図を描いている。これらの機能ブロックは、ハードウェア的には、図８に示したＣＰＵ、ＧＰＵ、各種メモリなどの構成で実現でき、ソフトウェア的には、記録媒体などからメモリにロードした、データ入力機能、データ保持機能、画像処理機能、通信機能などの諸機能を発揮するプログラムで実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００３６】
画像生成装置２００は、ユーザの位置や姿勢を取得する位置・姿勢取得部２５０、ビュースクリーンを設定するビュースクリーン設定部２５２、視点の位置に基づき画像参照ベクトルマップを生成する原画像操作部２５４、原画像のデータを格納する原画像データ記憶部２５６、画像参照ベクトルマップなどの中間データを格納する参照データ記憶部２６２、画像参照ベクトルマップを用いてビュースクリーンに表示画像を描画する表示画像生成部２６８、および、生成された表示画像のデータを出力する出力部２７０を備える。
【００３７】
位置・姿勢取得部２５０は、上述のような手段によりユーザの頭部の位置や姿勢を取得する。ビュースクリーン設定部２５２は表示装置の画面に対応するビュースクリーンを設定する。表示装置を平板型ディスプレイとした場合、ビュースクリーンは固定されるが、ヘッドマウントディスプレイの場合は、ユーザの頭部の動きに対応するようにビュースクリーンを動かす必要がある。この場合、ビュースクリーン設定部２５２は、位置・姿勢取得部２５０からユーザの頭部の位置や姿勢に係る情報を逐次取得し、それに応じてビュースクリーンを設定する。ビュースクリーン上で描画される表示画像は、例えば図３で示した左目用画像６０ａおよび右目用画像６０ｂであり、ビュースクリーンも左目用と右目用を設定する。
【００３８】
原画像操作部２５４は、位置・姿勢取得部２５０が取得したユーザの頭部の位置や姿勢に係る情報に基づき視点の位置を特定し、それに応じてオブジェクトの像を構成する画素の移動量および方向を計算する。そして移動後の各画素が、原画像のどの位置に対応するかを表す画像参照ベクトルを生成する。さらに当該ベクトルを画像平面の各画素に対応づけた画像参照ベクトルマップを、左右の目に対しそれぞれ生成する。
【００３９】
後述するように画像参照ベクトルを決定するには、視点の移動量および移動方向に加え、画像上で表されているオブジェクトの、仮想空間における距離Ｚｐが必要になる。距離Ｚｐは左右の原画像の視差Ｄｐから上述のように求められる。原画像データ記憶部２５６には、左右の原画像データ２５８と、それぞれの画像の画素ごとに視差値を保持する左右の視差値画像データ２６０が格納される。なお視差値画像データ２６０の代わりに、左右の画像の画素ごとに距離Ｚｐを保持する距離値画像データを準備してもよい。
【００４０】
なお原画像操作部２５４は、視点によっては左目用の画像参照ベクトルマップに右目用の原画像を参照する画素を設けたり、右目用の画像参照ベクトルマップに左目用の原画像を参照する画素を設けたりしてもよい。これは、左右の原画像のうち一方では死角になって像として表れていない箇所が、他方で表れている場合があるためである。視点の移動によってそのような死角部分を表示する必要が生じた場合、他方の画像からデータを取得することにより、そのような細部も高精度に再現することができる。
【００４１】
参照データ記憶部２６２は、原画像操作部２５４が生成した、左右の画像参照ベクトルマップ２６６を格納するほか、それを作成する段階で、画像参照ベクトルに書き込むべきデータを判定するためのＺ値の情報を格納するＺバッファ２６４を含む。表示画像生成部２６８は、ビュースクリーン設定部２５２が設定したビュースクリーン上に、各画素に対応する原画像の画素値を参照することによって表示画像を描画する。
【００４２】
すなわち画像参照ベクトルマップを透視変換によりビュースクリーン上にマッピングしたうえ、ビュースクリーン上の画素に対応するマップ上の位置で取得された画像参照ベクトルに基づき原画像のカラー値を取得することで、当該画素の画素値を決定する。これを左右の目のそれぞれに対して行うことで、左目用、右目用の表示画像を生成できる。出力部２７０は、表示画像生成部２６８が生成した左右の表示画像のデータを、表示装置に所定のレートで出力する。出力部２７０はさらに、メニュー画面用の音楽や各種コンテンツに含まれる音声などの音響データも出力してよい。
【００４３】
次に原画像操作部２５４が画像参照ベクトルを計算する手法について説明する。図１０は、視点の移動量と、それに応じた原画像の画素の移動量との関係を説明するための図である。同図では図５で示した状態における視点８８ａ、８８ｂからＸ軸方向にｘ＿ｏｆｆだけ移動した後の視点を、視点８９ａ、８９ｂとして示している。なおモデルを簡略化するため、原画像が仮想空間のビュースクリーン８６上に配置されるように、つまり画像スクリーン７６がビュースクリーン８６に一致するとする。
【００４４】
このような配置はステレオ画像を適宜拡大・縮小することによって可能である。これにより視点から画像スクリーン７６までの距離Ｓｃｐと、視点からビュースクリーン８６までの距離Ｓｃｓは等しくなる。また以後の説明において、画像上での長さの単位は図示するような仮想空間での長さの単位に適宜換算されるものとする。
【００４５】
画像参照ベクトルは、視点８８ａ、８８ｂから原画像をみたときと、移動後の視点８９ａ、８９ｂから補正後の画像を見たときで、仮想空間にあるオブジェクト７８が固定されて見えるときの画素の対応関係を表す情報である。例えば視点８８ｂから見て右目用の原画像のＸ軸方向の位置ｉｘＲに見える像を、補正後の画像上の位置ｔｘＲに移動させ、視点８９ｂから見れば、オブジェクト７８は固定されて見える。
【００４６】
このときの補正量ｄｘは視点の移動量ｘ＿ｏｆｆと、三角形の相似により次のような関係にある。
dx : x_off = Zp : ( Scp + Zp)
したがって補正量ｄｘは、
dx＝Zp * x_off /（Scp + Zp）
により求めることができる。すなわち補正量ｄｘは、画素が表すオブジェクトの距離Ｚｐと視点の移動量ｘ＿ｏｆｆの関数である。
【００４７】
この補正量ｄｘを原画像の画素ごとに計算する。ただし距離Ｚｐの変化がない領域では、その領域全体で一つの距離Ｚｐをもつとみなして、領域の単位で表示位置を補正してもよい。画像のＹ軸方向の補正量ｄｙについてもＹ軸方向の視点の移動量をもとに計算することができる。このようにして各画素の補正量を示す変位ベクトル（ｄｘ，ｄｙ）が、各画素が表すオブジェクトの距離Ｚｐから算出される。距離Ｚｐは、前述のように各画素の視差値から算出されるため、結局のところ、各画素の変位ベクトル（ｄｘ，ｄｙ）は各画素の視差値から算出できる。
【００４８】
このため本実施の形態では、左右の原画像に対し、それらに像として表れるオブジェクトの視差を画素ごとに表した視差値画像のデータを準備する。すなわち左目用の原画像を基準として当該画像の画素ごとに視差値を表した左目用の視差値画像、右目用の原画像を基準として当該画像の画素ごとに視差値を表した右目用の視差値画像を準備する。視差値画像を左目用、右目用で準備する理由は次のとおりである。
【００４９】
図１１は左右の原画像に表される同一のオブジェクトの像を重ねて示している。左目用の原画像９０ａ、右目用の原画像９０ｂの画素領域の境界を、それぞれ実線、破線の格子で示している。図示するように同じオブジェクトの像９２を表す画素集合であっても、両画像の画素の境界が一致するとは限らない。このとき、例えば左目用の原画像９０ａ中のある画素（例えば太線枠の画素９４）に対応する領域は、右目用の原画像９０ｂでは２つの画素にまたがっている。
【００５０】
この場合、左目用の原画像９０ａの画素９４に対して得られる視差値は画素より小さいサブピクセルの単位となる。つまりおよそ同じ像を表す画素であっても、左右どちらの原画像を基準とするかで、表されるオブジェクト上の位置に微小な差が生じ、それがサブピクセル単位の視差値の差を生む。結果として画素ごとに視差値を表したデータは、左右の原画像で一致しないことが多い。換言すれば、画素単位で視差の値を保持する「視差値画像」を、左右の原画像のそれぞれに対して生成しておき、独立に補正することにより、サブピクセル単位での視差情報、ひいては奥行き情報を画像に反映させることができる。
【００５１】
また、異なる視点から取得された画像は、光の鏡面反射の成分や屈折光の成分が異なるのが一般的である。これらの情報は、右目用、左目用の原画像を準備した段階ですでに含まれる性質のものである。本実施の形態は基本的に、実際のユーザの視点が原画像を取得した際に想定した視点と略同一に位置することを想定し、当該ユーザの視点のずれに対し高品質に各視点用画像を変形することに主眼を置くものである。したがって、右目用の補正画像は右目用の原画像から、左目用の補正画像は左目用の原画像から生成することが合理的である。
【００５２】
図１２は、原画像の各画素の変位ベクトルを示す図である。同図の（ａ）では、４つの画素ａ、ｂ、ｃ、ｄの変位ベクトル（ｄｘ、ｄｙ）が矢印で示されている。（ｂ）は、変位ベクトルによって変位した４つの画素ａ、ｂ、ｃ、ｄの位置を示している。
【００５３】
原画像操作部２５４は、（ｂ）の変位した画素の中心を結んだ三角形をラスタライズして、三角形内部の各画素について画像参照ベクトルを求める。（ａ）に示す原画像の三角形を構成する３画素の座標値（整数値）を（ｉｘ０，ｉｙ０）、（ｉｘ１，ｉｙ１）、（ｉｘ２，ｉｙ２）と書く。３画素の変位ベクトルを（ｄｘ０，ｄｙ０）、（ｄｘ１，ｄｙ１）、（ｄｘ２，ｄｙ２）とする。（ｂ）に示す変位後の３画素の座標値（実数値）を（ｔｘ０，ｔｙ０）、（ｔｘ１，ｔｙ１）、（ｔｘ２，ｔｙ２）と書くと、変位後の３画素の座標値は、浮動小数点数であり、
txi=ixi+dxi
tyi=iyi+dyi
で求められる（ただし、ｉ＝０、１、２である）。
【００５４】
図１３は、画像参照ベクトルの生成方法を説明するための図である。まず（ａ）に示すように、変位後の３画素（ｔｘ０，ｔｙ０）、（ｔｘ１，ｔｙ１）、（ｔｘ２，ｔｙ２）が構成する三角形の内部の一つの対象画素Ｔの座標値（整数値）を（ｉｔｘ，ｉｔｙ）とする。この対象画素Ｔの重心座標（α，β，γ）は下記の式で求められる。
【００５５】
【数１】
2017212720.tif 000003
【００５６】
また（ｂ）に示すように、対象画素Ｔ（ｉｔｘ，ｉｔｙ）へ変位する始点Ｐの座標値（実数値）を（ｐｘ，ｐｙ）と書く。視点の移動により、始点Ｐは対象画素Ｔに対応づけられる。始点Ｐの座標値（ｐｘ，ｐｙ）は、対象画素Ｔ（ｉｔｘ，ｉｔｙ）の重心座標（α，β，γ）を用いて次式により算出される。
px = α*ix0 + β*ix1 + γ*ix2
py = α*iy0 + β*iy1 + γ*iy2
【００５７】
図１４は、画像参照ベクトルを説明するための図である。図１３の（ｂ）で説明したように、変位後の３画素が構成する三角形の内部の対象画素Ｔ（ｉｔｘ，ｉｔｙ）の始点Ｐ（ｐｘ，ｐｙ）が算出される。視点移動によって始点Ｐが対象画素Ｔに対応づけられており、図１４の（ａ）の矢印で示すように、対象画素Ｔの座標から始点Ｐの座標を逆向きに参照するベクトル、すなわち補正画像における各画素が原画像のどの位置に対応するかを表すベクトルが画像参照ベクトルである。
【００５８】
また（ｂ）に示すように、画像参照ベクトルマップは、三角形の内部の対象画素毎に始点を指す画像参照ベクトル（矢印で示されている）を格納したマップである。以後、画像参照ベクトルマップを単に「マップ」と呼ぶ場合もある。三角形内部をラスタライズした対象画素Ｔ（ｉｔｘ，ｉｔｙ）には、３画素（ｉｘ０，ｉｙ０）、（ｉｘ１，ｉｙ１）、（ｉｘ２，ｉｙ２）の画素値をバイリニア補間することにより得られる始点Ｐの画素値が格納されるのではなく、対象画素Ｔから始点Ｐを参照するベクトルが格納されることに留意する。
【００５９】
通常の画素値（例えばＲＧＢＡ値）の場合には、格納すべき画素値が存在しないことを表すため、画素値の各要素に０を格納することができる。一方、画像参照ベクトルの場合は、格納すべき値が存在しないことを、画像参照ベクトルの値を０とすることで表現することはできない。画像参照ベクトルが０であることには、原画像からの補正量がゼロであるという意味があり、対応する視差値あるいは距離値をもつ参照元の始点Ｐが存在しないことと区別できないからである。
【００６０】
そこで、例えば画像参照ベクトルのＸ成分の最下位ビットを、画像参照ベクトルの存在・非存在を示すフラグビットとして用いることにする。このフラグビットが０であれば、その画素の画像参照ベクトルは無効であるとして扱い、フラグビットが１である場合にのみ、画像参照ベクトルを有効なデータとして用いる。なお、このフラグビットを画像参照ベクトルの最下位ビットに埋め込まずに、別のメモリ領域に保存することで同じ処理を行うことも可能である。ただしその場合は、余分にメモリ領域が必要になることに加え、そのメモリ領域を読み書きするための余分なメモリバンド幅を消費するデメリットが生じる。
【００６１】
前述の画像参照ベクトルマップの生成処理は、少なくとも３つの画素が三角形状に並んでいる場合を説明したが、実際の原画像ではアルファテストなどを前提としてアルファ値が０の無効な画素を含む場合がある。このような場合には、アルファ値が０でない有効な画素に対してのみ、画像参照ベクトルを生成する必要がある。あるいは、視差値画像の画素値の一部のビットを原画像の画素の有効／無効の表現に用いる、別のメモリ領域に有効／無効の情報を直接保持する等の方法も考えられる。以下、画像参照ベクトルマップの生成処理を場合分けして詳しく説明する。
【００６２】
図１５は、１画素のみが有効な場合の、画像参照ベクトルの生成手法を説明する図である。有効な画素の周囲の画素はすべて無効である。この場合、以下のように有効な１画素のみを用いて画像参照ベクトルを生成する。図１０で示したように、両視点がＸ軸方向にｘ＿ｏｆｆだけ移動した場合、補正量（ｄｘ０，ｄｙ０）はオブジェクトの距離Ｚｐ０を用いて、
dx0 = Zp0 * x_off/(Scp +Zp0)
dy0 = 0
となる。
【００６３】
ここで（ｄｘ０，ｄｙ０）は浮動小数であり、（ｉｘ０，ｉｙ０）の画素の位置補正量が（ｄｘ０，ｄｙ０）であるということは、ｄｘ０、ｄｙ０の小数点以下を四捨五入した位置の画素がターゲットの画素になると考えられるので、画像参照ベクトルマップの（（ｉｎｔ）（ｉｘ０＋ｄｘ０＋０．５），（ｉｎｔ）（ｉｙ０＋ｄｙ０＋０．５））の位置の画素の画像参照ベクトルとして（−ｄｘ０，−ｄｙ０）を書き込む。
【００６４】
図１６は、２画素が有効な場合を示す図である。２画素が有効な場合は、（ａ）のように横２画素が有効な場合、（ｂ）のように縦２画素が有効な場合、（ｃ）のように左上と右下の横２画素が有効な場合、（ｄ）のように右上と左下の横２画素が有効な場合の４つに分けて処理する。画素の座標を１ずつインクリメントするので、重複した場合を除くと以上の４つの場合が存在する。
【００６５】
図１７および図１８は、２画素が有効な場合に画像参照ベクトルを求める方法を説明するための図である。図１７の（ａ）に示すように有効な２画素について、それぞれの視差値から各画素の変位した位置を計算する。図１７の（ｂ）は変位後の２画素の位置を示す。画像参照ベクトルを求めたい対象画素をＴ（ｉｔｘ，ｉｔｙ）とする。変位した２画素の位置を結ぶ線分に対象画素Ｔ（ｉｔｘ，ｉｔｙ）の中心から垂線を下ろし、垂線の足が当該線分を内分する比α：１−αを求める。
【００６６】
次に、図１８の（ａ）に示すように、元の２画素の中心を結ぶ線分を内分比α：１−αで内分する点を始点Ｐ（ｐｘ，ｐｙ）として求める。そして図１８の（ｂ）に示すように、対象画素Ｔ（ｉｔｘ，ｉｔｙ）から始点Ｐ（ｐｘ，ｐｙ）を参照するベクトルを求め、対象画素Ｔ（ｉｔｘ，ｉｔｙ）の画像参照ベクトルとする。
【００６７】
図１９は、３画素が有効な場合の、画像参照ベクトルの生成手法を説明する図である。を説明する図である。３画素が有効な場合は、（ａ）のように右下１画素が無効な場合、（ｂ）のように右上１画素が無効な場合、（ｃ）のように左下１画素が無効な場合、（ｄ）のように左上１画素が無効な場合の４つに分けて処理する。それぞれの場合で前述のように有効な３画素が構成する三角形において重心座標を用いた補間により画像参照ベクトルを求めればよい。
【００６８】
図２０は、４画素が有効な場合の、画像参照ベクトルの生成手法を説明する図である。（ａ）のように４画素がすべて有効である場合は、（ｂ）のように右下１画素が無効でそれ以外の３画素が有効である場合と、（ｃ）のように右上１画素が無効でそれ以外の３画素が有効である場合とに分けることができる。したがって（ｂ）の有効３画素が構成する三角形と（ｃ）の有効３画素が構成する三角形についてそれぞれラスタライズし、重心座標を用いた補間により画像参照ベクトルを求めればよい。
【００６９】
以上の画像参照ベクトルの生成処理を、ｉｘ、ｉｙを１ずつインクリメントしながら行う。境界線上の画素のラスタライズは、計算誤差による穴あきを避けるため、各処理間で重複して処理を行い、画像参照ベクトルを求めると同時に、変位した座標の各画素中心でのＺｐ値を同じ線形補間のパラメータにより求め、これをＺバッファ２６４に保存してＺ比較を行うことにより最も小さいＺｐ値を持つ画像参照ベクトルを選択する。これにより境界線上での重複を一意的に排除できる。
【００７０】
次に、図２１〜図２４を参照して、ユーザが頭部を回転させた場合の画素の変位を求め、画像参照ベクトルを得る方法を説明する。ステレオ画像による立体映像を鑑賞する場合、左右の画像のオフセット方向が人間の目の水平方向に対して回転すると脳内の画像処理が破綻し、めまいなどが生じたり、立体に見えず二つの画像に見えたりするなどの問題が発生する。このようなスクリーン面内でのステレオ画像のＺ軸周りの回転を補正する方法を示す。
【００７１】
図２１は、仮想空間を観察するユーザの両目の位置の回転を説明する図である。ユーザが頭部を傾けると、ビュースクリーン８６を通してオブジェクト７８を観察するユーザの両目が中心視線５６２の周りに回転すると考える。すなわちここでの回転は、左右の視点を結ぶ横方向の直線と、画面の横軸を含む実際の水平面とのなす角度（傾き）の変化を指し、ユーザが首をかしげる際などに回転が生じることになる。
【００７２】
図２２は、仮想空間に配置された原画像を中心視点から見た場合の画像を説明する図である。ビュースクリーン８６の面内の回転を考え、回転軸は中心視線５６２であるとする。左右の目の中心である中心視点５６０Ｃから見たときに、適正な状態でのオブジェクト７８の像５４５Ｃを「中心画像」と呼ぶ。
【００７３】
中心画像５４５Ｃは左右の目から見て同一の画像であるので（正確には、対象物の表面の鏡面反射が左右の視点で違うことから生じる輝度の差異や、サブピクセルレベルでの画素位置のずれに起因した輝度の差異がある）、これを基準画像と考え、これが中心視線５６２を中心に回転すると考える。中心視点５６０Ｃは左目の視点８８ａと右目の視点８８ｂの中心にあるので、中心画像５４５Ｃは右目画像と左目画像の中心にある。右目画像と左目画像の対応点間の距離Ｅｗｐ−ＤｐをＥｗｏｓｃ（eye width on screen）と書く。Ｅｗｏｓｃは距離Ｚｐの関数である。
【００７４】
図２３は、左目用画像５１０ａと右目用画像５１０ｂとを中心視点５６０Ｃで重ねた状態を説明する図である。符号５１７ａは左目用スクリーンの中心軸、符号５１７ｂは右目用スクリーンの中心軸を示す。左目用画像５１０ａには左目用スクリーンに表示される左目用オブジェクト５４５ａがあり、右目用画像５１０ｂには右目用スクリーンに表示される右目用オブジェクト５４５ｂがあり、その間に中心画像５４５Ｃがある。
【００７５】
図２４は、右目用画像５１０ｂにおける回転補正を説明する図である。中心視点５６０Ｃの周りに両目が角度θだけ回転すると、右目用画像５１０ｂにおいて、右目用オブジェクト５４５ｂは中心画像５４５Ｃを中心として角度θだけ回転した位置（符号５４５ｂ’）に変位する。右目用画像５１０ｂにおいて各画素のＸ軸方向の変位量ｄｘ、Ｙ軸方向の変位量ｄｙを求める。
【００７６】
右目画像の所与の画素の座標値（整数値）を（ｉｒｘ，ｉｒｙ）とすると、当該所与の画素に対応する中心画像５４５Ｃの画素位置は（ｉｒｘ−Ｅｗｏｓｃ／２．０，ｉｒｙ）である。角度θだけ回転した場合の中心画像の画素位置からのＸ軸方向、Ｙ軸方向の補正量ｄｘ、ｄｙは以下のようになる。
dx = Ewosc / 2.0 * cos(θ)
dy = Ewosc / 2.0 * sin(θ)
【００７７】
これより、右目用画像の所与の画素のＸ軸方向の変位量ｄｘ、Ｙ軸方向の変位量ｄｙは、
dx = -Ewosc / 2.0 + Ewosc / 2.0* cos(θ)
dy = Ewosc / 2.0 * sin(θ)
である。これを用いて、変位後の画素から元の画素を参照するベクトル、すなわち画像参照ベクトルは、（−ｄｘ，−ｄｙ）で与えられる。
【００７８】
左目用画像についても同様に所与の画素のＸ軸方向の変位量ｄｘ、Ｙ軸方向の変位量ｄｙは、
dx = Ewosc / 2.0 - Ewosc / 2.0 * cos(θ)
dy = -Ewosc / 2.0 * sin(θ)
である。右目用画像の変位量とは正負が逆であることに留意する。左目用画像の変位後の画素から元の画素を参照するベクトル、すなわち画像参照ベクトルは、（−ｄｘ，−ｄｙ）で与えられる。
【００７９】
図２５は、図７のＳ１２における画素の対応関係の取得処理として、原画像操作部２５４が画像参照ベクトルマップを生成する処理手順をより詳細に示すフローチャートである。前段の処理として、原画像および視差値画像のデータが入力され、ユーザの視点の移動量および回転角が取得されているとする（Ｓ３２）。原画像操作部２５４は、原画像の各画素の視差値、視点の移動量、および回転角から、各画素の変位ベクトル（ｄｘ，ｄｙ）を算出する（Ｓ３４）。
【００８０】
そして原画像の各画素の変位（ｄｘ，ｄｙ）にもとづいて、変位後の画素を頂点とする三角形の内部の対象画素Ｔ（ｉｔｘ，ｉｔｙ）に対する始点Ｐの座標値（ｐｘ，ｐｙ）を求める（Ｓ３６）。さらに対象画素Ｔ（ｉｔｘ，ｉｔｙ）から始点Ｐ（ｐｘ，ｐｙ）へのベクトル（ｐｘ−ｉｔｘ，ｐｙ−ｉｔｙ）を、対象画素Ｔ（ｉｔｘ，ｉｔｙ）の画像参照ベクトルとして計算する（Ｓ３８）。すべての対象画素についてステップＳ３６およびＳ３８の画像参照ベクトルを求め、画素に対応づけて設定することにより、画像参照ベクトルマップが生成される（Ｓ４０）。
【００８１】
図２６は、図７のＳ１４において、表示画像生成部２６８が原画像をビュースクリーンにマッピングする処理手順をより詳細に示すフローチャートである。表示画像生成部２６８はまず、ビュースクリーン上の点（ｔｘ，ｔｙ）にマッピングされるべきテクスチャ座標（ｔｕ，ｔｖ）を生成する（Ｓ４２）。そして画像参照ベクトルマップをテクスチャとして、ステップＳ４２で指定されたテクスチャ座標にもとづき画像参照ベクトルをフィルタリングする（Ｓ４４）。すなわち画像参照ベクトルマップから画像参照ベクトルをサンプリングし、後述の拡張されたバイリニア補間によりフィルタリングすることにより、テクスチャ座標における画像参照ベクトルを求める。
【００８２】
そのようにして求めた画像参照ベクトルをテクスチャ座標（ｔｕ，ｔｖ）に加算してなる参照先のテクスチャ座標（ｕ，ｖ）にもとづいて、原画像の画素値をフィルタリングすることにより、ビュースクリーン上の各画素にマッピングされるべき原画像のカラー値を生成する（Ｓ４６）。ビュースクリーン上のすべての画素について、ステップＳ４２、Ｓ４４およびＳ４６の手順により、マッピングされるカラー値を生成することにより、原画像がビュースクリーンにマッピングされてなる表示画像が生成される（Ｓ４８）。
【００８３】
このように本実施の形態では、原画像をビュースクリーンにテクスチャマッピングする際、原画像の位置に画像参照ベクトルマップが存在するとみなして、当該マップをテクスチャとして参照し、格納された画像参照ベクトルをフィルタリングする。さらに、原画像の画素のうち、フィルタリングされた画像参照ベクトルが指す参照先の画素の値を、周囲の画素値をバイリニア補間することによりフィルタリングして、ビュースクリーンにマッピングする。フィルタリングされた画像参照ベクトルによって元のステレオ画像を直接参照するため、画素のフィルタリングは１回のみとなる。
【００８４】
一方、画像参照ベクトルマップを生成する代わりに、視点の移動に応じて画素値を変位させた補正画像そのものを生成する場合、原画像から補正画像を生成する処理と、補正画像からビュースクリーンにテクスチャマッピングする処理と、により画素に対し２回のフィルタリングが行われるため、画質が劣化しやすくなる。画像参照ベクトルマップを利用してフィルタリングの回数を１回とすることにより画質の劣化を防ぐことができる。
【００８５】
図２７は、表示画像、画像参照ベクトルマップ、および原画像の関係を説明するための図である。（ｂ）に示す原画像６００の位置に（ａ）に示す画像参照ベクトルマップ６１０が存在する。（ａ）に示すように、表示画像６２０を構成するビュースクリーンの画素格子は、原画像６００の画素格子とはずれている。
【００８６】
（ａ）に示すように、表示画像６２０の画素の中心点Ｓにおいて画像参照ベクトルマップ６１０から画像参照ベクトルをサンプリングする。表示画像６２０において画素中心にあるサンプリング点Ｓは、画像参照ベクトルマップ６１０においてはテクスチャ座標（ｔｕ，ｔｖ）で指定される。サンプリング点Ｓにおける画像参照ベクトルは、画像参照ベクトルマップ６１０に格納された周囲の有効画素の画像参照ベクトルを後述の拡張されたバイリニア補間によってフィルタリングすることにより、（ａ）の矢印のように求められる。
【００８７】
次に、（ｂ）に示すように、サンプリング点Ｓの画像参照ベクトルが指す参照先の画素Ｐの画素値を、原画像６００から通常のバイリニア補間によってフィルタリングして求める。
【００８８】
図２８は、画像参照ベクトルマップをサンプリングする方法を説明するための図である。画像参照ベクトルマップ６１０を原画像の位置にあるテクスチャとして（ａ）に示すＳ点をサンプリングし、Ｓ点の画像参照ベクトルを求める。Ｓ点の周囲の４画素Ａ、Ｂ、Ｃ、Ｄのうち、３つの画素Ｂ、Ｃ、Ｄの画像参照ベクトルが存在するが、画素Ａには画像参照ベクトルが存在しないとする。この場合、画像参照ベクトルが存在する３つの画素Ｂ、Ｃ、Ｄの画像参照ベクトルを線形補間することにより、Ｓ点の画像参照ベクトル（図中矢印で示す）を求める。このように画像参照ベクトルマップには無効な画素がある場合があるため、後述のように通常のバイリニア補間とは異なる処理が必要となる。
【００８９】
（ａ）で得られたＳ点の画像参照ベクトルが指す参照先は、（ｂ）で示すように原画像のＰ点を参照している。原画像をサンプリングしてアルファブレンド、アルファテストなどを行い、Ｐ点をレンダリングしてＰ点のカラー値を求める。このサンプリングは、Ｐ点の周囲の４つの画素の画素値を通常のバイリニア補間で補間することにより行われる。このように本実施の形態では、（ｂ）の原画像の位置に（ａ）の画像参照ベクトルマップが存在すると考えて、（ａ）の画像参照ベクトルマップに格納された画像参照ベクトルをフィルタリングし、フィルタリングされた画像参照ベクトルによって（ｂ）の原画像を参照して画素をフィルタリングする。
【００９０】
画像参照ベクトルマップには画像参照ベクトルが存在しない無効な画素が存在する場合があるため、画像参照ベクトルマップを参照するテクスチャマッピングは以下のように場合分けして処理する必要がある。
【００９１】
図２９は、画像参照ベクトルマップの指定されたテクスチャ座標の周囲の４画素とも有効な場合のフィルタリングを説明する図である。（ａ）に示すように４画素には有効な画像参照ベクトルＶ００、Ｖ１０、Ｖ０１、Ｖ１１が格納されている。（ｂ）に示すように、指定されたサンプリング位置のＳ点（ｔｕ，ｔｖ）が水平方向にはｆｘ：（１−ｆｘ）で水平２画素を内分する位置に、垂直方向にはｆｙ：（１−ｆｙ）で垂直２画素を内分する位置にある場合、４画素の画像参照ベクトルを次式によりバイリニア補間してＳ点の画像参照ベクトルＦを求めればよい。
F=V01*(1-fx)*fy+V11*fx*fy+V00*(1-fx)*(1-fy)+V10*fx*(1-fx)
【００９２】
図３０は、画像参照ベクトルマップの指定されたテクスチャ座標の周囲の４画素のうち、３画素が有効な場合のフィルタリングを説明する図である。（ａ）のように左上画素が無効な場合、残りの３画素の画像参照ベクトルから次式により無効な左上画素の画像参照ベクトルＶ００を求める。
V00 = (V10-V11)+(V01-V11)+V11
【００９３】
（ｂ）のように右上画素が無効な場合、残りの３画素の画像参照ベクトルから次式により無効な右上画素の画像参照ベクトルＶ１０を求める。
V10 = (V00-V01)+(V11-V01)+V01
（ｃ）のように左下画素が無効な場合、残りの３画素の画像参照ベクトルから次式により無効な左下画素の画像参照ベクトルＶ０１を求める。
V01 = (V00-V10)+(V11-V10)+V10
（ｄ）のように右下画素が無効な場合、残りの３画素の画像参照ベクトルから次式により無効な右下画素の画像参照ベクトルＶ１１を求める。
V11 = (V10-V00)+(V01-V00)+V00
【００９４】
このようにして無効な１画素の画像参照ベクトルを有効な３画素の画像参照ベクトルから生成し、４画素の画像参照ベクトルを用いてバイリニア補間すれば、サンプリング位置のＳ点の画像参照ベクトルＦを精度良く求めることができる。この補間処理を行わない場合、例えば、ある画素に有効な画像参照ベクトルが無く、（inv_off_x, inv_off_y）が初期値の（0.0, 0.0）であることは、同じ（tu, tv）座標の画素をサンプリングするという意味になる。このため画像参照ベクトルのバイリニアフィルタリングにこのベクトル（0.0, 0.0）が用いられると、他の画素の変位ベクトルを元の画素の位置へ引っ張るため結果的に関係の無い途中の画素への参照ベクトルが生成され、関係のないカラー値が最終画像に現れる。本実施の形態では、無効な１画素の画像参照ベクトルを有効な３画素の画像参照ベクトルから生成することでこの問題を解決している。
【００９５】
有効な画素が２つ以下の場合は画像参照ベクトルマップのバイリニアサンプリングによる描画を行わない。この場合、例えば画像参照ベクトルマップのポイントサンプリングを行い、有効な画素のみについて原画像への参照を行い、画素のカラー値およびアルファ値のバイリニア補間を行うことで画像を描画すればよい。
【００９６】
無効な画素の画像参照ベクトルを補間で求める場合、当該画素の画像参照ベクトルが無効であるという情報は、画像参照ベクトルの補間の計算では反映されないことになる。しかしながら、そもそもこの無効性の情報は、入力された原画像データのアルファ値あるいは視差値の有効性の情報が画像参照ベクトルに反映されたものであるから、補間された画像参照ベクトルから元の画素データを参照する際に結果的に反映される。具体的には、例えば元の画素データのバイリニア補間を行う場合に、アルファ値に関してもバイリニア補間を行い、得られたアルファ値を用いてアルファテストあるいはアルファブレンドを行うことで、無効な画素のカラー値は表示画像に反映されなくなる。
【００９７】
ポイントサンプリングで画像参照ベクトルを求める場合、画像の内部に画像参照ベクトルが急激に変化する点が存在すると、視点を滑らかに移動させる時に画素のちらつきが発生することがある。また、画像参照ベクトルを通常のバイリニアサンプリングで求めると内部の点のちらつきは低減されるが、無効な点が参照されやすい画像の境界部分でちらつきが発生し易い。それに対して、上述のように画素の有効／無効情報を利用した拡張されたバイリニアサンプリングを行うことにより、画像内部においても境界部分においてもちらつきのない画像生成が可能になる。
【００９８】
［視差値のフィルタリング］
ここで、視差値のフィルタリングについて説明する。原画像を３Ｄモデルデータのレンダリングにより生成する場合は、それぞれの視差値を画素ごとに正確に求めることが可能であるが、自然画を撮影した原画像を解析して視差値を求める場合は、各画素の視差値が精度良く得られない場合も多い。
【００９９】
このような場合、視差値にフィルタリングを施すことで、破綻の少ないテクスチャマッピングを行うことが可能になる。本実施の形態では、原画像取得時の視点からの変化分に基づく画素の変位量を表示画像の描画に利用するため、実際の視点が原画像の取得時のものに近ければ、表示画像の変化を最小限に抑えることができる。すなわち各画素単位での視差値が正確でなくても、表示画像への影響を抑えられる。
【０１００】
視差値に関しては、その有効／無効を考慮したフィルタリングが必要である。例えば、下記のような重みのフィルタカーネルでフィルタリングを行う。
１  ２  １
重み：  ２  ４  ２
１  ２  １
ここで、
pixelSum = Σ視差値×重み
weightSum = Σ重み
とし、
新しい視差値 = pixelSum / weightSum;
なる計算式でフィルタリングを行う。ただし、Σは有効な画素についての和である。
【０１０１】
また、視差値にフィルタリングをかけることにより、画像参照ベクトルの計算の場合分けを減らすことが可能である。この場合、視差値計算の場合分けには、アルファ値ではなく、視差値の存在／非存在フラグを用いる。
【０１０２】
上記のフィルタリング時に、９画素のうち１画素でも視差値が存在する場合に、その画素の視差値は有効であるとする。これにより、視差値が存在する領域が全体的に１画素ずつ拡大する。これにより、画像参照ベクトルのフィルタリングにおいて、４画素全てに画像参照ベクトルが存在する場合の計算、即ち通常のバイリニアフィルタリングを行うのみですむようになる。なお表示画像の描画は、原画像の画素のアルファ値により制御されるため、参照画像ベクトルの設定範囲が１画素分広くなっても表示画像への影響はない。また、画像参照ベクトルをポイントサンプリングする場合も、元の視差値にあらかじめフィルタをかけることにより、画像内部のちらつきの発生を抑制できる。
【０１０３】
［視差値の近似］
画像参照ベクトルマップを視点移動に対する補正に用いるもう一つのメリットは、画素単位の精度をもたない視差値のデータから画像参照ベクトルマップを生成し、これを用いて原画像の補正が可能な点である。本実施の形態の視点に応じた補正処理では、原画像取得時の視点に近い視点で表示を行う場合、表示される画像が原画像に近くなる特徴がある。このため、視差値が原画像の距離情報を忠実に反映していなくても、多くの場合十分な品質の画像表示が可能である。
【０１０４】
そこで、画素単位で視差値を準備し、画像参照ベクトルマップを画素単位で計算するのではなく、複数の画素からなるブロック単位、奥行き値が同程度である領域単位、オブジェクト単位などで視差値の近似値を準備することにより、画像参照ベクトルも、ブロック単位、領域単位、オブジェクト単位などで求めてもよい。このようにしても、画像参照ベクトルにより参照される原画像は画素の精度でサンプリングされるので、表示画像の画質は劣化しない。
【０１０５】
視差値の近似値を用いる他のメリットは、原画像における像が類似しており、視点移動による歪みが近い場合、同じ画像参照ベクトルマップを異なる画像に適用することが可能な点である。また、画像参照ベクトルマップを元の画像より低解像度で計算し、フィルタで滑らかにした上で適用したり、動画などの連続したフレームで視点の変化が少ない場合に前のフレームのマップを用いたりする近似も可能である。
【０１０６】
［原画像の相互参照］
次に、左右の画像参照ベクトルマップの一方において、他方の原画像を参照する場合の画像参照ベクトルの計算手法を説明する。上述のとおり左右の原画像には、取得時には死角になり像として表れていないが、視点の移動によって見えるようになる部分が存在し得る。原画像操作部２５４はそのような像を表現すべき画素に対し、他方の原画像を参照する画像参照ベクトルを生成することで、死角であった部分をより正確に描画できるようにする。このような技術を視差画像の相互参照と呼ぶ。
【０１０７】
図３１は、右目から死角領域にある、左目用原画像の画素を説明するための図である。同図では、３次元オブジェクト３４４と、それを表す左右の原画像３４０、３４２の平面を俯瞰した状態を模式的に示している。右目の各画素の位置をその視差値だけオフセットした位置（例えば矢印Ａ）にある左目の画素が、右目用の原画像３４２における画素に対応する左目用の画像３４０における画素である。ここで左目用の原画像３４０における領域Ｂの画素は、対応する右目用の原画像３４２の画素が存在しないことから、原画像取得時の右目の死角領域を表す。したがって左目用の原画像３４０における領域Ｂの画素を、当該死角領域の描画に利用できる。
【０１０８】
図３２は、視点の移動量と、右目用の画像参照ベクトルマップにおいて左目用の原画像を参照する際の画素の移動量との関係を説明するための図である。なお図３１の模式図では、右目用の原画像の画素位置と左目用の原画像の画素位置が視差値分だけ離れている図を示したが、実際の数式上は、原画像を仮想空間の視錘台に配置する際の左右の視点の差Ｅｗｐを考慮し、図３２に示すような座標系で計算することになる。
【０１０９】
図３２に示すように、右目画素の位置ｉｘＲとそれに対応する左目画素の位置ｉｘＬは上述のＥｗｏｓｃ＝Ｅｗｐ−Ｄｐだけ離れている。ただし、Ｅｗｏｓｃは右目画素を基準とした場合と左目画素を基準とした場合で、サブピクセル精度では値が異なることに留意する。Ｅｗｐの値は左右で等しいが、視差値は基準とする目により異なるからである。計算にあたっての考え方は図１０で示したのと同様であるが、本来の始点であるｉｘＲに対応する、左目用の画像における位置ｉｘＬが始点となる点が異なる。すなわち左右の対応画素間のＥｗｏｓｃのずれを考慮する必要がある。
【０１１０】
図１０と同様、視点がｘ＿ｏｆｆだけ移動した場合、右目用の原画像上の位置ｉｘＲのＸ軸方向の補正量ｄｘは上述のとおり、
dx = Zp * x_off / (Scp + Zp)
である。ここで左目用の原画像における対応する位置ｉｘＬとｉｘＲとはＥｗｏｓｃだけ離れているため、左目用の原画像上の位置ｉｘＬを始点とした場合の、右目用の画像における補正後の位置ｔｘＲは次のように求められる。
txR = ixL + Ewosc + dx
【０１１１】
左目の視点の移動についても同様に計算できる。すなわち右目用の原画像上の位置ｉｘＲを始点とした場合の、左目用の画像における補正後の位置ｔｘＬは次のように求められる。
txL = ixR - Ewosc + dx
視点移動によるＹ軸方向の位置の移動は、相互参照しない場合と同様である。
【０１１２】
視点が角度θだけ回転した場合、右目用の原画像上の位置ｉｘＲのＸ軸方向、Ｙ軸方向の補正量ｄｘ、ｄｙは上述のとおり、
dx = Ewosc / 2.0 * cos(θ)
dy = Ewosc / 2.0 * sin(θ)
である。左目用の原画像上のＸ軸方向、Ｙ軸方向の位置ｉｘＬ、ｉｙＬを始点とした場合、中央画像の位置への移動量はＥｗｏｓｃ／２であるため、右目用の画像における補正後のＸ軸方向、Ｙ軸方向の位置ｔｘＲ、ｔｙＲは次のように求められる。
txR = ixL + Ewosc/2.0 + dx
tyR = iyL + dy
【０１１３】
左目用の画像参照ベクトルマップにおいて右目用の原画像を参照する際も同様の計算となる。これらの計算により、相互参照しない場合と同様に、画像参照ベクトルマップの各画素に対し画像参照ベクトルを設定できる。
【０１１４】
なお、一方の視点に対する画像参照ベクトルマップを生成する際、あらかじめ同一視点からの原画像を参照する画像参照ベクトルの設定を終わらせておき、相互参照により他方の視点の原画像を参照する画像参照ベクトルで上書きしないように制御する。これはそれぞれの原画像が本来有する、視点の位置に依存した輝度の情報をできる限り正しく表示画像に反映させるためである。ただし後述するように、視点の移動に伴い原画像の画素の間隔が引き伸ばされる箇所では、他方の視点からの原画像を参照した方が正確に表現できる場合がある。この場合、後述する信用度判定処理を導入するなどして、他方の視点からの原画像を参照するベクトルを優先して書き込んでもよい。
【０１１５】
なお左右の視差値画像を利用して、左右一方の原画像において死角となり他方の原画像を参照できる画素についてあらかじめ特定しておくことにより、処理を効率化することが可能である。視差値画像は、オブジェクト３４４のうち原画像で見えている部分についての視差値を保持している。例えば図３１において右目用の原画像３４２の各画素は、破線矢印の先に示すようなオブジェクト３４４上の位置を表し、対応する視差値画像の各画素は、矢印Ａのように、オブジェクト３４４上の各位置が示す左目用の原画像３４０でどの位置に表れるかを、画像平面上の差分で示している。
【０１１６】
したがって、右目用の視差値画像が保持する視差の終点のいずれにも該当しない左目用の原画像の領域Ｂは、右視点からは死角であり左視点からは見えているオブジェクトの部分を表していることになる。この場合、右目の画像参照ベクトルを、左目用の原画像３４０における領域Ｂの画素を参照するように設定することが可能である。そこで画像平面に対し、領域Ｂの存在を示したデータをあらかじめ作成しておくことができる。
【０１１７】
これを相互参照フラグと呼ぶ。左目用の原画像３４０における領域Ｂを表す相互参照フラグは次のように生成できる。すなわち同じ水平ライン上の画素列において、右目用の原画像３４２上の位置ｉｘＲに対応する、左目用の原画像３４０上の位置ｉｘＬは上述のとおり、
ixL = ixR - Ewosc
である。
【０１１８】
ただしＥｗｏｓｃの算出に用いる視差Ｄｐは、右目用の原画像の画素に対して与えられている、右目の視差値画像が保持する値である。ここでｉｘＲは画素の中心であり、ｉｘＬは画素の中心とは限らない。そこでｉｘＬを四捨五入して最近傍の画素中心を求め、それを中心とする画素を特定する。このようにして得られる画素は、図３１における視差の終点となる画素であり、それ以外の画素は領域Ｂのように、右目用の表示画像のために参照できる画素である。
【０１１９】
したがってそれらの画素が区別できるように１ビットの情報を与える。このようなデータを左右の原画像平面に対し取得することにより、左右の相互参照フラグを生成できる。例えば視差の終点となる画素に対し「１」のフラグを与えれば、フラグのない画素を参照先として別視点のマップにおける画像参照ベクトルを設定できる。
【０１２０】
図３３および図３４は原画像の例を示す。この例では王冠が表示されている。図３３は左目用の原画像であり、図３４は右目用の原画像である。左目用の原画像において死角になっている矢印で示す部分は、右目用の原画像においては見えている。
【０１２１】
図３５は、左目用の表示画像生成処理において右目用の原画像を参照する相互参照フラグを右目画像において示した図である。すなわち図３４の右目用の原画像において相互参照フラグ（ｉＣＬ２Ｒ）が１である画素と０である画素を色分けして表示している。相互参照フラグが０の画素、すなわち左目用の原画像において視差の終点とされない右目用の原画像の画素が、王冠表面の凹凸の左側面（画面の右側）に線状に分布している。また、矢印で示す部分では太い帯状にも存在している。これらの画素は、左目用原画像において死角になっている。
【０１２２】
図３６は、右目用の表示画像生成処理において左目用の原画像を参照する相互参照フラグを左目画像において示した図である。すなわち図３３の左目用の原画像において相互参照フラグ（ｉＣＲ２Ｌ）が１である画素と０である画素を色分けして表示している。相互参照フラグが０の画素、すなわち右目用の原画像において視差の終点とされない左目用の原画像の画素が、王冠表面の凹凸の右側面（画面の左側）に線状に分布している。また、矢印で示す部分では太い帯状にも存在している。これらの画素は、右目用原画像において死角になっている。
【０１２３】
図３５で示した相互参照フラグが１である右目用の原画像の画素は、左目用の原画像の死角領域を補うために、左目用の表示画像の描画に利用できる。図３６で示した相互参照フラグが１である左目用の原画像の画素は、右目用の原画像の死角領域を補うために、右目用の表示画像の描画に利用できる。ただし相互参照フラグはあくまで、相互参照において参照先となる原画像のうち、画像参照ベクトルの参照先となり得る画素の候補を特定するためのものであり、実際に画像参照ベクトルをマップに設定すべきか否かを判定する基準になるものではない。
【０１２４】
上述したように、一方の視点に対する画像参照ベクトルマップにおいて、同一視点からの原画像を参照先とする画像参照ベクトルがすでに設定されている画素に対しては、相互参照を行う画像参照ベクトルは書き込まない。ただし原画像の画素間の距離が大きく引き伸ばされ、正確な補正画像データが得られないと考えられる領域に関しては、相互参照を行う画像参照ベクトルをマップに設定すべきか否かを判定する基準として、Ｚ値に対する信用度フラグを導入することができる。
【０１２５】
図３７は、Ｚバッファに信用度フラグを設定する妥当性を説明する図である。原画像において死角となっている箇所のＺ値は正確には計算できないため、原画像において見えている箇所のＺ値を用いた補間を行う必要がある。例えば図３７の３次元オブジェクト３４４において、符号３４５で示す部分は右目の死角になっている。当該死角領域に対してはＺ値が補間されるため、データ上、符号３４６のような形状として推定される。この場合、符号３４５で示されるオブジェクトの真の形状と、符号３４６で示される推定された形状とを比較すると、後者の方が視点に近い位置にある。
【０１２６】
そのため、相互参照によりオブジェクトの真の形状を表す画素が得られても、補間により推定された同じ視点からの原画像の画素の方がＺ比較により優先されてしまい、相互参照の効果を発揮できない。これを避けるために、Ｚバッファに信用度フラグのビットを設ける。例えば原画像の画素に対応する正確なＺ値に対しては信用度フラグを設定し（たとえば値１を設定する）、補間されて得たＺ値については信用度フラグを設定しない（たとえば初期値０のままにする）。
【０１２７】
これにより画像参照ベクトルマップにおいて、補間されたＺ値をもつ画素を信用度フラグに基づき特定できる。そして当該画素に対して、相互参照により正確なＺ値をもつ画素値を参照できる場合、マップの視点と同一視点からの原画像を参照する画像参照ベクトルがすでに設定されている画素であっても、信用度フラグが設定されていないことから、Ｚ比較を行わずに相互参照の画像参照ベクトルを設定する。これにより、より正確な補正画像を得ることが可能になる。
【０１２８】
信用度フラグの求め方の一例を説明する。有効な３点（ｉｘ，ｉｙ）、（ｉｘ，ｉｙ＋１）、（ｉｘ＋１，ｉｙ）が視点移動によりそれぞれ（ｔｘ０，ｔｙ０）、（ｔｘ１，ｔｙ１）、（ｔｘ２，ｔｙ２）に変位する場合、変位後の３点のｘ座標ｔｘｉ（ｉ＝０、１、２）の最大値をｔｘ＿ｍａｘ、最小値をｔｘ＿ｍｉｎとし、変位後の３点のｙ座標ｔｙｉ（ｉ＝０、１、２）の最大値をｔｙ＿ｍａｘ、最小値をｔｙ＿ｍｉｎとする。そして変位後の３点が引き伸ばされた度合いから信用度フラグを以下のように設定する。
(tx_max - tx_min）> 1.5（ピクセル）または
(ty_max - ty_min) > 1.5（ピクセル）の場合、信用度フラグ=0
それ以外の場合、信用度フラグ=1
【０１２９】
このように変位後の３点の引き延ばされた度合いが所定の閾値より大きい場合は信用度が低いが、引き延ばされた度合いが所定の閾値未満であれば、信用度が高いと判断し、対応する画素のＺ値に信用度フラグを設定する。信用度の基準になる閾値を１．５ピクセルとしたのは一例であり、画質に応じて閾値を変更してもよい。
【０１３０】
また、（ｉｘ，ｉｙ）、（ｉｘ，ｉｙ＋１）の２点のみが有効であり、この２点が視点移動によりそれぞれ（ｔｘ０，ｔｙ０）、（ｔｘ１，ｔｙ１）に変位する場合、変位後の２点のｘ座標ｔｘｉ（ｉ＝０、１）の最大値をｔｘ＿ｍａｘ、最小値をｔｘ＿ｍｉｎとし、変位後の２点のｙ座標ｔｙｉ（ｉ＝０、１）の最大値をｔｙ＿ｍａｘ、最小値をｔｙ＿ｍｉｎとして、変位後の２点が引き伸ばされた度合いから信用度フラグを以下のように設定する。
(tx_max - tx_min) > 1.5（ピクセル）または
(ty_max - ty_min) > 1.5（ピクセル）の場合、信用度フラグ= 0
それ以外の場合、信用度フラグ= 1
元画像の１点のみが有効な場合は、変位後の画素も１点であり引き伸ばされることはないので、信用度フラグ＝１として扱う。
【０１３１】
図３８は、視点を右方向に移動させた場合の、左目用のマップに対する信用度フラグを示す図である。信用度フラグが１である画素と信用度フラグが０である画素を色分けして示す。視点移動により引き伸ばされて描画された画素の信用度フラグが０に設定されていることがわかる。左目用の原画像の死角領域について、右目用の原画像の画素を参照する際、信用度フラグが０の画素については、Ｚ比較を行わずに、相互参照による画像参照ベクトルを当該画素に設定する。
【０１３２】
次に相互参照を用いた画像参照ベクトルマップの生成処理を説明する。以下、右目用の画像参照ベクトルマップの生成手順を説明する。
【０１３３】
（１）まず、右目用の画像参照ベクトルマップに、右目用の原画像のうち位置座標（ｉｘＲ，ｉｙＲ）の画素の視差値から計算した画像参照ベクトルを書き込む。
（２）画像参照ベクトルの書き込みの際、Ｚバッファ処理を行いながら、信用度フラグも同時に書き込む。このとき信用度フラグの内容に拘らずＺ比較を行い、より視点に近いＺ値を持つ画像参照ベクトルをマップ上の画素ごとに設定する。
【０１３４】
（３）次に、左目用の原画像で位置座標（ｉｘＬ，ｉｙＬ）の画素のうち、相互参照フラグが「０」である画素について、右目用の画像に対する相互参照のための画像参照ベクトルを計算し、右目用の画像参照ベクトルマップの対応する画素に書き込む。
（４）このとき、既に書き込まれた画像参照ベクトルの信用度フラグが「１」の場合はＺ比較を行うことにより、視点により近い場合にのみ書き込みを実施する。信用度フラグが「０」の場合は、Ｚ比較を行わずに書き込みを行う。
左目用の画像参照ベクトルマップの生成手順も同様である。
【０１３５】
相互参照のための画像参照ベクトルをマップに設定するケースをまとめると次のようになる。
（ａ）設定対象の画素に、画像参照ベクトルが設定されていない場合
（ｂ）設定対象の画素に、マップと同一視点の原画像を参照先とする画像参照ベクトルが設定されているが、その信用度フラグが「０」の場合
（ｃ）設定対象の画素に、マップと同一視点の原画像を参照先とする画像参照ベクトルが設定されており、その信用度フラグが「１」であるが、設定しようとしている画像参照ベクトルに対応するＺ値が、すでに設定されている画像参照ベクトルに対応するＺ値より視点に近いことを示す場合
（ｄ）設定対象の画素に、すでに相互参照のための画像参照ベクトルが設定されているが、設定しようとしている画像参照ベクトルに対応するＺ値が、すでに設定されている画像参照ベクトルに対応するＺ値より視点に近いことを示す場合
【０１３６】
ただし、すでに設定されている画像参照ベクトルがマップと同一視点の原画像を参照先とするか、相互参照のためのものかを判断するには、設定されている画像参照ベクトルを読み出す必要がある。この無駄なデータ読み出しを避けるために、相互参照のための画像参照ベクトルを設定する際は、同時に信用度フラグを「１」とする。これにより、Ｚ値とその信用度フラグを参照するのみで、画像参照ベクトルの設定の是非を判定できる。
【０１３７】
図３９は、視点を右方向に移動させた場合の、左目用のマップに設定される相互参照を行う画像参照ベクトルを説明するための図である。左目用の原画像を参照先とする画像参照ベクトルが書き込まれた画素と、相互参照により右目用の原画像を参照先とする画像参照ベクトルが書き込まれた画素を色分けして示す。信用度フラグが０の画素に対して、相互参照による右目用の原画像を参照先とする画像参照ベクトルが設定されていることがわかる。
【０１３８】
図４０は、視点を下方向に移動させた場合の、左目用のマップに設定される相互参照を行う画像参照ベクトルを説明するための図である。上下方向の視点移動の場合でも、相互参照によって右目用の原画像を参照先とする画像参照ベクトルが多く設定されていることがわかる。
【０１３９】
図４１は、相互参照を導入した場合の画像参照ベクトルを説明する図である。同図に格子で示す、画像参照ベクトルマップの各画素には、画像参照ベクトルが格納されている。ただし下部に色分けの凡例が示されるように、マップと同一視点の原画像を参照するものと、相互参照するものとが混在している。そのため表示画像を描画する際は、画像参照ベクトルが右目用の原画像と左目用の原画像のどちらを参照するべきかを特定する必要がある。
【０１４０】
そこでマップに設定される画像参照ベクトルに、参照先の画像を識別するフラグを設ける。例えば、画像参照ベクトルを３２ビットの浮動小数点形式で保持する場合、一方の成分の最下位ビットには、画像参照ベクトルの有効／無効を示すフラグビットを設け、他方の成分の最下位ビットには、参照先の画像を識別するフラグビットを設ける。例えば同一視点の原画像を参照する場合は０を、相互参照の場合は１を設定する。
【０１４１】
次に相互参照のための画像参照ベクトルのフィルタ処理を説明する。相互参照のない画像参照ベクトルマップを用いた描画処理では、常に一つの原画像を参照すればよい。したがって、画像参照ベクトルに対して既に述べたように拡張バイリニアフィルタリングを適用し、それにより得られた一つの画像参照ベクトルに基づき原画像の対応する位置座標を取得することにより、バイリニアフィルタ等を用いてカラー値を計算する。
【０１４２】
一方、相互参照のための画像参照ベクトルを含む場合は、表示画像の１つの画素のカラー値を求めるのに用いる参照先の画素が、２つの画像に分かれている場合があるため、場合分けが必要となる。図４２は、画像参照ベクトルのフィルタ処理の場合分けを説明するための図である。サンプリング点Ｓと、サンプリング点Ｓの周辺にある４画素Ａ〜Ｄが示されている。サンプリング点Ｓは、図２７（ａ）で説明した表示画像における画素の中心である。
【０１４３】
図４２の（ａ）は、周辺画素Ａ〜Ｄに格納された画像参照ベクトルがいずれも、左目用の原画像を参照するものである場合、図４２（ｂ）は周辺画素Ａ〜Ｄに格納された画像参照ベクトルがいずれも、右目用の原画像を参照するものである場合である。これらの場合は、相互参照がない場合の拡張バイリニアフィルタリングをそのまま適用できる。なお（ａ）、（ｂ）では周辺画素Ａ〜Ｄに全て画像参照ベクトルが設定されている場合を例示しているが、画像参照ベクトルが存在しない画素が含まれている場合も同様である。
【０１４４】
図４２の（ｃ）は、画素Ａに格納された画像参照ベクトルは右目用の原画像を参照し、画素Ｂ、Ｃ、Ｄに格納された画像参照ベクトルは左目用の原画像を参照する場合である。この場合は参照先の画像ごとに、相互参照がない場合と同様の拡張バイリニアフィルタリングを行い、左右それぞれの原画像から得られたカラー値を最終的にブレンドしてもよい。一方、左右双方の画像を参照するような領域は、もともと原画像の画質が低いと考えられるため、計算速度優先のフィルタリングを行っても十分であると考えられる。
【０１４５】
まず比較のために、通常の拡張バイリニアフィルタリングでよい場合、すなわち左右いずれかの一つの原画像を参照すればよい場合の、表示画像のカラー値の決定手順を改めて説明する。図４３は、相互参照がない場合の、表示画像のカラー値の決定処理を説明するための図である。図４３の（ａ）においてマップ上のサンプリング点Ｓの周辺にある４画素Ａ〜Ｄのうち、画素Ａには画像参照ベクトルが存在せず、画素Ｂ、Ｃ、Ｄに画像参照ベクトルが存在する場合、３画素Ｂ、Ｃ、Ｄの画像参照ベクトルに対して拡張バイリニアフィルタリングを適用し、サンプリング点Ｓにおける画像参照ベクトル５８０を求める。
【０１４６】
次に（ｂ）に示すように、求めた画像参照ベクトル５８０を用いて参照先の原画像をサンプリングし、アルファブレンド、アルファテスト等を行うことにより、画像参照ベクトル５８０の参照先の点Ｐのカラー値を計算する。このサンプリングには、通常のバイリニアフィルタリングを用いることができる。
【０１４７】
図４４は、異なる原画像を参照先に含む場合の、表示画像のカラー値の決定処理を説明するための図である。図４４の（ａ）に示すように、マップ上のサンプリング点Ｓの周辺４画素Ａ〜Ｄのうち、画素Ａには画像参照ベクトルが存在せず、画素Ｂ、Ｃ、Ｄに画像参照ベクトルが存在する場合、３画素Ｂ、Ｃ、Ｄの画像参照ベクトルを利用して原画像のサンプリング点を求める。ここで、画素Ｂの画像参照ベクトル５８２ｂおよび画素Ｃの画像参照ベクトル５８２ｃは、マップと同一視点の原画像を参照しているが、画素Ｄの画像参照ベクトル５８２ｄは他方の視点の原画像、すなわち相互参照先の原画像を参照しているとする。
【０１４８】
（ｂ）は、マップと同一視点の原画像における画素Ｂの画像参照ベクトル５８２ｂの参照先、当該原画像における画素Ｃの画像参照ベクトル５８２ｃの参照先、相互参照先の原画像における画素Ｄの画像参照ベクトル５８２ｄの参照先を示す。このような場合、相互参照を含まない場合のように３画素Ｂ、Ｃ、Ｄの画像参照ベクトルに対して拡張バイリニアフィルタリングを適用することは意味がない。そこで３画素Ｂ、Ｃ、Ｄのそれぞれについて画像参照ベクトルの参照先の画素をサンプリングし、バイリニア補間などによりカラー値を得る。画像参照ベクトルが存在しない画素Ａに対してはカラー値を、アルファを含めてゼロにしておく。そして４画素Ａ〜Ｄに対しそれぞれ得られたカラー値に、サンプリング点Ｓと周辺４画素との位置関係にもとづく比率でバイリニアフィルタを施すことで、最終的なカラー値を求める。
【０１４９】
図４５は、原画像操作部２５４が、画像参照ベクトルマップに相互参照のための画像参照ベクトルを設定する処理手順を示すフローチャートである。この処理は、図２５で示した画像参照ベクトルマップを生成する処理に追加してなされる。まず対象のマップと同一視点の原画像に対応する視差値画像を用いて、相互参照先の原画像の対応する画素の座標を求め、求められた画素の座標にフラグを設定することにより、相互参照フラグ配列を生成する（Ｓ６０）。ただしこの処理は省略してもよい。
【０１５０】
次に相互参照先の原画像に対応する視差値画像および、視点の移動量と回転角から、当該画像における各画素の変位ベクトル（ｄｘ，ｄｙ）を算出する（Ｓ６２）。そして変位ベクトル（ｄｘ，ｄｙ）にもとづいて、マップと同一視点の原画像における変位後の三角形の内部の対象画素Ｔ（ｉｔｘ，ｉｔｙ）に対する、相互参照先の原画像における始点Ｐの座標値（ｐｘ，ｐｙ）を求める（Ｓ６４）。さらに対象画素Ｔ（ｉｔｘ，ｉｔｙ）から始点Ｐ（ｐｘ，ｐｙ）への画像参照ベクトル（ｐｘ−ｉｔｘ，ｐｙ−ｉｔｙ）を、相互参照のための画像参照ベクトルとして求める（Ｓ６６）。
【０１５１】
相互参照フラグ配列においてフラグが書き込まれなかった相互参照先の原画像の画素、すなわちマップと同一視点の原画像において死角に位置するすべての画素について、ステップＳ６４およびＳ６６の処理を行い、画像参照ベクトルマップの対応する画素に、相互参照のための画像参照ベクトルを上書きする（Ｓ６８）。Ｓ６８の処理は、信用度フラグおよびＺ値に基づき、設定済みの画像参照ベクトルを上書きするかどうかを判定したうえで実施する。
【０１５２】
図４６は、相互参照を適用した場合に表示画像生成部２６８が原画像をビュースクリーンにマッピングする処理手順を示すフローチャートである。この処理は，図２６で示した処理の代わりに実施する。表示画像生成部２６８はまず、ビュースクリーン上の点（ｔｘ，ｔｙ）にマッピングされるべきテクスチャ座標（ｔｕ，ｔｖ）を生成する（Ｓ７０）。そして、当該テクスチャ座標にもとづき画像参照ベクトルマップ上のサンプリング点を求め、その周辺画素の画像参照ベクトルを取得する。
【０１５３】
周辺画素の画像参照ベクトルがいずれも、マップと同一視点の原画像を参照するものである場合（Ｓ７２のＮ）、相互参照をしないためステップＳ７４に進む。周辺画素の画像参照ベクトルに、他方の視点の原画像を参照するものがある場合（Ｓ７２のＹ）、相互参照が必要なためステップＳ７８に進む。相互参照をしない場合、ステップＳ７２でサンプリングした画像参照ベクトルを用いた拡張されたバイリニア補間により、テクスチャ座標における画像参照ベクトルを求める（Ｓ７４）。そのようにして求めた画像参照ベクトルをテクスチャ座標（ｔｕ，ｔｖ）に加算してなる参照先のテクスチャ座標（ｕ，ｖ）にもとづいて、原画像の画素値をフィルタリングすることにより、ビュースクリーン上の各画素にマッピングされるべき原画像のカラー値を生成する（Ｓ７６）。
【０１５４】
相互参照する場合、ステップＳ７２で画像参照ベクトルマップからサンプリングした各周辺画素の画像参照ベクトルを用いて、参照先の原画像の画素値をフィルタリングする（Ｓ７８）。ここでの参照先には、マップと同一視点の原画像と、他方の視点の原画像がある。前者が参照先であれば、当該同一視点の原画像から画素値をフィルタリングし、後者が参照先であれば、当該他方の視点の原画像から画素値をフィルタリングする。
【０１５５】
ステップＳ７８でフィルタリングにより得られたカラー値を、さらにバイリニア補間することにより、最終的なカラー値を求める（Ｓ８０）。ビュースクリーン上のすべての画素について、ステップＳ７０〜Ｓ８０の手順により、マッピングされるカラー値を生成することにより、原画像がビュースクリーンにマッピングされてなる表示画像が生成される（Ｓ８２）。
【０１５６】
以下、相互参照により描画された表示画像の例を説明する。図４７は、比較のため、相互参照を行わなかった場合の左目画像の表示画像例である。これは、視点を右方向に移動させた場合の描画結果である。矢印で示す部分が左目から見た場合の死角になっており、死角領域を線形補間により描画したことにより、画質が劣化していることがわかる。図４８は、相互参照を行った場合の左目画像の表示画面例である。図４７と同様、視点を右方向に移動させた場合の描画結果である。矢印で示す死角領域において右目画像の画素を利用して補間することによって、画質の劣化が抑えられていることがわかる。
【０１５７】
図４９は、比較のため、相互参照を行わなかった場合の左目画像の別の表示画面例である。これは、視点を時計回りに回転させた場合の描画結果である。矢印で示す部分において、引き延ばされた三角形により、画素値が線状に補間されていることがわかる。図５０は、相互参照を行った場合の左目画像の表示画面例である。図４９と同様、視点を時計回りに回転させた場合の描画結果である。矢印で示す死角領域において右目画像の画素を利用して補間することによって、正しく描画されている。
【０１５８】
図５１は、図５０の相互参照描画画像において、左目画素と右目画素を区別して示す図である。死角領域において、信用度０の左目画素が相互参照された右目画素によって上書きされていることがわかる。
【０１５９】
以上述べた本実施の形態によれば、３次元のステレオ画像やステレオ動画像に対して、視点の移動や回転があってもユーザーの不快感を抑制するような画像の補正を高い品質で実現することができる。
【０１６０】
ステレオカメラやステレオビデオなどで撮影された自然画像に対しては、本実施の形態は次のようなメリットをもつ。一般に自然画像では、左右の画像のステレオマッチングから正確な視差値（あるいは距離値）を抽出することが難しい。このため、視差値にはある程度の誤差を含むことになる。このため左右のステレオ画像と視差値から、計算で３次元のデータをいったん求め、これに対してパースペクティブの補間を行うことで、右目画像および左目画像を再生成して仮想空間に表示する手法では、３次元データの精度が維持しにくく、表示画像の品質が劣化しやすい。
【０１６１】
これに対し本実施の形態によれば、原画像に対し想定されている視点と、実際の視点が一致する場合、原画像の品質での立体視が可能になる。また視点が動いた場合も、それに応じてなされる原画像に対する修正が最小限であるため、正確な視差値が存在しない自然画像であっても、高い品質での表示画像の立体視が可能となる。
【０１６２】
実施の形態２
実施の形態１では、表示装置として主に平板型ディスプレイを想定した態様を説明した。本実施の形態では、表示装置としてヘッドマウントディスプレイを想定した場合について説明する。ただし表示装置をいずれかに限定するものではなく、実施の形態１にヘッドマウントディスプレイを導入したり、本実施の形態に平板型ディスプレイを導入したりすることも可能である。また実施の形態１の一部の構成を本実施の形態に適用したり、本実施の形態の一部の構成を実施の形態１に適用したりすることも可能である。以後、実施の形態１と異なる点に着目して説明する。
【０１６３】
図５２は、ヘッドマウントディスプレイの外観図である。ヘッドマウントディスプレイ１００は、本体部１１０、前頭部接触部１２０、および側頭部接触部１３０を含む。ヘッドマウントディスプレイ１００は、ユーザの頭部に装着してディスプレイに表示される静止画や動画などを鑑賞し、ヘッドホンから出力される音声や音楽などを聴くための表示装置である。ヘッドマウントディスプレイ１００に内蔵または外付けされたモーションセンサにより、ヘッドマウントディスプレイ１００を装着したユーザの頭部の回転角や傾きといった姿勢情報を計測することができる。ヘッドマウントディスプレイ１００は、図１に示した画像表示システムにおける平板型ディスプレイ１２の代わりとして画像生成装置２００と接続することにより、左右の表示画像のデータを取得し、ユーザの左目および右目の前にそれぞれ表示する。
【０１６４】
図５３は、画像表示システムによって実現される表示の形態を説明するための図である。実施の形態１と同様、本実施の形態でも画像を表す平面を、さらに仮想空間に配置した状態を作り出す。すなわち観念的には（ａ）に示すように、画像を表示させた画像スクリーン５０を仮想空間における場５２上に配置させ、ユーザ５４が、ビュースクリーン５６を介してそれを鑑賞できるようにする。ここでビュースクリーン５６は、ヘッドマウントディスプレイ１００に表示される画像の視野に対応する。
【０１６５】
ユーザ５４が仮想空間を見ながら移動すると、仮想世界との相対位置の変化に応じて画像スクリーン５０の見え方も変化する。例えば図５３の（ａ）に示すように、ユーザ５４が画像スクリーン５０に対し右方にいる場合、画像生成装置２００は矢印で示すような視線に対応する（ｂ）のような画像を生成し、ヘッドマウントディスプレイ１００に表示させる。なお仮想空間における場５２は仮想空間の座標系を表象しているに過ぎず、形状などを限定する主旨ではない。また必ずしも表示させなくてよい。
【０１６６】
図５４は、図５３の態様を実現するために画像生成装置２００が生成する画像を模式的に示している。本実施の形態において画像スクリーン５０に表示させる画像は、立体視用の一対の視差画像、すなわち左目用画像６０ａおよび右目用画像６０ｂで構成される。図５３で示すような画像を立体視させるためには、同じオブジェクトが左目用画像６０ａでは右寄りに、右目用画像６０ｂでは左寄りに表れる。
【０１６７】
また画像スクリーン５０に対する視点の位置が左右の目で異なるため、それぞれの視点から透視変換を行う必要がある。例えば図５３に示すようにユーザが画像スクリーン５０に対し右方にいる場合、左目より右目の方が画像スクリーン５０に近く、画像スクリーン５０の平面に垂直な軸に対する角度が大きくなる。結果として画像スクリーン５０の枠の形状および位置は左目用画像６０ａ、右目用画像６０ｂで異なり、それらを同一平面上に重ねて表すと、平面６２に示すような位置関係となる。
【０１６８】
このような左目用画像６０ａ、右目用画像６０ｂを生成し、ヘッドマウントディスプレイ１００の画面を左右に分割してなる領域のうち左目に対する領域に前者を、右目に対する領域に後者を表示させることにより、ユーザには図５３の（ｂ）で示される状態で画像スクリーン５０に表れるオブジェクトが立体に見えるようになる。なお実際には、ヘッドマウントディスプレイ１００の画面とユーザの目の間にはレンズが設けられ、左右の目の視野全体に画像が表れるようにする。そのため左目用画像６０ａ、右目用画像６０ｂにはそれぞれ、レンズを介して見たときに本来の画像が視認されるようなレンズ歪み補正が施される。
【０１６９】
本実施の形態で準備する原画像のデータおよび視差値（または距離値）のデータは、実施の形態１で説明したのと同様である。このような原画像を、特にヘッドマウントディスプレイ１００のように比較的大きな視点の移動を許容して適正に立体視させるためには、与えられた２次元画像を一旦、３次元の仮想空間に逆射影したうえ、再度ビュースクリーンに射影することが考えられる。例えば左右どちらかの原画像を、画素中心を頂点とする微小三角形に分割し、それぞれの距離Ｚｐに応じて仮想３次元空間に配置する。そして鑑賞者の視点に対応する左右のビュースクリーンに各微小三角形を射影し、内部をテクスチャマッピングにより描画する。
【０１７０】
しかしながらこの場合、次に述べるような問題が生じる。すなわち原画像を微小三角形に分割して仮想３次元空間に配置する場合、左右どちらかの原画像を選択せざるを得ない。このため奥行き情報も選択された画像を基準とした情報のみとなる。その結果、図１１を参照して説明したように視差値や距離値がサブピクセル精度の情報を有していても、表示画像にそのような高精細な情報を反映させることができない。また一般的に異なる視点から取得された画像間では光の鏡面反射の成分や屈折光の成分が異なることが普通であるが、オブジェクトを単独の点群あるいは微小三角形の集まりで表現すると、これらの情報が欠落してしまい結果的にオブジェクトの質感を損ねることになる。
【０１７１】
さらに、分割した微少領域を３次元空間に逆射影する処理、３次元空間における微少領域をビュースクリーンに射影する処理、という２段階の処理により、最終的な表示画像の品質が劣化しやすい。鑑賞者の視点が図５に示すような適切な位置にあり、本来は画像の変換の必要がなくても、そのような処理が介在することにより無駄に画質が劣化することになる。また、例えば大量のメモリを準備し３次元の仮想空間に逆射影した情報を点群あるいは微小三角形の集合として保存しておいたとしても、再度ビュースクリーンに対する各点の透視変換が必要であり、処理の負荷が大きい。
【０１７２】
このため原画像を動画としたりユーザの移動が早かったりした場合は特に、看過できないレイテンシを生む。そこで画像参照ベクトルを用いて原画像と表示画像を直接的に関連づけることで、画質の劣化やレイテンシを最小限に抑える。これにより、各点の４ｘ４の透視変換マトリックスを用いた透視変換処理が簡略化され、少ない演算量で画素ごとの変位を計算することが可能になる。また、最終的にビュースクリーンに対する補正画像の透視変換が必要になるが、これは補正画像全体をカバーする一つの三角形に対し実行すればよいため、従来のグラフィックスハードウェアを用いて非常に高い効率で処理することが可能である。
【０１７３】
本実施の形態において画像生成装置２００が原画像から表示画像を生成するおよその処理手順は図７で示したのと同様でよい。なおＳ１０においては、視点の位置とともに視線の方向を取得する。この際、ヘッドマウントディスプレイ１００に内蔵したモーションセンサによりユーザの頭部の姿勢を取得できる。また図示しない撮像装置でユーザを撮影し、ヘッドマウントディスプレイ１００の表面に設けた発光マーカーの像などに基づきユーザ頭部の位置や姿勢を取得できる。
【０１７４】
あるいはヘッドマウントディスプレイ１００側に、ユーザの視野に対応する画像を撮影する図示しない撮像装置を設け、ＳＬＡＭ（Simultaneous Localization and Mapping）などの技術により頭部の位置や姿勢を取得してもよい。このように頭部の位置や姿勢を取得できれば、ユーザの視点の位置および視線の方向はおよそ特定できる。またＳ１２において画像参照ベクトルマップを生成する画像スクリーンは、設定によっては視点の移動に応じて原画像の平面からＺ軸方向に平行移動させてもよい。さらにＳ１４において表示画像が描画されるビュースクリーンは、視点の位置および視線の方向に対応するように設定する。
【０１７５】
次に、Ｓ１２で視点の移動に応じて画像スクリーンを平行移動させる場合の効果について説明する。図５５は、図５のような仮想空間で画像スクリーンの位置を固定し、ユーザが画像側に移動した際の画像の見え方を模式的に示している。図５で示したようなカメラ７０ａ、７０ｂと画像スクリーン７６の配置は、原画像を取得した際の想定上のものであり、画像を鑑賞するユーザには意識されない。
【０１７６】
したがってユーザが画像スクリーンに近づいていくと、やがて図５５の（ａ）に示すように、ユーザ３０２ａが画像スクリーン３００ａより前に出てしまうことが考えられる。この場合透視変換が破綻し、オブジェクト３０４ａを含む原画像はユーザ３０２ａから見えなくなってしまう。また（ｂ）に示すように、ユーザ３０２ｂが画像スクリーン３００ｂより前に出なくとも、近づくほど透視変換による原画像の拡大率が大きくなり、表示画像におけるオブジェクトの解像度が低下する。このことは、ユーザの移動範囲が広いヘッドマウントディスプレイ１００の場合は特に顕著である。
【０１７７】
図５６は、視点の位置に応じて画像スクリーンを移動させる手法を説明するための図である。一実施形態では、上述のような不都合を回避するため、図示するようにユーザ３０６がＺ軸の逆方向にΔＺだけ移動したら、画像スクリーン３０８もΔＺだけ同じ方向に移動させる。すなわち視点のＺ成分の移動量に対し、画像スクリーンを同じ量だけ同方向に平行移動させることにより、ユーザ３０６と画像スクリーン３０８との距離を一定に保つ。
【０１７８】
同時に、オブジェクト３１０が仮想空間に固定されて見えるように、原画像の像を構成する画素を移動させる。これにより、画像スクリーン３０８が移動したことはユーザ３０６には認識されない。結果として見た目の状況に影響を与えることなく、図５５で示したような状況を回避できる。なお上述はＺ軸の逆方向への動きであったが、視点がＺ軸方向へ移動したときも、画像スクリーンを同方向へ平行移動させてよい。
【０１７９】
図５７は、視線の方向を加味して原画像をビュースクリーン上に描画する様子を示している。この場合も図５６で説明したのと同様、ユーザ３１２の移動量のＺ成分と同じ距離だけ画像スクリーンを同方向に平行移動させる。ただし図示するように、移動後の視線がＺ軸に対し角度θを有すると、左目の視点の移動量ΔＺｌと右目の視点の移動量ΔＺｒが異なる。
【０１８０】
したがって移動後の画像スクリーンは、左目用の画像スクリーン３１６ａと右目用の画像スクリーン３１６ｂで異なる位置になる。図示する例ではユーザが左前方を向いていることにより、左目用の画像スクリーン３１６ａがユーザに近い位置にある。そして各画像スクリーン３１６ａ、３１６ｂに合わせて左右の原画像を変化させ、さらに移動後のユーザ３１２の視点の位置および視線の方向に対応するように設定したビュースクリーン３１８に射影する。
【０１８１】
なお図５６、５７で示したような画像スクリーンの移動は、ユーザの視点が大きく移動する場合に必要な処理である。一方、表示の主目的がオブジェクトや動画像の鑑賞であり視点の移動が大きくないと考えられる場合には、画像スクリーンの移動を省略し、原画像と同一位置の画像スクリーンに画像参照ベクトルマップを生成してよい。ただし以下の説明では、より計算量の多い、画像スクリーンを平行移動させる形態を主に例示する。このようにしても、一般的な３次元の透視変換に比べ少ない演算量で各画素の変位量を計算可能である。
【０１８２】
本実施の形態の画像生成装置２００の内部回路構成および機能ブロックは、実施の形態１において図８および図９を参照して説明したのと同様でよい。ただしビュースクリーン設定部２５２は、位置・姿勢取得部２５０により取得された頭部の位置や姿勢に基づいてユーザの視点の位置や視線の方向を決定し、それに応じたビュースクリーンを設定する。これによりビュースクリーン上で描画される表示画像は、例えば図３３で示した左目用画像６０ａおよび右目用画像６０ｂのようになる。
【０１８３】
また原画像操作部２５４は上述のように、視点の位置に応じて画像スクリーンを平行移動させたうえで画像参照ベクトルマップを生成してもよい。この場合、画像参照ベクトルは、移動後のスクリーンにおける各画素が、原画像のどの位置に対応するかを表す情報となる。なお視線がＺ軸に対し角度を有する場合は、図１１に示したように左右の目で移動後のスクリーンの位置が異なる。ただし以後の説明ではそれらを包括して１つのスクリーンで表すこととする。さらに原画像操作部２５４は、上述の相互参照のほか、視差値画像が保持する視差値を像の外側に拡張することにより、拡張分の画像参照ベクトルも準備してよい。詳細は後述する。
【０１８４】
また本実施の形態では、原画像データ記憶部２５６に格納する原画像データ２５８を複数解像度のデータとし、透視変換による縮小率の度合いに応じて描画に用いる解像度を切り替えてもよい。原画像の解像度を切り替えてテクスチャマッピングを行うことにより、画像のちらつきを抑える手法は、ミップマッピングとして知られている。ただし本実施の形態では、画像を分割してなる微小領域の縮小率ではなく、スクリーン上の画素が元の原画像から遷移するまでに経た視点の移動量に基づきＬＯＤ（Level of Detail）を計算し適切な解像度を選択する。これにより、透視変換によって原画像の微少領域がどのように変形しても、それとは独立に画素に対する適切な解像度を求めることができる。また出力部２７０は、表示画像のデータをヘッドマウントディスプレイ１００に出力する際、表示画像にレンズ歪み補正を施したうえで出力してもよい。
【０１８５】
次に本実施の形態において、原画像操作部２５４が画像参照ベクトルを計算する手法について説明する。図５８は、視点の移動量のうちＺ軸方向およびＸ軸方向の移動量成分と、それに応じた原画像の画素の移動量との関係を説明するための図である。同図では図５で示した状態における視点８８ａ、８８ｂからＺ軸方向に−ｚ＿ｏｆｆ、Ｘ軸方向にｘ＿ｏｆｆだけ移動した後の視点を、右目の視点３３２を代表させて示している。
【０１８６】
この移動に対し、上述したように画像スクリーン７６を、Ｚ軸方向に−ｚ＿ｏｆｆだけ移動させ、その平面上での各画素に対し画像参照ベクトルを生成する。以後、移動後の画像スクリーンを「マップスクリーン」３３４と呼ぶ。画像参照ベクトルは、視点８８ｂから原画像をみたときと、移動後の視点３３２からマップスクリーン３３４を見たときで、仮想空間にあるオブジェクト７８が固定されて見えるときの画素の対応関係を表す情報である。例えば視点８８ｂから見て右目用の原画像のＸ軸方向の位置ｉｘＲに見える像を、マップスクリーン３３４上の位置ｔｘＲに移動させ、視点３３２から見れば、オブジェクト７８は固定されて見える。
【０１８７】
なお基点となる視点８８ａ、８８ｂを結んだ線分の中点を通るＺ軸方向の線と画像スクリーン７６との交点を、左目用、右目用に関わらず画像の原点Ｏとする。まず視点８８ｂのＺ軸方向の動きを取り出して考える。このとき元の視点８８ｂと画像スクリーン７６との関係を維持したまま、両者をｚ＿ｏｆｆだけＺ軸の負の方向に平行移動することにより、移動後の視点３３０とマップスクリーン３３４が得られる。一方、オブジェクト７８は固定されるため、視点のＺ軸方向の動きにより、それを見る視線は実質上、Ｘ軸方向に移動していることになる。このときの移動量をｇｘとする。
【０１８８】
三角形の相似により
b : gx = Scp : z_off
である。したがって移動量ｇｘは次のように求められる。
gx = b * z_off / Scp
【０１８９】
一方、スクリーンをｚ＿ｏｆｆだけ移動させたことによる、画像スクリーン７６上の位置ｉｘＲに対応するマップスクリーン３３４上の位置ｉｘＲ２は次のように求められる。
ixR - ixR2 : z_off = b : Scp
よって
ixR2 = ixR - b * z_off / Scp = ixR - gx
【０１９０】
上述のｇｘに、さらに最終的な視点３３２へのＸ軸方向の移動分ｘ＿ｏｆｆを考慮すると、マップスクリーン３３４上の位置ｉｘＲ２からの移動量ｄｘ２は次のように求められる。
dx2 : x_off + gx = Zp - z_off : Scp + Zp - z_off
よって
dx2 = (x_off + gx)*(Zp - z_off) / (Scp + Zp - z_off)
【０１９１】
ｚ＿ｏｆｆおよびｘ＿ｏｆｆの視点の移動による、画像スクリーン７６上の位置ｉｘＲに対応するマップスクリーン３３４上の位置ｔｘＲを上述のｄｘ２を用いて表すと、次にようになる。
txR = ixR2 + dx2 = ixR - gx + dx2
すなわちｔｘＲとｉｘＲとの差は、原画像におけるオブジェクトの像の位置、原画像に与えられているオブジェクトの視差値（または画像スクリーンまでの距離）、および視点の移動量に依存する。
【０１９２】
左目の視点の移動についても同様に計算でき、次のようになる。
gx = a * z_off / Scp
ixL2 = ixL +gx
dx2 = (x_off - gx)*(Zp -z_off) / (Scp + Zp - z_off)
txL = ixL2 + dx2 = ixL + gx + dx2
【０１９３】
ここでｉｘＬ、ｉｘＬ２、ｔｘＬは、画像スクリーン７６上での左目用の原画像における水平方向の位置、画像スクリーンをｚ＿ｏｆｆだけ移動させたときの対応する位置、左の視点がｚ＿ｏｆｆ、ｘ＿ｏｆｆだけ移動してもオブジェクト７８を変化させないためのマップスクリーン３３４上の位置である。
【０１９４】
図５９は、視点の移動量のうちＺ軸方向およびＹ軸方向の移動量成分と、それに応じた原画像の画素の移動量との関係を説明するための図である。図５８と座標軸の向きが異なり、図の横軸をＹ軸としている。つまり仮想空間を横から見た状態であるため、両目の視点８８は１つに重なっている。計算手法は基本的に図５８で説明したのと同様である。すなわち画像スクリーン７６における原画像のＹ軸方向の位置ｉｙに見える像を、オブジェクト７８が固定されて見えるように、マップスクリーン３３４上の位置ｔｙに移動させる。
【０１９５】
同図ではｔｙ近傍の図を別途、拡大して示している。まず視点８８がＺ軸方向に−ｚ＿ｏｆｆだけ動いたことによる、視線のＹ軸方向の移動量ｇｙは次のように求められる。
gy = - iy * z_off / Scp
ここで負の符号がつくのは、図示する例ではｉｙが原点Ｏより下の負の領域にあるためである。一方、スクリーンをｚ＿ｏｆｆだけ移動させたことによる、画像スクリーン７６上の位置ｉｙに対応するマップスクリーン３３４上の位置ｉｙ２は次のように求められる。
iy2 = iy - iy * z_off / Scp = iy + gy
この演算は除算を含むが、Ｓｃｐは定数のため全体の処理に対して一回だけ割り算を実行しておけばよい。
【０１９６】
上述のｇｙに、さらに最終的な視点３３２へのＹ軸方向の移動分ｙ＿ｏｆｆを考慮すると、マップスクリーン３３４上の位置ｉｙ２からの移動量ｄｙ２は次のようになる。
dy2 = (y_off + gy)*(Zp - z_off) / (Scp + Zp - z_off)
ｚ＿ｏｆｆおよびｙ＿ｏｆｆの視点の移動による、画像スクリーン７６上の位置ｉｙに対応するマップスクリーン３３４上の位置ｔｙを上述のｄｙ２を用いて表すと、次にようになる。
ty = iy2 + dy2 = iy + gy +dy2
この計算は、左右どちらの画像でも同じである。なおｄｙ２の演算における（Ｓｃｐ＋Ｚｐ−ｚ＿ｏｆｆ）による除算は、一般的な透視変換処理のパースペクティブ除算に相当するものであることを指摘しておく。
【０１９７】
このようにして、視点の移動量の各成分（ｘ＿ｏｆｆ，ｙ＿ｏｆｆ，ｚ＿ｏｆｆ）に応じた、画像参照ベクトルマップ上の位置（ｔｘ，ｔｙ）と原画像上の位置（ｉｘ，ｉｙ）との対応関係を少ない演算量で導出できる。なお左右の画像におけるＸ軸方向の位置ｔｘＲおよびｔｘＬをｔｘ、ｉｘＲおよびｉｘＬをｉｘと総称している。
【０１９８】
ここで、マップスクリーンを原画像の画像スクリーン７６から移動させないケースについても例示する。図６０は、図５８と同様の視点の移動に対し、画像スクリーン７６を移動させない場合の画素の移動量を説明するための図である。すなわち視点は、Ｚ軸方向に−ｚ＿ｏｆｆ、Ｘ軸方向にｘ＿ｏｆｆだけ移動する。このとき例えば視点８８ｂから見て右目用の原画像のＸ軸方向の位置ｉｘＲに見える像を、同じ画像スクリーン７６上の位置ｔｘＲに移動させ、視点３３２から見れば、オブジェクト７８は固定されて見える。
【０１９９】
視点のＺ軸方向の動きによる画素の移動量ｇｘは図５８と同様、次のようになる。
gx = b * z_off / Scp
さらに最終的な視点３３２へのＸ軸方向の移動分ｘ＿ｏｆｆを考慮すると、画像スクリーン７６上の位置ｉｘＲからの移動量ｄｘは次のように求められる。
dx : x_off + gx = Zp : Scp + Zp - z_off
よって
dx = (x_off + gx)* Zp / (Scp + Zp - z_off)
【０２００】
ｚ＿ｏｆｆおよびｘ＿ｏｆｆの視点の移動による、画像スクリーン７６上の位置ｉｘＲの、移動後の位置ｔｘＲを上述のｄｘを用いて表すと、次にようになる。
txR = ixR + dx
左目の視点の移動、Ｚ軸方向およびＹ軸方向の移動についても、画像スクリーンを移動させる上述の計算手法を変形させることにより容易に計算できる。
【０２０１】
画像参照ベクトルを決定するにはさらに、両者の画像の画素区分を考慮する必要がある。図６１は、原画像および画像参照ベクトルマップにおける画素の区分と位置の対応関係を模式的に示している。同図に示す格子は、（ａ）が原画像における画素区分、（ｂ）が画像参照ベクトルマップの画素区分を表す。このうち各画素の中心の位置座標を（０，０）、（１，０）、（２，０）、・・といった整数値で表すとする。（ａ）に示すように、原画像における（ｉｘ，ｉｙ）をこのような整数値とした場合、上述で算出される（ｔｘ，ｔｙ）は多くの場合、小数点以下の値を持つ。すなわち（ｔｘ，ｔｙ）は画像参照ベクトルマップの画素の中心からはずれることが多い。
【０２０２】
そこで（ｂ）に示すように、そのようにして得られた終点の位置（ｔｘ，ｔｙ）を四捨五入することにより整数値（ｔｘ’，ｔｙ’）とし、その位置を始点とした逆向きのベクトルを画像参照ベクトルＶとする。すなわち（ｔｘ’，ｔｙ’）を画素中心とする画素に対応づける画像参照ベクトルＶ（ｉｎｖ＿ｘ，ｉｎｖ＿ｙ）は次のように表される。
tx' = (int)(tx + 0.5)
ty' = (int)(ty + 0.5)
inv_x = (float)ix - tx
inv_y = (float)iy - ty
【０２０３】
このようにすると、画像参照ベクトルＶの終点（ｉｘ’，ｉｙ’）の多くは、原画像の画素の中心から外れることになる。そのようにしても、表示画像描画時にサンプリングされるマップ上の位置に基づく画像参照ベクトルの補間、画像参照ベクトルが示す原画像上の位置に基づくカラー値の補間、といった処理を経ることにより、サブピクセル精度での高画質な画像を表示できる。画像参照ベクトルを参照した描画に係る処理については後に述べる。なお（ａ）の矢印のように（ｉｘ，ｉｙ）を始点とし（ｔｘ，ｔｙ）を終点とするベクトルを「変位ベクトル」と呼ぶ。
【０２０４】
次に、本実施の形態において視差画像の相互参照を適用する場合の計算手法について説明する。図６２は、視点の移動量のうちＺ軸方向およびＸ軸方向の移動量成分と、右目用の画像参照ベクトルマップにおいて左目用の原画像を参照する際の画素の移動量との関係を説明するための図である。計算にあたっての考え方は図５８で示したのと同様であるが、本来の始点であるｉｘＲに対応する、左目用の画像における位置ｉｘＬが始点となる点が異なる。
【０２０５】
すなわち図５８と同様、右目の視点の移動に着目すると、ｚ＿ｏｆｆおよびｘ＿ｏｆｆの視点の移動による画像スクリーン７６上の位置ｉｘＲに対応するマップスクリーン３３４上の位置ｔｘＲは上述のとおり、
txR = ixR2 + dx2 = ixR - gx + dx2
である。右目用の原画像における位置ｉｘＲと、それに対応する左目用の原画像の位置ｉｘＬとは次の関係にある。
ixR = ixL + Ewosc
【０２０６】
ここでＥｗｏｓｃは、視点８８ａ、８８ｂの間隔Ｅｗｐと、原画像における視差Ｄｐ＝ａ＋ｂから次にように与えられる。
Ewosc = Ewp - Dp
結果としてｔｘＲは、左目用の原画像上の位置ｉｘＬを始点とすると、次のように求められる。
txR = ixL + Ewosc - gx +dx2
【０２０７】
なおＥｗｏｓｃの算出に用いる視差Ｄｐは、左目用の原画像の画素に対して与えられている、左目の視差値画像が保持する値である。左目の視点の移動についても同様に計算できる。すなわち画像スクリーン７６上の位置ｉｘＬに対応するマップスクリーン３３４上の位置ｔｘＬは
txL = ixL2 + dx2 = ixL + gx + dx2
であるから、右目用の原画像上の位置ｉｘＲを始点とすると、次のようになる。
txL = ixR - Ewosc + gx + dx2
【０２０８】
ただしＥｗｏｓｃの算出に用いる視差Ｄｐは、右目用の原画像の画素に対して与えられている、右目の視差値画像が保持する値である。視点移動によるＹ軸方向の位置の移動は、相互参照しない場合と同様に、下記の通りとなる。
ty = iy2 + dy2 = iy + gy + dy2
以上の計算により、相互参照しない場合と同様に、画像参照ベクトルマップの各画素に対し画像参照ベクトルを設定できる。なお本実施の形態においても、視差値画像に基づき相互参照フラグを実施の形態１と同様に設定してよい。上記は左右の原画像における相互参照の手法であるが、原画像を取得した際の左右のカメラのさらに外側を視点とする原画像を別途取得しておくことにより、元の左右の原画像の相互参照では補えなかった画素をさらに補うこともできる。ここで、外側の視点から取得した原画像を参照先とする手法を拡張参照と呼ぶ。
【０２０９】
図６３は、拡張参照における画像参照ベクトルの計算手法を説明するための図である。この例では、元の左右の原画像を取得した際に想定された視点８８ａ、８８ｂのうち、右の視点８８ｂのさらに右側に、間隔Ｅｗｐをあけてカメラ３５０を設定し、第３の原画像を取得しておく。そして視点８８ｂにおいて死角となり右目用原画像で表されていなかった部分について、視点の移動により描画する必要が生じたら、当該第３の原画像を参照するように画像参照ベクトルを設定する。計算にあたっての考え方は図６２で示した相互参照の場合と同様であるが、左目用原画像におけるｉｘＬを始点とする代わりに、第３の原画像上の対応する位置ｉｘＲＥを始点とする。
【０２１０】
すなわち図６２と同様、右目の視点の移動に着目すると、ｚ＿ｏｆｆおよびｘ＿ｏｆｆの視点の移動による画像スクリーン７６上の位置ｉｘＲに対応するマップスクリーン３３４上の位置ｔｘＲは上述のとおり、
txR = ixR2 + dx2 = ixR - gx + dx2
である。右目用の原画像における位置ｉｘＲと、それに対応する第３の原画像の位置ｉｘＲＥとは次の関係にある。
ixR = ixRE - Ewosc
【０２１１】
ここでＥｗｏｓｃは、視点の間隔Ｅｗｐと、第３の原画像に対応して生成されている視差値画像における、位置ｉｘＲＥの画素に対応する視差Ｄｐから次にように与えられる。
Ewosc = Ewp - Dp
結果としてｔｘＲは、第３の原画像上の位置ｉｘＲＥを始点とすると、次のように求められる。
txR = ixRE - Ewosc - gx + dx2
【０２１２】
左の視点８８ａのさらに左側に設置したカメラにより第４の原画像を取得しておき、左目用の表示画像の描画時に参照する場合も同様に計算できる。すなわち画像スクリーン７６上の位置ｉｘＬに対応するマップスクリーン３３４上の位置ｔｘＬは
txL = ixL2 + dx2 = ixL + gx + dx2
であるから、第４の原画像上の位置ｉｘＬＥを始点とすると、次のようになる。
txL = ixLE + Ewosc + gx + dx2
【０２１３】
視点移動によるＹ軸方向の位置の移動は、相互参照しない場合と同様に、下記の通りとなる。
ty = iy2 + dy2 = iy + gy + dy2
以上の計算により、画像参照ベクトルマップの各画素に対し画像参照ベクトルを設定できる。
【０２１４】
拡張参照に用いる原画像は、右目、左目用の原画像と異なる視点からの輝度情報を持つため、基本的には右目、左目用の原画像より表示の優先度を低く設定するのが自然である。すなわち画像参照ベクトルマップと同一視点からの原画像を参照先とする画像参照ベクトル、あるいは相互参照用の画像参照ベクトルが設定されている領域に関しては、Ｚ値に関わらず拡張参照用の画像参照ベクトルは書き込まない。なお相互参照描画における信用度フラグと同等のものを設定することも可能であるが、多くの場合、その必要性は低いと考えられる。
【０２１５】
これまで述べた計算により画像参照ベクトルを取得したら、当該データを画像参照ベクトルマップに書き込む。この際、画像参照ベクトルを計算する時に得られたＺ値を用いてＺバッファ処理を行い、より視点に近いＺ値を持つ画像参照ベクトルをマップに書き込んで保存するようにする。この処理により、マップの一つの画素に対して一つの画像参照ベクトルがのみが記憶される。
【０２１６】
なお、異なる視点画像から得られる点群あるいは微小三角形をビュースクリーンに描画する手法では、光の鏡面反射成分や透過成分の視点による違い等による画素間の輝度の不連続性を隠すためのアルファブレンド描画が行われていたが、これにより画像の解像感が低下したり処理の負荷が大きくなったりする問題が発生する。本実施の形態によれば、後述するように画素間のアルファブレンドを各画像間の境界の画素のみに限定することで、元の画像の解像感を保ったまま高速に処理を行うことが可能になる。
【０２１７】
また、これまで述べたように画像参照ベクトルは、まず原画像の各画素を始点として、視点の移動によって定まるマップスクリーン上の対応する位置を終点とする変位ベクトルを求め、その逆ベクトルを画像参照ベクトルマップの画素中心に合わせて微小移動させることによって得られる。そのような手順によれば、原画像では隣接する画素を始点とした変位ベクトルの終点が離間し、間に画像参照ベクトルが設定されない画素（以後「穴」と呼ぶことがある）が生じることが考えられる。これは視点の移動によって原画像の一部が画素レベルで引き延ばされることなどに起因する。そのため原画像操作部２５４は、そのような穴を検知し適切な画像参照ベクトルを補う。
【０２１８】
このような穴が発生するのを防ぐために、画像を微小三角形で表し、三角形ごとにラスタライズ処理を行うことが考えられる。しかしながら微小三角形のラスタライズは現在のグラフィックスハードウェアにおいても処理の負荷が大きく、全体のボトルネックになることが多い。そこで本実施の形態では、微小三角形のラスタライズ処理を省略し、少ない演算量で穴の補間を実現する。
【０２１９】
同様の理由によりＺバッファについても補間する。ここでＺバッファは、画像参照ベクトルマップの生成過程で必要となる。例えば原画像の複数の画素が、画像参照ベクトルマップの同一画素内の位置に対応している場合、Ｚテストにより視点に近い対応関係を採用することで、当該画素に適切な画像参照ベクトルが設定される。Ｚ値は原画像に対応する視差値画像から、原画像の画素ごとに求められる。なお上述のとおりＺ値は、画像参照ベクトルを求める際の変位ベクトルの算出にも利用される。
【０２２０】
図６４は、図７のＳ１２において原画像操作部２５４が画像参照ベクトルマップを生成する処理手順を示すフローチャートである。まずＺバッファおよび画像参照ベクトルマップのバッファを初期化する（Ｓ１２０）。次に自己画像を参照先とする画像参照ベクトルを設定する（Ｓ１２２）。ここで自己画像とは、右目用のマップについては右目用原画像、左目用のマップについては左目用原画像を指す。次に相互参照および拡張参照により自己画像以外の原画像を参照先とする画像参照ベクトルを設定する（Ｓ１２４）。
【０２２１】
Ｓ１２２、Ｓ１２４の処理においてＺバッファへの書き込みや、場合に応じたＺ値の補間を並列して行う。これらの処理においては、画像参照ベクトルの補間は行わない。次に、画像参照ベクトルの穴を補間する（Ｓ１２６）。同図に示す処理を、左目用、右目用でそれぞれ行うことにより画像参照ベクトルマップが両目に対し完成する。なお視差値画像においてデータが保持されていない画素はオブジェクトが存在しないことになるため、そのような画素を指す画像参照ベクトルも存在しない。結果として画像参照ベクトルマップには、オブジェクトの像の外側などに、画像参照ベクトルマップが存在しない領域があってよい。
【０２２２】
図６５は、図６４のＳ１２２において、自己画像を参照先とする画像参照ベクトルを設定する処理手順を示すフローチャートである。まず原画像において１つの基準画素を定める（Ｓ１３２）。そして当該基準画素と、それに隣接する複数の参照画素の中心位置について変位ベクトルを計算する（Ｓ１３４）。隣接する画素について計算された変位ベクトルは、後に当該画素が基準画素となった際に利用するため一時的に記憶しておいてもよい。次に、画像参照ベクトルマップの画素配列で構成されるＺバッファのうち、基準画素を始点とする変位ベクトルの終点を含む画素のデータを確認し、Ｚ値および画像参照ベクトルを書き込み可能か確認する（Ｓ１３６）。
【０２２３】
当該画素に以前にＺ値が書き込まれていなかった場合、あるいは書き込まれていても書き込もうとしているデータの方が視点に近いことがＺ値により確認できた場合、書き込み可能と判定する（Ｓ１３６のＹ）。そして基準画素のＺ値をＺバッファに書き込むとともに、変位ベクトルから求めた画像参照ベクトルをマップの対応画素に書き込む（Ｓ１３８）。同一画素に以前に書き込みがなされていればそれを上書きする。なおＺバッファには、参照先が自己画像であることを示す画像の識別情報も書き込むことにより、相互参照や拡張参照のデータより優先されるようにする。
【０２２４】
次にＺバッファのうち、基準画素の変位ベクトルの終点を含む画素に隣接する画素が穴となるかどうかを確認し、穴となる場合はＺ値を補う（Ｓ１４０のＹ、Ｓ１４２）。このとき、当該Ｚ値が補われたものであることを示すフラグも同時に書き込む。Ｚ値の補間手法は後に述べる。Ｓ１３６で、以前に書き込まれていたＺ値との比較によりデータの書き込みが不可と判定された場合、書き込みや穴の確認は行わない（Ｓ１３６のＮ）。Ｓ１４０で隣接する画素に穴がなければ当然、Ｚ値の補間は行わない（Ｓ１４０のＮ）。原画像の全画素が基準画素となるまで（Ｓ１４４のＮ）、例えばラスタ順に基準画素を設定していき（Ｓ１３２）、Ｓ１３４〜Ｓ１４２の処理を繰り返す。全画素が基準画素となったら処理を終了する（Ｓ１４４のＹ）。
【０２２５】
図６６は、図６４のＳ１２４において、相互参照および拡張参照時の画像参照ベクトルを設定する処理手順を示すフローチャートである。この処理は図６５で示した自己画像を参照先とする場合と基本的には同様であるが、変位ベクトルの計算や書き込みが限定的である点と、Ｚ値の補間を行わない点に主な差がある。これは、相互参照および拡張参照が、自己画像で描画できない画素を補填するための補助的な処理であり、高速化のために簡略化しても多くの場合、問題が顕在化しないためである。したがって処理時間に余裕があれば、自己画像の描画と同様にＺ値の補間処理を行ってもよい。まず原画像において１つの基準画素を定める（Ｓ１５２）。ここでの原画像は、右目用の画像参照ベクトルマップに対しては左目用の原画像や右目のさらに右の視点から取得した画像である。左目用の画像参照ベクトルマップに対しては右目用の原画像や左目のさらに左の視点から取得した画像である。
【０２２６】
続いて、相互参照フラグを生成している場合は、当該基準画素が参照先となり得るか否かをフラグにより確認する（Ｓ１５４）。参照先となり得ない場合は当該基準画素を参照先とするような画像参照ベクトルに係る処理を行わない（Ｓ１５４のＮ）。参照先となり得る場合は（Ｓ１５４のＹ）、基準画素と、それに隣接する複数の参照画素の中心位置について変位ベクトルを計算する（Ｓ１５６）。そしてＺバッファのうち、基準画素を始点とする変位ベクトルの終点を含む画素のデータを確認し、Ｚ値および画像参照ベクトルを書き込み可能か確認する（Ｓ１５８）。
【０２２７】
この場合、先に書き込まれているＺ値が自己画像のものであるときは書き込みを不可とする。また書き込まれているＺ値が補間により設定されたものである場合は書き込みを可能とする。これにより、自己画像の正当な参照が可能な場合はそれを優先させ、補間によりＺ値のみが書き込まれている場合は相互参照、拡張参照を優先させる。書き込みが可能な場合は（Ｓ１５８のＹ）、基準画素のＺ値をＺバッファに書き込むとともに、変位ベクトルから求めた画像参照ベクトルをマップの対応画素に書き込む（Ｓ１６０）。
【０２２８】
この際、参照される原画像が自己画像でなくどの画像であるかがわかるように、Ｚバッファおよび画像参照ベクトルマップに画像の識別情報も書き込む。Ｓ１５８で書き込みが不可と判定されたら書き込みは行わない（Ｓ１５８のＮ）。原画像の全画素が基準画素となるまで（Ｓ１６２のＮ）、例えばラスタ順に基準画素を設定していき（Ｓ１５２）、Ｓ１５４〜Ｓ１６０の処理を繰り返す。全画素が基準画素となったら処理を終了する（Ｓ１６２のＹ）。
【０２２９】
次にＺ値の補間処理について説明する。なおＺ値および画像参照ベクトルの補間処理は、穴の大きさが高々１画素であることを前提としている。本実施の形態では、原画像と画像参照ベクトルマップの平面が平行であり、また両者の解像度が同程度であることを想定しているため、上記のような前提をしても差し支えない。Ｚ値の補間においてはまず、図６５のＳ１４０で示すように補間すべき穴を特定する。定性的には、原画像において隣接する画素が、画像参照ベクトルマップ上で引き延ばされて間隔が広がり、マップの画素を単位としたときに１画素分の隙間が生じた状態を検出する。
【０２３０】
図６７は、原画像の画素中心とそれに対応する画像参照ベクトルマップ上の位置との関係例を模式的に示している。同図に示す格子は、（ａ）が原画像における画素区分、（ｂ）が画像参照ベクトルマップの画素区分を表す。（ａ）に示す網掛けされた４つの画素の中心を始点として変位ベクトルを求めると、例えば実線矢印のようになる。この矢印の先を含む画素に、矢印と逆向きの画像参照ベクトルが設定される。
【０２３１】
この例では、破線矢印で対応関係を示したように、（ｂ）に示す網掛けされた４つの画素が変位ベクトルの終点を含むため、補間の必要なく画像参照ベクトルを設定できる。このような状況において、濃い網掛けで示した画素を基準画素３６０として設定する。さらに基準画素３６０の右、下、右下の画素を参照画素３６２ａ、３６２ｂ、３６２ｃとする。そしてそれらの画素中心を始点とする変位ベクトルが指す、画像参照ベクトルマップ上の位置を特定する。
【０２３２】
そのうち基準画素３６０および右と下に隣接する参照画素３６２ａ、３６２ｂに対応する３点の位置を含む最小の画素行列の領域３６４を決定する。この領域３６４のうち、基準画素３６０および参照画素３６２ａ、３６２ｂ、３６２ｃに対応する位置を含まず、かつ基準画素３６０に隣接する画素を、Ｚ値を補間すべき穴として決定する。図６７の場合、太枠で囲まれた画素が抽出される。なおこのような画素は別の基準画素によって正確な値が書き込まれたり、Ｚテストにより補間値を書き込めなかったりする可能性もあるため、厳密には補間すべき画素の候補である。
【０２３３】
次に図６５のＳ１４２で示すように、決定した画素にＺ値を補う。最も単純には隣接する画素のＺ値の平均値などで補間することが考えられるが、平均化することにより本来は背後にある物が見えて表現されてしまうことが起こり得る。オブジェクトの輪郭部分などＺ値に急な変化が生じている箇所ではそのような危険性が高くなる。したがってＺ値が得られている周囲の画素からのＺ値の変化の大きさに応じて、補うＺ値を調整する。定性的には、周囲の画素からの差が大きいほど視点からの距離が大きくなるようにＺ値を調整する。
【０２３４】
図６７を例にとると、基準画素３６０と、その右、下、右下に位置する参照画素３６２ａ、３６２ｂ、３６２ｃにおけるＺ値が、視差値画像に基づき変位ベクトルの算出時に計算されている。ここで基準画素３６０のＺ値をＺｓｃ０、参照画素３６２ａ、３６２ｂ、３６２ｃのＺ値をそれぞれＺｓｃ１、Ｚｓｃ２、Ｚｓｃ３とする。
【０２３５】
画像参照ベクトルマップのうち、基準画素３６０に対応する位置を含む画素３６６には、基準画素３６０に対し得られたＺｓｃ０がＺ値として与えられる。当該画素３６６に隣接し、Ｚ値を補間すべき画素とされた太線枠の画素には、Ｚｓｃ０を上述のように調整したＺ値を与える。調整後のＺ値であるＺｓａｆｅは、例えば次のように計算する。
Zsafe = Zsc0 + | Zsc1 - Zsc0 | + | Zsc2 - Zsc0 | + | Zsc3 - Zsc0 |
あるいは
Zsafe = Zsc0 + max(| Zsc1-Zsc0 |+| Zsc3-Zsc0 |, | Zsc2-Zsc0 |+| Zsc3-Zsc0 |)
【０２３６】
なおＺ値は視点からの距離に応じて値が増えるように座標軸をとっている。このような計算により、例えば基準画素のＺ値（Ｚｓｃ０）に比べ周辺の画素のＺ値が極めて大きい場合にも、穴埋めに用いるＺ値を当該周辺の画素におよそ合わせることができ、背後の物が不自然に前に見えたりすることがなくなる。ＺバッファへのＺ値の書き込みは、実際には上述のＺテストを経てなされる。ＺｓａｆｅをＺｓｃ０から大きくなる方向に調整しておくことにより、計算誤差などにより誤った画素を書き込み先としてしまっても、当該画素に本来与えられるＺ値を上書きするのを防ぐこともできる。
【０２３７】
図６４を参照して説明したように、自己画像を参照先とする画像参照ベクトルの設定段階でＺバッファの穴を埋めたうえで、相互参照や拡張参照をする画像参照ベクトルを設定する。図６８は、Ｚ値の補間対象となった画素と、相互参照または拡張参照を行う画素との関係を説明するための図である。同図は（ａ）（ｂ）とも、画像参照ベクトルマップの画素配列を表し、（ａ）は図６７の（ｂ）に示した図と対応する。すなわち網掛けされた画素には視差値から計算された本来のＺ値が書き込まれ、太線枠の画素には補間されたＺ値が書き込まれている。
【０２３８】
ただしそれらの画素にはまだ、画像参照ベクトルは設定されていない。この状態から図６６の処理を開始すると、補間によりＺ値が与えられた画素に対し相互参照あるいは拡張参照をする画像参照ベクトルが設定される可能性がある。図６８の（ｂ）における太線枠の画素のうち網掛けされた画素３７０ａ、３７０ｂは、そのようにしてデータが書き込まれた画素である。以上の処理により、相互参照、拡張参照の場合も含め可能な限り画像参照ベクトルを決定したうえで、残った画素３７２ａ、３７２ｂについて画像参照ベクトルの補間を行う。
【０２３９】
補う画像参照ベクトルは基本的に、周囲の画素の画像参照ベクトルに近い値とする。図６９は画像参照ベクトルの補間手法を説明するための図である。同図に示す画素配列において、太線枠で囲まれた画素に画像参照ベクトルの穴があるとする。この場合、最も単純には、周囲の画素に設定されている画像参照ベクトルの平均値により補間することが考えられる。ただし補間に用いる画像参照ベクトルは、視点の移動に基づく変位ベクトルから得られたものとし、補間によって得られたベクトルをさらに補間に用いることは避ける。
【０２４０】
例えばターゲットとする太線枠の画素の上下左右の画素（画素Ｄ、Ｃ、Ｄ、Ａ、Ｂ）に、矢印で示すように画像参照ベクトルが与えられていれば、それら４つの画像参照ベクトルの平均ベクトルをターゲットの画像参照ベクトルとする。あるいはターゲットの画素に対する位置に応じて重みを変化させて平均化してもよい。例えば周囲の８画素のうち上下左右の画素（画素Ｄ、Ｃ、Ｄ、Ａ、Ｂ）に２倍の重みをつけて、Ａ〜Ｈの８画素の画像参照ベクトルを加重平均する。
【０２４１】
あるいは画像参照ベクトルの方向性に応じて補間に用いる画素や重みを決定してもよい。例えば図示する例では、周囲の画素の画像参照ベクトルが全て水平に近くなっている。このことから当該部分が原画像から水平方向に引き延ばされたものであり、穴はそれによって生じたことが推定される。したがってこの場合、ターゲットの周囲の画素のうち、左右の画素Ａ、Ｂを用いて線形補間したり、それらの画素に、より大きい重みをつけて平均化したりすることにより、状況に応じた精度の高い補間を実現できる。
【０２４２】
例えばターゲットの画素の上下左右の４画素の画像参照ベクトルの平均ベクトルを求め、それと画像の水平方向（Ｘ軸方向）とのなす角度θが−３０°＜θ＜３０°または１５０°＜θ＜２１０°のとき、左右の画素Ａ、Ｂの画像参照ベクトルを平均してターゲットの画像参照ベクトルとする。角度θが６０°＜θ＜１２０°または２４０°＜θ＜３００°のとき、上下の画素Ｄ、Ｃの画像参照ベクトルを平均してターゲットの画像参照ベクトルとする。角度θがそれ以外のときは上下左右の画素の画像参照ベクトルを平均してターゲットの画像参照ベクトルとする。
【０２４３】
なお上述のような角度のしきい値や、それによって補間に用いる画素を選択するか重みを変化させるか、といった態様の組み合わせは様々に考えられる。ユーザの頭部は上下運動より水平運動であることが多く、結果として画素の変位も水平方向が多いと考えられる。したがって上述のように角度の判定を行わず、常に左右の画素の画像参照ベクトルを補間に用いるようにして、精度を維持しつつ処理を高速化してもよい。
【０２４４】
本実施の形態ではこのように、視点の移動による画像の局所的な伸張が生じても、ベクトルを補間対象とすることにより、方向性に基づいた計算式の選択が可能である。また実際のカラー値に対する操作は、最終的に表示画像を描画する段階に限られるため、この補間処理が表示画像の品質に与える悪影響を抑えられる。例えば画像参照ベクトルを導入せず、直接カラー画像を補間する場合、このような方向性に基づく調整は行えない。
【０２４５】
例えば一方向に引き延ばされた結果生じた穴であっても、カラー画像にはその情報がないため、引き延ばされた方向に関わらず同様の補間計算となる。その結果、余計な色が混じり、表示画像の品質にも悪影響を与え得る。画像参照ベクトルは視点の動きによる画素の移動を表しているという特性上、図６９に示すように画素単位で大きな変化が生じるものではない。結果として、たとえ方向性に関わらずターゲットの周囲の画素を補間に利用しても大きな誤差にはなりにくく、混色による画質の劣化も防止できる。
【０２４６】
なお上述した補間手法は、変位ベクトル計算から導き出されたいわば正当な画像参照ベクトルが周囲の画素に与えられていることを前提としていた。一方、２画素以上が連続して穴となっている場合は、その周囲で補間でない画像参照ベクトルを探索し、当該ベクトルをそのまま補間に用いてもよい。例えば図６９において、ターゲットの周囲の８つの画素に探索の優先順位を規則づけておく。一例として画素Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈといった順序が考えられる。そしてその順で探索し、最初に検出された補間でない画像参照ベクトルをターゲットのベクトルとして採用する。いずれの補間手法にしても、画像参照ベクトルの生成段階ではカラー値が確定してないため、最終的にはサブピクセルの位置精度でカラー値を決定することができる。
【０２４７】
次に画像参照ベクトルマップを用いて最終的な表示画像を生成する手法について説明する。図７０は、図７のＳ１４において、表示画像生成部２６８が画像参照ベクトルマップを用いて表示画像を生成する手順を示すフローチャートである。まず表示画像生成部２６８は、ビュースクリーン設定部２５２からその時点での視点の位置や視線の方向に応じたビュースクリーンの位置や姿勢を取得し、それに画像参照ベクトルマップをマッピングする（Ｓ１７２）。そのうえで描画すべき対象画素を設定する（Ｓ１７４）。
【０２４８】
そして対象画素に対応する画像参照ベクトルマップのサンプリング点を特定し、その位置における画像参照ベクトルを取得する（Ｓ１７６）。基本的にはサンプリング点を含む所定数の画素、例えば２行２列の４画素に対し設定されている画像参照ベクトルに補間フィルタをかけることによって求める。次に原画像をミップマップとしている場合、参照先のミップマップレベルを決定づけるＬＯＤを算出する（Ｓ１７８）。このとき、画像参照ベクトルマップをビュースクリーンにマッピングした際に得られるＬＯＤに加え、原画像から画像参照ベクトルマップへの変換時になされた拡縮を加味する。
【０２４９】
そして、原画像のうちＳ１７６で取得した画像参照ベクトルの示す位置のカラー値を取得し対象画素を描画する（Ｓ１８０）。ミップマップの場合はＳ１７８で算出したＬＯＤに対応するレベルの原画像からカラー値を取得する。表示画像の全画素が描画されるまで（Ｓ１８２のＮ）、Ｓ１７４〜Ｓ１８０の処理を繰り返す。全画素が描画されたら処理を終了する（Ｓ１８２のＹ）。同図に示す処理を、左右それぞれ行うことにより、左目用、右目用の表示画像を生成できる。
【０２５０】
図７１は表示画像、画像参照ベクトルマップ、原画像の関係を説明するための図である。（ａ）の点線で示した画素配列は表示画像３８０、網掛けされた画素配列は画像参照ベクトルマップ３８２の、それぞれ一部であり、位置の対応を示すように重ねて示している。なお画像参照ベクトルマップ３８２は透視変換により形状が歪んでいることがあり得るが、わかりやすさのために同図では各画素を正方形で表している。（ｂ）の画素配列は原画像３８６の一部である。
【０２５１】
表示画像３８０において、太線枠で示した画素を描画対象画素とすると、その中心の位置に対応する、画像参照ベクトルマップ３８２上の画素３８８内の位置をサンプリング点３８４とする。当該サンプリング点３８４における白抜き矢印で示した画像参照ベクトルは、例えばサンプリング点３８４を含む画素３８８と、それに隣接しサンプリング点３８４に近い３画素で構成される、濃い網掛けで示した２行２列の４画素の画像参照ベクトルに基づき決定する。基本的には、これら４つの画素の画像参照ベクトルをバイリニア補間することにより決定できる。
【０２５２】
ただし４つの画像参照ベクトルが同じ原画像を参照先としていない場合、４画素のＺ値が大きく異なりオブジェクトの段差を跨いでいることが疑われるとき、その他、補間に適さない画像参照ベクトルが混じっている場合は例外として補間は行わない。そのようにしてサンプリング点３８４の画像参照ベクトルが求められたら、原画像３８６のうち当該画像参照ベクトルが指す位置をカラー値のサンプリング点３９０とする。そしてカラー値のサンプリング点３９０を含む２行２列の４画素を補間することにより、表示画像の描画対象画素のカラー値を決定する。なおこのときの補間は実際には、縮小率に応じた２つのレベルのミップマップを用いて補間するトライリニアフィルタリングにより行う。
【０２５３】
図７２は、画像参照ベクトルのバイリニア補間について説明するための図である。同図は画像参照ベクトルマップのうちサンプリング点４００を含む画素配列を示している。そのうち太線枠で示された４画素が、サンプリング点４００における画像参照ベクトルを求めるために用いられる。画像参照ベクトルはマップの画素中心における、参照すべき原画像上の位置を示すベクトルである。ただし元々は図６１に示すように、原画像の画素中心を始点として求めた変位ベクトルを、終点の座標（ｔｘ，ｔｙ）が画像参照ベクトルマップの画素中心（ｔｘ’，ｔｙ’）になるように平行移動させて方向を逆にしたものである。
【０２５４】
したがってその逆の処理により、マップの各画素が保持する画像参照ベクトルから元の変位ベクトルが容易に求められる。すなわち画像参照ベクトルの終点が原画像の画素中心となるように平行移動させ方向を逆にすればよい。そこで本実施の一つの形態では、サンプリング点４００の周囲の４画素が保持する画像参照ベクトルから元の変位ベクトル（例えば変位ベクトル４０４）を求め、その終点の位置（例えば位置４０６ａ、４０６ｂ）とサンプリング点４００との位置関係に基づき、バイリニア補間の係数を決定する。なおここで述べた関係が成り立つのは、画像参照ベクトルが元の変位ベクトルから直接求められた場合であり、例えば穴の補間処理により生成された画像参照ベクトルの場合、その補間方法によっては元の変位ベクトルが正しく求められないことに留意する。
【０２５５】
つまり変位ベクトル４０４などが、視点の移動に応じた画素の移動量を上述のように計算した結果として得られている場合、それを逆方向とした逆変位ベクトルを補間に用いる。同図右下には当該逆変位ベクトルをｖ０、ｖ１、ｖ２、ｖ３として示している。また係数を決定する際は、同図右側に白丸で示した変位ベクトルの終点を近似する長方形４０８を用いることで計算を単純化する。具体的には４画素のうち横方向に並ぶ画素および縦方向に並ぶ画素同士で、変位ベクトルの終点を結ぶ線分の中点をそれぞれ求める。図ではそれらを黒丸で示している。そして当該中点を通り画像の横方向および縦方向に辺を有する長方形４０８を定義する。
【０２５６】
長方形４０８の２方向の辺を、サンプリング点４００の対応する座標成分が内分する比率を、バイリニア補間の係数とする。図示する例では、横方向の辺がα：１−αに内分され、縦方向の辺がβ：１−βに内分されている。これを用いて、求める画像参照ベクトルＶｔｇｔは、４画素のうち左下、左上、右下、右上の画素の逆変位ベクトルをそれぞれｖ０，ｖ１，ｖ２，ｖ３とすると次のように求められる。
Vtgt = v0 *(1-α)*β + v1*α*β + v2 *(1- α)*(1-β) + v3 *α* (1-β)
【０２５７】
なお４画素に設定されている画像参照ベクトルに、相互参照などにより異なる原画像を参照先とするベクトルが混じっている場合は、例外処理として画像参照ベクトルの補間は行わない。その代わりに、それらの画像参照ベクトルが参照先とする原画像からカラー値を取得し、カラー値に対し補間処理を施す。このときも図示した長方形４０８の内分比率α、β等を用いてサンプリング点４００からの距離に応じた補間を行う。原画像をミップマップとする場合はトライリニアフィルタにより縮小率も加味した補間とする。４画素のＺ値に差がある場合など、画像参照ベクトルの補間が適切でない他のケースでも同様とする。
【０２５８】
上述のとおりオブジェクトが存在しない領域では、画像参照ベクトルも存在しないことになる。このような画素が４画素に混じっている場合も、残りの画素に設定されている画像参照ベクトルを用いて直接カラー値を取得し補間してよい。このとき画像参照ベクトルが存在しない画素についてはカラー値を０として計算する。このように画像参照ベクトルが存在しないことを、画像参照ベクトルの成分が０であることと区別するため、画像参照ベクトルのデータには、存在がないことを示すフラグ格納領域を設ける。
【０２５９】
なお図７２で示したバイリニア補間は、サンプリング点４００の周囲の画像参照ベクトルから一旦、元の変位ベクトル求め、その４個の終点とサンプリング点４００との位置関係に基づきサンプリング点４００の画像参照ベクトルを求めた。これにより画像参照ベクトルと変位ベクトルの関係を利用した高精度な補間を実現できる。一方、変位ベクトルの終点を求めずに、サンプリング点４００と周囲の画素の中心との位置関係に基づく一般的なバイリニア補間を採用してもよい。例えば当該周囲の画素でＺ値に大きな差がない場合、あるいは上述したように画像参照ベクトルの穴の補間処理により得られた、元の変位ベクトルを正確に復元できない画像参照ベクトルを補間対象に含む場合には、一般的なバイリニア補間を行うことで、処理時間を短縮したり、復元処理の誤差により生じる精度の低下を防いだりすることができる。
【０２６０】
図７３は、原画像をミップマップテクスチャとする場合の表示画像との関係を説明するための図である。ヘッドマウントディスプレイ１００を利用する場合、ユーザの移動に伴いビュースクリーンが移動するため、画像参照ベクトルマップの画像平面には任意の透視変換がかけられることになる。結果として原画像からの縮小率も場所によって変化する。図示する例では、画像平面（マップスクリーン）４２２がマッピングされた表示画像４２０において、領域４２４ａと領域４２４ｂで縮小率が大きく異なる。
【０２６１】
原画像を一解像度で準備した場合、縮小率が大きい４２４ｂでは表示画像にエイリアシングが生じ、視点の移動によって激しいちらつきにつながる。そのため解像度を段階的に変化させたミップマップテクスチャとして原画像のデータを準備する。例えば領縮小率が小さい領域４２４ａにはミップマップレベルの低い原画像データを用い、縮小率の大きい４２４ｂにはミップマップレベルの高い原画像データを用いてトライリニアフィルタにより画素値を決定する。
【０２６２】
このとき、どのレベルのミップマップを用いるかを決定づけるＬＯＤを計算する必要がある。本実施の形態では実質上、画像スクリーンからマップスクリーンへの変換と、マップスクリーンからビュースクリーンへの変換という２段階の変換がなされているため、ＬＯＤの計算にも双方を考慮する必要がある。すなわちＬＯＤを、１段階目での縮小率の大きさを表すＬＯＤ１と、２段階目での縮小率の大きさを表すＬＯＤ２の和として算出する。
【０２６３】
図７４は、画像スクリーンからマップスクリーンへの変換時のＬＯＤ１を計算する手法を説明するための図である。この変換では視点の３次元空間での移動方向および移動量によって縮小率が変化する。しかしながらＸ軸、Ｙ軸方向の移動に対しては、縮小率の変化が画像平面での位置によって様々であるため、この変化をミップマップの選択に用いると却って不自然に見えることが考えられる。従って視点のＺ軸方向の移動のみを考慮し、それによって生じる、画像の全体的な縮小率をＬＯＤ１に反映させる。
【０２６４】
まずオブジェクトがある、画像スクリーン７６からの距離がＺｐの位置に仮定した画素４４０の間隔を１とする。なお同図では説明のため、画素４４０を表す矩形の大きさを誇張して表している。原画像上での当該画素の像の幅ＯｒｇＤは、三角形の相似により次のように求められる。
OrgD : Scp = 1 : Scp + Zp
よって
OrgD = Scp / (Scp + Zp)
【０２６５】
次に、視点がＺ軸方向に−ｚ＿ｏｆｆだけ移動した場合、マップスクリーン３３４上での当該画素の像の幅ＮｅｗＤは、三角形の相似により次のように求められる。
NewD : Scp = 1 : Scp + Zp - z_off
よって
NewD = Scp / (Scp + Zp - z_off)
【０２６６】
すなわちこの変換処理によるＬＯＤ１は次のように求められる。
LOD1 = ln2 (OrgD / NewD)
= ln2 ((Scp + Zp - z_off)/ (Scp + Zp))
【０２６７】
ここでＺｐは、画像参照ベクトルマップを生成する際に生成されたＺバッファから取得する。２段階目の変換に基づくＬＯＤ２は、一般的なテクスチャマッピングと同様に求める。すなわちビュースクリーンに画像参照ベクトルマップをマッピングする際に、透視変換により求められる縮小率をＬＯＤとして算出する。この計算には、テクスチャマッピングを含むレンダリングを行う一般的なハードウェアの機能を利用できる。
【０２６８】
以上により各段階でのＬＯＤを取得したら、その和ＬＯＤ１＋ＬＯＤ２を最終的なＬＯＤとして参照先の原画像のミップマップレベルを決定し、トライリニアフィルタ処理により画素のカラー値を取得する。なお画像参照ベクトルマップ自体をミップマップデータとしてもよい。ただし画像参照ベクトルの画素間の差は小さいため、上述のとおりサンプリング点の周囲の４画素のベクトルをバイリニア補間する手法で十分な機能を果たす。
【０２６９】
図７５は、本実施の形態の手法を用いずに、オブジェクトの像を微小三角形に分割した単位で直接マッピングする場合の、ミップマッピングにおける問題を説明するための図である。この例では、正方形で表した２行２列の４つの画素（例えば画素４４４）に、それより小さい多数の微小三角形（例えば三角形４４６）がマッピングされている。一般的な手法によれば、マッピングする段階で微小三角形の単位でＬＯＤが計算される一方、ミップマップレベルの選択に反映されるＬＯＤは画素単位である。
【０２７０】
図示する例では網掛けした三角形群４４８を境にして段差が生じているようなオブジェクトの表面形状により、当該三角形群４４８は見かけ上、幅が狭くなっている。このため三角形群４４８に属する三角形のＬＯＤは、他の三角形のＬＯＤより高くなる。画素に対するミップマップレベルの選択に用いるＬＯＤを、画素の中心にある三角形のＬＯＤとした場合、三角形群４４８が中心にかかっている画素４５０のみ、他の画素より高いＬＯＤが採用され、縮小率の大きいテクスチャが選択されることになる。
【０２７１】
このように偶発的なＬＯＤのばらつきにより、マッピングするテクスチャの解像度が様々になると、ちらつき抑制などミップマッピングの効果が発揮されないことが考えられる。本実施の形態では、視点に応じてあらかじめ画素の変位を計算しておき、それを表す概念上の画像である画像参照ベクトルマップ全体をマッピングするため、微小三角形ごとのマッピングは必要ない。したがって上述のような偶発的なＬＯＤのぶれが発生しない。また、画素中心の画像参照ベクトルは、周辺の画素の画像参照ベクトルを加味して決定されるため、精度の高いテクスチャマッピングが可能となる。
【０２７２】
また画像自体をテクスチャマッピングする手法では、微小三角形の内部領域をラスタライズしてテクスチャ座標を取得していく必要がある。図示するように１つの三角形に含まれる画素数が低下すると、ハードウェアの実行効率は大幅に低下する。また、一つの微小三角形を構成する頂点のＺ値が大きく異なると、描画する三角形の画素数が増大し、結果的に画像全体のマッピングに長い時間を要することがある。本実施の形態では上述のとおり、画像全体をマッピングするため処理の負荷が格段に小さく、また視点位置の変化に伴う負荷の変動も少ない。結果として、より軽い負荷で高品質な画像描画が可能となる。これは、視点移動の表示画面への反映を常に低レイテンシで行わなければならないＶＲ機器にとってたいへん有効な性質である。
【０２７３】
次に、本実施の形態の原画像操作部２５４が視差データを拡張することにより、オブジェクトの像の周縁を精度よく描画する手法について説明する。図７６は視点の移動によって像をサブピクセルレベルで移動させるときの画像の変化を模式的に示している。（ａ）は原画像の画素配列を示しており、薄い網掛けの画素がオブジェクトの像、それを囲む濃い網掛けの画素がα値が０の、像がない領域を表している。本実施の形態では、サブピクセルの精度でサンプリング点を決定し、カラー値を決定する。しかしオブジェクトの像の外側は、視差値画像にデータが存在しないため、それを指す画像参照ベクトルも存在しない。
【０２７４】
仮に当該原画像の画素中心が画像参照ベクトルマップの画素中心と一致していた場合、画像参照ベクトルが実質的に表す画像も（ａ）のようになる。ここで矢印４６０に示すようにサブピクセルレベルで画素を移動させる必要が生じた場合、（ｂ）に矢印で示すように、各画素の画像参照ベクトルに逆方向の成分が加算され、原画像上でのサンプリング点４６２ａ〜４６２ｃが画素中心からずれる。
【０２７５】
その結果、原画像における隣接する画素との補間により決定されたカラー値により、画像参照ベクトルが実質的に表す画像は、（ｂ）に示すようにサブピクセルの変位を反映したものとなる。ただし原画像でオブジェクトの像が存在しない領域（例えば領域４６４）には、上述のとおりそれを指す画像参照ベクトルが存在しないため、サブピクセルの変位を反映させることができない。結果として対応する領域４６６は元のままとなる。
【０２７６】
そこでバッファ上などで視差値画像における像の周縁を１画素程度外側に拡張しておくことで、拡張分を指す画像参照ベクトルが生成されるようにする。図７７は視差値画像の拡張前後の画像参照ベクトルマップを模式的に示している。（ａ）は視差値画像を拡張しないときの画像参照ベクトルマップの画素配列であり、網掛けされた領域は、対応する原画像の画素にオブジェクトの像が表れているため画像参照ベクトルマップが格納されている画素である。白抜きの領域は像の外側に対応するため、画像参照ベクトルマップが存在しない画素である。
【０２７７】
（ｂ）は視差値画像を拡張したときの画像参照ベクトルマップの画素配列であり、グレーで表された画素は、拡張された視差のデータを用いて生成された画像参照ベクトルを格納する。このように画像参照ベクトルを生成しても、原画像において示された先の画素のα値が０であれば画像上は変化しないため、像自体が不自然に拡張されることはない。拡張処理には（ｂ）の上に示したカーネル４６８などを用いて拡張フィルタリングを行う。
【０２７８】
図７８は、視差値画像を拡張した場合の、サブピクセルレベルでの移動に伴う画像の変化を模式的に示している。（ａ）は図７６の（ａ）に対応するが、像の周囲の画素は、視差データの拡張により画像参照ベクトルが設定されていることをグレーで示している。このようにすると、（ｂ）で示すように、周囲の画素にもサブピクセルレベルの変位を反映させることができる。その結果、図７６の（ｂ）では変化のなかった領域４６６の画素も、隣接する画素との補間により決定されたカラー値が表れることになる。このような処理により、視点の移動に伴いオブジェクトの輪郭もより滑らかに移動して見えるようになる。
【０２７９】
図７９は、画像参照ベクトルマップおよびＺバッファが画素単位で保持するデータの構造を例示している。（ａ）の画像参照ベクトルマップのデータは、Ｘ値フィールド４８０ａ、Ｙ値フィールド４８０ｂ、画像ＩＤフィールド４８０ｃ、および存在フラグフィールド４８０ｄで構成される。Ｘ値フィールド４８０ａおよびＹ値フィールド４８０ｂには、画像参照ベクトルのＸ成分およびＹ成分を格納する。画像ＩＤフィールド４８０ｃには、参照先が自己画像か、相互参照時の他方の原画像か、拡張参照時の外側の視点からの原画像かを区別するための、画像の識別情報を格納する。
【０２８０】
存在フラグフィールド４８０ｄには、画像参照ベクトルが存在するか否かを示すフラグを格納する。このフラグにより、画像参照ベクトルが存在しその成分が（０，０）であることと、当該位置にオブジェクトが存在せず画像参照ベクトルとして設定すべきものがないこととを区別する。（ｂ）のＺバッファのデータは、Ｚ値フィールド４８２ａ、画像ＩＤフィールド４８２ｂ、被補間フラグフィールド４８２ｃ、補間可否フラグフィールド４８２ｄで構成される。
【０２８１】
Ｚバッファは、画像参照ベクトルマップ生成時にあっては、Ｚテストなどを経て最新に書き込まれたデータが格納され、表示画像の描画時にあっては、画像参照ベクトルマップが保持しているベクトルに対応する情報が格納される。Ｚ値フィールド４８２ａには、その画素が表すオブジェクトのＺ値を格納する。画像ＩＤフィールド４８２ｂには、上述同様、画像の識別情報を格納する。相互参照や拡張参照のデータより自己画像参照のデータを優先して格納するために用いられる。
【０２８２】
被補間フラグフィールド４８２ｃには、Ｚ値フィールド４８２ａに格納されているＺ値が、穴埋めにより後から補われたデータであることを示すフラグを格納する。このフラグによって、相互参照や拡張参照を行う画像参照ベクトルを設定できることが示される。補間可否フラグフィールド４８２ｄには、表示画像の描画時に、周囲の画像参照ベクトルとバイリニア補間できるか否かを示すフラグを格納する。例えばマップ上で隣接する画素とのＺ値が大きい場合、補間を不可とするフラグを格納する。これにより、段差が大きく補間に適さない画像参照ベクトルを混合し、当該段差が不鮮明に表現されるのを防止できる。
【０２８３】
次に、画像参照ベクトルマップを利用して視点補正を高精度に行う手法について説明する。この態様を実現する場合、図９で示した原画像操作部２５４を、出力部２７０におけるレンズ歪み補正機能の前段に組み入れる。ヘッドマウントディスプレイ１００では上述のとおり、視野を拡大するために左右の目の前にレンズを設け、それを介して画面を見るように構成されていることが多い。そのため画面に表示する段階では、レンズによる歪みをキャンセルするように、描画した本来の表示画像に非線形な歪み補正処理が施される。
【０２８４】
図８０は、レンズ歪み補正処理を含む画像の変遷を模式的に示している。中間フレームバッファ４９０およびレンズ歪み補正用フレームバッファ４９２は双方、左目用フレームバッファおよび右目用フレームバッファを含む。まず中間フレームバッファ４９０には、その時点の視点に応じた表示画像が、表示画像生成部２６８によって書き込まれる。出力部２７０は、中間フレームバッファに書き込まれた表示画像のデータをサンプリングし、適切な位置に再配置させてレンズ歪み補正用フレームバッファ４９２に書き込む。これを順次ディスプレイに出力することで、レンズを介して正常に見える画像を表示できる。
【０２８５】
一方、ヘッドマウントディスプレイ１００では、ユーザの視点に応じた画像をリアルタイムに表示することが求められる。ところが視点に応じてビュースクリーンを設定するタイミングと、レンズ歪み補正を行うタイミングでは数ｍ秒程度のずれがあるため、その間で視点の位置や方向が動いてしまっていることが考えられる。この場合、そのままレンズ補正を施し出力すると、実際の視点の動きより遅延した画像が表示され、ユーザに違和感を与えることがあり得る。
【０２８６】
そのため中間フレームバッファに書き込まれた画像を、一定方向に微小量シフトさせたうえで歪み補正を行うことで、疑似的に視点の動きに追随させることが考えられる。しかしながらこの手法では、視点の移動（ＸＹＺ軸方向の移動）を正確に反映できない。上述したように異なるＺ値を持つ画素は、視点の移動に伴う変化量が異なるため、画像平面のシフトでは正確に計算することができない。例えばユーザが頭部を回転させる場合も視線の方向が転回するだけでなく、一方の目に対し他方の目は相対的に移動していることになる。
【０２８７】
換言すれば画像平面のシフトで再現できる視点の動きは極めて近似的かつ限定的である。そこで画像参照ベクトルマップを利用して、視点の移動を加味して変化させた画像にレンズ歪み補正を行えるようにする。図８１は、画像参照ベクトルマップを利用して、一旦描画された画像にその後の視点移動を反映させる手法を説明するための図である。図８０で説明したのと同様、中間フレームバッファ４９０には、ある時刻ｔでの視点に応じた表示画像が書き込まれる。この表示画像は、視差値あるいはＺ値が判明していれば、画像参照ベクトルマップを利用したものでも、そうでなくてもよい。
【０２８８】
一方、画像参照ベクトルマップ５００として、表示画像を描画した時刻より遅れた時刻ｔ＋Δｔでの視点に応じたものを生成する。当該視点は、実際の計測結果に基づくものでもよいし、それ以前の視点の動きから予測したものでもよい。そしてレンズ歪み補正用フレームバッファ４９２には、中間フレームバッファ４９０に書き込まれた表示画像を原画像として、Δｔ分の視点の動きを反映させた画像参照ベクトルが示す位置からカラー値をサンプリングしたうえ、歪み補正を施したデータを書き込む。
【０２８９】
このようにすることで、一旦、描画された画像を正確にタイムシフトさせた状態で表示でき、視点の動きに追随するリアルタイムな画像表現を実現できる。なお中間フレームバッファ４９０に書き込むべき表示画像の描画にも画像参照ベクトルマップを利用した場合、画像参照ベクトルマップ５００の生成に用いるＺ値は、前段のマップを作成する過程で生成したＺバッファを利用できる。
【０２９０】
以上述べた本実施の形態によれば、左右の視差画像を用いて立体視を実現するシステムにおいて、あらかじめ生成された原画像を、視点の動きや方向に応じて変化させて表示画像とする。このとき視点の移動に応じて、仮想空間でのオブジェクトの位置を固定した状態で各画素の変位量を計算し、正確な補正量を求める。場合によっては、視点のＺ軸方向の動きに応じて、原画像の平面を同方向に平行移動させてもよい。このような構成によりユーザが大きく移動しても歪みのない自然な３次元の形状をユーザに提示することができる。
【０２９１】
このような視点の移動を反映した透視変換には、原画像そのものを用いずに、原画像における位置との差分を示す画像参照ベクトルマップを用いる。これにより、原画像に対する変換操作は、最終的に表示画像の画素値を決定するときのみとなるため、原画像からの画質の劣化を抑えられる。さらにビュースクリーンへのマッピングに必要な頂点データは画像参照ベクトルマップの４頂点のみのため、レンダリングの負荷を格段に抑えることができる。
【０２９２】
またラスタライズを省略して画像参照ベクトルマップ上で補間を行うため、それによっても処理の負荷が小さく、精度を維持しつつ高速に視点変換処理を実現できる。また原画像をミップマップデータとすることで、視点の動きに応じた画面のちらつきを抑えることができる。この際、ミップマップレベルを決定するＬＯＤを、視点のＺ軸方向の動きによる縮小と、画像参照ベクトルマップの透視変換による縮小によって決定するため、微小三角形単位でマッピングする一般的な処理と比較しＬＯＤの精度が高く、ミップマッピングの効果を発揮しやすい。
【０２９３】
さらに一方の目の表示画像に、部分的に他方の目の原画像を利用したり、別の視点からの原画像を利用したりすることが容易にできる。これにより原画像作成時に死角になっていた部分を精度よく再現でき、ユーザの動きを制限することなく破綻の少ない立体画像を提示できる。また本来オブジェクトの像ではない周縁部分にも画像参照ベクトルを準備しておくことにより、サブピクセルレベルの画素の変位を、像の輪郭部分にも正確に反映させることができる。
【０２９４】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【０２９５】
１２  平板型ディスプレイ、  １００  ヘッドマウントディスプレイ、  ２００  画像生成装置、  ２２２  ＣＰＵ、  ２２４  ＧＰＵ、  ２２６  メインメモリ、  ２５０  位置・姿勢取得部、  ２５２  ビュースクリーン設定部、  ２５４  原画像操作部、  ２５６  原画像データ記憶部、  ２５８  原画像データ、  ２６０  視差値画像データ、  ２６２  参照データ記憶部、  ２６４  Ｚバッファ、  ２６６  画像参照ベクトルマップ、  ２６８  表示画像生成部、  ２７０  出力部。
【産業上の利用可能性】
【０２９６】
以上のように本発明は、ゲーム装置、画像表示装置、画像再生装置、パーソナルコンピュータなど各種情報処理装置や、それらのいずれかを含む情報処理システムなどに利用可能である。
【図１】
2017212720.tif 000004
【図２】
2017212720.tif 000005
【図３】
2017212720.tif 000006
【図４】
2017212720.tif 000007
【図５】
2017212720.tif 000008
【図６】
2017212720.tif 000009
【図７】
2017212720.tif 000010
【図８】
2017212720.tif 000011
【図９】
2017212720.tif 000012
【図１０】
2017212720.tif 000013
【図１１】
2017212720.tif 000014
【図１２】
2017212720.tif 000015
【図１３】
2017212720.tif 000016
【図１４】
2017212720.tif 000017
【図１５】
2017212720.tif 000018
【図１６】
2017212720.tif 000019
【図１７】
2017212720.tif 000020
【図１８】
2017212720.tif 000021
【図１９】
2017212720.tif 000022
【図２０】
2017212720.tif 000023
【図２１】
2017212720.tif 000024
【図２２】
2017212720.tif 000025
【図２３】
2017212720.tif 000026
【図２４】
2017212720.tif 000027
【図２５】
2017212720.tif 000028
【図２６】
2017212720.tif 000029
【図２７】
2017212720.tif 000030
【図２８】
2017212720.tif 000031
【図２９】
2017212720.tif 000032
【図３０】
2017212720.tif 000033
【図３１】
2017212720.tif 000034
【図３２】
2017212720.tif 000035
【図３３】
2017212720.tif 000036
【図３４】
2017212720.tif 000037
【図３５】
2017212720.tif 000038
【図３６】
2017212720.tif 000039
【図３７】
2017212720.tif 000040
【図３８】
2017212720.tif 000041
【図３９】
2017212720.tif 000042
【図４０】
2017212720.tif 000043
【図４１】
2017212720.tif 000044
【図４２】
2017212720.tif 000045
【図４３】
2017212720.tif 000046
【図４４】
2017212720.tif 000047
【図４５】
2017212720.tif 000048
【図４６】
2017212720.tif 000049
【図４７】
2017212720.tif 000050
【図４８】
2017212720.tif 000051
【図４９】
2017212720.tif 000052
【図５０】
2017212720.tif 000053
【図５１】
2017212720.tif 000054
【図５２】
2017212720.tif 000055
【図５３】
2017212720.tif 000056
【図５４】
2017212720.tif 000057
【図５５】
2017212720.tif 000058
【図５６】
2017212720.tif 000059
【図５７】
2017212720.tif 000060
【図５８】
2017212720.tif 000061
【図５９】
2017212720.tif 000062
【図６０】
2017212720.tif 000063
【図６１】
2017212720.tif 000064
【図６２】
2017212720.tif 000065
【図６３】
2017212720.tif 000066
【図６４】
2017212720.tif 000067
【図６５】
2017212720.tif 000068
【図６６】
2017212720.tif 000069
【図６７】
2017212720.tif 000070
【図６８】
2017212720.tif 000071
【図６９】
2017212720.tif 000072
【図７０】
2017212720.tif 000073
【図７１】
2017212720.tif 000074
【図７２】
2017212720.tif 000075
【図７３】
2017212720.tif 000076
【図７４】
2017212720.tif 000077
【図７５】
2017212720.tif 000078
【図７６】
2017212720.tif 000079
【図７７】
2017212720.tif 000080
【図７８】
2017212720.tif 000081
【図７９】
2017212720.tif 000082
【図８０】
2017212720.tif 000083
【図８１】
2017212720.tif 000084
【国際調査報告】
2017212720.tif 000085
2017212720.tif 000086
2017212720.tif 000087
2017212720.tif 000088