(57)【要約】  画像描画装置は、結合背景画像についての立体視を実現する。DIBR部１７は、結合背景画像を構成する個々の背景画像に対してシフトを施すと共に、当該画素シフトに伴う境界処理を施す。結合背景画像は、立体モデル上で1つ以上の背景画像の端部が結合したものである。画素シフトは、景画像を構成する画素の座標を横方向に移動させる処理であり、画素の移動量は、デプス画像における画素の奥行き値に基づき定められる。境界処理とは、横方向への画素座標の移動によって個々の背景画像の表示範囲からはみ出すことになる画素群を抽出して、抽出された画素群を、横方向に隣接する他の背景画像の端部に追加する処理である。
2012132234.tif 000002
【特許請求の範囲】
【請求項１】
結合画像データについての立体視を実現する画像描画装置であって、
前記結合画像データは、複数の背景画像データが横方向に結合したものであり、
結合画像データを構成する個々の背景画像データに対して画素シフトを施すと共に、当該画素シフトに伴う境界処理を施すことで、2以上の視点テクスチャを得る画素シフト手段と、
三次元モデリング空間における立体モデルの内側表面に、2以上の視点テクスチャをマッピングするテクスチャマッピング手段と、
テクスチャマッピングがなされた立体モデルから、2以上の視点のそれぞれに対応するビューポート画像を抽出するビューポート変換手段とを備え、
前記画素シフトは、
個々の背景画像データを構成する画素の座標を横方向に移動させる処理であり、画素の移動量は、結合画像データに対応するデプス画像データにおける画素の奥行き値に基づき定められ、
前記境界処理は、
横方向への画素座標の移動によって個々の背景画像データの表示範囲からはみ出すことになる画素群を抽出して、抽出されたはみ出し画素群を、結合画像データにおいて横方向に隣接する他の背景画像データの端部に書き込む処理である
ことを特徴とする画像描画装置。
【請求項２】
前記画像描画装置は、
表示領域バッファと、領域外バッファと、画素シフトの処理がなされた処理済みの背景画像データを格納しておくためのテクスチャメモリとを備え、
前記画素シフトは、
前記結合画像データを構成する複数の背景画像データのうち、処理対象になるものを表示領域バッファに格納して、表示領域バッファ上で背景画像データを構成する画素の座標を横方向に移動させると共に、背景画像データの表示範囲から画素がはみ出た画素群を抽出して領域外バッファに書き込むことでなされ、
前記境界処理は、
領域外バッファからはみだし画素群を読み出して、テクスチャメモリに格納された処理済み背景画像データにおける一方の端部に書き込むことでなされる
ことを特徴とする請求項１記載の画像描画装置
【請求項３】
前記結合画像データが、1つのメルカトル画像データの一方の端部と、他方の端部とを結合することで得られる結合メルカトル画像データである場合、
前記境界処理は、
結合メルカトル画像データにおける各画素がデプス画像データを元にシフトされることにより、メルカトル画像の表示範囲からはみ出すことになる画素群を抽出して、抽出されたはみ出し画素群を、抽出された端部とは逆側の端部に上書きする
ことを特徴とする請求項１記載の画像描画装置。
【請求項４】
前記画像描画装置は、ユーザ操作に従って、地図上のカレント視点位置と、カレント視線方向とを判定する位置方向判定手段と、
地図上のカレント視点位置に対応する地理的情報を用いて画像取得要求を作成し、画像収集サーバに送信することでストリートビューファイルのダウンロードを行う取得手段とを備え、
画像収集サーバからダウンロードされたストリートビューファイルは画像取得要求に含まれる地理的情報と合致する撮影地属性を有し、
前記結合画像データは、ダウンロードされたストリートビューファイル内に存在する
ことを特徴とする請求項１記載の画像描画装置。
【請求項５】
前記結合画像データは視点周囲画像であり、複数の背景画像データを横方向に結合させることで画像取得要求における地理的情報に対応する地理的位置から周囲を見渡した場合の光景を表す
ことを特徴とする請求項１記載の画像描画装置。
【請求項６】
結合画像データについての立体視を実現する映像描画方法であって、
前記結合画像データは、複数の背景画像データが横方向に結合したものであり、
結合画像データを構成する個々の背景画像データに対して画素シフトを施すと共に、当該画素シフトに伴う境界処理を施すことで、2以上の視点テクスチャを得る画素シフトステップと、
三次元モデリング空間における立体モデルの内側表面に、2以上の視点テクスチャをマッピングするテクスチャマッピングステップと、
テクスチャマッピングがなされた立体モデルから、2以上の視点のそれぞれに対応するビューポート画像を抽出するビューポート変換ステップとを含み、
前記画素シフトは、
個々の背景画像データを構成する画素の座標を横方向に移動させる処理であり、画素の移動量は、結合画像データに対応するデプス画像データにおける画素の奥行き値に基づき定められ、
前記境界処理は、
横方向への画素座標の移動によって個々の背景画像データの表示範囲からはみ出すことになる画素群を抽出して、抽出されたはみ出し画素群を、結合画像データにおいて横方向に隣接する他の背景画像データの端部に書き込む処理である
ことを特徴とする映像描画方法。
【請求項７】
結合画像データについての立体視をコンピュータに実現させる映像描画プログラムであって、
前記結合画像データは、複数の背景画像データが横方向に結合したものであり、
結合画像データを構成する個々の背景画像データに対して画素シフトを施すと共に、当該画素シフトに伴う境界処理を施すことで、2以上の視点テクスチャを得る画素シフトステップと、
三次元モデリング空間における立体モデルの内側表面に、2以上の視点テクスチャをマッピングするテクスチャマッピングステップと、
テクスチャマッピングがなされた立体モデルから、2以上の視点のそれぞれに対応するビューポート画像を抽出するビューポート変換ステップとをコンピュータに実行させ
前記画素シフトは、
個々の背景画像データを構成する画素の座標を横方向に移動させる処理であり、画素の移動量は、結合画像データに対応するデプス画像データにおける画素の奥行き値に基づき定められ、
前記境界処理は、
横方向への画素座標の移動によって個々の背景画像データの表示範囲からはみ出すことになる画素群を抽出して、抽出されたはみ出し画素群を、結合画像データにおいて横方向に隣接する他の背景画像データの端部に書き込む処理である
ことを特徴とする映像描画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全周囲画像の描画技術に関するものである。
【背景技術】
【０００２】
上記全周囲画像の描画技術は、ストリートビューサービスの基盤となる技術である。ストリートビューサービスとは、様々な道路上の地点で撮影したパノラマ画像をサーバ上で管理し、ユーザは任意地点の道路上からの風景を、WEBブラウザ等を通じて３６０度の全周囲パノラマ画像で楽しむことが出来るサービスである。このストリートビューサービスにより、旅先の周辺状況の事前確認や、旅行後の思い出をもう一度振り返りたい場合等において、固定視点ではなく任意視点で風景を見ることができるため、ユーザの使い勝手が向上するというメリットがある。ストリートビューについての先行技術としては、以下の特許文献に記載されている技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１０-５３１００７
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、前述のストリートビューサービスはパノラマ画像を確認できるとはいうものの、表示される映像は平面視映像となっている。近年、大画面3Dテレビが普及しつつある中で、パノラマ画像を平面視でしか見れないとなると、サービスが見劣りするのは明らかである。【０００５】
ただし、ストリートビューも3D立体視サービスに対応するために、立体視カメラで再度、世界中の道路を撮影するとなると、膨大な時間と労力がかかる上、せっかく撮り溜めた平面視画像のストリートビューが無駄に終わってしまう。そこで考えられるのは、平面視−立体視変換により、既存の平面視ストリートビューを立体視化するという考えである。このような平面視-立体視化には、以下のような技術的障壁が存在する。上述したようなレンダリングは、通常一枚のメルカトル画像として撮影されるものではなく、縦４×横７といった数の複数の背景画像を結合することで作成される。このように、複数の背景画像を結合することで３６０度パノラマ画像を得て、立体視化の対象にしようとすると、３６０度パノラマ画像を構成する個々の画像について、デプス画像に基づくデプスイメージベースドレンダリングを実行する必要がある。デプスイメージベースドレンダリングとは、デプス画像に示される奥行きをもたらすよう、画像の各画素の座標を水平方向にシフトする技術である。ここで、３６０度パノラマ画像を構成する個々の画像に対して、デプス画像に基づくシフトを行うと、個々の画像のうち端部に存在するものの一部が、画像の表示領域外になる。そうすると、３６０度パノラマ画像を構成する個々の画像の境界にあたる部分の画素が消失することになり、空白の縦筋が存在するような３６０度パノラマ画像が得られる。【０００６】
これは表示の品位を大きく低下させる。立体視化の対象とする映像を、メルカトル画像とする場合、画像間の結合境界は存在しないから、空白の縦筋が発生することはない。しかし、複数の画像を結合することで得られたメルカトル画像に対しデプスイメージベースドレンダリングを施すとなると、メルカトル画像を一時的に格納しておくためのメモリ規模が多大なものになり、製品の低価格化を妨げるという問題がある。またメルカトル画像は、本来球体モデルへの貼付けを意図したものだから、貼付け状態において、画像の一方の端部と、他方の端部とが向かい合うことになり、境界が発生する。この場合、デプスイメージベースドレンダリングを行うことで境界が画素のない空白部分となり、表示の品位を低下させる。【０００７】
以上のように平面視画像とデプス画像からステレオ画像を生成する場合、ステレオ画像生成の過程で発生する画像両端での画素シフトにより、個々の画像同士のシームレス性が失われ、結果として画像同士の境界上は不自然な形で表示されるという課題がある。【０００８】
本発明の目的は、立体視再生時において、画素の空白部分を生じさせることがない画像描画装置を提供することである。
【課題を解決するための手段】
【０００９】
背景画像がストリートビューであるとの仮定下で技術的課題を提示したが、この仮定は、上記技術的課題を説明するにあたって、身近な題材を選んだに過ぎず、本願で対象としている技術的課題は、背景画像が上記のストリートビューの例であるケースに限定されない。何等かの画像を複数結合して立体視の対象とする際の視覚上の不整合解消全般が、本願の技術的課題であり、近い将来において、上記技術を工業製品の分野で実用化しようとする際、当業者が必ず直面する技術的障壁である。【００１０】
かかる課題を解決することができる画像描画装置は、結合画像データについての立体視を実現する画像描画装置であって、
前記結合画像データは、複数の背景画像データが横方向に結合したものであり、
結合画像データを構成する個々の背景画像データに対して画素シフトを施すと共に、当該画素シフトに伴う境界処理を施すことで、2以上の視点テクスチャを得る画素シフト手段と、
三次元モデリング空間における立体モデルの内側表面に、2以上の視点テクスチャをマッピングするテクスチャマッピング手段と、
テクスチャマッピングがなされた立体モデルから、2以上の視点のそれぞれに対応するビューポート画像を抽出するビューポート変換手段とを備え、
前記画素シフトは、
個々の背景画像データを構成する画素の座標を横方向に移動させる処理であり、画素の移動量は、結合画像データに対応するデプス画像データにおける画素の奥行き値に基づき定められ、
前記境界処理は、
横方向への画素座標の移動によって個々の背景画像データの表示範囲からはみ出すことになる画素群を抽出して、抽出されたはみ出し画素群を、結合画像データにおいて横方向に隣接する他の背景画像データの端部に書き込む処理であることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、シフトにより領域外となった画素を、隣接する画像のシフト方向とは反対側の端部に追加するので、シフトにより領域外になった画素群が消失することはない。画像の境界における画素消失がなくなるため、画像を横方向に結合した場合の一体感がまし、リアルな３６０度パノラマ画像を実現することができる。また、画像を球体に貼付ける場合において、その結合体の一方の端部に存在する画像と、反対側の端部に存在する画像とが隣り合うことになる。この場合、一方の端部に存在する画像をシフトすることで領域外となった画素は、反対側の端部に追加されることになるから、これらの複数の画像の結合体を球体モデルに貼付ける場合であっても、シフトで領域外となった画素が消失することにはならない。これにより画像の一体感が増す。【００１２】
例えば縦４×横７の背景画像を結合した全周囲画像をシフトするにあたって、縦４×横７の画像全体をメモリに格納する必要はないから、省メモリ化の実現が可能になる。【００１３】
任意的であるが前記画像描画装置は、
表示領域バッファと、領域外バッファと、画素シフトの処理がなされた処理済みの背景画像データを格納しておくためのテクスチャメモリとを備え、
前記画素シフトは、
前記結合画像データを構成する複数の背景画像データのうち、処理対象になるものを表示領域バッファに格納して、表示領域バッファ上で背景画像データを構成する画素の座標を横方向に移動させると共に、背景画像データの表示範囲から画素がはみ出た画素群を抽出して領域外バッファに書き込むことでなされ、
前記境界処理は、
領域外バッファからはみだし画素群を読み出して、テクスチャメモリに格納された処理済み背景画像データにおける一方の端部に書き込むことでなされてもよい。シフトのための表示領域バッファの規模は、結合画像全体のものではなく、1つの背景画像データを格納しうる容量で足りる。画素シフトに必要なメモリの実装量は最低限になるから、画像描画装置をデジタル家電に搭載するにあたってのコスト高騰を危惧する必要はない。【００１４】
任意的であるが、前記結合画像データが、1つのメルカトル画像データの一方の端部と、他方の端部とを結合することで得られる結合メルカトル画像データである場合、
前記境界処理は、
結合メルカトル画像データにおける各画素がデプス画像データを元にシフトされることにより、メルカトル画像の表示範囲からはみ出すことになる画素群を抽出して、抽出されたはみ出し画素群を、抽出された端部とは逆側の端部に上書きしてもよい。一枚のメルカトル画像を球体モデルの内側表面に貼付ける場合において、その画像の一方の端部は、自身の反対側の端部と隣り合うことになる。この場合、シフトで領域外になった画素を、シフト方向とは反対側の端部に追加することで、一体感がある画像が球体モデルに貼付けられることになり、空白部分の発生を回避することができる。【００１５】
任意的であるが、前記画像描画装置は、ユーザ操作に従って、地図上のカレント視点位置と、カレント視線方向とを判定する位置方向判定手段と、
地図上のカレント視点位置に対応する地理的情報を用いて画像取得要求を作成し、画像収集サーバに送信することでストリートビューファイルのダウンロードを行う取得手段とを備え、
画像収集サーバからダウンロードされたストリートビューファイルは  画像取得要求に含まれる地理的情報と合致する撮影地属性を有し、
前記結合画像データは、ダウンロードされたストリートビューファイル内に存在してもよい。背景画像は、地球上の地理的情報を用いた画像取得要求に応じて送信されるので、ユーザは家屋の中に居ながら、世界中の好きな場所の光景をサーバからダウンロードしてこれを自分の写真に合成させることができる。かかるサービスにより世界中を旅行したような仮想体験をユーザに経験させることができる。【００１６】
任意的であるが、前記結合画像データは視点周囲画像であり、複数の背景画像データを横方向に結合させることで画像取得要求における地理的情報に対応する地理的位置から周囲を見渡した場合の光景を表してもよい。写真ファイルに存在する地理的情報をキーワードとして背景画像の検索をサーバに行わせ、所望のストリートビューファイルを取得するので、画像描画装置がデジタルテレビに組み込まれる場合、デジタルテレビと、立体視カメラとを連携させた新規なサービスが可能になる。これにより、デジタルテレビと、立体視カメラとをセットで販売する場合に、競合商品との差別化が可能になる。【００１７】
任意的であるが、前記結合画像データは視点周囲画像であり、複数の背景画像データを横方向に結合させることで画像取得要求における地理的情報に対応する地理的位置から周囲を見渡した場合の光景を表してもよい。ユーザは、視点周辺画像に現れる範囲で、自由に視線を変化させることができ、追体験機能の充実化を図ることができる。
【図面の簡単な説明】
【００１８】
【図１】立体視グローバルビュー検索サービスの全体構成を示す。
【図２】ストリートビューの対象となる仮想空間を模式的に示す図である。
【図３】複数の背景画像が横並びに貼りつけられた球面モデルの内側表面を表す。
【図４】三次元モデリング空間において立体視再生時に作成される2つの球面モデルを示す。
【図５】球体の内側表面に貼りつけられた背景画像から多視点画像を作成する過程を示す。
【図６】左シフト後の全周囲画像、右シフト後の全周囲画像が貼りつけられた状態の球面モデルを示す。
【図７】左目用テクスチャ、右目用テクスチャの配置を示す。
【図８】前景画像と、背景画像との合成を示す。
【図９】追体験映像の一例を示す。
【図１０】ストリートビューナビの画面構成の一例を示す。
【図１１】実施の形態１における描画装置の入出力形態の一例を示す図である。
【図１２】画像描画装置の使用形態の一例を示す図である。
【図１３】画像描画装置の機能構成を示すブロック図である。
【図１４】ネットワークインターフェース３、もしくは、ローカルストレージ４から取得される全周囲画像と対応するデプス画像の一例である。
【図１５】デプス画像をベースにして、全周囲画像の各画素をシフトすることにより他視点からの画像を生成する過程を示す図である。
【図１６】画像において座標(x,y)に存在する画素Pix(x,y)と、デプス画像において座標(x,y)に存在する画素depth(x,y)とを示す。
【図１７】画素レベルのシフトにより、左目テクスチャ、右目テクスチャにおいてどのような視差がもたらされるかを示す。
【図１８】全周囲画像メモリ１３、デプス画像メモリ、左目テクスチャメモリ２２、右目テクスチャメモリ２３の内部構成と、画素シフト部１８、表示領域バッファ１９、領域外バッファ２０との関係を示す。
【図１９】デプス画像メモリ、全周囲画像メモリ１３、左目テクスチャメモリ２２間のデータフローを示す。
【図２０】デプス画像メモリ、全周囲画像メモリ１３、左目テクスチャメモリ２２間のデータフローを示す。
【図２１】左目テクスチャが形成されてゆく過程を示す。
【図２２】右目テクスチャが形成されてゆく過程を示す。
【図２３】右目テクスチャが形成されてゆく過程を示す。
【図２４】全周囲画像の立体視化手順を示すフローチャートである。
【図２５】水平360度ステレオ画像生成処理のフローチャートである。
【図２６】DIBR処理だけに基づいて得られる右目用の全周囲画像と、画素シフト及び境界処理を行なって得られる右目用の全周囲画像との対比を示す図である。
【図２７】実施の形態２における全周囲画像と、これに対応するデプス画像を示す図である。
【図２８】実施の形態２における、画素シフト後の画像を補正し、ステレオ画像を生成する様子を示す図である。
【図２９】テクスチャマッピング部２８によるテクスチャマッピングを示す。
【図３０】画像描画装置のハードウェア構成図である。
【図３１】GPUの内部構成を示す図である。
【図３２】球面モデルと、テクスチャとの対応付け、及び、テクスチャマッピングを実現するためのAPI呼出しの記述例である。
【発明を実施するための形態】
【００１９】
上記課題解決手段を具備した画像描画装置の発明は、ストリートビューを再生するためのデジタル家電機器として実施することができ、集積回路の発明は、当該デジタル家電機器に組込まれるシステムLSIとして実施することができる。画像描画方法の発明は、このデジタル家電機器で実現される時系列手順として実施することができる。画像描画プログラムの発明は、コンピュータ読み取り可能な非一時的記録媒体に記録され、デジタル家電機器にインストールされる実行形式プログラムとして実施することができる。画像描画装置の説明に先立ち、画像描画装置の使用環境である立体視グローバルビュー検索サービスの全体構成について説明する。
【００２０】
図１は、立体視グローバルビュー検索サービスの全体構成を示す。グローバルビュー収集サーバ１００１は、世界中から収集された背景画像を、デプスデータ、地形データと対応付けて格納しているサーバであり、クライアント装置からの要求に応じて視点周囲画像を、デプス画像、地形データと共に送信する。背景画像は、専用の撮影車両の走向中に撮影されたものである。デプスデータは、その撮影時に取得したランドマークの奥行きを示す。  更に視点周囲画像とは、グローバルビュー収集サーバ１００１に対して送信した画像取得要求における地理的情報に対応する地理的位置から周囲を見渡した場合の光景を表すものである。視点周囲画像は例えば90度、120度、180度、360度といった比較的広い視野を見渡せる画像であり、特に、360度の視野を見渡せる視点周囲画像をパノラマ画像または全周囲画像と称することもある。説明の便宜上、以降の説明において視点周囲画像は360度の視野を見渡せるパノラマ画像、つまり全周囲画像であると仮定する。この撮影車両は、複数のカメラを具備していて、複数のカメラで、車両が存在する場所を、縦４×横７の背景画像により表す。デプス画像は、デプスデータにおけるランドマークの奥行きを、画素の輝度によって表したものであり、背景画像の奥行きを表す。つまりデプス画像の個々の画素は、背景画像の個々の画素を奥行きを示す奥行き情報になる。
【００２１】
クライアント装置１００２は、デジタルテレビ等、ネットワーク対応の家電機器であり、サーバに対してダウンロード要求mg1を送信し、全周囲画像mg2、デプス画像mg3を受信する。この全周囲画像を用いて、3Dストリートビューを実行する。かかるダウンロード要求は、緯度、経度、標高の情報を含み地球上の任意の場所の全周囲画像の送信を要求することができる。
【００２２】
眼鏡１００３は、ユーザが立体視でのストリートビューの視聴を希望する場合に、ユーザによって着用される。ここでの立体視は、多視点画像群により実現されるものである。ここで多視点画像群とは、左目用画像、右目用画像、中央、右斜上画像、右斜下画像、左斜上画像、左斜下画像というように、2以上の視点に対応する視点画像によって立体視を実現する視点画像の集合体である。多視点画像群の全てのバリエーションについて説明を行うとすると説明が煩雑になるので、以降の説明において、多視点画像群は、必要最低限の視点画像の組み、つまり、左目画像、右目画像の組みからなるステレオ画像群であるとして進める。
【００２３】
図２は、ストリートビュー立体視システムを模式的に示す図である。本図の上半分はモデルが存在する仮想空間であり、下半分は、クライアント装置１００２、眼鏡１００３が存在する現実空間である。
【００２４】
まず仮想空間について説明する。仮想空間とは、立体モデルの幾何学形状を規定する三次元座標を配置するための座標系にて規定される三次元モデリング空間である。立体モデルの形状は問わない。円柱、円錐、三角錐、楕円体等、どのような形状の三次元モデルでもよいが、説明の便宜のため、以降の説明は、球面モデルとして説明を行う。立体モデルである球体の中心は、カメラの位置である。簡単のため、球面モデルは1つのみをえがいているが、立体視時には、左目用、右目用のそれぞれについての球面モデルが存在する。図中のカメラCLは、球面モデルの中心から右側にpだけ隔てた位置に配置されるカメラである。カメラCRは、球面モデルの中心から左側にpだけ隔てた位置に配置されるカメラである。これらカメラCL、CRは、左目撮影時、右目撮影行為時における球面モデルの中心位置になる。
【００２５】
この立体モデルの斜め上には、縦４×横７の背景画像を結合した全周囲画像が配置される。全周囲画像には、右目用の全周囲画像m1と、左目用の全周囲画像m2とがあり、右目用テクスチャと、左目用テクスチャとでは、三次元モデリング空間における配置位置が異なる。本図では、球面モデルの上半分のみを描いているが、実際は下半分も存在する。また全周囲画像についても、上半分のみを描いているが、実際は下半分も存在する。
【００２６】
次に球面モデルについて説明する。球体の内側表面には、右目用テクスチャの貼付け範囲m4、左目用テクスチャの貼付け範囲m5が存在する。球面モデルにおける貼付け範囲とは、球面モデルにおいて、4つ又は3つの交点にて規定されるグリッドのことである。かかるグリッドは、球面モデルの曲率を有し、球面モデルの極座標を頂点とした三角形ストリップの一部又は全部として定義される。テクスチャマッピングにあたっては、図形タイプを三角形ストリップとして、背景画像が格納されたテキストバッファ座標との対応付けをすることで、グラフィクス描画を実行する。テクスチャの手前には、表示面が存在し、この表示面にはビューポートmg6が定義される。ビューポートは、三次元モデリング空間のうち、表示に供される部分を規定するものである。このビューポートに投影される映像が、再生に供されることになる。ビューポートは、左目の投影範囲、右目の投影範囲が交差する場所に存在している。つまりビューポートは、左目用と、右目用とで共通の位置に配置される。
【００２７】
球面モデルの内側に貼付けられるテクスチャは全周囲画像であるから、３６０°の全周囲を見渡せることになる。三次元モデリング空間における球面モデルをメルカトル図形に展開すれば、全周囲画像になる。半球体における縦２×横７のグリッドの個数は、全周囲画像における縦２×横７の背景画像の個数と一致する。つまり全周囲画像における個々の背景画像をテクスチャに変換して、球面モデルの個々のグリッドに貼付けるというテクスチャマッピングを行う。
【００２８】
以上が仮想空間についての説明である。続いて、現実空間について説明する。
【００２９】
本図では、立体モデルである球体の真下にクライアント装置１００２と、眼鏡１００３を着用したユーザの顔とを描いている。クライアント装置１００２の表示画面は、球面モデル内のビューポートの真下に存在する。また眼鏡１００３は、カメラCL,CRの真下よりやや奥に存在する。これは、ユーザの右目、左目はカメラCL,CRの位置となるので、眼鏡１００３はこれの近くに配置せねばならないからである。
【００３０】
上述したように、カメラCL、CRの位置がユーザの右目、左目に該当し、ビューポートがクライアント装置１００２の画面に該当するから、クライアント装置１００２と、ユーザとの間に立体視画像が出現する。仮想空間において、家屋は平面的に表現されていたが、現実空間において家屋は、クライアント装置１００２の画面から飛出す形になっている。
【００３１】
図３は、球面内側に貼りつけられたテクスチャを、球面モデル中心から視聴した状態を示す。図３は、複数の背景画像が横並びに貼りつけられた球面モデルの内側表面を表す。図３では、正面には近代的な教会が配置され、右手側に滑り台が存在する。これらは球体の内側表面に貼りつけられたものであるから、断面円の中心にカメラを配置した場合、これを全周囲から取り囲むように背景画像が配置されることになる。この球面モデルに貼付けられたテクスチャは、地球上の緯度、経度、標高から定まる視点位置に伴い変化する。つまり画像描画装置は、視点位置の変更操作がユーザによってなされた場合、地球上の地理的情報（緯度、経度、標高等）から定まるカレント視点位置を更新して、更新後のカレント視点位置に合致した全周囲画像をダウンロードし、この全周囲画像を球面モデルに貼付けて、再描画を行う。
【００３２】
図２の球面モデルは、球面モデルの中心にカメラが存在していたが、これは平面視のためのカメラ位置であり、立体視のカメラ位置は異なる。立体視時には、球面モデル中心からpだけ隔てられた位置にカメラを配置することで球面モデルが2つ得られる。図４は、三次元モデリング空間において立体視再生時に作成される2つの球面モデルを示す。図４（ａ）は、左目用の球面モデルであり、横7枚の背景画像を横方向に結合した画像に対してDIBRを実行することで作成された左目用画像が内側に貼付けられている。
【００３３】
図４（ｂ）は、（ａ）の画像に対してデプス画像をベースにしたデプスイメージベースドレンダリングを実行することで作成された右目用画像であり、横7枚の背景画像を横方向に結合した画像に対して、デプス画像をベースにしたデプスイメージベースドレンダリングを実行することで作成された右目用画像が内側に貼付けられている。
【００３４】
全周囲画像を構成する横７枚の画像を、画像A,B,C,D,E,F,Gとする。この画像A〜Gから右目用テクスチャ、左目用テクスチャをどのように作成するかについて説明する。図５は、この球体の内側表面に貼りつけられた背景画像から多視点画像を作成する過程を示す。（ａ）は、球体内側表面を分割することで得られた7つの分割領域に、全周囲画像を構成する横7枚の画像のうち、A、B、C、D、Eという5枚の背景画像をA→B→C→D→Eの順序で貼りつける一例を示す。図５（ａ）の画像A、画像B、画像C、画像D、画像Eについて説明する。画像AにおいてDIBRによるシフトで座標が変化する画素の集りを、AL、AM、ARとしている。画像BにおいてDIBRによるシフトで座標が変化する画素の集りを、BL、BM、BR、画像CにおいてDIBRによるシフトで座標が変化する画素の集りを、CL、CM、CRとしている。画像DにおいてDIBRによるシフトで座標が変化する画素の集りを、DL、DM、DR、画像EにおいてDIBRによるシフトで座標が変化する画素の集りを、EL、EM、ERとしている。これらの画素群は画像において"Ｖ"の形状をなしている。
【００３５】
左目用テクスチャの作成では、画像A〜Eを結合してDIBRを実行する。これにより左端部分の画素が、表示領域外になるから、図５（ａ）における画素集合BL,CL,DL,EL,FLを、隣接する画像である画像A,B,C,D,Eの右側の端部に追加する。この結果が、図５（ｂ）である。図５（ｂ）に示すように左目用テクスチャは、画素群AM,AR,BLを含む画像A(L)、画素群BM,BR,CLを含む画像B(L)、画素群CM,CR,DLからなる画像C(L)、画素群DM,DR.ELを含む画像D(L)、画素群EM,ER,FLを含む画像E(L)から構成されることになる。紙面上の都合から、図５では画像F、Gについては図示を省略しているが画像F、Gについても本図と同様の処理がなされる。
【００３６】
右目用テクスチャの作成では、画像A〜Eを結合してDIBRを実行する。これにより右端部分の画素が、表示領域外になるから、図５（ａ）における画素集合GR,AR,BR,CR,DRを、隣接する画像である画像A,B,C,D,Eの側の左側の端部に追加する。この結果が図５（ｃ）である。図５（ｃ）に示すように右目用テクスチャは、画素群GR,AL,Amを含む画像A(R)、画素群AR,BL,Bmを含む画像B(R)、画素群BR,CL,Cmからなる画像C(R)、画素群CR,DL,Dmを含む画像D(R)、画素群DR,EL,Emを含む画像E(R)から構成されることになる。
【００３７】
図６（ａ）は、図５（ｂ）の左シフト後の画素が球面内側に貼りつけられた場合のテクスチャを示す。図６（ｂ）は、図５（ｃ）の右シフト後の画素が球面内側に貼りつけられた場合のテクスチャを示す。
【００３８】
図７（ａ）は、図１の三次元モデリング空間において、左目用テクスチャ、右目用テクスチャと、ビューポートとの関係を示す。図７（ａ）は、左目用テクスチャの配置である。本図において、左目用カメラの視線ベクトルの先に、左目用テクスチャが配置され、左目用テクスチャが球面モデル内側に貼付けられる。これによりビューポートに該当する部分が表示に供されることになる。図７（ｂ）は、右目用テクスチャの配置である。本図において、右目用カメラの視線ベクトルの先に、右目用テクスチャが配置され、右目用テクスチャが球面モデル内側に貼付けられる。これによりビューポートに該当する部分が表示に供されることになる。
【００３９】
図８は、前景画像と、背景画像との合成を示す。（ａ）は、題材となる前景画像、これは近代的な教会を背にして新郎、新婦が向かい合っているという内容のスナップ写真である。この近代的な教会は、背景画像にも存在するので、教会の輪郭線形状は、前景画像及び背景画像の共通の特徴となる。図８（ｂ）は、前景画像と、背景画像とのマッチングを示す。かかるマッチングにより、背景画像、前景画像の対応関係を示す変換行列ができるから、かかる行列に従い、前景画像のデプス画像を変換した上でDIBRを行えば背景画像と違和感がない合成画像が得られることになる。
【００４０】
この図８の合成を前提として、追体験が可能になる。図９は、画面合成の一例を示す。視線vw１は、眼鏡１００３によって右目が遮光された場合の映像の入射を示す。視線vw2は、眼鏡１００３によって左目が遮光された場合の映像の入射を示す。このvw１により左目画像が視聴されることになる。またvw2により右目画像が視聴されることになる。眼鏡１００３を着用することによりユーザは、右目画像、左目画像を交互に視聴することになり、立体視画像が再生される。図９の画像は、変換行列に従いビューポートに得られた前景画像と、背景画像とを合成することで得られる立体視画像である。球面体内部に貼りつけられた複数の背景画像を背にして人物が表示されるので、臨場感が高い立体視映像が得られる。以上のように、写真のグローバル位置に合致した全周囲画像をサーバから取得すれば、その写真に合致した全周囲画像に写真を合成することができる。
【００４１】
またストリートビューには、UIオブジェクトを合成することができる。図１０は、UIオブジェクトが合成されたストリートビューを示す。方向ナビuiは、カレントの視線方向を視覚的に表示する。インディケータir1,ir2は、カレントの視点位置が存在する地名(loss-Less City central park)や建造物の名称(CABAC church)を表す。十字ボタンbn2は、カレント視点位置を変更させる場合において、その進行方向の選択を受け付けるものである。ズームアップボタンbn3は、視点位置、視線方向をそのままにして、表示内容の拡大・縮小操作を受け付けるものである。アングルボタンbn4は、カレント視線方向の右旋回、左旋回の指定を受け付けるものである。これらのGUIは、リモコンのキーに割り当てられるので、リモコンに対する操作により、ストリートビューにおける移動、回転といった制御が可能になる。以上がグローバルビュー検索サービスについての説明である。
（実施の形態１）
実施の形態１は、結合背景画像を構成する個々の背景画像に対して画素シフトを施す際、この画素シフトによって生じる"はみだし画素"を好適に処理する改良に関する。
【００４２】
図１１は、実施の形態１における画像描画装置の入出力形態の一例を示す図である。描画装置１０１は入力として、全周囲画像と対応するデプス画像（デプスマップ）を受け取り、左目用と右目用の画像出力を行う。出力される左目画像、右目画像は立体視対応ディスプレイにて同期して画面上に描画され、視聴者には立体画像として知覚される。
１地点からの全周囲画像は、縦４枚、横７枚の計２８枚の部分画像から構成される。各部分画像１枚は縦５１２画素、横５１２画素の画素数を持つ。デプス画像（デプスマップ）は、立体空間における各画素の奥行きを示すものであり、色がより黒い部分が立体空間上、奥に位置する物体であり、色が白い部分が、立体空間上手前に存在していることを示している。
【００４３】
描画装置は、各部分画像毎にデプス画像を適用し、入力される部分画像数と同じく、それぞれ28枚の右目用画像と左目用画像を生成する。生成された右目用画像、左目用画像はそれぞれ球面上に貼り付けられ、3Dモデリング空間上、球体の中心から球面側を見た範囲を、左目用と右目用で同期して画面上に出力することで、全周囲の立体画像を表示する。
【００４４】
図１２は、画像描画装置の使用形態の一例を示す図である。ユーザはリモコン１０２を用いて、視聴したい場所やアングルを指定し、立体視対応ディスプレイ１０３に出力される映像を、液晶シャッターメガネ１０４を通して視聴することで、任意地点・アングルの全周囲画像を立体的に知覚することができる。
【００４５】
立体視対応ディスプレイ１０３は描画装置１０１と接続されているか、もしくは描画装置１０１の機能を内蔵している。図１２における使用形態の例では、立体視対応ディスプレイ１０３が描画装置１０１の機能を内蔵しており、立体視対応ディスプレイ１０３はインターネットを経由しサーバ１０５と接続されている。立体視対応ディスプレイ１０３は、ユーザが指定した場所に対応する全周囲画像とデプス画像をダウンロードし、右目用画像と左目用画像を生成し同期して画面上に表示する。
【００４６】
図１３は、描画装置の機能構成を示すブロック図である。図１３に示すように、描画装置１０１は、ユーザ操作検知部１、位置方向判定部２、ネットワークインターフェース３、ローカルストレージ４、描画制御部５、左目プレーンメモリ６、右目プレーンメモリ７、及び出力インターフェース８から構成される。
【００４７】
（ユーザ操作検知部１）
ユーザ操作検知部１は、ユーザのリモコン操作、キーボード操作、マウス操作などを検知し、対応する操作コード（上下左右キー押下、右クリック押下などのユーザ操作を示すコード）を位置方向判定部２に送る。
【００４８】
（位置方向判定部２）
位置方向判定部２は、ユーザ操作検知部１から受け取った操作コードを元に、地図上のどの位置の全周囲画像を、どの視点方向で見た画像を表示すべきかを判定する。地図上の位置はカレント視点位置であり、緯度と経度を含む地理的情報で特定される。また視点方向はカレント視線方向であり、水平角度と垂直角度で特定される。水平角度は北を０度とし時計回りに０度から３６０度の範囲で表現される。垂直角度は地平線を０度、真上が９０度、真下が-９０度として、-９０度から９０度の範囲で表現される。位置方向判定部２は、受け取った操作コードを元に、これら緯度、経度、水平角度、垂直角度を特定し、特定された値を描画制御部５へ渡す。
【００４９】
（ネットワークインターフェース３）
ネットワークインターフェース３は、要求送信部、応答受信部を具備している。要求送信部は、地球上のカレント視点位置を指定した画像取得要求をグローバルビュー収集サーバ１００１に送信する。ここで要求送信部は、地図画像に対するユーザ操作がなされた場合、ユーザ操作で指定された位置に対応について地理的情報を用いてカレント視点位置を指定する画像取得要求を作成してグローバルビュー収集サーバ１００１に送信する。応答受信部は、画像取得要求に対する応答として、グローバルビュー収集サーバ１００１から送信されてくる立体ストリートビュー視点ファイルを受信する。グローバルビュー収集サーバ１００１から送信されてくる立体ストリートビュー視点ファイルは  画像取得要求に含まれる地理的情報と合致するさ８位置属性を有している。
【００５０】
ダウンロードされたストリートビューファイルには全周囲画像及びデプス画像が存在する。ストリートビューファイルは、一旦立体画像描画装置内のローカルストレージ４に格納される。これらを直ちに表示する場合、ローカルストレージ４には格納せず装置内のメモリ上にダウンロードされた全周囲画像をそのまま画像取得部に渡す。
【００５１】
（ローカルストレージ４）
ローカルストレージ４は、ハードディスクドライブ（HDD）、USBメモリ、SDメモリーカードなど、描画装置に取り付けられている記録媒体である。サーバからダウンロードしたストリートビューファイルをキャッシュしたり、サーバ以外の外部機器で作成したストリートビューファイルを描画装置で利用するなどの用途に用いられる。ローカルストレージ４の理解を高めるため、その格納内容であるストリートビューファイルについて説明する。ストリートビューファイルとは、地球上の任意の地点での視点を再現するファイルであり、地球上のその視点における撮影地属性に、全周囲画像である圧縮メルカトル画像と、対応するデプス画像である圧縮メルカトルデプスと、撮影日時、データサイズを対応付けたファイルである。ここでの撮影地属性とは、緯度、経度、標高、方角、傾斜である。ストリートビューファイルは、立体写真ファイルと共通のデータ構造をもっているので、ある視点位置に最適なストリートビューファイルを検索する際、データベースに存在するストリートビューファイルのうち、撮影地属性として同一の緯度、経度、標高をもつものサーチすれば、ユーザが希望するストリートビューファイルを早期に発見することができる。以上がローカルストレージ４についての説明である。
【００５２】
（描画制御部５）
描画制御部５は、位置方向判定部２から指示された地図上の位置と、ネットワークインターフェース３もしくはローカルストレージ４から取得した全周囲画像及びデプス画像を元に、3Dモデリング空間で球面上に貼り付けられた全周囲画像を、右目用と左目用の２種類作成し、位置方向判定部２から指示された視点方向で球の中心から球面を見たときに表示されるべきビューポート画像を抽出し、抽出された左目ビューポート画像、右目ビューポート画像を、それぞれ左目プレーンメモリ６、右目プレーンメモリ７に出力する処理を行う。
【００５３】
（左目プレーンメモリ６）
左目プレーンメモリ６は、立体視表示において左目に対して提示すべき一枚の画像を格納するメモリである。
【００５４】
（右目プレーンメモリ７）
右目プレーンメモリ７は、立体視表示において右目に対して提示すべき一枚の画像を格納するメモリである。
【００５５】
（出力インターフェース８）
出力インターフェース８は、左目プレーンメモリ６、右目プレーンメモリ７に格納された画像を１フレームずつ同期して立体視対応ディスプレイ１０３へ出力する。具体的には１２０Hzで、左右のプレーンメモリから画像を交互に読み出し、左右それぞれ秒間６０コマの映像をディスプレイ側へ送信する。視聴するユーザは液晶シャッターメガネ１０４を装着し、液晶シャッターが１２０Hzで交互に開閉を繰り返すことで、左目には左目用の秒間６０コマの画像を、右目には左目用の秒間６０コマの画像を見ることが出来るため、左右の画像の視差から奥行きを知覚することができる。
【００５６】
以上が画像描画装置の基本構成についての説明である。続いて、描画制御部５の内部構成について説明する。描画制御部５はさらに、全周囲画像取得部１１、全周囲画像デコーダ１２、全周囲画像メモリ１３、デプス画像取得部１４、デプス画像デコーダ１５、デプス画像メモリ１６、DIBR部１７（画素シフト部１８、表示領域バッファ１９、領域外バッファ２０、境界処理部２１）、左目テクスチャバッファ２２、右目テクスチャバッファ２３、CG処理部２４(モデリングデータ格納部２５、頂点変換部２６、照度計算部２７、テクスチャマッピング部２８、ビューポート変換部２９)から構成される。
【００５７】
（全周囲画像取得部１１）
全周囲画像取得部１１は、位置方向判定部２から指示された地図上の位置（緯度と経度で特定）に対応する全周囲画像を、ネットワークインターフェース３を介してサーバ１０５からダウンロードするか、もしくはローカルストレージ４から画像の取得を行う。１地点からの全周囲画像は、縦４枚、横７枚の計２８枚の部分画像から構成され、各画像１枚は縦５１２画素、横５１２画素の画素数を持つ。図１５（ａ）は、全周囲画像の一例を示す。
【００５８】
（全周囲画像デコーダ１２）
全周囲画像デコーダ１２はJPEGデコーダであり、圧縮メルカトル画像８０２の展開を行い全周囲画像メモリ１９に格納する。
【００５９】
（全周囲画像メモリ１３）
全周囲画像メモリ１３は、全周囲画像デコーダ１２より展開されたメルカトル画像を格納するメモリである。
【００６０】
（デプス画像取得部１４）
デプス画像取得部１４は、全周囲画像取得部１１が取得した全周囲画像に対応するデプス画像を、ローカルストレージ４に格納されたストリートビューファイルから取得する。
【００６１】
（デプス画像デコーダ１５）
デプス画像デコーダ１５は、PNGデコーダであり、立体ストリートビュー視点に含まれる圧縮メルカトルデプスの展開を行いデプス画像メモリ１６に格納する。
【００６２】
（デプス画像メモリ１６）
デプス画像メモリ１６は、デプス画像デコーダ１５より生成されたデプス画像を格納するメモリである。デプス画像は、立体空間における各画素の奥行きを示すものであり、各画素の奥行きを８ビットの輝度で表現している。輝度０（黒色）は、対応する画素が最も遠い位置にあることを示し、輝度２５５（白色）は、対応する画素が最も近い位置にあることを示す。つまり、全周囲画像がカラー画像として見えるのに対し、デプス画像は輝度のみで表現されたグレースケール画像として認識される。デプス画像を示すグレースケール画像も、全周囲画像と同様、１地点につき、縦４枚、横７枚の計２８枚の部分画像から構成され、各画像１枚は縦５１２画素、横５１２画素の画素数（各画素は８ビットの輝度のみ保持）を持つ。
【００６３】
図１４はネットワークインターフェース３もしくはローカルストレージ４から取得される全周囲画像と対応するデプス画像の一例である。全周囲画像の１画素に対し、それぞれ8ビット（２５６段階）のデプス画像が割り当てられている。奥行き値０が3D空間上で最も奥に位置することを示し、奥行き値２５５が3D空間上で最も手前に位置することを示している。これらの奥行き値は、８ビットの輝度として割り当てられ、デプス画像は図１４に示すようにグレースケールの画像（デプスマップ）として表現される。
【００６４】
デプス画像における１画素が、それぞれベースとなる全周囲画像の１画素の奥行き値（デプス値）に対応している。例えば、デプスマップ画像上の座標（X=１００，Y=１００）の画素の輝度が50であった場合、対応する全周囲画像の座標P（X=１００，Y=１００）の画素は奥行き値５０であることを示し、デプスマップ画像上の座標（X=２００，Y=２００）の画素の輝度が100であった場合、対応する全周囲画像の座標Q（X=２００，Y=２００）の画素は奥行き値１００であることを示す。
【００６５】
すなわち、全周囲画像の座標P（X=１００，Y=１００）は奥行き値５０、全周囲画像の座標Q（X=２００，Y=２００）は奥行き値１００であるから、座標Pの方が座標Qより、3D空間上で奥に位置することになる。
【００６６】
＜DIBR部１７＞
DIBR部１７は、全周囲画像取得部１１からベースの左目用全周囲画像を、デプス画像取得部１４からベース画像に対応するデプス画像を取得し、DIBR処理を行い、右目画像を生成する。DIBR（Depth Image Based Rendering、もしくはDepth Image Based Representations）とは、デプス画像（デプスマップ）を元に、ベース画像から各画素を左右にシフトして他視点からの視点画像を生み出す処理のことである。ベースの全周囲画像を左目用に割り当てる場合、生成される他視点からの視点画像（すなわち右目用の画像）上の画素は、ベースの画素に対し右にシフトすれば、3D空間上で奥側に移動し、ベースの画素に対し左にシフトすれば、3D空間上で手前に移動することになる。これは、いわゆる人間の目の輻輳角の差によって生み出される立体知覚によるものであり、ベースの左目画像に対し、右目画像上の画素を左にシフトすると輻輳角が小さくなり、いわゆる寄り目状態となるため、その画素で表現される物体が手前に位置するように知覚される。反対に、ベースの左目画像に対し、右目画像上の画素を右にシフトすると輻輳角が大きくなり、その画素で表現される物体が奥に位置するように知覚される。よって、デプス画像で示される各画素の奥行き値に応じ、ベースの左目画像の各画素を左右にシフトすれば、対応する立体視可能な右目画像を生成することができる。
【００６７】
ただし、DIBR処理に基づいて生成される右目画像はまだ不完全である。画像中央付近でシフトされる画素については問題ないが、画像の両端部にてシフトされる画素については、画素の座標やシフト量によっては、シフト後の画素が画像領域外の位置となる場合がある。また、画像の端部で、中心方向にシフトする場合、シフト前の位置を埋める画素が欠けてしまうという問題も発生する。
【００６８】
これらの問題について、図１５を用いて具体的に説明する。図１５は、ベースの全周囲画像の各画素を、デプス画像を元にシフトして他視点からの視点画像を生成する様子を示す図である。
【００６９】
この図１５の一例では、最も単純な対応付けとして、シフト量０となる基準値を、奥行き値０とし、奥行き値が大きくなるにつれて、より多く左へシフトすることとする。ここでは、便宜上、奥行き値が１増加することに、左へのシフト量を１ずつ増やすこととする。つまり、奥行き値０の画素はシフトなし、奥行き値50の画素は左方向へ50ピクセル分のシフト行うことになる
図１５（ａ）の左上に存在する画像は、複数の背景画像が結合した全周囲画像である。この画像には、左端部に雲が、右端部には隣の画像にまたがる形で家が描かれている。図１５（ａ）の右上に存在する画像は、対応するデプス画像である。このデプス画像には、空を表現している背景に相当している部分が最も奥（奥行き値０）に位置しており、空より手前に雲、家が位置していることを示している。図１５（ａ）では、雲の奥行き値が50、家の奥行き値が100とする。DIBR処理においては、まずシフト量０となる基準値を決め、そこから、奥行き値に応じてシフト量を決めるものとする。
【００７０】
図１５では、空にあたる部分は奥行き値０であるため、シフトは行わない。一方、雲に関しては奥行き値が１以上のため、画素シフトを行う。ビルは奥行き値が50であるため、雲を構成している画素を左方向へ50ピクセル分シフトする。ビルに関しては奥行き値100であるため、ビルを構成している画素は左方向に100ピクセル分シフトする。全周囲画像を構成する個々の画像に対して画素シフトを行った結果が図５（ｂ）の画像である。雲は元々の位置が左端部付近であったため、シフト後の結果が表示領域からはみ出した位置となっている。一方、家に関しては、右端部に位置し、隣の画像とまたがって描かれているため、左方向へシフトした後は、本来あるべき画素が隣の画像にあるため、シフトによる余白が発生し、一部が欠けた状態となっている。雲の左端、家の真ん中部分、山の真ん中部分を構成する画素がそれぞれはみ出し画素になっていることがわかる。そこでDIBR部１７は、境界処理部２１を具備することにより、シフトによる余白を補完する処理を行う。図１５（ｃ）は、その補完結果である。図１５（ｂ）に示したシフトによる余白は、隣接する画像のはみだし画素を用いて上書きされている。
【００７１】
（画素シフト部１８）
画素シフト部１８は、全周囲画像メモリ１３から横512×縦512の画素からなる画像データを取り出し、また、全周囲画像メモリ１６から横512×縦512の画素からなるデプスデータを取り出して、この横512×縦512のデプスデータをベースにして横512×縦512の画素の集りに対する画素シフトを実行する。画素シフトを実行するにあたって、どのような視差を各画素に設定するかを述べる。デプス画像の座標(x,y)に存在する画素において、視点からの奥行きがDepth(x,y)である場合、デプス画像において座標(x,y)に存在する輝度Y(x,y)から奥行きDepth(x,y)への変換は、例えば、以下の数式に基づいてすることができる。
(数式)
Y(x,y)＝255-(log(Depth(x,y)+1)×100)
こうして求めた奥行きDepth(x,y)を、ディスプレイの画面サイズに応じた画素数offset(x,y)に変換することで画素の輝度を適切な視差に変換することができる。
【００７２】
DIBRでは、画像を構成する複数の画素のうち、任意の座標(x,y)に位置するものの座標を水平方向に移動するにあたって、対応するデプス画像において座標(x,y)に存在する画素の輝度Y(x,y)によって導かれる奥行きDepth(x,y)から、その座標(x,y)に固有のoffset(Depth(x,y),y)を求めて、このoffset(Depth(x,y),y)を移動量として使用することで他視点からの視点画像を得る。図１６（ａ）は、デプス画像において座標(x,y)に存在する画素の奥行きDepth(x,y)を示す。Depth(x,y)は、図１６（ｂ）におけるPix(x,y)と位置的に対応する。図１６（ｂ）は、画像メモリにおいて座標(x,y)に存在する画素Pix(x,y)を示す。図１６（ｃ）は、左目テクスチャを生成するにあたって、画素Pix(x,y)がどれだけシフトするかを示す。図１６（ｃ）では、全周囲画像メモリ１８において、Pix(x,y)は水平方向にOffset(Depth(x,y))だけ変位している。そのため、Pix(x+Offset(Depth(x,y))、y)に位置することになる。Offset(Depth(x,y))とは、全周囲画像において、x,y座標に一意なオフセットであり、デプス画像における対応画素の輝度によるDepth(x,y)から設定される。
【００７３】
2以上の視点画像を作成するにあたって、画素が水平方向にどれだけ変位するかは、画像の画素毎に異なることになる。デプス画像における画素の輝度レベルと、シフト量である画素数との対応付けは上記数式から導くことができる。その対応付けの一例として、図１６（ｃ）のように設定することができる。
【００７４】
図１６（ｃ）は、Y(x,y)における０〜２５５の輝度範囲と、１画素〜１６画素の単位のオフセットとの対応付けを示す。本図では、0〜63の輝度範囲に0〜2画素の範囲のオフセットを、64〜127の輝度範囲に3〜4画素の範囲のオフセットを割り当て、128〜191の輝度範囲に5〜8画素のオフセットを、192〜255の輝度に9〜16画素のオフセットを割り当てるものである。つまり明るい部分の輝度範囲に割り当てるべき視差を大きくし、暗い部分の輝度範囲に割り当てるべき視差を小さくするという非線形な対応付けがなされている。
【００７５】
図１７は、画素レベルのシフトにより、左目テクスチャ、右目テクスチャにおいてどのような視差がもたらされるかを示す。図１７（ａ）はデプス画像、図１７（ｂ）は左目テクスチャメモリの格納内容、図１７（ｃ）は、右目テクスチャメモリの格納内容を示す。
【００７６】
Pix(x1,y)は、図１７（ｂ）において並ぶ3つのビルのうち、一番手前のビルの画素である。Pix(x2,y)は、3つのビルのうち２番目のビルの画素である。Pix(x3,y)は、3つのビルのうち3番目のものの画素である。
【００７７】
図１７（ａ）は、デプス画像の一例であり、左目テクスチャにおける画素Pix(x1,y)、Pix(x2,y)、Pix(x3,y)に与えられる奥行きを示す。Depth(x1,y)は、左目テクスチャにおけるPix(x1,y)の奥行きを示す。Depth(x2,y)は、左目テクスチャにおけるPix(x2,y)の奥行きを示す。Depth(x3,y)は、左目テクスチャにおけるPix(x3,y)の奥行きを示す。
【００７８】
図１７（ｃ）の下側は、DIBRにおいて各画素に与えられるオフセットを示す。Offset(Depth(x1,y),y)は、左目テクスチャにおけるPix(x1,y)に与えられるオフセットを示す。Offset(Depth(x2,y),y)は、左目テクスチャにおけるPix(x2,y)に与えられるオフセット、Offset(Depth(x3,y),y)は、左目テクスチャにおけるPix(x3,y)に与えられるオフセットを示す。本図に示すように、Depth(x1,y)>Depth(x2,y)>Depth(x3,y)の関係があるから、一番手前にあるビルを構成する画素に対して一番大きな視差が与えられ画面から大きく飛出すことになる  以上のようにDIBRでは、デプス画像における対応画素の輝度に応じて画素の変位量は異なるものになるから、算術演算器を用いて、デプス画像における各画素の輝度からオフセットを算出すれば、ハードウェア素子により、画素シフト部１８を実装することができる。以上が画素シフト部１８についての説明である。続いて、表示領域バッファ１９の詳細について説明する。
【００７９】
（表示領域バッファ１９）
表示領域バッファ１９は、画素シフト部１８のDIBRの処理結果となる画素の集りのうち、シフト後の座標が、表示領域内になるものを格納する。オリジナルの画像データの解像度が横M×縦Nである場合、画像データの左上座標を原点(0,0)とした座標系において、X座標が0からM-1までの画素、Y座標が0からN-1までの画素が「表示領域」となる。そうすると、シフト後のX座標が、M以上となる画素を除外し、X座標が0からM-1までの範囲となる画素をこの表示領域バッファ１９に格納する。シフトの対象が横512×縦512である場合、シフト後のX座標が、512以上となる画素を除外し、X座標が0から511までの範囲となる画素がこの表示領域バッファ１９に格納されることになる。
【００８０】
（領域外バッファ２０）
領域外バッファ２０は、画素シフト部１８のDIBRの処理結果となる画素の集りのうち、シフト後の座標が、表示領域外になるもの、つまり"はみ出し画素"を格納する。オリジナルの画像データの解像度が横M×縦Nである場合、シフト後のX座標が、M以上となる画素が"はみだし画素"としてこの領域外バッファ２０に格納されることになる。
【００８１】
（境界処理部２１）
境界処理部２１は、DIBR処理による画素シフトで不完全になった画像の境界に対して補正を行う。画像の境界処理とは、次に隣接する画像データを画素シフト部１８が処理する際、領域外バッファ２０に格納されている表示領域範囲外の画素を用い、画像端部で欠落している画素を埋める処理をいう。
【００８２】
（左目テクスチャメモリ２２、右目テクスチャメモリ２３）
右目テクスチャメモリ２２、左目テクスチャメモリ２３のペアは、ストリートビューDIBR実行部１７がDIBRを行うことで得られた左目テクスチャと、右目テクスチャとを格納する。
【００８３】
（CG処理部２４）
CG処理部２４は、モデリングデータを構成する三次元座標を三次元モデリング空間に配置して、その三次元モデリング空間における三次元座標をビューポートに投影する処理を行う。かかる処理には、座標・視野変換、照度計算(テクスチャマッピング処理)、ビューポート処理がある。
【００８４】
（モデリングデータ格納部２５）
モデリングデータ格納部２５は、球体モデル及びGUI部品の形状を規定するモデリングデータを格納する。
【００８５】
（座標変換部２６）
座標変換部２６は、視点をカメラにし、カメラの方向やズームレベルを指定することにより、立体物を投影するスクリーンを決定する。その後、球面モデルのモデリングデータを規定する三次元座標を三次元モデリング空間におけるワールド座標に変換する。ここでの座標変換は、三次元モデリング空間におけるカメラ位置を原点とし、カメラから見た座標系でのワールド座標に、モデリングデータを規定する三次元座標を変換するというものである。
【００８６】
（照度計算部２７）
照度計算部２７は、三次元モデリング空間において設定された光源位置から照射される光を立体物に当てたときの各頂点における照度の計算を行う。
【００８７】
（テクスチャマッピング部２８）
テクスチャマッピング部２８は、3Dモデリング空間上に左目用と右目用の２つの球体を用意し、背景画像を変換することで得られた2以上の左目用テクスチャ、右目用テクスチャを三次元モデリング空間における球体モデルの内側表面にマッピングする。
【００８８】
（ビューポート変換部２９）
ビューポート変換部２９は、ディスプレイの解像度等を含んだディスプレイ情報に従い、三次元モデリング空間における3次元座標の頂点座標を2次元のスクリーン座標に変換することでビューポート画像の抽出を行う。抽出される画像には、左目ビューポート画像、右目ビューポート画像があり、ビューポート変換部はこれらを、それぞれ左目プレーンメモリ６、右目プレーンメモリ７に出力する。位置方向判定部２からの指示が、カレント視点位置に変化はなく、カレント視線方向のみの変化であった場合、テクスチャマッピング部はテクスチャマッピング処理をスキップし、ビューポート変換部のみがカレント視線方向変化に伴うビューポートの再抽出及びプレーンメモリへの再出力のみを行う。
【００８９】
以上が描画制御部５についての説明である。
【００９０】
図１８は、全周囲画像メモリ１３、デプス画像メモリ、左目テクスチャメモリ２２、右目テクスチャメモリ２３の内部構成と、画素シフト部１８、表示領域バッファ１９、領域外バッファ２０との関係を示す。本図では、メモリの記憶領域が格子状になっている。この格子のそれぞれは、メモリの記憶素子における記憶内容のそれぞれを意味する。記憶素子の記憶内容として画素値が存在する。この画素値は、輝度Y,赤色差Cr,青色差Cb,透明度αから構成される。
【００９１】
上段にデプス画像メモリ１６、全周囲画像メモリ１３を描き、下段に左目テクスチャメモリ２２、右目テクスチャメモリ２３、中段には画素シフト部１８、表示領域バッファ１９、領域外バッファ２０を描いている。全周囲画像メモリ１３におけるA,B,C,D,E,F,Gは、全周囲画像を構成する横方向の7つの画像であり、各画像が縦512×横512画素の規模をもつ。左上の左目テクスチャメモリ２２におけるA(dp),B(dp),C(dp),D(dp),E(dp),F(dp),G(dp)は、縦512×横512画素の規模のグレースケールである。左下の左目テクスチャメモリ２２の格納内容において、A(L),B(L),C(L),D(L),E(L),F(L),G(L)は、左方向のシフト結果である。右下の右目テクスチャメモリ２３の格納内容において、A(R),B(R),C(R),D(R),E(R),F(R),G(R)は、右方向のシフト結果である。
【００９２】
全周囲画像メモリ１３に格納されている縦４×横７の全周囲画像から、縦512×横512画素の画素からなる画像を取り出すと共に、デプス画像メモリに格納されているデプス画像から、対応する縦512×横512画素の画素からなるグレースケールを取り出す。そして、取出された画像と、グレースケールとをベースにしたDIBRを実行して、その結果を左目テクスチャメモリ２２、右目テクスチャメモリ２３に格納してゆき、左目テクスチャメモリ２２、右目テクスチャメモリ２３上で順次、左目テクスチャ、右目テクスチャを形成してゆくというものである。
【００９３】
図１９は、デプス画像メモリ、全周囲画像メモリ１３、左目テクスチャメモリ２２間のデータフローを示す。本図は、図１８をベースとして作図されており、このベースとなる構成と比較して、画像データの行き来を示す矢印が追加されている点が異なる。図１９（ａ）において矢印df1,df2は、デプス画像メモリからのデプス画像A(dp)及び全周囲画像メモリ１３からの画像Aの読み出しを模式的に示す。矢印df3,df4は、表示領域バッファ１９、領域外バッファ２０から左目テクスチャメモリ２２への画像A(L)の書き込みを模式的に示す。
【００９４】
図１９（ｂ）において矢印df5,df6は、デプス画像メモリからのデプス画像B(dp)及び全周囲画像メモリ１３からの画像Bの読み出しを模式的に示す。矢印df7,df8は、表示領域バッファ１９、領域外バッファ２０から左目テクスチャメモリ２２への画像B(L)の書き込みを模式的に示す。
【００９５】
図２０は、デプス画像メモリ、全周囲画像メモリ１３、左目テクスチャメモリ２２間のデータフローを示す。本図は、図１８をベースとして作図されており、このベースとなる構成と比較して、画像データの行き来を示す矢印が追加されている点が異なる。図２０（ａ）において矢印df9,df10は、デプス画像メモリからのデプス画像A(dp)及び全周囲画像メモリ１３からの画像Aの読み出しを模式的に示す。矢印df11,df12は、表示領域バッファ１９、領域外バッファ２０から右目テクスチャメモリ２３への画像A(R)の書き込みを模式的に示す。
【００９６】
図２０（ｂ）において矢印df13,df14は、デプス画像メモリからのデプス画像B(dp)及び全周囲画像メモリ１３からの画像Bの読み出しを模式的に示す。矢印df15,df16は、表示領域バッファ１９、領域外バッファ２０から右目テクスチャメモリ２３への画像B(R)の書き込みを模式的に示す。以上のように全周囲画像メモリ１３に格納された全周囲画像は、縦512×横512画素毎に読み出されて画素シフト部１８に供され、縦512×横512画素毎にDIBRが実行されることがわかる。
【００９７】
全周囲画像を構成する個々の画像に対するDIBRでどのように余白が生じるか、またこの余白がどのようにして補完されるかについて図２１〜図２３を参照しながら説明する。
【００９８】
シフトによる余白の補完は、ある画像に対して画素シフトが施された際、画像の表示領域から発生したはみ出し画素を一旦領域外バッファ２０に格納しておき、次の画像について画素シフトが施された際、バッファに格納されたはみ出し画素群を、その画像についてのシフト余白の補完に用いるというものである。
【００９９】
（左目テクスチャ、右目テクスチャの形成過程）
上記構成要素による処理過程を経て、左目テクスチャ、右目テクスチャが得られる。素材から最終成果物が得られるまでの途中過程のうち、トピックになるものを模式的に描いたのが図２１〜図２３である。
【０１００】
図２１は、左方向のシフト時における全周囲画像メモリ１３−表示領域バッファ１９、領域外バッファ２０−左目テクスチャメモリ２２間のデータフローを示す。図２０（ａ）における矢印uf1は、DIBRによる画素シフトを示す。これにより画像Aは全体的に右方向にシフトし、画像Aの右端にはシフトによる余白が発生する。矢印uf2は、DIBRにより表示領域バッファ１９からはみ出した画素の領域外バッファ２０への書き込みを示す。矢印uf3は、領域外バッファ２０から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、領域外バッファ２０内の画素は、G(L)の一部として左目テクスチャメモリ２２に格納されることがわかる。矢印uf4は、表示領域バッファ１９から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、表示領域バッファ１９内における画像Aの本体は、余白付きでA(L)の一部として左目テクスチャメモリ２２に格納されることがわかる。
【０１０１】
図２１（ｂ）における矢印uf5は、DIBRによる画素シフトを示す。これにより画像Bは全体的に右方向にシフトし、画像Bの右端にはシフトによる余白が発生する。矢印uf6は、DIBRにより表示領域バッファ１９からはみ出した画素の領域外バッファ２０への書き込みを示す。矢印uf7は、領域外バッファ２０から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、領域外バッファ２０内の画素は、A(L)の一部として左目テクスチャメモリ２２に格納されることがわかる。矢印uf8は、表示領域バッファ１９から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、表示領域バッファ１９内における画像Bの本体は、余白付きでB(L)の一部として左目テクスチャメモリ２２に格納されることがわかる。
【０１０２】
図２１（ｃ）における矢印uf9は、DIBRによる画素シフトを示す。これにより画像Cは全体的に右方向にシフトし、画像Cの右端にはシフトによる余白が発生する。矢印uf10は、DIBRにより表示領域バッファ１９からはみ出した画素の領域外バッファ２０への書き込みを示す。矢印uf11は、領域外バッファ２０から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、領域外バッファ２０内の画素は、B(L)の一部として左目テクスチャメモリ２２に格納されることがわかる。矢印uf12は、表示領域バッファ１９から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、表示領域バッファ１９内における画像Cの本体は、余白付きでC(L)の一部として左目テクスチャメモリ２２に格納されることがわかる。
【０１０３】
図２２、図２３は、左目テクスチャメモリ２２、右目テクスチャメモリ２３内で右目テクスチャ、左目テクスチャが形成されてゆく過程を示す。その形成の過程の前提としては、図２２（ａ）に示されているような5枚の画像を選ぶ。図２２（ａ）は、画像Gに対してDIBRが施され、G(R)が得られる段階を示す。図２２（ｂ）は、画像Fに対してDIBRが施され、F(R)が得られる段階を示す。図２２（ａ）は、画像Eに対してDIBRが施され、E(R)が得られる段階を示す。図２２（ｂ）は、画像Dに対してDIBRが施され、D(R)が得られる段階を示す。図２２（ａ）（ｂ）、図２３（ａ）（ｂ）は何れも共通の記載になっており、第１段目は全周囲画像メモリ１３の格納内容、第２段目は表示領域バッファ１９、領域外バッファ２０の格納内容、第３段目は左目テクスチャメモリ２２の格納内容を示す。
【０１０４】
第２段目において、DIBRにおけるシフトに伴う余白がそのシフト方向とは反対側の端部に発生する。領域外バッファ２０には、このシフトによって、表示領域から追いやられた画素が格納される。第３段目では、領域外バッファ２０に格納されたはみ出し画素群が、その直後の画像に対するシフトで生じた余白の上書きに使用されていることがわかる。
【０１０５】
これらG(R),F(R),E(R),D(R)の生成の途中過程ではシフトによる余白が発生していることがわかる。このシフトによる余白は、次の画像のDIBRの実行にあたって、表示領域の右端からはみ出すことになった画素によって上書きされる。
【０１０６】
図２２は、左方向のシフト時における全周囲画像メモリ１３−表示領域バッファ１９、領域外バッファ２０−左目テクスチャメモリ２２間のデータフローを示す。図２０（ａ）における矢印tf1は、DIBRによる画素シフトを示す。これにより画像Gは全体的に左方向にシフトし、画像Gの左端にはシフトによる余白が発生する。矢印tf2は、DIBRにより表示領域バッファ１９からはみ出した画素の領域外バッファ２０への書き込みを示す。矢印tf3は、領域外バッファ２０から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、領域外バッファ２０内の画素は、A(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。矢印tf4は、表示領域バッファ１９から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、表示領域バッファ１９内における画像Gの本体は、余白付きでG(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。
【０１０７】
図２２（ｂ）における矢印tf5は、DIBRによる画素シフトを示す。これにより画像Fは全体的に左方向にシフトし、画像Fの左端にはシフトによる余白が発生する。矢印tf6は、DIBRにより表示領域バッファ１９からはみ出した画素の領域外バッファ２０への書き込みを示す。矢印tf7は、領域外バッファ２０から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、表示領域バッファ１９内の画素は、G(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。矢印tf8は、表示領域バッファ１９から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、領域外バッファ２０内における画像Fの本体は、余白付きでF(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。
【０１０８】
図２３（ａ）における矢印tf9は、DIBRによる画素シフトを示す。これにより画像Eは全体的に左方向にシフトし、画像Eの左端にはシフトによる余白が発生する。矢印tf10は、DIBRにより表示領域バッファ１９からはみ出した画素の領域外バッファ２０への書き込みを示す。矢印tf11は、領域外バッファ２０から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、領域外バッファ２０内の画素は、F(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。矢印tf12は、表示領域バッファ１９から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、表示領域バッファ１９内における画像Eの本体は、余白付きでE(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。
【０１０９】
図２３（ｂ）における矢印tf13は、DIBRによる画素シフトを示す。これにより画像Dは全体的に左方向にシフトし、画像Dの左端にはシフトによる余白が発生する。矢印tf14は、DIBRにより表示領域バッファ１９からはみ出した画素の領域外バッファ２０への書き込みを示す。矢印tf15は、領域外バッファ２０から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、領域外バッファ２０内の画素は、E(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。矢印tf16は、表示領域バッファ１９から左目テクスチャメモリ２２への画素の書き込みを示す。これにより、表示領域バッファ１９内における画像Dの本体は、余白付きでD(R)の一部として左目テクスチャメモリ２２に格納されることがわかる。
【０１１０】
＜汎用CPU上での動作を前提としたソフトウェア実装＞
本実施形態に係る画像描画装置は、上述したような画像描画装置における各構成要素を、ASIC等のハードウェア集積素子で具現化することで工業的に生産することができる。このハードウェア集積素子に、CPU、コードROM、RAMといった汎用的なコンピュータシステムのアーキテクチャを採用する場合、上述したような各構成要素の処理手順をコンピュータコードで記述したプログラムをコードROMに予め組みこんておき、ハードウェア集積素子内のCPUに、このプログラムの処理手順を実行させねばならない。
【０１１１】
汎用的なコンピュータシステムのアーキテクチャを採用する場合、ソフトウェア実装で必要となる処理手順について説明する。
【０１１２】
図２４は、レンダリングの立体視化手順を示すフローチャートである。メインフロー。ステップＳ１においてレンダリングの地図におけるカレントの視点位置(緯度、経度)と、画面上に表示するカレントの視線方向(水平角度及び垂直角度)を決定し、ステップＳ２において地図上のカレント視点位置に対応する画像取得要求を作成し、画像取得要求をサーバ１００１に送信する。ステップＳ３ではストリートビューファイルの受信待ちを行い、ストリートビューファイルを受信すれば、ステップＳ４において全周囲画像と、これに対応するデプス画像を取得する。
【０１１３】
ステップＳ５では、垂直方向の４枚の画像のうち、何れか一枚をカレント画像とする。その後、ステップＳ６〜ステップＳ８のループに移行する。このループは、カレント画像に対して水平360度の多視点画像の生成を実行し(ステップＳ６)、カレント画像が垂直方向の最後の画像であるかどうかを判定して(ぷ７)、そうでなければ、縦方向の次の画像をカレント画像とする処理(ステップＳ８)を繰り返すものである。ここで、カレント画像が垂直方向の最後の画像であれば、ステップＳ７がYesとなり、このループを抜ける。
【０１１４】
以降、ステップＳ９において3Dモデリング空間に用意された左目用の球体モデル、右目用の球体モデルに対してDIBRで得られた右目テクスチャ、左目テクスチャを貼りつける。ステップＳ８では、球体モデルの中心から視線方向を見たときの投影画像を左目用プレーン、右目用プレーンに書き込む。
【０１１５】
図２５は、水平360度画像生成処理のフローチャートである。ステップＳ１３は、横７枚の画像のうち、カレントの視線方向にある画像を基点画像とする。ステップＳ１４では、基点画像をカレント画像として、ステップＳ１５において、カレント画像と、これに対応するデプス画像とを抽出し、ステップＳ１６において、デプス画像に示される個々の画素の奥行きをもつように、カレント画像の個々の画素の座標を水平方向にシフトする。ステップＳ１７では、シフトにより領域外の座標を有することになった画素群を領域外バッファに書き込む。以降、ステップＳ１８〜ステップＳ２２のループを実行する。このループは、ステップＳ１８でカレント画像にシフト方向に隣接している画像を、カレント画像に設定して、ステップＳ１９においてデプス画像に示される個々の画素の奥行きをもつようにカレント画像の個々の画素座標を水平方向にシフトし、ステップＳ２０において、シフトにより領域外になった画素を領域外バッファに書き込む。その後、ステップＳ２１において、カレント画像のうち、シフト方向とは反対側の端部に、領域外バッファにおける画素群を追加する。ステップＳ２２は、このループの終了条件を規定したものであり、カレント画像が基点画像に等しいかどうかを判断する。もし同じでなければ、ステップＳ２２がNoになってループを継続する。同じであれば、ステップＳ２３に移行して、カレント画像のうち、シフト方向とは反対側の端部に、領域外バッファにおける画素群を追加してステップＳ１２に移行する。
【０１１６】
ベースとなる左目用の全周囲画像から本図のフローチャートに基づき右目用の全周囲画像を生成すると、生成される右目用全周囲画像も２８枚の部分画像をつなぎ合わせても画素欠落のないシームレスな全周囲画像となる。これらを球面上にテクスチャとしてマッピングし、ユーザが見たい方向の投影画像を左右プレーンに出力することで、シームレスな全周囲立体視を実現することが可能となる。
【０１１７】
以降、図２４、図２５のフローチャートによる各構成要素の動作を説明する。まず、ユーザ操作検知部１、位置方向判定部２により、表示すべき全周囲画像の地図上の位置（緯度及び経度）と、画面上に表示する方向（水平角度及び垂直角度）を決定する（S１）。続いて、全周囲画像取得部１１によりステップS１で決定した地図上の位置に対応する全周囲画像を取得する（S２）。ステップS２で取得される１地点分の全周囲画像は縦４枚、横７枚の計２８枚の部分画像から構成され、各画像１枚は縦５１２画素、横５１２画素の画素数を持つ。これらが左目用の全周囲画像となる。
【０１１８】
次に、デプス画像取得部１４により、ステップS２で取得した全周囲画像に対応するデプス画像を取得する（S３）。デプス画像は、立体空間における各画素の奥行きを示すものであり、各画素の奥行きを８ビットの輝度で表現している。デプス画像自身も画像として構成されており、全周囲画像と同様、１地点につき、縦４枚、横７枚の計２８枚のグレースケール画像から構成されている。
【０１１９】
ステップS２及びステップS３でベースとなる全周囲画像とデプス画像を取得した後、垂直方向４枚の画像のうち、いずれか1枚を選び、図１８に示したフローチャートに基づき水平３６０度のステレオ画像生成を行う（S５）。垂直方向４枚からの選択方法としては、表示すべき全周囲画像の垂直角度に近い位置の画像を選ぶのが望ましい。視点方向にある画像から先に処理していくことで、残りの画像が処理中でも画面上に表示することが可能となる。
【０１２０】
垂直方向に４枚の画像があるため、水平３６０度の画像グループが４種類存在することになる。すべてのグループに対し、ステレオ画像の生成処理を完了したと判断すれば（S７でYes）、続いてテクスチャマッピングを行う（S９）。この場合におけるテクスチャマッピングは、3Dモデリング空間上に用意された左目用と右目用の２つの球体に対し、ベースの全周囲画像及び境界処理部２１によって生成されたステレオ画像を、それぞれ左目用、右目用の球体面上に貼り付ける処理となる。
【０１２１】
ステップS９におけるテクスチャマッピングが完了すれば、球体の中心から位置方向判定部２により指定された視点方向を見たときに投影される画像を左目プレーン、右目プレーンに書き込み（S１０）、立体視対応ディスプレイにて立体視表示がなされる。
【０１２２】
図２５において、まずは、全周囲画像取得部１１より水平３６０度を構成する画像の中から基点となる画像の抽出と、抽出された基点画像に対応するデプス画像をデプス画像取得部１４から取得する（S１３〜１５）。基点となる画像は、位置方向判定部２から指示された視点方向にある画像が望ましい。視点方向にある画像から先に処理していくことで、残りの画像が処理中でも画面上に表示することが可能となる。
【０１２３】
基点となる画像が決定すると、DIBR部１７にて画素シフト処理（DIBR処理）を行う（S１６）。前述したように、DIBR処理ではシフトした画素が画像領域外にはみ出る場合があり、境界処理部２１にて、画像領域外にはみ出た画素を、画像領域外のバッファメモリに一時的に格納する（S１７）。一旦、画像領域外にはみ出た画素をバッファメモリに格納した後、再び全周囲画像取得部１１より画像の抽出、及びデプス画像取得部１４より対応するデプス画像の取得を行う。このときカレント画像として、前回DIBR処理を行った画像の左側に隣接する画像を選択する（S１８）。次に、ステップS１８で抽出されたカレント画像が、ステップS１３で抽出された基点画像と一致するかどうかを判断する（S２２）。ステップS１０４で抽出した画像が、基点画像ではない（すなわち、まだ処理が水平方向に１周３６０度分が完了していない）と判断された場合、ステップS１８で抽出した画像に対し、DIBR処理を行い、右目用の他視点からの視点画像を生成する（S１９）。
【０１２４】
次に、ステップＳ１９で得られた右目用の他視点からの視点画像に対し、現在領域外バッファメモリに格納されている画素群を、画像右側端部に追加する処理を行う（S２０）。続いて、今度はステップＳ１９のDIBR処理で領域外にはみ出した画素を領域外バッファメモリに格納する（S２１）。そして、ステップＳ１８で処理した画像の左側に隣接する画像を選択し、ステップS１８〜S２１の処理を繰り返して行う。
【０１２５】
ステップS１８〜S２１の処理を繰り返していき、ステップS２２において、ステップS１８で抽出された隣接方向の画像が、ステップS１４で抽出された基点画像と同じであると判断した場合（すなわち、水平方向に１周３６０度分の処理が完了）、現在領域外バッファメモリに格納されている画素群を、基点画像の右側端部に追加する処理を行い（S２３）、水平方向１周３６０度分の画素シフト及び境界処理を終了する。
【０１２６】
図２６は、DIBR処理だけに基づいて得られる右目用の全周囲画像と、画素シフト及び境界処理を行なって得られる右目用の全周囲画像の比較を示す図である。図１９(a)がDIBR処理に基づく画素シフトのみを行なって、画像を繋ぎ合わせて出来上がる全周囲画像である。繋ぎ合わせの部分で、不自然な絵となっているが、これは、DIBR処理で画素が画面領域外にはみ出し、それらの画素が画像端部で抜け落ちていくため、重ね合わせ部分で画素の欠落が発生し、画像をつなぎ合わせたときにシームレスに絵が表示されない。
【０１２７】
図２６(b)は、新たに画素シフト及び境界処理を施して出来上がる全周囲画像である。図２６では、DIBR処理によって画面領域外にはみ出る画素を、隣接する画像生成に活用することで、つなぎ合わせ部分における画素の欠落を防ぎ、画像のつなぎ目でもシームレスに絵を表示することが可能となる。
【０１２８】
（実施の形態２）
全周囲画像が複数の部分画像で構成されている場合におけるステレオ全周囲画像生成について述べたが、本実施形態は、全周囲画像が１枚の画像で構成されている場合におけるステレオ全周囲画像生成について述べる。かかる全周囲画像を処理するため、第１実施形態の既存の構成要素である全周囲画像取得部１１、デプス画像取得部１４、DIBR部１７、表示領域バッファ１９、領域外バッファ２０、境界処理部２１、テクスチャマッピング部２８は、以下の処理を行う。
【０１２９】
全周囲画像取得部１１は、位置方向判定部２から指示された地図上の位置における全周囲画像を、ネットワークインターフェース３を介してサーバ１０５からダウンロードするか、もしくはローカルストレージ４から画像の取得を行う。
【０１３０】
デプス画像取得部１４は、全周囲画像取得部１１が取得した全周囲画像に対応するデプス画像を、ローカルストレージ４に格納されたストリートビューファイルから取得する。図２７は、実施形態２において全周囲画像取得部１１、デプス画像取得部１４が取得する全周囲画像、デプス画像を示す。図２７（ａ）における全周囲画像は縦２０４８画素、横３５８４画素の大きな一枚の画像で形成される。対するデプス画像も、図２７（ｂ）に示すように、縦２０４８画素、横３５８４画素の大きな一枚のグレースケール画像で形成される。
【０１３１】
DIBR部１７は、全周囲画像取得部１１からベースの左目用全周囲画像を、デプス画像取得部１４からベース画像に対応するデプス画像を取得し、DIBR処理を行い、右目画像を生成する。
【０１３２】
表示領域バッファ１９は、シフトで得られた右目画像を格納する。
【０１３３】
領域外バッファ２０は、シフトにより生じたはみだし画素を格納する。
【０１３４】
境界処理部２１は、境界処理として、右端から左方向（すなわち画像中央の方向）に10ピクセル離れた位置（垂直方向としては同じ所に位置する）に埋め込む。
全周囲画像が大きな一枚の画像で形成されている場合、DIBR処理により画像端部で画素のはみ出しが発生すると、その画素は画像逆端部側に埋めるべき画素となる。なぜなら、全周囲画像が１枚の画像で形成されている場合は画像が球面上で一周するため、右端の画素と左端の画素は最終的には球面上に並べて表示することになるからである。そのため、画像の右端と左端は連続しているものと捉えると、左端で画像領域からはみ出した画素は、逆端である右端に埋められるべき画素となる。
【０１３５】
例えば、DIBR処理により左端より10ピクセル左へはみ出した画素は、境界処理部２１の境界処理により、右端から左方向（すなわち画像中央の方向）に、10ピクセル離れた位置（垂直方向としては同じ所に位置する）に埋め込まれる。図２８は、実施の形態２における、画素シフト後の画像を補正し、ステレオ画像を生成する様子を示す図である。全周囲画像が大きな１枚の画像で形成されている場合、DIBR処理により画像端部で画素のはみ出しが発生すると、その画素は画像逆端部側に埋めるべき画素となる。なぜなら、全周囲画像が１枚の画像で形成されている場合は画像が球面上で１周するため、右端の画素と左端の画素は最終的には球面上に並べて表示することになるからである。そのため、画像の右端と左端は連続しているものと捉えると、左端で画像領域からはみ出した画素は、逆端である右端に埋められるべき画素となる。
【０１３６】
例えば、DIBR処理により左端より１０ピクセル左へはみ出した画素は、境界処理により、右端から左方向（すなわち画像中央の方向）へ１０ピクセル離れた位置（垂直方向としては同じ所に位置する）に埋め込まれる。
【０１３７】
テクスチャマッピング部２８は、DIBRで得られた左目テクスチャ、右目テクスチャを球面モデルにマッピングする。図２９は、テクスチャマッピング部２８によるテクスチャマッピングを示す。上段における左目テクスチャ、右目テクスチャは、DIBR部１７のDIBRで得られたものであり、これらが矢印tm1、tm2に示すように下段の左目用球面モデル、右目用球面モデルの内側表面に貼付けられていることがわかる。かかる貼付けがなされた左目用球面モデル、右目用球面モデルに対してビューポート抽出がなされる。
【０１３８】
改良された構成要素の説明に後説明として、上記改良がなされた場合の既存の構成要素の動作について説明する。つまり、表示領域バッファ１９に格納される全周囲画像が実施形態１のフローチャートによりどのように処理されるかについて説明する。
【０１３９】
図２４において、一枚の全周囲画像が対象になった際の動作は以下の通りである。まず、ユーザ操作検知部１、位置方向判定部２により、表示すべき全周囲画像の地図上の位置（緯度及び経度）と、画面上に表示する方向（水平角度及び垂直角度）を決定する（S１）。続いて、全周囲画像取得部１１によりステップS４０１で決定した地図上の位置に対応する全周囲画像を取得する（S２）。ステップS４０２で取得される１地点分の全周囲画像は縦２０４８画素、横３５８４画素の大きな一枚の画像で形成される。これが左目用の全周囲画像となる。次に、デプス画像取得部１４により、ステップS４０２で取得した全周囲画像に対応するデプス画像を取得する（S３）。デプス画像は、立体空間における各画素の奥行きを示すものであり、各画素の奥行きを８ビットの輝度で表現している。デプス画像自身も画像として構成されており、全周囲画像と同様、縦２０４８画素、横３５８４画素の大きな一枚のグレースケール画像として形成される。
【０１４０】
ベースとなる全周囲画像とデプス画像を取得した後、に示したフローチャートに基づきステレオ画像生成を行う（S５）。ステップS４０４でステレオ画像生成を終えた後、続いてテクスチャマッピングを行う（S７）。この場合におけるテクスチャマッピングは、3Dモデリング空間上に用意された左目用と右目用の２つの球体に対し、ベースの全周囲画像及び境界処理部２１によって生成されたステレオ画像を、それぞれ左目用、右目用の球体面上に貼り付ける処理となる。ステップS７におけるテクスチャマッピングが完了すれば、球体の中心から位置方向判定部２により指定された視点方向を見たときに投影される画像を左目プレーン、右目プレーンに出力し（S８）、立体視対応ディスプレイにて立体視表示がなされる。
【０１４１】
表示すべき全周囲画像の抽出と、抽出された画像に対応するデプス画像をデプス画像取得部１４から取得する（S１５）。次に、ステップS２で取得された画像とデプス画像を元にDIBR部１７にて画素シフト処理（DIBR処理）を行う（S１６）。
【０１４２】
DIBR処理ではシフトした画素が画像領域外にはみ出る場合があり、境界処理部２１にて、画像領域外にはみ出た画素を、画像領域外のバッファメモリに一時的に格納する（S１７）。
【０１４３】
全周囲画像であれば、対象となる画像は一枚であるから、カレント画像に隣接する画像は、必ず自分自身となる。よって、全周囲画像については、1つの全周囲画像が基点画像及びカレント画像として決定された後、ステップＳ１８において、カレント画像に隣接する画像をカレント画像として決定しようとすると、自分自身が再度、カレント画像として決定されることになる。よって、1つ前のカレント画像が新たにカレント画像として決定された後、ステップS２２に移行することになる。ステップS２２は、新たなカレント画像が基点画像かどうかの判定である。全周囲画像は一枚であるから、再度決定されたカレント画像は、必ず基点画像と一致する。よってこの場合、ステップS２２がYesになりステップS２３に移行する。
【０１４４】
ステップS２３では、ステップS１６のDIBR処理で得られた右目用の他視点からの視点画像に対し、現在領域外バッファメモリに格納されている画素群を、はみ出し元の画像端部とは逆の端部へ埋め込む。かかる処理を、左目及び右目のそれぞれについて繰り返すことで、画素シフト及び境界処理を終了する。
【０１４５】
以上により、ベースとなる左目用の全周囲画像から１枚の大きな画像から形成されていたとしても、生成される右目用全周囲画像は画素欠落のないシームレスな全周囲画像となる。これらを球面上にテクスチャとしてマッピングし、ユーザが見たい方向の投影画像を左右プレーンに出力することで、シームレスな全周囲立体視を実現することが可能となる。
【０１４６】
(実施の形態３)
本実施形態は、これまでの実施形態で述べた画像描画装置をどのようなハードウェア構成で実現するかを開示する。
【０１４７】
まず初めに、CG処理部についてのハードウェア構成を説明する。図３０は、CG処理部のハードウェア構成を示す。本図に示すように画像描画装置は、インターフェイス２０１、ビデオデコーダ回路２０２、テクスチャメモリ２０３、コードROM２０４、CPU２０５、ワークメモリ２０６、GPU２０７、フレームメモリ２０８から構成される。
【０１４８】
インターフェイス２０１は、ビルドインメディアやリムーバブルメディアのドライブとのインターフェイスである。
【０１４９】
ビデオデコーダ２０２は、インターフェイス２０１を通じて読み出された背景画像やデプス画像をデコードする専用回路である。
【０１５０】
テクスチャメモリ２０３は、ビデオデコーダ回路２０２のデコードで得られた非圧縮の背景画像を格納する。
【０１５１】
コードROM２０４は、これまでのフローチャートで述べたプログラムを構成するコード列を格納している。
【０１５２】
CPU２０５は、コードROM２０４に格納されたコード列を読み出し、処理することで、これまでの実施形態で述べた処理を実現する。
【０１５３】
ワークメモリ２０６は、コードROM２０４が処理を行う際に、変数や配列の格納場所として使用される。
【０１５４】
GPU２０７は、テクスチャマッピング等のグラフィクス処理のための専用処理回路である。
【０１５５】
フレームメモリ２０８は、GPU２０７が処理のために使用するメモリである。
【０１５６】
図３１は、GPUの内部構成を示す図である。
【０１５７】
Xステージボード８００は、X（Transformation, Xformation)ステージでの処理を実現するものであり、HIP８０１、GED８０２、ディスプレイリストキャッシュ８０３、SIMDチップ ８０４a,b,c,dを具備している。X（Transformation）ステージの処理は、おおまかに言うと二つある。一つは、三次元の各頂点データ(x, y, z)を二次元のスクリーン座標に変換する処理、二つ目は、各頂点に関して、光源や材質情報をもとに明るさ（色）を計算する照光（lighting）計算処理である。この二つ（Transformation and Lighting）の処理を総称してT&L 処理あるいはTnL 処理と呼ぶ。
【０１５８】
HIP（Host Interface Processor）８０１は、入力のOpenGLAPIコールを解釈して演算処理に適した形式に変換するASIC（Application Specific Integrated Circuit）である。
【０１５９】
GED（GeometryElement Distributor）８０２は、各頂点データを、４つある次段のSIMDチップのうち処理待ちの状態にあるものに振り分ける役割を果たす。
【０１６０】
ディスプレイリストキャッシュ８０３は、OpenGLAPIコールをグループ化したディスプレイリストを格納しておくキャッシュメモリである。よく使う一連のOpenGLAPIコールをディスプレイリストにしておくと、CPU からXステージボードに転送するデータ量を大幅に減らすことができる。
【０１６１】
SIMDチップ ８０４a,b,c,dは、ASIC で実現された1 チップのプロセッサで、FPU（浮動小数点演算ユニット）を3 系統持ち、マイクロコード格納用のキャッシュとデータキャッシュを備えている。一つのFPU には二つの演算器が含まれている。一つは通常の浮動小数点ALU（ArithmeticLogic Unit）で、もう一つは浮動小数点乗算器である。本ボードではこのSIMDチップを4 個搭載している。FPU は12 系統が並列で動作するため、同時に12 個の頂点データ(x, y, z)の処理を並列で行うことができる。
【０１６２】
SIMDチップでの処理内容（座標変換や照光計算のアルゴリズム）は、マイクロコードによって記述されている。演算回路はチップ上のキャッシュに記憶されたマイクロコードにしたがって動作する。マイクロコードはシステム起動時にキャッシュにロードされる。SIMDチップでの演算結果はFIFO（First-In First-Out）メモリに集められ、Xステージボード全体の出力としてTriangle Bus と呼ばれるバスに転送される。各頂点データは、スクリーン座標系上の座標(x, y)と奥行き情報z、照光計算の結果である(r, g, b)、透明度情報のa、法線ベクトル(nx, ny, nz)、それとテクスチャ座標(s, t)を含む。
【０１６３】
また、次のS ステージでの計算効率をよくするための前処理も本ボードで行われる。代表的な前処理はとして裏面カリングがある。裏面カリングは、ウィンドウ座標系に変換したときに裏向きになっている三角形を検出し、そのような三角形については頂点データをTriangle Bus に出力しないようにする処理である。以上がX ステージボードの処理である。
【０１６４】
Sステージボード８０５について説明する。Sステージボード８０５は4 種類のASIC チップ（TG８０６, PG８０７, TF８０８, IMP８０９）から構成される。S（Scan conversion）ステージでの処理は、三角形の内部の各画素を塗りつぶすラスタライズ処理、隠面消去処理やステンシルマスク処理、霧の効果の処理などが含まれる。
【０１６５】
ラスタライズ処理において重要な機能が、球面ストリップに全周囲画像を貼りつけるというテクスチャマッピングである。テクスチャマッピングでは、明るさ(r, g, b)を補間で求める代わりに、テクスチャ座標(s, t)を補間した結果からテクスチャメモリに格納されているテクスチャ画像のアドレスを計算して適切な画素を読み出し、その明るさ(r, g, b)をフラグメントの明るさデータとする。
【０１６６】
Sステージボードの入力は、XステージボードからTriangle Bus を通じて与えられる三角形各頂点におけるフラグメント形式のデータ（スクリーン座標(x, y, z)、テクスチャ座標(s, t)、明るさ(r, g,b)、透明度a、法線ベクトル(nx, ny, nz)）である。
【０１６７】
TG（Texture Generator）チップ ８０６は、三角形の塗りつぶしを行い、画素ごとのテクスチャ座標(s, t)の補間結果を出力し、テクスチャメモリのアドレスを生成してテクスチャ画素（テクセル(texel)と呼ばれる）をTF（Texture Filter）に渡す。
【０１６８】
PG（Pixel Generator）チップ ８０７では、ラスタライズ処理、すなわち三角形の塗りつぶし処理を行い画素ごとの明るさ(r, g, b)などの補間を行う。
【０１６９】
TF(Texture Filter)チップ ８０８は、PG の出力結果すなわちシェーディングされた明るさとテクスチャメモリの出力（テクセル）とを合成し、画素ごとのフラグメントをIMP（ImageMemory Processor）に渡す。
【０１７０】
IMP(IMage Proccer)８０９は、ピクセル処理フローを実現するプロセッサで、霧処理、アンチエイリアシング、アルファテスト、ステンシルテスト、デプステスト、ブレンディング、マスキング、書込バッファ選択といったピクセル処理を行い、処理結果をフレームメモリ２０８に書き込む。
【０１７１】
Dステージボード８１２は、Dステージの処理を行うボードであり、XMAP８１３、VOC８１４を具備している。
【０１７２】
XMAP(Pixel Mapping Asic)８１３は、Pixel Bus から画像データを受け取り、必要に応じてルックアップテーブルで変換し、また、カーソルの表示も行ってVideo Packet Bus に画像データを乗せる。各VOCは、自分の担当する矩形領域が記述されたVOF データに従って画像を拾い、DA コンバータでビデオ信号に変換する。
【０１７３】
VOC(Video Output Channel)回路８１４は、画像を拡大する出力回路、拡大画像の画質を良くするためのフィルタリング回路もあり、表示処理中に負荷が重くなったら動的に粗い解像度で描画し、ハードウェア拡大して元通りに表示する。Dステージボードでは最大8つの出力チャネルがあり、そのほかにHDMI出力エンコーダを備えている。
【０１７４】
次に、上述したようなハードウェア構成のGPUに対して、どのような制御をソフトウェアで指示すべきかについて説明する。
【０１７５】
図３２（ａ）は、球面モデルと、テクスチャとの対応付けを模式的に示す。左側は球面モデルを構成するグリッド、右側はテクスチャを格納するテクスチャバッファの格納内容を示す。左側の球面モデルは、横方向にＷ個に分割され、それぞれの分割部分にテクスチャが貼付けられることになる。本実施形態において、テクスチャマッピングの対象となる図形タイプを、三角形ストリップとし、この三角形ストリップの全部又は一部をテクスチャマッピングの対象とする。この三角形ストリップの全部又は一部は、頂点グリッドとして規定される。具体的にいうと、T1、T2、T3からなるグリッドがテクスチャマッピングの対象になり、T3,T4,T5,T6からなるグリッドが1つのテクスチャマッピングの対象になる。これらのグリッドを構成する交点の座標を、インデックスとして指定した上で、テクスチャマッピングを行う。
【０１７６】
図３２（ｂ）は、テクスチャマッピングを実現するためのOPEN-GLにおけるAPI呼出しの記述例である。
【０１７７】
『glVertexPointer(3, GL#FLOAT, 0, g#v);』は、三次元モデリング空間におけるグリッドの各交点の座標群を頂点群として格納するものである。引き数の"３"は、三次元モデリング空間の次元数であり、GL#FOLATは、座標群のそれぞれの座標の型が浮動小数点形式であることを示す。
【０１７８】
『glTexCoordPointer(2, GL#FLOAT, 0, g#uv);』は、三次元モデリング空間におけるグリッドに対応したテクスチャの座標群g#uvをテクスチャ座標値として格納するためのAPI呼出しである。
【０１７９】
『for(I=0;i<W;i++)』は、横方向のW個の座標のそれぞれについて、glDrawElementsの呼出しを繰り返すループ構造として規定される。
【０１８０】
『glDrawElements(GL#TRIANGLE#STRIP,(H + 1) * 2, GL#UNSIGNED#SHORT,getStaticData()->g#index[i]);』について説明する。このAPI呼出しの第１引き数は、3Dモデルの図形タイプが三角形ストリップ(GL#Triangle#Stirp)であることを指定している。第２引き数は、頂点数の指定であり、（縦分割数Ｈ＋１）×２の数値を指定している。GL#UNSIGNED#SHORTは、頂点を格納したindexの型が符号無しのshort形式であることを示す。g#index[W]は、描画順番を決めたインデックス配列であり、個々の配列要素としてグリッド交点の頂点座標が格納される。g#indexの配列要素として格納されている頂点座標に従った描画を実行することにより、テクスチャマッピングがなされることになる。
【０１８１】
先ず始めに、DIBRを実現するためのハードウェア構成(全周囲画像メモリ１３、画素シフト部１８ハードウェア構成)について説明する。
【０１８２】
全周囲画像メモリ１３は、複数のラインメモリからなり、全周囲画像データは、ラインメモリを構成する３２ビット長の記憶素子にそれぞれ格納される。そして全周囲画像データの画面上の座標は、例えば全周囲画像メモリ１３におけるラインメモリのアドレスであるROWアドレスと、ラインメモリにおける記憶素子の相対アドレスであるCOLUMNアドレスとの組みに対応する。 以上が全周囲画像メモリ１３についての説明である。続いて、画素シフト部１８のハードウェア構成について説明する。
【０１８３】
画素シフト部１８は、全周囲画像データと、デプス画像データとに対して画素シフトを施し、他視点からのテクスチャを作成する。
【０１８４】
全周囲画像における画素のX座標を変更することで左目テクスチャを作成したい場合、全周囲画像メモリ１３から左目テクスチャメモリ２２へのコピー時において、そのコピー先となる記憶素子を指示するCOLUMNアドレスを、画素数Xに相当するアドレスだけ前に調整しておく。このようなアドレス調整を前提にしてコピーを実行すれば、左目テクスチャの座標は、左方向にシフトすることになる。よって画素シフト部１８は、左目テクスチャについては、アドレス調整を伴うコピー処理で作成することができる。
【０１８５】
ストリートビューのX座標を変更することで右目テクスチャを作成したい場合、全周囲画像メモリ１３から右目テクスチャメモリ２３へのコピー時において、そのコピー先となる記憶素子を指示するCOLUMNアドレスを、画素数Xに相当するアドレスだけ後に調整しておく。このようなアドレス調整を前提にしてコピーを実行すれば、右目テクスチャの座標は、右方向にシフトすることになる。よって画素シフト部１８は、右目テクスチャについては、アドレス調整を伴うコピー処理で右目テクスチャを作成する。以上がハードウェアによる画素シフト部１８の実現である。
【０１８６】
またDIBRをラインスキャンで実現することができる。ラインスキャンとは、フレームメモリに格納された一画面分の画素(1920×1080)の集りを横1920画素ずつ読み出してデジタル映像信号に変換するものである。かかるラインスキャンは、１行分の画素データを格納しうるライン画素メモリと、フィルタ回路、パラレル／シリアル変換を行う変換回路によって実現することができる。上述したようにDIBRは、デプス画像の個々の画素の輝度を視差に変換して画素のシフトを行う処理である。ラインメモリに読み出された全周囲画像の一ライン分の画素の座標を、全周囲画像に対するデプス画像における対応するラインの奥行きに応じた画素数だけ横方向に移動すれば、デプス画像示される奥行きをもたらす他視点からの視点画像を作成することができる。
【０１８７】
＜備考＞
以上、本願の出願時点において、出願人が知り得る最良の実施形態について説明したが、以下に示す技術的トピックについては、更なる改良や変更実施を加えることができる。各実施形態に示した通り実施するか、これらの改良・変更を施すか否かは、何れも任意的であり、実施する者の主観によることは留意されたい。
【０１８８】
（デプス画像のバリエーション）
圧縮メルカトルデプス画像は、メルカトル画像に対する奥行きを示す画像をPNG形式で圧縮されたデータとしたが奥行きは圧縮ノイズが目立ってしまうため、PNG形式などのロスレス形式で圧縮することが望ましい。なお、ストリートビューファイルにおける圧縮メルカトルデプス画像はデータが冗長であるため、PNG形式での圧縮以外にも周囲の地形データおよび、圧縮メルカトル画像と地形データとの関係を示すデータを備えるようにしてもよい。なお立体ストリートビュー視点をインターネットで送受信をする場合、圧縮メルカトル画像は分割し複数のファイルに分けるようにすると、ダウンロード途中の状態でも表示が可能となる。
【０１８９】
（集積回路の実施形態）
第１実施形態に示した画像描画装置のハードウェア構成のうち、記録媒体のドライブ部や、外部とのコネクタ等、機構的な部分を排除して、論理回路や記憶素子に該当する部分、つまり、論理回路の中核部分をシステムLSI化してもよい。システムLSIとは、高密度基板上にベアチップを実装し、パッケージングしたものをいう。複数個のベアチップを高密度基板上に実装し、パッケージングすることにより、あたかも1つのLSIのような外形構造を複数個のベアチップに持たせたものはマルチチップモジュールと呼ばれるが、このようなものも、システムLSIに含まれる。
【０１９０】
ここでパッケージの種別に着目するとシステムLSIには、QFP(クッド フラッド アレイ)、PGA(ピン グリッド アレイ)という種別がある。QFPは、パッケージの四側面にピンが取り付けられたシステムLSIである。PGAは、底面全体に、多くのピンが取り付けられたシステムLSIである。
【０１９１】
これらのピンは、電源供給やグランド、他の回路とのインターフェイスとしての役割を担っている。システムLSIにおけるピンには、こうしたインターフェイスの役割が存在するので、システムLSIにおけるこれらのピンに、他の回路を接続することにより、システムLSIは、画像描画装置の中核としての役割を果たす。
【０１９２】
（プログラムの実施形態）
各実施形態に示したプログラムは、以下のようにして作ることができる。先ず初めに、ソフトウェア開発者は、プログラミング言語を用いて、各フローチャートや、機能的な構成要素を実現するようなソースプログラムを記述する。この記述にあたって、ソフトウェア開発者は、プログラミング言語の構文に従い、クラス構造体や変数、配列変数、外部関数のコールを用いて、各フローチャートや、機能的な構成要素を具現するソースプログラムを記述する。
【０１９３】
記述されたソースプログラムは、ファイルとしてコンパイラに与えられる。コンパイラは、これらのソースプログラムを翻訳してオブジェクトプログラムを生成する。
【０１９４】
コンパイラによる翻訳は、構文解析、最適化、資源割付、コード生成といった過程からなる。構文解析では、ソースプログラムの字句解析、構文解析および意味解析を行い、ソースプログラムを中間プログラムに変換する。最適化では、中間プログラムに対して、基本ブロック化、制御フロー解析、データフロー解析という作業を行う。資源割付では、ターゲットとなるプロセッサの命令セットへの適合を図るため、中間プログラム中の変数をターゲットとなるプロセッサのプロセッサが有しているレジスタまたはメモリに割り付ける。コード生成では、中間プログラム内の各中間命令を、プログラムコードに変換し、オブジェクトプログラムを得る。
【０１９５】
ここで生成されたオブジェクトプログラムは、各実施形態に示したフローチャートの各ステップや、機能的構成要素の個々の手順を、コンピュータに実行させるような1つ以上のプログラムコードから構成される。ここでプログラムコードは、プロセッサのネィティブコード、JAVA(登録商標)バイトコードというように、様々な種類がある。プログラムコードによる各ステップの実現には、様々な態様がある。外部関数を利用して、各ステップを実現することができる場合、この外部関数をコールするコール文が、プログラムコードになる。また、1つのステップを実現するようなプログラムコードが、別々のオブジェクトプログラムに帰属することもある。命令種が制限されているRISCプロセッサでは、算術演算命令や論理演算命令、分岐命令等を組合せることで、フローチャートの各ステップを実現してもよい。
【０１９６】
オブジェクトプログラムが生成されるとプログラマはこれらに対してリンカを起動する。リンカはこれらのオブジェクトプログラムや、関連するライブラリプログラムをメモリ空間に割り当て、これらを１つに結合して、ロードモジュールを生成する。こうして生成されるロードモジュールは、コンピュータによる読み取りを前提にしたものであり、各フローチャートに示した処理手順や機能的な構成要素の処理手順を、コンピュータに実行させるものである。かかるコンピュータプログラムを非一時的なコンピュータ読取可能な記録媒体に記録してユーザに提供してよい。
【０１９７】
（視点周囲画像の範囲増減）
各実施形態では、横7枚の背景画像を横方向に結合することで得られる全周囲画像を対象にして説明を進めたが、横方向の画像の結合数を減少することで、視点から見渡せるストリートビューの範囲を変更してもよい。上記実施形態の全周囲画像は、横7枚の背景画像で360°の視野を網羅するから、一枚の背景画像で網羅される範囲は、52°(≒365°/7)である。よって、2枚の画像を結合した場合、104°(≒52°×2)の範囲を見渡すことができ、3枚の画像を結合した場合、156°(≒52×3)の範囲を見渡すことができる。このように、ストリートビュー収集サーバや映像提供装置で横方向の画像の結合数を変化させることにより、視点周囲画像の規模を変化させ、テクスチャマッピング処理やテクスチャにおける視差算出等の負荷を軽減することもできる。
【産業上の利用可能性】
【０１９８】
本発明にかかる画像描画装置は、製造産業において経営的に、また継続的および反復的に製造し、販売することができる。特に、全周囲立体画像の制作と再生に携わる民生機器産業において利用できる。
【符号の説明】
【０１９９】
１０１  描画装置
１０２  リモコン
１０３  立体視対応ディスプレイ
１０４  液晶シャッターメガネ
１０５  サーバ
１  ユーザ操作検知部
２  位置方向判定部
３  ネットワークインターフェース
４  ローカルストレージ
【図１】
2012132234.tif 000003
【図２】
2012132234.tif 000004
【図３】
2012132234.tif 000005
【図４】
2012132234.tif 000006
【図５】
2012132234.tif 000007
【図６】
2012132234.tif 000008
【図７】
2012132234.tif 000009
【図８】
2012132234.tif 000010
【図９】
2012132234.tif 000011
【図１０】
2012132234.tif 000012
【図１１】
2012132234.tif 000013
【図１２】
2012132234.tif 000014
【図１３】
2012132234.tif 000015
【図１４】
2012132234.tif 000016
【図１５】
2012132234.tif 000017
【図１６】
2012132234.tif 000018
【図１７】
2012132234.tif 000019
【図１８】
2012132234.tif 000020
【図１９】
2012132234.tif 000021
【図２０】
2012132234.tif 000022
【図２１】
2012132234.tif 000023
【図２２】
2012132234.tif 000024
【図２３】
2012132234.tif 000025
【図２４】
2012132234.tif 000026
【図２５】
2012132234.tif 000027
【図２６】
2012132234.tif 000028
【図２７】
2012132234.tif 000029
【図２８】
2012132234.tif 000030
【図２９】
2012132234.tif 000031
【図３０】
2012132234.tif 000032
【図３１】
2012132234.tif 000033
【図３２】
2012132234.tif 000034
【国際調査報告】
2012132234.tif 000035
2012132234.tif 000036
2012132234.tif 000037
2012132234.tif 000038