(57)【要約】【課題】複数の分割画像データ間のつなぎあわせの精度を向上させ、従来よりも高精度なパノラマ画像データを生成する。【解決手段】画像処理装置は、被写体の全景画像データを取得し（ステップＳ２０１）、被写体の分割画像データを取得する（ステップＳ２０２）。そして、画像処理装置は、各分割画像データと、当該分割画像データに対応する領域の前記全景画像データとの差分を算出し（ステップＳ２０６）、差分に応じた補正処理を各分割画像データに対して実行する（ステップＳ２０７）。次に画像処理装置は、補正後の各分割画像データを合成してパノラマ画像データを生成する（ステップＳ２１２）。【選択図】図５
2011160354.tif 000002
【特許請求の範囲】
【請求項１】
被写体の全景画像データを取得する第１の取得手段と、
前記被写体の分割画像データを取得する第２の取得手段と、
前記第２の取得手段により取得された各分割画像データと、当該分割画像データに対応する領域の前記全景画像データとの差分値を算出する算出手段と、
前記算出手段により算出された差分値に応じた補正処理を前記各分割画像データに対して実行する補正手段と、
前記補正手段により補正された前記各分割画像データを合成してパノラマ画像データを生成する生成手段とを有することを特徴とする画像処理装置。
【請求項２】
前記パノラマ画像データを前記全景画像データと差し替える差替え手段を更に有し、
前記第２の取得手段は、前記差替え手段により差し替えされた前記パノラマ画像データを分割した分割画像データを取得することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記補正手段は、前記算出手段により算出される差分値が最小となる補正処理を前記各分割画像データに対して実行することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記算出手段は、前記第２の取得手段により取得された前記各分割画像データのエッジと、当該分割画像データに対応する領域の前記全景画像データのエッジとを抽出し、抽出したエッジ間の距離を差分値として算出することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
画像処理装置による画像処理方法であって、
被写体の全景画像データを取得する第１の取得ステップと、
前記被写体の分割画像データを取得する第２の取得ステップと、
前記第２の取得ステップにより取得された各分割画像データと、当該分割画像データに対応する領域の前記全景画像データとの差分値を算出する算出ステップと、
前記算出ステップにより算出された差分値に応じた補正処理を前記各分割画像データに対して実行する補正ステップと、
前記補正ステップにより補正された前記各分割画像データを合成してパノラマ画像データを生成する生成ステップとを含むことを特徴とする画像処理方法。
【請求項６】
被写体の全景画像データを取得する第１の取得ステップと、
前記被写体の分割画像データを取得する第２の取得ステップと、
前記第２の取得ステップにより取得された各分割画像データと、当該分割画像データに対応する領域の前記全景画像データとの差分値を算出する算出ステップと、
前記算出ステップにより算出された差分値に応じた補正処理を前記各分割画像データに対して実行する補正ステップと、
前記補正ステップにより補正された前記各分割画像データを合成してパノラマ画像データを生成する生成ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像データを用いてパノラマ画像データを生成するための技術に関するものである。
【背景技術】
【０００２】
従来、複数の画像の画像データを用いてパノラマ合成処理を実行するものとしては、合成対象の複数の画像データ間での対応点を抽出し、対応点同士を結ぶことで合成する技術が知られている（例えば、特許文献１参照）。また、予め被写体の全景を撮影しておくことで、被写体の部分画像に対応する複数の画像データの大まかな位置を自動的に決定する技術も存在する（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−３１２２８７号公報
【特許文献２】特開平５−１３０３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されるような対応点を抽出する手法では、パノラマ合成に失敗するケースも存在する。これは、ある特定のパターン（模様）が連続する被写体を撮影した際に起こりうる。つまり、撮影画像データに同じようなパターンが複数存在するため、撮影した２枚の画像データ間で対応点の相関が取れなくなる。そのため、間違った対応点同士をつないでしまい、パノラマ画像データが大きく歪んでしまうという課題があった。また、特許文献２に開示される手法を用いて、各撮影画像データの配置が決まっても、被写体を斜め方向から撮影する際の歪みや樽型ひずみや糸巻き型ひずみのようなレンズの歪みがあるため、精度よく合成することは難しい。
【０００５】
そこで、本発明の目的は、複数の分割画像データ間のつなぎあわせの精度を向上させ、従来よりも高精度なパノラマ画像データを生成することにある。
【課題を解決するための手段】
【０００６】
本発明に係る画像処理装置は、被写体の全景画像データを取得する第１の取得手段と、前記被写体の分割画像データを取得する第２の取得手段と、前記第２の取得手段により取得された各分割画像データと、当該分割画像データに対応する領域の前記全景画像データとの差分値を算出する算出手段と、前記算出手段により算出された差分値に応じた補正処理を前記各分割画像データに対して実行する補正手段と、前記補正手段により補正された前記各分割画像データを合成してパノラマ画像データを生成する生成手段とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、被写体の全景画像データを用いることで、複数の分割画像データ間のつなぎあわせの精度を向上させることが可能となり、従来よりも高精度なパノラマ画像データを生成することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る画像処理装置のシステム構成を示すブロック図である。
【図２−１】パノラマ画像の撮影動作の概略を説明するための図である。
【図２−２】パノラマ画像の撮影動作の概略を説明するための図である。
【図３−１】パース補正処理及びメッシュ補正処理の概要を説明するための図である。
【図３−２】パース補正処理及びメッシュ補正処理の概要を説明するための図である。
【図４−１】パース補正処理及びメッシュ補正処理において、最適なパラメータを検出する手法について説明するための図である。
【図４−２】パース補正処理及びメッシュ補正処理において、最適なパラメータを検出する手法について説明するための図である。
【図５】第１の実施形態におけるパノラマ画像データ合成処理を示すフローチャートである。
【図６】全景画像データと分割画像データとの差分値を求めても、全景画像データが拡大された状態なので十分な精度が得られない現象を説明するための図である。
【図７】第２の実施形態におけるパノラマ画像データの合成処理を示すフローチャートである。
【図８】プロジェクタ投影システムの概略を説明するための図である。
【図９】第３の実施形態におけるパノラマ画像データの合成処理を示すフローチャートである。
【図１０】エッジ抽出処理の結果を示す図である。
【図１１】第４の実施形態におけるパノラマ画像データの合成処理の概略を説明するための図である。
【図１２】第４の実施形態におけるパノラマ画像データの合成処理を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１０】
先ず、第１の実施形態について説明する。本実施形態では、全景画像データを基にパノラマ画像データを生成する手法について説明する。
【００１１】
図１は、第１の実施形態に係る画像処理装置のシステム構成を示すブロック図である。入力装置１０１は、ユーザからの指示やデータを入力する装置であり、キーボードやマウス等のポインティングシステムを含む。表示装置１０２は、ＧＵＩ等を表示する装置であり、通常はＣＲＴや液晶ディスプレイ等のモニタを表す。蓄積装置１０３は、画像データやプログラムを蓄積する装置であり、通常はハードディスクが用いられる。１０４は、ＣＰＵであり、上述した各構成の処理の全てに関わる制御を実行する。ＲＡＭ１０６は、その処理に必要なプログラム、データ、作業領域等をＣＰＵ１０４に提供する。また、以降のフローチャートの処理に必要な制御プログラムは、蓄積装置１０３に格納されているものとし、一旦ＲＡＭ１０６に読み込まれてから実行される。カメラ装置１０５は、デジタルカメラ等と接続し、入力画像データを取得する。なお、システム構成については、上記以外にも様々な構成要素が存在するが、説明は省略する。
【００１２】
図２−１及び図２−２は、パノラマ画像の撮影動作の概略を説明するための図である。図２−１（ａ）は、パノラマ画像データを生成する際の被写体を示している。本実施形態では、図２−１（ａ）のような絵画を対象とした、高解像度パノラマ画像データを生成することとする。図２−１（ｂ）は、図２−１（ａ）に示す被写体の全景画像を撮影する方法を表している。この場合、被写体全域がカメラの画角に収まるようにカメラを被写体から離れた位置に設置するか、カメラのレンズを広角よりのレンズに交換して撮影する。図２−１（ｃ）は分割画像を撮影する方法を表している。先ず、被写体の中央部分を捉えるようにカメラを設置する。そして、被写体の必要な領域を撮影できるようにレンズの望遠を調整するか、レンズの交換を行って撮影を行う。このときの画角は、作成したいパノラマ画像データの解像度に依存する。パノラマ画像データの解像度が高い場合、撮影時の分割数が増加する。そのため、画角を小さくする必要がある。逆にパノラマ画像データの解像度が低い場合、撮影時の分割数は少なくてよいので画角は大きくする。次にカメラを２つの回転軸に沿って回転させる。実際にはカメラを回転可能な旋回台に設置して旋回台を回転させることにより、カメラを回転させる。旋回台には回転計が設置されているため、カメラの回転角度も取得できる。カメラの回転により、被写体の中央部分のみでなく、被写体全域を撮影できるようになる。具体的には、被写体の左上から撮影を始め、徐々に回転させながら、被写体全域の撮影を行う。このときの回転角は、前述した撮影時の分割数に依存し、分割数が少ない場合、回転角は大きくなり、分割数が多い場合、回転角は小さくなる。このとき、隣接する分割画像同士でオーバーラップ領域（重複領域）ができるように回転角を調整しておく。調整の具体例を以下に示す。
【００１３】
ここでは、例として所望のパノラマ画像データの解像度が７０００×５０００であり、カメラの解像度が３０００×３０００、且つオーバーラップ領域として、分割画像データの１／３を用いる場合を考える。このとき、２枚の分割画像データを横方向に合成すると、図２−２（ｄ）のように分割画像データ３０１及び３０２が１／３（１０００ピクセル）だけ重なり、オーバーラップ領域３０３ができる。この結果、合成画像データのサイズは５０００×３０００になる。このサイズに基づいて分割数を計算すると、分割結果３０４のように、分割画像数は６枚となる。また、本実施形態では、カメラを回転させることで、被写体全域の撮影を行うが、カメラ自体がレール等によって、上下左右に平行移動するような撮影システムでも構わないし、被写体が平行移動するようなシステムでも構わない。図２−２（ａ）は、図２−１（ｂ）の方法を用いて全景画像の撮影を行った結果である。この場合、樽型歪みや糸巻き型歪みと呼ばれるレンズの歪みがあるので、その歪みは既存の手法を用いて予め補正しておく。なお、全景画像を一枚の画像データに収めているので、全景画像データの解像度は分割画像データの解像度に比べて高くはない。
【００１４】
図２−２（ｂ）は、図２−１（ｃ）の方法を用いて分割画像の撮影を行った結果を示している。縦横それぞれ３分割で撮影された分割画像を示す。各分割画像データは、全景画像データと同様にレンズ歪みが発生しているため、既存の手法を用いて予め補正しておく必要がある。また、図２−２（ｃ）の右図に示すように、各分割画像データでは縦線や横線が斜め方向に歪んだ現象が見られる。これは、カメラの回転により、被写体を斜め方向から撮影しているためである。また、被写体とカメラが平行に設置できていない場合にもこのような歪みが発生する。このような歪みを補正する処理をパース補正と呼び、パース補正を行うことにより、分割された複数の画像を精度よく合成することができる。また、パース補正のみでは、補正しきれない被写体の微小な動きの影響を取り除くため、各分割画像データをメッシュ分割し、メッシュを微小変形させるメッシュ補正処理も実行する必要がある。
【００１５】
図３−１及び図３−２は、パース補正処理及びメッシュ補正処理の概要を説明するための図である。図３−１（ａ）は、パース補正処理を表している。４０３は被写体であり、カメラ４０１で被写体４０３を撮影する場合を考える。カメラ４０１は、斜め方向から被写体４０３を撮影している。このときの画像データの画素位置と被写体位置との関係は、以下の式１で表すことができる。
ＩｍａｇｅＰｏｓ（Ｘ，Ｙ）＝Ｓｃｒｅｅｎ（Ｐｒｏｊ＊Ｖｉｅｗ＊Ｐｏｓ（ｘ，ｙ，ｚ））・・・式１
ここで、Ｐｏｓ（ｘ，ｙ，ｚ）は被写体の３次元的な位置を示している。Ｖｉｅｗは視点変換行列であり、カメラ４０１の位置、撮影方向を示す。Ｐｒｏｊは、３次元から２次元への射影行列であり、カメラの画角を示す。Ｓｃｒｅｅｎ（）は、座標系を変換するのに用いられる関数である。Ｘ、Ｙは、画像データの２次元的な配置を示しており、整数値で表される。４０２は仮想カメラであり、被写体４０３に対して正面方向に設置されている。仮想カメラ４０２で撮影される画像データの再現を図ることにより、パース補正処理を実施できる。仮想カメラ４０２においても、画像データの画素位置と被写体位置との関係を、以下の式２で表すことができる。
ＩｍａｇｅＶＰｏｓ（Ｘ，Ｙ）＝Ｓｃｒｅｅｎ（Ｐｒｏｊ＊ＶｉｅｗＶ＊Ｐｏｓ（ｘ，ｙ，ｚ））・・・式２
ＶｉｅｗＶは視点変換行列であり、仮想カメラ４０２の位置、撮影方向を示す。ＶｉｅｗＶ以外のパラメータは式１と同じである。ここで、式１と式２とをマージすることにより、
ＩｍａｇｅＶＰｏｓ（Ｘ，Ｙ）＝Ｆｕｎｃ（ＩｍａｇｅＰｏｓ（Ｘ0，Ｙ0））・・・式３
が得られる。Ｆｕｎｃ（）は、ＩｍａｇｅＶＰｏｓ（）とＩｍａｇｅＰｏｓ（）とを対応付ける関数であり、式１及び式２より得られる。Ｘ0、Ｙ0は、Ｘ、Ｙに対応するカメラ４０１の画像データの座標であり、実数値をとる。これで、ＩｍａｇｅＰｏｓ（Ｘ0，Ｙ0）の画素値がわかれば、ＩｍａｇｅＶＰｏｓ（Ｘ，Ｙ）の画素値を設定できる。即ち、仮想カメラ４０２の撮像画像データを再現することができる。このとき、Ｘ0，Ｙ0は実数値であるので、画素値を取得する場合は実数値間において補間処理が必要となる。
【００１６】
図３−１（ｂ）において、カメラ画像データ４０４は、カメラ４０１で撮影された画像データである。図中において被写体領域であるグレーの領域が台形状に歪んでいる。これを、式３を用いて、仮想カメラ４０２により撮影される撮影画像データを再現した結果が仮想カメラ画像データ４０５である。被写体領域の歪みが補正されていることがわかる。理論的には、レンズ補正、パース補正が行われれば、画像データの合成は分割画像データを配置するだけで可能になる。しかし、実際には旋回台の回転誤差等が原因で、そのまま合成することはできない。そのため、パース補正時のカメラ回転角度等のパラメータを、最適な値に修正する必要がある。更に、被写体の微小な動きの影響を取り除くため、図３−２（ａ）に示すメッシュ補正が必要となる。メッシュ補正は、各分割画像データを微小変形させる処理である。分割画像データを細かいメッシュ状に分け、メッシュの各格子点を任意の方向に移動させることにより、合成時の細かいずれを補正する。図３−２（ｂ）は、分割画像の撮影位置を取得する方法を示している。カメラと被写体との距離がＬで、カメラの回転度数が横方向にθ、縦方向にφであるとする。このとき、分割画像の中心は点(Ｌ×tanθ,Ｌ×tanφ)を向いているため、これらの値を用いて撮影位置を決定することができる。また同時に、全景画像との位置の対応付けを行うこともできる。
【００１７】
図４−１及び図４−２は、パース補正処理及びメッシュ補正処理において、最適なパラメータを検出する手法について説明するための図である。処理全体の流れとしては、初めにパース補正で大まかな補正を行い、次にメッシュ補正で微調整を行う流れとなる。そのため先ず図４−１において、ＣＰＵ１０４はパース補正の最適パラメータを決定する。分割画像データ１１０２と、分割画像データ１１０２に対応する全景画像データ１１０１とがあった場合を考える。まず、ＣＰＵ１０４は、旋回台の回転計から得られたカメラの回転角度や、レーザ測定等により取得した被写体とカメラとの距離情報をパラメータとして入力し、分割画像データ１１０２に対してパース補正を実行し、分割画像データ１１０４を生成する。そして、ＣＰＵ１０４は、分割画像データ１１０４と全景画像データ１１０１との差分をとった、差分画像データ１１０３を生成する。差分画像データ１１０３において、黒い領域は差分値が０、黒以外の領域は差分値が０でないことを示している。理論上はパース補正を行うことにより、差分画像データは全て黒い領域になるはずである。しかし、実際には旋回台の精度が悪い場合などは、回転角度にずれが生じるため、黒以外の領域も発生する。そのため、ずれが生じた分の回転に対して修正する必要がある。そこで、ＣＰＵ１０４は、旋回台の回転計から得られたカメラの回転角度に対し、その前後に回転角度が振れるようにパラメータを変更させ、ずれを補正していく。
【００１８】
先ず、ＣＰＵ１０４は、ある変更したパラメータを用いて、分割画像データ１１０２に対してパース補正を実行し、分割画像データ１１０５を生成する。同時に、ＣＰＵ１０４は、分割画像データ１１０５と全景画像データ１１０１との差分をとった、差分画像データ１１０６を生成する。すると、差分画像データ１１０６は、差分画像データ１１０３と比較すると黒い領域が増えていることがわかる。つまり、差分値の総和が差分画像データ１１０６の方が小さくなっている。後は、パラメータを変えながらパース補正を繰り返し、差分値の総和が一番小さくなるパラメータを決定すれば、回転角度のずれを修正できる。大抵の場合は、この状態で差分画像データは全て黒い領域になる。しかし、被写体が空調の風等により、微小に動いている場合には、パース補正を行っても黒以外の領域が発生することがある。そのため、図４−２のようなメッシュ補正を実施する。左図がメッシュ補正前で、全景画像データと分割画像データとを重ねた状態である。また、縦線と横線が交わる各点がメッシュの格子点となっており、各格子点の位置は分割画像データの位置から計算できる。左図では、分割画像データの輪郭１１０７と全景画像データの輪郭１１０８とにずれがある。そのため、この状態で差分画像データを生成すると、差分値の総和は大きくなる。そこで、輪郭がずれている箇所の近くのメッシュの格子点１１０９を右図のように移動させると、分割画像データと全景画像データの輪郭が一致するようになる。つまり、差分値の総和が小さくなる。このように、各メッシュの格子点を動かしながら、差分値の総和が最も小さくなる格子点位置を決定すれば、被写体が微小に動いている影響を補正できる。このようにして、各補正の差分値が最小になるように調整すると、合成の精度を向上させることができる。
【００１９】
図５は、本実施形態におけるパノラマ画像データ合成処理を示すフローチャートである。ステップＳ２０１において、ＣＰＵ１０４は、図２−１で説明した手法により全景画像の撮影をカメラ装置１０５に実行させる。全景画像データはカメラ装置１０５から入力され、ＲＡＭ１０６上に展開される。このときＣＰＵ１０４は全景画像データに対してレンズ歪み補正を実施する。ステップＳ２０２において、ＣＰＵ１０４は所望のパノラマ画像データの解像度から分割数Ｎを決定し、図２−１で説明した手法によりＮ枚分の分割画像データの撮影を行う。分割画像データ群もカメラ装置１０５から入力され、ＲＡＭ１０６上に展開される。このときＣＰＵ１０４は分割画像データに対してレンズ歪み補正を実施する。ステップＳ２０３において、ＣＰＵ１０４は実施する補正処理を決定する。補正処理としてはパース補正処理、メッシュ補正処理があり、パース補正処理で大まかな補正を行い、メッシュ補正処理で微調整を行う流れとなる。そのため、１回目の処理はパース補正処理を選択し、２回目の処理はメッシュ補正処理を選択することになる。ステップＳ２０４において、ＣＰＵ１０４はＲＡＭ１０６上に変数ｉを生成し、０に初期化する。また、ＣＰＵ１０４は各補正に用いるパラメータもここで初期化する。例えばパース補正の場合に用いられるパラメータは、カメラ位置（ＸC，ＹC，ＺC)、カメラと被写体との距離Ｌ、カメラの回転角(θ，φ)であり、撮影時にレーザ距離計や回転計等で測定した測定値が存在する。さらに、ＣＰＵ１０４は、測定値から各パラメータを変化させる範囲を決めておき、その最小値で各パラメータを初期化しておく。メッシュ補正の場合も、各メッシュの座標値（Ｘm，Ｙm，Ｚm）がパラメータであるので、ＣＰＵ１０４は撮影時のパラメータから変化する範囲を決めておき、最小値で初期化しておく。また、ＣＰＵ１０４は、同時に各パラメータに対し、それぞれ一定のインクリメント値を決めておく。なお、ステップＳ２０１は第１の取得手段の処理例であり、ステップＳ２０２は第２の取得手段の処理例である。
【００２０】
ステップＳ２０５において、ＣＰＵ１０４はｉ番目の分割画像データに対し、指定されたパラメータを用いてステップＳ２０３で選択した補正処理を行う。補正結果は、ＲＡＭ１０６上の別の領域に保管される。ステップＳ２０６において、ＣＰＵ１０４は補正処理を行ったｉ番目の分割画像データと、それに対応する全景画像データの部分領域との差分値を計算する。このとき、図３−２（ｂ）のように、分割画像データの撮影領域を求めることで、分割画像データと全景画像データとの対応を取ることができる。全景画像データと分割画像データでは解像度が異なるので、差分値が計算できるように、ＣＰＵ１０４は全景画像データを分割画像データに合わせて拡大しておく。そして、ＣＰＵ１０４は画素毎の差分値を足し合わせて差分値の総和を取り、ＲＡＭ１０６上に保管しておく。なお、ステップＳ２０５は補正手段の処理例であり、ステップＳ２０６は算出手段の処理例である。
【００２１】
ステップＳ２０７において、ＣＰＵ１０４は各補正で用いるパラメータに対し、変化する範囲内の全てのパラメータで差分値が計算されたかを判断する。Ｙｅｓの場合は、ステップＳ２０８に進み、Ｎｏの場合は、ステップＳ２０５に戻り、ＣＰＵ１０４は各補正処理のパラメータに対し、ステップＳ２０４で算出したインクリメント値を足し合わせ、再度補正処理を実行する。ステップＳ２０８において、ＣＰＵ１０４はステップＳ２０６で計算した差分値の中から最小のものを選択し、その際の補正パラメータを最適パラメータとして決定する。ステップＳ２０９において、ＣＰＵ１０４はｉを１インクリメントし、ステップＳ２１０に進む。ステップＳ２１０において、ＣＰＵ１０４は全分割画像データに対し、補正処理を行ったかどうかを判断する。Ｙｅｓの場合は、ステップＳ２１１に進み、Ｎｏの場合は、ステップＳ２０５に戻り、ＣＰＵ１０４は次の分割画像データを処理する。ステップＳ２１１において、ＣＰＵ１０４はパース補正処理、メッシュ補正処理の全ての処理を行ったかどうかを判断する。Ｙｅｓの場合は、ステップＳ２１２に進み、Ｎｏの場合は、ステップＳ２０３に戻り、ＣＰＵ１０４は次の補正処理に移る。ステップＳ２１２において、ＣＰＵ１０４は全ての分割画像データに対して最適パラメータ群を用いて全ての補正処理を行う。そして、ＣＰＵ１０４は補正後の各分割画像データ群をつなぎあわせ、パノラマ画像データを生成する。ここでのつなぎあわせ処理は、単純に分割画像データ群を重ね合わせるだけでよく、図３−２（ｂ）のように、ＣＰＵ１０４は分割画像データの撮影領域を求め、その位置に分割画像データを重ねていく。以上説明した処理制御を行うことで、高精度なパノラマ画像データを合成することが可能となる。なお、ステップＳ２１２は生成手段の処理例である。
【００２２】
なお、本実施形態では、取りうる全てのパラメータを用いて各補正処理を実行し、その中から最適なパラメータを決定しているが、例えば、遺伝的アルゴリズム等を用いて効率的に最適なパラメータを決定することもできる。また、被写体として絵画等の文化物を用いて説明したが、一般的な広視野の風景等を用いて実現しても同様の効果を得ることができる。
【００２３】
次に、第２の実施形態について説明する。本実施形態では、パノラマ合成処理を繰り返すことによって、精度と解像度を向上させる手法について説明する。本実施形態のシステム構成、画像の撮影方法及び画像の補正方法については、第１の実施形態と同じであるため、説明を省略する。
【００２４】
具体的に、３０００×２０００ピクセルの解像度で撮影可能なカメラを用いて、３００００×２００００ピクセルのパノラマ画像データを生成する場合を考える。ここでは説明の簡単のため、オーバーラップ領域は考えないものとする。このとき、単純に考えれば、分割数は１０×１０の１００となるが、全景画像データは３０００×２０００ピクセルの解像度で撮影されるため、分割画像データに比べると解像度が１／１０になってしまう。この状態で、全景画像データと分割画像データとの差分値を求めても、全景画像データは１０倍に拡大された状態なので十分な精度が出ない。
【００２５】
この現象について図６を用いて説明する。まず、分割画像データ１２０１と、それに対応する全景画像データ１２０３とがあった場合を考える。ここで、両画像データの差分値を計算するには、分割画像データ１２０１を拡大し、両画像データのサイズを合わせる必要がある。そこで、ＣＰＵ１０４は分割画像データ１２０１を拡大し、分割拡大画像データ１２０２を得るが、分割拡大画像データ１２０２は、拡大処理のためエッジがつぶれてしまい、全景画像データ１２０３と直接比較するのは難しい。そこでＣＰＵ１０４は、先ず分割数を２×２の４として、パノラマ合成データＰ（０）を生成する。この場合、差分値の計算においても、全景画像データの拡大率は２倍なので精度上の問題はほとんどない。次にＣＰＵ１０４は、生成したＰ（０）を全景画像データとして用いて、分割数１６（４×４)のパノラマ合成処理を行い、パノラマ合成データＰ（１）を得る。この場合、前回と同様に、全景画像データＰ（０）の拡大率は２倍なので、精度上の問題はない。次にＣＰＵ１０４は、生成したＰ（１）を全景画像データとして用いて、分割数６４(８×８)のパノラマ合成処理を行い、パノラマ合成データＰ（２）を得る。この場合も、前回と同様に、全景画像データＰ（１）の拡大率は２倍なので精度上の問題はない。最後にＣＰＵ１０４は、生成したＰ（２）を全景画像データとして用いて、分割数１００（１０×１０）のパノラマ合成処理を行い、パノラマ合成データＰ（３）を得る。Ｐ（３）がこの場合における最終出力パノラマ画像データとなり、解像度と精度を向上させることができる。
【００２６】
図７は、上述した第２の実施形態における処理をまとめて示したフローチャートである。ステップＳ５０１において、第１の実施形態と同様に、ＣＰＵ１０４は被写体の全景画像データの撮影をカメラ装置１０５に実行させる。ステップＳ５０２において、ＣＰＵ１０４はパノラマ合成処理の実行回数Ｍと、それぞれの合成処理における分割数Ｎ（ｉ）を決定する。上記の例では、Ｍが４で、Ｎ（ｉ）＝[４,１６,６４,１００]となる。ステップＳ５０３において、ＣＰＵ１０４は変数ｉを０に初期化する。ステップＳ５０４において、ＣＰＵ１０４はｉ番目の分割画像データの撮影を行う。ここでＮ（ｉ）枚の画像データを取得する。ステップＳ５０５において、ＣＰＵ１０４は、撮影した分割画像データを用いて、第１の実施形態と同様の手法でパノラマ画像データＰ（ｉ）を生成する。ステップＳ５０６において、ＣＰＵ１０４は全景画像データをＰ（ｉ）と差し替える。ステップＳ５０７において、ＣＰＵ１０４はｉを１インクリメントする。ステップＳ５０８において、ＣＰＵ１０４はｉ＝Ｍ−１かどうかの判断を行う。Ｙｅｓの場合は処理を終了し、最終的なパノラマ合成データとして、Ｐ（Ｍ−１）が得られる。Ｎｏの場合は、ステップＳ５０４に戻り、処理を続行する。以上説明した処理制御を行うことで、より高精度且つ高解像度なパノラマ画像データを合成することが可能となる。なお、ステップＳ５０６は差替え手段の処理例である。
【００２７】
次に、第３の実施形態について説明する。本実施形態では、プロジェクタを用いてパノラマ画像データを生成する手法について説明する。本実施形態のシステム構成、画像の撮影方法及び画像の補正方法については、第１の実施形態と同様であるため、説明を省略する。
【００２８】
図８は、プロジェクタ投影システムの概略を説明するための図である。パノラマ合成等の画像処理を実行する情報端末６０５に、パノラマ画像投影用のプロジェクタ６０３と、投影結果をキャプチャするためのキャプチャカメラ６０４とが接続されている。また、プロジェクタ６０３からの投影結果は、被写体６０１に重ねるように投影領域６０２に投影する。このとき、プロジェクタのレンズ性能や設置誤差に起因する、投影時の歪みを修正するためキャリブレーション処理を行っておく。
【００２９】
図９は、本実施形態のパノラマ画像データの合成処理を示すフローチャートである。ステップＳ９０１において、情報端末６０５のＣＰＵ１０４は所望のパノラマ画像データの解像度から分割数Ｎを決定し、図２−１及び図２−２で説明した手法でＮ枚分の分割画像データの撮影を行う。撮影された分割画像データはカメラ装置１０５から入力され、情報端末６０５のＲＡＭ１０６上に展開される。ステップＳ９０２において、ＣＰＵ１０４はＲＡＭ１０６上に変数iを生成し、０に初期化する。また、ＣＰＵ１０４はパース補正処理、メッシュ補正処理の各補正処理に対し、パラメータを初期値に設定する。さらに、ＣＰＵ１０４は各補正のパラメータに対し、それぞれ一定のインクリメント値を設定しておく。初期化処理については、第１の実施形態で説明しているため、詳細は省略する。ステップＳ９０３において、ＣＰＵ１０４は分割画像データ群を合成し、パノラマ画像データをＲＡＭ１０６上に生成する。このときの処理を具体的に説明する。
【００３０】
まず、ＣＰＵ１０４は各補正の指定されたパラメータを用いて補正処理を行う。そして、図３−２（ｂ）のように、ＣＰＵ１０４は分割画像データの撮影領域を取得し、その位置に分割画像データを単純に重ね合わせる。これによって、パノラマ合成データを生成することができる。ステップＳ９０４において、ＣＰＵ１０４は生成したパノラマ画像データを、プロジェクタ６０３を用いて被写体に投影する。ステップＳ９０５において、ＣＰＵ１０４は投影結果をキャプチャカメラ６０４を用いて撮影し、キャプチャ画像データを得る。ステップＳ９０６において、ＣＰＵ１０４はキャプチャ画像データに対してエッジ抽出処理を行う。エッジ抽出処理は、例えばラプラシアンフィルタやハイパスフィルタ等を用いる。このときの結果を図１０（ａ）に示す。ステップＳ９０７において、ＣＰＵ１０４はエッジ比較処理を行う。これは、あるエッジの近辺を走査し、類似するエッジを検出する。エッジの類似度としては、エッジをｎ次曲線に近似した際のパラメータや、エッジを細かい線分に分割した際のそれぞれの傾きと長さ等を用いる。
【００３１】
ここで、例えば図１０（ｂ）に示すように、エッジ７０１及びエッジ７０２が検出されたとする。このとき、ＣＰＵ１０４は２本のエッジの距離を計算し、エッジ間距離７０３を算出する。ＣＰＵ１０４はこの処理を全エッジに対し実行し、その総和値を求める。ステップＳ９０８において、ＣＰＵ１０４は各補正で用いるパラメータに対し、変化する範囲内の全てのパラメータでエッジ総和値が計算されたかを判断する。Ｙｅｓの場合は、ステップＳ９０９に進み、Ｎｏの場合は、ステップＳ９０３に戻り、ＣＰＵ１０４は各補正処理のパラメータに対し、ステップＳ９０２で算出したインクリメント値を加え、再度パノラマ合成処理を実行する。ステップＳ９０９において、ＣＰＵ１０４はステップＳ９０７で計算したエッジ総和値の中から最小のものを選択し、その際の補正パラメータを最適パラメータとして決定する。ステップＳ９１０において、ＣＰＵ１０４はiを１インクリメントし、ステップＳ９１１に進む。ステップＳ９１１において、ＣＰＵ１０４は全分割画像データに対し、各補正処理を行ったかどうか（ｉ＝Ｎ−１かどうか）を判断する。Ｙｅｓの場合はステップＳ９１２に進み、Ｎｏの場合は、ステップＳ９０３に戻り、次の分割画像データを処理する。ステップＳ９１２において、ＣＰＵ１０４は各分割画像データに対し、最適パラメータ群を用いて各補正処理を行い、パノラマ合成データを生成する。
【００３２】
以上説明した処理制御を行うことで、高精度なパノラマ画像データを合成することが可能となる。さらに、実際の被写体上に合成結果を投影するので、被写体に対する忠実再現度が一見してわかる。
【００３３】
次に、第４の実施形態について説明する。本実施形態では、プロジェクタの投影領域を変化させることによって、精度と解像度を向上させる手法について説明する。本実施形態のシステム構成、画像の撮影方法及び画像の補正方法については、第１の実施形態と同様であるため、説明を省略する。
【００３４】
３０００×２０００ピクセルの解像度で投影可能なプロジェクタを用いて、３００００×２００００ピクセルのパノラマ画像データを生成する場合を考える。ここでは、分かりやすいようにオーバーラップ領域は考えないものとする。単純に、被写体全域にプロジェクタで投影を行った場合、投影画像の解像度は３０００×２０００ピクセルのため、生成後のパノラマ画像データに比べると解像度が１／１０になってしまう。この状態でエッジ間の距離を求めても、投影画像は１０倍に拡大された状態なので十分な精度が出ない。この現象については第２の実施形態と同様であるので、詳細な説明は省略する。そこで、ＣＰＵ１０４はプロジェクタの投影領域を、１０×１０の１００個の領域に分割する。そして、ＣＰＵ１０４は、それぞれの領域において、対応するパノラマ画像データの一部を投影する。この様子を、図１１（ａ）に示す。プロジェクタ８０３は、投影領域８０２を絞り込んで投影している。このとき、投影する画像は、図１１（ｂ）のように、パノラマ画像データ８０５の中の投影領域８０２に対応する領域である投影画像８０６となる。あとは、投影領域を上下左右に移動しながら、投影画像を変化させ、第３の実施形態と同様の処理を繰り返す。
【００３５】
図１２は、上述した第４の実施形態における処理をまとめて示したフローチャートである。ステップＳ１００１において、ＣＰＵ１０４はパノラマ合成処理ｎの分割数Ｎと、それに対応するプロジェクタ投影領域Ｒ（ｉ）を設定する。ステップＳ１００２において、ＣＰＵ１０４は変数ｉを０に初期化する。ステップＳ１００３において、ＣＰＵ１０４は分割画像データの撮影をカメラ装置１０５に実行させる。ここで、Ｎ枚の分割画像データを取得する。ステップＳ１００４において、ＣＰＵ１０４は撮影した分割画像データを用いて、パノラマ画像データを生成する。ステップＳ１００５において、ＣＰＵ１０４は投影領域Ｒ（ｉ）に対応するパノラマ画像データの一部を、プロジェクタに投影する。ステップＳ１００６において、ＣＰＵ１０４は第３の実施形態と同様の各補正処理を行う。ステップＳ１００７において、ＣＰＵ１０４はｉを１インクリメントする。ステップＳ１００８において、ＣＰＵ１０４はｉ＝Ｎ−１かどうかの判断を行う。Ｙｅｓの場合は処理を終了し、最終的なパノラマ画像データが得られる。Ｎｏの場合は、ステップＳ１００５に戻り、処理を続行する。
【００３６】
以上説明した処理制御を行うことで、より高精度且つ高解像度なパノラマ画像データを合成することが可能となる。さらに、実際の被写体上に合成結果を投影するので、被写体に対する忠実再現度が一見してわかる。
【００３７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011160354.tif 000003
【図２−１】
2011160354.tif 000004
【図２−２】
2011160354.tif 000005
【図３−１】
2011160354.tif 000006
【図３−２】
2011160354.tif 000007
【図４−１】
2011160354.tif 000008
【図４−２】
2011160354.tif 000009
【図５】
2011160354.tif 000010
【図６】
2011160354.tif 000011
【図７】
2011160354.tif 000012
【図８】
2011160354.tif 000013
【図９】
2011160354.tif 000014
【図１０】
2011160354.tif 000015
【図１１】
2011160354.tif 000016
【図１２】
2011160354.tif 000017