図1は、本発明の実施の形態にかかる画像処理システム1の使用環境を示す。画像処理システム1は、画像処理ソフトウェアを実行する画像処理装置10と、画像処理装置10による処理結果を出力する表示装置12とを備える。表示装置12は、画像を出力するディスプレイおよび音声を出力するスピーカを有するテレビであってよい。表示装置12は、画像処理装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。画像処理システム1において、画像処理装置10は、ケーブル14を介してインターネットなどの外部ネットワークに接続し、階層化された圧縮画像データをダウンロードして取得してもよい。なお画像処理装置10は、無線通信により外部ネットワークに接続してもよい。
画像処理装置10は、たとえばゲーム装置であってよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。なお画像処理装置10は、パーソナルコンピュータであってもよく、画像処理用のアプリケーションプログラムをロードすることで画像処理機能を実現してもよい。
画像処理装置10は、ユーザからの要求に応じて、表示装置12のディスプレイに表示する画像の拡大/縮小処理や、上下左右方向への移動処理など、表示画像を変更する処理を行う。ユーザが、ディスプレイに表示された画像を見ながら入力装置を操作すると、入力装置が、表示画像の変更要求信号を画像処理装置10に送信する。
図2は、入力装置20の外観構成を示す。入力装置20は、ユーザが操作可能な操作手段として、十字キー21、アナログスティック27a、27bと、4種の操作ボタン26を備える。4種の操作ボタン26は、○ボタン22、×ボタン23、□ボタン24および△ボタン25から構成される。
画像処理システム1において、入力装置20の操作手段には、表示画像の拡大/縮小要求、および上下左右方向へのスクロール要求を入力するための機能が割り当てられる。たとえば、表示画像の拡大/縮小要求の入力機能は、右側のアナログスティック27bに割り当てられる。ユーザはアナログスティック27bを手前に引くことで、表示画像の縮小要求を入力でき、また手前から押すことで、表示画像の拡大要求を入力できる。また、表示領域の移動要求の入力機能は、十字キー21に割り当てられる。ユーザは十字キー21を押下することで、十字キー21を押下した方向への移動要求を入力できる。なお、画像変更要求の入力機能は別の操作手段に割り当てられてもよく、たとえばアナログスティック27aに、スクロール要求の入力機能が割り当てられてもよい。
入力装置20は、入力された画像変更要求信号を画像処理装置10に伝送する機能をもち、本実施の形態では画像処理装置10との間で無線通信可能に構成される。入力装置20と画像処理装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルやIEEE802.11プロトコルなどを用いて無線接続を確立してもよい。なお入力装置20は、画像処理装置10とケーブルを介して接続して、画像変更要求信号を画像処理装置10に伝送してもよい。
図3は、本実施の形態において使用する画像データの階層構造を示す。画像データは、深さ(Z軸)方向に、第0階層30、第1階層32、第2階層34および第3階層36からなる階層構造を有する。なお同図においては4階層のみ示しているが、階層数はこれに限定されない。以下、このような階層構造をもつ画像データを「階層データ」とよぶ。
図3に示す階層データは4分木の階層構造を有し、各階層は、1以上のタイル画像38で構成される。すべてのタイル画像38は同じ画素数をもつ同一サイズに形成され、たとえば256×256画素を有する。各階層の画像データは、一つの画像を異なる解像度で表現しており、最高解像度をもつ第3階層36の原画像を複数段階に縮小して、第2階層34、第1階層32、第0階層30の画像データが生成される。たとえば第N階層の解像度(Nは0以上の整数)は、左右(X軸)方向、上下(Y軸)方向ともに、第(N+1)階層の解像度の1/2であってよい。
画像処理装置10において、階層データは、所定の圧縮形式で圧縮された状態で記憶装置に保持されており、ディスプレイに表示される前に記憶装置から読み出されてデコードされる。本実施の形態の画像処理装置10は、複数種類の圧縮形式に対応したデコード機能を有し、たとえばS3TC形式、JPEG形式、JPEG2000形式の圧縮データをデコード可能とする。階層データにおいて、圧縮処理は、タイル画像単位に行われていてもよく、また同一階層または複数の階層に含まれる複数のタイル画像単位に行われていてもよい。
階層データの階層構造は、図3に示すように、左右方向をX軸、上下方向をY軸、深さ方向をZ軸として設定され、仮想的な3次元空間を構築する。画像処理装置10は、入力装置20から供給される画像変更要求信号から表示画像の変更量を導出すると、その変更量を用いて仮想空間におけるフレームの4隅の座標(フレーム座標)を導出する。仮想空間におけるフレーム座標は、後述するメインメモリへのロードおよび表示画像の生成処理に利用される。なお、仮想空間におけるフレーム座標の代わりに、画像処理装置10は、階層を特定する情報と、その階層におけるテクスチャ座標(UV座標)を導出してもよい。以下、階層特定情報およびテクスチャ座標の組み合わせも、フレーム座標と呼ぶ。
図4は画像処理装置10の構成を示している。画像処理装置10は、無線インタフェース40、スイッチ42、表示処理部44、ハードディスクドライブ50、記録媒体装着部52、ディスクドライブ54、メインメモリ60、バッファメモリ70および制御部100を有して構成される。表示処理部44は、表示装置12のディスプレイに表示するデータをバッファするフレームメモリを有する。
スイッチ42は、イーサネットスイッチ(イーサネットは登録商標)であって、外部の機器と有線または無線で接続して、データの送受信を行うデバイスである。スイッチ42は、ケーブル14を介して外部ネットワークに接続し、画像サーバから階層化された圧縮画像データを受信してもよい。またスイッチ42は無線インタフェース40に接続し、無線インタフェース40は、所定の無線通信プロトコルで入力装置20と接続する。入力装置20においてユーザから入力された画像変更要求信号は、無線インタフェース40、スイッチ42を経由して、制御部100に供給される。
ハードディスクドライブ50は、データを記憶する記憶装置として機能する。スイッチ42を介して受信された圧縮画像データは、ハードディスクドライブ50に格納される。記録媒体装着部52は、メモリカードなどのリムーバブル記録媒体が装着されると、リムーバブル記録媒体からデータを読み出す。ディスクドライブ54は、読出専用のROMディスクが装着されると、ROMディスクを駆動して認識し、データを読み出す。ROMディスクは、光ディスクや光磁気ディスクなどであってよい。圧縮画像データはこれらの記録媒体に格納されていてもよい。
制御部100は、マルチコアCPUを備え、1つのCPUの中に1つの汎用的なプロセッサコアと、複数のシンプルなプロセッサコアを有する。汎用プロセッサコアはPPU(Power Processing Unit)と呼ばれ、残りのプロセッサコアはSPU(Synergistic-Processing Unit)と呼ばれる。
制御部100は、メインメモリ60およびバッファメモリ70に接続するメモリコントローラを備える。PPUはレジスタを有し、演算実行主体としてメインプロセッサを備えて、実行するアプリケーションにおける基本処理単位としてのタスクを各SPUに効率的に割り当てる。なお、PPU自身がタスクを実行してもよい。SPUはレジスタを有し、演算実行主体としてのサブプロセッサとローカルな記憶領域としてのローカルメモリを備える。ローカルメモリは、バッファメモリ70として使用されてもよい。
メインメモリ60およびバッファメモリ70は記憶装置であり、RAM(ランダムアクセスメモリ)として構成される。SPUは制御ユニットとして専用のDMA(Direct Memory Access)コントローラをもち、メインメモリ60とバッファメモリ70の間のデータ転送を高速に行うことができ、また表示処理部44におけるフレームメモリとバッファメモリ70の間で高速なデータ転送を実現できる。本実施の形態の制御部100は、複数のSPUを並列動作させることで、高速な画像処理機能を実現する。表示処理部44は、表示装置12に接続されて、ユーザからの要求に応じた画像処理結果を出力する。
本実施の形態の画像処理装置10は、表示画像の拡大/縮小処理や表示領域の移動処理を行う際に表示画像をスムーズに変更させるために、後述する規則によって決定した圧縮画像データの一部をハードディスクドライブ50からメインメモリ60にロードしておく。また、メインメモリ60にロードした圧縮画像データのさらに一部をデコードしてバッファメモリ70に格納しておく。これにより、後の必要なタイミングで、表示画像の生成に使用する画像を瞬時に切り替えることが可能となる。
図5は本実施の形態における画像データの流れを模式的に示している。まず階層データはハードディスクドライブ50に格納されている。ハードディスクドライブ50に代わり、記録媒体装着部52やディスクドライブ54に装着された記録媒体が保持していてもよい。あるいは、画像処理装置10がネットワークを介して接続した画像サーバから階層データをダウンロードするようにしてもよい。ここでの階層データは上述のとおり、S3TC形式などによる固定長圧縮、あるいはJPEG形式などによる可変長圧縮がなされている。
この階層データのうち、一部の画像データを圧縮した状態のままメインメモリ60にロードする(S10)。ここでロードする領域は、現在の表示画像の仮想空間における近傍や、画像の内容、ユーザの閲覧履歴等に基づいて、高頻度で表示要求がなされると予測される領域など、あらかじめ定めた規則によって決定する。ロードは、画像変更要求がなされたときのみならず、例えば所定の時間間隔で随時行う。これによりロード処理が一時期に集中しないようにする。
また、ロードする圧縮画像データはおよそ一定のサイズを有するブロック単位とする。そのためハードディスクドライブ50が保持する階層データは所定の規則でブロックに分割しておく。このようにすることでメインメモリ60におけるデータ管理が効率よく行える。すなわち、圧縮画像データが可変長圧縮されたものであっても、ブロック(以後、「画像ブロック」と呼ぶ)単位であればロードするデータサイズがほぼ等しいため、基本的にメインメモリ60にそれまで格納されていたブロックのいずれかを上書きすることによって新たなロードが完了する。そのためフラグメンテーションが発生しにくく、メモリを効率的に使用できるうえ、アドレス管理も容易になる。
次に、メインメモリ60に格納されている圧縮画像データのうち、表示に必要な領域の画像、または必要と予測される領域の画像のデータをデコードし、バッファメモリ70に格納する(S12)。バッファメモリ70は、少なくとも2つのバッファ領域72、74を含む。各バッファ領域72、74のサイズは、フレームメモリ90のサイズよりも大きく設定され、入力装置20から画像変更要求信号が入力された場合に、ある程度の量の変更要求に対しては、バッファ領域72、74に展開した画像データで表示画像を生成できるようにする。
バッファ領域72、74の一方は、表示画像の生成に用いる画像を保持するために利用され、他方は、以後、必要と予測される画像を準備するために利用される。以後、前者を「表示用バッファ」、後者を「デコード用バッファ」と呼ぶ。図5の例では、バッファ領域72が表示用バッファ、バッファ領域74がデコード用バッファで、表示領域68が表示されているものとする。先読み処理によってデコード用バッファに格納する画像は、表示用バッファに格納されている画像と同一階層の画像でもよいし、縮尺の異なる別階層の画像でもよい。
次に、表示用バッファであるバッファ領域72に格納された画像のうち表示領域68の画像を、フレームメモリ90に描画する(S14)。この間に、新たな領域の画像が必要に応じてデコードされ、バッファ領域74に格納される。格納が完了したタイミングや表示領域68の変更量などに応じて、表示用バッファとデコード用バッファを切り替える(S16)。これにより、表示領域の移動や縮尺率の変更などに対し表示画像をスムーズに切り替えることができる。
本実施の形態ではさらに、デコード用バッファへ新たな領域の画像を格納すべきときに、それまで格納されていたデコード済みの画像と重複する領域が存在するときは、当該領域を利用することにより新たにデコードする領域を最小限にする。具体的な手法については後に詳述する。
図6は制御部100の構成を詳細に示している。制御部100は入力装置20からユーザが入力した情報を取得する入力情報取得部102、階層データを画像ブロックに分割する圧縮データ分割部104、新たにロードすべき画像ブロックを決定するロードブロック決定部106、必要な画像ブロックをハードディスクドライブ50からロードするロード部108を含む。制御部100はさらに、表示画像を描画する表示画像処理部114、先読み処理を行う先読み処理部110、および圧縮画像データをデコードするデコード部112を含む。
図6において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。既述したように、制御部100は1つのPPUと複数のSPUとを有し、PPUおよびSPUがそれぞれ単独または協同して、各機能ブロックを構成できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
入力情報取得部102は、ユーザが入力装置20に対して入力した、画像表示の開始/終了、表示領域の移動、表示画像の拡大、縮小などの指示内容を取得する。
圧縮データ分割部104は、ハードディスクドライブ50などから階層データを読み出し、後述する所定の規則により分割して画像ブロックを生成し、ハードディスクドライブ50に格納する。例えばユーザが入力装置20に対し、ハードディスクドライブ50に格納されている階層データのいずれかを選択すると、入力情報取得部102から当該情報を取得し、分割処理を開始する。
一方、圧縮データ分割部104は制御部100の他の機能と同一の装置内になくてもよく、階層データを生成する段階で分割するようにしてもよい。具体的な分割手法は後に詳述するが、ハードディスクドライブ50の速度やメインメモリ60の容量などハードウェアの性能によって、圧縮データ分割部104が行うブロック分割の方法は異なっていていよい。そのため、圧縮データ分割部104にはあらかじめ、画像処理装置10が有するハードウェア性能に応じた最適なブロック分割を行うように設定しておく。
ロードブロック決定部106は、ハードディスクドライブ50からメインメモリ60へ新たにロードすべき画像ブロックの有無の確認、および次にロードする画像ブロックの決定を行い、ロード部108にロード要求を発行する。ロードブロック決定部106は、ロード部108がロード処理中でない状態において、例えば所定の時間間隔、あるいは、ユーザが画像の変更要求を行った際など、所定のタイミングで上記確認、決定の処理を行う。ロード部108は、ロードブロック決定部106からの要求に従い、実際のロード処理を行う。
ユーザが表示画像の変更要求を行った際、もし変更先の画像領域を含む画像ブロックがメインメモリ60に格納されていなかったら、ハードディスクドライブ50からの画像ブロックのロード、必要領域のデコード、表示画像の描画、といった処理を一度に行う必要がある。この場合、ロード処理がボトルネックとなり、ユーザの要求に対する応答性が損なわれることが考えられる。本実施の形態では、(1)今後表示される可能性の高い領域を網羅するように画像ブロックをロードしておく、(2)ロード処理が一時期に集中しないように随時ロードしていく、というポリシーの元でロードを行う。これによりロード処理が表示画像の変更処理の妨げになることが少なくなる。ロードする画像ブロックの決定手順については後に詳述する。
先読み処理部110は、現在の表示画像のフレーム座標とユーザが入力した表示画像変更要求の情報に従い、将来表示画像の描画に必要とされるであろう画像領域を予測し、その情報をデコード部112に供給する。ただし画像表示開始直後や、バッファメモリ70に格納済みの画像では変更先の画像が描画できない場合などは、予測をせずに、その時点の表示画像の描画に必要な画像を含む所定領域の情報をデコード部112に供給する。デコード部112は、先読み処理部110から取得した画像領域の情報に基づき、メインメモリ60から圧縮画像データの一部を読み出しデコードし、デコード用バッファまたは表示用バッファにデコード後のデータを格納する。
表示画像処理部114は、ユーザが入力した表示画像変更要求に従い新たな表示画像のフレーム座標を決定し、バッファメモリ70の表示用バッファから対応する画像データを読み出し、表示処理部44のフレームメモリ90に描画する。
次に、階層データを画像ブロックに分割する手法について説明する。図7は圧縮データ分割部104の構成を詳細に示している。圧縮データ分割部104は、識別番号付与部120、画像ブロック生成部122を含む。識別番号付与部120は、階層データを構成する各階層のタイル画像に所定の順序で0から順に識別番号を付与していく。画像ブロック生成部122は、データサイズの合計が所定のサイズを超える直前まで識別番号順にタイル画像をまとめていき、画像ブロックを生成する。
図8は、階層データにおける各階層の画像を模式的に示している。階層データは図3と同様、第0階層30a、第1階層32a、第2階層34a、および第3階層36aの画像からなるとする。そして各階層の画像のうち実線で区切られた区画のひとつひとつがタイル画像である。識別番号付与部120は、同図に示すように、各タイル画像に識別番号を付与する。例えば第0階層30aの画像は、1つのタイル画像で構成され、識別番号を「0」とする。第1階層32a、第2階層34a、第3階層36aはそれぞれ、「1」と「2」、「3」から「8」、「9」から「44」の識別番号を各タイル画像に付与する。図8の例では、識別番号を付与する順序をラスタ順として示しているが、後述するようにそれ以外の順序でもよい。
図9は画像ブロック生成部122が、図8の階層データを画像ブロックにまとめる様子を模式的に示している。上述のように画像ブロック生成部122は、所定のデータサイズを超えない最大数のタイル画像で画像ブロックが構成されるように、識別番号の小さい方からタイル画像を区切っていく。同図では、このときの「所定のデータサイズ」を「基本ブロックサイズ」として矢印の範囲で表している。
同図の例では、識別番号「0」から「5」のタイル画像が画像ブロック2、「6」から「8」のタイル画像が画像ブロック4、というようにそれぞれ画像ブロックにまとめられていき、「41」から「44」のタイル画像が最終の画像ブロック6となっている。各画像ブロックは、先頭のタイル画像の識別番号と含まれるタイル画像の数で識別する。したがって画像ブロック2は「(0,6)」、画像ブロック4は「(6,3)」、画像ブロック6は「(41,4)」なる識別情報を有する。このように識別情報を定義すると、あるタイル画像がある画像ブロックに含まれるか否かを容易に判定することができる。すなわち、ブロック分割方法に関わらず、識別番号の範囲を確認するのみで、画像ブロックに含まれるタイル画像を特定できる。
画像ブロックの識別情報は、対応する圧縮画像データのハードディスクドライブ50における格納領域の情報と対応づけて、ハードディスクドライブ50に格納しておく。このように、圧縮画像データをおよそ同じサイズの画像ブロックに分割しておけば、上述のとおり、ロードした画像ブロックをメインメモリ60内の連続した領域に格納しても、一つの画像ブロックをその後にロードされた画像ブロックで上書きしていくことにより格納が可能であり、フラグメンテーションの発生を抑制できるとともに、メインメモリ60を効率的に使用できる。
上記のように識別番号順に画像ブロックの区切りを設定していく場合、識別番号のタイル画像への付与順によって、原画像がどのように分割されるかが大きく異なる。以下、いくつかの例を説明する。図10は、本実施の形態におけるブロック分割の手法を説明するための原画像の例である。なお図10〜14はグレースケールを示しているが、実際にはフルカラーでよい。原画像200は例えば92323×34630画素を有しそれを361×136個のタイル画像に分割する。
図11〜14は、基礎ブロックサイズを1Mバイトとして様々な識別番号の付与順で図10の原画像200を分割した様子を示している。各画像は、画像ブロックの境界がわかりやすいように、画像ブロックごとにグレースケールの濃淡を異ならせている。図11は、図8のようにタイル画像に対しラスタ順に識別番号を付与した場合の、分割の様子を示している。ラスタ順分割画像202は、タイル画像を横方向にまとめた形の画像ブロックに分割されている。拡大画像204において示した幅206が画像ブロックの縦方向の長さとなる。横方向の長さは画像ブロックに含まれるタイル画像の圧縮後のデータサイズによって変化し、一つの画像ブロックが複数行のタイル画像に渡る場合もある。
図11のような識別番号の付与順であれば付与そのものの処理が容易である。また、このようにブロック分割すると、一つの画像ブロックが保持する情報は横方向について多くなる。そのため画像の内容上、横方向に表示領域を移動させることが多いような場合には、少ない回数のロードによって、移動後の表示領域を網羅できる画像ブロックがメインメモリ60に格納できる。一方、表示領域の移動にそのような特性がない場合は、一つの表示画像を生成するために多数の画像ブロックをロードする必要があるうえ、表示画像から遠い箇所の無駄な情報を多く取り込むことになり、効率が悪い。
図12は、「Z状」の順でタイル画像に識別番号を付与した場合の分割の様子を示している。ここで「Z状」の順とは、同図の識別番号付与例212のスキャン順214に示すように、画像の横方向(X方向)と縦方向(Y方向)に交互にインクリメントしていく順序である。すると、同図に記載された数字のように識別番号が付与される。この順で画像ブロックにまとめていくと、Z状順分割画像208のような画像ブロックに分割される。拡大画像210において一つの画像ブロックは画像ブロック216のような形状を有する。
すなわちこの手法では、あるタイル画像を始点に横方向、縦方向に同量ずつ拡大していくように識別番号を付与しているため、この場合の画像ブロック216は正方形に近い形となる。詳細な形状および大きさは、各画像ブロックに含まれるタイル画像の圧縮後のデータサイズに依存する。図12のようにブロック分割すると、1つの画像ブロックが有する情報は空間局所性がよくなり、表示画像やその近傍の領域の画像を生成するのに必要な画像ブロックが図11の場合と比べて少なくなる。さらに無駄な領域の情報がロードされにくく、メインメモリ60の使用効率がよくなる。
図13は、正方形のマクロタイル順でタイル画像に識別番号を付与した場合の分割の様子を示している。ここで「マクロタイル」とは、複数のタイル画像で構成される矩形のことであり、縦、横に含まれるタイル画像の数はあらかじめ設定しておく。なお図12の例は2×2個のタイル画像で構成されるマクロタイルを再帰的に形成していると考えることもできる。図13の場合は、マクロタイル222に示すように、8×8個のタイル画像で構成される正方形を1つのマクロタイルとしている。そしてマクロタイル222内で矢印の方向、すなわちラスタ順に識別番号を付与する。これにより、同図に記載された数字のように、各タイル画像に識別番号が付与される。1つのマクロタイルに対し識別番号が付与し終わったら、同様の付与を全マクロタイルに対してラスタ順に行っていく。
この順で画像ブロックにまとめていくと、正方形マクロタイル順分割画像218のような画像ブロックに分割される。すなわちこの場合の画像ブロックは、マクロブロックを横方向にまとめた形状を有する。拡大画像220においてマクロタイル222の一辺の長さ、あるいはその整数倍が画像ブロックの縦方向の長さとなる。横方向の長さは、各画像ブロックに含まれるタイル画像の圧縮後のデータサイズによって変化する。図13のようにブロック分割した場合も図12の場合と同様に、表示画像やその近傍の領域の画像を生成するために必要な画像ブロック数が抑えられ、ロードの効率がよくなる。
図14は、短冊状マクロタイル順でタイル画像に識別番号を付与した場合の分割の様子を示している。短冊状マクロタイルは横方向に含まれるタイル画像の数のみを設定し、縦方向は無制限とするマクロタイルである。図14の場合はマクロタイル230に示すように、横方向が16個のタイル画像で構成されている。そしてマクロタイル230内で矢印の方向、すなわちラスタ順に識別番号を付与する。これにより、同図に記載された数字のように各タイル画像に識別番号が付与される。識別番号の付与が原画像の下端までなされたら、その右に位置するマクロタイル、というように、同様の付与を全マクロタイルに対してラスタ順に行っていく。
この順で画像ブロックにまとめていくと、短冊状マクロタイル順分割画像224のような画像ブロックに分割される。すなわちこの場合の画像ブロックは、縦一列のマクロタイルを、タイル画像の圧縮後のデータサイズに応じて途中で区切った形状を有する。場合によっては複数列のマクロタイルに渡ることもある。拡大画像226においてマクロタイルの幅228、あるいはその整数倍が、画像ブロックの横方向の幅となる。画像ブロックの区切り部分における境界線の詳細な形状も、タイル画像の圧縮後のデータサイズに応じて変化する。図14のようにブロック分割した場合も図12、13の場合と同様に、表示画像やその近傍の領域の画像を生成するために必要な画像ブロック数が抑えられ、ロードの効率がよくなる。
上述のように識別番号を付与する順序や、基本ブロックサイズによって、画像ブロックの形状、大きさ、含まれる情報が大きく異なる。したがって、画像の内容やジャンル、例えば風景写真であるか新聞などの文字の画像であるか、などによって最も効率的にデータの取り込みが可能な条件を求めておき、実際の画像に応じて選択するようにしてもよい。また前述のようにハードウェアの構成によって最適な手法を選択するようにしてよい。
以上のように画像を分割した結果得られる画像ブロックは、ほぼ均一なデータサイズでタイル画像をまとめたものであるため、その面積は、上述のように構成するタイル画像の圧縮後のデータサイズに依存する。図10の原画像200において、画像の上半分は空の領域で色が比較的均一なため、高周波成分が少なく圧縮率が高い。一方、原画像200の中央付近は建造物などがあるため色の変化が大きく、高周波成分が多いため圧縮率が低い。したがって、原画像200のうち上半分のタイル画像の圧縮後のデータサイズは中央付近のデータサイズより小さい傾向を有する。
これを踏まえて例えば図14の短冊状マクロタイル順分割画像124を見ると、上半分の画像ブロックの面積は、中央付近の画像ブロックより大きい傾向となっている。その他の分割画像でも同様である。すなわち本実施の形態では、画像の面積を単純に均等に分割するのではなく、データサイズによって分割している。このようにすることで、単位面積当たりのデータサイズが小さい領域は、一度のロードで広い面積の圧縮データをメインメモリ60に格納することができ、メモリ内で管理すべきブロック数が少なくなるため管理が容易になるうえ、ロードの効率がよくなる。
図12に示したZ状順分割画像208の例では、Z状に識別番号を付与することにより画像ブロックを正方形に近づけ、空間局所性を向上させた。同図の例では、識別番号を付与済みのタイル画像が所定の大きさの正方形まで到達したら、新たな始点から識別番号を付与していくようにしており、このときの始点を原画像200内でマトリクス状に配置していた。そのため、画像ブロックの境界線はおよそ互いに直交する格子状になっている。一方、画像ブロックの境界線が格子状にならないように工夫してもよい。
図15は画像ブロックの境界線が格子状に構成されているときの、画像ブロックと表示画像の描画領域の関係を模式的に示している。原画像の一領域132において、画像ブロック134aは横3つ、縦2つのマトリクス状になっており、その境界線は格子状となっている。このようにブロック分割を行うと、同図のように描画領域136aが格子の交点を含むような位置になると、描画に必要な画像ブロックが4つになる。
図16は画像ブロックの境界線をT字路形状としたときの、画像ブロックと表示画像の描画領域の関係を模式的に示している。原画像の一領域238において、画像ブロック134bは縦方向の境界線が行によってずれるように配置され、結果として境界線がT字路形状になっている。このようにブロック分割を行うと、同図のように描画領域136bが境界線を跨いでも、描画に必要な画像ブロックは最大で3つとなり、図15の場合と比較してロードの効率がよくなる。このように画像ブロックが配置されるようにするには、例えば、上述の識別番号付与の始点をマトリクス状に配置するのではなく、行によってずらすようにすればよい。
これまで述べたブロック分割の手法は全て、同一の階層にある画像に対するものであった。一方、複数の階層にまたがるように識別番号を付与していくことにより、一つの画像ブロックに複数の階層のタイル画像の情報が含まれるようにしてもよい。このようにすると、同一階層の画像上での表示領域の移動のみならず、表示画像の拡大、縮小に対しても、ロードの回数を軽減させることができる。
このとき、複数の階層のタイル画像を単に同じように圧縮してから画像ブロックとしてまとめてもよいし、解像度の異なる同じ画像同士の冗長性を利用して、一方の画像を他方の画像を用いて復元するようにし、圧縮率を上げてもよい。本実施の形態では、一つの画像ブロックに含まれる情報は常にセットでロードされるため、このような手法が可能となる。例えば、低解像度画像を高解像度画像の倍率まで拡大した画像と、実際の高解像度画像との差分画像を圧縮して、低解像度画像の圧縮データとともに画像ブロックに含める。この場合、低解像度画像、差分画像の順で画像ブロックにまとめていき、基礎ブロックサイズを超えない最大のデータサイズとなったときに、次の画像ブロックを形成していくようにする。
図17は高解像度画像を、低解像度画像の拡大画像との差分画像として圧縮する手法を説明するための図である。本処理は圧縮データ分割部104が行うが、階層データを生成する段階で、画像表示に係るその他の処理とは別に行ってよい。まず階層データ139における第2階層34および第3階層36の原画像をそれぞれ読み出す(S20、S22)。この例では同図に示すように、第3階層画像36bは第2階層画像34bを縦および横に2倍した画像となっている。これらの画像のうち、第2階層画像34bのタイル画像のいくつかを、通常通り圧縮する(S24)。次に第3階層画像36bの対応するタイル画像を圧縮する代わりに、当該タイル画像と、第2階層画像34bのタイル画像を2×2倍に拡大した画像との差分画像を圧縮する(S26)。
このとき、第2階層画像34bにおける圧縮対象のタイル画像は、図11〜14で例示したのと同様に、およそ同じデータサイズとなるように原画像を分割してなる領域のタイル画像などとする。あるいは、あらかじめ定めた数のタイル画像とし、上述したように画像ブロックを形成する段階でデータサイズが均一になるように調整してもよい。
その結果、第2階層画像34bの圧縮データ140と差分画像の圧縮データ142が生成される。同図では理解を容易にするため圧縮データも画像で表現し、差分画像の圧縮データ142は差分であることを示すために網掛け画像としている。これらの圧縮データを一つの画像ブロック144に含ませる。なおこの例では第2階層画像34bと第3階層画像36bのひとつの組み合わせのみが画像ブロック144に入るように図示されているが、3つ以上の階層の画像を同様に含めてもよい。すなわち、最も低解像度の画像はそのまま圧縮し、高解像度の画像はひとつ上の階層の画像との差分画像によって表現する。また、そのような依存関係を有する圧縮データの組を複数、画像ブロック144に含めるようにしてもよい。
このようにして生成した画像ブロック144は、ハードディスクドライブ50に格納しておく。そしてロード部108が必要に応じてメインメモリ60にロードする。その後、先読み処理部110などの判断によってデコード部112によってデコードされる。このとき、第2階層画像34bの圧縮データ140は通常通りの処理でデコードされ、第2階層画像34bとなる(S28)。一方、差分画像の圧縮データ142は、まず通常通りデコードした後(S30)、デコードした第2階層画像34bを2×2倍に拡大した画像と足し合わせることにより(S32、S34)、第3階層画像36bとなる。
上記の例では低解像度画像の拡大画像との差分画像を高解像度画像のデータとして圧縮したが、逆に高解像度画像を利用して低解像度画像を作成するようにしてもよい。例えば高解像度画像をウェーブレット圧縮してハードディスクドライブ50に格納しておき、必要に応じてメインメモリ60にロードした後、デコード部112は、当該高解像度画像の圧縮画像のローパス画像を生成することで低解像度画像としてもよい。同様に、高解像度画像をJPEG圧縮し、その高周波成分をカットして低解像度画像としてもよい。あるいはそのようにして生成した低解像度画像と元の低解像度画像との差分画像を圧縮して同一の画像ブロックに含めておき、上述と同様に差分画像を加算することで低解像度画像を復元してもよい。またはピラミッドフィルタにより2×2のピクセル群から1ピクセルを求めてもよい。これらの手法により、メインメモリ60へのロード時間の短縮、メインメモリ60の領域の有効利用が実現できる。
次に、ハードディスクドライブ50に格納された画像ブロックからメインメモリ60へロードすべき画像ブロックを決定し、ロードする手法について説明する。図18は、ロードすべき画像ブロックを決定してロードを実施する処理手順を示すフローチャートである。この処理は、例えば所定の時間間隔で随時行う。まずロードブロック決定部106は、ロード部108が現在ロード中であるか否かを確認する(S40)。ロード中であれば処理を終了する(S40のY)。
ロード中でなければ(S40のN)、後述する画像上の領域についてメインメモリ60に該当するデータがあるか否かを判定する(S42)。このためには例えば、メインメモリ60に格納されている画像ブロックの識別情報、すなわち先頭のタイル画像の識別番号とタイル画像の数からなる情報と、その先頭アドレスとを対応させたテーブルをメインメモリ60に格納しておく。そして必要なタイル画像の識別番号に基づき当該テーブルを検索することにより、データの有無を判定することができる。ここで判定対象の領域は1つのタイル画像でもよいし、複数のタイル画像を含んでもよい。このような領域を「必要領域」と呼ぶ。
もし必要領域のうちメインメモリ60にロードされていない領域が存在したら(S44のY)、当該領域を含む画像ブロックを、当該領域に含まれるタイル画像の識別番号と画像ブロックの識別情報とから特定し、それをロード対象として決定する(S46)。このとき複数の画像ブロックをロードする必要が生じた場合は、あらかじめ定めた規則に従い、優先度の高い画像ブロックをロード対象として決定する。すなわち1回のロード処理において、多くの画像ブロックを一度にロードしないようにする。
一度にロードする画像ブロックが多くなるほど、ロードに要する時間が増加するが、その間に表示画像の変更要求がユーザよりなされると、必要領域が変化してしまい、そのときのロード処理が無駄になる可能性がある。このような事態を回避するため、ロードブロック決定部106は随時、ロードすべき画像ブロックを決定していき、1度にロードする画像ブロックは1つ、あるいは所定の数以内、と制限する。
ロードブロック決定部106がロード対象を決定したら、ロード部108が、画像ブロックの識別情報と格納領域とを対応付けたテーブルに基づき、ロード対象である画像ブロックをハードディスクドライブ50から読み出して、メインメモリ60に格納する(S48)。S44において必要領域の全てがメインメモリ60に格納されていたら処理を終了する(S44のN)。
図19はS42においてメインメモリ60に必要領域のデータが格納されているか否かを判定する対象である必要領域を決定するときの概念図である。メインメモリ60には、基本的には現在表示されている領域の周辺の画像の圧縮データがロードされていることが望ましい。ここで「周辺」とは、同一階層の画像における上下左右(X軸、Y軸)方向と、階層構造の深さ(Z軸)方向の周辺を含んでよい。Z軸方向の周辺とは、表示画像およびその近傍を含む拡大画像および縮小画像を意味する。
図19は、上から第n−1階層、第n階層、第n+1階層の画像の一部を示しており、各画像内にタイル画像が示されている。各階層で示している画像は、中心線154において同一箇所を表示する。そして第n階層の画像の中央付近の領域150が現在表示されている領域であるとすると、必要領域は、例えば黒丸152a、152b、152cなどを含む領域とする。すなわち表示画像の階層である第n階層の画像においては、表示画像の領域150内の中心(中心線154の地点)および四隅の地点と、領域150を上下左右に伸張した矩形の各辺の中点と四隅の地点を含むタイル画像を必要領域とする。
一方、表示画像と隣接する階層である第n−1階層と第n+1階層の画像においては、中心線154の地点と、それを重心とする所定サイズの矩形の四隅の地点を含むタイル画像を必要領域とする。この場合の矩形は、表示画像の矩形の大きさに相当する大きさでもよい。表示領域が移動しても常にこのような地点を含む画像ブロックがメインメモリ60にロードされていれば、円滑にデコードおよび描画を行え、ユーザによる画像変更要求に対する応答性がよくなる。
なお図19に示した地点はあくまで例示であり、画像の内容や画像処理装置10の処理性能、メインメモリ60の容量などにより、数を増減させたり配置形状を変化させたりしてもよい。さらに、画像の内容上重要な領域や、同一ユーザによる表示履歴から、過去に高頻度で表示された領域やユーザの嗜好に合致すると思われる領域は、表示画像の変化に関わらず優先的にロードするようにしてもよい。ここで「重要な領域」とは、例えば人物の画像であれば顔付近、電子チラシであれば目玉商品などの表示領域である。また、ユーザの嗜好とは、新聞紙面の画像であればユーザがよく閲覧する欄などである。このような領域は、図18のS46において複数の画像ブロックをロードする必要が生じた場合でも、高い優先度を与えてロードされるようにする。あるいは画像表示を開始した段階でロードしておくようにしてもよい。
図18のS46における優先度については、そのほかに、例えば次のような規則を用意してもよい。まず、表示画像と同一階層内の画像ブロックより、別の階層、すなわち拡大画像および縮小画像の画像ブロックを優先させる。これは、同一階層内での表示領域の移動の場合、バッファメモリ70における2つのバッファ領域72および74に格納したデコード画像で賄える可能性が高いのに対し、階層間の移動ではバッファメモリ70のデコード画像をすべて更新しなければいけない可能性が高いためである。ただし2つの階層間を往復するような場合はバッファメモリ70で充足する場合もある。
また、階層が深い、すなわち拡大画像の画像ブロックより、階層が浅い、すなわち縮小画像の画像ブロックを優先させる。拡大画像はロード、デコードが間に合わなかったとしても、縮小画像を拡大することにより暫定的な対応が容易であるが、その逆は困難なためである。
図20は先読み処理部110が行う先読み処理を説明するための図である。図20は、階層データの構造を示しており、各階層はL0(第0階層)、L1(第1階層)、L2(第2階層)、L3(第3階層)と表現されている。矢印80は、ユーザからの画像変更要求が、表示画像の縮小を要求しており、L2をまたいだ様子を示している。本実施の形態の画像処理装置10では、元の画像データが存在するL1、L2の深さ方向の位置を、深さ方向の先読み境界として設定し、入力装置20からの画像変更要求が先読み境界を超えたタイミングで先読み処理を開始する。
表示画像の縮尺率がL2の近傍にある場合、L2(第2階層)の画像を用いて表示画像を作成する。具体的には、表示する画像の縮尺率が、L1の画像とL2の画像の切替境界82と、L2の画像とL3の画像の切替境界84の間にある場合に、L2の画像を縮小、拡大して表示画像を生成する。したがって、矢印80に示すように画像の縮小処理が要求されると、L2の拡大画像から、縮小画像に変換されて表示される。本実施の形態の画像処理装置10は、画像変更要求から予測される将来必要な画像を特定して、メインメモリ60から読み出し、デコードしておく。図20の例では、画像変更要求による要求縮尺率がL2をまたいだときに、縮小方向にあるL1の画像をメインメモリ60から先読みしてデコードし、バッファメモリ70に書き込む。
同一階層における上下左右方向の先読み処理についても同様に処理される。具体的には、バッファメモリ70に格納されている画像データに先読み境界を設定しておき、画像変更要求による表示位置が先読み境界をまたいだときに、先読み処理が開始されるようにする。
図21は先読み処理部110およびデコード部112が画像のデコードを行う際の処理手順を示すフローチャートである。まず入力装置20からの画像変更要求信号をもとに、要求される表示画像の変更量を導出する(S50)。表示画像の変更量は、上下左右方向の移動量および深さ方向の移動量である。次に、階層構造におけるそれまでの表示領域の四隅のフレーム座標から、導出された変更量により移動先の表示領域の四隅のフレーム座標を決定する(S52)。
そして決定した四隅のフレーム座標で特定される領域を表示するための画像領域が既にデコードされて、バッファメモリ70のバッファ領域72またはバッファ領域74のいずれかに格納されているか判定する(S54)。既にバッファ領域72またはバッファ領域74に必要な画像領域が存在している場合には(S54のY)、要求される縮尺率が先読み境界を超えているか判定する(S56)。先読み境界を超えていなければ、バッファメモリ70はそのままに処理を終了する。
S52で決定した四隅のフレーム座標で特定される領域を表示するための画像領域がバッファメモリ70に存在しない場合(S54のN)、および要求される縮尺率が先読み境界を超えている場合に(S56のY)、先読み処理部110はデコード部112に対して、必要な画像領域のデコードを指示する。デコード部112は、指示された画像領域のデータをメインメモリ60から取得してデコードし、バッファ領域72またはバッファ領域74に格納する(S60)。これにより、表示画像処理部114による表示画像の生成前に、必要な画像領域をバッファメモリ70に展開することができる。
表示用バッファに格納された画像の一部が表示されているとき、デコード用バッファにおいて次に必要となる画像は、同一階層内での移動では、例えば、表示領域が先読み境界をまたいだ時、当該表示領域が移動方向の始点側の端に含まれるような画像である。この場合、バッファ領域72およびバッファ領域74に格納される画像は、少なくとも表示画像の大きさ分の重複領域を有し、さらに先読み境界の設定位置によって重複領域が増えることになる。先読み境界を超えたときに新たにデコードすべき画像の範囲は、あらかじめ処理速度などに応じて設定しておく。あるいは画像の内容によって変化させてもよい。
上記のようにデコード用バッファを用いると、新たに格納する画像と、それまでにデコード用バッファに格納されていた画像の一部が重複することがあり得る。このような性質を利用して、本実施の形態では次に述べるような処理により、新たにデコードする領域を減らし、デコード処理の負荷を軽減する。
図22はバッファメモリ70のデコード用バッファにおいて、新たに格納すべき画像がそれまでに格納されていた画像と重複部分を有する場合の、デコード部112の機能ブロックを示している。デコード部112は、重複部分の領域を特定する重複領域取得部170、重複していない領域を新たにデコードして、それまでに格納されていた画像の一部を上書きする部分領域デコード部172、上書きした画像を繰り返して並べた画像を生成するリピート画像生成部174、および並べた画像の一部を抜き出し最終的なデコード画像としてデコード用バッファに格納するデコード画像格納部176を含む。
図23は、図22のデコード部112が画像をデコード用バッファに格納する手順を模式的に示している。上述のとおり、表示用バッファに格納された画像内で表示領域が先読み境界を超えるなどしたときに、デコード用バッファに新たな画像を格納する必要が生じる。この時点ですでにデコード用バッファに格納されている画像が、同図左上の画像160である。一方、新たに格納すべき画像は同図右上の画像162であるとする。すなわち同図は、表示領域が左に移動しており、元の「丸」や「三角」の図形から、その左にある「星」の図形を表示する見込みがある、という状況を示している。
上述の理由から、画像160と画像162は重複領域を有する。同図の例では、横方向(X軸)がx0からx2までの領域で構成される画像162のうち、x1からx2までの領域が画像160と重複している。このような場合、格納済みの画像160のうち、重複しているx1からx2までの領域は新たに格納すべき画像の一部としてそのまま利用する。
具体的には、部分領域デコード部172が、新たに格納すべき画像162のうち、画像160と重複していないx0からx1までの領域のみをデコードし、格納済みの画像160のうちもはや必要のないx2からx3までの領域を上書きする(S70)。ただし、例えば圧縮をタイル画像単位で行っている場合など圧縮単位の配置によっては、重複していないx0からx1までの領域のみをデコードすることができない場合がある。この場合は、当該領域を含み、デコードが可能な最小の領域をデコードしたあと、x0からx1までの領域のみを抽出してx2からx3までの領域を上書きする。
S70の処理を行うため、バッファメモリ70のバッファ領域72、74には、現在格納されている画像の左下の座標を格納する領域を設ける。そして重複領域取得部170は、新たに格納すべき領域の左下の座標と比較することにより、重複領域を特定する。なおデコード前に重複領域を特定する処理に所定値以上の負荷がかかる場合は、新たに格納すべき画像162を全てデコードしたうえで重複していない領域のみを上書きするようにしてもよい。
次にリピート画像生成部174が、そのようにしてできた中間画像164を横方向に繰り返したリピート画像166を仮に作成する(S72)。単位画像を縦方向、横方向に繰り返した画像は、画像処理において一般的に用いられる技術によって生成できる。そしてデコード画像格納部176が、リピート画像166において中間画像の境界の座標を0としたとき、−(x1−x0)からx2−x1までの領域を取り出し、デコード用バッファに新たに格納する(S74)。これにより、新たに格納すべき画像162がデコード用バッファに格納されたことになる。同図の例では横方向のみの移動に着目しているが、縦方向のみの移動や、縦方向、横方向の双方の移動でも同様に処理することにより重複領域以外の領域のみをデコードすればよくなる。ただし、縦方向、横方向の双方の移動の場合は、リピート画像166は縦横に2回ずつ中間画像164を繰り返した画像となる。
このようにすることで、必要最低限のデコードのみで先読みした領域をデコード用画像に格納することができるため、デコード処理による画像表示のレイテンシーを抑えることができる。なおデコード用バッファに格納する画像は、中間画像164としてもよい。この場合、表示画像処理部114が、ユーザからの指示入力に従いデコード用バッファから当該中間画像164を読み出して上述のS72、S74の処理を行い、新たに格納すべき画像162を表示処理部44のフレームメモリ90に描画する。
以上は、同一階層における表示領域の移動に対する先読み処理におけるデコード手法である。一方、表示されている中心地点を変えずに拡大したり縮小したりする要求がなされる可能性も高い。拡大方向、縮小方向のどちらか一方向への変更であれば、前述の先読み境界を超えた時点でデコード用画像に順次新たな画像を格納していくことになるが、2つの先読み境界を超えずにもとの縮尺率に戻す要求がなされた場合は、デコード用画像に新たに画像を格納する必要がなく、格納済みの画像をそのまま利用することができる。
そのため、バッファメモリ70のバッファ領域72、74には、現在格納されている画像の階層の番号を格納する領域をさらに設けてもよい。そして階層の深さ方向に設定された先読み境界を越えたとき、デコード用バッファに格納されるべき階層と格納済みの階層が同一であれば、デコード処理を行わずに格納済みの画像をそのままの状態としておく。これにより表示画像の拡大、縮小においてもデコード処理を最低限の回数とすることができ、処理の負荷、レイテンシーを軽減できる。
以上述べた本実施の形態によれば、圧縮された画像の少なくとも一部をユーザからの要求に応じて表示するための画像処理装置において、圧縮データを格納するハードディスクドライブからメインメモリへ、データの一部をロードする。メインメモリにロードしたデータをデコードして表示することにより、ユーザから表示画像変更要求がなされた際に、ハードディスクドライブから必要なデータを読み出すために要する時間が節約でき、応答性が向上する。また、データの一部のみをロードする態様とすることで、メインメモリの容量以上のサイズの画像であっても表示対象とすることができ、対応できる画像に対する制約が少なくなる。
さらに、画像データはおよそ同一のデータサイズでブロックに分割してハードディスクドライブに格納しておき、メインメモリへのロードはブロック単位で行う。これにより、メインメモリの連続した領域にロードしたブロックを順次格納しても、新たにブロックをロードする際にフラグメンテーションを起こすことがなくなり、メインメモリを有効に使用できるうえ、アドレス管理が容易になる。
また、画像データをブロックに分割する際は、各ブロックが有する情報に空間局所性を持たせる。具体的には、始点のタイル画像から横方向、縦方向に同様に拡張していくように、一ブロックに含まれるタイル画像を加えていき、所定のデータサイズに達する直前で一ブロックの領域を決定することにより、ブロックを正方形に近い形状とする。あるいは、あらかじめ設定した正方形や短冊状の区画の中で、ラスタ順にタイル画像を加えていくことにより、所定の幅を有する長方形に近い形状とする。このようにすることで、表示に必要なブロック数を抑えることができ、ロードの回数を減らせるとともに、デコードに必要なデータのメインメモリからの読み出しが容易に行える。同様の理由から、ブロック同士の境界がT字路になるように分割してもよい。
また、ブロックのメインメモリへのロードは、表示画像の変更時以外のタイミングでも、所定の時間間隔などで随時行う。この際、現在の表示画像を起点に、位置的および階層的に周辺領域となる地点を所定の規則により決定し、当該地点を含むブロックのうちロードされていないものを随時ロードしていく。さらに画像の内容上、重要な領域や、表示履歴に基づきユーザごとに予測できる表示確率が、所定のしきい値より高い領域は、優先してロードしておく。これにより、ユーザからの表示画像変更要求後に急遽、データをハードディスクドライブからロードしたり、ネットワークを介してダウンロードしなければならない事態が起こる可能性を低くできるとともに、一度に多数のブロックをロードする必要がなくなり、ロード処理によるレイテンシーの発生を抑制できる。
またブロック分割時に、異なる階層の画像の同一領域部分を一つのブロックに含ませるようにする。このとき、これらの画像が有する冗長性を利用し、一方の画像を復元するのに必要な情報のうち他方の画像が保持する情報については、ブロック内に2重に保持しないようにする。例えば低解像度の画像と、それを拡大して得られる拡大画像と高解像度の画像との差分画像を一つのブロックに含めて圧縮すれば、高解像度の画像は復元可能である。本実施の形態では上記のようにブロック単位でメインメモリへロードするため、このように画像同士の冗長性を利用できる。このようにすることでデータの圧縮率が上がり、メインメモリを有効に使用することができる。
さらに、デコードした画像を格納するバッファ領域として、表示用バッファとデコード用バッファの2つのバッファを用意することで、将来表示されると予測できる領域をあらかじめデコードしてデコード用バッファに格納しておく。この場合、新たな画像をデコード用バッファに格納すべきときは、それまで格納されていた画像と重複する領域をそのまま利用する。具体的には、格納済みの画像のうち重複しない領域を新しい画像の領域で上書きした中間画像を生成し、それを繰り返して構成されるリピート画像のうち必要な部分を抜き出すことにより、デコード処理を最小限に、容易に新たな画像を格納することができる。
また、バッファ領域を上記のような構成とすることにより、同一階層内での表示領域の移動は処理の負荷が少なくなるため、ユーザの表示画像変更要求に対する応答性を一定以上保持することが容易である。そのため、表示画像と異なる階層のデータを優先的にメインメモリへロードしておくことにより、バッファメモリとの組み合わせで、全体として応答性がよくなる。これらの形態は、装置の構成を複雑にしたり大規模にしたりすることなく実現できる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。