JP4109963B2 - 画像処理方法及び装置 - Google Patents
画像処理方法及び装置 Download PDFInfo
- Publication number
- JP4109963B2 JP4109963B2 JP2002316403A JP2002316403A JP4109963B2 JP 4109963 B2 JP4109963 B2 JP 4109963B2 JP 2002316403 A JP2002316403 A JP 2002316403A JP 2002316403 A JP2002316403 A JP 2002316403A JP 4109963 B2 JP4109963 B2 JP 4109963B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- cached
- image
- deletion
- amount
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storing Facsimile Image Data (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Description
【発明の属する技術分野】
本発明は、例えばサーバからの符号化データされた画像データをクライアントで断片的に受信してキャッシュして表示する技術に関するものである。
【0002】
【従来技術】
インターネット上でWWWサーバにWebブラウザからアクセスして、文書データや画像データ等を閲覧することが盛んに行われている。この仕組みは、インターネット上に情報を公開するWWWサーバと、その情報を閲覧する複数のクライアントがあり、各クライアントはWebブラウザを使用して、そのサーバの情報を閲覧するものである。このWWWサーバは、ホームページ(Home Page)といわれる公開したい情報をHTMLで記述した文書を有しており、それをクライアント側のWebブラウザが取り込んで、クライアントコンピュータに表示する。クライアント側のWebブラウザは、表示しているページ内のリンクを辿って行き、自分が必要な情報を得ることができる。
【0003】
更に、Webサーバが管理しているファイルをダウンロードする方法として、File Transfer Protocol (以下、FTPと略す)という方法がある。このFTPは、ネットワークを通して、サーバ上にあるファイルを1度にクライアントコンピュータに転送する仕組みである。
【0004】
また画像データファイルへ断片的にアクセスして表示するためのプロトコルとして、Flashpix/IIPがある。このIIPは、Flashpixという画像データファイルフォーマットに最適なプロトコルになっており、画像データの部分アクセスの単位はFlashpixのタイル単位に行うものである。
【0005】
一方、このIIPをそのままJPEG2000に適用した場合、JPEG2000の各スケーラビリティの符号化データは、そのスケーラビリティより1つ下のスケーラビリティのデータからの差分データであるため、クライアント側で受信した断片的な符号化データをキャッシュしておく必要がある。
【0006】
【発明が解決しようとする課題】
しかし、断片的な符号化データをクライアント側で全て保存すると、最終的にクライアントが最高解像度、最高SNRで画像全体をブラウズした場合に、サーバのJPEG2000ビットストリームの全データがクライアントにキャッシュされることになる。このことは、メモリ容量が小さい端末では、画像を閲覧している途中にメモリ容量をオーバーし、ユーザの要求に応じた表示が不可能になってしまうという問題がある。更に、JPEG2000は差分データであるので、メモリ容量が飽和し、新たに受信したデータが既にキャッシュされていたデータに上書きされるようなことが生じると、正確な画像表示(ユーザが望む表示)ができなることも起こり得る。
【0007】
本発明は上記従来例に鑑みてなされたもので、キャッシュしている符号化された画像データの内、再生画像に影響の少ないキャッシュデータを削除してキャッシュにおけるデータのオーバフローを防止しながらユーザの要求に応じた表示を行うことを目的とする。
【0008】
【課題を解決するための手段】
上記目的を達成するために本発明の画像処理方法は以下のような工程を備える。即ち、
JPEG2000で符号化された画像データをその部分的データである符号化単位ごとに入力し、前記画像データを記憶するためのスレッショルド値が決められたキャッシュメモリにキャッシュし、キャッシュされた画像データを用いて画像を表示する画像処理方法であって、
前記画像を構成する複数の矩形領域である複数のタイルの内、表示するタイル群を特定する表示タイル特定工程と、
前記スレッショルド値から既にキャッシュされている画像データのデータ量を引いた値よりも、新たに入力してキャッシュしようとする画像データのデータ量が大きいかどうかを判定する判定工程と、
前記判定工程で前記新たに入力してキャッシュしようとする画像データのデータ量が大きいと判定された場合に、当該新たに入力してキャッシュしようとする画像データをキャッシュするために前記キャッシュメモリにキャッシュされた画像データから削除すべきデータ量を、前記既にキャッシュされている画像データのデータ量と、前記新たに入力してキャッシュしようとする画像データのデータ量及び前記スレッショルド値とに基づいて決定する削除データ量決定工程と、
前記表示タイル特定工程で特定された前記表示タイル群から最も距離が遠いタイルの列又は行におけるタイルの削除順を決定し、前記削除データ量決定工程で決定された前記削除すべきデータ量になるまで、当該決定された削除順に従って resolution level 0 , layer 1 を除く前記キャッシュされたタイルの画像データを削除する削除工程とを有することを特徴とする。
上記目的を達成するために本発明の画像処理方法は以下のような手段を備える。即ち、
JPEG2000で符号化された画像データをその部分的データである符号化単位ごとに入力し、前記画像データを記憶するためのスレッショルド値が決められたキャッシュメモリにキャッシュし、キャッシュされた画像データを用いて画像を表示する画像処理装置であって、
前記画像を構成する複数の矩形領域である複数のタイルのうち、表示するタイル群を特定する表示タイル特定手段と、
前記スレッショルド値から既にキャッシュされている画像データのデータ量を引いた値よりも、新たに入力してキャッシュしようとする画像データのデータ量が大きいかどうかを判定する判定手段と、
前記判定手段により前記新たに入力してキャッシュしようとする画像データのデータ量が大きいと判定された場合に、当該新たに入力してキャッシュしようとする画像データをキャッシュするために前記キャッシュメモリにキャッシュされた画像データから削除すべきデータ量を、前記既にキャッシュされている画像データのデータ量と、前記新たに入力してキャッシュしようとする画像データのデータ量及び前記スレッショルド値とに基づいて決定する削除データ量決定手段と、
前記表示タイル特定手段により特定された前記表示タイル群から最も距離が遠いタイルの列又は行におけるタイルの削除順を決定し、前記削除データ量決定手段により決定された前記削除すべきデータ量になるまで、当該決定された削除順に従って resolution level 0 , layer 1 を除く前記キャッシュされたタイルの画像データを削除する削除手段とを有することを特徴とする。
【0009】
【発明の実施形態】
以下、添付図面を参照して本発明の好適な実施の形態を詳細に説明する。
【0010】
図1は、本実施の形態に係るクライアントやサーバの構成を説明するブロック図で、この装置は例えばパーソナルコンピュータやワークステーション等で構成されていてもよい。
【0011】
CPU101は、システム全体の動作を制御しており、一次記憶102に格納されたプログラムに基づいて各種制御動作を実行する。一次記憶102は主にメモリ(RAM)であり、二次記憶103に記憶されたプログラムなどを読み込んで格納する。二次記憶103は、例えばハードディスクなどがこれに該当する。一般に一次記憶102の容量は二次記憶103の容量よりも小さく、一次記憶102に格納しきれないプログラムやデータなどは二次記憶103に格納される。また、長時間記憶しなければならないデータなども二次記憶103に格納される。本実施の形態では、プログラムを二次記憶103に格納しておき、そのプログラム実行時に一次記憶102に読み込んで格納し、その一次記憶102に記憶されているプログラムに従ってCPU101が処理を行う。入力デバイス104は、例えば、マウスやキーボードなどがこれに該当し、入力デバイス104が操作されることにより、プログラムなどに割り込み信号を発生して、所望のデータの入力を行うのに使用される。出力デバイス105は、例えば、モニタやプリンタなどが考えられる。この装置の構成方法は他にも様々な形態が考えられるが、本発明の主眼ではないので、それらの説明を省略する。
【0012】
図2は、本実施の形態に係るネットワークの概略を説明する図である。
【0013】
図において、201,202はそれぞれユーザ(クライアント)を示しており、図1で説明した装置構成を有する。ユーザ201或いは202は、有線、無線を問わず、ネットワーク203を介してサーバ204と通信することが可能である。サーバ204は、図1の構成を有し、二次記憶103に相当する画像ファイルを蓄積する大容量の記憶装置(ハードディスク)205を備えている。大容量の記憶装置205は、例えばハードディスクなどがこれに該当する。このハードディスクには、JPEG2000符号化方式により符号化された画像データが数多く格納されている。ユーザ201,202は、サーバ204が格納しているJPEG2000画像データから、断片化されたデータを受信して保存する。
【0014】
本実施の形態では、既に生成済みのJPEG2000ファイルのデータを断片的に受信し、それらをキャッシュしたクライアントが、それらキャッシュデータを削除する方法について説明する。
【0015】
各ユーザは、Windows(登録商標)マシンを使用してホームページを開いて、そこに書かれているJPEG2000の画像へのリンクをクリック(指示)することで、JPEG2000の画像をユーザの用途に適した画像サイズや解像度で表示するために必要な断片的なデータを取得し、それらのデータをキャッシュする。そして、ユーザのキャッシュ容量の制限値を越えると、キャッシュマネージャのような働きを持つプログラムが動き、ユーザのキャッシュデータを削除する場合を想定する。
【0016】
図3は、一般的なJPEG2000の符号化データを説明する図で、Layer-resolution level-component-position progression(以下、LRCPと記す)に沿って記録されたJPEG2000ファイルの構成を示している。このLRCPに準じた場合、layer / resolution / component / positionの順に記録される。このようなデータの並び方はprogression orderと呼ばれる。
【0017】
図4は、JPEG2000の符号化データにおける解像度(画像サイズ)とResolution番号との関係を示す図である。
【0018】
最も小さい解像度の画像のresolution番号を「0」とし、resolution番号が一つ増加するごとに画像の幅と高さが2倍になっていく。また、各layer内は、resolution番号の小さい順にデータが格納されている。Layer番号は復元する画像の原画に対するS/N比に対応し、layer番号が小さいほどS/N比が悪くなる。一つのJPEG2000ファイル内でのresolution番号とlayer番号、component番号の最大値は、エンコーダによって予め設定され、そのパラメータに従ってエンコードされており、その情報は符号化データの中に格納されている。各パケット(パケット)は、そのパケット内に格納されているコードブロック(code-block)の情報を管理しているパケットヘッダ部と、各code-blockの符号化データを含んでいる。
【0019】
このようなJPEG2000符号化データを使えば、各ユーザは、サーバ204にある全ての画像データを取得しなくても、必要な部分のデータのみをサーバ204から受信することが可能である。ユーザの受信データの単位としては、JPEG2000のパケット、或いはパケットよりも更に小さい符号化単位であるcode-block単位が考えられる。本実施の形態では、ユーザがサーバ204から受信するデータ単位としてパケット単位を想定する。
【0020】
図5は、パケット単位のリクエストおよびレスポンスの概念図を示す図である。
【0021】
ユーザ201は、サーバ204に画像のタイル番号とresolution levelとlayer,component,position番号を指定して、データを要求する。これによりサーバ204は、画像503のコードストリームを解析して、その指定されたタイル番号、resolution levelとlayer,component,position番号に相当するパケットデータを抜き出してユーザ201に送り返す。
【0022】
本実施の形態では、サーバ204にあるオリジナル画像は、最大解像度サイズ2048×2048[画素]、8×8からなる64枚のタイル(Tiles)に分割されており、component数が「3」で、resolution level 0 〜 3,即ち、4つの画像サイズ方向の階層を持っており、2つのlayerに分けられていると仮定する。
【0023】
図6は、オリジナル画像の各階層のデータ構造を説明する図である。
【0024】
図6に示すように、オリジナル画像を構成するそれぞれのタイルには、左上のタイルからシーケンスな番号が振ってある。従って、サーバ204には、図7の701で示すようなデータが保存されている。
【0025】
図7は、サーバ204で管理されているJPEG2000符号化データの構成を説明する図で、703はメインヘッダ、702はタイル0の符号化データを示している。
【0026】
[タイル単位でのデータの削除]
クライアント(ユーザ)201では、サーバ204から送られてきた断片的なJPEG2000ビットストリームをキャッシュする。そしてユーザ201では、データのキャッシュに利用できるメモリ容量を予め把握しておき、サーバ204から送られてきた断片的なJPEG2000ビットストリームのキャッシュデータが、キャッシュメモリ容量を溢れる前にビットストリームを消去する。
【0027】
図8は、本実施の形態に係るユーザ(クライアント)におけるキャッシュ制御処理を示すフローチャートである。
【0028】
まずステップS1で、今回サーバから送られてくる画像データが、画像のどの部分領域に相当するのかを把握し、その表示される画像領域を注目領域Fとして特定する。例えば、図6に示すような画像において、今回のデータの受信が、resolution 3の太枠で示す領域601を表示するためのものである場合、タイル33〜35,41〜43,49〜51の9枚のタイルが注目領域Fとして特定される。
【0029】
次にステップS2に進み、ユーザ201のキャッシュメモリの容量を取得し、キャッシュデータの削除が必要か否かを判断するスレッショルド値を決める。ここでは、受信したJPEG2000のパケットデータをキャッシュするために、利用可能なメモリ容量の100%を充てるのであれば、このスレッショルド値はメモリ容量と等しくなる。しかし、JPEG2000の断片的に受信したビットストリーム以外のデータ(例えば、画像のメタ情報など)も、同じメモリ容量の中に保存する場合には、利用可能なメモリ容量の一部がJPEG2000符号データのキャッシュに利用される。或いは、同じシステムで複数のJPEG2000符号データをキャッシュする場合には、ある画像に利用できるメモリ容量のスレッショルド値は、使用可能なメモリ容量よりも小さな値に設定される。例えば、メモリ容量が3M[バイト]に対して、この画像のキャッシュのスレッショルド値として2M[バイト]の値が設定される。このスレッショルド値を決める場合、ハードディスクなどの2次記憶媒体でも良いが、本実施の形態では、説明を簡単にするために、メモリサイズを基準としてスレッショルド値を決めるものとする。次にステップS3に進み、これらから受信する断片化されたJPEG2000符号データのバイト数を取得する。
【0030】
次にステップS4に進み、ステップS3で取得したバイト数分の受信データをキャッシュするとステップS2で決定されたスレッショルド値を越えてしまうか判断する。つまり、スレッショルドの値から現在キャッシュされているデータ量を引いた値よりも、ステップS3で得られた値が大きければスレッショルド値を越えると判断し、ステップS3で得られた値が小さければスレッショルド値を越えないと判断する。こうしてスレッショルド値を越える判断した場合はステップS5へ進み、越えないと判断した場合ステップS6へ進む。例えば、ステップS2で決定されたスレッショルド値が2M[バイト]、既にキャッシュされているJPEG2000のパケットデータ量が1.95M[バイト]の場合、ステップS3で取得した受信データのバイト数が120K[バイト]であれば、受信データをそのままキャッシュするとスレッショルド値を越えてしまうと判断し、ステップS5へ進むことになる。
【0031】
ステップS5では、ステップS3で取得したバイト数をキャッシュしても、キャッシュ容量がスレッショルド値以下になるように、キャッシュデータの中からタイル(Tile)単位で符号化データを削除する。例えば、ステップS3で取得したバイト数が120K[バイト],ステップS2で決定されたスレッショルド値が2M[バイト]の場合、ステップS5では、2M−120K=1.88M[バイト]以下になるまで、キャッシュデータの削除が行われる。そしてステップS6に進み、受信したデータをキャッシュする。次にステップS7で、この画像に対する要求が終了したか判断する。要求が終了していなければ、ステップS3へ戻り、要求が終了すればこのキャッシュ制御処理を終了する。
【0032】
次に、図8のステップS5のキャッシュデータの削除処理を図9のフローチャートを参照して説明する。図9は、このステップS5の処理を示すフローチャートである。
【0033】
まずステップS11で、キャッシュメモリから削除すべきデータ量Yを取得し、このキャッシュデータの削除処理で削除されたデータ量を計算する変数Delに初期値として「0」を代入する。本実施の形態では、ユーザが既に、画像全体をresolution level 1の最大SNRで表示しており、現在、図6の領域602を最大SNRで、即ち、タイル16〜21,56〜61で囲まれる36枚のタイルの領域をresolution level 2,最大SNRで表示していたとする。このとき、キャッシュメモリには、図7に示す、画像のヘッダ部分のデータ701、全タイルのresolution level 0,resolution level 1を構成するパケットデータ704,705と、領域602の36枚のタイルのresolution level 2を構成するパケットデータ706,708が格納されている。つまり、領域602の36枚のタイルに関しては、図10(B)の1002で示すように、各タイルのヘッダデータ707、各タイルのresolution level 0を構成するパケット群704、および各タイルのresolution level 1を構成するパケット群705と、resolution level 2を構成するパケット群706が、ユーザ201のキャッシュメモリに保存されている。そしてそれ以外のタイルに対しては、図10(A)の1001で示すように、図10(B)の1002で示すキャッシュデータからresolution level 2を構成するパケット群706を除いたのパケットデータがキャッシュされている。これらのデータを合わせたサイズが、1.95M[バイト]、スレッショルド値が2M[バイト]、受信したデータ量が120K[バイト]であった場合、削除すべきデータ量YはY=1.95+0.12−2.0=0.07M[バイト]=70K[バイト]として取得できる。つまり、70K[バイト]以上のデータを削除する必要がある。
【0034】
次にステップS12に進み、図8のステップS1で特定した注目領域Fを取得する。例えば、現在、図6の領域602で示される領域をresolution level 2で表示していたユーザが、タイル42を中心として拡大表示を要求し、領域601をresolution level 3で表示することを望んだ場合、注目領域Fとしてタイル33〜35,41〜43,49〜51の9枚のタイルが取得される。
【0035】
次にステップS13に進み、ステップS12で取得した注目領域Fから遠いタイル群を含む領域をデータ削除領域Rとして取得する。例えば、図6のタイル0〜7で構成される、破線で囲まれた領域603がデータ削除領域Rとして取得される。
【0036】
次にステップS14に進み、ステップS13で取得したデータ削除領域Rに含まれるタイルに対して、データを削除するタイルの順番を決定する。例えば、図6の領域603内部のタイルの場合、データ削除の順番として、右方向のタイルから順に番号を振る。つまりデータ削除順番が一番目のタイルT_del(1)がタイル7、データ削除順番が8番目のタイルT_del(8)がタイル0となる。
【0037】
次にステップS15に進み、データ削除順番をカウントする変数Xに初期値として「1」を代入する。次にステップS16に進み、削除順番がXであるタイルT_del(X)のキャッシュデータの中から、タイルヘッダ部分701とresolution level 0,layer 1のパケットデータを除いた、全てのキャッシュデータを削除する。例えば、X=1でT_del(1)がタイル7であれば、タイル7のキャッシュデータは、図10(A)の1001で示すデータであるので、resolution 1を構成するパケット群705と、resolution 0,layer 2を構成するパケット群1003を削除する。
【0038】
次にステップS17に進み、この削除処理で削除されたデータ量を累積する変数Delに、上述のステップS16で削除したデータ量を加算する。次にステップS18に進み、この削除処理で削除されたデータ量Delと、この削除処理で削除すべきデータ量Yとを比較し、実際に削除したデータ量Delが削除すべきデータ量Yを越えたかどうかを判定し、越えていればこの処理を終了する。一方、まだ越えていない場合にはステップS19に進み、最後にデータを削除したタイルの削除番号Xがデータ削除領域Rに含まれるタイル数Nより小さいかを判断する。タイル数Nよりも削除番号Xが小さければステップS20へ進み、そうでなければ、削除領域Rに含まれる全てのタイルのキャッシュデータを削除したものとみなして、新たな削除領域Rを取得するためにステップS13へ進む。ステップS20では、削除番号Xを一つインクリメントして次の削除番号とする。
【0039】
例えば、削除すべきデータ量Yが70K[バイト]、削除番号1のタイルT_del(1)で削除したデータサイズが50K[バイト]である場合、ステップS17において削除したデータ量Delの値が50K[バイト]になるため、ステップS18では、Y(=70K)>Del(=50K)となりステップS19へ進む。ステップS19では、X(=1)<N(=8)であるのでステップS20に進み、削除番号Xが+1されて「2」に変更され、次にステップS16に進み、T_del(2)であるタイル6のデータが削除されることとなる。
【0040】
[実施の形態1]
次に、図9のステップS13においてデータ削除領域Rを取得する処理について図11のフローチャートを参照して説明する。図11は、本発明の実施の形態1に係るステップS13の削除領域Rを取得する処理を示すフローチャートである。
【0041】
まずステップS31で、図8のステップS1で特定された注目領域Fの中心点を含むタイルT_cenを特定する。図6の領域601で示される注目領域Fに対して、タイル42が、このタイルT_cenとなる。画像の左上のタイルを0行、0列のタイルと定義し、この中心のタイルT_cenをCy行、Cx列で表す場合、タイル42の位置は、Cx=2,Cy=5で表される。次にステップS32に進み、ステップS31で特定された中心タイルT_cenから、キャッシュデータの存在する上下左右の端に位置するタイルまでのタイル数を計算する。つまり、画像の端に位置する行或いは列が、このキャッシュ制御処理で削除領域Rとして既に選ばれ、削除できるキャッシュデータが存在しない場合には、その行或いは列を除いて、タイル数を計算する。
【0042】
これを図12を参照して説明する。
【0043】
図12において、タイル42から上下左右の端までのタイル数をそれぞれN_up,N_down,N_left,N_rightとすると、まだ、一度も削除領域Rの選択がなされていない場合には、
N_up=Cy, N_down=画像の最大行番号−Cy
N_left=Cx,N_right=画像の最大列番号−Cx
として計算する。もし、画像の0行からX行が既にデータ削除領域Rとして選択されており、削除すべきデータがない場合には、N_upからXを引いて調整する。同様に、画像の最も下の位置にある行が削除されている場合にはN_downを、画像の左端及び右端の数列が削除されている場合には、それぞれN_left,N_rightから、既にデータ削除を行った列数を引いて調整する。従って、まだ一度も削除領域Rの指定が行われていない場合、注目領域601に対しては、N_up=5,N_down=2,N_left=2,N_right=5となる。
【0044】
次にステップS33に進み、N_maxとして、ステップS33で得られた4つの値、N_up,N_down,N_right,N_leftの中から最も大きい値を持つ変数を取得する。ここでは、注目領域601に対してN_upとN_rightが共に「5」であり最大値となっている。
【0045】
次にステップS34に進み、ステップS33で得られた最大値を持つ変数(N_up,N_right)から中心タイルT_cenから画像端までのタイル数が最も多い方向を決定する。いま最大値を持つ変数としてN_upが選ばれた場合は、この方向は、画像の上方向、即ち、行番号の小さくなる方向になる。またN_rightが選ばれた場合は、この方向は、画像の右方向、即ち列番号が大きくなる方向になる。それ以外に、例えば例として、N_downが選ばれた場合には、画像の下方向、即ち行番号の大きくなる方向になり、N_leftが選ばれた場合は、画像の左方向、即ち列番号が小さくなる方向になる。但し、上述のように、N_maxに該当する変数が2つある場合、次のような3つの条件を設ける。
【0046】
1.N_up,N_downは、N_right,N_leftに優先する。
【0047】
2.N_upは、N_downに優先する。
【0048】
3.N_leftは、N_rightに優先する。
【0049】
即ち、水平方向の値よりも垂直方向の値が優先し、列、行共に番号が小さくなる方向が優先する。従って、上述の注目領域601では、N_maxとしてN_upとN_rightが該当していたが、垂直方向のN_upが優先的に選ばれる。
【0050】
次にステップS35に進み、ステップS34で選ばれた方向を基に、キャッシュデータを削除する行又は列をデータ削除領域Rとして決定する。但し、ここではステップS34で、上述のようにして、N_upが選ばれた場合には、図12に示す領域1201で示される行が削除領域Rとして決定される。またN_downが選ばれた場合には、領域1202で示される行が削除領域Rとして決定される。更に、N_leftが選ばれた場合には、領域1203が削除領域Rとして決定され、N_rightが選ばれた場合は、領域1204が削除領域Rとして決定される。
【0051】
従って、このステップS35では、ステップS34でN_upが選ばれているので、注目領域601に対して、領域1201に該当する一番上の行が削除領域Rとして決定されることになる。
【0052】
こうして図9のステップS14に進み、データ削除領域Rの中でデータを削除する順番として、基本的に、注目領域Fからなるべく離れたタイルからデータを削除するように番号が付される。
【0053】
図13は、キャッシュデータを削除する順番を決定する方法(ステップS14:図9)を説明するフローチャートである。
【0054】
まずステップS41で、図11のステップS33において、N_maxに該当する値として、N_up,N_down,N_right,N_leftの中のどの値が選ばれたのかをみる。もしN_maxとして、N_up又はN_downのいずれかが選ばれた場合には、ステップS42へ進み、N_right又はN_leftのいずれかが選ばれた場合にはステップS45へ進む。つまり、削除領域Rとして、行方向のタイル群が選ばれた場合にはステップS42へ進み、列方向のタイル群が選ばれた場合にはステップS45へ進むことになる。本実施の形態1では、N_maxとしてN_upが選ばれているのでステップS42へ進む。
【0055】
ステップS42では、N_rightとN_leftの値を比較し、どちらの値が大きいのか判断する。N_rightの値が大きければステップS43へ、N_leftの値が大きければステップS44へ進む。つまり、右側のタイルの数が多ければステップS43へ、左側のタイル数が多ければステップS44へ進む。ステップS43に進んだ場合は、削除領域Rとして、横方向に並ぶタイルの行が選ばれており、かつ、注目領域Fが左側に寄っているため、削除領域Rの右端のタイルから左方向へ順にデータ削除番号を振る。一方、ステップS44に進んだ場合は、削除領域Rとして、横方向に並ぶタイルの行が選ばれており、かつ、注目領域が右側に寄っているため、削除領域Rの左端のタイルから右方向へ順にデータ削除番号を振る。
【0056】
本実施の形態1では、N_left=2,N_right=5であるので、ステップS42からステップS43に進み、削除領域Rである図12の領域1201において、タイル7から順に左方向へデータ削除の順番が振られることになる。つまり、タイル7が削除データ番号「1」、タイル6が削除データ番号「2」、以下同様に番号を振り、タイル0が削除データ番号「8」となる。
【0057】
またステップS41からステップS45に進んだ場合は、N_downとN_upの値を比較し、どちらの値が大きいのか判断する。N_downの方が大きい場合はステップS46へ、N_upの方が大きい場合にはステップS47へ進む。つまり、注目領域Fより下にあるタイルの行数が多ければステップS46へ、注目領域Fより上側にあるタイルの行数が大きければステップS47へ進む。ステップS46に進んだ場合は、削除領域Rとして縦方向に並ぶタイルの列が選ばれており、かつ、注目領域Fが上側に寄っているため、削除領域Rの下端のタイルから上方向へ順にデータ削除番号を振る。一方、ステップS47に進んだ場合は、削除領域Rとして縦方向に並ぶタイルの列が選ばれており、かつ、注目領域Fが下側に寄っているため、削除領域Rの上端のタイルから下方向へ順にデータ削除番号を振る。
【0058】
従って、本実施の形態1の場合、削除領域Rは、タイル0〜7が含まれている行であり、削除順番「1」がタイル7、削除順番「2」がタイル6、以下順に左方向に順に削除順番が付され、削除番号「8」がタイル0となっている。
【0059】
図14(A)(B)は、この削除領域Rのタイルデータがキャッシュされている状態を説明する図である。この図14(A)の1402で示すように各タイルがresolution level 2,layer 2までのデータでキャッシュされているとすると、120K[バイト]のデータを削除するためには、図14に示すタイル7,6,5のキャッシュデータの中で、1402で示す合計165K[バイト]のデータを削除することになる。従って、削除後のキャッシュデータは、図16(A)の1601に示すような状態になる。
【0060】
このようなデータ削除方法を取ることにより、現在の表示に重要な注目領域に相当する部分領域のタイルのデータは保持され、現在の表示に対して、比較的重要度の低いと考えられる、注目領域から遠いタイルからキャッシュデータが削除される。
【0061】
また、タイル毎に一番データ量の少ないresolution level 0,layer 1のデータ以外のパケットデータを削除するため、キャッシュメモリに大容量の空エリアを設けることが可能になり、削除データの計算による負荷が軽減される。
【0062】
また、各タイルのresolution level 0,layer 1のデータを削除せずに保持しておくことで、全くデータがキャッシュされていないタイルがなくなる。これにより、より高解像度の画像表示が要求されても、保持しているデータからデコードされた画像を一時的に拡大して表示することで、その画像表示の要求後、その領域の画像データを受信するまで、全く画像が表示されない事態が発生するのを防止できる。またいつでも、画像全体を把握できる画像を直ちに表示できるという効果もある。
【0063】
上述したキャッシュデータを削除の順番は、上記実施の形態で示したものに固定するものではなく、それ以外の順をつけても良いことは容易に推察できる。
【0064】
また、本実施の形態1では説明を簡単にするために、タイル単位で削除領域を特定したが、本発明はこれに限定されるものでなく、例えば、Precinctやcode-block単位としてもよい。Precinctの場合は、データの削除単位はタイルと同様にパケットとなり、code-blockの場合には、そのコードブロックのデータを構成するサブバンドからなる符号データが単位となる。
【0065】
[実施の形態2]
[特定したタイルのパケット単位でのデータ削除]
前述の実施の形態1では、注目領域から遠いタイルで構成される行又は列を削除領域Rとして指定し、その中のタイルに対して、削除順番を割り当て、その削除領域Rのタイルを、その削除順番に従って一枚ずつ、resolution level 0,layer 1のデータを除いた全てのパケットデータを削除した。
【0066】
しかし、削除対象として特定されたタイルのキャッシュデータに含まれるresolution level 0,layer 1を除く全てのパケットを単位としてではなく、領域内に含まれる全てのタイルに対して全体的なSNRや解像度を低くし、キャッシュデータ量を削減する方法も考えられる。この場合、前述の実施の形態1と異なるのは、図9のデータ削除処理におけるステップS16以下である。
【0067】
図15は、この実施の形態2に係る削除処理を説明するフローチャートで、前述の図9と同じ動作をするステップには図9と同じ番号を付して、その説明を省略する。
【0068】
また本実施の形態2では、ユーザが既に画像全体を、resolution level 2の最大SNRのデータとして既にキャッシュしているものとする。従って、キャッシュメモリには、画像のヘッダ部分のデータ701と全タイルに対して、図10(B)の1002で示すように、各タイルのヘッダデータ707、各タイルのresolution level 0を構成するパケット群704、及び各タイルのresolution level 1を構成するパケット群705(図10(A))と、resolution level 2を構成するパケット群706が、ユーザ201のキャッシュメモリに保存されている。また、図6の領域602をresolution level 2で表示していたユーザが、タイル42を中心として拡大表示を要求し、領域601をresolution level 3で表示することを望み、注目領域Fとしてタイル33〜35,41〜43,49〜51の9枚のタイルが取得されているものとする。ステップS11からステップS14は、実施の形態1の図9と同様である。
【0069】
つまり、ステップS11では、キャッシュから削除すべきデータ量Yを取得し、今回のデータ削除処理で削除されるデータ量を累積する変数Delに「0」を代入する。ステップS12では、ステップS1で特定した注目領域Fを取得する。ステップS13では、ステップS12で取得した注目領域Fから遠いタイル群を含む領域をデータ削除領域Rとして取得する。本実施の形態2の場合、図6の領域603が削除領域Rとして取得される。そしてステップS14では、ステップS13で取得したデータ削除領域Rに含まれるタイルに対して、データの削除を行う順番を決定する。本実施の形態2の場合、削除順番「1」がタイル7、削除順番「2」がタイル6、以下、タイル5、タイル4…の順に削除順番が振られ、削除順番「8」がタイル0となっている。
【0070】
ステップS51では、データ削除領域Rの中で、キャッシュされている解像度が最も高いタイル群TRを特定する。本実施の形態2では、領域603で示される削除領域Rに含まれるタイルは全て同じresolution level 2までキャッシュされているので、タイル群TRと削除領域Rとは一致している。次にステップS52に進み、ステップS51で特定されたタイル群TRの中でデータの削除順番が小さいタイルTR_delを特定する。
【0071】
本実施の形態2では、削除領域Rとタイル群TRとが等しいので、データ削除順番の一番小さいタイル7がTR_delとして特定される。次にステップS53に進み、タイルTR_delの最高解像度のデータを削除する。ここでTR_delであるタイル7において、キャッシュされている最高解像度のデータはresolution level 2の706(図7)であるので、このデータ706がキャッシュから削除される。従って、タイル7のキャッシュデータは、図10(B)の1002の状態から図10(A)の1001で示す状態になる。
【0072】
次にステップS17に進み、この削除処理で削除されたデータ量を累積する変数Delに、ステップS53で削除したデータ量を加算する。次にステップS18に進み、削除されたデータ量Delと、削除すべきデータ量Yとを比較し、実際に削除したデータ量Delが削除すべき量Yを越えたかどうかを調べ、越えた時はこの処理を終了する。
【0073】
一方、まだ越えていない場合はステップS54に進み、ステップS51で特定されたタイル群TRから、ステップS53で最高解像度のキャッシュデータを削除したタイルTR_delを外す。つまり、タイル7はタイル群TRから外され、このタイル群TRには、タイル0からタイル6までの7枚のタイルが残ることになる。次にステップS55に進み、タイル群TRが空集合になったかどうかを判断する。まだ、タイル群TRに含まれるタイルが残っている場合はステップS52へ戻り、次のTR_delを特定して、前述した処理を実行する。
【0074】
一方、タイル群TRに含まれるタイルが一枚も無くなるステップS56に進み、削除領域Rに含まれる全てのタイルのキャッシュデータとして、resolution level 0,layer 1のみになっているかどうかを判断する。ここで全てのタイルのキャッシュデータがresolution level 0,layer 1である場合は、もはや、この削除領域Rの中に削除できるキャッシュデータがないと判断してステップS13へ戻り、次のデータ削除領域Rを取得する。一方、ステップS56で、削除領域Rの中のキャッシュデータがresolution level 0,layer 1のみではない場合はまだ削除できるキャッシュデータがあると判断してステップS51に戻り、前述した処理を実行する。
【0075】
上述の実施の形態2によれば、削除領域Rがタイル0〜7が含まれている行であり、削除順番「1」がタイル7、削除順番「2」がタイル6、以下順に左方向に順に削除順番「8」がタイル0となっている。そして、図14(A)の1402で示すように、各タイルがresolution level 2,layer 2までのデータをキャッシュしていたとすると、120K[バイト]のデータを削除するためには、タイル7,6,5,4のキャッシュデータのうち、resolution level 2のデータを削除する。即ち、30K[バイト]×4タイル=120K[バイト]のデータが削除され、キャッシュデータは、図16(B)の1602で示すような状態になる。
【0076】
従って、この実施の形態2によれば、削除領域Rに含まれる全てのタイルから解像度方向に少しずつデータを削除するため、削除領域Rに含まれる領域を閲覧しても、その領域に含まれる各タイルの符号化データがより多く残っている可能性が高くなり、新たに要求された画像に対応して要求されるパケットデータの数を減らすことも可能になる。
【0077】
また本実施の形態2では、削除領域Rのデータを解像度方向に削除する場合で説明したが、SNR方向に削除する方法でも本質的には同様に実現できる。その場合、ステップS51で特定されるタイル群TRは最もSNRが高い、即ち、キャッシュされているlayerが多いタイルの集合である。また、ステップS53では、タイルTR_delの中で最高SNRのデータが削除される。例えば、図10(B)の1002で示すようなキャッシュデータがある場合、タイルの中で最も高いSNRのデータが削除されるので、layer 2を構成するパケットデータ1006,1005,1004(図10(B))が消去されることになる。
【0078】
またresolution level のデータを削除する場合の削除データ量と、SNRのデータを削除する場合の削除データ量を比較し、削除データ量が大きい方を削除する場合も本質的には同様に実現できる。例えば、図10(B)の1002で示される18個のパケットが保存されている時、resolution level方向で削除する場合には、図7の706で示される6個のパケットを削除することになり、layer方向で削除する場合には、1004,1005,1006で示される9個のパケットを削除することになる。そこで、図7の706で示す6個のパケットのデータ量と、1004,1005,1006の9個のパケットのデータ量とを比較し、データ量が大きい方を削除することとなる。
【0079】
また、本実施の形態2では、説明を簡単にするために、タイル単位で削除領域を特定したが、本発明はこれに限定されるものでなく、例えばPrecinctやcode-blockの単位でも、同様の考え方に基づいたキャッシュデータの削除を行うことができる。例えば、Precinctを単位とした場合は、データの削除単位はタイルと同様にパケットとなり、code-blockの場合には、そのコードブロックのデータを構成するサブバンドからなる符号データが単位となる。
【0080】
[実施の形態3]
[表示に利用された最後の時間が最も古いタイルのデータから削除]
前述の実施の形態1,2では、純粋に、注目領域Fからの距離だけで、キャッシュデータを削除するタイルを選択していた。しかし、最後に表示に利用された時刻をタイル毎に保存しておき、最もアクセスされた時間が古いタイルを削除データ領域として定める様にしてもよい。このように表示された時刻によって削除するためには、タイル毎にその表示に使用された時刻を管理する時間管理テーブルが必要となる。
【0081】
図17は、本発明の実施の形態3に係る管理テーブルの作成処理を説明するフローチャートである。
【0082】
ステップS61で、サーバ204に対して閲覧したいJPEG2000画像のメインヘッダ(main header)701を要求し、それに応答してサーバ204から送られるメインヘッダを受信する。次にステップS62に進み、その受信したメインヘッダを解析し、閲覧したいJPEG2000画像を構成しているタイル数を計算する。これはメインヘッダ701のSIZマーカに記されている最高解像度の画像サイズを表すパラメータXsiz(1801),Ysiz(1802)及び最高解像度時のタイルサイズを表すパラメータXTsiz(1803),YTsiz(1804)により計算できる。
【0083】
本実施の形態3では、図6に示すように、2048×2048[画素]のオリジナル画像を256×256[画素]のタイルで分割しているので、横方向に(2048÷256=)8タイル、縦方向にも同様に(2048÷256=)8タイルが配列されているので、合計(8×8=)64枚のタイルと計算される。
【0084】
次にステップS63に進み、ステップS62で計算されたタイル数を基に、各タイルのアクセス管理テーブルを作成する。例えば、図19(A)の1901で示すようなアクセス管理テーブルが作成される。初期状態では、まだ画像の表示にどのタイルも利用されていないので、全てのタイルの「Last Access Time(最新アクセス時刻)」には、初期値、例えばNULLが入っている。
【0085】
次にステップS64に進み、ユーザの表示要求に応じて、パケットデータを要求する。例えば、全てのタイルに対して、resolution level 1,layer 2までのデータを要求する。次にステップS65に進み、ステップS64で要求されたタイルに関して、アクセス管理テーブルを更新する。例えば、全てのタイルに対して、resolution level 1,layer 1のデータを要求した場合、図19(B)の1902で示すように、全てのタイルに対して、テーブルの「Last Access Time」の項目が、そのアクセス要求がなされた時刻「10:22:34」に更新される。
【0086】
次にステップS66に進み、ステップS64で要求されたパケットデータに関して、サーバ204に要求を発行する必要があるかどうかを判断する。既に、キャッシュ済みのパケットデータでステップS64の要求に応えることができ、サーバ204にデータの要求を発行しないならステップS69へ進む。
【0087】
キャッシュされたデータだけではステップS64の要求に応えることができない場合はステップS67へ進む。例えば、最初の画像表示の段階では、まだ、どのタイルのパケットデータも受信されていないので、サーバ204にデータを要求する必要があるためステップS67へ進むことになる。このステップS67では、サーバ204にパケットデータを要求し、それに応答して送られてくるパケットデータを受信する。次にステップS68に進み、ステップS67で受信したデータをキャッシュする。次にステップS69に進み、そのキャッシュデータから作成されるJPEG2000ビットストリームをデコードして表示する。次にステップS70に進み、この画像に対する要求が終わったかどうかを判断し、要求がまだ続くならステップS64へ戻り、この画像への要求が終了したなら、この処理フローを終了する。
【0088】
図20は、図17のステップS68のキャッシュ制御処理を示すフローチャートである。このフローチャートにおいて、前述の実施の形態1の図8のフローチャートと異なるのは、アクセス管理テーブルの値を基に、削除するべきタイルを特定する点である。従って、図20のステップで図8と同様の動作をするものには図8と同じ番号を付している。
【0089】
まずステップS2は、ユーザ201のメモリ容量を取得し、キャッシュデータの削除が必要か否かを判断するスレッショルド値を決める。次にステップS3で、受信する断片化されたJPEG2000符号データのバイト数を取得する。次にステップS4に進み、ステップS3で取得した受信データのバイト数をキャッシュすると、ステップS2で決定されたスレッショルド値を越えてしまうか判断する。つまり、スレッショルドの値から現在キャッシュされているデータ量を引いた値よりも、ステップS3で得られた値が大きければ、スレッショルド値を越えると判断し、ステップS3で得られた値が小さければ、スレッショルド値を越えないと判断する。スレッショルド値を越える判断した場合はステップS71に進み、越えないと判断した場合ステップS6へ進む。
【0090】
ステップS71では、削除すべきデータ量Yを算出し、更に、実際に削除したデータ量を累積する変数Delに「0」を代入して初期化する。次にステップS72に進み、図19(C)に示すようなアクセス管理テーブルを参照し、それぞれのタイルについて、最後に利用された時刻を比較し、利用された時刻が現在の時刻から最も遠いもの、つまりアクセス時刻が最も古いタイル群Xを特定する。例えば、画像全体をresolution level 1で表示した後、図6の領域602をresolution level 2に拡大表示した場合、図19(C)の1903で示すように、アクセス管理テーブルにおけるタイル16〜21、タイル24〜29、タイル32〜37、タイル40〜45、タイル48〜53および、タイル56〜61の36枚のタイルに関しては、最後にアクセスされた時刻が更新される。そのため、残りの28枚のタイルはアクセス時刻が古いタイル群Xとして特定されることになる。
【0091】
次にステップS73に進み、ステップS72で特定されたタイル群Xの中から最もタイル番号の若いタイルAを特定し、そのタイルをキャッシュデータを削除する対象のタイル候補とする。例えば、図6の領域602を除く領域がタイル群Xとして特定されている場合には、その中でも最もタイル番号が若いタイル0がタイルAとして特定される。
【0092】
次にステップS5に進み、前述の実施の形態1と同様に、ステップS3で取得したバイト数をキャッシュしても、キャッシュ容量がスレッショルド値以下になるように、タイルAのキャッシュデータの中からresolution level 0,layer 1を形成するパケットを除いた全てのキャッシュデータを削除する。次にステップS74に進み、ステップS5で削除したデータ量を、実際に削除したデータ量を累積している変数Delに加算する。次にステップS75に進み、削除すべきデータ量Yと削除したデータ量Delとを比較し、削除すべきデータ量Yより削除したデータ量Delの方が大きければステップS6へ進んで、次に受信するデータをキャッシュする。
【0093】
一方、ステップS75で、削除したデータ量Delの方が小さければステップS76へ進み、ステップS5でキャッシュデータを削除したタイルAをタイル群Xから外し、次にステップS73に戻って、タイルAを特定し直す。
【0094】
尚、本実施の形態3では、アクセス管理テーブルとして、図19(A)乃至(C)に示すようなテーブルを用いたが、このテーブルに限るものではない。
【0095】
また、本実施の形態3では説明を簡単にするために、タイル単位で削除領域を特定したが、本発明はこれに限定されるものでなく、例えば、Precinctやcode-blockでも同様の考え方に基づいたキャッシュデータの削除を行うことができる。例えば、Precinctの場合は、データの削除単位はタイルと同様にパケットとなり、code-blockの場合には、そのコードブロックのデータを構成するサブバンドからなる符号データが単位となる。
【0096】
更に、本実施の形態3では、最後にアクセスされた時刻を保存し、その時刻に基づいてキャッシュデータを削除するタイルを特定したが、前述の実施の形態1乃至3のそれぞれと組み合わせて利用することも可能である。つまり、ステップS71で特定されたタイル群Xから、ステップS72において、キャッシュデータを削除するタイルAを選ぶときに、前述の実施の形態1で行ったように、注目領域Fから最も離れたタイルをタイルAと特定しても良い。
【0097】
また、キャッシュデータを削除する単位も、前述の実施の形態2のように、ステップS72で特定されたタイルAのキャッシュデータから、最も解像度の高いデータのみを削除する、或いは、最もSNRが高いデータのみを削除するということも可能である。
【0098】
また、実施の形態1乃至3におけるキャッシュ方法については、キャッシュされている各パケットデータを個別に削除できるような方法であれば、どのような方法でキャッシュされていても構わない。
【0099】
[実施の形態4]
まず最初に上述した実施の形態1〜3にも適用される全体の処理の流れについて、図23のフローチャートを参照して説明する。この処理は、前述のユーザ201(202)からサーバ204に対して表示要求を発行することにより実行される処理で、前述したキャッシュ処理の前提となるものである。
【0100】
まずステップS81で、ユーザからの表示要求を受け付ける。本実施の形態4の場合、図6に示す領域601を、最大SNR、resolution level 3で表示することがユーザによる表示要求とする。次にステップS82に進み、ステップS81で受け付けた要求とキャッシュデータを比較し、要求を満たすために充分なデータがキャッシュの中に保存されているかどうか判定する。キャッシュ内に必要なデータが全て含まれていればステップS87に進み、そのキャッシュされているデータを用いて画像を表示する。しかし、その表示要求に応じた画像を表示するために不足しているデータがあればステップS83に進んで、サーバ204に対して、その不足している分の画像データを要求する。
【0101】
本実施の形態4では、キャッシュメモリには、画像のヘッダ部分のデータ701、タイル16〜21、56〜61で囲まれる領域602の36枚のタイルからなり、resolution level 2を構成する図10(B)の1002で示されるデータ群、及びそれ以外のタイルに関しては、図10(A)の1001で示されるデータ群がキャッシュされている。従って、ステップS81で取得した表示要求を満たすためには、領域601に含まれるタイル33〜35,41〜43,49〜51からなる9枚のタイルのresolution level 3,layer 2のパケットデータ群708が不足しているのでステップS83に進むことになる。
【0102】
ステップS83では、これら不足しているデータをサーバ204に要求するためのリクエストを作成する。本実施の形態4では、領域601に含まれる9枚のタイルのresolution level 3,layer 2を形成するパケット群708を要求するためのリクエストが作成される。次にステップS84に進み、ステップS83で作成したリクエストをサーバ204に発行する。次にステップS85に進み、サーバ204からのレスポンスデータを受信する。次にステップS86に進み、ステップS85で受信したデータをキャッシュする。そしてステップS87に進み、そのキャッシュしたデータを使って画像の表示処理を行う。これにより、本実施の形態4では、領域601がresolution level 3,layer 2で表示されることになる。
【0103】
また上述の実施の形態におけるキャッシュ方法については、キャッシュされている各パケットデータを個別に削除できるような方法であれば、どのような方法でキャッシュされていても構わない。しかし、どのようなキャッシュ方法であっても、キャッシュ容量を制限以内に抑えることが目的であるため、物理的にデータをメモリ上から削除する必要がある。
【0104】
例えば、図21に示すように、タイル、パケット、コードブロックといったそれぞれのデータの削除単位毎に一つのファイルを形成し、更に、それらを管理する管理ファイルを作成し、キャッシュデータの削除の際には、該当するデータをキャッシュしているファイルを削除し、管理ファイルを更新するといった方法が考えられる。このようなキャッシュ作成方法の場合、物理的にキャッシュデータをキャッシュメモリから容易に削除することが可能である。
【0105】
また、図22(A)の2201で示すように、タイル、パケット、コードブロックといった削除単位を複数まとめて一つのファイルで保存する方法でもよい。その場合、一つのファイルでキャッシュデータを管理するため、データの管理が簡単になる反面、削除対象となるデータを消去するためには、図22(B)の2203で示すように、データを消去した後に物理的に残ってしまう空白部分を削除することが必要になる。従って、図22の例では、Tile N,Packet Kが保存されていた2203に該当するY[バイト]分だけ、それ以降のデータを前に移動させる必要がある。
【0106】
図24は、この場合のキャッシュデータ削除処理の流れを説明するフローチャートである。
【0107】
まずステップS91で、データを削除するキャッシュのファイル名を保存しておく。例えば、データを削除するキャッシュファイル名が「abc.iip2k」であれば、その名称を保存しておく。次にステップS92に進み、Tempファイルを作成する。このTempファイルが最終的にはキャッシュデータ削除後のファイルとなるのだが、同一の名称を避けるために、例えば「temp.iip2k」や「abc_tmp.iip2k」というような仮の名前を付けたファイルを作成する。ここでは、「temp.iip2k」とする。
【0108】
次にステップS93に進み、データを削除したいキャッシュファイルをオープンする。次にステップS94に進み、その削除対象のキャッシュデータまでのオフセット値Vと削除データの長さLを取得する。
【0109】
図22の例では、Tile N,Packet Kのデータを削除したいので、V=X[バイト],L=Y[バイト]となる。次にステップS95に進み、キャッシュファイルの先頭からV[バイト]のデータをTempファイルの先頭からコピーする。従って、キャッシュ管理データ2204を含めたデータをTempファイルにコピーすることになる。次にステップS96に進み、キャッシュファイルの先頭から(V+L)[バイト]目からキャッシュファイルの終わりまでを、ステップS95でコピーしたTempファイルの後ろにコピーする。次にステップS97に進み、Tempファイル、キャッシュファイル共にファイルをクローズする。そしてステップS98に進み、キャッシュファイルを削除する。従って、この時点で「abc.iip2k」が削除され、Tempファイルのファイル「temp.iip2k」にキャッシュデータが保存されていることになる。次にステップS99に進み、そのTempファイルの名前を、ステップS91で保存したファイル名、例えば、この例では「abc.iip2k」に変更する。
【0110】
これにより、物理的にファイルサイズを小さくすることが可能である。但し、この方法を取る場合には、ステップS97において、一時的にでもほぼ同じサイズのファイルが2つキャッシュメモリの中に存在することになる。従って、図8のステップS1でキャッシュ用メモリ容量からスレッショルド値を決定する際に、この点を考慮し、スレッショルド値として、使用可能なメモリ容量の約半分の値を設定する必要がある。この他にも様々なキャッシュ作成方法が考えられるが、本件の主願ではないので省略する。
【0111】
以上説明したように本実施の形態4によれば、キャッシュされた断片的な符号データを効率良く削除することができ、オリジナル画像を閲覧する際に、オリジナル画像の符号データ量と同じ大きさのメモリ容量を必要としない。
【0112】
キャッシュされたデータが削除された後、ユーザが再び、そのデータを必要とする表示要求を行った場合でも、少なくともresolution level 0, layer 1のデータが削除されずに保持されているので、データを要求している間に、一時的にキャッシュに保持されているデータをデコードして表示することができる。
【0113】
[他の実施の形態]
本発明の目的は前述したように、本実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フロッピィ(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM,CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
【0114】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれている。
【0115】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含む。
【0116】
上述した本実施の形態に係る画像処理装置及びその方法は、以下の実施態様で表わすことが出来る。
【0117】
[実施態様1] 符号化された画像データを断片的に入力しキャッシュして再生する画像処理方法であって、
画像の注目領域を特定する注目領域特定工程と、
前記注目領域が変更されることにより、前記画像データをキャッシュしているキャッシュデータ量がキャッシュメモリの許容量を越えるかどうかを判定する判定工程と、
前記判定工程で越えると判定されると前記キャッシュメモリに格納されているキャッシュデータから削除すべきデータ量を求める削除データ量決定工程と、
前記注目領域特定工程で特定された注目領域から削除する単位領域までの距離を測定する距離測定工程と、
前記注目領域と前記距離測定工程で測定された前記距離に基づいて、キャッシュデータからデータを削除する削除領域を前記単位領域を単位として決定する削除領域決定工程と、
前記削除領域決定工程で決定された前記削除領域に含まれるキャッシュデータを削除する削除工程と、
を有することを特徴とする画像処理方法。
【0118】
[実施態様2] 符号化された画像データを断片的に入力しキャッシュして再生する画像処理方法であって、
画像の注目領域を特定する注目領域特定工程と、
前記注目領域が変更されることにより、前記画像データをキャッシュしているキャッシュデータ量がキャッシュメモリの許容量を越えるかどうかを判定する判定工程と、
前記判定工程で越えると判定されると前記キャッシュメモリに格納されているキャッシュデータから削除すべきデータ量を求める削除データ量決定工程と、
前記画像データを構成する単位領域の使用状況を管理するアクセス時間管理工程と、
前記注目領域と前記使用状況に基づいて、キャッシュデータからデータを削除する削除領域を前記単位領域を単位として決定する削除領域決定工程と、
前記削除領域決定工程で決定された前記削除領域に含まれるキャッシュデータを削除する削除工程と、
を有することを特徴とする画像処理方法。
【0119】
[実施態様3] 前記判定工程では、前記画像データをキャッシュするキャッシュメモリの残量と、前記変更された注目領域を表示するためのデータ量とに基づいて前記キャッシュメモリの許容量を越えるかどうかを判定することを特徴とする実施態様1又は2に記載の画像処理装置。
【0120】
[実施態様4] 前記画像データはISO/IEC−15444に準拠したJPEG2000符号化データであることを特徴とする実施態様1乃至3のいずれか1項に記載の画像処理方法。
【0121】
[実施態様5] 前記画像データは、JPEG2000の断片化されたパケット単位に入力されることを特徴とする実施態様4に記載の画像処理方法。
【0122】
[実施態様6] 前記単位領域は、JPEG2000のタイルに相当することを特徴とする実施態様4に記載の画像処理方法。
【0123】
[実施態様7] 前記削除工程では、パケット単位で削除することを特徴とする実施態様4又は5に記載の画像処理方法。
【0124】
[実施態様8] 前記削除工程では、前記削除領域のresolution level 0,layer 1のパケットを除く全てのパケットのデータを削除することを特徴とする実施態様4又は5に記載の画像処理方法。
【0125】
[実施態様9] 前記単位領域は、resolution level 0,layer 1を除くパケットであり、パケット単位で選択し1回以上数回に分けて削除されることを特徴とする実施態様8に記載の画像処理方法。
【0126】
[実施態様10] 前記単位領域は、JPEG2000のプリシンクト(precinct)であることを特徴とする実施態様4又は5に記載の画像処理方法。
【0127】
[実施態様11] 前記プリシンクトは、前記削除工程でパケット単位に削除されることを特徴とする実施態様10に記載の画像処理方法。
【0128】
[実施態様12] 前記単位領域は、JPEG2000のコードブロック(code-block)であることを特徴とする実施態様4又は5に記載の画像処理方法。
【0129】
[実施態様13] 前記単位領域は、同じresolution、同じlayerを構成するために必要なサブバンドからLL成分を除いたデータから構成されるcode-blockのデータであることを特徴とする実施態様12に記載の画像処理方法。
【0130】
[実施態様14] 符号化された画像データを断片的に入力しキャッシュして再生する画像処理装置であって、
画像の注目領域を特定する注目領域特定手段と、
前記注目領域が変更されることにより、前記画像データをキャッシュしているキャッシュデータ量がキャッシュメモリの許容量を越えるかどうかを判定する判定手段と、
前記判定手段により越えると判定されると前記キャッシュメモリに格納されているキャッシュデータから削除すべきデータ量を求める削除データ量決定手段と、
前記注目領域特定手段により特定された注目領域から削除する単位領域までの距離を測定する距離測定手段と、
前記注目領域と前記距離測定手段により測定された前記距離に基づいて、キャッシュデータからデータを削除する削除領域を前記単位領域を単位として決定する削除領域決定手段と、
前記削除領域決定手段により決定された前記削除領域に含まれるキャッシュデータを削除する削除手段と、
を有することを特徴とする画像処理装置。
【0131】
[実施態様15] 符号化された画像データを断片的に入力しキャッシュして再生する画像処理装置であって、
画像の注目領域を特定する注目領域特定手段と、
前記注目領域が変更されることにより、前記画像データをキャッシュしているキャッシュデータ量がキャッシュメモリの許容量を越えるかどうかを判定する判定手段と、
前記判定手段により越えると判定されると前記キャッシュメモリに格納されているキャッシュデータから削除すべきデータ量を求める削除データ量決定手段と、
前記画像データを構成する単位領域の使用状況を管理するアクセス時間管理手段と、
前記注目領域と前記使用状況に基づいて、キャッシュデータからデータを削除する削除領域を前記単位領域を単位として決定する削除領域決定手段と、
前記削除領域決定手段により決定された前記削除領域に含まれるキャッシュデータを削除する削除手段と、
を有することを特徴とする画像処理装置。
【0132】
[実施態様16] 前記判定手段では、前記画像データをキャッシュするキャッシュメモリの残量と、前記変更された注目領域を表示するためのデータ量とに基づいて前記キャッシュメモリの許容量を越えるかどうかを判定することを特徴とする実施態様14又は15に記載の画像処理装置。
【0133】
[実施態様17] 前記画像データはISO/IEC−15444に準拠したJPEG2000符号化データであることを特徴とする実施態様14乃至16のいずれか1項に記載の画像処理装置。
【0134】
[実施態様18] 前記画像データは、JPEG2000の断片化されたパケット単位に入力されることを特徴とする実施態様17に記載の画像処理装置。
【0135】
[実施態様19] 前記単位領域は、JPEG2000のタイルに相当することを特徴とする実施態様17に記載の画像処理装置。
【0136】
[実施態様20] 前記削除手段は、パケット単位で削除することを特徴とする実施態様17又は18に記載の画像処理装置。
【0137】
[実施態様21] 前記削除手段は、前記削除領域のresolution level 0,layer 1のパケットを除く全てのパケットのデータを削除することを特徴とする実施態様17又は18に記載の画像処理装置。
【0138】
[実施態様22] 前記単位領域は、resolution level 0,layer 1を除くパケットであり、パケット単位で選択し1回以上数回に分けて削除されることを特徴とする実施態様20に記載の画像処理装置。
【0139】
[実施態様23] 前記単位領域は、JPEG2000のプリシンクト(precinct)であることを特徴とする実施態様17又は18に記載の画像処理装置。
【0140】
[実施態様24] 前記プリシンクトは、前記削除手段でパケット単位に削除されることを特徴とする実施態様23に記載の画像処理装置。
【0141】
[実施態様25] 前記単位領域はJPEG2000のコードブロック(code-block)であることを特徴とする実施態様17又は18に記載の画像処理装置。
[実施態様26] 前記単位領域は、同じresolution、同じlayerを構成するために必要なサブバンドからLL成分を除いたデータから構成されるcode-blockのデータであることを特徴とする実施態様25に記載の画像処理装置。
【0142】
以上説明したように本実施の形態によれば、キャッシュされた断片的な符号データを効率よく削除することができ、サーバ側にあるオリジナル画像を閲覧する際に、オリジナル画像の符号データ量と同じ大きさのメモリ容量を必要としない。また、注目領域を特定し、そこからの空間的に遠いタイル、或いは、現在の時刻から表示された最後の時間が時間的に遠いタイルを削除対象とするため、複雑な計算を必要としない。
【0143】
更に、キャッシュデータ削除の際に、resolution level 0,layer 1のデータを必ず残しておくことにより、ユーザの要求がキャッシュされているデータよりも高解像度、高SNRであり、不足分のデータをサーバ側からダウンロードする場合にも、キャッシュされているデータを利用して、低解像度・低SNRの画像を一時的に表示することも可能であるという利点がある。
【0144】
【発明の効果】
以上説明したように本発明によれば、キャッシュしている符号化された画像データの内、再生画像に影響の少ないキャッシュデータを削除してキャッシュにおけるデータのオーバフローを防止しながらユーザの要求に応じた表示を行うことができるという効果がある。
【図面の簡単な説明】
【図1】本実施の形態に係るクライアントやサーバの構成を説明するブロック図である。
【図2】本実施の形態に係るネットワークの概略を説明する図である。
【図3】一般的なJPEG2000の符号化データを説明する図である。
【図4】JPEG2000の符号化データにおける解像度(画像サイズ)とResolution番号との関係を示す図である。
【図5】パケット単位のリクエストおよびレスポンスの概念図を示す図である。
【図6】オリジナル画像の各階層のデータ構造を説明する図である。
【図7】本実施の形態に係るサーバに保存されているJPEG2000符号化データを説明する図である。
【図8】本発明の実施の形態1に係る符号化データのキャッシュを説明するフローチャートである。
【図9】図8のステップS5のキャッシュデータの削除処理を示すフローチャートである。
【図10】本実施の形態に係るクライアントにおけるタイルのキャッシュデータの一例を示す図である。
【図11】図9のステップS13のキャッシュデータの削除領域Rの取得処理を示すフローチャートである。
【図12】実施の形態1に係るデータ削除領域Rの取得アルゴリズムを説明する図である。
【図13】本実施の形態に係る、キャッシュデータを削除する順番を決定する方法(ステップS14:図9)を説明するフローチャートである。
【図14】実施の形態に係る削除領域Rのタイルデータがキャッシュされている状態を説明する図である。
【図15】本発明の実施の形態2に係る削除処理を説明するフローチャートである。
【図16】実施の形態2に係る削除領域Rにおけるデータ削除後のキャッシュデータの一例を示す図である。
【図17】本発明の実施の形態3に係る管理テーブルの作成処理を説明するフローチャートである。
【図18】JPEG2000のメインヘッダ内のSIZマーカを説明する図である。
【図19】本発明の実施の形態3に係るアクセス管理テーブルの一例を説明する図である。
【図20】実施の形態3に係る図17のステップS68のキャッシュ制御処理を示すフローチャートである。
【図21】本発明の実施の形態4に係るキャッシュ管理用ファイルを説明する図である。
【図22】本発明の実施の形態4に係るキャッシュ管理データとキャッシュデータの削除を説明する図である。
【図23】本発明の実施の形態4に係るユーザからサーバへの表示要求に伴う処理の概要を説明するフローチャートである。
【図24】本発明の実施の形態4に係るキャッシュデータの削除処理を説明するフローチャートである。
Claims (2)
- JPEG2000で符号化された画像データをその部分的データである符号化単位ごとに入力し、前記画像データを記憶するためのスレッショルド値が決められたキャッシュメモリにキャッシュし、キャッシュされた画像データを用いて画像を表示する画像処理方法であって、
前記画像を構成する複数の矩形領域である複数のタイルの内、表示するタイル群を特定する表示タイル特定工程と、
前記スレッショルド値から既にキャッシュされている画像データのデータ量を引いた値よりも、新たに入力してキャッシュしようとする画像データのデータ量が大きいかどうかを判定する判定工程と、
前記判定工程で前記新たに入力してキャッシュしようとする画像データのデータ量が大きいと判定された場合に、当該新たに入力してキャッシュしようとする画像データをキャッシュするために前記キャッシュメモリにキャッシュされた画像データから削除すべきデータ量を、前記既にキャッシュされている画像データのデータ量と、前記新たに入力してキャッシュしようとする画像データのデータ量及び前記スレッショルド値とに基づいて決定する削除データ量決定工程と、
前記表示タイル特定工程で特定された前記表示タイル群から最も距離が遠いタイルの列又は行におけるタイルの削除順を決定し、前記削除データ量決定工程で決定された前記削除すべきデータ量になるまで、当該決定された削除順に従って resolution level 0 , layer 1 を除く前記キャッシュされたタイルの画像データを削除する削除工程と、
を有することを特徴とする画像処理方法。 - JPEG2000で符号化された画像データをその部分的データである符号化単位ごとに入力し、前記画像データを記憶するためのスレッショルド値が決められたキャッシュメモリにキャッシュし、キャッシュされた画像データを用いて画像を表示する画像処理装置であって、
前記画像を構成する複数の矩形領域である複数のタイルのうち、表示するタイル群を特定する表示タイル特定手段と、
前記スレッショルド値から既にキャッシュされている画像データのデータ量を引いた値よりも、新たに入力してキャッシュしようとする画像データのデータ量が大きいかどうかを判定する判定手段と、
前記判定手段により前記新たに入力してキャッシュしようとする画像データのデータ量が大きいと判定された場合に、当該新たに入力してキャッシュしようとする画像データをキャッシュするために前記キャッシュメモリにキャッシュされた画像データから削除すべきデータ量を、前記既にキャッシュされている画像データのデータ量と、前記新たに入力してキャッシュしようとする画像データのデータ量及び前記スレッショルド値とに基づいて決定する削除データ量決定手段と、
前記表示タイル特定手段により特定された前記表示タイル群から最も距離が遠いタイルの列又は行におけるタイルの削除順を決定し、前記削除データ量決定手段により決定された前記削除すべきデータ量になるまで、当該決定された削除順に従って resolution level 0 , layer 1 を除く前記キャッシュされたタイルの画像データを削除する削除手段と、
を有することを特徴とする画像処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002316403A JP4109963B2 (ja) | 2002-10-30 | 2002-10-30 | 画像処理方法及び装置 |
US10/353,026 US7200272B2 (en) | 2002-01-31 | 2003-01-29 | Image processing method storing input encoded data into a memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002316403A JP4109963B2 (ja) | 2002-10-30 | 2002-10-30 | 画像処理方法及び装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004153562A JP2004153562A (ja) | 2004-05-27 |
JP2004153562A5 JP2004153562A5 (ja) | 2005-12-15 |
JP4109963B2 true JP4109963B2 (ja) | 2008-07-02 |
Family
ID=32460123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002316403A Expired - Fee Related JP4109963B2 (ja) | 2002-01-31 | 2002-10-30 | 画像処理方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4109963B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5078467B2 (ja) * | 2007-07-03 | 2012-11-21 | 株式会社リコー | 画像処理装置、画像処理方法及び画像処理プログラム |
JP5141886B2 (ja) * | 2008-02-28 | 2013-02-13 | 株式会社リコー | 画像処理装置、画像処理方法、プログラム及び記録媒体 |
CN102290033B (zh) * | 2010-06-17 | 2014-11-05 | 无锡中星微电子有限公司 | 一种刷新图像的方法及装置 |
-
2002
- 2002-10-30 JP JP2002316403A patent/JP4109963B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004153562A (ja) | 2004-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7580577B2 (en) | Methods, apparatus and computer products for generating JPEG2000 encoded data in a client | |
US20030142871A1 (en) | Image processing method and apparatus | |
JP4223729B2 (ja) | 記憶システム | |
JP3560758B2 (ja) | データ管理方法およびそれを用いたデータ管理装置 | |
KR101653268B1 (ko) | 태그 정보의 처리방법 및 이를 구현하는 클라이언트-서버시스템 | |
JP4050777B1 (ja) | 画像表示システム | |
JP4811069B2 (ja) | 情報提示装置、情報提示方法、及び情報提示処理プログラム | |
US8010580B2 (en) | Information browser, method of controlling same, and program | |
EP1393319A1 (en) | Moving image management apparatus and method | |
CA2433175C (en) | Transferring system for huge and high quality images on network and method thereof | |
JP3445912B2 (ja) | ハイパーテキスト自動取得装置 | |
JP2003006198A (ja) | 画像処理装置およびその方法、並びに、サーバ装置 | |
KR20120029013A (ko) | 호스트장치 및 호스트장치의 웹컨텐츠 표시방법 | |
JP4109963B2 (ja) | 画像処理方法及び装置 | |
JP4250401B2 (ja) | 画像処理装置及び前記装置におけるキャッシュ制御方法 | |
JP2008046700A (ja) | ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム | |
JP3768866B2 (ja) | 符号化データの作成方法及びその装置 | |
JP3897691B2 (ja) | スクロール表示方法及び装置 | |
JP4713257B2 (ja) | データ記憶装置及びバージョン管理プログラム | |
JP4065535B2 (ja) | 符号データ作成方法及び装置 | |
JP3476805B2 (ja) | 画像表示システム及び方法 | |
JP4125087B2 (ja) | 画像処理方法 | |
JP3958198B2 (ja) | 画像処理方法 | |
Tewari et al. | Caching in bandwidth and space constrained hierarchical hyper-media servers | |
JP6111735B2 (ja) | 通信システム、サーバ装置、通信方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051028 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051028 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071030 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071122 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080121 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080317 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080407 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110411 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4109963 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130411 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130411 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140411 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |