(57)【特許請求の範囲】
【請求項１】
３次元物体を２次元平面上に撮影した第１の画像データと、３次元物体を２次元平面上に撮影した第２の画像データから、それぞれを合成した合成画像を生成する合成画像生成装置において、
前記第１の画像データを撮影する第１の撮影手段と、
前記第１の画像データ内に撮影される３次元物体の消失点に基づいて、前記第１の画像データを撮影する撮影手段の位置と方向および焦点距離とからなるカメラパラメータを算出する算出手段と、
前記算出手段により算出されたカメラパラメータに基づいて、前記第１の画像データ内に撮影される３次元物体の３次元構造データを作成する作成手段と、
前記第２の画像データを撮影する第２の撮影手段と、
前記算出手段で算出されたカメラパラメータと前記作成手段で作成された３次元構造データに基づいて、前記第２の撮影手段のカメラパラメータを制御するカメラ制御手段と、
前記カメラ制御手段により制御された前記第２の撮影手段により撮影された前記第２の画像データと、前記第１の画像データとを合成する画像合成手段を有することを特徴とする合成画像生成装置。
【請求項２】
請求項１に記載の合成画像生成装置において、
更に、前記カメラ制御手段により制御された第２の撮影手段により撮影された前記第２の画像データから合成に必要な部分を切り出す切出手段とを有し、
前記画像合成手段は、前記切出手段によって切り出された画像データと、前記第１の画像データを合成することを特徴とする合成画像生成装置。
【請求項３】
請求項１記載の合成画像生成装置において、
前記カメラパラメータは、前記第１の画像データを撮影する撮影手段の位置に関する３つのパラメータと方向に関する３つのパラメータおよび焦点距離に関する一つのパラメータであることを特徴とする合成画像生成装置。
【請求項４】
請求項１乃至３に記載の合成画像生成装置において、
前記合成画像生成手段で合成された合成画像を表示する表示手段を更に有することを特徴とする合成画像生成装置。
【請求項５】
請求項１乃至４のいずれかに記載の合成画像生成装置において、
前記算出手段は、前記消失点の直交方向に基づいて、前記カメラパラメータを算出することを特徴とする合成画像生成装置。
【請求項６】
請求項１乃至５のいずれかに記載の合成画像生成装置において、
前記第１の画像データを表示する表示手段と、
使用者の指定に応じて、前記表示手段で表示された第１の画像データ上の位置を入力する入力手段とを更に有し、
前記算出手段は、前記入力手段で入力された位置を前記消失点として認識することを特徴とする合成画像生成装置。
【請求項７】
請求項１記載の合成画像生成装置において、
更に、前記第１の画像データから３次元位置を求める指定点、および前記指定点と前記実写動画像の特徴との関係を規定する拘束条件を指示する情報を入力する手段を有し、
前記算出手段は、前記第１の画像データを撮影した視点位置と前記指定点とを結ぶ３次元空間上での線分上にありかつ前記拘束条件を満たす点の３次元位置を算出し、
前記作成手段は、前記点の位置に基づいて前記第１の画像データに写る３次元物体の３次元モデルを作成し、
前記合成手段は、前記作成した３次元モデルを前記第一の画像データに重ねることにより合成画像を生成することを特徴とする合成画像生成装置。
【請求項８】
３次元物体を２次元平面上に撮影した第１の画像データと、３次元物体を２次元平面上に撮影した第２の画像データから、それぞれを合成した合成画像を生成する合成画像生成方法において、
前記第１の画像データを撮影する第１の撮影ステップと、
前記第１の画像データ内に撮影される３次元物体の消失点に基づいて、前記第１の画像データを撮影する撮影手段の位置と方向および焦点距離からなるカメラパラメータを算出する算出ステップと、
前記カメラパラメータに基づいて、前記第１の画像データ内に撮影される３次元物体の３次元構造データを作成する作成ステップと、
前記第２の画像データを撮影する第２の撮影ステップと、
前記算出ステップで算出されたカメラパラメータと前記作成ステップで作成された３次元構造データに基づいて、前記第２の撮影ステップのカメラパラメータを制御するカメラ制御ステップと、
前記カメラ制御ステップにより制御された前記第２の撮影手段により撮影された前記第２の画像データと、前記第１の画像データとを合成する画像合成ステップとを有することを特徴とする合成画像生成方法。
【請求項９】
請求項８に記載の合成画像生成装置において、
更に、前記カメラ制御手段により制御された第２の撮影手段により撮影された前記第２の画像データから合成に必要な部分を切り出す切出ステップとを有し、
前記画像合成手段は、前記切出ステップによって切り出された画像データと、前記第１の画像データを合成することを特徴とする合成画像生成方法。
【請求項１０】
請求項８または９いずれか記載の合成画像生成方法において、
前記カメラパラメータは、前記第１の画像データを撮影する撮影手段の位置に関する３つのパラメータと方向に関する３つのパラメータおよび焦点距離に関する一つのパラメータであることを特徴とする合成画像生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、３次元形状モデルの作成技術に関し、特に実写画像に写る物体の３次元形状モデルを作成する３次元モデル作成装置及び方法に関する。
【０００２】
【従来の技術】
コンピュータ等を用い、３次元物体の３次元形状モデルを作成する方法としては、ユーザがＧＵＩ等を用い物体の形状や座標を対話的に入力し作成する方法が一般的である。形状や座標の入力方法としては、３面図を用いたり、プリミティブと呼ばれる基本的な図形群のなかから作成する物体に最もあてはまる図形を選び適当な変形を加えてモデルを作成する方法、直接長さや座標を数値で入力する方法等がある。
【０００３】
例えば、特開平５ー３４２３１０号公報「線要素データの３次元変換装置及び方法」では、３次元物体を入力する際に紙面上にスケッチしているかのように操作できる装置を提示している。
【０００４】
一方、物体のモデルを作成する際の条件として、（１）物体の形状が既知あるいは計測可能な場合、（２）物体の形状は未知あるいは未定で、具体的な形状や寸法を決定しながらモデルを作成する場合、（３）物体の形状は未知であるがその実写画像がある場合、などが考えられる。
【０００５】
本発明の対象とする条件は、（３）の物体の形状は未知だがその実写画像がある場合である。この場合、実写画像を参照しながら（２）の形状未知の物体のモデル作成方法を用い、その際できあがるモデルが結果的に実写画像の物体になるべく近くなるように作成する方法が一般的である。しかし、この方法はあくまで実写画像を物体のモデルを作成するための参照として用いるだけなので、実写画像の物体形状に関する２次元的な情報は直接モデル作成には反映されない。
【０００６】
特開平５−２３３７８１号公報「動画像利用の立体モデル作成システム」では、実写画像を参照して立体モデルを作成するとき、実写画像内の対象物と、作成する立体モデルの生成画像を同一画面上で重ねて表示する方法を提供している。利用者は少ない心理的負担で、実写の対象物と立体モデルの生成画像の差違を容易に確認できる。しかし、この場合も、作成したモデルを確認する、という意味で実写画像を用いているだけで、モデル作成時にその情報を利用することには言及していない。また、実写画像と作成モデルを重ねあわせるために必要な、実写画像のカメラパラメータがわかっている必要がある。
【０００７】
実写画像の２次元情報から、３次元モデルを直接作成することは一般には不可能である。２次元の映像情報からは、そこに表示される任意の点の奥行き情報がわからないため、それが３次元的にどの位置にあるのかを一意に特定することができないからである。しかし実際にはさまざまな前提条件を仮定すれば求めることができ、その手法は立体認識と呼ばれている。
【０００８】
立体認識は大きく２つの手法に分類できる。一つは異なる視点から見た複数の映像を用いる方法で、もう一つは１枚の画像だけからその画像に含まれる２次元座標以外の情報を利用し３次元構造を復元する方法である。
【０００９】
複数の画像を用いる方法で代表的なのはステレオ画像による立体認識である。異なる場所に設置した２台以上のカメラによって同一物体を撮影し、それぞれのカメラの相対位置関係の情報と、画像上に写るある点のそれぞれの画像上での２次元座標値からその３次元座標値を求める。
【００１０】
１枚の画像による立体の認識方法には、（１）３次元座標値が既知の点を参照する方法、（２）画像に写る物体と、あらかじめ用意した基本形状のモデルとの比較を行なう方法、（３）画像のテクスチャ情報を用いる方法、などがある。
【００１１】
３次元座標値が既知の点が３点以上あればカメラ視点の３次元座標と視線の方向を求めることができる。この問題は一般に  ＰｎＰ  （Ｐｅｒｓｐｅｃｔｉｖｅ  ｎ−Ｐｏｉｎｔ  Ｐｒｏｂｌｅｍ）問題と呼ばれている（出口光一郎：“画像と空間”、昭晃堂、１９９１）。しかし、この方法はあくまでカメラのパータを求めるだけで、画像に含まれるその他の点の３次元座標を求めることはできない。
【００１２】
画像に写る物体と、あらかじめ用意した基本形状のモデルとの比較を行なう方法は、さまざまな基本形状の３次元モデルを用意しておき、それを透視変換で見た画像と、実際の画像との比較を行ない、３次元モデルを推定、近似する方法である。
【００１３】
本方法を３次元モデル作成に適用したシステムには、特開平４−２８９９７６号公報「三次元形状モデル生成方法およびシステム」がある。これは、対象となる三次元物体の二次元図形情報を入力し、その物体と基本形状が近似する三次元基本形状モデルを入力し、お互いの制御点の対応づけを行なうことで基本形状モデルを変形して三次元モデルを作成する方法を提供している。
【００１４】
画像のテクスチャ情報を用いる方法の代表的なものとして  Ｓｈａｐｅ  Ｆｒｏｍ  Ｔｅｘｕｒｅ法がある。物体の表面のテクスチャの密度の濃淡から、その平面の向きを算出する。算出の精度が、物体の表面のテクスチャの種類に依存するなどの短所がある。
【００１５】
【発明が解決しようとする課題】
実写画像に写る物体の３次元モデルを作成するにあたり、実写画像を直接用いず３次元モデルを作成し、作成したモデルを確認するために、作成したモデルと実写画像を重ねて表示する方法では、実写画像に含まれる物体の形状情報をモデル作成時に有効に活用していない。
【００１６】
このため、３次元モデル作成時に実写画像の物体にあてはまるモデルを作成するためにモデリングと確認を試行錯誤しながらくり返し行なう必要がある。
【００１７】
３次元基本形状モデルを入力し、２次元画像上で実写画像の物体とそのモデルが一致するように変形する方法では、その画像を写したカメラの位置、方向等のパラメータが既知である必要があり、また基本形状モデルと実写画像上の物体との制御点の対応づけを行なう必要がある。
【００１８】
複数の画像を用いる方法（ステレオスコープ）では、同じ物体を違う方向から写した画像を複数枚用意する必要がある。
【００１９】
本発明の目的は、ある物体の３次元モデルを作成する際に、その物体の実写画像を有効に利用し、なるべく簡単な方法で作成する３次元モデル作成装置及び方法を提供することにある。
【００２０】
本発明の他の目的は、実写画像から求まる該実写画像を撮像したカメラパラメータを用いて該実写画像の三次元モデルデータを求める３次元モデル作成装置及び方法を提供することにある。
【００２１】
本発明の他の目的は、実写画像から求まる該実写画像を撮像したカメラパラメータと該カメラパラメータを用いて実写画像をモデリングし、モデリングした実写画像のデータを用いて、実写画像に他のイメージを合成する３次元モデル合成装置及び方法を提供することにある。
【００２２】
【課題を解決するための手段】
上記課題を解決するため、本発明では、３次元物体の写る実写画像があったときに、その実写画像データから、ユーザが対話的に、特徴点の画像上での位置などの実写画像に関する特徴情報を入力する手段と、その特徴情報に関する知識情報を入力する手段と、それらの情報から前記実写画像を写したときのカメラパラメータ算出手段と、前記実写画像から、そこに写る３次元物体の特徴点位置等の特徴情報をユーザが対話的に入力する手段と、その特徴点に関する３次元的な拘束条件等の知識情報を入力する手段と、入力したそれらのデータと前記カメラパラメータから、その点の３次元座標を算出し、最終的に前記３次元物体の３次元モデルを作成する手段を備える。
【００２３】
【発明の実施の形態】
図１は、本発明に基づく実施の形態の装置構成である。数値やコマンドを入力するキーボード（１１０）、２次元座標値の入力やＧＵＩ（グラフィカルユーザインタフェース）を操作するためのマウス（１０３）、実写画像や３次元モデル、ＧＵＩなどを表示するディスプレイ（１０１）、実写画像データやモデルデータ、プログラムなどを保存するためのハードディスク等の補助記憶装置（１０２）、作業時に画像データやモデルデータ、計算結果やプログラムなどを記憶する主記憶（１１１）、プログラムに基づいた計算や制御を行なう  ＣＰＵ（１０５）  、実写画像の表示や３次元モデルの表示を制御するグラフィックボード（１０４）などを主体として構成される。
【００２４】
主記憶には、本装置の動作を記述するプログラム（１０６）、作成したモデルの３次元構造データや、実写画像のカメラパラメータデータを記録する３次元データテーブル（１０７）、対象となる実写画像をディジタル化した画像データ（１０８）、操作時に計算結果やパラメータ等を記録する計算データ（１０９）などが記憶される。
【００２５】
グラフィックボードは３次元処理機能を持つものとする。すなわち、表示するモデルの３次元構造、ディスプレイに表示する際の投影条件（透視投影、平行投影など）、カメラ位置、方向、焦点距離などのカメラパラメータなどを指定すれば、その条件で見えるモデルの形状を自動的に表示してくれる。本実施の形態では、この機能をグラフィックボードというハードウェアが行なうとしたが、本機能をソフトウェアが行なう、あるいはソフトウェアとハードウェア両者が行なうといった形態も考えられる。なお、この機能は３次元グラフィックスに対応したコンピュータでは一般的なものである。
【００２６】
本実施の形態による装置の利用目的は、実写画像からそこに写る物体の３次元構造を求めること、ならびにその画像を写したときのカメラパラメータを求めることである。本実施の形態によって求められた３次元構造を用いるアプリケーションとして、具体的には、ある家の内部をカメラで撮影した実写画像があった場合、この画像に、ＣＧ  で作った架空のキャラクタが自由に歩きまわれる、といったものがある。あるいは、その画像の任意の位置に  ＣＧ  で作った仮想の机を置いて合成表示する、といったアプリケーションを想定することもできる。
【００２７】
このようなアプリケーションにおいて、実写画像に３次元  ＣＧ  モデルを違和感なく合成するためには、（１）実写画像内の物体と  ＣＧ  モデルとの前後関係、（２）お互いのパースの一致、（３）影の映りこみなどの問題から、合成する実写画像（３次元ＣＧモデルの背景を成すもの）の３次元構造がわかっている必要がある。なお、以下の説明において、実写画像の３次元構造とは、その実写を写したときのカメラ位置、方向などのカメラパラメータ、およびその画像に写る物体の３次元構造情報のことをあらわすものとする。
【００２８】
まず、実写画像内の物体とＣＧモデルとの前後関係について、図２、図３、図４を用いて詳しく説明する。
【００２９】
図２は合成に用いた場合に背景となる実写画像（２０１）である。実写画像には３次元物体Ａ（２０２）３次元物体Ｂ（２０３）が映っている。
【００３０】
図３は合成する  ＣＧ  モデル（３０１）である。  ＣＧ  モデルは３次元的に作成されている。すなわち、平面画像ではなく、立体モデルとして作成されているものとする。
【００３１】
図４は合成した画像（２０１）である。図に示した位置に  ＣＧ  モデル（３０１）がくるように合成すると、図のように  ＣＧ  モデルの一部が実写画像の物体（２０３）に隠れていなければ不自然である。このような効果を出すには、１例として次のような処理が必要である。
【００３２】
（１）合成する実写画像に写る物体（２０２）（２０３）の３次元モデルを作成し、そのモデルと前述の  ＣＧ  モデルを３次元的に合成した画像を作成する。ここで３次元的に合成するとは、ある方向から見たときに前の物体によって、後ろの物体が隠れる陰面処理を行なうということである。この処理は３次元グラフィックボードが自動的に行なってくれるのが一般的である。
【００３３】
（２）次にこの実写画像に写る物体の３次元モデルを画像上から消去する。
【００３４】
（３）その画像を実写画像に重ねて表示する。
【００３５】
以上の手順により、図に示すような実写の物体に部分的に隠れた  ＣＧ  モデルを合成することができる。
【００３６】
次にパースの一致について、投影条件として透視投影を仮定し説明する。透視投影では手前のものは大きく、遠くのものは小さく映り、また平行線は無限遠上で一点に交わる。
【００３７】
ある実写画像に、手前にある物体（５０３）と、遠くにある物体（５０４）が映っているとする（図５）。この実写画像に  ＣＧ  モデル（５０１）を合成しようとすると、合成する３次元的な位置に応じて、ＣＧ  モデルの大きさを変化させなければならない（５０１）（５０２）。カメラ位置からの距離と、どれだけ小さくなるかの関係を、実写画像と合成する  ＣＧ  モデルとの間で一致させないと、例えばモデルが遠くに移動したとき極端に小さくなったり、モデルが地に足をついているように見えなくなってしまう。こういった不自然な合成にしないためには、実写画像と、合成するＣＧ画像それぞれのカメラ位置、視線方向、焦点距離などを一致させる必要がある。このため、実写画像のカメラパラメータは必要不可欠な情報となる。
【００３８】
次に図６を用いて、影の映りこみについて説明する。リアルな合成画像を作成するには合成するモデル（６０１）の影（６０３）を、もう一方の合成する実写画像（６０２）に描画しなければならない。影が地面に写るだけなら複雑にはならないが、実写画像の物体に映りこむことも考えられる。その場合は、写る先の物体（６０２）の３次元形状がわからないと、その影の形（６０３）を求めることができない。
【００３９】
以上述べてきたように多くの理由から、実写画像とＣＧモデルとのリアルな合成画像の作成のためには実写画像の３次元構造は必要不可欠である。
【００４０】
以下、本実施の形態におけるディスプレイに表示される画面の例、プログラムの流れ等について説明する。
【００４１】
図７は本実施の形態で用いる実写画像（７０１）の例である。画像にはある物体（７０２）が映っている。本実施の形態では、カメラあるいはビデオなどで撮影した画像を、スキャナあるいはＡＤ変換器などを用いてディジタル化したデータを用いる。画像データの解像度は、誤差の問題等からなるべく高解像度のものが望ましい。本データは本実施の形態の構成における補助記憶装置に記録されているものとする。
【００４２】
以下、図４３のフローに従い、カメラパラメータの求め方を具体的な例に従って説明する。
【００４３】
図８は本装置のディスプレイ上に表示される初期画面の１例である。画面（８０１）には画像の表示やコマンドの入力を行うウインド（８０２）が表示されている。ユーザは“ファイルを開く”コマンド（８０３）を選択し、画像データのファイル名を指定する。装置のプログラムはこの操作が行われると、補助記憶装置から該データを読みだし、主記憶に記憶させるとともに（４３０２）、画面上に表示する（４３０３）。主記憶上には、この画像データのための３次元データテーブル格納領域が確保される。
【００４４】
まずユーザは、この実写画像のカメラパラメータ（視点パラメータ）を求める操作を行なう。本実施の形態では、カメラパラメータを求める方法として、画像上の消失点とその直交方向を用いる方法を１例としてとりあげる。消失点とは、３次元空間上で平行な線が無限遠において、投影面上で１点に収束する点である。
【００４５】
図９は、図８でとりあげた物体（９０１）の、ある方向（９０３）の消失点（９０２）を示したものである。この方法を用いるためには、画像に消失点とその直交方向が映っていなければならないという条件が必要となるが、建物や直線の道路などが映っている風景画像はほとんどの場合この条件を満たすし、部屋の内部の画像も、机等の家具は直方体に近いものが多いなど、一般にこの条件を満たしている画像は少なくない。ユーザは画像からある消失点を選ぶ。このときの条件は、その消失点に収束する線分と、それに直交しかつ、お互いに直交する２方向が画像上から読み取れることである。図１０に示すように、例えば直方体（１００１）が１つ映っていれば、候補となるのは次の組み合わせである。
【００４６】
0003575469.tif 000002
ユーザはこのなかから１つの組み合わせを選び、まずその消失点を指定する。指定の方法は、本実施の形態では空間上の複数の平行線の交点として指定する方法を用いる。
【００４７】
直線の指定の方法は、マウスによって、画像上の線分の両端の位置を指定するなどの方法が考えられるが、１度の操作で正確に指定することは難しい。そこで本例では、とりあえず直線の両端を指定しその直線を補助線として画面上に重ねて表示させた後、両端などの制御点をマウスでドラッギングすることで移動修正できるようなユーザインタフェースを用いる。ユーザはコマンドを選べば、１方の端点は固定のままもう１方の端点を移動する、両者を同じ方向に移動させ、結果として線分を平行移動する、などの操作を行なうことができる。またマウスだけでなく、キーボード等を用いて線分や制御点をキーボードを押した距離だけ移動させることもできる。さらに、移動の単位はサブピクセル単位の移動も可能とし、アンチエイリアスの技術を用いて、直線のサブピクセル単位の位置の表示を行なう。
【００４８】
図１１はこの操作を示した例である。ユーザはまず、線分（１１０４）を画面上で描く。線分の両はじには、制御点（１１０６）（１１０１）が表示されている。この制御点（１１０６）をマウスポインタ（１１０８）によってドラッギングすると、新たな位置（１１０７）に移動する。移動を終了するとその制御点が端の点になるような線分（１１０５）に修正される（４３０４）。以上のようにして、複数の直線（１１０５）（１１０２）（１１０３）を指定した後、適当なコマンド例えば“消失点算出”などのコマンドを入力すると、プログラムは複数の線分の交点としてその点の画像上の２次元位置を算出する。この場合、本来、それら複数の線分はある１点で交わらなければならないが、実際は誤差などの影響で必ずしも１点で交わらないことがある。図において点線円で囲った部分（１１１０）を拡大したものが図１２である。このように複数の直線が１点で交わらないときには、それぞれの線分からの距離の自乗和が最少となるなど何らかの条件のもと、近似的に交点（１１２０）を求める（４３０５）。具体的な算出方法は、「金谷、画像理解、森北出版、１９９０、ｐ１５」などに詳しい。画面上では、求められた消失点位置に、確認のための点が表示される。
【００４９】
次にユーザは、この消失点に向かう方向と直交する二つの方向を指定する。
【００５０】
指定方法は本例でこれまで述べてきたような直線の指定方法を用いる。この２つの線の交点が、３次元を算出するときの原点になる。またこの２線の方向が  Ｘ軸方向、Ｙ  軸方向、またこの交点と前述の消失点とを結ぶ方向が  Ｚ  方向となる。画面上では、２直線が指定された時点で、わかりやすいように  Ｚ  方向が線分として表示される。図１３はその画面の例である。消失点としてドット（１２０８）が表示され、Ｘ方向として、線分（１２０２）、Ｙ方向として、線分（１２０１）、Ｚ方向として、線分（１２０３）が表示される。原点は（１２２０）の位置になる。
【００５１】
図１４に、座標系の関係を示す。図において、補助線（１３０１）は視線方向を、（１３０２）は投影面をそれぞれ示している。本装置の画面上で、実写画像を用い平面的に座標を指定する場合に用いる座標系は、この投影面の中心を原点（１３０４）にした２次元の座標系である投影座標系（１３０３）（１３０５）である。これに対し、この座標系とは全く無関係に、定義される３次元座標系（１３０６）（１３０８）（１３０９）がある。この座標系をワールド座標系とする。実写画像（投影画像）上での線分（図１３）（１２０２）が、３次元空間（ワールド座標系）上での線分（１３０６）を、線分（１２０１）が線分（１３０９）を、線分（１２０３）が線分（１３０８）を、また実写画像上での点（１２２０）が３次元空間上での点（１３１０）をそれぞれあらわすことになる。今後、画像上で２次元的に座標を指定するときは投影座標系、３次元モデルの形状やカメラパラメータなどを記述するときはワールド座標系を用いる。投影座標系とワールド座標系の関係は、その投影画像を撮影したときのカメラパラメータすなわち、ワールド座標系におけるカメラ位置、カメラ方向、焦点距離が決定されれば、後述のように記述される。
【００５２】
いま、画像平面上の消失点位置  Ｐｖ    （ｘｖ，  ｙｖ）  、その直交方向  ｖｘ  ，    ｖｙ  が入力されると、プログラムは、この値を用いて、この画像のカメラ位置  （ａ，  ｂ，  ｃ）、方向  Ｒ、焦点距離  ｆ  を求める（４３０６）。なお、このときの座標系は、前述の  Ｘ  軸、Ｙ  軸、Ｚ  軸を用いたワールド座標系である。方向  Ｒ  は、３  ×  ３  の単位直交行列である。以下、算出方法を簡単に説明する。
【００５３】
一般に、（数１）で示される画像面に投影されるある点の投影面座標での位置
【００５４】
【数１】
0003575469.tif 000003
【００５５】
と実際のその点のワールド座標系での３次元位置
【００５６】
【数２】
0003575469.tif 000004
【００５７】
との関係は、
【００５８】
【数３】
0003575469.tif 000005
【００５９】
であらわされる。なお、
【００６０】
【数４】
0003575469.tif 000006
【００６１】
である。
【００６２】
画像面に投影される  Ｚ  方向の消失点位置を
【００６３】
【数５】
0003575469.tif 000007
【００６４】
画像面の原点位置を
【００６５】
【数６】
0003575469.tif 000008
【００６６】
画像面のＸ軸方向、Ｙ軸方向のある点をそれぞれ
【００６７】
【数７】
0003575469.tif 000009
【００６８】
【数８】
0003575469.tif 000010
【００６９】
とおくと、行列Ｒの正規直交性の条件等を用い、
0003575469.tif 000011
とおいたとき、
【００７０】
【数１２】
0003575469.tif 000012
【００７１】
のｆについての４次方程式が成り立ち、これによりｆが求まる。さらに、
【００７２】
【数１３】
0003575469.tif 000013
【００７３】
【数１４】
0003575469.tif 000014
【００７４】
【数１５】
0003575469.tif 000015
【００７５】
ここで        ｋ，  ｌ，  ｍ      は未知定数から、それぞれが単位直交系をなすように未知定数を求めることで、回転行列Ｒが算出される。
【００７６】
さらに、カメラパラメータの中のカメラ位置（視点位置）については、
【００７７】
【数１６】
0003575469.tif 000016
【００７８】
より、スケールファクタｚ０が残る形で求まる。
【００７９】
以上述べた計算をプログラムは行ない、これにより画像のカメラパラメータが求まる。以上の結果は、主記憶にある前述の画像３次元データテーブルに記録される。またこれ以降、プログラムは、３次元モデルをこの画面上に表示する際には、このカメラパラメータをモデルの３次元座標値とともに前述のグラフィックボードに渡し、常に表示する３次元モデルがそのカメラパラメータで見た映像として表示されるようにする。
【００８０】
画像の３次元カメラパラメータが求まると、プログラムは、前述の作業で表示していた、画像上の線分、すなわち２次元的に指定した原点と消失点を結ぶ線分（１２０３）およびユーザが入力した２つの直交方向を示す線分（１２０１）（１２０２）を消去し、新たに、３次元座標で    （−∞，  ０，  ０）  と  （∞，  ０，  ０）  を結ぶ直線（図１４、１４１０）、（０，  −∞，  ０）  と  （０，  ∞，  ０）  を結ぶ直線（１４１１）、（０，  ０，−  ∞）  と  （０，  ０，  ∞）を結ぶ直線（１４１４）を補助線として表示する（４３０７）。これらの直線は、前者の３つの線分と画像平面上で全く一致する。
【００８１】
これらの３本の補助線の他にユーザがわかりやすいように、それが  Ｘ，  Ｙ，  Ｚ軸を示しその交点が原点をあらわすこと示すｘ，  ｙ，  ｚ  ，Ｏ  の文字を表示する（図１５）（１４１５）（１４１６）（１４１７）（１４１２）。尚、ワールド座標系での座標軸を前記実写画像に重ねて表示し、これらの直線がユーザの選択した２直線及び原点と消失点を結んだ直線に一致するか否かをユーザは容易に確認できる（４３０８）。
【００８２】
一致しない場合は、ユーザの選択した実写画像における線分が不適であるかあるいは線分の指定に誤差が含まれているため不適であるかであるため、ステップ４３０４に戻って処理をやり直す。次に一致した場合は、先に主記憶に記憶した画像３次元データテーブルに格納したデータをカメラパラメータとして格納する（４３０９）。
【００８３】
以上で、本実施の形態の装置における画像のカメラパラメータ算出の一連の作業、動作は完了する。
【００８４】
次に、実写画像の中に存在する物体の３次元構造を求める作業および動作について説明する。
【００８５】
３次元構造を求める際には、後述する拘束条件を設定するモード、および設定しないモードを設ける。
【００８６】
まず、３次元空間上の点の位置を求める方法について述べる。
【００８７】
図１６に示すように、画面には３次元座標値を表示するためのテキストエリア（１４２１）（１４２２）（１４２３）が表示される。このエリアを仮に３次元座標表示ボックス（１４２０）と呼ぶことにする。ここには、現在対象となる点（線）の３次元座標値がリアルタイムに表示される。
【００８８】
本実施の形態で仮定している投影方法である透視投影は、図１７のような原理に基づいている。すなわち、カメラ位置（１７１０）から物体（１７１２）を見た映像は、両者を結ぶ直線（１７１４）が、投影面（１７１１）に交わる点の像（１７１３）となる。このため、投影画面上の一点を指定すると、それは３次元空間上では、ある線上の任意の点あるいはその線そのものをあらわすことになる。
【００８９】
図１８はこのことを示す１例である。視点（１７１０）から空間上の線分（１８１１）を見たとき、ちょうどそれが視線上（１８１３）にあると、投影画像（１７１１）には点（１８１０）として写る。逆に言うと、投影画像上で点（１８１０）として写る３次元上の物体（点または線分）は、直線（１８１１）上のどこにあるかはわからない。投影画像上の点は、３次元空間上の直線に相当する。
【００９０】
カメラ位置、方向、ならびに焦点距離がわかればこの線は投影平面上の一点に対して一意に求められる。第１のモード（後述する拘束条件の全くないモード）において、ユーザが表示されている実写画像上の任意の点をマウスによって指定すると、前述の３次元座表表示ボックスには、その点に投影される直線の３次元式が表示される。直線をあらわす方法は各種考えられるが、本例では、その直線がカメラ位置を通る直線であることから、カメラ位置と方向ベクトルの和、という形式で表示することにする。すなわち、投影座標系での、画像上のある点を
【００９１】
【数１７】
0003575469.tif 000017
【００９２】
カメラ位置を
【００９３】
【数１８】
0003575469.tif 000018
【００９４】
視点方向を３×３の直交ベクトル表示してＲとおき焦点距離をｆとおくと、その直線上の点は
【００９５】
【数１９】
0003575469.tif 000019
【００９６】
で求められる。よって、３次元座標表示ボックスには、例えばカメラ位置が  （８．  ２４，  ９．９９，  ６３．１２）だとすると、
Ｘ  ＝  ［  ８．２４      ＋        ｋ（０．２６）  ］
Ｙ  ＝  ［  ９．９９      ＋        ｋ（−０．０８）］
Ｚ  ＝  ［  ６３．１２    ＋          ｋ（０．９６）］
のように表示される。なお、ｋ  は任意のパラメータであることを示しており、  （０．２６，  −０．０８，  ０．９６）  はカメラ位置からの方向を示す単位ベクトルを示している。マウスを移動すれば当然この方向ベクトルの値は変化する。ユーザはこの値を見て、数値的に画像上の物体の位置を確認することができる。
【００９７】
次に拘束条件を設定するモードについて説明する。
【００９８】
図１９において、図示している点（１９１０）の３次元位置を求めることを考える。本来この点は、前述したようにある直線上の任意の点となり、一意に決めることができないが、この場合この点はＹ軸上の点であることが、画像の特徴から知識として仮定することができる。実際の画像においては、物体の垂直方向の各辺は、地面に対して垂直である、などという知識が、この仮定の根拠となる。ユーザは、これから入力する点がある線上に存在している、という拘束条件を与えて指示するモードを選択する。このモードを、線拘束入力モードと呼ぶことにする。具体的には、この例の場合  ｍ  をパラメータとおいたとき
【００９９】
【数２０】
0003575469.tif 000020
【０１００】
と拘束線を表現することができる。前述のように画像平面上のある点
【０１０１】
【数２１】
0003575469.tif 000021
【０１０２】
の位置に写る３次元空間上の点は式（１９）のようにあらわす直線上にあるので、この線と拘束線との交点を求めるために両者から
【０１０３】
【数２２】
0003575469.tif 000022
【０１０４】
の等式を立て、未知数  ｍ，  ｋ  を求めれば対象となる点の３次元位置を求めることができる。なお、空間上の直線と直線は必ずしも交点を持つとは限らないが、この場合は両者とも投影平面上で同一の直線上にあるため、必ず交点が存在する。
【０１０５】
以上の操作を一般的に述べる。
【０１０６】
まず、処理をスタートする（４４０１）。次に、実写画像のディジタルデータをメインメモリに読み込むと同時に、前述した方法に従い算出した実写画像を撮影した時のカメラパラメータを読み込む（４４０２）。
【０１０７】
次に、読み込んだカメラパラメータを用いてワールド座標系を求め、ワールド座標系における座標軸を前記実写画像に重ねて表示する（４４０３）。
【０１０８】
ユーザはまず、３次元位置を求めるべき点を、実写画像上から選ぶ（４４０４）。同時にその点を求める際に有効な拘束線を選ぶ（４４０５）。拘束線の指定の仕方は例えば次のような方法がある。
【０１０９】
一つはすでに３次元のおきている（求まっている）直線を指定する方法である。後に述べるように、本装置では、すでに３次元形状の求まっている点や線、あるいは面などを画面上に表示することができる。ユーザはこれらを表示させ、その中から拘束線となる線分を選択する。選択の方法はマウスによる線分のクリックなどが考えられる。この線分が拘束線となる。図１９の例では、  （０，  −∞，  ０）と  （０，  ∞，  ０）  を結ぶ直線である。
【０１１０】
もう一つは、すでに３次元のおきている点を指定し、その点からある方向を指定する方法である。まず、ユーザは前述の直線の指定のときと同じ様に、すでに３次元形状の求まっている点をすべて表示させ、その中から適当な点をクリックする。この点がカレントの点（カレントポイント）となる。ユーザはこのカレントポイントから方向を指定する。方向の指定の方法は、方向をベクトルとして直接数値で入力させることもできるが、Ｘ軸、Ｙ軸、Ｚ軸方向に拘束条件を設ける方法もできる。直接数値で入力させる方法では、ユーザは数値入力エリアに３次元座標値を入力する。数値入力エリアは、例えば３次元座標表示ボックス（図１６（１４２０））が兼ねる。この点と、前述のカレントポイントを結ぶ直線が、拘束線となる。軸方向に拘束条件を設ける方法は、次のような原理に基づく。Ｘ，Ｙ，  Ｚの３つの成分のうち２つの成分を固定させ残りの１つの成分を自由にすると、これは自由な成分の方向に平行な直線を示すことになる。例えば、ある点の座標を
【０１１１】
【数２３】
0003575469.tif 000023
【０１１２】
とし、Ｘ  ＝  ５０．２、Ｚ  ＝  ３３．４に固定し、Ｙ  成分を自由な値とするとこれは
【０１１３】
【数２４】
0003575469.tif 000024
【０１１４】
とパラメータ表現される。すなわち、
【０１１５】
【数２５】
0003575469.tif 000025
【０１１６】
の点をとおりＹ軸方向に平行な直線を示すことになる。
【０１１７】
ユーザが、カレントポイントを指定すると３次元座標表示ボックスにはそのカレントポイントの座標が表示される。Ｘ軸、Ｙ軸、Ｚ軸の３つのなかで、拘束する成分２つをボタンで選ぶ。たとえば、Ｘ軸方向、Ｚ軸方向の拘束ボタンを選ぶと、カレントポイントの座標値が表示されている３次元座標表示ボックスのＸの欄とＺの欄に網がかかる。これは、座標をあらわすＸ，  Ｙ，  Ｚ  の３つの成分のうち、Ｘ，  Ｚの値はこの値に固定されることを示している。図２０は、このときの実際の画面を示している。すでに３次元上の座標の求まっている、実写画像上のある点（２０２０）があるとする。ユーザはこの点を指定し、カレントポイントとすると、まず３次元座標表示ボックスの各エリア（２０２５）（２０２６）（２０２７）にはこの点の３次元座標値が表示される（４４０４）。次に拘束条件を入力する（４４０５）。例えばＸＺ軸成分拘束、Ｙ軸成分自由の線分を指定したいとすると、ユーザはボックス内のボタン（２０２３）と（２０２４）をクリックし、そのボタンを選択状態にする。エリア（２０２５）（２０２７）にはカレント点の座標値がそのまま表示される。またエリア（２０２６）には、値が任意のために何も表示されない。すなわちこれは、式（２４）
【０１１８】
【数２４】
0003575469.tif 000026
【０１１９】
で示される直線を意味している。プログラムは、実写画像上（１４１３）にこの直線を表示する。以上が実際に拘束線を定義する操作の例である。
【０１２０】
以上のような操作のいづれかによって、拘束線が決められると、プログラムはこの線分をわかりやすいように独自の色で表示する。
【０１２１】
次に、ユーザはこの拘束線上にある、目的の点を指定する（４４０６）。このとき、ユーザがマウスでポイントできる点はこの線上だけに限られる。例えば、図２１においてユーザが図の点（２１２０）をクリックしたときに、プログラムはこの点に最も近い拘束線上（２０２８）の点（２１１０）を指定点として認識する。プログラムは、指定点にその点が指定されたことを示す制御点（ドット）（２１１０）を表示する。一度の操作で目的の点が指定できるとは限らないので、一度ある点を指定して制御点を表示させた後、その制御点をマウスのドラッグによって移動させることもできる。なおこのとき移動させる位置も拘束線上にあるべきなので、マウスの位置に最も近い拘束線上の点に移動していくようにする。
【０１２２】
点として指定する本方法の他に、ユーザはある別の線と、拘束線との交点として、目的の点を指定することもできる。この方法を選べば、画面には図２２のようにもう１つの線（２２２０）が表示される。ユーザはこの線を、前述の消失点の指定のしかたの項で述べたように、両端の制御点（２０２１）のドラッギングなどの操作により移動させ、目的とする点（２２３０）が、この線と拘束線（２０２８）の交点の位置にくるようにする。この状態で、確定を指示するコマンドを入力すると、この点が指定点としてプログラムに認識される。
【０１２３】
この図の例に示した直方体の頂点などは、点として指定するより、辺と辺との交点として指定した方が、操作し易く正確に入力することができることが多い。なお、線の交点として指定点を入力する方法と、点として入力する方法は、ユーザの操作により自由に切り変えることができる。
【０１２４】
以上のようにして、拘束線の上の目的の点が、ユーザによって指定され、確定を指示するコマンドが入力されると（４４０７）、プログラムはこの点の画面上での２次元位置と、拘束線の式から式（２２）により、その３次元位置を求める（４４０８）。以上の処理により算出した３次元座標により３次元形状作成に必要な座標が揃ったか否か判断し（４４０９）し、揃っていない場合はステップ（４４０５）に戻って処理をやり直す。揃った場合は求めた結果は点を識別する  ＩＤ番号、その点の画像上での２次元位置とともに３次元データテーブルに記録される（４４１０）。３次元上の点の位置を指定、算出する方法は以上の通りである。
【０１２５】
ここで、３次元データテーブルについて説明する。図２３に示すように、このテーブルは大きく分けて、カメラパラメータに関するデータと、３次元モデルに関するデータが記録される。
【０１２６】
カメラパラメータは、前述のように、カメラ位置（２３２９）、視線方向（２３３０）、焦点距離（２３３４）があるが、本テーブルにはこのデータのほかに、この値を求めるために用いた情報も記録しておく。この情報を記録しておくことにより、後の修正処理などを行うことが可能になる。また、この情報は、実写画像上で指定した投影座標系でのデータとなるので、２次元データとなる。本実施の形態では、消失点とその直交方向を用いてカメラパラメータを求める方法を取り入れたので、このデータは、消失点位置（２３０１）と直交方向（２３２４）となる。消失点位置は、複数の直線の交点として指定したので、その直線（２３２１）（２３２２）（２３２３）を記録する。２つの直交方向は、その直線の両端の座標を結ぶ形で表現される（２３２６）（２３２７）。
【０１２７】
３次元モデルデータとは、後述する３ＣＧモデルを合成する場合に背景となるデータであって、実写画像上に写る物体をモデル化したときのデータである。モデルは点や線、面や立体などの集合として表現されるため、これらの種別を示すデータと、それぞれの形状や位置を特定するための座標値等のデータとその集合として記録される。例えば点であれば、その３次元座標値、線分であれば、両端の３次元座標値や、すでにこのテーブルに記述されている点のＩＤ番号などがこのデータになる。
【０１２８】
３次元データテーブルについての説明は以上である。
【０１２９】
次に、本実施の形態における、３次元上の直線の算出の手順、方法について述べる。
【０１３０】
第１の、直線の作成方法は、すでに作成された３次元上の点２つの結合として求める方法である。ユーザは、コマンドの操作により、すでに３次元座標の求められている点を実写画像上に重ねて表示する命令を発行する。プログラムはこの命令を受けると、３次元データテーブルを参照し、記録されている３次元点のデータとカメラパラメータデータを、グラフィックボードに渡す。グラフィックボードはこの点を、実写画像に重ねて表示する。
【０１３１】
ユーザは表示されている前述の点群のなかから適当な２つの点を選び、線作成のコマンドを発行する。プログラムはこの２つの点を結び、作成する直線とする。
【０１３２】
第２の、直線の作成方法は、すでに作成された３次元上の点を基準点として、その点から拘束条件を与えて、ある方向に伸ばしていく方法である。ユーザは、コマンドの操作により、すでに３次元座標の求められているすべての点を実写画像に重ねて表示する命令を発行する。プログラムがその点を表示すると、ユーザは適当な１つの点を基準点として選ぶ。そして、どの成分を拘束し、どの成分に自由度をもたせるのかを、画面上のボタンの入力等により指示する。例えば、基準点として
（５０．０，    ６０．０，    ３０．０）
を選び、拘束条件として、Ｘ軸方向拘束、Ｙ軸方向自由、Ｚ軸方向拘束、を選ぶと、候補となる線として、
（５０．０，    ｋ，    ３０．０）
とパラメータ表現される直線が表示される。ユーザはこの線を適当な始点、終点で切りとり、線分（直線）が完成する。このときの操作は、前述の点の指定のときの拘束線の指定の方法と同様である。
【０１３３】
第３の直線の作成方法は、実写画像上でのマウス操作により作成する方法である。ユーザは、画面上のボタン操作などにより、拘束条件を指定する。拘束条件の指定としては、例えば、作成する直線がある平面上にある、という指定がある。建物の写る実写画像を考える。建物の地面に接する辺（壁と地面の境界）は地面上（垂直方向を  Ｙ  軸とおいたとき、Ｙ  ＝  ０）に存在する。そこでユーザは
Ｙ  ＝  ０
を拘束条件として指定する。その後、ユーザは実写画像上（投影平面上）で、求める直線の２次元座標位置を指定する。指定の方法は、前に述べた消失点やその直交方向の直線を指定するときの方法と同様である。投影平面上の直線が決められ、それが存在する平面が決められると、３次元空間上の直線は一意に求まる。これについて具体的に説明する。図２４に示すとおり、カメラ位置（２４１０）を原点にとり、視点から投影面（２４１１）の法線方向に向かう方向（２４１２）を  Ｚ  方向、投影画像上の  ｘ  方向（２４１３）、ｙ  方向（２４１４）をそれぞれ、Ｘ  方向、Ｙ  方向とする座標系を、視点座標系とおく。なお、視点と投影面までの距離は焦点距離（２４１５）ｆである。ワールド座標系と視点座標系は、平行移動と回転移動によって簡単に変換することができる。
【０１３４】
いま、図２５に示すとおり、投影画像上（２４１１）の直線を  ａｂ（２５１５）  とし、カメラ位置を  Ｏ  （２４１０）とおく。投影画像上の  ａ  ｂ  の座標をそれぞれ、
【０１３５】
【数２６】
0003575469.tif 000027
【０１３６】
とする。視点座標系で３次元表現すると、焦点距離を  ｆ  とおいて、
【０１３７】
【数２７】
0003575469.tif 000028
【０１３８】
となる。投影画像上で、直線  ａｂ  に投影されるということは、この線（面）は、３次元空間上で  ａ，  ｂ，  Ｏ  の３点を結ぶ平面上（２５１１）にある。よって、求める直線はこの平面と、ワールド座標系における平面（２５１０）とが交わる部分（２５１６）になる。３次元空間上で平面と平面とが交わる部分は直線となるので、その交線が求める直線となる。
【０１３９】
第４の、直線の作成方法は、すでに作成された直線の平行移動として作成する方法である。ユーザは、すでに３次元形状の求められているすべての直線を表示するコマンドを発行し、実写画像上にその直線群を表示させる。適当な直線をマウス等の操作により選択し、メニューボタン等より、コピーコマンドを発行する。適当な位置を指定し、ペーストコマンドを発行するとその位置に新たな直線が生成される。位置の指定方法は、例えば、すでに３次元位置の求まっている点のなかから１つを選び、直線の始点とする方法、ユーザがマウスで指定した位置を直線の始点とする方法、などが考えられる。
【０１４０】
以上が直線の作成方法である。直線が作成されるとプログラムは、３次元データテーブルに記録するとともに、作成した直線を画像上に表示する。直線の両端は、制御点として、その点のドラッギングにより、長さ等の修正が行なえるようにする。
【０１４１】
次に、面の作成方法について説明する。
【０１４２】
第１の、面の作成方法は、すでに作成された３次元上の点や線の集合として作成する方法である。ユーザは、すでに作成された点や線を実写画像上に重ねて表示させるコマンドを発行する。そして、この中から３つ以上の点あるいは線と点の組み合わせを選択する。３次元空間上の３点が指定されれば、その３点をとおる平面は一意に決定されるので、それが作成する平面となる。あるいは１点と１直線が指定されれば、この点と線をとおる平面は一意に決定される。しかし、それ以上の条件が指定された場合は、それぞれが同一の平面に存在しない場合がありうる。本実施の形態では、作成する面として平面を考えているので、プログラムがこのことを計算により検知した場合は、同一平面に存在しないことを示すエラー表示を行なう。ユーザは対象点や線のなかで、必要ないものを選択からはずし、再び作成のコマンドを発行する。なお、平面のほかに曲面をサポートする装置の場合は、適当な曲面モデルが、選択した対象点群をとおるように変形する方法が考えられる。
【０１４３】
以上によって平面が作成されるが、その形状定義については後に述べる。
【０１４４】
第２の、面の作成方法は、すでに作成された３次元上の点や線を基準点基準線としてそこからある拘束条件を与えて作成する方法である。マウス等の操作により、基準点、基準線を選択する。ユーザはある拘束条件を与え、この条件のもと選択した基準点、基準線をとおる平面を作成する。例えば基準点が
【０１４５】
【数２８】
0003575469.tif 000029
【０１４６】
のとき、  Ｘ  成分自由、Ｙ成分自由、Ｚ  成分固定の拘束条件を定義したとき
【０１４７】
【数２９】
0003575469.tif 000030
【０１４８】
とパラメータ表現される平面が、作成する平面となる。拘束条件の指定の方法としてはほかに、法線ベクトルの指定などが考えられる。
【０１４９】
第３の、面の作成方法は、直接平面を数値により指定する方法である。例えば平面の式を
【０１５０】
【数３０】
0003575469.tif 000031
【０１５１】
で表現するとき、（ａ，  ｂ，  ｃ，  ｄ）  の値をキーボードなどで入力する。
【０１５２】
第４の、面の生成方法は、すでに作成されている平面を、平行移動等により移動させる方法である。ユーザはすでに作成されている平面群を、コマンドの操作によって表示させる。マウス等の操作により、適当な平面を選択し、コピーのコマンドを入力する。次に、適当な３次元位置を、キーボードによる数値入力、すでに生成されている３次元の点の選択などによって基準点として指定する。ペーストのコマンドを入力すると、プログラムは、前の操作によって選択された平面を、基準点をとおるように平行移動させた平面を、新たな平面として作成する。具体的には、選択された平面の法線ベクトルを求め、その法線ベクトルを持ち、基準位置をとおる平面を作成する平面とする。例えば基準点位置を
【０１５３】
【数３１】
0003575469.tif 000032
【０１５４】
法線ベクトルを
【０１５５】
【数３２】
0003575469.tif 000033
【０１５６】
とすると求める平面は、
１／ｎｘ  ・（Ｘ  −  ｘ１）  ＋  １／ｎｙ  ・（Ｙ  −  ｙ１）  ＋  １／ｎｚ  ・（Ｚ  −  ｚ１）    ＝    ０
（２６）
となる。
【０１５７】
以上述べたように、面の生成方法にはいくつかの方法が提供される。しかし今まで述べてきた方法では、面が生成されてもその形状までは定義されず、その平面は各方向に無限に広がる平面である。そこで、面の生成後にその形状を定義するプロセスについて説明する。
【０１５８】
前に述べたプロセスで、面が生成されると、次にユーザは画面上の実写画像上で、その面の輪郭となる線を指定する。例えばマウスの操作により、実写画像上で求める輪郭上にある点を複数指定する。特定のコマンドを入力すると、その点は直線あるいは適当な曲線（例えばスプライン曲線など）によって結ばれ閉領域が投影平面上で定義される。図２６において、（２６１３）が投影画像上（２４１１）のこの閉領域である。３次元空間上でこの閉領域とカメラ位置（２４１０）によって囲まれる立体（２６１７）によって切り取られる前述の平面（２６１０）が、最終的に作成する平面（２６１５）になる。
【０１５９】
この平面のデータ構造は各種考えられるが、本実施の形態では、次の形式をもつものとする。
【０１６０】
すなわち、その平面がとおるある点の３次元座標、平面の方向を示す法線ベクトル、平面を切り取る際に用いた閉領域を示す制御点列、その制御点を結ぶ方法としての補間方法の種別などである。
【０１６１】
これらのデータが、３次元データテーブルに面の識別ＩＤとともに記録される。
【０１６２】
なお、面が作成されそのデータが記録されると、ユーザからの要求によって、プログラムはこの面をワイヤーフレームとして実写画像上に重ねて表示することができる。面は、適当にメッシュ分割したワイヤーの集合として３次元空間上に描画される。グラフィックボードはこのワイヤーフレームを、実写画像とおなじカメラパラメータで見える映像として、実写画像に重ねて表示する。また、この平面の輪郭を指定するときに用いた制御点もあわせて表示し、ユーザのマウスドラッギングなどの操作により、形状の修正が行なえるようにする。
【０１６３】
以上が、面の生成方法である。
【０１６４】
次に、立体の生成方法について説明する。
【０１６５】
立体の生成方法は、次に述べる方法の他に、基本形状（プリミティブ）のあてはめによる方法が考えられるが、これについては後に説明する。また、立体の生成については、本装置で詳細に作成するよりは、本装置で作成した３次元上の点や線などを基本にして、他の３次元モデリングのための専用  ＣＡＤ  プログラムを用い作成する方が適当な場合が多いので、ここでは１例を上げるにとどめる。
【０１６６】
立体の生成方法の１つの例は、すでに３次元の求まっている点、線、面等の組み合わせで生成する方法である。ユーザはコマンドの入力により、すでに３次元の求まっている点、線、面を画面上に表示させる。ユーザは、マウスのクリックなどの操作により、このなかから、適当なものを選択する。例えば、６面体を生成するとき、それを構成する８つの頂点を指定する。ユーザが、８つの頂点からの６面体の生成というコマンドを入力すると、プログラムはこの３次元上の８つの点から６面体を生成する。別の例では、例えば円錘を生成するとき、その底面となる円と、頂点となる３次元上の点を選択する。底面と頂点からの錘体の生成というコマンドを入力すると、プログラムはその円と頂点から円錐を生成する。プログラムは、点や線、平面から各種の条件で立体を生成する方法を用意する。
【０１６７】
立体の生成方法の例は以上のとおりである。
【０１６８】
次に、基本形状（プリミティブ）を用いた、３次元形状の作成方法について述べる。
【０１６９】
図２８に示すような物体（２８０１）のある面（２８０２）の３次元構造を生成する場合を考える。図の物体がユーザの知識により立方体だとわかっているとすると、頂点すべて（２８０３）（２８０４）（２８０５）（２８０６）の３次元座標を求めるよりも、次の方法で形状を生成した方が適当な場合が多い。
【０１７０】
面（２８０２）の３次元形状を生成する。先の条件から、面（２８０２）は直方体になる。よって４つの頂点それぞれの位置を求めなくても、そのなかの３つの位置（２８０３）（２８０４）（２８０５）が求まれば、もう１つの点の位置（２８０６）は一意に決定される。よって、ユーザは図２７に示すような次の手順で、この面を作成する。
【０１７１】
まず、以前に述べた方法で３点の３次元位置を求める（２７０１）。ユーザはこの３つの点を選択し、長方形の基準形状選択のコマンドを発行する。プログラムは３点の位置から、３次元空間で長方形を形成するように残りの１点を求める。そのためにまず、すでに３次元座標の求まっている３点から、その３点の存在する平面を求める（２７０２）。次に、この平面上に存在し、２点から長方形の長辺、短辺の距離にある点を求め、これが４点めの３次元座標となる（２７０３）。この４点を結ぶ図形が、求める長方形となる（２７０４）。画面上の各頂点は制御点と表示し移動が可能の点として明示する。ユーザはこの点を、マウスのドラッギングなどの操作によって、移動することができる。
【０１７２】
いま、現在一般に普及している２次元平面上で図形を作成するドローイングプログラムを考える。このプログラムでは、ユーザは基本形状を選んだ後、その図形の制御点を移動することで、その基本形状の基本的な性質を拘束条件として、大きさや形状を変えることができる。たとえば、基本形状として長方形を選んだ場合、図２９に示すように、その頂点を移動させると、長方形の形状のまま大きさが変化する。長方形（２９０２）の各頂点は制御点としてドット（２９０３）が表示されている。ユーザはこの一つを選びマウスポインタ（２９０１）でドラッギングするとこの長方形の大きさが図（２９０５）のように変化する。ドラッギングをやめると、この図形が修正した長方形（２９０４）となる。
【０１７３】
これが一般的なドローイングプログラムの制御点移動による基本形状図形の変形方法であるが、本装置では、この機能を３次元的に実現させる。図３０は、図２８の図形の一部を部分的に示した図である。ユーザが画像上に投影されている図形（３００３）の制御点（３００２）を選択しドラッギングにより移動させる（３００１）と、２次元ドローイングプログラムのときと同様に、（１）選択した点と対角の位置にある頂点の位置は動かさない、（２）長辺、短辺の方向は変化させない、（３）長方形としての条件は維持させる、の条件に、（４）長方形の存在する平面は変化させない、の条件を加え、３次元空間上での長方形の大きさを変化させる。図に示すように、この平面上で長方形の形状が維持されるように大きさを変化させる。画像上には、この長方形が投影面に写る映像を表示する。このようにして、ユーザは投影面に写る画像をみながら、長方形の大きさを変える（３００４）ことができる。
【０１７４】
以上、長方形を例にして、基本形状を用いた３次元形状の作成方法およびその修正方法を説明した。基本形状としては、長方形の他に、楕円や多角形、スプライン曲面など多くのものがある。また平面図形だけでなく、立体についても同様の図形を用意する。これらについても、長方形と同様に投影画像上での操作で、大きさや形状を指定できるものとする。
【０１７５】
このように基本形状を用いて、３次元形状を作成する方法には、次のような長所がある。
【０１７６】
まず第１に、ユーザが対話によって３次元形状を求める数が少なくなることである。前の長方形の例では、ユーザは本来４点の位置を指定して求めるべきところが、３点の位置だけを求めればよく、残りの１点はプログラムが自動的に求めてくれる。よって、３次元形状を作成する容易度が増す。
【０１７７】
第２に、形状を矛盾なく、より正確に作成できることが上げられる。例えば前の例のように３次元空間上の長方形の作成を例に取った場合、４つのすべての頂点を個別に、前に述べた点の作成方法で求めると、それが誤差の影響で、必ずしも同じ平面上にできるとは限らなくなる。また、すべての角が直角になる保証はない。しかし、本方法によればこういった形状の基本的な性質はいつでも満たされるため、正確な形状に近くなる。
【０１７８】
第３に、移動や修正が容易に行なえることがあげられる。修正については、前に述べたような方法で、また移動については、その基本形状を生成する線や面などの要素をグループとして扱うことができるので、それぞれを個別に移動させるより容易に行なうことができるメリットがある。
【０１７９】
以上、基本形状を用いて３次元形状を生成する方法およびその長所について述べた。なお、本方法によって、形状がつくられた場合は、３次元データテーブルには、その形状を形作る座標値の他に、その形状を作る際に用いた基本形状の種別も記録されるものとする。これは後に修正を行なうときなどに必要とされる。
【０１８０】
次に、既存の３次元  ＣＡＤ  システムとの接続について説明する。
【０１８１】
本装置の目的の１つは、前に述べたように実写画像からそこに写る物体の３次元モデルを作成することであるが、作成するモデルの形状や性質によっては、本装置で作ることが機能等の理由で必ずしも適当でないことがありうる。すなわち、形状の複雑な物体や、曲面の集合であらわされる物体などは、本装置でモデルを作成するより、すでに一般的に用いられている３次元ＣＡＤ装置（モデリングプログラム）を用いた方が、複雑な図形を作成する機能が充実しているために、容易にかつ正確にモデルを作成できると考えられる。よって、このようなモデルを作成する場合は、本装置で作成するモデルの概略（基本的な寸法や位置など）を作成し、詳細はその  ＣＡＤ装置で作成するように、両者を使い分けて一つのモデルを作成していく、という利用形態が適当である。
【０１８２】
例をあげて説明する。
【０１８３】
図３３は、作成するモデルである。実写画像にはこの実物の映像が映っているものとする。このモデルはかなり複雑な形状をしているため、これをすべて本装置で作成することは、前述の理由で必ずしも適当でない。よって本装置ではまず、図３２に示すように、この物体の代表的な形状を作成する。代表的な形状とは、図のように物体の最外郭の形状や、窓等の物体の部分を構成する形状の特徴となる（位置や間隔などがわかる）形状である。図の例では、物体（３２０２）の代表形状を、線分（３２０２）（特徴線）や点（３２０３）（特徴点）の集合として表現している。このほかに、面や立体の集合とすることもできるが、なるべく簡単な要素で構成させた方が、この後のＣＡＤでの操作や修正がしやすい。このデータを既存のＣＡＤ装置（ＣＡＤプログラム）に渡す。ＣＡＤプログラムでは、このデータをもとに、物体の詳細なモデルを作成する。図３３に示すように、前述の線（３２０２）や点（３２０３）が対応する、物体の辺や頂点にくるように詳細データを作成していく。物体の代表形状は本発明による装置で実写画像を用いて作成してあるので、ＣＡＤプログラムによって作成されるモデル（３２０１）の３次元形状や３次元位置はほとんど正確なものになる。作成した詳細な３次元モデルデータは再び、本発明の装置に渡され、実写画像に重ねて表示する。これによりユーザは、正確に詳細モデルが作られたかどうかを確認することができる。
【０１８４】
図３１に、本機能を実現するためのシステム構成の１例を示す。本例では、前述の既存の３次元ＣＡＤ装置は、プログラムによって一般的なコンピュータ上で動くものを想定する。よって、ハードウェア的には図１で説明した本発明の装置の構成上で同時に動くことができ、主記憶（図１）（１１１）上にＣＡＤプログラムが追加されるだけである。
【０１８５】
ユーザは、実写画像データ（３１１０）から、本発明の装置の３次元抽出プログラム（３１０１）によって実写画像内のある物体の代表形状（特徴点、特徴線）を作成する。代表形状のデータは、本装置のデータ構造で作成され（３１０２）主記憶上に出力される。変換プログラム（３１０８）はこのデータ読み込みを、ＣＡＤプログラム用のデータ（３１０７）に変換し主記憶上に出力する。なお、この変換プログラム（３１０８）は本装置の主記憶上におく。ユーザは、主記憶上にあるＣＡＤプログラム（３１０６）を起動する。ＣＡＤプログラムはＣＡＤデータ（３１０７）を読み込む。ユーザはこのデータと３次元抽出プログラムで表示している物体の実写画像を参照して物体の３次元詳細モデルを作成する。ＣＡＤプログラムは作成された３次元詳細モデルデータを３次元ＣＡＤデータ（３１０９）として主記憶に出力する。変換プログラム（３１０３）は、このデータを本装置のデータ形式に変換し、主記憶上に出力する（３１０５）。３次元抽出プログラムはこのデータを読み込み、実写画像に重ねて表示する。ユーザはこれを見て、作成した物体のモデルが実写画像と比べて正確かどうかを確認することができる。
【０１８６】
以上のような構成により、本装置上に、３次元抽出プログラムと、既存のＣＡＤプログラムを同時に動かし連携させることで、ユーザは３次元モデルを容易に、正確に作成することができる。
【０１８７】
次に、いままで述べてきたような、実写画像を用いた対話的な３次元形状の作成過程における補助的な機能について説明する。
【０１８８】
（１）補助線表示機能
本作成方法では、さまざまな拘束条件を与えて投影画像から３次元位置を算出する。その条件に応じて補助線を表示すると、ユーザにわかりやすい操作を提供することができる。
【０１８９】
例えば図３４に示すような実写画像の３次元モデルを作成することを考える。ここに表示されている物体（１４１３）（建て物）のようなものの場合はその性質上、直交に交わる形状が多い。このためある部分で３次元空間上で直交する方向を決めれば、その他の部分でもこの方向に辺や面が存在するところが多い。例えば図の（３４１０）の部分で物体の側面から直交成分を生成すれば、それと３次元空間上で全く同じ方向に別の部位（３４０４）（窓の部分）も位置する。よって、窓の部位のモデルを作成するときに、この直交する成分（３４０１）（３４０２）（３４０３）を補助線として表示してやれば、形状の作成が容易である。図に示すように窓わくの方向は、補助線（３４０２）と（３４０１）上にある。
【０１９０】
図３５には、同一の画面上に異なる直交成分を持つ物体が存在している例を示す。例えば違う方向を向いたビルが建っている画像などが考えられる。このような場合は、それぞれの物体を作成するときにそれぞれの直交成分で補助線を表示させてやる。すなわち物体（３５１７）を作成するときには直交する３辺の形状を作成した時点で、補助線（３５１３）（３５１０）（３５１１）を表示させ、残りの辺を作成する。次に物体（３５１８）を作成するときには直交する３辺の形状を作成した時点で、補助線（３５１６）（３５１４）（３５１５）を表示し、残りの辺を作成する。
【０１９１】
（２）グリッド表示機能
実写画像にある規則に従った補助線（グリッド）を重ねて表示する。例えば地面に接している物体の３次元形状（位置）を作成するときには、
Ｙ  ＝  ０
の平面上に、ある間隔毎にグリッドを表示させてやれば（図３６）（３６１０）、物体の位置関係の視覚的な確認ができるため、作業が容易になる。このときは、カメラパラメータと共に、次の直線を３次元グラフィックボードに渡して描画させればよい。
【０１９２】
（  Ｘ，  ０，  ∞）      −      （Ｘ，  ０，  −∞）
Ｘ  ＝  ・・・  −５０，  −４０，  −３０，  −２０，  −１０，  ０，  １０，  ２０，  ３０，  ４０，  ５０，  ・・・
（∞，  ０，  Ｚ）        −        （−∞，  ０，  Ｚ）
Ｚ  ＝  ・・・  −５０，  −４０，  −３０，  −２０，  −１０，  ０，  １０，  ２０，  ３０，  ４０，  ５０，  ・・・
（３）作成履歴記録手段
本装置では、ある点や線などを作成する際に、複数の作成方法が提供されている。よってその選択によっては、同じ点や線でも３次元データ的に微妙に異なる形状が作成される可能性もある。そこで、図２３で説明した３次元データテーブルに、それぞれの３次元形状を作成したときに、どのような条件で、どのような基準点や補助線を用いて作成したのか、などの補助的な情報も付加させる。これにより、後に作成データの修正や確認を行うときに、この情報を表示させることで、再び拘束条件を入力させる必要が無い、修正すべきプロセスが見つけやすい、などの理由からその作業が容易にかつ正確に行うことができる。
【０１９３】
また、この機能を付加することで、ある図形の基準点、拘束条件にかかわる図形を修正したとき、それに応じてそれを基準に作成した図形の形状を自動的に変化させることができる。
【０１９４】
（４）画像処理表示機能
実写画像をそのまま表示するより、なんらかの画像処理を行ってその結果を表示させた方が、ユーザが作業をする上で解りやすい場合がある。例えば、画像の微分処理を行えばエッジが強調されるので、実写画像に写る物体の輪郭線などを抽出しやすくなる。ユーザの要求に応じて、このような画像を切り替えて表示する機能を設ける。
【０１９５】
（５）３次元モデル回転移動表示機能
作成した物体の３次元モデルは、実写画像に重ねて表示されるため、投影画像上でのみかけの形状の確認はできるが、それが３次元的にどのように作られているか、の確認はできない。そこで、ユーザの指示によって、作成した３次元モデルを実写画像上で回転、移動表示し、３次元的に確認する機能を設ける。
【０１９６】
図３８を用いて説明する。
【０１９７】
画面には、実写画像の物体（３８１０）が表示されている。ユーザはこの物体の３次元モデルを作成したものとする。よって画面上には、このモデルが例えばある色のワイヤーフレームとして物体（３８１０）に重なって表示されている。ユーザは画面上のボタン操作（スクロールバー操作）等によってこの３次元モデルを画像上で回転、移動表示させる。この例ではスクロールバー（３８１１）をスクロールさせると、画像上のモデルがＸ，Ｙ，Ｚ軸を中心に移動させた量だけの角度、回転するものとする。図（３８１３）は、操作後の３次元モデルである。このように表示させることで、作成したモデルが３次元的にどのような奥行きを持っているのかを画像上でリアルタイムに表示、確認することができる。
【０１９８】
図３７にそのときのプログラムの動作をフローチャートで示す。
【０１９９】
まず初期値として、回転行列  Ｒ  に単位行列、移動ベクトルｒに０を設定する（３７３０）。ユーザによるスクロールバー等の操作のイベントを監視し（３７３１）、イベントがあるとその値に従って、回転行列Ｒと移動ベクトルｒの値を更新する（３７３２）。回転行列Ｒと移動ベクトルｒの値にＣＧモデルの座標を変換し（３７３３）、グラフィックスボードにカメラパラメータとその値を渡し画面上にモデルを表示（３７３４）する。以上の動作を繰り返すことで、ユーザの指示する回転、移動後のモデルをリアルタイムに表示することができる。
【０２００】
（６）参照物体表示機能
本装置で求めたカメラパラメータで、あらかじめ作成してあるＣＧモデルを実写画像上に重ねて表示する機能を持つ。図３９に示すように、この機能を用いると、ユーザは画面に写る３次元空間上の任意の位置に、あらかじめ作成してある参照物体（３９１１）モデルを表示することができる。ユーザは、マウス等の操作によりこの物体を任意の位置に移動させることができる。この機能により、ユーザは求めたカメラパラメータでその参照物体がどう見えるかを確認することで、カメラパラメータの整合性を視覚的にチェックすることができる。すなわち例えばこの物体を３次元的に遠くに移動させたときに、画像上で実写画像の遠くの位置にあるように見えるかどうかの確認をかさすることができる。さらに、実写画像に写る物体のモデルを作成したときには、前に述べたようにそのモデルによるマスク画像を作成することで、実写内の物体に参照物体が隠れた映像や、実写内に参照物体の影が写る映像などを作成することができる。図は、実写内の物体（３９１０）に参照物体（３９１１）の一部が隠れている例である。この機能を持たせることで、作成した実写画像内の３次元物体が正確に作成されているかどうか、前後関係は正確かどうかなどの確認を行うことができる。
【０２０１】
以上、本発明の実施の形態を、例を用いて説明した。
【０２０２】
本発明の全体の概略を図４０を用いて説明する。
【０２０３】
本発明の目的は、カメラ（４０３０）等で映写した実写画像（４０３１）から、ユーザによる対話的な操作によって、その実写画像を写したときのカメラパラメータ（４０３４）と、その画像に含まれる物体の３次元ＣＧモデルデータ（４０３９）を算出、作成するものである。
【０２０４】
まずユーザは実写画像データ（４０３１）を用意する。プログラムは装置上の画面に表示する。
【０２０５】
ユーザは対話処理によってこの画像からまず、その実写画像の、カメラパラメータを求めるために必要な２次元座標値を入力する（４０３２）。上述の実施の形態では、消失点と直交方向である。同時に、カメラパラメータを求めるための条件（例では消失点と直交方向からカメラパラメータを求めるということ）を知識情報（４０３５）として指示する。
【０２０６】
プログラムは、それらの情報から３次元抽出アルゴリズム（４０３３）によって計算を行ない、カメラパラメータ（４０３４）を求める。
【０２０７】
カメラパラメータが求まると、画像上に写る物体の２次元座標値と、そのカメラパラメータと、画像に写る物体の種種の知識情報（４０３７）（地面に対して垂直である、直方体である等）と、作成する３次元モデルを構成する基本図形の性質（点、線、面、立体の種別と、直線、曲線の区別等、図形に関する情報）（４０３８）から、プログラムは、３次元抽出アルゴリズム（４０３６）によって３次元ＣＧモデルデータ（４０３９）を作成する。３次元ＣＧモデルデータは本装置だけで直接作成する他に、汎用のＣＡＤ装置などのＣＧモデル作成ソフト（４０４０）を用いて詳細なモデルを作ることもできる。
【０２０８】
このようにして、実写画像から、そのカメラパラメータと、そこに写る物体の３次元ＣＧモデルデータを作成することができる。
【０２０９】
次に本発明をアプリケーションの目的に合わせた実施の形態を説明する。
【０２１０】
アプリケーションの１つの実施の形態は、ある実写画像に３次元ＣＧモデルを合成して表示するものである。具体的にはある家の内部をうちした画像に、ＣＧで作成した家具を任意の位置に配置し表示するようなプレゼンテーションシステムである。家の内部の実写画像に、ＣＧによる家具を違和感無く合成するためには、実写画像のカメラパラメータと、実写に写る物体の３次元形状が分かる必要がある。カメラパラメータはＣＧの家具を遠い位置に配置したときに小さく表示されると行ったパースを合わせるために必要であり、また実写内の物体の３次元形状はその物体の後ろにＣＧモデルをおいたときに隠れて見えなくなるようにするために必要である。あるいは陰をリアルに付加するためにも用いられる。以上のようなシステムでは、予め実写画像の３次元構造を抽出したりＣＧモデルを作成するといった前処理を行うモデリング（オーサリング）の部分と、任意の位置にＣＧを合成表示したり、パースや印面処理などの効果を出して表示するといった実行時の処理を行うプレイやノブ分に大きく分けられる。前述の本発明による装置は、モデリングの部分に相当する。
【０２１１】
図４１は本システムの構成である。点線で囲んだ部分が前述の装置に相当し、図４０を簡略化してある。図４１における３次元構造データ（４１０５）は、図４０における出力データ即ちカメラパラメータ（４３０４）とＣＧモデルデータ（４３０９）を示している。プレイヤ部ではこの３次元構造データを用い、合成するＣＧモデルの合成時の画像を生成し、合成イメージを表示する。
【０２１２】
実写画像とＣＧモデルの合成手順を図４５に従い、説明する。
【０２１３】
まず、３次元ＣＧモデルのデータをメインメモリに読み込む（４５０２）。一方、実際に３次元ＣＧモデルが合成されるべき実写画像をメインメモリに読み込む（４５０３）。この読み込んだ実写画像を下に前述のモデリングを行い実写画像のカメラパラメータを算出し、このカメラパラメータを用いて３次元モデルデータから算出される実写画像の３次元モデルデータをメインメモリに読み込む（４５０４）。
【０２１４】
次に、３次元ＣＧモデルの実写画像における合成位置を入力し（４５０５）、モデリングされた実写画像の３次元モデルデータ及びカメラパラメータを用いて実写画像と３次元モデルデータを合成させたイメージを作成し（４５０６）、これを重ねて表示させる（４５０７）。
【０２１５】
次に、表示されたイメージを下により自然な合成となるよう３次元ＣＧモデルの合成位置が適切か否かを判断し（４５０８）、適切でない場合は３次元ＣＧモデルを適切な位置に移動させ（４５０８）、ステップ（４５０５）に処理を戻す。一方、適切な場合は処理を終了させる（４５０９）。
【０２１６】
図４１においては、予め既存のＣＡＤプログラム等で作成した３次元構造データ（４１０５）を用いてその条件下で見えるＣＧモデルの映像を作成する。顔図合成部（４１０８）では合成する実写データ（４１０２）に必要に応じて陰影を付加するなどの処理を加えた後、ＣＧモデルの映像を重ね合わせて画像表示部（４１０９）にて表示する。ＣＧモデル顔図生成部および画像合成部における画像の具体的な生成方法については、特開平８−１５３２１３号公報にてＺバッファ等を用いた陰面処理方法や陰影付加方法などを提示している。更に実写画像が時間と共に変化する動画像についても、各フレーム毎に実写画像のカメラパラメータや画像内の物体の３次元位置等を求め、３次元構造データ（４１０５）とし、各フレーム毎に画像合成処理を行えば、同様に合成画像を作成することができる。
【０２１７】
次のアプリケーションの実施の形態は、ある実写画像に、別の実写画像に写る物体を合成して表示するものである。具体的には、例えばテレビや映画などにおいて、ある実写風景画像にスタジオで撮影した人物を合成する等の合成処理が考えられる。この場合も、違和感のない合成画像を作成するためには、合成する実写風景画像とスタジオで撮影する画像のカメラパラメータを一致させるなど画像の３次元構造を利用する必要がある。
【０２１８】
図４２にこのような合成を実現するためのシステムの構成例を示す。カメラパラメータ（４１０１）を用いて撮影した画像データ（４１０２）から特徴情報抽出部（４１０３）において特徴を抽出し、３次元構造算出部（４１０４）において画像データのカメラパラメータや写る物体の３次元モデル等の３じげんこうぞうでーたお（４１０３）を求めるまでは、前述の装置と同様である。合成する物体を撮影するためのカメラ（４２０８）には、カメラの焦点距離や位置、方向などを任意に制御できる機能を持ったカメラ制御部（４２０１）を備え、３次元構造データ（４１０５）に記述されているカメラ（４１０１）のカメラパラメータと同じ条件で、合成する物体（４２０５）を撮影する。この時に、合成する画像（４１０２）に写っている物体のモデル物体（４２０８）を３次元構造データ（４１０５）に基づき作成し撮影場所に設置すれば、撮影時の参照とすることができる。これを具体的に説明する。
【０２１９】
ある机の写っている背景画像が与えられると、これとは別に人物を撮影しその背景画像に合成することで、最終的に机の上で人物が演技している映像を作成することを仮定する。この場合、机の３次元構造を本発明の装置を用いて求め、それに基づいてその形状を持った机のモデル（模型）を作成し、人物の撮影現場に設置する。このとき、机のモデルとカメラとの相対位置関係は、本発明の装置を用いて作成した３次元構造データを用いることで、実際の机を撮影したときと等しくなるように置く。人物はこの机のモデルの上で演技することで、何もないところで演技するのに比べて、本物のつくえの時に近い演技がやりやすい。よって結果的に違和感の無い合成画像を作ることができる。更に本モデルを用いることで、合成後の人物の全体あるいは一部が物体（机）によって隠される位置にきたときに、撮影時にもそのモデルによって隠されるため、合成時に人物の写っている部分だけを合成すれば、机の後に隠れる部分は写らないような、陰面消去の効果を出すことができる。
【０２２０】
撮影した画像データ（４２０３）から、合成に用いる部分を実写切り出し部（４２０２）において切り出す。切り出し方法としては操作者が画像処理プログラムを用いて対話的に行うほか、撮影条件に応じて画像処理の技術を用いて自動的に切り出すことができる。撮影時にブルーバック等の条件で撮影すれば、クロマキー等の技術を用いて自動的に目的の物体を切り出すことができる。尚、この方法を用いる場合は前述のモデル物体（４２１４）をバックと同じ色にする。これによってモデル物体は合成後の画像には写らない。
【０２２１】
画像合成部（４１０８）では背景となる画像と、切り出した実写画像を合成し、画像出力部（４１０９）で表示する。画像合成部（４１０８）では、前述のように、合成する物体の撮影画像が背景画像にある物体のモデル（模型）を用いて撮影したもので有れば単に背景画像に切り出した画像にその切り出し画像を
重ね合わせてやればよい。しかしそれ以外の場合は、切り出す物体についての３次元モデルを作成し、背景画像の３次元構造とそのモデルから陰面部分を算出し処理を行う。切り出す物体の３次元モデルは撮影時に実際に計測するほか、本発明の装置を用いて、画像から求めることもできる。
【０２２２】
尚、以上のシステムでは、（１）動画像の背景に動画像を合成する、（２）動画像の背景に静止画像を合成する、（３）静止画像の背景に静止画像を合成する、等の組み合わせが考えられるが、３次元構造データにフレーム毎のデータを持たせ、カメラの動きを時間に従って変化させてやれば、何れの場合にも対応できる。
【０２２３】
尚、本システムでは背景となる画像を実写画像としたが、これをCG画像とすることも考えられる。この場合はＣＧモデルの３次元構造は既知であることが一般的であるので、このデータを本システムにおける３次元構造データ（４１０５）に置き換えれば良い。
【０２２４】
更に、図４２のシステムにおいて、画像出力部（４１０９）をカメラ（４２０８）のモニタ画面とすれば、撮影時に合成後の映像を見ることができるので、算出した３次元構造の確認、撮影物の位置合わせや演技付け、照明の色合わせなどをリアルタイムに確認し調整することができる。
【０２２５】
また、図４１、図４２のシステムでは、合成後の画像を直接補助記憶装置に記憶させることもできる。
【０２２６】
【発明の効果】
本発明によれば、実写画像を用いてそこに写る物体の３次元モデルを作成するため、視覚的にわかりやすくモデルを作成することができる。さらにその実写画像を写したときのカメラパラメータを記録しておく必要がない。また作成されたモデルを、実写画像とＣＧの合成の目的に用いる場合は、矛盾のないデータを作成することができる。
【図面の簡単な説明】
【図１】本発明のハードウェア構成である。
【図２】実写画像の例である。
【図３】合成するＣＧモデルの例である。
【図４】実写画像にＣＧモデルを合成した画像の例である。
【図５】合成画像の遠近を示した例である。
【図６】合成画像に影を付加した例である。
【図７】実写画像の例である。
【図８】実施の形態の画面の１例である。
【図９】消失点を示す例である。
【図１０】消失点と直交方向の組み合わせを示した図である。
【図１１】直線の交点を求める図である。
【図１２】直線の交点を求めるための拡大図である。
【図１３】実写画像における消失点と直交方向の例である。
【図１４】投影座標系とワールド座標系を示した図である。
【図１５】画像上のワールド座標系を示した図である。
【図１６】３次元データボックスの例である。
【図１７】透視投影を説明する図である。
【図１８】透視投影を説明する図である。
【図１９】操作画面の１例である。
【図２０】操作画面の１例である。
【図２１】点の指定方法である。
【図２２】操作画面の１例である。
【図２３】３次元データテーブルの１例である。
【図２４】透視投影を説明する図である。
【図２５】線の作成を説明する図である。
【図２６】面の作成を説明する図である。
【図２７】基本図形の作成の手順を説明するフローチャートである。
【図２８】基本図形を説明する図である。
【図２９】２次元ドローイングソフトにおいて、基本図形を修正する方法を説明する図である。
【図３０】３次元において基本図形を修正する方法を説明する図である。
【図３１】他の３次元ＣＡＤソフトとの接続を示す図である。
【図３２】ＣＡＤソフトに渡すデータの例である。
【図３３】ＣＡＤソフトで作成するモデルの例である。
【図３４】補助線の例を示した図である。
【図３５】補助線の例を示した図である。
【図３６】グリッドの例を示した図である。
【図３７】ＣＧモデルを回転、移動させて表示する手順を説明するフローチャートである。
【図３８】ＣＧモデルを回転、移動表示させた画面の例である。
【図３９】参照物体をあわせて表示させた画面の例である。
【図４０】本発明の全体の概略を示した図である。
【図４１】本発明のある実施の形態の概略を示した図である。
【図４２】本発明のある実施の形態の概略を示した図である。
【図４３】実写画像からカメラパラメータを求めるフローチャートである。
【図４４】実写画像から３次元構造データ求めるフローチャートである。
【図４５】実写画像にＣＧモデルを合成する場合のフローチャートである。
【符号の説明】
１０１…ディスプレイ、１０２…補助記憶装置、１０３…マウス、１０４…グラフィックボード、１０５…ＣＰＵ、１１０…キーボード、２０…実写画像、２０３…３次元物体、３０１…ＣＧモデル、５０５…消失点
【図１】
0003575469.tif 000034
【図２】
0003575469.tif 000035
【図３】
0003575469.tif 000036
【図４】
0003575469.tif 000037
【図５】
0003575469.tif 000038
【図６】
0003575469.tif 000039
【図７】
0003575469.tif 000040
【図８】
0003575469.tif 000041
【図９】
0003575469.tif 000042
【図１０】
0003575469.tif 000043
【図１１】
0003575469.tif 000044
【図１２】
0003575469.tif 000045
【図１３】
0003575469.tif 000046
【図１４】
0003575469.tif 000047
【図１５】
0003575469.tif 000048
【図１６】
0003575469.tif 000049
【図１７】
0003575469.tif 000050
【図１８】
0003575469.tif 000051
【図１９】
0003575469.tif 000052
【図２０】
0003575469.tif 000053
【図２１】
0003575469.tif 000054
【図２２】
0003575469.tif 000055
【図２３】
0003575469.tif 000056
【図２４】
0003575469.tif 000057
【図２５】
0003575469.tif 000058
【図２６】
0003575469.tif 000059
【図２７】
0003575469.tif 000060
【図２８】
0003575469.tif 000061
【図２９】
0003575469.tif 000062
【図３０】
0003575469.tif 000063
【図３１】
0003575469.tif 000064
【図３２】
0003575469.tif 000065
【図３３】
0003575469.tif 000066
【図３４】
0003575469.tif 000067
【図３５】
0003575469.tif 000068
【図３６】
0003575469.tif 000069
【図３７】
0003575469.tif 000070
【図３８】
0003575469.tif 000071
【図３９】
0003575469.tif 000072
【図４０】
0003575469.tif 000073
【図４１】
0003575469.tif 000074
【図４２】
0003575469.tif 000075
【図４３】
0003575469.tif 000076
【図４４】
0003575469.tif 000077
【図４５】
0003575469.tif 000078