(57)【特許請求の範囲】
【請求項１】
コンピュータに、
３次元モデルに対する複数の方向からの仮想の撮影画像を合成して、前記撮影画像と比較して撮影範囲が大きい第１の広角画像を生成し、
該３次元モデルについての透視投影についての該３次元モデル内に想定した仮想光源によるハレーションの内容を表すハレーション画像を生成し、
前記第１の広角画象と、前記透視投影についてのハレーション画象とを合成して、ハレーションを模擬した、前記３次元モデルについての第２の広角画像を得る、
処理を実行させるためのシュミレーションプログラム。
【請求項２】
コンピュータに、
前記コンピュータが有するメモリに保存された、撮影対象に対して複数の方向から得られた複数の第１の画像から、撮影装置のレンズによる収差を反映させて前記第１の画像と比較して撮影範囲が大きい第２の画像を生成する第１の画像生成手順と、
前記撮影装置の外部に位置する光源からの光が該撮影装置に入射することによって生じるハレーションの内容を表す第３の画像を生成する第２の画像生成手順と、
前記第２の画像と前記第３の画像を合成して、前記光源によって生じるハレーションを模擬した第４の画像を生成する第３の画像生成手順と、
を実行させるためのハレーションシミュレーションプログラム。
【請求項３】
前記複数の第１の画像は、前後上下左右の６方向から得られた画像群であり、
前記第１の画像生成手順では、各ポリゴンの法線を設定した仮想面を用いたキューブ・マッピングにより、前記撮影装置のレンズによる収差を反映して、前記複数の第１の画像から前記第２の画像を生成する、
ことを特徴とする請求項２記載のハレーションシミュレーションプログラム。
【請求項４】
前記第１の画像生成手順では、前記仮想面を分割するポリゴン数を変更する、
ことを特徴とする請求項３記載のハレーションシミュレーションプログラム。
【請求項５】
コンピュータを用いて画像をシミュレートする方法であって、
前記コンピュータが有するプロセッサが、
前記コンピュータが有するメモリに保存された、撮影対象に対して複数の方向から得られた複数の第１の画像から、撮影装置のレンズによる収差を反映させて前記第１の画像と比較して撮影範囲が大きい第２の画像を生成し、
前記撮影装置の外部に位置する光源からの光が該撮影装置に入射することによって生じるハレーションの内容を表す第３の画像を生成し、
前記第２の画像と前記第３の画像を合成して、前記光源によって生じるハレーションを模擬した第４の画像を生成する、
ことを特徴とするハレーションシミュレーション方法。
【請求項６】
撮影対象に対して複数の方向から得られた複数の第１の画像から、撮影装置のレンズによる収差を反映させて前記第１の画像と比較して撮影範囲が大きい第２の画像を生成する第１の画像生成手段と、
前記撮影装置の外部に位置する光源からの光が該撮影装置に入射することによって生じるハレーションの内容を表す第３の画像を生成する第２の画像生成手段と、
前記第２の画像と前記第３の画像を合成して、前記光源によって生じるハレーションを模擬した第４の画像を生成する第３の画像生成手段と、
を具備することを特徴とするハレーションシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮影装置による撮影画像上に生じるハレーションをシミュレーションする技術に関する。
【背景技術】
【０００２】
カメラ等の撮影装置による撮影では、外部の強い光源によってハレーションが発生することがある。このハレーションは、光源からの光によって形成される光の像である。この光の像であるハレーションは、撮影画像を不鮮明にさせるのが普通である。場合によっては、撮影画像中に何も視認できない部分を生じさせる。このようなことから、常に良好な撮影画像を要求されるような撮影装置、例えば工業製品に搭載される、或いは工業製品の製造に用いられる撮影装置では、ハレーションは防止すべき対象となっている。【０００３】
例えば自動車等の車両に取り付けられるバックアイカメラでは、街灯の光が強いと、撮影範囲内に入っている、或いは入ってくる物がハレーションにより視認でき難くなる場合がある。これは、安全上、非常に望ましくない。それにより、このような工業製品に搭載される撮影装置では、ハレーションの防止、つまりその発生を抑えることは非常に重要となっている。【０００４】
このハレーションは、一度に比較的に広い画角（視野角）を撮影できる広角レンズで発生しやすい。これは、広角レンズは設計上、この広角レンズの前面側が大きく突出した形となっていることが多いためである。この突出部分は、外部光源からの光を入射しやすくする。【０００５】
レンズは、その焦点距離によって分類される。具体的には、焦点距離が３５〜５０ｍｍ(３５ｍｍ版換算。以降、特に断らない限り、この換算を前提とする)あたりを「標準」、それより長いものを「望遠 (テレ)」、逆にそれよりも短いものを「広角 (ワイド)」と呼ぶことが多い。このことから、通常、焦点距離が３５ｍｍ以下のレンズが広角レンズと呼ばれる。【０００６】
ハレーションの発生の抑制には、レンズフードを設ける、レンズのコーティングを行う、といった手法がある。しかし、何れの手法もコスト増を招く。レンズフードは、更に視野角を狭める可能性もある。このようなことから、ハレーションの発生を抑制する対応は、ハレーションの及ぼす影響を考慮して、必要に応じて採用すべきと考えられる。それにより、撮影装置では、ハレーションを模擬するシミュレーションを容易に行えるようにすることが重要と云える。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−１０５７３４号公報
【非特許文献】
【０００８】
【非特許文献１】James D. Foley等、佐藤 義雄  監訳、“コンピュータグラフィックス  理論と実践”、2001.3
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、撮影装置で発生するハレーションを模擬するシミュレーションを行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明を適用した１システムは、３次元モデルに対する複数の方向からの仮想の撮影画像を合成して、撮影画像と比較して撮影範囲が大きい第１の広角画像を生成し、その３次元モデルについての透視投影についてのその３次元モデル内に想定した仮想光源によるハレーションの内容を表すハレーション画像を生成し、第１の広角画象と、透視投影についてのハレーション画象とを合成して、ハレーションを模擬した、３次元モデルについての第２の広角画像を得る。
【発明の効果】
【００１１】
本発明を適用した１システムでは、撮影装置で発生するハレーションを模擬するシミュレーションを行うことができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態によるハレーションシミュレーション装置を用いて構築されたシミュレーションシステムの構成を説明する図である。
【図２】反射画像の生成方法を説明する図である。
【図３】生成される、外部光源の反射画像例を説明する図である。
【図４】キューブマップを用いて行われるテクスチャ・マッピングを説明する図である。
【図５】ポリゴンが配置された平面を説明する図である。
【図６】レンズ収差データの形式例を説明する図である。
【図７】レンズ収差データによるポリゴンの法線の設定方法を説明する図である。
【図８Ａ】広角画像の生成手順を説明する図である。
【図８Ｂ】図８Ａの標準画像例の拡大図である。
【図９】表示されるシミュレーション画像例を説明する図である。
【図１０】シミュレーション画像生成処理のフローチャートである。
【図１１】広角画像生成処理のフローチャートである。
【図１２】反射画像生成処理のフローチャートである。
【図１３】ブレンド処理のフローチャートである。
【図１４】本実施形態を適用可能なコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態によるハレーションシミュレーション装置を用いて構築されたシミュレーションシステムの構成を説明する図である。図１に示すように、このシミュレーションシステムは、ハレーションシミュレーション装置１に、ユーザが操作するキーボード、マウス等のポインティングデバイス等が相当するユーザインタフェース２、及びディスプレイ３を接続することで構築されている。
【００１４】
本実施形態によるハレーションシミュレーション装置（以降「シミュレーション装置」と略記）１は、カメラ等の撮影装置に発生するハレーションを模擬するシミュレーションを行うものとして実現されている。そのシミュレーション装置は、より具体的には、シミュレーションを行うためのプログラムであるハレーションシミュレーションプログラム（以降「シミュレーションソフト」）をコンピュータ等のデータ処理装置に実行させることで実現させている。
【００１５】
このシミュレーション装置１は、撮影装置（以降、理解を容易とするために「カメラ」を想定する）による撮影時の条件で得られると想定する撮影画像を生成することでシミュレーションを行うようになっている。それにより、シミュレーション装置１は、その条件でハレーションが発生する場合には、そのハレーションが発生した撮影画像を生成する。シミュレーションは、オペレータによって指定された３Ｄ（３次元）データ４、オペレータが指定、或いは入力したレンズデータ５及びパラメータ群６を用いて行う。
【００１６】
本実施形態では、シミュレーションは、カメラによる撮影によって得られると想定する、ハレーションを無視した撮影画像と、ハレーションの内容を表す画像とをそれぞれ生成し、生成したそれらの画像を合成することで、行うようにしている。以降、混乱を避けるために、シミュレーションによって最終的に得られる撮影画像は「シミュレーション画像」、カメラによる撮影によって得られると想定する撮影画像は「広角画像」、ハレーションの内容を表す画像は「ハレーション画像」或いは「反射画像」とそれぞれ呼ぶことにする。カメラによる撮影によって得られると想定する撮影画像を「広角画像」と呼ぶのは、広角画像の撮影に用いられるレンズはハレーションが発生し易いからである。言い換えれば、ハレーションが発生し易いカメラをシミュレーションの対象と想定しているからである。
【００１７】
シミュレーション装置１は、データ取得部１１、広角画像生成部１２、反射画像生成部１３、ブレンド処理部１４及び表示制御部１５を備えた構成となっている。それらの構成要素１１〜１５は以下のような機能を備えている。図２〜図９の説明図を参照して具体的に説明する。
【００１８】
データ取得部１１は、シミュレーションに必要なデータを取得する。図１では、そのデータとして、３Ｄデータ４、レンズデータ５及びパラメータ群６を示している。データ取得部１１は、取得したデータを広角画像生成部１２、及び反射画像生成部１３にそれぞれ出力する。
【００１９】
反射画像生成部１３には、データ取得部１１からパラメータ群６が出力される。そのパラメータ群６を説明する前に、図２を参照して、反射画像生成部１３による反射画像生成方法について具体的に説明する。その図２は、反射画像の生成方法を説明する図である。
【００２０】
図２に概略構成を示すカメラ２０は、シミュレーションの対象とする撮影装置である。そのカメラ２０は、鏡胴２２の端に配置されたレンズ２１により外部から光を取り込み、撮像面（例えばＣＣＤの受光面）２３に結像させることにより、撮影を行う構成となっている。ハレーションは、カメラ２０の外に位置する外部光源２５からの光がレンズ２１を通って内部に入射し、撮像面２３に達することによって生じる。このことから、ハレーション(反射画像）の生成は、外部光源２５の強さ、及び位置を設定し、その外部光源２５からの光が達する撮像面２３上の位置、及びその光量を特定することで行われる。反射画像の生成は、カメラ２０をモデル化した仮想的なもの（仮想撮影装置）を想定してハレーションを模擬するシミュレーションに相当する。
【００２１】
レンズ２１の光軸上、或いは光軸に近い位置に強い光を放つ外部光源が存在する場合、ハレーションは防ぐことはできない。このことから、ハレーションを考慮すべき外部光源２５は、図２に示すように、レンズ２１の光軸上から比較的に離れた位置に存在するものとなる。それにより、レンズ２１の外周にレンズフード２４を設けているカメラ２０では、主に、レンズフード２４によって遮ることができる境界の方向の近傍に位置する外部光源２５が、特に考慮の対象つまり設定の対象となる。
【００２２】
そのような外部光源２５から放射されて撮像面２３に達する光の経路は、様々である。しかし、カメラ２０との位置関係から、その光の大部分は鏡胴２２に反射する。ハレーションにより生じる光の像を「反射画像」と呼ぶのはこのためである。
【００２３】
外部光源２５からの光は、外部光源２５の位置によってはレンズ２１内部に進入しない。このことから本実施形態では、反射画像の生成は、光がレンズ２１内部に進入するか否かチェックし、そのチェック結果として光が進入する場合に行う。その生成は、レンズ２１内に外部光源２５の代わりとする仮想光源２６を配置して行う。
【００２４】
光がレンズ２１内部に進入するか否かのチェックには、既知の干渉チェック技術を用いることができる。仮想光源２６を配置するレンズ２１内部の位置は、反射画像生成部１３により、例えばレンズ２１の光軸と直交する径方向上で外部光源２５からの光が通過する範囲を求め、その範囲の中央、或いはその近傍に決定する。そのようにして、反射画像生成部１３は、レンズ２１内部で外部光源２５からの光が通ると考えられる経路上に仮想光源２６を配置する。外部光源２５からの光がレンズ２１内部に進入するか否かのチェック方法、及び仮想光源２６を配置する位置の決定方法は、ここに挙げたものに限定されるものではない。仮想光源２６を配置する位置は、求めた範囲内であれば良い。このことから、その位置は、撮像面２３に達する光量をより大きく見積もれるように考慮して決定するようにしても良い。
【００２５】
外部光源２５から放射された光がレンズ２１内部に進入するか否かは、その放射位置や放射方向によって変化する。このため、外部光源２５では、その外部光源２５から放射される光（光線）毎に、レンズ２１内部に進入するか否かのチェックを行わなければならない。しかし、上記のような仮想光源２６を外部光源２５の代わりに用いる場合、そのようなチェックを行わなくとも済む。このことから、外部光源２５の代わりに仮想光源２６を用いる場合、反射画像の生成をより短時間に行えるようになる。
【００２６】
その仮想光源２６から放射された光も、様々な経路で撮像面２３に達する。また、光は鏡胴２２での反射によって減衰する。このようなことから、本実施形態では、既知のレイトレーシング技術を用いて光が達する撮像面２３上の位置、及びその光量を算出することにより、反射画像を生成するようにしている。
【００２７】
周知のように、レイトレーシング技術では、光源と、定めた受光点の間の経路をその受光点側から光源まで辿ることにより特定し、その受光点の光量を算出する。上記のようなケースでは、受光点は撮像面２３上の各点に相当し、光源は仮想光源２６に相当する。このレイトレーシング技術には、美しい画像を作りやすい、必要なメモリ容量が比較的に小さい、といった利点がある。
【００２８】
反射画像の生成には、レイトレーシング技術以外の技術を用いても良い。例えばレイトレーシング技術とは逆に、光源側から受光点までの光の経路を特定するフォトンマッピング技術を用いても良い。
【００２９】
図３は、そのようにして生成される、外部光源の反射画像例を説明する図である。この反射画像例では、外部光源２５からの光が中央付近に多く集まっている。
反射画像生成部１３は、上述したようにして、カメラ２０の外部に仮想的に配置した外部光源２５からの光によるハレーションを模擬した反射画像を生成し、生成した反射画像をブレンド処理部１４に出力する。そのように反射画像を生成することから、パラメータ群６は、レンズ２１の鏡面反射率、鏡胴２２の反射率、カメラ２０の形状データ、及び外部光源２５に係わるデータを含むものとしている。カメラ２０の形状データは、レンズ２１及びレンズフード２４の各形状を含むものである。外部光源２５に係わるデータは、外部光源２５の強さ、位置等を含むものである。その位置は、例えばレンズ２１の光軸からの角度、及び距離により指定することができる。
【００３０】
パラメータ群６として用意すべきパラメータは、採用するモデル、或いは考慮すべき対等に応じて決定すれば良いものである。例えばカメラ２０では、絞り等の不図示の構成要素を考慮しても良い。このようなことからも、特に限定されるものではない。
【００３１】
広角画像生成部１２は、データ取得部１１から３Ｄデータ４及びレンズデータ５を得て、広角画像を生成する。その広角画像は、複数の画像から生成される。３Ｄデータ４は、その複数の画像を得るために用いられる。例えば、カメラ２０が車両のバックアイカメラであった場合、３Ｄデータ４は、車両の３Ｄモデルデータ、車両が置かれた撮影環境上に存在する道路、街灯、建物、他の車両、及び通行者等の物体のモデルデータ（配置を示す配置情報を含む）等を含むものである。車両の３Ｄモデルデータは、バックアイカメラの配置、及びその撮影方向を含むものである。カメラ２０が監視カメラであった場合には、その監視カメラの位置情報、及び撮影環境上に存在する物体のモデルデータ等を含むものである。監視カメラの位置情報は、配置場所を示す情報の他に、撮影方向を含むものである。以降、広角画像の生成に用いる画像は視野角（撮影範囲）が広角画像よりも小さいと想定することから、便宜的に「標準画像」と呼ぶことにする。
【００３２】
標準画像の取得は、３Ｄデータ４が表現する撮影環境を、その標準画像が得られる仮想的なカメラ（以降「仮想カメラ」）で撮影方向を変えての複数の撮影をシミュレーションする形で行われる。本実施形態では、複数の標準画像を用いた撮影画像の生成にキューブマップ（Cubemap）を採用している。
【００３３】
３Ｄデータ４の表示は、静止画の表示に対応したソフトウェア（ビューア）を用いて行うことができる。このことから、ビューアを用いる場合には、その３Ｄデータ４が表現する撮影環境の撮影（仮想的な撮影）は、その撮影条件で３Ｄデータ４の表示画像をビューアに生成させることに相当する。
【００３４】
このキューブマップは、テクスチャ・マッピングの手法の一つである。キューブマップでは、視点を中心とした３Ｄモデルを仮想的に囲む無限大の立方体（キューブマップ）を考え、あるポリゴンに貼り付けるテクスチャをそのポリゴンの法線が立方体と交わる位置から決定する。立方体は６面であることから標準画像は、前後上下左右の６方向でそれぞれ取得する。各標準画像はそれぞれ撮影方向によって決定される立方体の面として扱われる。
【００３５】
図４は、キューブマップを用いて行われるテクスチャ・マッピングを説明する図である。図４に示す立方体４０はキューブマップであり、そのキューブマップ４０の６つの面４０ｆｔ、４０ｂｋ、４０ｔｐ、４０ｂｍ、４０ｌｔ及び４０ｒｔにはそれぞれ、対応する撮影方向の標準画像が割り当てられる。具体的には、面４０ｆｔには前方向の標準画像が割り当てられる。同様に、面４０ｂｋ、４０ｔｐ、４０ｂｍ、４０ｌｔ及び４０ｒｔにはそれぞれ、後上下左右の各方向の標準画像が割り当てられる。
【００３６】
キューブマップによるテクスチャ・マッピングは、多数のポリゴン５１が配置された仮想的な平面（仮想面）５０を用いて行われる。図５は、ポリゴンが配置された平面を説明する図である。図５では、正面から見た平面５０を示している。この平面５０は簡略的に描いているが、実際には平面５０は多数の３角形（ポリゴン）５１で分割されている。各ポリゴン５１は、実際に表示する広角画像では画素に相当する。
【００３７】
図４の４１は平面５０上のあるポリゴン５１における法線である。そのポリゴン５１のテクスチャとして、法線４１がキューブマップ４０の面と交わる部分４２のテクスチャが決定される。このことから平面５０は、テクスチャを投影する投影面として用いられる。
【００３８】
各ポリゴン５１の法線は個別に設定することができる。このことから本実施形態では、各ポリゴン５１の法線の設定により、複数の標準画像から広角画像を生成するようにしている。その法線の設定は、カメラ２０のレンズ２１の特性を示すレンズ収差データを用いて行うようにしている。
【００３９】
図６は、そのレンズ収差データの形式例を説明する図である。その収差データは、広角画像上の像高（図６中「画面上の像高」と表記）とその像高に対応させる画角の組をまとめたものとしている。図７に示すように、画角は、視点と広角画像の中心を結ぶ線（以降「視線方向」）からの角度であり、像高は、平面５０上の視線方向からの距離に相当する。それにより像高と画角の組は、平面５０上のポリゴン５１と、そのポリゴン５１のテクスチャとして決定すべきキューブマップ４０の部分との関係を示すものとなっている。
【００４０】
図７は、レンズ収差データによるポリゴンの法線の設定方法を説明する図である。図７には便宜的に、平面５０は視線方向から上の部分のみ描いている。
図７において、Ｗは、像高と組となった画角αの直線である。ｖはその組の像高と視点を結ぶ直線である。Ｐは、平面５０上で直線Ｗが表す画角αと組み合わされた像高に対応する点である。Ｗ’はその像高（点Ｐ）を起点とする、直線Ｗと平行な直線である。この直線Ｗ’は、点Ｐのポリゴン５１の法線として設定される。それにより、各ポリゴン５１の法線Ｗ’？には、そのポリゴン５１の像高、つまりその位置Ｐ？と視線方向（広角画像の中心）の間の距離に対応する画角αの直線が設定される。
【００４１】
図７に示すように、点Ｐのポリゴン５１の法線として設定される直線Ｗ’は、レンズ収差データが無い場合に設定される直線ｖよりも傾きが急となっている。法線の傾きをより急にすることは、キューブマップ４０における視線方向からより離れた部分のテクスチャを用いることを意味する。収差データは、図６に示すように、像高が大きくなるほど、画角αもより大きくなっている。このことから、各ポリゴン５１に決定されるテクスチャは、視線方向（広角画像の中心）から離れるほど、キューブマップ４０上では視線方向から更に離れた部分のものとなる。その結果、生成される広角画像は、その中心から離れるにつれて像が小さくなる歪曲（タル型歪曲）収差が生じたものとなる（図９）。
【００４２】
このようにして画角αは、組み合わされた像高のポリゴン５１に割り当てるテクスチャが存在するキューブマップ４０上の位置を指定する。その位置は、標準画像上の位置であり、標準画像は実際に得られた画像である。レンズ収差データは、平面５０上のポリゴン５１に割り当てるテクスチャが存在するキューブマップ４０上の位置を特定できるのであれば良いことから、図６に示すようなものに限定されない。
【００４３】
多くのポリゴン５１は、像高と画角αと組み合わされた何れの像高とも一致しない。そのようなポリゴン５１の法線は、補間により決定する。法線の決定に用いる補間方法は、特に限定するものではないが、１次補間方法以外の方法、例えば２次補間方法、或いは多項式補間方法等を採用するのが望ましい。
【００４４】
広角レンズを用いた撮影では、歪曲収差が生じるのが普通である。そのような歪曲収差が生じた広角画像を生成するのは、このためである。キューブマップ４０を用いたテクスチャ・マッピングでは、平面５０上の各ポリゴン５１の法線の設定を通して、そのような広角画像を生成することができる。
【００４５】
グラフィックスの表示に必要な計算処理を行なうＧＰＵ（Graphics Processing Unit）の大部分は、キューブマップ４０を用いたテクスチャ・マッピングに対応している。このため、ＧＰＵを搭載したコンピュータでは、広角画像の生成は極めて高速に行うことができる。キューブマップ４０を用いた広角画像の生成を採用しているのは、このことも理由の一つである。
【００４６】
図８Ａは、広角画像の生成手順を説明する図である。図８Ａにおいて、画像８１は撮影環境例、画像８２はその撮影環境で得られる６つの標準画像例、画像８３は画像８２つまり６つの標準画像から生成される広角画像例、をそれぞれ示している。図８Ｂには、標準画像例の拡大図を示している。画像８３、つまり生成される広角画像には、明らかな歪曲収差が生じている。
【００４７】
図８Ｂに示す６つの標準画像にそれぞれ付した８２ｆｔ、８２ｂｋ、８２ｔｐ、８２ｂｍ、８２ｌｔ及び８２ｒｔには、括弧書きでキューブマップ４０の各面の符号４０ｆｔ、４０ｂｋ、４０ｔｐ、４０ｂｍ、４０ｌｔ或いは４０ｒｔを続けて付している。それにより、図８Ｂでは、６つの各標準画像８２ｆｔ、８２ｂｋ、８２ｔｐ、８２ｂｍ、８２ｌｔ及び８２ｒｔが割り当てられるキューブマップ４０の各面４０ｆｔ、４０ｂｋ、４０ｔｐ、４０ｂｍ、４０ｌｔ及び４０ｒｔを示している。
【００４８】
上記広角画像は、図８Ａ及び図８Ｂから明らかなように、左右を反転させたものとなっている。これは、シミュレーションを行うカメラとして、車両のバックアイカメラを想定しているためである。つまり、バックアイカメラにより撮影した画像は前（撮影する方向の逆方向）を向いて見る場合、その画像は左右を反転させたほうが望ましいと考えられるためである。
【００４９】
広角画像生成部１２は、上記のようにして、広角画像を生成する。レンズデータ５は、例えば上記レンズ収差データ、及びカメラ２０の位置情報（設置場所や撮影方向（視線方向）等の情報を含む）を含むものである。そのため、標準画像の取得には３Ｄデータ４の他に、レンズデータ５も用いられる。
【００５０】
広角画像生成部１２は、法線設定部１２ａ、及び標準画像生成部１２ｂを備えている。法線設定部１２ａは、レンズ収差データに従って、平面５０上の各ポリゴンの法線を設定する。標準画像生成部１２ｂは、レンズデータ５のカメラ２０の位置情報を参照し、３Ｄデータ４から標準画像を生成する。生成した標準画像、及び平面５０を用いて生成した広角画像は、ブレンド処理部１４に出力する。
【００５１】
生成すべき標準画像は、カメラ２０の設置場所の変更により変化する。標準画像の生成に３Ｄデータ４を用いるのは、このためである。言い換えれば、カメラ２０の設置場所の変更等に容易に対応できるようにするためである。しかし、そのような変更に対応すべき状況があまり発生しない、その変更に対応する必要性は小さいような場合には、３Ｄデータ４から標準画像を生成しなくとも良い。それにより、標準画像を予め用意しても良い。このことから、標準画像として、実際の撮影によって得られた撮影画像を用いるようにしても良い。
【００５２】
ブレンド処理部１４は、広角画像生成部１２、及び反射画像生成部１３がそれぞれ生成した広角画像及び反射画像を得て、それらを合成することにより、シミュレーション画像を生成する。生成したシミュレーション画像は、表示制御部１５に出力する。
【００５３】
表示制御部１５は、ブレンド処理部１４から入力したシミュレーション画像をディスプレイ３に表示させる。図９は、表示されるシミュレーション画像例を説明する図である。このシミュレーション画像は、図３の反射画像と、図８Ａの画像８３として表す広角画像を合成して得られるものである。
【００５４】
図１４は、本実施形態を適用可能なコンピュータのハードウェア構成の一例を示す図である。ここで図１４を参照して、上記シミュレーション装置１０として使用可能なコンピュータの構成例について具体的に説明する。
【００５５】
図１４に示すコンピュータは、ＣＰＵ６１、メモリ６２、入力装置６３、出力装置６４、外部記憶装置６５、媒体駆動装置６６、ネットワーク接続装置６７、及びＧＰＵ６８を有し、これらがバス６９によって互いに接続された構成となっている。同図に示す構成は一例であり、これに限定されるものではない。
【００５６】
ＣＰＵ６１は、当該コンピュータ全体の制御を行う。図１４には一つのみ示しているが、ＣＰＵ６１は複数、搭載されていても良い。
メモリ６２は、プログラム実行、データ更新等の際に、外部記憶装置６５（あるいは可搬型の記録媒体７０）に記憶されているプログラムあるいはデータを一時的に格納するＲＡＭ等の半導体メモリである。ＣＰＵ６１は、プログラムをメモリ６２に読み出して実行することにより、全体の制御を行う。
【００５７】
入力装置６３は、例えば、キーボード、マウス等のオペレータが操作する操作装置、つまり図１のユーザインタフェース２との接続を可能にする装置である。接続された操作装置に対するユーザの操作を検出し、その検出結果をＣＰＵ６１に通知する。
【００５８】
出力装置６４は、例えば表示装置と接続された表示制御装置である。図１に示す構成では、ディスプレイ３が接続される。外部記憶装置６５は、例えばハードディスク装置等の大容量の記憶装置である。主に各種データやプログラムの保存に用いられる。
【００５９】
媒体駆動装置６６は、光ディスクや光磁気ディスク等の可搬型の記録媒体７０にアクセスするものである。ネットワーク接続装置６７は、例えば通信ネットワークを介した外部装置との通信を可能とさせるものである。ＧＰＵ６８は、グラフィックスの表示に必要な計算処理を行う、キューブマップ４０を用いたテクスチャ・マッピングに対応した処理装置である。
【００６０】
上記シミュレーションソフト、及び３Ｄデータ４は、外部記憶装置６５、若しくは記録媒体７０に記録されているか、或いは通信ネットワークを介してネットワーク接続装置６７により取得される。そのシミュレーションソフトをメモリ６２に読み出してＣＰＵ６１が実行することにより、シミュレーション装置１は実現される。
【００６１】
シミュレーションの結果、つまりシミュレーション画像は、外部記憶装置６５、或いは記録媒体７０に保存される。その結果はネットワーク接続装置６７を介して外部装置に保存させることも可能である。レンズデータ４５、及びパラメータ群４６は、入力装置６３、或いはネットワーク接続装置６７を介して取得される。それらの保存には、例えば外部記憶装置６５が用いられる。
【００６２】
図１４に示す構成では、シミュレーションソフト、及び３Ｄデータ４が外部記憶装置６５に格納され、レンズデータ５及びパラメータ群６が入力装置６３を介して入力されると想定する場合、データ取得部１１は、ＣＰＵ６１、メモリ６２、入力装置６３、外部記憶装置６５及びバス６９によって実現される。広角画像生成部１２、反射画像生成部１３及びブレンド処理部１４は共に、ＣＰＵ６１、メモリ６２、外部記憶装置６５及びバス６９によって実現される。表示制御部１５は、ＣＰＵ６１、メモリ６２、出力装置６４、外部記憶装置６５及びバス６９によって実現される。
【００６３】
以降は、図１０〜図１３に示す各処理のフローチャートを参照して、シミュレーション装置１の動作について詳細に説明する。
図１０は、シミュレーション画像生成処理のフローチャートである。このハレーション画像生成処理は、シミュレーション画像を生成するための処理であり、図１４に示す構成において、ＣＰＵ６１がシミュレーションソフトを実行することで実現される。
【００６４】
先ず、ステップＳ１では、ＣＰＵ６１は広角画像を生成するための広角画像生成処理を実行する。続くステップＳ２では、ＣＰＵ６１は反射画像を生成するための反射画像生成処理を実行する。その後はステップＳ３に移行して、ＣＰＵ６１は広角画像と反射画像をブレンドするブレンド処理を実行する。そのブレンド処理の実行後、このハレーション画像生成処理を終了する。
【００６５】
広角画像生成部１２は、ステップＳ１の広角画像生成処理をＣＰＵ６１が実行することで実現される。反射画像生成部１３は、ステップＳ２の反射画像生成処理をＣＰＵ６１が実行することで実現される。ブレンド処理部１４及び表示制御部１５は、ステップＳ３のブレンド処理をＣＰＵ６１が実行することで実現される。
【００６６】
シミュレーション画像生成処理は、３Ｄデータ４、レンズデータ５、及びパラメータ群６を用いて実行される。これらのデータは、例えば専用の入力画面により指定、或いは入力されるようになっている。例えば３Ｄデータ４がその格納場所によって指定され、レンズデータ５及びパラメータ群６が入力されるようになっている。シミュレーション画像生成処理は、例えばその入力画面上で実行を指示できるようになっている。この入力画面上に入力されたデータはメモリ６２、或いは外部記憶装置６５に保存され、必要に応じて参照される。それにより、データ取得部１１は、この入力画面の表示、及びデータ入力のための処理の実行によって実現される。
【００６７】
図１１は、広角画像生成処理のフローチャートである。次に図１１を参照して、この広角画像生成処理について詳細に説明する。
先ず、ステップＳ１１では、ＣＰＵ６１はレンズデータ５のレンズ収差データを読み込む。次のステップＳ１２では、ＣＰＵ６１は平面５０（図１１では「テクスチャ表示用のメッシュ」及び「テクスチャ表示メッシュ」と表記）を生成する。その平面５０の各ポリゴン５１の法線は、図７に示すように、レンズ収差データ、及びその位置（像高）から設定される。そのようにして設定する法線は、ポリゴン５１の位置（像高）に相当する画角を有するものである。各ポリゴン５１の法線の設定が終了した後はステップＳ１３に移行する。
【００６８】
本実施形態では、平面５０を分割するポリゴン５１の数、つまりポリゴンのマイクロポリゴンへの分割は、オペレータの設定に沿って行うようにしている。この設定（指定）は、例えば上記専用の入力画面上で解像度の選択により行うようになっている。この選択された解像度は、パラメータ群６を構成する１パラメータとして扱われる。ＣＰＵ６１は、設定された解像度に従って平面５０をポリゴン５１に分割する。
【００６９】
オペレータは、この解像度の選択により、生成されるシミュレーション画像の精度、及び描画速度を調整することができる。比較的に低い解像度を選択した場合、低精度のシミュレーション画像をより短時間に表示させることができ、比較的に高い解像度を選択した場合には、比較的に長い時間がかかっても高精度のシミュレーション画像を表示させることができる。
【００７０】
ステップＳ１３では、仮想カメラを想定し、その仮想カメラを上下左右前後に向けて、３Ｄデータ４によって表現される撮影環境をビューアにより順次、表示し、各表示画像をフレームバッファから読み込む。撮影環境の表示、つまり仮想カメラによる撮影結果とする標準画像の取得は、レンズデータ５が示すカメラ２０の位置情報（設置場所）に沿って行う。次のステップＳ１４では、読み込んだ各表示画像をキューブマップ４０のテクスチャとして登録する。それにより、各表示画像は標準画像として、キューブマップ４０の各面４０ｂｋ、４０ｔｐ、４０ｂｍ、４０ｌｔ及び４０ｒｔの何れかに割り当てる。その次に移行するステップＳ１５では、平面５０を用いて、キューブマップ４０から広角画像８３を生成し登録する。その平面５０は、レンズデータ５が示すカメラ２０の位置情報（設置場所や撮影方向（視線方向）等）から特定される位置に配置する。そのようにして、カメラ２０を想定した広角画像８３を生成した後、この広角画像生成処理を終了する。
【００７１】
広角画像の生成は、ＣＰＵ６１がＧＰＵ６８に、例えば平面５０、登録した標準画像、及び平面５０の配置の特定等に用いられる生成条件を送出し、その平面５０及び標準画像を用いた広角画像の生成を指示することで行われる。このことからＣＰＵ６１は、実際には広角画像の生成は行わない。ＧＰＵ６８から入力した広角画像を登録する。
【００７２】
図１２は、反射画像生成処理のフローチャートである。次に図１２を参照して、この反射画像生成処理について詳細に説明する。
先ず、ステップＳ２１では、ＣＰＵ６１はパラメータ群６を参照し、外部光源２５の位置からの直線とカメラ２０の部品の交差をチェックする。それにより、外部光源２５からの光がレンズ２１に入射するか否か確認する。続くステップＳ２２では、ＣＰＵ６１はそのチェック結果から、交差があるか否か判定する。交差が確認できなかった場合、判定はＮＯとなり、ステップＳ２３に移行して、ＣＰＵ６１は反射画像無しとして反射画像生成処理を終了する。その交差が確認できた場合には、判定はＹＥＳとなってステップＳ２４に移行する。
【００７３】
ステップＳ２４では、ＣＰＵ６１はレンズ２１内に仮想光源２６を配置し、鏡胴２２の反射率を考慮して、その仮想光源２６から撮像面２３に達する光線（大部分は反射光線）を生成することにより、反射画像を生成する。そのような反射画像の生成は、既知のレイトレーシング・アルゴリズムを用いて行う。それにより、仮想光源２６と撮像面２３の光の経路は撮像面２３側から辿ることで特定し、光線の光量は特定した経路、及び反射率に応じて減衰させる。反射画像の生成後に移行するステップＳ２５では、ＣＰＵ６１は反射画像を登録する。その後、この反射画像生成処理を終了する。
【００７４】
図１３は、ブレンド処理のフローチャートである。最後に図１３を参照して、このブレンド処理について詳細に説明する。
先ず、ステップＳ３１では、ＣＰＵ６１は反射画像が存在するか否かのチェックを行う。次のステップＳ３２では、ＣＰＵ６１はそのチェック結果から、反射画像が存在するか否か判定する。反射画像が登録されていた場合、判定はＹＥＳとなって、ステップＳ３４に移行する。反射画像が登録されていない場合には、判定はＮＯとなってステップＳ３３に移行し、ＣＰＵ６１は広角画像をシミュレーション画像として表示させる。その後、このブレンド処理を終了する。
【００７５】
ステップＳ３４では、反射画像、広角画像の画素を対応付けて、各画素のＲＧＢ成分の値を算出（変換）する。その変換は、シミュレーション画像（の画素値）をＰi、広角画像（の画素値）をＰｏ、反射画像（の画素値）をＱとした場合、
Ｐi、＝Ｐｏ＋α＊Ｑ
により行う。そのような変換を各画素でＲＧＢ成分ごとに行うことにより、広角画像と反射画像のブレンドが実現される。それにより、ステップＳ３５には、全ての画素の変換を行った後に移行する。
【００７６】
シミュレーション画像の生成、つまり広角画像と反射画像のブレンドは、全ての画素の変換を行うことで完了する。ステップＳ３５では、ＣＰＵ６１は変換によって得られたシミュレーション画像をディスプレイ３に表示させる。その後、このブレンド処理を終了する。
【００７７】
シミュレーション画像は、広角画像や反射画像と同様に、登録（保存）される。それにより、必要に応じて表示させることが可能となっている。画像の保存先は、例えば上記入力画面上で指定できるようになっている。
【００７８】
なお、本実施形態では、シミュレーション画像生成処理の実行時に平面５０を生成するようにしているが、その平面５０の生成は必要に応じて行うようにしても良い。これは、レンズ収差データを変更しなければ、生成する平面５０は同じとなるからである。同様に、標準画像も３Ｄデータ４、つまり撮影環境、或いはカメラ２０の配置、若しくは撮影方向等が変更されない限り、変化しない。広角画像は、標準画像、及び平面５０のうちの少なくとも一方が変化しない限り、変化しない。このようなことから、標準画像、及び広角画像も必要に応じて生成するようにしても良い。標準画像は、生成するのではなく、予め用意しても良い。
【００７９】
シミュレーション画像生成処理を実現させるシミュレーションソフトは、ＧＰＵ６８による広角画像の生成を想定したものである。このシミュレーションソフトは、ＧＰＵ６８を搭載していないコンピュータを想定したものであっても良い。或いはＧＰＵ６８を搭載しているか否かに応じて処理内容を変更するようなものであっても良い。
【図１】
0005413502.tif 000002
【図２】
0005413502.tif 000003
【図３】
0005413502.tif 000004
【図４】
0005413502.tif 000005
【図５】
0005413502.tif 000006
【図６】
0005413502.tif 000007
【図７】
0005413502.tif 000008
【図８Ａ】
0005413502.tif 000009
【図８Ｂ】
0005413502.tif 000010
【図９】
0005413502.tif 000011
【図１０】
0005413502.tif 000012
【図１１】
0005413502.tif 000013
【図１２】
0005413502.tif 000014
【図１３】
0005413502.tif 000015
【図１４】
0005413502.tif 000016