(57)【特許請求の範囲】
【請求項１】
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データを格納した記憶部と、
ユーザから入力された表示領域移動要求に応じて前記階層データにおける階層を切り替えて表示領域の画像を描画する表示画像処理部と、
描画された表示領域の画像に対するユーザの編集操作入力を受け付け、前記階層データのうち編集対象の領域の編集後の画像を表す更新用階層データを、元の階層データとともに編集後の画像データとして前記記憶部に格納する画像データ更新部と、
を備え、
前記画像データ更新部は、元の階層データの階層をグループ分けしてなる複数の階層ごとに異なる前記更新用階層データを対応づけ、ユーザの編集操作入力に応じて、編集対象の領域を含む階層に対応づけられた前記更新用階層データを更新し、
前記表示画像処理部は、前記元の階層データの画像に前記更新用階層データの画像を全て重ねて描画することを特徴とする画像処理装置。
【請求項２】
前記画像データ更新部は、編集対象の領域を含む階層に対応づけられた前記更新用階層データを編集後の画像に更新するのに先んじて、前記表示画像処理部が画像を描画する際、更新対象の更新用階層データの画像の後に重ねられる更新用階層データの画像の少なくとも一部を更新対象の更新用階層データの画像にコピーし、コピー元の画像の領域は透明化処理を施すことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記表示画像処理部は、解像度が高い階層に対応づけられた前記更新用階層データから順に、前記元の階層データの画像に重ねて描画し、
前記画像データ更新部は、更新対象の更新用階層データより解像度の低い階層に対応づけられた前記更新用階層データの画像の少なくとも一部を更新対象の更新用階層データの画像にコピーすることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記画像データ更新部は、前記更新用階層データの画像のうち透明化処理を施す領域が１画素未満であった場合、１画素に切り上げたうえ、更新対象の更新用階層データの画像にコピーすべき領域と当該切り上げた領域との差分領域を、当該更新用階層データに対応づけられた階層の１つ下の階層に対応づけられた更新用階層データの画像にコピーすることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記画像データ更新部は、前記更新用階層データの画像を重ねて描画する際に重なりの上下を値の大小で表したパラメータを画素値として保持する上下情報画像の階層データを、各更新用階層データに対応づけて生成したうえ、前記更新用階層データを更新する際、新たな更新対象の領域が最上に描画されるように前記上下情報画像の階層データを更新し、
前記表示画像処理部は、前記上下情報画像の階層データを参照して、前記更新用階層データの画像のうち最も上に描画すべき画素データを用いて各画素を描画することを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記画像データ更新部は、ユーザの編集操作入力によって描き込まれた図形単位で前記上下情報画像の画素値を決定することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記画像データ更新部は、ユーザの編集操作入力によって描き込まれた図形に含まれる画素単位で前記上下情報画像の画素値を決定することを特徴とする請求項５に記載の画像処理装置。
【請求項８】
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データを格納した記憶部と、
ユーザから入力された表示領域移動要求に応じて前記階層データにおける階層を切り替えて表示領域の画像を描画する表示画像処理部と、
描画された表示領域の画像に対するユーザの編集操作入力を受け付け、編集対象の領域の編集後の画像を表し、編集対象の解像度以下の解像度の画像データを解像度順に階層化してなる更新用階層データを、元の階層データとともに編集後の画像データとして前記記憶部に格納する画像データ更新部と、
を備え、
前記表示画像処理部は、前記元の階層データの画像に前記更新用階層データの画像を重ねて描画することを特徴とする画像処理装置。
【請求項９】
前記画像データ更新部は、ユーザの編集操作入力を受け付ける都度、編集対象の領域のみを表す新たな前記更新用階層データを生成することを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記画像データ更新部は、生成された複数の前記更新用階層データを統合する処理をバックグラウンドで実行することを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる元の階層データと、当該階層データの画像に対してなされた編集の対象領域の、編集後の画像を表す更新用階層データと、をデコードするデコード部と、
ユーザから入力された表示領域移動要求に応じて、各階層データにおける階層を切り替えたうえデコードされた画像を重ねて描画する統合描画部と、
を備え、
前記デコード部は、前記元の階層データの階層をグループ分けしてなる複数の階層ごとに対応づけられた複数の前記更新用階層データをデコードし、
前記統合描画部は、前記元の階層データの画像に前記複数の更新用階層データの画像を全て重ねて描画することを特徴とする画像表示装置。
【請求項１２】
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データをメモリより読み出すステップと、
ユーザから入力された表示領域移動要求に応じて前記階層データにおける階層を切り替えて表示領域の画像を描画するステップと、
描画された表示領域の画像に対するユーザの編集操作入力を受け付け、前記階層データのうち編集対象の領域の編集後の画像を表す更新用階層データを、元の階層データとともに編集後の画像データとしてメモリに格納するステップと、
前記元の階層データの画像に前記更新用階層データの画像を重ねて描画するステップと、
を含み、
前記メモリに格納するステップは、元の階層データの階層をグループ分けしてなる複数の階層ごとに異なる前記更新用階層データを対応づけ、ユーザの編集操作入力に応じて、編集対象の領域を含む階層に対応づけられた前記更新用階層データを更新し、
前記描画するステップは、前記元の階層データの画像に前記更新用階層データの画像を全て重ねて描画することを特徴とする画像処理方法。
【請求項１３】
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データをメモリより読み出す機能と、
ユーザから入力された表示領域移動要求に応じて前記階層データにおける階層を切り替えて表示領域の画像を描画する機能と、
描画された表示領域の画像に対するユーザの編集操作入力を受け付け、前記階層データのうち編集対象の領域の編集後の画像を表す更新用階層データを、元の階層データとともに編集後の画像データとしてメモリに格納する機能と、
前記元の階層データの画像に前記更新用階層データの画像を重ねて描画する機能と、
をコンピュータに実現させるコンピュータプログラムであって、
前記メモリに格納する機能は、元の階層データの階層をグループ分けしてなる複数の階層ごとに異なる前記更新用階層データを対応づけ、ユーザの編集操作入力に応じて、編集対象の領域を含む階層に対応づけられた前記更新用階層データを更新し、
前記描画する機能は、前記元の階層データの画像に前記更新用階層データの画像を全て重ねて描画することを特徴とするコンピュータプログラム。
【請求項１４】
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データをメモリより読み出す機能と、
ユーザから入力された表示領域移動要求に応じて前記階層データにおける階層を切り替えて表示領域の画像を描画する機能と、
描画された表示領域の画像に対するユーザの編集操作入力を受け付け、前記階層データのうち編集対象の領域の編集後の画像を表す更新用階層データを、元の階層データとともに編集後の画像データとしてメモリに格納する機能と、
前記元の階層データの画像に前記更新用階層データの画像を重ねて描画する機能と、
をコンピュータに実現させるコンピュータプログラムを記録した記録媒体であって、
前記メモリに格納する機能は、元の階層データの階層をグループ分けしてなる複数の階層ごとに異なる前記更新用階層データを対応づけ、ユーザの編集操作入力に応じて、編集対象の領域を含む階層に対応づけられた前記更新用階層データを更新し、
前記描画する機能は、前記元の階層データの画像に前記更新用階層データの画像を全て重ねて描画するコンピュータプログラムを記録したことを特徴とする記録媒体。
【請求項１５】
画像の少なくとも一部をディスプレイに表示するために記憶装置から読み出される画像ファイルのデータ構造であって、
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる原画像の階層データと、
前記原画像の階層データをグループ分けしてなる複数の階層のそれぞれに対し生成され、対応する階層の原画像に対してなされた編集後の対象領域の画像であり、全てが表示時に前記原画像と重ね合わされる複数の画像を表した複数の更新用階層データと、を対応づけたことを特徴とする画像ファイルのデータ構造。
【請求項１６】
画像の少なくとも一部をディスプレイに表示するために記憶装置から読み出される画像ファイルのデータ構造であって、
一の画像を異なる解像度で表した画像データを解像度順に階層化してなる原画像の階層データと、
当該原画像に対してなされた編集の対象領域の編集後の画像であり、表示時に前記原画像と重ね合わせて描画される画像を表した複数の更新用階層データと、
各更新用階層データに対応づけられ、重ね合わせて描画される際に重なりの上下を値の大小で表したパラメータを画素値として保持する上下情報画像の階層データと、
を対応づけたことを特徴とする画像ファイルのデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスプレイに表示する画像を拡大／縮小、または上下左右に移動させる画像処理技術に関する。
【背景技術】
【０００２】
ゲームプログラムを実行するだけでなく、動画を再生できる家庭用エンタテインメントシステムが提案されている。この家庭用エンタテインメントシステムでは、ＧＰＵがポリゴンを用いた三次元画像を生成する（例えば特許文献１参照）。
【０００３】
画像表示の目的に関わらず、画像をいかに効率よく表示するかは常に重要な問題となる。特に高精細な画像を高速に描画するためには様々な工夫が必要となり、例えばテクスチャデータを別に保持しマッピングを効率的に行う手法について提案がなされている（例えば非特許文献１および２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第６５６３９９９号公報
【非特許文献】
【０００５】
【非特許文献１】Sylvain Fefebvre, et. al., Unified Texture Management for Arbitrary Meshes, Repport de recherche, N5210, May 2004, Institut National De Recherche En Informatique Et En Automatique
【非特許文献２】Martin Kraus, et. al., Adaptive Texture Maps, Graphics Hardware (2002), pp1-10, The Eurographics Association
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のテクスチャマッピングなどデータ構造を工夫する技術を適用した場合、表示画像のデータを一度構築してしまうと、画像の一部を更新する必要が生じた場合に処理が煩雑になりやすいという問題があった。画像の解像度が高くサイズが大きくなるほど、画像の作成や編集に高度な知識が必要となったり、装置の処理の負荷が増大してデータ更新や画像表示の応答性が低下したり、といったことが起こりやすくなる。
【０００７】
本発明はこのような課題に鑑みてなされたものであり、その目的は高精細な画像であってもデータ更新や描画を効率よく行える画像処理技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のある態様は画像処理装置に関する。この画像処理装置は、一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データを格納した記憶部と、ユーザから入力された表示領域移動要求に応じて階層データにおける階層を切り替えて表示領域の画像を描画する表示画像処理部と、描画された表示領域の画像に対するユーザの編集操作入力を受け付け、階層データのうち編集対象の領域の編集後の画像を表す更新用階層データを、元の階層データとともに編集後の画像データとして記憶部に格納する画像データ更新部と、を備え、表示画像処理部は、元の階層データの画像に更新用階層データの画像を重ねて描画することを特徴とする。
【０００９】
本発明の別の態様は画像表示装置に関する。この画像表示装置は、一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データと、当該階層データの画像に対してなされた編集の対象領域の、編集後の画像を表す更新用階層データと、をデコードするデコード部と、ユーザから入力された表示領域移動要求に応じて、各階層データにおける階層を切り替えたうえデコードされた画像を重ねて描画する統合描画部と、を備えたことを特徴とする。
【００１０】
本発明のさらに別の態様は画像処理方法に関する。この画像処理方法は、一の画像を異なる解像度で表した画像データを解像度順に階層化してなる階層データをメモリより読み出すステップと、ユーザから入力された表示領域移動要求に応じて階層データにおける階層を切り替えて表示領域の画像を描画するステップと、描画された表示領域の画像に対するユーザの編集操作入力を受け付け、階層データのうち編集対象の領域の編集後の画像を表す更新用階層データを、元の階層データとともに編集後の画像データとしてメモリに格納するステップと、元の階層データの画像に更新用階層データの画像を重ねて描画するステップと、を含むことを特徴とする。
【００１１】
本発明のさらに別の態様は画像ファイルのデータ構造に関する。このデータ構造は、画像の少なくとも一部をディスプレイに表示するために記憶装置から読み出される画像ファイルのデータ構造であって、一の画像を異なる解像度で表した画像データを解像度順に階層化してなる原画像の階層データと、当該原画像に対してなされた編集の対象領域の編集後の画像であり、表示時に原画像と重ね合わされる画像を表した更新用階層データと、を対応づけたことを特徴とする。
【００１２】
本発明のさらに別の態様も画像ファイルのデータ構造に関する。このデータ構造は、画像の少なくとも一部をディスプレイに表示するために記憶装置から読み出される画像ファイルのデータ構造であって、一の画像を異なる解像度で表した画像データを解像度順に階層化してなる原画像の階層データと、当該原画像に対してなされた編集の対象領域の編集後の画像であり、表示時に原画像と重ね合わせて描画される画像を表した複数の更新用階層データと、各更新用階層データに対応づけられ、重ね合わせて描画される際に重なりの上下を値の大小で表したパラメータを画素値として保持する上下情報画像の階層データと、を対応づけたことを特徴とする。
【００１３】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１４】
本発明によると、画像の編集や、編集後の画像の表示を効率よく行うことができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に適用できる画像処理システムの使用環境を示す図である。
【図２】図１の画像処理システムに適用できる入力装置の外観構成例を示す図である。
【図３】実施の形態１において使用する画像データの階層構造を示す図である。
【図４】実施の形態１における画像処理装置の構成を示す図である。
【図５】実施の形態１における画像データの先読み処理を説明するための図である。
【図６】実施の形態１における、階層データの編集機能を有する画像処理装置の制御部の構成を詳細に示す図である。
【図７】実施の形態１における画像編集時のデータ更新処理の基本的な手順を説明するための図である。
【図８】実施の形態１においてレイヤの生成と統合を並列に行う機構を含む画像データ更新部の構成を示す図である。
【図９】実施の形態１においてユーザが画像の編集を行う際の画像データの更新手順を示すフローチャートである。
【図１０】実施の形態２において準備するレイヤについて説明するための図である。
【図１１】実施の形態２における画像データ更新部の構成を示す図である。
【図１２】実施の形態２において描き込まれた図形単位でＺ値を与える態様を説明するための図である。
【図１３】実施の形態２において画素単位でＺ値を与える態様を説明するための図である。
【図１４】実施の形態２における画像表示時の処理手順を示すフローチャートである。
【図１５】実施の形態３において準備するレイヤと描画順について説明するための図である。
【図１６】実施の形態３におけるデータ更新の手順を説明するための図である。
【図１７】実施の形態３におけるデータ更新手順の別の例を示す図である。
【図１８】実施の形態３において描き込まれた図形に外接する矩形をクリッピング領域とした態様を説明するための図である。
【図１９】本実施の形態３においてクリッピング領域を切り上げた場合のデータ更新処理の手順を説明するための図である。
【図２０】実施の形態３における画像データ更新部の構成を示す図である。
【発明を実施するための形態】
【００１６】
実施の形態１
本実施の形態において処理対象とする画像のデータは、原画像を複数段階に縮小して生成した異なる解像度の画像からなる階層構造を有する。各階層の画像は一又は複数のタイル画像に分割する。たとえば最も解像度の低い画像は１つのタイル画像で構成し、最も解像度の高い原画像は、最も多い数のタイル画像で構成する。画像表示時は、描画に使用しているタイル画像を、表示画像が所定の解像度になったときに、異なる階層のタイル画像に切り替えることで、拡大表示または縮小表示を迅速に行う。
【００１７】
まず、このような階層構造を有する画像の基本的な表示態様について説明する。図１は、本実施の形態を適用できる画像処理システム１の使用環境を示す。画像処理システム１は、画像処理ソフトウェアを実行する画像処理装置１０と、画像処理装置１０による処理結果を出力する表示装置１２とを備える。表示装置１２は、画像を出力するディスプレイおよび音声を出力するスピーカを有するテレビであってよい。
【００１８】
表示装置１２は、画像処理装置１０に有線ケーブルで接続されてよく、また無線ＬＡＮ（Local Area Network）などにより無線接続されてもよい。画像処理システム１において、画像処理装置１０は、ケーブル１４を介してインターネットなどの外部ネットワークに接続し、階層化された圧縮画像データをダウンロードして取得してもよい。なお画像処理装置１０は、無線通信により外部ネットワークに接続してもよい。
【００１９】
画像処理装置１０は、たとえばゲーム装置やパーソナルコンピュータであってよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。画像処理装置１０は、ユーザからの要求に応じて、表示装置１２のディスプレイに表示する画像の拡大／縮小処理や、上下左右方向へのスクロール処理などを行う。以後、このような拡大／縮小を含めた表示領域の変更処理を「表示領域の移動」と表現する。ユーザが、ディスプレイに表示された画像を見ながら入力装置を操作すると、入力装置が、表示領域移動要求信号を画像処理装置１０に送信する。
【００２０】
図２は、入力装置２０の外観構成例を示す。入力装置２０は、ユーザが操作可能な操作手段として、十字キー２１、アナログスティック２７ａ、２７ｂと、４種の操作ボタン２６を備える。４種の操作ボタン２６は、○ボタン２２、×ボタン２３、□ボタン２４および△ボタン２５から構成される。
【００２１】
画像処理システム１において、入力装置２０の操作手段には、表示画像の拡大／縮小要求、および上下左右方向へのスクロール要求を入力するための機能が割り当てられる。たとえば、表示画像の拡大／縮小要求の入力機能は、右側のアナログスティック２７ｂに割り当てられる。ユーザはアナログスティック２７ｂを手前に引くことで、表示画像の縮小要求を入力でき、また手前から押すことで、表示画像の拡大要求を入力できる。
【００２２】
また、スクロール要求の入力機能は、十字キー２１に割り当てられる。ユーザは十字キー２１を押下することで、十字キー２１を押下した方向へのスクロール要求を入力できる。なお、表示領域移動要求の入力機能は別の操作手段に割り当てられてもよく、たとえばアナログスティック２７ａに、スクロール要求の入力機能が割り当てられてもよい。
【００２３】
入力装置２０は、入力された表示領域移動要求信号を画像処理装置１０に伝送する機能をもち、本実施の形態では画像処理装置１０との間で無線通信可能に構成される。入力装置２０と画像処理装置１０は、Bluetooth（ブルートゥース）（登録商標）プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立してもよい。なお入力装置２０は、画像処理装置１０とケーブルを介して接続して、表示領域移動要求信号を画像処理装置１０に伝送してもよい。
【００２４】
入力装置２０は後述するように、図形を書き足すなどユーザによる画像の編集要求も受け付ける。そのためアナログスティック２７ａ、２７ｂや十字キー２１に、表示画像上に表示したカーソルの移動要求や選択肢から選択する入力のための機能を割り当てたり、○ボタン２２に編集を確定させる機能を割り当てたりしてもよい。あるいはそのような機能を割り当てる入力装置２０を、マウスやタッチパネルなど一般的な入力装置から適宜選択してよい。
【００２５】
図３は、本実施の形態において使用する画像データの階層構造を示す。画像データは、深さ（Ｚ軸）方向に、第０階層３０、第１階層３２、第２階層３４および第３階層３６からなる階層構造を有する。なお同図においては４階層のみ示しているが、階層数はこれに限定されない。以下、このような階層構造をもつ画像データを「階層データ」とよぶ。
【００２６】
図３に示す階層データは４分木の階層構造を有し、各階層は、１以上のタイル画像３８で構成される。すべてのタイル画像３８は同じ画素数をもつ同一サイズに形成され、たとえば２５６×２５６画素を有する。各階層の画像データは、一つの画像を異なる解像度で表現しており、最高解像度をもつ第３階層３６の原画像を複数段階に縮小して、第２階層３４、第１階層３２、第０階層３０の画像データが生成される。たとえば第Ｎ階層の解像度（Ｎは０以上の整数）は、左右（Ｘ軸）方向、上下（Ｙ軸）方向ともに、第（Ｎ＋１）階層の解像度の１／２であってよい。
【００２７】
画像処理装置１０において、階層データは、所定の圧縮形式で圧縮された状態で記憶装置に保持されており、ディスプレイに表示される前に記憶装置から読み出されてデコードされる。本実施の形態の画像処理装置１０は、複数種類の圧縮形式に対応したデコード機能を有し、たとえばＳ３ＴＣ形式、ＪＰＥＧ形式、ＪＰＥＧ２０００形式の圧縮データをデコード可能とする。
【００２８】
階層データの階層構造は、図３に示すように、左右方向をＸ軸、上下方向をＹ軸、深さ方向をＺ軸として設定され、仮想的な３次元空間を構築する。画像処理装置１０は、入力装置２０から供給される表示領域移動要求信号から表示画像の変更量を導出すると、その変更量を用いて仮想空間におけるフレームの４隅の座標（フレーム座標）を導出する。なお、仮想空間におけるフレーム座標の代わりに、画像処理装置１０は、階層を特定する情報と、その階層におけるテクスチャ座標（ＵＶ座標）を導出してもよい。以下、階層特定情報およびテクスチャ座標の組み合わせも、フレーム座標と呼ぶ。
【００２９】
図４は画像処理装置１０の構成を示している。画像処理装置１０は、無線インタフェース４０、スイッチ４２、表示処理部４４、ハードディスクドライブ５０、記録媒体装着部５２、ディスクドライブ５４、メインメモリ６０、バッファメモリ７０および制御部１００を有して構成される。表示処理部４４は、表示装置１２のディスプレイに表示するデータをバッファするフレームメモリを有する。
【００３０】
スイッチ４２は、イーサネットスイッチ（イーサネットは登録商標）であって、外部の機器と有線または無線で接続して、データの送受信を行うデバイスである。スイッチ４２は、ケーブル１４を介して外部ネットワークに接続し、画像サーバから階層化された圧縮画像データを受信できるように構成される。またスイッチ４２は無線インタフェース４０に接続し、無線インタフェース４０は、所定の無線通信プロトコルで入力装置２０と接続する。入力装置２０においてユーザから入力された表示領域移動要求信号は、無線インタフェース４０、スイッチ４２を経由して、制御部１００に供給される。
【００３１】
ハードディスクドライブ５０は、データを記憶する記憶装置として機能する。圧縮画像データはハードディスクドライブ５０に格納される。記録媒体装着部５２は、メモリカードなどのリムーバブル記録媒体が装着されると、リムーバブル記録媒体からデータを読み出す。ディスクドライブ５４は、読出専用のＲＯＭディスクが装着されると、ＲＯＭディスクを駆動して認識し、データを読み出す。ＲＯＭディスクは、光ディスクや光磁気ディスクなどであってよい。圧縮画像データはこれらの記録媒体に格納されていてもよい。
【００３２】
制御部１００は、マルチコアＣＰＵを備え、１つのＣＰＵの中に１つの汎用的なプロセッサコアと、複数のシンプルなプロセッサコアを有する。汎用プロセッサコアはＰＰＵ（Power Processing Unit）と呼ばれ、残りのプロセッサコアはＳＰＵ（Synergistic-Processing Unit）と呼ばれる。
【００３３】
制御部１００は、メインメモリ６０およびバッファメモリ７０に接続するメモリコントローラを備える。ＰＰＵはレジスタを有し、演算実行主体としてメインプロセッサを備えて、実行するアプリケーションにおける基本処理単位としてのタスクを各ＳＰＵに効率的に割り当てる。なお、ＰＰＵ自身がタスクを実行してもよい。ＳＰＵはレジスタを有し、演算実行主体としてのサブプロセッサとローカルな記憶領域としてのローカルメモリを備える。ローカルメモリは、バッファメモリ７０として使用されてもよい。
【００３４】
メインメモリ６０およびバッファメモリ７０は記憶装置であり、ＲＡＭ（ランダムアクセスメモリ）として構成される。ＳＰＵは制御ユニットとして専用のＤＭＡ（Direct Memory Access）コントローラをもち、メインメモリ６０とバッファメモリ７０の間のデータ転送を高速に行うことができ、また表示処理部４４におけるフレームメモリとバッファメモリ７０の間で高速なデータ転送を実現できる。本実施の形態の制御部１００は、複数のＳＰＵを並列動作させることで、高速な画像処理機能を実現する。表示処理部４４は、表示装置１２に接続されて、ユーザからの要求に応じた画像処理結果を出力する。
【００３５】
画像処理装置１０は、表示画像の拡大／縮小処理や表示領域の移動処理を行う際に表示画像をスムーズに変更させるために、圧縮画像データの一部をハードディスクドライブ５０からメインメモリ６０にロードしておく。また、メインメモリ６０にロードした圧縮画像データのさらに一部をデコードしてバッファメモリ７０に格納しておく。これにより、後の必要なタイミングで、表示画像の生成に使用する画像を瞬時に切り替えることが可能となる。このときロードやデコードの対象となるタイル画像は、それまでの表示領域の移動方向に基づき、以後、必要となる領域を先読みすることによって決定してもよい。
【００３６】
図５は、先読み処理を説明するための図である。同図は階層データの構造を示しており、各階層はＬ０（第０階層）、Ｌ１（第１階層）、Ｌ２（第２階層）、Ｌ３（第３階層）と表現されている。図５に示す階層データ構造において、深さ（Ｚ軸）方向における位置は、解像度を示し、Ｌ０に近い位置ほど解像度が低く、Ｌ３に近い位置ほど解像度は高い。なおディスプレイに表示される画像の大きさに注目すると、深さ方向における位置は、縮尺率に対応し、Ｌ３の表示画像の縮尺率を１とすると、Ｌ２における縮尺率は１／４、Ｌ１における縮尺率は１／１６となり、Ｌ０における縮尺率は１／６４となる。
【００３７】
したがって深さ方向において、表示画像がＬ０側からＬ３側へ向かう方向に変化する場合、表示画像は拡大していき、Ｌ３側からＬ０側へ向かう方向に変化する場合は、表示画像は縮小していく。矢印８０は、ユーザからの表示領域移動要求信号が、表示画像の縮小を要求しており、縮尺率１／４（Ｌ２）をまたいだ様子を示している。画像処理装置１０では、タイル画像３８として用意しているＬ１、Ｌ２の深さ方向の位置を、深さ方向の先読み境界として設定し、画像変更要求信号が先読み境界をまたぐと、先読み処理を開始する。
【００３８】
表示画像の縮尺率がＬ２の近傍にある場合、表示画像は、Ｌ２（第２階層）のタイル画像を用いて作成される。具体的には、表示する画像の縮尺率が、Ｌ１タイル画像とＬ２タイル画像の切替境界８２と、Ｌ２タイル画像とＬ３タイル画像の切替境界８４の間にある場合に、Ｌ２タイル画像が利用される。したがって、矢印８０に示すように画像の縮小処理が要求されると、Ｌ２のタイル画像が拡大された画像から、縮小された画像に変換されて表示される。一方、表示領域移動要求信号から予測される将来必要なタイル画像３８を特定して、デコードしておく。図５の例では、表示領域移動要求信号による要求縮尺率がＬ２をまたいだときに、画像処理装置１０は、縮小方向にあるＬ１の対応するタイル画像３８をハードディスクドライブ５０またはメインメモリ６０から先読みしてデコードし、バッファメモリ７０に書き込む。
【００３９】
なお以上は深さ方向の先読み処理について説明したが、上下左右方向の先読み処理についても同様に処理される。具体的には、バッファメモリ７０に展開されている画像データに先読み境界を設定しておき、画像変更要求信号による表示位置が先読み境界をまたいだときに、先読み処理が開始されるようにする。
【００４０】
ここでこれまで述べたような階層データに対し、ユーザが自分で絵や図形を追加したり、上から色を塗ったりして、画像の一部を更新する場合を考える。以後、このようなユーザの行為を「編集」と呼ぶ。また以後の説明では、編集行為として図形を描き込む場合を主に説明するが、文字を書いたり別の画像を貼り付けたり、色を塗ったり消したりすることも同様に行える。
【００４１】
例えばユーザは、一般的な描画装置と同様、画像の全体または一部を表示装置１２に表示させ、入力装置２０でカーソルを動かすことによって所望の図形を描き込んでいく。このとき編集対象の画像が上述のような階層データであった場合、データの更新に必要な処理手順が、階層構造をもたない画像と比較して複雑になる。
【００４２】
すなわち、（１）ユーザが表示装置１２に表示させた画像上に描き込んだ内容を作業用バッファに格納し、（２）ユーザが描き込む内容を確定させた時点で、編集対象となっている階層、例えばその時点で表示装置１２の画像表示に用いられている階層の画像データに、作業用バッファの内容を加えて圧縮符号化し、（３）その他の階層の画像データをデコードし、作業用バッファの内容を解像度に合わせて拡大、縮小して加え、圧縮符号化して元の階層データを更新する、という処理が必要になる。
【００４３】
解像度の低い上位階層におけるごく小さな領域も、階層が下位になり解像度が上がるほど、対応する領域の画像サイズが増大する。結果として、画像データの階層数が大きいと、上位の階層の小さな編集によっても更新対象のタイル画像の数が膨大になってしまう。例えば上述のような４分木の構造の階層データの場合、第１階層における１つのタイル画像の更新であっても、第２階層では２×２＝４個、第ｎ階層では２ｎー１×２ｎー１個のタイル画像を更新する必要がある。そこで本実施の形態では、ユーザの編集内容を元の階層データとは別の階層データとして保持することにより、データ更新の効率性を向上させる。
【００４４】
図６は本実施の形態において、階層データの編集機能を有する画像処理装置１０の制御部１００の構成を詳細に示している。制御部１００は、ユーザが入力装置２０に対して入力した情報を取得する入力情報取得部１０２、ユーザの要求に従い表示領域を移動させながら表示すべき画像を描画する表示画像処理部１１０、ユーザの編集操作に従い画像データを更新する画像データ更新部１０８を含む。
【００４５】
図６および後述する図８、１１、１８において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。既述したように、制御部１００は１つのＰＰＵと複数のＳＰＵとを有し、ＰＰＵおよびＳＰＵがそれぞれ単独または協同して、各機能ブロックを構成できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００４６】
入力情報取得部１０２は、画像表示の開始／終了、表示領域の移動などの画像表示に係る指示入力の内容を取得する表示情報取得部１０４と、表示されている画像に対するユーザの編集内容の情報を取得する編集情報取得部１０６を含む。ここで編集内容とは、ユーザが描き込んだ図形や文字の形、色、大きさ、位置などを含む。本実施の形態ではユーザは入力装置２０を用いて、表示装置１２に表示された画像の領域を拡大、縮小、スクロールさせる。そして所望の領域が表示された状態で、図形や文字、色、大きさを選択して描き込んだりカーソルによってフリーハンドで絵を描いたりする。
【００４７】
このとき表示領域移動要求信号は表示情報取得部１０４が、図形の描き込みなどの編集操作信号は編集情報取得部１０６が受け付ける。後者の処理は、一般的な画像描画ツールで実現されているのと同様でよく、編集操作の具体的手法は特に限定されない。表示情報取得部１０４が取得した情報は表示画像処理部１１０へ供給される。編集情報取得部１０６が取得した情報は画像データ更新部１０８へ供給される。
【００４８】
表示画像処理部１１０は、ユーザからの表示領域移動要求に従い新たに表示すべき領域のフレーム座標を特定するフレーム座標特定部１１１、新たにデコードすべきタイル画像をデコードするデコード部１１２、元の階層データと更新部分を表す別の階層データを統合して描画処理を行う統合描画部１１４を含む。
【００４９】
フレーム座標特定部１１１は、表示領域移動要求の情報に基づき次のフレーム表示までの移動量を求め、現在のフレーム座標に基づき、新たに表示すべきフレーム座標を特定する。デコード部１１２はフレーム座標特定部１１１が特定したフレーム座標に基づき、必要なタイル画像をメインメモリ６０から読み出してデコードし、バッファメモリ７０に格納する。ここでデコードの対象となるのは元の階層データのほか、更新部分を表す別の階層データがあればそれも含む。
【００５０】
デコード部１１２は、必要なタイル画像のデータがメインメモリ６０に格納されていなければ、ハードディスクドライブ５０からロードする。メインメモリ６０にロードする領域、バッファメモリ７０に格納する領域は、フレーム座標を含む所定範囲であれば、その具体的な決定手法は限定されない。例えばフレームサイズと比較して大きな領域をあらかじめデコードしておいたり、上述のように今後必要な領域を先読みしてロードしたりデコードしたりすることにより、表示領域移動要求に対し応答性のよい表示が可能となる。
【００５１】
統合描画部１１４は、フレーム座標特定部１１１が特定したフレーム座標に対応する領域の画像データをバッファメモリ７０から読み出し、表示処理部４４のフレームメモリに描画する。後に述べるように本実施の形態では、ユーザによって画像が編集されたことにより更新部分を表す別の階層データが存在する場合、元の階層データの画像に当該別の階層データの画像を重ね合わせることを基本とする。
【００５２】
したがって統合描画部１１４は、階層データ同士の位置的対応関係を表すデータを参照し、新たに表示すべきフレーム座標に重ね合わせの必要がある場合、重ね合わせを実行したうえでフレームメモリに格納する。編集されていなかったり重ね合わせる必要のない領域を描画する場合は、元の階層データのみを描画する。
【００５３】
画像データ更新部１０８は、ユーザが行った画像編集操作の情報を編集情報取得部１０６から受け取ると、それを反映させるように、元の階層データとは別の階層データを生成または更新し、ハードディスクドライブ５０に格納する。また当該更新をメインメモリ６０にロードされたタイル画像のデータにも反映させる。階層データを新たに生成した場合は、元の階層データとの位置的対応関係を表す情報も生成し、生成した階層データの付加情報とする。
【００５４】
図７は本実施の形態における画像編集時のデータ更新処理の基本的な手順を説明するための図である。図７および後述の図９、１４、１６、１７においては各部の処理手順を、ステップを意味するＳ（Ｓｔｅｐの頭文字）と数字との組み合わせによって表示する。まず、編集対象となる元の画像は階層データ１３６を用いて表示される。ユーザは、当該画像のうち領域１３０を編集対象とし、入力装置２０を用いて図形１３２を描き込んだとする。領域１３０は上述のように、ユーザが描き込みを始めたときに表示装置１２に表示されている領域でよい。
【００５５】
すると画像データ更新部１０８は、描き込みがなされた領域１３０のみからなる階層データ１３４を生成する（Ｓ１０）。具体的には、編集対象の領域１３０の画像を最下層とし、それを適宜縮小して上の階層の画像を生成し、階層データとする。例えば元の階層データ１３６の第１階層の一部が領域１３０であった場合、新たに生成する階層データ１３４は、第１階層、第０階層からなる。以後、このように更新情報のみを有する階層データまたはその画像を「レイヤ」と呼ぶ。
【００５６】
画像データ更新部１０８は、元の階層データ１３６はそのままに、新たに生成したレイヤ１３４をハードディスクドライブ５０に格納する。この際、レイヤ１３４の最下層を構成する領域が、元の階層データ１３６が形成する仮想の３次元空間内のどの座標に対応するかを示す対応関係の情報を生成して当該レイヤ１３４に付加しておく。
【００５７】
すると表示画像処理部１１０の統合描画部１１４は、対応関係の情報によって、新たに表示すべきフレーム１３８に更新された領域１３０が含まれることを確認すると、元の階層データ１３６の画像に重ね合わせてレイヤ１３４の画像を表示する（Ｓ１２）。このとき、レイヤの階層データ１３４が保持する最下層のデータより解像度の大きい画像を表示する場合は、当該最下層の画像を拡大して重ね合わせる。
【００５８】
このように更新対象の領域のみの階層データを、レイヤとして元の階層データと別に生成することにより、上述のように解像度の高い階層へ更新を反映させる必要がなくなり、更新が必要なタイル画像の数を抑えられる。結果として、タイル画像ごとに行うデコード、描き込み、エンコードという一連の更新処理を行う回数を少なくでき、更新にかかる処理の負荷を軽減できる。
【００５９】
一方で、ユーザが描き込みを行い確定させる都度、レイヤを生成すると、編集量によってはレイヤの数が膨大になってしまう場合がある。レイヤの数が多くなると、表示時の重ね合わせの処理が増え、表示領域移動に対する応答性が悪くなるほか、全体としてデータサイズが大きくなりメインメモリ６０など各記憶領域を圧迫する可能性が出てくる。
【００６０】
そこで本実施の形態では、レイヤの生成と統合を並列に行うようにする。図８はこのような機構を含む画像データ更新部１０８の構成を示している。画像データ更新部１０８ａはレイヤを生成するレイヤ生成部１１６と、レイヤを統合するレイヤ統合部１１８を含む。レイヤ生成部１１６は、ユーザが編集対象の画像へ描き込みを行い確定させる都度、１つのレイヤを生成してメインメモリ６０に格納する。なお描き込みの確定は図形単位で自動で認識してもよいし、ユーザが確定のための入力を入力装置２０に対して行ったときでもよい。
【００６１】
レイヤ統合部１１８は、レイヤ生成部１１６がメインメモリ６０に格納したレイヤ１３４ａ、１３４ｂをバックグラウンドで統合していく。同図では３つのレイヤ１３４ｂを統合して１つのレイヤ１３５が生成されている様子を表している。編集中の画像を逐次表示させるため、レイヤ統合部１１８は、レイヤ生成部１１６が生成したレイヤ１３４ａ、１３４ｂを上書きすることなく、統合した新たなレイヤ１３５を生成する。そして統合処理が完了した時点で、表示に用いるデータを統合前のレイヤ１３４ｂから統合後のレイヤ１３５へ切り替える。
【００６２】
３つのレイヤ１３４ｂを統合したレイヤ１３５は、３回分の編集結果を含んでいることになる。これを繰り返すことによりレイヤの数を減らしていき、ユーザの編集処理が終了したら、統合後のレイヤ１３５をハードディスクドライブ５０に格納し、元の階層データとともに最終的な画像データとする。なお全てのレイヤを１つのレイヤに統合してもよいし、更新時間が近いレイヤを所定数ごとに統合したり、更新領域の近いレイヤを所定の区画ごとに統合したりするなど、所定のポリシーに従い統合後のレイヤを複数としてもよい。
【００６３】
次にこれまで述べた構成によって実現される画像処理装置１０の動作について説明する。図９はユーザが画像の編集を行う際の画像データの更新手順を示すフローチャートである。図９および後述の図１４のフローチャートにおいて、Ｓと数字との組み合わせによって表示した処理で何らかの判断処理が実行され、その判断結果が肯定的であった場合は、Ｙ（Ｙｅｓの頭文字）を付加して、例えば、（Ｓ１０のＹ）と表示し、逆にその判断結果が否定的であった場合は、Ｎ（Ｎｏの頭文字）を付加して、（Ｓ１０のＮ）と表示する。
【００６４】
図９のフローチャートにおける処理は、ユーザが画像の編集を開始する旨の入力を行ったときに開始される。まずユーザが入力装置２０を介して画像データの指定とともに編集開始を要求すると（Ｓ２０）、入力情報取得部１０２の表示情報取得部１０４が当該要求を受け付け、表示画像処理部１１０が、対象となる画像の階層データをハードディスクドライブ５０からロードし、デコード、描画することにより、第０階層など所定の初期画像を表示する（Ｓ２２）。
【００６５】
表示領域の移動や描き込みなどの編集操作がユーザよりなされるまでそのまま待機し（Ｓ２４のＮ）、編集操作がなされたら（Ｓ２４のＹ）、表示画像処理部１１０は、表示領域移動要求にしたがって表示領域を移動させたり、描き込み操作を表示に反映させるなどフレームの更新処理を行う（Ｓ２６）。このとき描き込みが確定するまでは、描き込み中の図形などは作業用バッファに描画しておきそれを元の階層データの画像に重ね合わせて表示する。
【００６６】
描き込みが確定する都度、画像データ更新部１０８のレイヤ生成部１１６は、作業用バッファの画像を最下層とする階層データからなるレイヤを生成して作業用バッファをクリアする。一方、レイヤ統合部１１８はバックグラウンド処理として、生成されたレイヤを統合していく（Ｓ２８）。その時点における統合対象のレイヤの統合が完了するまではそのまま編集操作を受け付け、フレーム更新、レイヤ生成、統合を継続する（Ｓ３０のＮ、Ｓ２４のＹ、Ｓ２６、Ｓ２８）。
【００６７】
その時点における統合対象のレイヤの統合が完了したら（Ｓ３０のＹ）、当該統合対象のレイヤが表す領域を表示するのに用いるデータを統合後のレイヤに切り替える（Ｓ３２）。Ｓ２４からＳ３２までの処理を、ユーザから編集終了要求の入力がなされるまで繰り返し（Ｓ３４のＮ）、編集終了要求がなされたら（Ｓ３４のＹ）、最終的な統合後のレイヤをハードディスクドライブ５０に格納し処理を終了する（Ｓ３６）。
【００６８】
以上述べた本実施の形態によれば、階層構造を有する画像データに対し編集がなされた場合、更新対象の領域のみからなり、更新対象となった解像度の階層と、それより小さい解像度の階層で構成される階層データをレイヤとして生成する。これにより、元の階層データに含まれる全ての階層に編集結果を反映させる必要がなくなり、更新処理の負荷が軽減される。特に階層数の大きなデータの場合、低解像度の階層で小さい領域であっても最下層の画像では広大な領域にわたってしまうため、レイヤを生成することによる効果が顕著に表れる。
【００６９】
またレイヤを生成する処理と並行に、統合する処理を実施する。これにより、ユーザの編集が進むにつれてレイヤの数が際限なく増加するのを防止できる。結果として、編集された画像を表示するのに画像の重ね合わせに多大な時間を要したり、メモリ領域が圧迫されたりする可能性が低くなる。なおレイヤの数に最大値を設け、レイヤがその数に達したら、統合によってレイヤ数が減少するまで編集を待機するようにユーザに警告してもよい。このようにすると、レイヤの生成速度が統合速度より速く、レイヤの数が一時的に増大するのを防止することができる
【００７０】
実施の形態２
本実施の形態は、更新部分を表す階層データを元の階層データと別に保持する点で実施の形態１と同様である。一方、実施の形態１が、新たな描き込みが確定する都度、新たなレイヤを作成したのに対し、本実施の形態ではあらかじめレイヤを準備しておき、編集に応じて当該レイヤを更新していくようにする。レイヤを準備する、ということは、実際には階層データを構成するデータの記憶領域を確保しておくことである。このようにすることでレイヤの数を増やさないようにする。本実施の形態は図４で示した画像処理装置１０、図６で示した制御部１００と同じ構成で実現できる。以後、実施の形態１と異なる点に主眼を置き説明する。
【００７１】
図１０は本実施の形態で準備するレイヤについて説明するための図である。本実施の形態では元の階層データの階層をいくつかのグループに分け、各グループに対し１つのレイヤを準備する。同図において元の階層データ１４０のうち、第０、第１、第２階層に対し第０レイヤ１４２ａ、第３、第４階層に対し第１レイヤ１４２ｂ、第５、第６階層に対し第２レイヤ１４２ｃ、第７、第８階層に対し第３レイヤ１４２ｄを準備している。なお同図のグループ分けは一例であり、レイヤの数や各レイヤに含まれる階層数は画像の大きさや元の階層データの階層数などに応じて適宜決定してよい。
【００７２】
各レイヤは元の階層データのうち担当する階層に対する編集がなされたときに当該編集を反映するように更新される。そのため図１０の例では、第０レイヤは合計３階層、その他のレイヤは合計２階層の、元の階層データの対応する階層と同じサイズの画像データを保持する階層データとなる。例えば図１０の元の階層データ１４０のうち第３階層の領域１４８に対して編集がなされたら、第１レイヤ１４２ｂの対応する階層、すなわち第１階層の同じ領域１４８を更新する。
【００７３】
さらに同じ第１レイヤ１４２ｂに含まれるその他の階層、すなわち第０階層の対応する領域も更新する。この場合、更新された領域１４８を当該階層の解像度まで縮小し、その領域を含むタイル画像を更新すればよい。３階層を含む第０レイヤ１４２ａの第１階層が更新された場合は、当該領域を拡大して一つ下の第２階層を、縮小して１つ上の第０階層を更新する。
【００７４】
レイヤを導入せずに元の階層データ１４６の全ての階層を更新する場合、階層データ１４６の斜線部分に含まれるタイル画像を全て更新する必要がある。一方、本実施の形態ではレイヤを導入することにより、更新対象となるタイル画像を、編集がなされたレイヤに含まれる階層に限定できる（例えば第１レイヤ１４２ｂの斜線部分）。
【００７５】
さらに実施の形態１では、ユーザが短時間で多量の編集を行った場合、統合処理の速度より生成処理の速度が速くなることが考えられ、レイヤ数の制御に不確定な要素が含まれやすい。本実施の形態ではあらかじめレイヤ数を固定にできるうえ、各レイヤが担当する階層が限られているため、ユーザの編集階層や編集速度が変化しても処理時間や必要な記憶領域を見積もりやすい。
【００７６】
本実施の形態では表示時には、元の階層データの画像に、全てのレイヤを重ね合わせて描画する。元の階層データにおける最下層より高い解像度で表示するときは、全てのレイヤの最下層の画像をその解像度まで拡大したうえで重ねる。その他の解像度でも、各レイヤにおいて最も解像度が近い階層の画像を拡大または縮小してできた同じ解像度の画像を重ねればよい。
【００７７】
このとき別のレイヤ間では、ユーザが編集を行った順を表す時系列情報は共有されない。このためレイヤをどの順で重ねても、後から描き足した図形がその前に描いた図形の下に隠れてしまう、といったことが発生し得る。そこで本実施の形態では、各レイヤ１４２ａ、１４２ｂ、１４２ｃ、１４２ｄに、重ね合わせ時の上下を定める変数を画素ごとに保持する別の階層データを対応づける。この変数は３次元グラフィックスにおいて奥行き情報を表すＺ値と似通っていることから、以後、Ｚ値と呼ぶ。
【００７８】
図１０に示すように、画像のレイヤ１４２ａ、１４２ｂ、１４２ｃ、１４２ｄには、それぞれ同じ階層数および同じ大きさで、画素値がＺ値となる階層データである、Ｚレイヤ１４４ａ、１４４ｂ、１４４ｃ、１４４ｄが対応づけられる。そして画像のレイヤが更新された際は、全レイヤを重ね合わせたときに当該更新領域が最も上に表示されるように、当該画像レイヤに対応づけられたＺレイヤも更新する。
【００７９】
Ｚレイヤについても、更新された領域を拡大、縮小することにより、同じレイヤの他の階層に更新を反映させる。このとき縮小することにより異なるＺ値を有する画素を１つの画素へ統合する場合は、平均値、最大値、最小値などあらかじめ定めた規則でＺ値を決定してよい。
【００８０】
図１１は本実施の形態の画像データ更新部１０８の構成を示している。画像データ更新部１０８ｂは、ユーザの編集に応じて画像のレイヤを更新する画像レイヤ更新部１６０と、Ｚレイヤを更新するＺレイヤ更新部１６２を含む。上述のとおり元の階層データのうち担当する階層が異なる複数の画像のレイヤ１４２と、それぞれに対応するＺレイヤ１４４をメインメモリ６０に準備する。そして画像レイヤ更新部１６０は、ユーザが編集を行う都度、編集対象の階層を担当している画像のレイヤ１４２の対応する領域のタイル画像を、編集内容を反映するように更新する。
【００８１】
Ｚレイヤ更新部１６２は、画像レイヤ更新部１６０が更新した画像レイヤに対応づけられたＺレイヤ１４４の、対応する領域のＺ値を更新する。このとき、他のレイヤも含め対応する領域にこれまで与えられたＺ値に対し、更新されたレイヤの該当領域が最も上になるようなＺ値を決定する。例えば重ね合わせ時に下になるほどＺ値を大きくとる場合、更新対象の領域のＺ値が、全てのレイヤの対応する領域のＺ値より小さくなるように更新する。
【００８２】
画像表示時は、表示画像処理部１１０の統合描画部１１４が、３次元グラフィックス描画時のＺテストと同様に、描画済みのＺ値と描画しようとしているレイヤのＺ値とを画素ごとに比較して描画するか否かを決定する。これにより、常に編集時の重なりと同じ順で表示されることになる。
【００８３】
図１２、１３は、Ｚ値の与え方を説明するための図である。これらの図では理解を容易にするため階層データの画像サイズを統一して表している。またＺ値は重ね合わせ時に下にあるほど大きくするとする。図１２は１回の編集単位、すなわち描き込まれた図形単位でＺ値を与える場合を示している。まず元の階層データ１４０の画像を無限遠方と仮定する。実際には、Ｚ値として準備されたビット長で表現し得る最大値（図中、「ｍａｘ」と表記）を仮定する（破線矩形１４１）。
【００８４】
ここで第０レイヤ１４２ａが担当する階層に対し円１７０が描き込まれたとすると、当該レイヤに対応づけられたＺレイヤ１４４ａの画像のうち円１７０の領域の画素値を全て、最大値より１小さくする。次に第１レイヤ１４２ｂが担当する階層に対し矩形１７２が描き込まれた場合、それに対応づけられたＺレイヤ１４４ｂの矩形１７２の領域の画素値を全て、円１７０よりさらに１小さくする。すなわち最大値より２小さくする。
【００８５】
次に第２レイヤ１４２ｃが担当する階層に対し三角形１７４が描き込まれた場合、それに対応づけられたＺレイヤ１４４ｃの三角形１７４の領域の画素値を全て、矩形１７２よりさらに１小さくする。すなわち最大値より３小さくする。同様に、第３レイヤ１４２ｄが担当する階層に対し六角形１７６が描き込まれた場合、それに対応づけられたＺレイヤ１４４ｄの六角形１７６の領域の画素値を全て、三角形１７４よりさらに１小さくする。すなわち最大値より４小さくする。
【００８６】
このようにＺ値を与えるため、最後に描き込まれた図形の領域に与えられたＺ値はレジスタなどに保存しておき、新たな図形のＺ値は、保存された最後のＺ値から１を減算することによって決定する。画像表示時は、レイヤの描画順によらず、描画しようとしているレイヤの画素のＺ値が既に描画されているレイヤの画素のＺ値より大きければそれを上書きしないようにすることで、描き込まれた順を踏襲して重ね合わされた画像を表示できる。図１２の重ね合わせ後の画像では、Ｚ値の大きい順に円、矩形、三角形、六角形がこの順で下から重ね合わされている（破線矩形１７８）。
【００８７】
ここで第１レイヤ１４２ｂが担当する階層に、新たに黒丸円１８０が描き込まれた場合は、当該黒丸円１８０の領域のＺ値は、１つ前に第３レイヤ１４２ｄに描き込まれた六角形１７６のＺ値より１小さい値、すなわち最大値より５小さい値となる。このようにすることで、矩形１７２と黒丸円１８０は同じ第１レイヤ１４２ｂに属していても、重ね合わせの順序が離れ、描き込まれた順序を正確に反映した表示が可能となる（破線矩形１８２）。
【００８８】
図１３は画素単位でＺ値を与える場合を示している。同図における第０レイヤ１４２ａおよび第１レイヤ１４２ｂにはそれぞれ、図１２と同様に円１７０、矩形１７２がこの順で描き込まれたとする。第０レイヤ１４２ａに描き込まれた円１７０は全ての領域が元の階層データの画像の直上であるため、Ｚ値は図１２と同様、最大値より１小さい値となる。
【００８９】
次に第１レイヤ１４２ｂに対し矩形１７２が描き込まれた場合、画素単位で考えると、矩形１７２の領域には、円１７０と重なっている領域と、元の階層データの画像の直上にある領域とが混在している。そこで円１７０と重なっている領域には円１７０のＺ値より１小さい値を、元の階層データの直上にある領域はＺ値の最大値より１小さい値を与える。このようにしても、図１２の場合と同様に、レイヤの描画順によらず本来の重ね合わせ順で表示させることができる。
【００９０】
この場合、Ｚレイヤ更新部１６２は、現在各レイヤの各階層に与えられているＺ値のうち最小の値を画素ごとに保持しておく。そして新たに更新対象となった領域に含まれる画素に対し、保持しておいた最小のＺ値より１小さい値を与える。図１２および図１３の例はいずれも、Ｚ値を１の刻みで与えていたが、後から描き込んだ図形が常に上に表示されるようにＺ値を小さくできれば、その刻み幅は１でなくてもよい。
【００９１】
ただし編集を重ねるに従い新規に与えるＺ値が小さくなっていくと、やがてはＺ値がアンダーフローして最大値に戻ってしまうことが考えられる。Ｚ値を昇順に与えるようにしてもオーバーフローすることが考えられる。この場合、Ｚ値を与え直すなどの処理が必要になるため、Ｚ値の刻みは小さくすることが望ましい。またＺ値を図１２のように図形単位で与える場合と比較すると、図１３のように画素単位で与えた方が、Ｚ値の消費を抑えることができる。それと同時に、Ｚ値のビット長は予想される編集量に対し十分に準備することが望ましい。
【００９２】
本実施の形態における画像編集時のデータ更新処理は、実施の形態１の図９で示したフローチャートにおいて、Ｓ２８からＳ３２の処理を、あらかじめ準備した画像のレイヤの更新処理、対応するＺレイヤの更新処理に代えることにより実現できる。図１４は画像表示時の処理手順を示すフローチャートである。このフローチャートはユーザが表示領域を移動させる要求を、入力装置２０を介しておこなったときに開始される。
【００９３】
まずフレーム座標特定部１１１は、新たに表示すべき領域のフレーム座標を特定するが、その情報には画像の解像度が含まれている（Ｓ４０）。それに応じてデコード部１１２は、元の階層データや各レイヤを必要に応じてデコードし、統合描画部１１４は、まず元の階層データのフレームを描画する（Ｓ４２）。次に任意のレイヤ、例えば第０レイヤのうち、求められる解像度に近い階層の画像を当該解像度まで拡大または縮小する（Ｓ４４、Ｓ４６）。このとき画像のレイヤとともに、それに対応づけられたＺレイヤも拡大縮小しておく。
【００９４】
そして次のようにして、元の階層データの画像の上に第０レイヤの画像を重ねて描画する。すなわち、座標（０，０）の画素から順に（Ｓ４８）、第０レイヤに対応づけられたＺレイヤにおけるＺ値、Ｚ（ｘ，ｙ）と、同じ画素に既に描画されている最新のＺ値、Ｚｐｒｅ（ｘ，ｙ）を比較して、Ｚ（ｘ，ｙ）の方が小さければ（Ｓ５０のＹ）、第０レイヤの画素を描画する（Ｓ５２）。Ｚ（ｘ，ｙ）がＺｐｒｅ（ｘ，ｙ）以上であった場合は描画しない（Ｓ５０のＮ）。
【００９５】
そして座標（ｘ，ｙ）をインクリメントして次の画素について同様の処理を行う（Ｓ５４のＮ、Ｓ５６、Ｓ５０、Ｓ５２）。第０レイヤの全画素が終了したら（Ｓ５４のＹ）、第１レイヤ、第２レイヤ、・・・と、同じ処理を繰り返す（Ｓ５８のＮ、Ｓ６０、Ｓ４６〜Ｓ５６）。全レイヤの全画素について描画の是非を判定し、それに従い描画することにより、新たな描き込みによって隠れてしまうレイヤの画素は描画されず、適正な画像の重ね合わせが表現できる。
【００９６】
以上述べた本実施の形態によれば、元の階層データの階層を複数のグループに分け、各グループに更新用のレイヤを準備する。これにより編集量によらずレイヤの数は一定となるため、表示時の重ね合わせ処理の負荷や必要な記憶領域を見積もりやすい。また各レイヤが担当する階層が限定されているため、更新を反映させるべき階層数が限られ、更新対象のタイル画像の数を定常的に小さくできる。また各レイヤに対応づけて、重ね合わせ時の画素の上下を決定づけるＺ値を階層データとして保持することにより、レイヤの描画順によらず、正確な上下関係で重ね合わせることができ、適正な表示が可能となる。
【００９７】
実施の形態３
本実施の形態は、更新部分を表す階層データを元の階層データと別に保持する点で実施の形態１および２と同様である。また元の階層データの階層をグループに分け、それぞれに更新用のレイヤを準備する点で実施の形態２と同様である。一方、実施の形態２では編集を行った順を表す時系列情報をＺレイヤとして画像のレイヤと別に設けたが、本実施の形態ではＺレイヤを設けずに、重ね合わせの順序が適正になる機構を別に設ける。本実施の形態は図４で示した画像処理装置１０、図６で示した制御部１００と同じ構成で実現できる。以後、実施の形態１および２と異なる点に主眼を置き説明する。
【００９８】
図１５は本実施の形態で準備するレイヤと描画順について説明するための図である。実施の形態２と同様、元の階層データ１９０の階層をグループに分け、それぞれを担当するレイヤを準備する。図１５の例では元の階層データ１９０の第０、第１、第２階層を第０レイヤ１９２ａ、第３、第４階層を第１レイヤ１９２ｂ、第５、第６階層を第２レイヤ１９２ｃ、第７、第８階層を第３レイヤ１９２ｄが担当している。そして実施の形態２と同様、担当する階層に対する更新がなされたときに該当するレイヤを更新する。
【００９９】
以後、担当する階層の解像度が低いレイヤほど「上位」のレイヤとする。本実施の形態では同図の矢印１９４に示すように描画順を固定とする。具体的には元の階層データの画像を描画した後、解像度の高い階層を担当するレイヤ、すなわち下位のレイヤから順に描画していく。同図の例では第３レイヤ１９２ｄ、第２レイヤ１９２ｃ、第１レイヤ１９２ｂ、第０レイヤ１９２ａの順で描画する。この場合、この描画順で各レイヤに描き込みが行われていれば、それらを重ね合わせても表示される画像１９６は適正となる。
【０１００】
しかし例えば第２レイヤ１９２ｃに新たな図形１９７が描き込まれると、重ね合わせたときに当該図形は第１レイヤ１９２ｂ、第０レイヤ１９２ａに上書きされてしまうため適正な画像が得られない（画像１９８）。そこで本実施の形態では、新たに編集対象となったレイヤに、それより上位のレイヤの画像をコピーしたうえコピー元のレイヤを透明にするクリッピング処理を行う。そのため本実施の形態におけるレイヤのデータは各画素がα値を持つこととする。
【０１０１】
図１６は本実施の形態におけるデータ更新の手順を説明するための図である。同図は図１５で説明したように、第２レイヤ１９２ｃに新たな図形１９７が描き込まれる場合を示している。このときまず、第２レイヤ１９２ｃより上位の、第１レイヤ１９２ｂおよび第０レイヤ１９２ａの画像を、第２レイヤ１９２ｃの各階層の解像度に拡大して上書きする（Ｓ６０、Ｓ６２）。上書きする順序は表示時と同様、下位のレイヤからとする。
【０１０２】
そして上書きの元となった第１レイヤ１９２ｂ、第０レイヤ１９２ａの画像を透明化する（Ｓ６４、Ｓ６６）。その後、編集対象の第２レイヤ１９２ｃに新たな図形１９７を描き込んで更新する（Ｓ６８）。このようにすると、実施の形態２のようにＺレイヤを用意せずとも、新たに描き込まれた図形は常にいずれかのレイヤの一番上に描画され、その後に重ね合わされる上位レイヤはそれを上書きすることがないため、最終的に表示される画像１９９は適正なものとなる。
【０１０３】
また、下位レイヤから重ね合わせることにより、クリッピングは常に上位レイヤから下位レイヤの方向への拡大処理となるため、高解像度の画像を縮小してクリッピングすることによって元の情報が失われてしまうことがなく、クリッピング前後で情報量は同じとなる。このようにしても、ユーザの編集によって更新が必要となるレイヤは限定的なため、元の階層データに含まれる全ての階層を更新するのと比較して更新処理の負荷を軽減できる。
【０１０４】
図１７は本実施の形態におけるデータ更新手順の別の例を示している。この例も、図１６と同様、第２レイヤ１９２ｃに新たな図形１９７を描き込むため、それより上位の、第１レイヤ１９２ｂ、第０レイヤ１９２ａの画像を第２レイヤ１９２ｃへクリッピングするが、当該クリッピング対象を編集対象の領域に限定する。ここで編集対象の領域とは、例えばユーザが編集のために表示装置１２に表示させているフレームの領域とする。あるいは描き込まれた図形を含む所定範囲の領域とする。
【０１０５】
図１７においては、第２レイヤ１９２ｃの領域２００を編集対象の領域としている。このとき、第１レイヤ１９２ｂ、第０レイヤ１９２ａの対応する領域２０２の画像のみを拡大して第２レイヤ１９２ｃを上書きし（Ｓ７０、Ｓ７２）、上書き元の領域２０４を透明化する（Ｓ７４、Ｓ７６）。このようにしても、最終的に表示される画像２０６は適正なものとなる。また図１６の場合と比較すると、クリッピング領域が小さいため処理の負荷が軽減できる。
【０１０６】
このようにクリッピング領域が小さいほど処理負荷の点では有利である。したがって描き込まれた図形の大きさに応じてクリッピング領域を変化させることが考えられる。図１８はクリッピング領域を最小限に抑えるため、描き込まれた図形に外接する矩形をクリッピング領域とした場合を示している。このような場合、処理の負荷が最大に抑えられるが、一方で、編集対象の領域が小さいと、上位のレイヤのクリッピングすべき領域が、１画素未満となってしまう場合がある。
【０１０７】
図１８の例は、図１５に示したような担当をもつ第０レイヤ１９２ａ〜第３レイヤ１９２ｄにおいて、第２レイヤ１９２ｃの最下層、すなわち元の階層データの第６階層に対し、新たな図形２１０を描き込んだ場合を示している。これに外接する矩形２１２の１辺が８画素の大きさであったとすると、第１レイヤ１９２ｂの最下層、すなわち元の階層データの第４階層における対応する領域は１辺が２画素となる。そして第０レイヤ１９２ａの最下層、すなわち元の階層データの第２階層における対応する領域は１辺が０．５画素となる。
【０１０８】
このような場合、０．５画素をクリッピングすることは不可能なため、このままでは目的とする表示画像２１４は得られない。そこで必要な階層のみ、１画素未満のクリッピング領域は１画素に切り上げる。そして本来のクリッピング領域と切り上げたことによって広がった領域との差分を、一つ下位のレイヤの対応する領域へ拡大して描き込んでおく。
【０１０９】
図１９はクリッピング領域を切り上げた場合のデータ更新処理の手順を説明するための図である。図１８と同様に、第２レイヤの最下層において１辺が８画素の領域を更新したとする。このとき上述のように、第０レイヤ１９２ａの最下層においてクリッピング領域が１画素未満となってしまう。当然第０レイヤ１９２ａのその他の階層ではそれよりさらに小さい領域となる。このように最下層においてクリッピング領域が１画素未満となるレイヤが発生した場合は、当該レイヤの最下層のみクリッピング領域を１画素に切り上げる。そして当該レイヤに含まれるその他の階層は透明化する領域を設けない。
【０１１０】
同図においては第０レイヤ１９２ａの最下層のみ、本来のクリッピング領域２１２ａの１辺０．５画素を１画素に切り上げている（領域２１２ａとその周囲の領域２１８ａを合わせた領域）。これは、表示時に要求される解像度が、当該レイヤが担当する階層の解像度より高いときは常に、当該レイヤの最下層の画像を拡大して用いるためである。もし最下層の画素でクリッピングを行わないと、第２レイヤ１９２ｃに描き込んだ図形２１０はどのような解像度でも第０レイヤ１９２ａの図形に上書きされてしまい表示されなくなってしまう。
【０１１１】
第０レイヤ１９２ａの最下層において切り上げてクリッピングした領域のうち、本来クリッピングすべきであった１辺０．５画素の領域２１２ａは、本来のクリッピング先である第２レイヤ１９２ｃに拡大して描き込む。当該領域は第２レイヤ１９２ｃにおいては１辺８画素の領域となる。そして、切り上げてクリッピングした領域のうち、残りの領域２１８ａは、一つ下位の第１レイヤ１９２ｂに描き込む（領域２１８ｂ）。その前段階として図１８と同様、第１レイヤ１９２ｂの１辺２画素の領域２１２ｂが、１辺８画素に拡大されて第２レイヤ１９２ｃへクリッピングされている。
【０１１２】
したがって同図に示すように、第１レイヤ１９２ｂでは、１辺２画素の領域２１２ｂが透明化され、その周囲の領域２１８ｂは、第０レイヤ１９２ａのうち本来のクリッピング領域と切り上げた領域との差分の領域２１８ａを拡大した画像となる。このようにすることで、第０レイヤ１９２ａの最下層を拡大するような解像度では、常に適正な画像２１６を表示できる。
【０１１３】
一方、第０レイヤ１９２ａの最下層より上の階層を用いるような低解像度の画像を表示する場合は、図形２１０も１画素未満となるため、第０レイヤ１９２ａの画像で上書きされても問題とならない。同図の例では第１レイヤ１９２ｂはいずれの階層もクリッピング領域は１画素以上であったが、最下層以外の階層で透明化すべき領域が１画素未満となる場合は、同様の理由で画素の透明化は行わなくてよい。
【０１１４】
図２０は本実施の形態の画像データ更新部１０８の構成を示している。画像データ更新部１０８ｃは、クリッピング部２３０およびレイヤ更新部２３２を含む。メインメモリ６０には、元の階層データのうち担当する階層が異なる複数のレイヤ１９２を準備する。クリッピング部２３０はメインメモリ６０のレイヤ１９２のうち、編集対象のレイヤより上位のレイヤから、編集対象のレイヤへ画像をクリッピングする。このとき、クリッピングした画像を拡大または縮小することにより、編集対象のレイヤに含まれる全ての階層にクリッピング結果が反映されるようにする。
【０１１５】
さらにクリッピング元のレイヤについては、全ての階層のクリッピング領域のα値を０とすることにより画像を透明化する。対象となる領域は図１６のように全領域としてもよいし、図１７、１８のように編集対象の領域や切り上げた１画素のみとしてもよい。レイヤ更新部２３２は編集対象のレイヤに新たな図形を描き込んで更新する。そして描き込み後の画像を拡大または縮小することにより、当該レイヤに含まれる全ての階層に描き込みを反映させる。
【０１１６】
本実施の形態における画像編集時のデータ更新処理は、実施の形態１の図９で示したフローチャートにおいて、Ｓ２８からＳ３２の処理を、あらかじめ準備したレイヤのうち編集対象より上位のレイヤのクリッピング、および編集対象のレイヤの更新処理に代えることにより実現できる。また画像表示処理は上述のように、元の階層データの画像の上に、下位のレイヤから順に重ね合わせていくのみでよい。
【０１１７】
以上述べた本実施の形態によれば、元の階層データの階層を複数のグループに分け、各グループに更新用のレイヤを準備する。そして編集時は、編集対象のレイヤより上位のレイヤからクリッピングを行ったうえで新たに描き込まれた図形を上書きする。これにより実施の形態２と同様、編集量によらずレイヤの数は一定となるため、表示時の重ね合わせ処理の負荷や必要な記憶領域を見積もりやすい。さらにＺレイヤが不要なため実施の形態２より小さい記憶領域で済む。
【０１１８】
また更新対象は、編集がなされたレイヤとそれより上位のレイヤに限られるため、解像度の高い画像を広い範囲にわたって更新する必要が生じる可能性が低くなり、更新処理の負荷を小さくできる。また画像表示時においても、単純に下位のレイヤから重ねていけばよいため処理の負荷が少なく、応答性のよい表示が可能となる。
【０１１９】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１２０】
例えば本実施の形態における画像処理装置１０は、階層データの編集機能と表示機能を同時に有していたが、表示機能のみを有する画像処理装置１０でもよい。この場合もレイヤを元の階層データの画像に重ね合わせて表示することで、本実施の形態で述べた編集がなされた画像を表示させることができる。
【符号の説明】
【０１２１】
１  画像処理システム、  １０  画像処理装置、  １２  表示装置、  ２０  入力装置、  ３０  第０階層、  ３２  第１階層、  ３４  第２階層、  ３６  第３階層、  ３８  タイル画像、  ４４  表示処理部、  ５０  ハードディスクドライブ、  ６０  メインメモリ、  ７０  バッファメモリ、  １００  制御部、  １０２  入力情報取得部、  １０４  表示情報取得部、  １０６  編集情報取得部、  １０８  画像データ更新部、  １１０  表示画像処理部、  １１１  フレーム座標特定部、  １１２  デコード部、  １１４  統合描画部、  １１６  レイヤ生成部、  １１８  レイヤ統合部、  １６０  画像レイヤ更新部、  １６２  Ｚレイヤ更新部、  ２３０  クリッピング部、  ２３２  レイヤ更新部。
【図１】
0005419822.tif 000002
【図２】
0005419822.tif 000003
【図３】
0005419822.tif 000004
【図４】
0005419822.tif 000005
【図５】
0005419822.tif 000006
【図６】
0005419822.tif 000007
【図７】
0005419822.tif 000008
【図８】
0005419822.tif 000009
【図９】
0005419822.tif 000010
【図１０】
0005419822.tif 000011
【図１１】
0005419822.tif 000012
【図１２】
0005419822.tif 000013
【図１３】
0005419822.tif 000014
【図１４】
0005419822.tif 000015
【図１５】
0005419822.tif 000016
【図１６】
0005419822.tif 000017
【図１７】
0005419822.tif 000018
【図１８】
0005419822.tif 000019
【図１９】
0005419822.tif 000020
【図２０】
0005419822.tif 000021