(57)【特許請求の範囲】
【請求項１】
撮像によって得られた画像データのうち少なくとも一部の表示を制御する画像処理装置であって、
前記画像データを、隣接する領域と重複領域をもつように分割された複数の部分画像毎に保持する保持手段と、
前記画像データのうち表示する表示領域を指定する操作を受け付け、前記画像データから生成された前記表示領域に表示する画像データの表示を制御する制御手段とを有し、
前記制御手段は、
前記表示領域を表す各頂点について、前記画像データに応じたパース補正の逆変換を行うことにより、前記表示領域の対応領域を算出する算出手段と、
前記保持手段が保持する複数の部分画像のうち、前記対応領域に含まれる少なくとも一つ以上の部分画像を取得する取得手段と、
前記取得手段が取得した部分画像に対して、パース補正をする補正手段と
を有することを特徴とする画像処理装置。
【請求項２】
前記制御手段は、表示領域に表示する画像データの表示倍率を指定する操作を受け付け、
前記制御手段はさらに、前記補正手段によって補正された部分画像に対して、前記表示倍率に応じた拡大又は縮小処理を実行する処理手段を有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記保持手段は、複数の異なる解像度に対応した部分画像群を有し、
前記取得手段は、前記表示倍率に対応する部分画像群に含まれる部分画像を取得することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記補正手段の前記パース補正及び前記処理手段の前記拡大又は縮小処理は、所定の画素数を用いた補間処理を含み、
前記保持手段は、前記所定の画素数に応じた重複領域をもつように分割された前記部分画像を保持していることを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記部分画像は、タイル状に分割された画像であることを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
撮像によって得られた画像データのうち少なくとも一部の表示を制御する画像処理装置が実行する画像処理方法であって、
前記画像データを、隣接する領域と重複領域をもつように分割された複数の部分画像毎に保持する保持ステップと、
前記画像データのうち表示する表示領域を指定する操作を受け付け、前記画像データから生成された前記表示領域に表示する画像データの表示を制御する制御ステップとを含み、
前記制御ステップは、
前記表示領域を表す各頂点について、前記画像データに応じたパース補正の逆変換を行うことにより、前記表示領域の対応領域を算出する算出ステップと、
前記保持ステップで保持する複数の部分画像のうち、前記対応領域に含まれる少なくとも一つ以上の部分画像を取得する取得ステップと、
前記取得ステップで取得した部分画像に対して、パース補正をする補正ステップとを含むことを特徴とする画像処理方法。
【請求項７】
撮像によって得られた画像データのうち少なくとも一部の表示を制御するコンピュータを、
前記画像データを、隣接する領域と重複領域をもつように分割された複数の部分画像毎に保持する保持手段と、
前記画像データのうち表示する表示領域を指定する操作を受け付け、前記画像データから生成された前記表示領域に表示する画像データの表示を制御する制御手段として機能させ、
前記制御手段は、
前記表示領域を表す各頂点について、前記画像データに応じたパース補正の逆変換を行うことにより、前記表示領域の対応領域を算出する算出手段と、
前記保持手段が保持する複数の部分画像のうち、前記対応領域に含まれる少なくとも一つ以上の部分画像を取得する取得手段と、
前記取得手段が取得した部分画像に対して、パース補正をする補正手段とを有するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分割された画像データの変形処理を行う技術に関するものである。
【背景技術】
【０００２】
近年、電動雲台を駆動し、カメラの向きを変えながら複数枚の画像データを撮影し、撮影した画像データを結合することで、非常に多くの画素からなる画像データを生成するシステムが注目されている。被写体としては、風景、絵画等が挙げられる。このようなシステムの場合、カメラを回転させながら撮影を行うため、被写体を斜め方向より撮影することになる。以下では、このように撮影された画像データをパース画像データと称す。複数枚の画像データを結合するには、先ず、パース画像データを正面から撮影したような画像データに補正する必要がある。以下では、このような補正をパース補正と称す。パース補正に関する手法は、例えば特許文献１に開示されている。
【０００３】
一方、複数枚の画像データを結合するには、各画像データにパース補正を実施し、各画像データを所定の位置に配置する。このとき、システムのメモリ量が少ない場合、全ての画像データをメインメモリに展開すると、ハードディスク等の書き込み速度の遅いデバイスをメモリとして代用するスワップ現象が発生し、処理速度が著しく低下してしまう。そのため、個々の画像データをタイル状に分割し、各タイル状の画像データに対して順番に処理を実施する必要がある。しかし、パース補正のように、処理前後で画像領域が変化するような処理では、単純なタイル分割では対応することができない。これに対し、特許文献２には、画像表示領域をタイル状に分割し、各タイル状の画像表示領域に対応する元画像領域を算出し、補正処理を実施する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１７８５３５号公報
【特許文献２】特開２００５−１３５０９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
タイル分割を行う画像処理では、処理をスムーズに行うため、複数枚のタイル状の画像データをメモリ上に貯めておく、キャッシュという手法がとられる。しかしながら、特許文献２に開示される技術では、補正処理のパラメータに変更があった場合、元画像領域も変更されるため、画像データのキャッシュが行いにくいという問題がある。さらに、補正処理を行うには、画像データを補間する必要があるが、タイル状の画像データの端では補間処理ができない。
【０００６】
そこで、本発明の目的は、メモリの消費を抑え、且つ、高速な変形処理を実施することにある。
【課題を解決するための手段】
【０００７】
本発明の画像処理装置は、撮像によって得られた画像データのうち少なくとも一部の表示を制御する画像処理装置であって、前記画像データを、隣接する領域と重複領域をもつように分割された複数の部分画像毎に保持する保持手段と、前記画像データのうち表示する表示領域を指定する操作を受け付け、前記画像データから生成された前記表示領域に表示する画像データの表示を制御する制御手段とを有し、前記制御手段は、前記表示領域を表す各頂点について、前記画像データに応じたパース補正の逆変換を行うことにより、前記表示領域の対応領域を算出する算出手段と、前記保持手段が保持する複数の部分画像のうち、前記対応領域に含まれる少なくとも一つ以上の部分画像を取得する取得手段と、前記取得手段が取得した部分画像に対して、パース補正をする補正手段とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、メモリの消費を抑え、且つ、高速な変形処理を実施することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る画像処理装置のシステム構成を示す図である。
【図２Ａ】ＵＩ画面の表示例を示す図である。
【図２Ｂ】ＵＩ画面の表示例を示す図である。
【図２Ｃ】ＵＩ画面の表示例を示す図である。
【図３】ズーム操作時の画像データの処理を説明するための図である。
【図４】パース補正の概要を説明するための図である。
【図５】タイル分割された画像データに対してパース補正を実施する手法について説明するための図である。
【図６】タイル分割された画像データに対して画素補間を実施した際の問題点を説明するための図である。
【図７】図３のようなレイヤ構造を生成する処理を示すフローチャートである。
【図８】実際に図２に示すＵＩ画面を用いてタイル画像データに対してパース補正を行う処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１１】
以下では、タイル状に分割された画像データ（以下、タイル画像データと称することがある）を、タイル画像データ毎にパース補正し、ＵＩ（ユーザインタフェース）上に表示する手法について説明する。
【００１２】
図１は、実施形態に係る画像処理装置のシステム構成を示す図である。入力装置１０１は、ユーザからの指示やデータを入力するための装置であり、キーボードやマウス等のポインティングシステムで構成される。表示装置１０２は、ＧＵＩ（Graphical User Interface）等を表示する装置であり、通常はＣＲＴ（Cathode Ray Tube）や液晶ディスプレイ等のモニタで構成される。蓄積装置１０３は、画像データやプログラムを蓄積する装置であり、通常はハードディスクで構成される。ＣＰＵ（Central Processing Unit）１０４は、本実施形態に係る画像処理装置の各種処理を制御する。ＲＡＭ（Random Access Memory）１０６は、処理に必要なプログラム、データ、作業領域等をＣＰＵ１０４に提供する。なお、図７及び図８のフローチャートに示す処理に必要な制御プログラムは、蓄積装置１０３に格納されているものとし、一旦ＲＡＭ１０６に読み込まれてＣＰＵ１０４によって実行される。カメラ装置１０５は、デジタルカメラ等と接続し、画像データを取得する。なお、実際のシステム構成については、上記以外にも様々な構成要素が存在するが、本発明の主眼ではないので、その説明は省略する。
【００１３】
図２Ａは、図１の表示装置１０２に相当するＵＩ画面を示す図である。ＵＩ画面２０１内には画像表示領域２１０があり、ここに画像データ群（画像データＡ、Ｂ、Ｃ）２０２が表示されている。各画像データＡ、Ｂ、Ｃはパース画像データになっており、被写体であるグレーの領域が台形に歪んでいる。２０５はパース補正実行ボタンであり、このボタンが押下されると、画像データ群２０２に対してパース補正が実行される。２０３は表示位置移動ボタンであり、上下左右に画像データ群２０２を移動させることでき、任意の位置で画像データ群２０２を閲覧することができる。２０４はズームスライダであり、これが操作されることにより、画像データ群２０２の表示倍率が変更される。
【００１４】
図２Ｂは、パース補正後におけるＵＩ画面を示す図である。パース補正実行ボタン２０５が押下されると、画像データ群２０２がパース補正後の画像データ群２０７に補正され、被写体であるグレーの領域の歪みが補正されている。図２Ｃは、ズーム操作後におけるＵＩ画面を示す図である。ズームスライダ２０４で表示倍率を上げると、パース補正後の画像データ群２０７が拡大され、ズーム画像データ群２０９が表示される。
【００１５】
ズーム操作時の画像データの処理を、図３を用いて説明する。図３（ａ）は、画像データのレイヤ構造を示している。図３（ａ）に示すように、画像データは３０３〜３０５のレイヤ構造になっている。レイヤ２（３０５）は、画像データを単純にタイル分割したものである。レイヤ１（３０４）は、画像データを縦及び横それぞれ１／２に縮小したものをタイル分割したものである。レイヤ０（３０３）は、画像データを縦及び横それぞれ１／４に縮小したものをタイル分割したものである。３０３〜３０５で各タイル画像データのサイズは同じである。図３（ｂ）は、各レイヤと表示倍率との関係を示している。表示倍率が上がり、表示倍率が所定の閾値（図３（ｂ）の例では、４０％、７０％）を上回ると、順次解像度の高いレイヤに切り替わる（レイヤ０→レイヤ１→レイヤ２）。反対に、表示倍率が下がり、表示倍率が所定の閾値を下回ると、順次解像度の低いレイヤに切り替わる（レイヤ２→レイヤ１→レイヤ０）。閾値を上回ったり、下回らなければ、同じレイヤが維持され、バイリニアやバイキュービック等の画素補間によって拡大又は縮小処理が実施される。
【００１６】
図４は、パース補正の概要を説明するための図である。４０３は被写体であり、カメラ４０１で被写体４０３を撮影する場合について考える。なお、カメラ装置４０１は、図１のカメラ装置１０５に対応する構成である。図４において、カメラ４０１は、斜め方向から被写体４０３を撮影している。このときの画像データの画素位置と被写体位置との関係は、以下の式１で表すことができる。
ＩｍａｇｅＰｏｓ（Ｘ，Ｙ）＝Ｓｃｒｅｅｎ（Ｐｒｏｊ＊Ｖｉｅｗ＊Ｐｏｓ（ｘ，ｙ，ｚ））・・・式１
【００１７】
ここで、Ｐｏｓ（ｘ，ｙ，ｚ）は被写体４０３の３次元的な位置を示している。Ｖｉｅｗは視点変換行列であり、カメラ装置４０１の位置、撮影方向を示す。Ｐｒｏｊは、３次元から２次元への射影行列であり、カメラ装置の画角を示す。Ｓｃｒｅｅｎ（）は、座標系を変換するのに用いられる。Ｘ、Ｙは、画像データの２次元的な配置を示しており、整数値で表される。４０２は仮想カメラ装置であり、被写体４０３に対して正面方向に設置されている。仮想カメラ装置４０２で撮影された画像データを再現することにより、パース補正を実施できる。仮想カメラ装置４０２においても、画像データの画素位置と被写体位置との関係を、以下の式２で表すことができる。
ＩｍａｇｅＶＰｏｓ（Ｘ，Ｙ）＝Ｓｃｒｅｅｎ（Ｐｒｏｊ＊ＶｉｅｗＶ＊Ｐｏｓ（ｘ，ｙ，ｚ））・・・式２
【００１８】
ＶｉｅｗＶは視点変換行列であり、仮想カメラ装置４０３の位置、撮影方向を示す。後のパラメータは式１と同じである。ここで、式１と式２とをマージすることにより、以下の式３が得られる。
ＩｍａｇｅＶＰｏｓ（Ｘ，Ｙ）＝Ｆｕｎｃ（ＩｍａｇｅＰｏｓ（Ｘo，Ｙo））・・・式３
【００１９】
ここで、Ｆｕｎｃ（）は、ＩｍａｇｅＶＰｏｓ（）とＩｍａｇｅＰｏｓ（）との対応をとる関数であり、式１及び式２により得られる。Ｘo、Ｙoは、Ｘ、Ｙに対応するカメラ装置４０１の画像データの座標であり、実数値をとる。これで、ＩｍａｇｅＰｏｓ（Ｘo，Ｙo）の画素値が分かれば、ＩｍａｇｅＶＰｏｓ（Ｘ，Ｙ）の画素値を設定できる。すなわち、仮想カメラ装置４０２によって撮像された画像データを再現することができる。このとき、Ｘo、Ｙoは実数値であるので、画素値を取得する場合は画素補間が必要となる。画像データ４０４は、カメラ装置４０１で撮影された画像データである。被写体領域であるグレーの領域が台形に歪んでいる。これを、式３を用いて、仮想カメラ装置４０２で撮影された画像データを再現した結果が４０５の画像データである。画像データ４０５においては被写体領域の歪みが補正されていることがわかる。
【００２０】
図５は、タイル分割された画像データに対してパース補正を実施する手法について説明するための図である。先ず図５（ａ）に示すように、ＣＰＵ１０４は図２の画像表示領域２１０の座標Ｐ０、Ｐ１、Ｐ２、Ｐ３を算出する。次に図５（ｂ）に示すように、ＣＰＵ１０４は、画像表示領域２１０の座標Ｐ０〜Ｐ３に対して図４で説明したパース補正の逆変換を行うことにより、パース補正後に画像表示領域２１０において表示される画像データがパース補正前に表示されていた（座標Ｑ０、Ｑ１、Ｑ２、Ｑ３で囲まれた）表示領域（以下、対応領域と称す）５０１を算出する。次に図５（ｃ）に示すように、ＣＰＵ１０４は、対応領域をタイル分割し、座標Ｑ０〜Ｑ３が含有される、座標Ｔ０、Ｔ１、Ｔ２、Ｔ３で囲まれたブロック領域５０２を算出する。次に図５（ｄ）に示すように、ＣＰＵ１０４は、座標Ｔ０〜Ｔ３で囲まれるブロック領域内の各タイルに対してパース補正を実行する。そしてＣＰＵ１０４は、各タイルについてパース補正を実行した後、画像表示領域２１０に対応する領域５０３を表示する。
【００２１】
図６は、タイル分割された画像データに対して画素補間を実施した際の問題点を説明するための図である。図６の６０１のような、並んだ２枚のタイル画像データの境界部分を２倍に拡大すると、６０２のように画素１と画素２との間が画素１の色で補間される。これは、各タイル画像データを拡大するため、境界を越えた画素の情報がないためである。そこで、本実施形態では、６０３のようにタイル画像データに重複領域を設定する。すると、６０４のように、タイル画像データの境界部分を２倍に拡大しても、画素１と画素２との中間色で補間でき、正しい補間結果が得られる。先ずＣＰＵ１０４は、元の画像データ６０５に対してパース補正を実行し、パース補正後の画像データ６０６を得る。ここで第１の補間処理が行われる。次にＣＰＵ１０４は、パース補正後の画像データ６０６に対して拡大処理を行い、拡大処理後の画像データ６０７を得る。ここで第２の補間処理が行われる。すなわち、本実施形態においては、２回の補間処理が行われるため、それを考慮したタイル画像データの重複領域を設定する必要がある。また、第２の補間処理においては、タイル画像データの境界部分が斜線になるため、重複領域を余分にとる必要がある。例えば、６０８に示すようにタイル画像データの境界部分が斜線である場合、この境界部分を２倍に拡大すると、６０９に示すようなタイル画像データの境界部分が得られる。この場合、Ａの画素を生成するのにＢの画素が必要となる。さらに、Ｂの画素を生成するのにＣとＤの画素が必要となる。そのため、２倍の重複領域を取る必要がある。つまり、例えばバイリニア法で第１、第２の補間処理を実行する場合、第１の補間処理で重複領域１画素が必要となり、第２の補間処理で重複領域２画素が必要となり、合計３画素分の重複領域を設定する必要がある。
【００２２】
図７は、図３のようなレイヤ構造を生成する処理を示すフローチャートである。ステップＳ７０１において、カメラ装置１０５は、画像データの読み込みを行う。ステップＳ７０２において、ＣＰＵ１０４は画像データを縮小処理し、図３のようなレイヤ０（３０３）、レイヤ１（３０４）を生成する。ステップＳ７０１で読み込まれた画像データはレイヤ２（３０５）として使用される。ここでは、各レイヤの画像データはまだタイル分割されていない。ステップＳ７０３において、ＣＰＵ１０４はタイル画像データの重複領域を算出する。このとき、例えばバイリニア補間であれば、パース補正時に１画素、拡大時に２画素必要になるので、合計３画素分の重複領域が必要になる。同様に、バイキュービック補間の場合、６画素分の重複領域が必要となる。ステップＳ７０４において、ＣＰＵ１０４は、重複領域を加味したサイズで各レイヤをタイル分割する。ステップＳ７０５において、ＣＰＵ１０４は分割した各タイル画像データをファイル保存する。
【００２３】
図８は、実際に図２に示すＵＩ画面を用いてタイル画像データに対してパース補正を行う処理を示すフローチャートである。ステップＳ８０１において、図５（ａ）で説明したように、ＣＰＵ１０４は画像表示領域を算出する。なお、画像表示領域は、ユーザによって、移動又はズーム操作が行われる度に変更される。ステップＳ８０２において、ＣＰＵ１０４は、画像表示領域の各頂点についてパース補正の逆変換を行い、図５（ｂ）に示すような対応領域を算出する。ステップＳ８０３において、ＣＰＵ１０４は、図２のズームスライダ２０４で指定された表示倍率に対応するレイヤを選択する。ステップＳ８０４において、ＣＰＵ１０４は、選択したレイヤに応じて、対応領域から図５（ｃ）で説明したようなブロック領域を算出する。ステップＳ８０５において、ＣＰＵ１０４は、ステップＳ７０５でファイル保存したタイル画像データ群から、ステップＳ８０３で選択したレイヤに対応するタイル画像データ群を取得し、デコード処理する。このとき、ユーザ操作を快適に行えるよう、タイル画像データ群をある程度キャッシュしておく。逆にキャッシュされたタイル画像データがある場合は、それを用いてデコード処理を行う。ここでキャッシュされる、或いはキャッシュされているタイル画像データ群は、パース補正前のデータであるので、パース補正のパラメータが変更された場合においても、そのまま再利用可能である。ステップＳ８０６において、ＣＰＵ１０４は、デコード処理後のタイル画像データ群に対してパース補正を実行する。ステップＳ８０７において、ＣＰＵ１０４は、ズームスライダ２０４によって指定された表示倍率でパース補正後のタイル画像データ群を拡大する。ステップＳ８０９において、ＣＰＵ１０４は、拡大処理後のタイル画像データ群を表示し、処理を終了する。
【００２４】
本実施形態においては、タイル画像データの端において必要な重複領域を取ることにより、キャッシュの有効性を確保しつつ、メモリの消費を抑え、且つ、高速なパース補正処理を実施することができる。
【００２５】
上記実施形態では、パース補正についてのみ言及しているが、本手法はパース補正のみでなく、画像変形処理の全般に適用可能である。画像変形処理としては、例えばレンズ収差補正処理等が挙げられる。また、上記実施形態では、タイル画像データを表示する際に拡大することについてのみ説明したが、画像拡大処理及び画像縮小処理の何れでも対応することが可能である。また、上記実施形態では、矩形領域にタイル画像データを生成する手法について記載したが、矩形領域以外でも対応可能である。また、上記実施形態では、パース補正処理と画像データの拡大又は縮小処理における２回の補間処理についてのみ説明しているが、さらに多くの補間処理が行われる場合においても対応可能である。
【００２６】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005721410.tif 000002
【図２Ａ】
0005721410.tif 000003
【図２Ｂ】
0005721410.tif 000004
【図２Ｃ】
0005721410.tif 000005
【図３】
0005721410.tif 000006
【図４】
0005721410.tif 000007
【図５】
0005721410.tif 000008
【図６】
0005721410.tif 000009
【図７】
0005721410.tif 000010
【図８】
0005721410.tif 000011