(57)【特許請求の範囲】
【請求項１】
複数の位置から撮像した画像と光線空間との対応を示すマップデータを生成する画像処理方法であって、
複数の位置から撮像した複数の撮像画像の夫々で、対応するスキャンラインに応じてマップデータを生成する生成工程と、
ユーザの指示に応じて、異なる前記スキャンラインの夫々から、画像上ほぼ同じ部分を示す画素を示すデータを選択する選択工程と、
前記マップデータ上で補間対象の画素を設定する画素設定工程と、
前記選択された複数のデータに基づき、前記補間対象の画素を通る線分を設定する線分設定工程と、
前記設定された線分と前記生成されたマップデータとを用いて、前記補間対象の画素の値を求める計算工程とを有し、
前記マップデータはｘ−ｕ空間で示され、前記スキャンラインに応じたマップデータは、Ｘ，Ｚを実空間中の点の位置を示す情報、ｘを光線が基準面を横切る位置を示す情報、θを光線の方向を示す情報とした場合に、以下の式
Ｘ＝ｘ＋ｕ・Ｚ
ｕ＝ｔａｎθ
を満たす
ことを特徴とする画像処理方法。
【請求項２】
前記選択工程では２つのデータを選択し、
前記線分設定工程では、
前記２つのデータを通る線分の傾きを求める工程と、
前記傾きを有し、前記補間対象の画素を通る線分を求める工程と
を有することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記選択工程では、画像上の異なる部分を示す画素に対応する２組のデータを選択し、
前記線分設定工程では、前記２組のデータに応じて複数の線分を設定することを特徴とする請求項１に記載の画像処理方法。
【請求項４】
コンピュータに請求項１乃至３の何れか１項に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項５】
請求項４に記載のプログラムを格納することを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項６】
複数の位置から撮像した画像と光線空間との対応を示すマップデータを生成する画像処理装置であって、
複数の位置から撮像した複数の撮像画像の夫々で、対応するスキャンラインに応じてマップデータを生成する生成手段と、
ユーザの指示に応じて、異なる前記スキャンラインの夫々から、画像上ほぼ同じ部分を示す画素を示すデータを選択する選択手段と、
前記マップデータ上で補間対象の画素を設定する画素設定手段と、
前記選択された複数のデータに基づき、前記補間対象の画素を通る線分を設定する線分設定手段と、
前記設定された線分と前記生成されたマップデータとを用いて、前記補間対象の画素の値を求める計算手段とを有し、
前記マップデータはｘ−ｕ空間で示され、前記スキャンラインに応じたマップデータは、Ｘ，Ｚを実空間中の点の位置を示す情報、ｘを光線が基準面を横切る位置を示す情報、θを光線の方向を示す情報とした場合に、以下の式
Ｘ＝ｘ＋ｕ・Ｚ
ｕ＝ｔａｎθ
を満たす
ことを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の画像から光線空間を生成する為に用いられるマップデータを生成する画像処理装置及びその方法並びにプログラムコード、記憶媒体に関するものである。
【０００２】
【従来の技術】
仮想空間を、３次元幾何形状を基に記述するのではなく、実写画像を基に記述表現する手法が数多く提案されている。これらはImage Based Rendering（以下、IBRと略す）と呼ばれており、実写画像を基にするが故に、３次元幾何形状を基にする手法からは得られない写実性の高い仮想空間を表現できる点に特徴がある。
【０００３】
IBRの一手法である光線空間理論に基づいた仮想空間の記述に関する試みが提案されている。例えば、電子情報通信学会論文誌「CGモデルと光線空間データとの融合による仮想環境の実現」(D-11, Vol. J80-D-11 No. 11, pp3048-3057, 1997年11月)、または、「３次元統合画像通信を目指したホログラムと光線空間の相互変換」(3D Image Conference)などを参照。
【０００４】
光線空間理論について説明する。
【０００５】
図１に示すように実空間に座標系O-X-Y-Zを設置する。Ｚ軸に垂直な基準面Ｐ（Ｚ＝ｚ）を通過する光線を、光線がＰを横切る位置（ｘ，ｙ）と、光線の方向を示す変数θ、φで表すことにする。すなわち、１本の光線は（ｘ，ｙ，ｚ，θ，φ）の５つの変数により一意に定められる。この光線の光強度を表す関数をｆと定義すると、この空間中の光線群データはｆ（ｘ，ｙ，ｚ，θ，φ）で表現することが出来る。この５次元の空間を「光線空間」と呼ぶ。より一般的には，時間変動分ｔを入れる場合もあるがここでは省略する．
ここで、基準面Ｐをｚ＝０に設定し、光線の垂直方向の視差情報、すなわちφ方向の自由度を省略すると、光線の自由度を（ｘ，θ）の２次元に縮退させることができる。このｘ−θ２次元空間は、光線空間の部分空間となる。そして、実空間中の点（Ｘ，Ｚ）を通る光線（図２）は、ｕ＝ｔａｎθとおくと、ｘ−ｕ空間上では、図３に示すように、
［数１］
Ｘ＝ｘ＋ｕ・Ｚ
という直線上に写像される。
【０００６】
カメラによる撮影とは、カメラのレンズ焦点を通過する光線を撮像面で受光し、その明るさや色を画像化する操作に相当する。言い換えると、焦点位置という実空間中の１点を通る光線群を画像として画素数分獲得していることになる。ここでは、φ方向の自由度を省略し、Ｘ−Ｚ平面内のみでの光線の振舞いを考えているので、画像中のＹ軸との直交面と交わる線分上の画素のみを考えることになる。このように、画像の撮影によって１点を通る光線を集めることができ、１回の撮影でｘ−ｕ空間の１本の線分上のデータを獲得することができる。
【０００７】
この撮影を視点位置（本明細書では、特に断らない限りは、視点位置は、視点の位置と視線方向の双方を含むものとする）を変え多数行うと、多数の点を通る光線群を獲得することができる。図４のようにＮ台のカメラを用いて実空間を撮影すると、ｎ番目（ｎ＝１，２，...，Ｎ）のカメラCnの焦点位置（Ｘｎ，Ｚｎ）に対応して、図５のごとく、
［数２］
ｘ＋ｕ・Ｚｎ＝Ｘｎ
の直線上のデータを入力することができる。このように、十分に多数の視点からの撮影を行うことによって、ｘ−ｕ空間を密にデータで埋めていくことができる。
【０００８】
逆に、ｘ−ｕ空間のデータ（図６）から、新しい任意の視点位置からの観察画像を生成することができる（図７）。この図に示すように、目の形で表した新しい視点位置Ｅ（Ｘ，Ｚ）からの観察画像は、ｘ−ｕ空間上の数式１の直線上のデータをｘ−ｕ空間から読み出すことによって生成できる。
【０００９】
【発明が解決しようとする課題】
上述の説明により、光線空間理論を用いて仮想空間や物体を記述するには、充分に光線をサンプリングしておく必要があるが、充分に光線をサンプリングすると、そのデータ量は膨大なものとなる。よって実際には、サンプリングする光線の数を調節し、不足分はサンプリングした光線から補間して生成していた。
【００１０】
また、縦視差を省略した光線空間を利用する場合は、撮像した画像の特定のスキャンラインの情報を使って光線の補間を行うため、スキャンラインの選び方により、補間の精度が大きく変化するという問題がある。
【００１１】
本発明は以上の問題に鑑みてなされたものであり、基準面上のスキャンライン以外の部分の画素の値を求める際に、安定した精度で求めることを目的とする。
【００１２】
【課題を解決するための手段】
本発明の目的を達成するために、例えば本発明の画像処理方法は以下の構成を備える。
【００１３】
すなわち、複数の位置から撮像した画像と光線空間との対応を示すマップデータを生成する画像処理方法であって、
複数の位置から撮像した複数の撮像画像の夫々で、対応するスキャンラインに応じてマップデータを生成する生成工程と、
ユーザの指示に応じて、異なる前記スキャンラインの夫々から、画像上ほぼ同じ部分を示す画素を示すデータを選択する選択工程と、
前記マップデータ上で補間対象の画素を設定する画素設定工程と、
前記選択された複数のデータに基づき、前記補間対象の画素を通る線分を設定する線分設定工程と、
前記設定された線分と前記生成されたマップデータとを用いて、前記補間対象の画素の値を求める計算工程とを有し、
前記マップデータはｘ−ｕ空間で示され、前記スキャンラインに応じたマップデータは、Ｘ，Ｚを実空間中の点の位置を示す情報、ｘを光線が基準面を横切る位置を示す情報、θを光線の方向を示す情報とした場合に、以下の式
Ｘ＝ｘ＋ｕ・Ｚ
ｕ＝ｔａｎθ
を満たす
ことを特徴とする。
【００２２】
【発明の実施の形態】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００２３】
［第１の実施形態］
図８は被写体の光線空間データを生成するために、複数のカメラを用いて被写体を撮像する様子を上から見た上面図である。８０１から８０８は被写体を撮像するカメラであり、ここでは静止画を対象にしているが、すべてのカメラの同期をとって動画で撮影すれば、静止物のみならず、動物体も撮影可能である。この場合は、動画の各フレームを静止画ととらえ、本実施形態で述べる手法を適用することによって、動画にも対応可能である。又、以下では光線空間を生成する際の基準面の設定はカメラのパラメータに基づいて算出されるものとするが、その算出方法は本実施形態の範疇ではないので、ここでは説明は省略する。
【００２４】
図９にカメラ８０１から８０８のうち、いずれか２つのカメラにより撮像された被写体の画像９０１，９０２を示す。９０１ａ、９０２ａは画像９０１，９０２の夫々において、同行の画素群（スキャンライン）であって、９０１ｂ、９０２ｂも同様に、同行の画素群を示す。このスキャンラインを用いて後述のマップデータが生成される。ここで、スキャンラインとは、カメラが平面上を移動すると考えた場合のその平面と平行な画素群のことである。従って、この場合は、行方向がスキャンラインとなり、また、縦置きでカメラを使用して平面上を移動させる場合は列方向がスキャンラインとなる。
【００２５】
図１０に２つのマップデータを示す。マップデータとは、複数のカメラ（図８ではカメラ８０１から８０８）を用いて撮像した画像と光線空間との対応を示すデータ群であって、光線空間はこのマップデータに基づいて生成される。
【００２６】
マップデータ１０００、１００１はカメラ８０１から８０８により撮像された各画像のスキャンラインに基づいて生成され、同図のマップデータ１０００は、画像９０１，９０２におけるスキャンライン９０１ａ、９０２ａをマップデータ１０００の解像度で量子化されたスキャンライン９０１ａ'、９０２ａ'を含む。また同図のマップデータ１００１は画像９０１，９０２におけるスキャンライン９０１ｂ、９０２ｂをマップデータ１００１の解像度で量子化されたスキャンライン９０１ｂ'、９０２ｂ'を含む。
【００２７】
このようにしてマップデータは、カメラ８０１から８０８により撮像された画像の各スキャンラインに対応して１つ存在する（言い換えれば、スキャンラインの数の分だけマップデータは存在する）。よって、カメラ８０１から８０８により撮像される画像から光線空間を生成するには、カメラ８０１から８０８により撮像される画像の各スキャンラインに応じたマップデータを生成する必要がある。
【００２８】
図１１に量子化された基準面上のマップデータを示す。同図に示した基準面は縦２１画素、横３０画素に量子化されており、この解像度でマップデータは表現されることになる。
【００２９】
同図に示すマップデータにおいて、網掛けの部分で示された画素は各画像の各スキャンラインを構成する画素を基準面上で示した場合の画素（以下、単に基準面上のスキャンラインを構成する画素と呼ぶことがある）であって、白で示された画素の集合はカメラ８０１から８０８では撮像されなかった画素群を基準面上で示した場合の画素群であって、値が同定されている画素群（同図では灰色の画素群）から補間すべき画素である。ここで補間すべき画素群のうち、注目画素Ｅを補間する方法を以下に示す。
【００３０】
まず同図のマップデータにおいて、基準面上の各スキャンラインを構成する画素列のうち、対応する２つの画素を指定する。同図ではこの２つの画素をＡ，Ｂとするが、これに限定されるものではない。対応する２つの画素（同図では画素Ａ，Ｂ）は、夫々の画素に対応する画素を含む夫々の画像において、画像上、ほぼ同じ部分を示すと思われる画素の組であって、この２つの画素の指定は操作者が、例えばＧＵＩなどを介して行う。
【００３１】
この指定は、例えば図１２に示す一般のコンピュータを画像処理装置として用い、図１１に示したマップデータをディスプレイ１２０２に表示し、操作者がこのディスプレイ１２０２の表示を見ながら対応する２つの画素をマウス１２０１を用いして指定しても良い。図１２に示したコンピュータの構成を図１３に示す。
【００３２】
１３０１はＣＰＵで、ＲＡＭ１３０２やＲＯＭ１３０３に格納されたプログラムやデータなどを読み込んで実行し、コンピュータ全体の制御や、後述の各処理等を実行する。
【００３３】
１３０２はＲＡＭで、記憶媒体のドライブ１３０４や外部記憶装置１３０５から読み込んだプログラムやデータなどを一時的に格納するエリアを備えると共に、ＣＰＵ１３０１が各種の処理を実行する際に使用するワークエリアなども備える。
【００３４】
１３０３はＲＯＭで、コンピュータ全体の制御を行うためのプログラム（ブートプログラムを含む）やデータ（各種の設定などを含む）を格納する。又、文字コードなども格納する。
【００３５】
１３０４は記憶媒体のドライブで、ＣＤ−ＲＯＭやフロッピーディスク等の記憶媒体からプログラムやデータ等を読み込むドライブである。
【００３６】
１３０５は外部記憶装置であって、記憶媒体のドライブ１３０４から読み込んだプログラムやデータ等を保存する。また、ＣＰＵ１３０１が使用するワークエリアのサイズがＲＡＭ１３０２が提供するワークエリアのサイズを越えた場合には、ファイルとしてその越えた分のワークエリアを提供することもできる。
【００３７】
１３０６は表示部で、ＣＲＴや液晶画面などにより構成されており（図１２に示したディスプレイ１２０２を含む）、図１１に示したマップデータやその他のＧＵＩ等を表示することができる。
【００３８】
１３０７は操作部で、キーボードやマウス（図１２のマウス１２０１を含む）などのポインティングデバイスを含み、各種の指示をコンピュータに入力することができる。
【００３９】
１３０８はインターフェース（Ｉ／Ｆ）部で、インターネットなどに接続するためのネットワークインターフェースや、プリンタなどの周辺機器と接続するためのインターフェースを含む。
【００４０】
１３０９は上述の各部を繋ぐバスである。
【００４１】
上述の構成を備えるコンピュータ上において、対応する２つの画素Ａ，Ｂが指定されると、この２つの画素の位置を通る線分（同図ではＬ１）の傾きを求める。そしてこの傾きを有し、注目画素Ｅを通る線分（同図ではＬ２）を求め、この線分近傍の画素であって、同図で灰色で示された画素のうち、注目画素Ｅに最も近い画素を決定する。同図ではこの決定の候補として画素Ｃ、Ｄがあげられるが、水平方向で最も近い画素は画素Ｄであるので、注目画素Ｅの値を画素Ｄと同じ値にする。
【００４２】
以降、全ての補間すべき画素に対して、線分Ｌ１の傾きを有し、補間すべき画素を通る線分を求め、上述の処理に従って補間すべき画素の値を決定する。画素値の決定方法としては、この他にも、注目画素Ｅが画素Ｃと画素Ｄを結んだ線分をｓ：ｔに内分している場合は、
Ｅ＝（ｔ・Ｃ＋ｓ・Ｄ）／（ｔ＋ｓ）
として注目画素Ｅの値を決定することも可能である。この方法は、補間された値が急激に変化しないため、再生画像の画質がよいというメリットがある。
【００４３】
しかし、マップデータの４隅近傍の位置に存在する、補間すべき画素の値を求める場合、上述の候補となる画素が一つ、もしくは全く無い場合がある。候補となる画素が一つしかない場合、補間すべき画素の値をこの一つしかない候補となる画素の値とする。また、候補となる画素が全くない場合には特には限定しないが、例えば補間すべき画素の周辺の画素の値の平均値としても良い。これは本実施形態に限ったことではなく、後述の実施形態でも同様である。
【００４４】
又、図１４の上の図に示すように、注目画素の値を求める際に、候補となる画素が存在しない場合（注目画素を通る線分Ｌが基準面上のスキャンラインを構成する画素を通っていない場合）、同図の下の図のように、基準面上のスキャンラインを構成する画素を用いて補充して、この線分Ｌが補充された画素を含む基準面上のスキャンラインを構成する画素列を通るようにする。これは本実施形態に限ったことではなく、後述の実施形態でも同様である。
【００４５】
尚，同図の下の図において、丸、三角、四角、星形の記号が記載された画素が存在するが、夫々同じ記号を有する画素は同じ値を有するものとする。尚同図において、注目画素に対する候補の画素は四角と星形の記号が記載された画素であって、そのどちらも最も注目画素に近いことから、注目画素の値はそのどちらの画素の値を用いても良い。また、この場合は等距離にあるので、２つの画素の平均値にしてもよい。
【００４６】
以上の処理のフローチャートを図１５に示し、以下説明する。尚、以下では最初のマップデータ（カメラ８０１から８０８により撮像された各画像のうち、最初のスキャンラインの集合により生成されるマップデータ）を生成する場合を例に取り説明するが、他のマップデータの生成処理も同様の処理である。
【００４７】
まず、撮像時のカメラ８０１から８０８のパラメータを用いて光線空間の基準面を設定する（ステップＳ１５０１）。次に基準面を量子化する（ステップＳ１５０２）。つまり、基準面の解像度を決める（同時にマップデータの解像度も決まる）。そしてマップデータを作成する（マッピング）（ステップＳ１５０３）。マッピングの具体的な処理のフローチャートを図１６に示し、以下説明する。
【００４８】
まず各種の初期化を行った後に、カメラ８０１から８０８により撮像された複数の画像のうち、最初の画像をセットする（ステップＳ１６０１）。そしてセットした画像において、最初のスキャンラインの両端の画素をマークし（ステップＳ１６０２）、この両端の２点を結ぶ線分を引く（ステップＳ１６０３）。尚ステップＳ１６０３における処理は実際にはコンピュータの内部で計算されるものであって、ディスプレイには表示しない。
【００４９】
次にステップＳ１６０３で計算した線分を基準面上に描画する（ステップＳ１６０４）。描画の際には画素単位で描画することになるので、この線分上にある画素を４連結で繋ぐ処理を行う。次に基準面上の画素が、どの画像のどの画素位置に対応するのかを計算し、その情報を画素値としてＲＡＭ１３０２などのメモリに保持する（ステップＳ１６０５）。そして以上の処理（ステップＳ１６０２からステップＳ１６０５までの処理）がカメラ８０１から８０８により撮像された全ての画像について行われたかを判断し（ステップＳ１６０６）、行われていない画像は順次セットし（ステップＳ１６０７）、ステップＳ１６０２以降の処理を行う。
【００５０】
以上のマッピング処理を終えると処理は図１５のステップＳ１５０４に戻り、生成されたマップデータを用いて、補間すべき画素の補間を行う（ステップＳ１５０４）。補間を行う際の具体的な処理の流れを示すフローチャートを図１７に示し、以下説明する。
【００５１】
まず基準面上の対応するスキャンライン上の２点を指定する（ステップＳ１７０１）。図１１に示した例では点Ａ，Ｂを指定する処理である。次にこの２点を通る線分の傾きを求める。（ステップＳ１７０２）。そして補間すべき最初の画素（未定画素）をセットし（ステップＳ１７０３）、この画素に対して補間を行う（ステップＳ１７０４）。このステップＳ１７０４における補間の具体的な処理のフローチャートを図１８に示し、以下説明する。
【００５２】
ステップＳ１７０２で求めた傾きを有し、未定画素を通る線分を求め（ステップＳ１８０１）、求めたこの線分と、値が同定されている画素群との交点に最も近い画素を求める（ステップＳ１８０２、Ｓ１８０３）。図１１に示した例では画素Ｃ、Ｄを求める処理である。そして求めた画素が２つ求まったか否かの判断を行う（ステップＳ１８０４）。つまり、例えば未定画素が基準面の４隅近傍等に存在するか否かを判断する処理である。
【００５３】
そしてステップＳ１８０３での処理で、画素が２つ求まった場合、処理をステップＳ１８０４からステップＳ１８０５に移行し、この２つの画素のうち、未定画素に距離的に最も近い方の画素の値を未定画素の値とする（ステップＳ１８０５）。一方、ステップＳ１８０３での処理で、画素が２つ求まらず、１つであった場合、処理をステップＳ１８０６からステップＳ１８０７に移行し、求まった１つの画素の値を未定画素の値とする（ステップＳ１８０７）。一方、ステップＳ１８０３での処理で、一つも画素が求まらなかった場合、処理をステップＳ１８０６からステップＳ１８０８に移行し、未定画素の近傍の画素の値の平均値を求め、この平均値を未定画素の値とする（ステップＳ１８０８）。
【００５４】
以上の補間処理を終えると処理は図１７のステップＳ１７０５に戻り、未処理の未定画素が存在するか否かの判断を行い（ステップＳ１７０５）、未処理の未定画素があれば、これを順次セットし（ステップＳ１７０６）、ステップＳ１７０４における補間処理を行う。
【００５５】
以上、図１５乃至図１８に示したフローチャートに従った処理を実行することで、離散的に被写体を撮像することで得られる画像から、マップデータを生成することができると共に、上述の未定画素の値を求めることができる。その結果、どの未定画素も同じアルゴリズムで値が決められることから、安定した精度で未定画素の値を求めることができる。
【００５６】
［第２の実施形態］
本実施形態では、第１の実施形態で示した未定画素を補間する方法とは別の方法を示す。第１の実施形態では、（基準面上のスキャンライン）上で対応する画素を２つ（図１１では画素Ａ，Ｂ）指定していたが、本実施形態では更に（この基準面上のスキャンライン上で）２つの対応する画素を指定する。この指定方法も第１の実施形態と同様に、図１２に示したコンピュータ（及び図１３に示した構成を備えるコンピュータ）を用いて、第１の実施形態と同様にして行う。
【００５７】
本実施形態における補間方法を図１９を用いて説明する。同図において補間すべき画素を注目画素Ｅとし、後述の処理によって、この注目画素Ｅを補間する。
【００５８】
まず、第１の実施形態で説明したように、基準面上の各スキャンラインのうち対応する２つの画素を選択する。選択された画素は同図では画素Ｃ、Ｆ（もしくは画素Ｄ、Ｇ）である。同様にもう２つの対応する画素を選択する。選択された画素は同図では画素Ｄ、Ｇ（もしくは画素Ｃ、Ｆ）である。本実施形態ではこのように４つの画素を選択するが、同図の配置に限定されるものではない。
【００５９】
そして次に画素Ｃと画素Ｄとを結ぶ線分（以下線分ＣＤ）をｎ等分する（同図ではｎ＝８）。同様に画素Ｆと画素Ｇを結ぶ線分（以下線分ＦＧ）もｎ等分する。そして画素Ｃと画素Ｆ、画素Ｄと画素Ｇを繋ぐ。同様に、線分ＣＤ、線分ＦＧ上で等分された点同士を繋ぐ。その結果、同図の通り線分ＣＤと線分ＦＧの間にはｎ本（線分ＣＤ、線分ＦＧを含む）の線分が引かれることになる。
【００６０】
その結果、注目画素Ｅを通る線分Ｌ３と基準面上のスキャンラインを構成する画素との交点に夫々最も近い画素（同図では点Ａ，Ｂ）を求めることができる。注目画素Ｅ以外の補間すべき画素に対しても同様である。
【００６１】
以降の処理は第１の実施形態と同様に行い、注目画素Ｅの値を求める。なお、補間すべき画素に対して複数の線分が通る場合には、例えば、線分ＣＤ上の未定画素値を決定し、次に、その隣の線分上の画素値を決定し、最後に線分ＤＧ上の画素値を決定するというように両端に存在する線分の一方から順に上書き処理する。これ以外にも、補間すべき画素通る線分のうち最も画素の中心に近い位置を通る線分を採用してもよい。
【００６２】
また、第１の実施形態と同様に、注目画素Ｅの値を決定する際に、線分上の画素Ｅをはさみ、かつ、値を持った最も近い画素Ａ、Ｂが存在する場合には、画素Ｅが線分ＡＢを内分する比率に応じて画素Ａと画素Ｂの値を混合してもよい。
【００６３】
本実施形態では上述の通り、基本的には第１の実施形態と同様の処理を行うが、未定画素の値を求める方法（補間の方法）のみが異なる。つまり、第１の実施形態における基本処理を示す図１５において、本実施形態はステップＳ１５０４における補間の処理が第１の実施形態と異なる。図２０乃至２２に本実施形態における補間の処理のフローチャートを示し、以下説明する。
【００６４】
ステップＳ１５０１からステップＳ１５０３における処理の後に、図２０に示したステップＳ２００１に処理を移行する。
【００６５】
まず基準面上に４つの画素を指定する（ステップＳ２００１）。図１９ではＣ、Ｄ、Ｆ、Ｇの４つの画素がこれに該当する。次に、基準面上の同じスキャンライン上の２つの画素同士を結んで線分を構成する。図１９では線分ＣＤ、線分ＦＧを構成する（ステップＳ２００２）。そして未定画素（図１９では注目画素Ｅ）の補間を行う（ステップＳ２００３）。ステップＳ２００３における具体的な処理のフローチャートを図２１に示し、以下説明する。
【００６６】
ステップＳ２１０１では、線分ＣＤ、線分ＦＧを夫々ｎ（図１９ではｎ＝８）等分する。そして各線分ＣＤ、ＦＧ上の等分された点同士を対応付け（ステップＳ２１０２）、対応する点同士を線分（例えば図１９ではＬ３に該当する）で結ぶ（ステップＳ２１０３）。そして対応する点同士の線分のうち、最初の線分をセットし、セットした線分近傍の未定画素の値の同定処理を行う（ステップＳ２１０５）。
【００６７】
ステップＳ２１０５の具体的な処理のフローチャートを図２２に示し、以下説明する。まず、ステップＳ２１０４でセットした線分上の未定画素を検出する（ステップＳ２２０１）。そして検出した未定画素の値を求める補間処理が行われるが、ステップＳ２２０２からステップＳ２２０８までの処理は図１８におけるステップＳ１８０２からステップＳ１８０８までの処理と同じであるため、説明を省略する。
【００６８】
そして図２１に戻り、ステップＳ２１０６，Ｓ２１０７はステップＳ１８０６，Ｓ１０８７と同様に、すべての未定画素に対して補間処理を施す。
【００６９】
［第３の実施形態］
本実施形態では、第１，２の実施形態とは異なる未定画素の値の補間の方法を示す。第１，２の実施形態では、画像のスキャンライン分だけマップデータを必要としたが、光線空間理論において、垂直方向視差を省略すると、各マップデータに射影されるスキャンラインデータの位置はすべて同じとなる。したがって、マップデータを１つだけ作成し、このマップデータに各画像の画素値を入れるのではなくて、どの画像におけるスキャンライン上のどの画素に対応するかをポインタデータとして格納しておけば、複数のマップデータを保持する必要はない。この場合の利点は、画像データをマップデータに射影すると、マップデータ上では量子化によりスキャンライン間に隙間（値が未定な画素）ができ、複数のマップデータを用いると、その分だけもとの画像データに比べてデータ量が増大するが、これを最小限に抑えることができる点である。これを図２７を用いて説明する。この図に示すように、画像中の列Ｒは基準面上の一点Ａに写像される。したがって、点Ａに画像の番号ｎと列番号ｉを記録しておくことにより、ｊ番目のスキャンラインで構成されるマップデータにおける同位置の画素の値は、入力画像ｎのｉ列、ｊ番目の画素と特定することができる。このように、１つのマップデータで、第１，２の実施形態で考えていたｊ番目のスキャンラインで構成されるマップデータを擬似的に再現できる。
【００７０】
このようなマップデータを考えた場合、今度は入力画像枚数がデータ量に大きく影響することになる。
【００７１】
しかし、入力画像枚数が少ないと、基準面上での値が同定されているラインの数（面積）が少なくなり、その結果、補間すべき画素が増大するという問題がある。第１，２の実施形態における補間処理でも真の値が求まるわけではないため、できる限り、入力画像数を多くして、補間処理すべき画素数を減少させるほうが、データの精度が向上し、最終的な再現画像の画質が向上する。しかし撮像された全ての画像を保存することはメモリの効率上現実的ではない。よって、撮像した全ての画像を保存することは避け、撮像された全ての画像は補間の処理を行う際に用い、保存する画像はそのうちのいくつかとする。
【００７２】
本実施形態における未定画素値の補間方法を図２３を用いて説明する。同図は本実施形態における未定画素値の補間方法を説明する図である。基準面上のマップデータ２３０１には、保存する画像の各スキャンラインをマップデータ上で表した場合の画素群（マップデータ２３０１において実線で示した部分）と、保存しない画像の各スキャンラインをマップデータ上で表した場合の画素群（マップデータ２３０１において点線で示した部分）とが含まれている。しかし同図のマップデータには空白の部分、すなわち、未定画素が含まれており、この未定画素の値を後述の方法で決定する。
【００７３】
マップデータ２３０１に含まれるエリア２３０２において、画素Ａは保存する画像中の任意のスキャンラインをマップデータ２３０１上で表現した場合に、このスキャンラインを構成する画素の一つである。一方、画素Ｂは保存しない画像中の任意のスキャンラインをマップデータ２３０１上で表現した場合に、このスキャンラインを構成する画素の一つである。画素Ａは保存する画像に基づいた画素なのでこのままで良いが、画素Ｂは保存しない画像に基づいた画素なので、その値を何らかの方法で決める必要がある。
【００７４】
よって、保存しない画像に基づいた画素（同図で点線部分を構成する画素）、例えば画素Ｂの値が指し示す列データの値に最も近い画素を探す。但し、画素Ａ、Ｂに記録されている値は、入力画像番号ｎとスキャンライン中の画素位置ｉ、すなわち、（ｎ，ｉ）で規定される列全体なので、各列中の同じ位置（同じ行）同士で差分を計算し、その二乗誤差の総和が最小となる画素Ａの値を画素Ｂの値として保存する。
【００７５】
その結果、画素Ｂの値に最も近く、且つ保存する画像の基準面上のスキャンラインを構成する画素が画素Ａであった場合、画素Ｂの値を画素Ａの値とする（２３０３参照）。又、画素Ａと画素Ｂとの間に存在する画素（画素Ａと画素Ｂとを結ぶ線分上であって、画素Ａと画素Ｂとの間に存在する画素）の値も同様に画素Ａの値とする（２３０４参照）。
【００７６】
第１，２の実施形態では、未定画素の値を決定する場合に、未定画素に距離的に最も近い（基準面上のスキャンラインを構成する）画素の値を参照していた。一方、本実施形態では、保存しない画像の基準面上のスキャンラインを構成する画素の値を、この値が示す列データの値に最も近い（保存する画像の基準面上のスキャンラインを構成する）画素の値に置き換え、又その間にある画素の値も同様に置き換えている。このようにすることで、未定画素の値をより尊重した形で補間を行うことができる。
【００７７】
以上の未定画素値の補間方法を行う処理のフローチャートを図２４に示し、以下説明する。尚同図に示すフローチャートは図１５におけるステップＳ１５０４の補間処理のフローチャートである。よって、本実施形態を実行する際には図１５，図２４に示す処理を行うことで達成される。
【００７８】
まず最初の未定画素をセットする（ステップＳ２４０１）。次に、セットした未定画素の値が指し示す列データに最も近く、且つ基準面上の保存する画像のスキャンラインを構成する画素を探す（ステップＳ２４０２）。そして探した画素の値を未定画素の値とする。（ステップＳ２４０３）。又、未定画素と探した画素との間にある画素の値を探した画素の値とする。（ステップＳ２４０４）。
【００７９】
そして全ての未定画素に対して行ったか否かを判断し（ステップＳ２４０５）、未処理の未定画素があったらその画素をセットし（ステップＳ２４０６）、ステップＳ２４０２以降の処理を実行する。
【００８０】
尚本実施形態における上述の処理は、操作者の手を介することなく、又ＧＵＩを用いることなく、コンピュータのみで行える処理である。
【００８１】
［第４の実施形態］
第３の実施形態で示した未定画素の補間方法では、図２３を例に取ると、画素Ｂを挟んで画素Ａ側とその逆側とでは全く画素値が異なってしまい、その違いが目立つ場合がある。これは例えば被写体を異なる視点から見たときの反射度の変化によく目立って現れる現象である。
【００８２】
よって本実施形態では、この問題を解消する補間方法を示す。図２５に本実施形態における未定画素の補間方法を示す。ここで、空間中の１点が基準面では線分に並ぶという性質がある。この線分Ｌ４を基準面２５０１に設けた場合、この基準面における２つのスキャンライン２５０２，２５０３と交わる位置にある画素をＡ，Ｂとし、線分ＡＢ間に存在する任意の画素（つまり、補間すべき画素）をＰとする。又、この画素Ｐは線分ＡＢをｔ：（１−ｔ）に内分する位置に存在するものとする（ｔ：媒介変数  ０≦ｔ≦１）。このとき、画素Ｐの値を画素Ａ、Ｂの値を利用して以下のように求める。
【００８３】
（画素Ｐの値）＝（１−ｔ）×（画素Ａの値）＋ｔ×（画素Ｂの値）
つまり画素Ｐの値を、画素Ａの値と画素Ｂの値をｔ：（１−ｔ）に内分する値とする。このようにすることで線分ＡＢ間の画素の値は連続的に変化し、急な色変化を軽減することができる。尚、画素Ｐには、２点Ａ、Ｂの値と内分比率を格納すれば、本処理を実現できる。
上記の実施形態では、基準面上に空間中の１点に相当する直線を設定したが、一般にはこの直線を正確に求めることは困難であるため、GUIを用いてマニュアル操作で直線を設定してもよい。また、第２の実施形態において記録される画素値を、本実施形態のように対応する２点とそのときの内分比率としてもよい。
【００８４】
尚、画素Ｐがマップデータの４隅近傍に位置している等、画素Ｐの値を上述のように両端の２つの画素（図２５では画素Ａ，Ｂ）の値の内分値と計算することができない場合がある。この場合、特には限定しないが、例えば補間すべき画素の周辺の画素の値としても良い。
【００８５】
以上説明した本実施形態における補間処理のフローチャートを図２６に示し、以下説明する。尚同図に示すフローチャートは図１５におけるステップＳ１５０４の補間処理のフローチャートである。よって、本実施形態を実行する際には図１５，図２６に示す処理を行うことで達成される。
【００８６】
まず、最初の線分（空間中の１点をマップデータ上で表した場合の線分（図２５では線分Ｌ４））をセットする（ステップＳ２６０１）。次に、この線分とマップデータ上のスキャンラインを構成する画素群との交点（図２５では画素Ａ，Ｂ）を求め、この交点間の画素群（画素Ｐを含む未定画素）を特定する（ステップＳ２６０２）。ここで、線分上にあって、未定画素（図２５では画素Ｐ）を挟む両端の画素（図２５では画素Ａ、Ｂ）が２つあるか否かを判断する（ステップＳ２６０３）。２つない場合、処理はステップＳ２６０３からステップＳ２６０５に移行し、未定画素の周辺の画素、たとえば、再近傍の画素の値を未定画素の値とする（ステップＳ２６０５）。一方、２つある場合には、処理をステップＳ２６０３からステップＳ２６０４に移行し、未定画素（注目画素）が線分ＡＢをどのように内分するか、その値を求め、未定画素に画素Ａ及びＢの値と内分値を記録する。これを線分ＡＢ上の未定画素に対して繰り返し行う。（ステップＳ２６０４）。そしてセットされている線分上の未定画素の値が求まっているか否かの判断を行い（ステップＳ２６０６）、行っていなければ処理をステップＳ２６０２に移行し、次の交点間の画素群を求める。又、全ての未定画素に対して補間処理を行ったか否かの判断を行い（ステップＳ２６０７）、行っていれば本フローチャートに従った処理は終了する。行っていなければ、処理をステップＳ２６０８に移行し、次の線分をセットし（ステップＳ２６０８）、ステップＳ２６０２以降の処理を行う。
【００８７】
尚本実施形態における上述の処理は、操作者の手を介することなく、又ＧＵＩを用いることなく、コンピュータのみで行える処理であるが、もちろん、ＧＵＩを用いてマニュアル操作により各線分を設定してもよく、上記に限るものではない。
【００８８】
［他の実施形態］
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９０】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した（図図１５，及び／又は図１６，及び／又は図１７，及び／又は図１８，及び／又は図２０，及び／又は図２１，及び／又は図２２，及び／又は図２４，及び／又は図２６に示したフローチャート）に対応するプログラムコードが格納されることになる。
【００９１】
【発明の効果】
以上の説明により、本発明によって、基準面上のスキャンライン以外の部分の画素の値を求める際に、安定した精度で求めることができる。
【図面の簡単な説明】
【図１】光線空間データを生成する原理を説明する図。
【図２】実空間でのデータを説明する図。
【図３】図２の空間が光線空間データによって表されたときの図。
【図４】カメラが複数ある時の実空間データを生成する原理を説明する図。
【図５】カメラが複数ある時の光線空間データを生成する原理を説明する図。
【図６】カメラが複数ある時の光線空間データから、任意の視点位置における光線空間データ(x+Zu=X)を生成する原理を説明する図。
【図７】図６の任意視点からの実空間を再構成する原理を説明する図。
【図８】被写体の光線空間データを生成するために、複数のカメラを用いて被写体を撮像する様子を上から見た上面図である。
【図９】カメラ８０１から８０８のうち、いずれか２つのカメラにより撮像された被写体の画像９０１，９０２を示す図である。
【図１０】２つのマップデータを示す図である。
【図１１】量子化された準面上のマップデータを示す図である。
【図１２】画像処理装置として用いられる一般のコンピュータを示す図である。
【図１３】図１２に示したコンピュータの構成を示す図である。
【図１４】注目画素の値を求める際に、候補となる画素が存在しない場合を説明する図である。
【図１５】本発明の第１の実施形態における処理のフローチャートである。
【図１６】マッピングの具体的な処理のフローチャートである。
【図１７】補間の処理の具体的な処理のフローチャートである。
【図１８】ステップＳ１７０４における補間の具体的な処理のフローチャートである。
【図１９】本発明の第２の実施形態における補間方法を説明する図である。
【図２０】本発明の第２の実施形態における補間の処理のフローチャートである。
【図２１】ステップＳ２００３における具体的な処理のフローチャートである。
【図２２】ステップＳ２１０５における具体的な処理のフローチャートである。
【図２３】本発明の第３の実施形態における補間方法を説明する図である。
【図２４】本発明の第３の実施形態における補間の処理のフローチャートである。
【図２５】本発明の第４の実施形態における補間方法を説明する図である。
【図２６】本発明の第４の実施形態における補間の処理のフローチャートである。
【図２７】本発明の第３の実施形態を説明する図である。
【図１】
0003935322.tif 000002
【図２】
0003935322.tif 000003
【図３】
0003935322.tif 000004
【図４】
0003935322.tif 000005
【図５】
0003935322.tif 000006
【図６】
0003935322.tif 000007
【図７】
0003935322.tif 000008
【図８】
0003935322.tif 000009
【図９】
0003935322.tif 000010
【図１０】
0003935322.tif 000011
【図１１】
0003935322.tif 000012
【図１２】
0003935322.tif 000013
【図１３】
0003935322.tif 000014
【図１４】
0003935322.tif 000015
【図１５】
0003935322.tif 000016
【図１６】
0003935322.tif 000017
【図１７】
0003935322.tif 000018
【図１８】
0003935322.tif 000019
【図１９】
0003935322.tif 000020
【図２０】
0003935322.tif 000021
【図２１】
0003935322.tif 000022
【図２２】
0003935322.tif 000023
【図２３】
0003935322.tif 000024
【図２４】
0003935322.tif 000025
【図２５】
0003935322.tif 000026
【図２６】
0003935322.tif 000027
【図２７】
0003935322.tif 000028