(57)【特許請求の範囲】
【請求項１】
ＪＰＥＧ２０００の符号を生成する符号生成装置であって、
生成する符号のタイルパートへの分割方法を示す所定形式の分割情報を生成する手段と、該手段により生成された分割情報を該符号中のＣＯＭマーカセグメントに記録する手段とを有し、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とする符号生成装置。
【請求項２】
ＪＰＥＧ２０００ファミリーフォーマットのファイルを生成するファイル生成装置であって、
生成するファイル内の符号のタイルパートへの分割方法を示す所定形式の分割情報を生成する手段と、該手段により生成された分割情報を該ファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘ、あるいは該符号中のＣＯＭマーカセグメントに記録する手段とを有し、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴するファイル生成装置。
【請求項３】
ＪＰＥＧ２０００の符号から所要のタイルパートを選択する符号処理装置であって、
前記符号中のＣＯＭマーカセグメントに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知手段と、
前記分割方法検知手段により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別手段と、
を有し、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とする符号処理装置。
【請求項４】
ＪＰＥＧ２０００ファミリーフォーマットのファイル内の符号から所要のタイルパートを選択する符号処理装置であって、
前記符号中のＣＯＭマーカセグメント、あるいは、前記ファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知手段と、
前記分割方法検知手段により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別手段と、
を有し、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とする符号処理装置。
【請求項５】
前記符号中のＴＬＭマーカセグメントに記録されている各タイルパートの長さをもとに、前記タイルパート識別手段により識別されたタイルパートについて、各タイルパートから次のタイルパートへのシーク長を算出するシーク長算出手段を有することを特徴する請求項３又は４記載の符号処理装置。
【請求項６】
コンピュータにＪＰＥＧ２０００の符号を生成する処理を行わせるためのプログラムであって、コンピュータに、
生成する符号のタイルパートへの分割方法を示す所定形式の分割情報をメモリ上に生成する工程、
該工程により生成された分割情報をメモリ上のＣＯＭマーカセグメントに記録する工程を実行させ、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなり、
ＣＯＭマーカセグメントに前記分割情報が記録されたＪＰＥＧ２０００の符号を生成することを特徴とするプログラム。
【請求項７】
コンピュータにＪＰＥＧ２０００ファミリーフォーマットのファイルを生成する処理を行わせるためのプログラムであって、コンピュータに、
生成するファイル内の符号のタイルパートへの分割方法を示す所定形式の分割情報をメモリ上に生成する工程、
該工程により生成された分割情報をメモリ上のＵＵＩＤＢｏｘ又はＸＭＬＢｏｘ、あるいはＣＯＭマーカセグメントに記録する工程、
を実行させ、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなり、
ＵＵＩＤＢｏｘ又はＸＭＬＢｏｘあるいは符号中のＣＯＭマーカセグメントに前記分割情報が記録されたＪＰＥＧ２０００ファミリーフォーマットのファイルを生成することを特徴とするプログラム。
【請求項８】
コンピュータにＪＰＥＧ２０００の符号から所要のタイルパートを選択する処理を行わせるためのプログラムであって、コンピュータに、
メモリ上の前記符号中のＣＯＭマーカセグメントに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知工程、
前記分割方法検知工程により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別工程、
を実行させ、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とするプログラム。
【請求項９】
コンピュータにＪＰＥＧ２０００ファミリーフォーマットのファイル内の符号から所要のタイルパートを選択する処理を行わせるプログラムであって、
コンピュータに、
メモリ上の前記符号中のＣＯＭマーカセグメント、あるいは、メモリ上の前記ファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知工程、
前記分割方法検知工程により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別工程、
を実行させ、
前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とするプログラム。
【請求項１０】
コンピュータに、メモリ上の前記符号中のＴＬＭマーカセグメントに記録されている各タイルパートの長さをもとに、前記タイルパート識別工程により識別されたタイルパートについて、各タイルタイルパートから次のタイルパートへのシーク長を算出するシーク長算出工程を実行させることを特徴とする請求項８又は９記載のプログラム。
【請求項１１】
請求項６乃至１０のいずれか１項記載のプログラムが記録されたコンピュータが読み取り可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＪＰＥＧ２０００の符号の生成と処理、並びに、ＪＰＥＧ２０００ファミリーフォーマットのファイルの生成と処理に関し、ＪＰＩＰサーバ等に好適に応用できるものである。
【背景技術】
【０００２】
近年、画像圧縮の分野において、ＪＰＥＧ（Joint  Photographic  Coding  Experts  Group）で採用されたＤＣＴ（離散コサイン変換）に代わる周波数変換として、ウェーブレット変換の採用が増加している。その代表例は、２００１年に国際標準になったＪＰＥＧ２０００である。
【０００３】
ＪＰＥＧ２０００の符号化処理は概ね図９のブロック図に示す流れで行われる。画像は矩形のタイルに分割され(分割数≧１)、タイル毎に処理される。
【０００４】
まず、各タイルは、輝度・色差等のコンポ−ネントへ色変換される（ブロック１）。ＲＢＧデータのような正数で表されるデータの場合、ダイナミックレンジの半分を減じるＤＣレベルシフトも施される。変換後のコンポ−ネント（タイルコンポ−ネントと呼ばれる）はウェーブレット変換を適用されてサブバンドに分割される（ブロック２）。１回のウェーブレット変換（デコンポジション）によってLL，HL，LH，HHと略称される４つのサブバンドに分割される。そして、LLサブバンドに対して再帰的にウェーブレット変換を繰返すと、最終的に１つのLLサブバンドと複数のHL，LH，HHサブバンドが生成される。
【０００５】
３回のウェーブレット変換（デコンポジション）を行った場合のサブバンドを図１１に示す。図１１中の各サブバンド名の接頭の数字（例えば”３ＬＬ”の”３”）は、デコンポジションレベル（施されたウェーブレット変換の回数）を示す。また、後の説明のため、デコンポジションレベルと解像度レベルの関係を図１１に示した。
【０００６】
９×７変換と呼ばれる非可逆ウェーブレット変換が用いられる場合には、ウェーブレット係数は、サブバンド毎に線形量子化（正規化を含む）を施され（ブロック３）、次にエントロピー符号化される（ブロッ４）。このエントロピー符号化では、各サブバンドはプリシンクトとよばれる矩形に分割される。プリシンクトとは、サブバンドを矩形に分割したもので、ＨＬ，ＬＨ，ＨＨの３つのサブバンドの対応したプリシンクトは３つで１まとまりとして扱われる。ただし、ＬＬサブバンドを分割したプリシンクトは１つで１まとまりとして扱われる。プリシンクトは、大まかには画像中の場所（Position）を表すものである。プリシンクトはサブバンドと同じサイズにできる。プリシンクトをさらに矩形に分割したものがコードブロックである。図１０にタイル、サブバンド、プリシンクト、コードブロックの関係を示す。よって、物理的な大きさの序列は、画像≧タイル＞サブバンド≧プリシンクト≧コードブロックとなる。以上の分割の後、係数のエントロピー符号化（ビットプレーン符号化）が、コードブロック毎かつビットプレーン順に行われる。
【０００７】
次に必要なエントロピー符号をまとめてパケットを生成する（ブロック５）。パケットとは、プリシンクトに含まれる全てのコードブロックから、ビットプレーンの符号の一部（例えば全てのコードブロックのＭＳＢから３枚目までのビットプレーンの符号）を集めたものにヘッダ（パケットヘッダ）をつけたものである。上記”一部”は”空”（から）でもよいので、パケットの中身が符号的には”空)”ということもある。パケットヘッダには、当該パケットに含まれる符号に関する情報が含まれる。各パケットは独立に扱うことができる。いわばパケットは符号の単位である。
【０００８】
そして、全てのプリシンクト（＝全てのコードブロック＝全てのサブバンド）のパケットを集めると、画像全域の符号の一部（例えば、画像全域のウェーブレット係数の、ＭＳＢから３枚目までのビットプレーンの符号）ができるが、これをレイヤーと呼ぶ。レイヤーは、大まかには画像全体のビットプレーンの符号の一部であるから、復号されるレイヤー数が増えれば画質は上がることになる。すなわち、レイヤーは画質の単位である。すべてのレイヤーを集めると、画像全域の全てのビットプレーンの符号になる。
【０００９】
デコンポジションレベル数＝２、プリシンクトサイズ＝サブバンドサイズ、としたときのレイヤーの例を図１２の上段に示す。いくつかのレイヤーに含まれるパケットを図１２の下段に太枠で囲んで示す。
【００１０】
以上のようにして生成されたパケットやレイヤーの区切りに従って、パケットを配列するとともに必要なタグやタグ情報を付加することにより、最終的なＪＰＥＧ２０００の符号（コードストリーム）が形成される（ブロック６）。
【００１１】
以上の説明から理解されるように、パケットは
・どのコンポ−ネント（記号Ｃ）に属するか、
・どの解像度レベル（記号Ｒ）に属するか、
・どのプリシンクト（“場所”，記号Ｐ）に属するか、
・どのレイヤー（記号Ｌ）に属するか、
という４つの属性を要する。ただし、このような属性自体はパケットヘッダには記述されていない。
【００１２】
パケットの配列とは、パケット（パケットヘッダおよびパケットデータ）を、どの属性の順に階層的に並べるかを意味する。この配列順をプログレッションオーダと呼び、図１３に示す５通りが規定されている。
【００１３】
ここで、エンコーダがプログレッションオーダ順にパケットを並べる様子と、デコーダがプログレッションオーダ順にパケットの属性を解釈する様子を以下に示す。
【００１４】
例えば、ＬＲＣＰプログレッションオーダの場合、次のようなｆｏｒループ
for(レイヤ)｛
for(解像度)｛
for(コンポ−ネント)｛
for(プリシンクト)｛
エンコード時：パケットを配置
デコード時：パケットの属性を解釈
｝
｝
｝
｝
により、パケットの配列（エンコード時）又は解釈（デコード時）がなされる。
【００１５】
各パケットのパケットヘッダには、
・そのパケットが空かどうか、
・そのパケットにどのコードブロックが含まれるか、
・そのパケットに含まれる各コードブロックのゼロビットプレーン数、
・そのパケットに含まれる各コードブロック符号のコーディングパス数（ビットプレーン数）、
・そのパケットに含まれる各コードブロックの符号長、
が記載されている。しかし、レイヤー番号や解像度レベル等はパケットヘッダには一切記載されていない。デコード時に、そのパケットがどのレイヤーのどの解像度レベルのものかを判別するには、メインヘッダ中のＣＯＤマーカセグメント（図２５）等に記載されたプログレッションオーダから上記のようなｆｏｒループを形成し、そのパケットに含まれる各コードブロックの符号長の和からパケットの切れ目を判別し、各パケットがｆｏｒループ内のどの位置でハンドリングされたかを見ればよい。これは、パケットヘッダ中の符号長さえ読み出せば、パケットデータ（エントロピー符号）をデコードしなくても、次のパケットを検出できること、すなわち任意のパケットにアクセス可能であることを意味する。
【００１６】
図１４は、ＬＲＣＰプログレッションオーダ符号の様な、レイヤーがforループの最も外側（以下、“最外殻”と呼ぶ）に位置するレイヤープログレッシブ符号の概念図である。ただし、タイルパート（後述）の数は１としている。
【００１７】
図１５に、画像サイズ＝１００×１００画素、タイル分割無し（１タイル）、２レイヤ、解像度レベル数＝３（０〜２）、３コンポ−ネント（０〜２）、プリシンクトサイズ＝３２×３２の場合のＬＲＣＰプログレッションオーダの符号における３６個のパケットの配列例を示す。ただし、タイルパート（後述）の数は１としている。
【００１８】
図１６は、ＲＬＣＰプログレッションオーダ符号の様な、解像度レベルがｆｏｒループの最外殻である解像度プログレッシブ符号の概念図である。ただし、タイルパート数は１としている。
【００１９】
図１７に、画像サイズ＝１００×１００画素、タイル分割無し（１タイル）、２レイヤ、解像度レベル数＝３（０〜２）、３コンポ−ネント（０〜２）、プリシンクトサイズ＝３２×３２の場合のＲＬＣＰプログレッションオーダ符号における３６個のパケットの配列例を示す。ただし、タイルパート（後述）の数は１としている。
【００２０】
さて、各タイルを構成する符号を、パケットの切れ目でさらに複数の部分に分割することができ、分割した部分をタイルパートと呼ぶ。なお、先に言及したように、図１５と図１７はタイルパート数＝１の場合である。
【００２１】
各タイルパートは、パケットのほかに、ＳＯＴ（start  of  tile-part）マーカセグメントで始まりＳＯＤ（start  of  data）マーカで終わるヘッダを有し、このヘッダをタイルパートヘッダと呼ぶ（図１４，図１６参照）。
【００２２】
図１８に、ＳＯＴマーカセグメントの構成を示す。なお、マーカ（この例ではＳＯＴマーカ）とそれに関連したパラメータから構成されるものをマーカセグメントと呼ぶ。ＳＯＴマーカセグメントのパラメータの内容を図１９に示す。図１９から理解されるように、ＳＯＴマーカセグメント中のパラメータＰｓｏｔの内容を読めば当該タイルパートの長さを知ることができる。したがって、ＳＯＴマーカセグメントを読み込めば、パケットヘッダをデコードすることなく、タイルパート単位で符号にアクセスすることができる。すなわち、何番目かのタイルパートを捜す場合、先頭のＳＯＴマーカセグメントを探し、ＳＯＴマーカセグメントからタイルパート長を検出して符号中をシークして次のタイルパートにたどり着く、という手順を繰返すことにより所望のタイルパートに到達できる。
【００２３】
パケットヘッダのデコードを省略したい場合には、タイルパートヘッダ中のＰＬＴマーカセグメントやメインヘッダ中のＰＬＭマーカセグメントに、各パケットの長さを記録しておくこともできる。
【００２４】
さらに、何番目かのタイルパートを探す際にＳＯＴマーカセグメントを逐次探すプロセスを省きたい場合には、メインヘッダ中のＴＬＭマーカセグメントに各タイルパートの長さを記録しておくこともできる。ＴＬＭマーカセグメントは図２０に示すような構成であり、そのパラメータの内容は図２１に示す通りである。ＴＬＭマーカセグメント中のＰｔｍｌ(i)を読めば、ｉ番目のタイルパートの長さを知ることができる。すなわち、ＴＬＭマーカセグメントからタイルパート長を検出して積算する手順を繰返し、所定個数のタイルパート数に達した時点で、所望のタイルパートへのシーク長（すなわち最初のタイルパートからのオフセット）が得られ、このシーク長をもとに所望のタイルパートに高速にアクセスすることが可能である。
【００２５】
さて、以上に説明したように、ＪＰＥＧ２０００の符号は、パケット単位でのアクセスが可能であるとともに、より簡易には、タイルパート単位でのアクセスが可能である。これは、原符号から、それをデコードすることなく、必要なパケットやタイルパートだけを抜き出して新たな符号を生成できることを意味する。また、原符号の必要なパケット又はタイルパートだけを復号することができることをも意味する。
【００２６】
例えば、サーバに保存されている大きな画像をクライアント側で表示しようとする場合に、必要な画質だけの符号、必要な解像度だけの符号、見たい場所だけの符号、見たいコンポ−ネントだけの符号をサーバから受信して復号するような事が可能である。
【００２７】
この様に、サーバにあるＪＰＥＧ２０００の符号の必要な部分だけを受信するためのプロトコルをＪＰＩＰ（JPEG2000  Interactive  Protocol）と呼び、現在、標準化の途上にある。このような階層的な画像を部分的にアクセスするためのプロトコルは、古くは、画像の多重解像度表現であるＦｌａｓｈＰｉｘと、それにアクセスするためのプロトコルであるＩＩＰ（Internet  Imaging  Protocol）に見ることができる（例えば特許文献１参照）。なお、ｗｅｂサイトhttp://www.i3a.org/i_iip.htmlでＩＩＰの標準書を提供している。また、ＪＰＩＰに関連した先行技術文献としては、例えばＪＰＩＰのキャッシュモデル等に関する特許文献２がある。
【００２８】
【特許文献１】特開平１１−２０５７８６号公報
【特許文献２】特開２００３−２３６３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００２９】
さて、ＪＰＩＰにおいては、クライアントからサーバへ、描画したい解像度と実際に描画するウィンドウサイズを指定することが提案されている。このような指定を受けた場合、サーバ側では当該解像度の当該領域をカバーするプリシンクトのパケットを送信するか、あるいは、より簡易に、当該領域をカバーするタイルパートを送信する。
【００３０】
以下に、後者のタイルパートを送信するＪＰＩＰシステム(これをＪＰＴシステムという)を例に説明する。
【００３１】
ＪＰＴシステムの場合、画像全体を構成するタイルパート中から、当該領域をカバーするタイルパートを抽出する手順は以下の通りである。サーバは、自分が管理する符号が、どのようにタイルパートに分割されているかを知っていることが前提となる。
【００３２】
今、図１７に示した１タイル、２レイヤのＲＬＣＰプログレッションオーダ符号のパケットを、解像度レベルの全ての境界位置（解像度レベルの切り替わり位置）でタイルパートに分割した場合、図２２に示したような３つのタイルパート（０，１，２）ができる。また、同じＲＬＣＰプログレッションオーダ符号のパケットを、解像度レベルの全ての境界位置およびレイヤーの全ての境界位置でタイルパートに分割した場合、図２３に示したような６つのタイルパート（０〜５）ができる。また、同じＲＬＣＰプログレッションオーダ符号のパケットを、解像度レベルの全ての境界位置、レイヤーの全ての境界位置及びコンポ−ネントの全ての境界位置でタイルパートに分割した場合、図２４示したような１８個のタイルパート（０〜１７）ができる。
【００３３】
ここで、クライアントからサーバへ、「２５×２５画素に相当する解像度部分を、２０×２０のウィンドウサイズで表示したい」というリクエストが来たとする。図１７の例では、２５×２５画素に相当する解像度とは解像度レベル０の部分を指し、２０×２０のウィンドウとは解像度レベル０の画素のうちの２０×２０の部分だけを表示するということを意味する。
【００３４】
したがって、サーバは、自分の持っている符号から、解像度レベル０をカバーするタイルパート（図２２の例ならタイルパート０）を抽出し、それをメインヘッダの情報とともにクライアントへ送信すればよい。タイルパートの先頭には必ずＳＯＴマーカセグメントがあり、タイルパートの長さもわかるため、タイルパートの境界自体は常に判別可能である。
【００３５】
しかし、図２２、図２３、図２４の例を見れば明らかなように、(何番目から)何番目までのタイルパートを送信すればよいかは、符号のプログレッションオーダ及びタイルパートへの分割方法という２つのパラメータに依存するのである。
【００３６】
前者のプログレッションオーダは、メインヘッダやタイルパートヘッダのＣＯＤマーカセグメントに記述されているため直ち知ることができる。
【００３７】
しかし、後者のタイルパートへの分割方法は、ＪＰＥＧ２０００符号やＪＰＥＧ２０００ファミリーフォーマットのファイルに記録されているわけではない。したがって、従来は、タイルパートへの分割方法が既知の符号でないかぎり、所望のタイルパートを選ぶには、符号のパケットを１つ１つ数えていかざるを得ず、効率が極めて悪いという問題があった。
【００３８】
本発明は、ＪＰＥＧ２０００の符号やＪＰＥＧ２０００ファミリーフォーマットのファイルにおける上記問題点を解決し、ＪＰＴサーバなどにおいて、ＪＰＥＧ２０００の符号の所要のタイルパートを効率的に選択可能にするものである。
【課題を解決するための手段】
【００３９】
ＪＰＥＧ２０００においては、符号のタイルパートへの分割方法を入れるように最初から規定されているマーカセグメントはない。しかし、ＪＰＥＧ２０００の符号フォーマットやファイルフォーマットには、ベンダー情報等の自由な情報を記述することが許されたマーカセグメントやＢｏｘ情報がある。本発明はこのことに着目した。
【００４０】
すなわち、請求項１記載の発明は、ＪＰＥＧ２０００の符号を生成する符号生成装置であって、生成する符号のタイルパートへの分割方法を示す所定形式の分割情報を生成する手段と、該手段により生成された分割情報を該符号中のＣＯＭマーカセグメントに記録する手段とを有し、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とする符号生成装置である。
【００４１】
ＣＯＭマーカセグメントは図２６に示すような構成であり、任意のコメントデータをバイト単位でＣｃｏｍ（ｉ）に記録することができる。
【００４２】
なお、タイルパートへの分割方法とは、具体的には、パケットの属性中のどの属性のどの境界位置（切り替わり位置）でタイルパートへ分割されるかである。例えば、図２２の例のように解像度レベルの全ての境界位置で分割したり、図２３の例のように解像度レベル及びレイヤーの全ての境界位置で分割したりする、といったものである。
【００４３】
また、請求項２記載の発明は、ＪＰＥＧ２０００ファミリーフォーマットのファイルを生成するファイル生成装置であって、生成するファイル内の符号のタイルパートへの分割方法を示す所定形式の分割情報を生成する手段と、該手段により生成された分割情報を該ファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘ、あるいは該符号中のＣＯＭマーカセグメントに記録する手段とを有し、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴するファイル生成装置である。
【００４４】
ここで、ＪＰＥＧ２０００ファミリーフォーマットとは、ＪＰ２、ＪＰＸ、ＪＰＭである。図２７にＪＰ２フォーマットのファイル構造を示す。図中のＵＵＩＤＢｏｘとＸＭＬＢｏｘに任意の情報を記録可能である。ＪＰＸはＪＰ２の拡張ファイルフォーマットであり、その構造は示さないが、ＵＵＩＤＢｏｘとＸＭＬＢｏｘに関してはＪＰ２フォーマットと同様である。図２８にＢｏｘの構造を、図２９にＢｏｘ情報の内容を示す。ＵＵＩＤＢｏｘとＸＭＬＢｏｘのＤＢｏｘに任意の情報を記録できる。
【００４５】
また、図３０にＪＰＭ（JPEG2000  Multi  Layer）フォーマットのファイル構造を示す。図中の”Ｃ．２”で示されたＭｅｔａｄａｔａＢｏｘに、図２８と同様なＵＵＩＤＢｏｘ，ＸＭＬＢｏｘが含まれており、任意の情報を記録可能である。
【００４６】
また、請求項３記載の発明は、ＪＰＥＧ２０００の符号から所要のタイルパートを選択する符号処理装置であって、前記符号中のＣＯＭマーカセグメントに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知手段と、前記分割方法検知手段により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別手段とを有し、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とする符号処理装置である。
【００４７】
なお、符号のプログレッションオーダは、符号中のＣＯＤマーカセグメントから検知することができることは前述した。また、プログレッションオーダが既知（固定）の符号を前提とする場合は、ＣＯＤマーカセグメントからプログレッションオーダを検知する必要はない。
【００４８】
また、請求項４記載の発明は、ＪＰＥＧ２０００ファミリーフォーマットのファイル内の符号から所要のタイルパートを選択する符号処理装置であって、前記符号中のＣＯＭマーカセグメント、あるいは、前記ファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知手段と、前記分割方法検知手段により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別手段とを有し、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とする符号処理装置である。
【００４９】
請求項５記載の発明は、請求項３又は４記載の発明に係る符号処理装置であって、前記符号中のＴＬＭマーカセグメントに記録されている各タイルパートの長さをもとに、前記タイルパート識別手段により識別されたタイルパートについて、各タイルパートから次のタイルパートへのシーク長を算出するシーク長算出手段を有することを特徴する符号処理装置である。
【００５０】
また、請求項６記載の発明は、コンピュータにＪＰＥＧ２０００の符号を生成する処理を行わせるためのプログラムであって、コンピュータに、生成する符号のタイルパートへの分割方法を示す所定形式の分割情報をメモリ上に生成する工程、該工程により生成された分割情報を、メモリ上のＣＯＭマーカセグメントに記録する工程を実行させ、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなり、ＣＯＭマーカセグメントに前記分割情報が記録されたＪＰＥＧ２０００の符号を生成することを特徴とするプログラムである。
【００５１】
また、請求項７記載の発明は、コンピュータにＪＰＥＧ２０００ファミリーフォーマットのファイルを生成する処理を行わせるためのプログラムであって、コンピュータに、生成するファイル内の符号のタイルパートへの分割方法を示す所定形式の分割情報をメモリ上に生成する工程、該工程により生成された分割情報をメモリ上のＵＵＩＤＢｏｘ又はＸＭＬＢｏｘ、あるいはＣＯＭマーカセグメントに記録する工程を実行させ、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなり、ＵＵＩＤＢｏｘ又はＸＭＬＢｏｘあるいは符号中のＣＯＭマーカセグメントに前記分割情報が記録されたＪＰＥＧ２０００ファミリーフォーマットのファイルを生成することを特徴とするプログラム。
【００５２】
請求項８記載の発明は、コンピュータにＪＰＥＧ２０００の符号から所要のタイルパートを選択する処理を行わせるためのプログラムであって、コンピュータに、メモリ上の前記符号中のＣＯＭマーカセグメントに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知工程、前記分割方法検知工程により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別工程を実行させ、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とするプログラムである。
【００５３】
請求項９記載の発明は、コンピュータにＪＰＥＧ２０００ファミリーフォーマットのファイル内の符号から所要のタイルパートを選択する処理を行わせるプログラムであって、コンピュータに、メモリ上の前記符号中のＣＯＭマーカセグメント、あるいは、メモリ上の前記ファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘに記録されているタイルパートへの分割方法を示す分割情報により前記符号のタイルパートへの分割方法を検知する分割方法検知工程、前記分割方法検知工程により検知されたタイルパートへの分割方法及び前記符号のプログレッションオーダをもとに、前記所要のタイルパートが前記符号の何番目のタイルパートであるか識別するタイルパート識別工程を実行させ、前記分割情報は、符号を構成するパケットの属性である解像度レベル、レイヤー及びコンポーネントの境界位置でタイルパートを分割するか否かを指定する第１のビット群と、該第１のビット群でタイルパートを分割すると指定された属性の全ての境界位置でタイルパートを分割するのか一部の境界位置でのみ分割するのかを指定する第２のビット群と、タイルパートを分割する解像度レベルの境界位置を指定する第３のビット群と、タイルパートを分割するレイヤーの境界位置を指定する第４のビット群と、タイルパートを分割するコンポーネントの境界位置を指定する第５のビット群とからなることを特徴とするプログラムである。
【００５４】
請求項１０記載の発明は、請求項８又は９記載の発明に係るプログラムであって、コンピュータに、メモリ上の前記符号中のＴＬＭマーカセグメントに記録されている各タイルパートの長さをもとに、前記タイルパート識別工程により識別されたタイルパートについて、各タイルタイルパートから次のタイルパートへのシーク長を算出するシーク長算出工程を実行させることを特徴とするプログラムである。
【００５５】
また、請求項１１記載の発明は、請求項６乃至１０のいずれか１項記載の発明に係るプログラムが記録されたコンピュータが読み取り可能な情報記録媒体である。
【発明の効果】
【００６０】
（１）請求項１，２記載の発明によれば、タイルパートへの分割方法を示す分割情報がＣＯＭマーカセグメント、あるいはＵＵＩＤＢｏｘ又はＸＭＬＢｏｘに記録されたＪＰＥＧ２０００の符号又はＪＰＥＧ２０００ファミリーフォーマットのファイルを生成することができる。このような符号又はファイルを処理する場合、それに記録されている分割情報からタイルパートへの分割方法、すなわち、どの属性のどの境界位置でタイルパート分割されているかを検知することができるため、それを検知できない場合に比べ、効率的に所望のタイルパートへのアクセスが可能となる。
（２）請求項３，４記載の発明によれば、ＪＰＥＧ２０００の符号又はＪＰＥＧ２０００ファミリーフォーマットのファイルの符号の選択しようとする所要のタイルパートが何番目のタイルパートであるかを容易に識別し、効率的に所要のタイルパートをアクセスして選択することができる。さらに、請求項５記載の発明によれば、ＴＬＭマーカセグメントに記録されている各タイルパートの長さから算出されたシーク長をもとに所望のタイルパートへ直接的にアクセスすることが可能であり、例えば所望のタイルパートが飛び飛びのものであっても、それを極めて効率的に選択することができる。したがって、元の符号から所要のタイルパートを選択し外部へ出力したり、所要のタイルパートのみからなる新たな符号を生成する等の処理を効率良く行うことが可能となる。
（３）請求項６〜１１記載の発明によれば、コンピュータを利用し、請求項１〜５記載の発明に係る処理を実行させることができる。換言すれば、コンピュータを、請求項１〜５記載の発明に係る装置として動作させることができる、等々の効果を得られる。
【発明を実施するための最良の形態】
【００６１】
以下、本発明の実施の形態について説明する。
【００６２】
本発明は、例えば図１に示すようなシステムで実施することができる。図１において、１００と１０１はパーソナルコンピュータ（ＰＣ）であり、ネットワーク（ＬＡＮ、イントラネット、インターネット等）１０２を経由して通信可能である。
【００６３】
ＰＣ１００はＣＰＵ１１０、ＲＡＭ１１１、ハードディスク装置１１２、表示装置１１３、キーボード、マウス等の入力装置１１４、ネットワーク・インターフェース１１５等がバス１１６に接続された一般的な構成である。ＰＣ１０１も同様の構成で構わない。
【００６４】
本発明は、各ＰＣ１００，１０１がそれぞれ単独で実施する形態、あるいは、例えばＰＣ１０１をクライアント、ＰＣ１００をサーバとしたクライアント・サーバシステム上で実施する形態をとり得る。また、単独のＰＣ１００又は１０１上でクライアント・ソフトウェアとサーバ・ソフトウェアを走らせてクライアント・サーバシステムを構築することも可能であり、かかるシステム上で本発明を実施する形態もとり得る。なお、後述する各実施例を専用のハードウェアで実施することも可能であり、かかる実施形態も本発明に当然に包含される。
【実施例１】
【００６５】
図２は、本発明の実施例１を説明するためのフローチャートである。このフローチャートに示す手順は、ＪＰＥＧ２０００の符号化処理も含めて、図１に示したＰＣ１００（又は１０１）上でソフトウェアによって実行されるものとする。そのためのプログラムは、ハードディスク装置１１２に保存されており、ＲＡＭ（メインメモリ）１１１へロードされてＣＰＵ１１０により実行されるものとする。ただし、ＪＰＥＧ２０００のハードウェア・エンコーダをＰＣ１００が備えている場合には、ＪＰＥＧ２０００の符号化処理そのものは同エンコーダにより実行させることも可能であり、そのような態様も本実施例に含まれる。以上は、下記の実施例２においても同様である。
【００６６】
処理の対象となる画像データはハードディスク装置１１２に蓄積されており、これがＲＡＭ１１１へ転送されて処理されものとする。その処理結果であるＪＰＥＧ２０００の符号（コードストリーム）を格納したＪＰ２ファイルはＲＡＭ１１１上に生成され、これはハードディスク装置１１２に転送され保存されるものとして説明する。このことは下記の実施例２においても同様である。
【００６７】
図２を参照する。まず、ユーザによってタイルパートへの分割方法が入力され（ｓｔｅｐ１）、ＰＣ１００において入力された分割方法に対応した分割情報を生成する（ｓｔｅｐ２）。
【００６８】
本実施例（及び下記の各実施例）では、図３に示すようなフォーマットの分割情報をＲＡＭ１１１上に生成するものとする。また、本実施例（及び下記の各実施例）においては、便宜上、すべてのタイルに関してタイルパートへの分割方法を同一とし、同じ分割情報を全てのタイルに共通に適用するものとする。また、解像度レベルの最大値を１５、レイヤ数を最大で３２、コンポ−ネント数を最大で１６としているが、通常、これで実用上は充分である。
【００６９】
図３に示す分割情報は９バイトの固定長フォーマットであり、各ビット位置が分割の有無に関する情報を持つ。この分割情報の内容は次の通りである。
（１）最初の４ビット（”分割位置（Ｒ，Ｌ，Ｃ）”）は、パケットの属性である解像度レベルＲ，レイヤーＬ，コンポーネントＣそれぞれの境界位置（切り替わり位置）でタイルパートを分割するか否かを示す。
（２）次の４ビット（”全位置か否か”）は、前の”分割位置（Ｒ，Ｌ，Ｃ）”によって、ある属性の境界位置で分割すると指定されている場合に、当該属性の全ての境界位置で分割するのか、そうでないのか（一部の境界位置でのみ分割するのか）」を示す。
（３）次の１６ビット（”解像度位置”）は、”全位置か否か”により解像度レベルの全ての境界位置では分割しないと指定されている場合に、解像度レベルのどの境界位置で分割するかを示す。
（４）次の３２ビット（”レイヤ位置”）は、”全位置か否か”によりレイヤーの全ての境界位置では分割しないと指定されている場合に、レイヤーのどの境界位置で分割するかを示す。ただし、この３２ビットについての説明例は１６進数表示である。
（５）次の１６ビット（”コンポーネント位置”）は、”全位置か否か”によりコンポーネントの全ての境界位置では分割しないと指定されている場合に、コンポーネントのどの境界位置で分割するかを示す。
【００７０】
ｓｔｅｐ１では、例えば図４に示すような分割方法入力画面が表示装置１１３の画面に表示され、該画面内のラジオボタン（丸印）を入力装置１１４のマウス等を用いてユーザが選択することによって、タイルパートへの分割方法が入力される。この入力情報はＲＡＭ１１１に記憶される。分割方法入力画面内のラジオボタンと分割情報との関連は次の通りである。最上段の３つのラジオボタンは、分割情報中の”分割位置（Ｒ，Ｌ，Ｃ）”の４ビットを指定するためのものである。２段目のラジオボタンは分割情報中の”全位置か否か”の４ビットを指定するためのものである。３段目のラジオボタンは分割情報中の”解像度位置”の１６ビットを指定するためのものである。４段目のラジオボタンは分割情報中の”レイヤ位置”の３２ビットを指定するためのものである。５段目のラジオボタンは分割情報中の”コンポーネント位置”の１６ビットを指定するためのものである。
【００７１】
なお、図４の例では示されていないが、デフォルトの分割方法を入力するためのラジオボタンを設け、これを選択することによってデフォルトの分割方法に対応した分割情報を生成させ、あるいは、ｓｔｅｐ１のスキップ操作によって、デフォルトの分割方法に対応した分割情報を生成させることも可能であり、かかる態様も本実施例に包含される。
【００７２】
次に、ＰＣ１００はメインヘッダのＣＯＭマーカセグメントにｓｔｅｐ２で生成した分割情報を記述する（ｓｔｅｐ３）。具体的には例えば、ＲＡＭ１１１上に確保されたメインヘッダ領域に分割情報を記述したＣＯＭマーカセグメントを書き込む。ＣＯＭマーカセグメントは図２６に示す構造であるが、分割情報はバイナリデータであるためＲｃｏｍ＝０に設定され、９バイトの分割情報が１バイト単位の９個のコメントデータ（Ｃｃｏｍ（０）〜Ｃｃｏｍ（８））として書き込まれる。ＣＯＭマーカ自体を除いたマーカセグメントの長さは１３バイト（＝２＋２＋９）であるので、Ｌｃｏｍ＝１３に設定される。
【００７３】
次に、ＰＣ１００は、ハードディスク装置１１２より画像データをＲＡＭ１１１に読み込み、この画像データに対しＪＰＥＧ２０００のパケット生成までの符号化処理（図９中のブロック１〜５の処理）を実行することにより、ＲＡＭ１１１上にパケットを生成する（ｓｔｅｐ４）。
【００７４】
次に、ＰＣ１００は、指定された分割方法に従って分割されたタイルパート（タイルパートヘッダ及びパケット列）をＲＡＭ１１１上に生成する（ｓｔｅｐ５）。
【００７５】
次に、ＰＣ１００は、生成した各タイルパートにメインヘッダ等を付加した最終的なＪＰＥＧ２０００の符号（コードストリーム）をＲＡＭ１１１上に生成する（ｓｔｅｐ６）。このｓｔｅｐ６とｓｔｅｐ５は図９中のブロック６の処理に相当する。
【００７６】
最後に、この符号を格納したＪＰ２フォーマットのファイルを生成し（ｓｔｅｐ７）、これをハードディスク装置１１２に保存する（ｓｔｅｐ８）。なお、ＪＰＥＧ２０００の符号をファイル化せず、そのまま例えばＰＣ１０１へ送信するようなことも可能であり、かかる態様も本実施例に包含される。
【００７７】
なお、ここまでは、生成する符号のプログレッションオーダは既知として説明したが、これをユーザが任意に指定することも可能であり、この場合には指定されたプログレッションオーダに従ったタイルパートと符号の生成が行われることになる。かかる態様も当然に本実施例に包含される。
【００７８】
本実施例は、コンピュータを利用した請求項１又は２記載の発明の一実施例に相当するものであり、ｓｔｅｐ２が分割情報を生成する手段に、ｓｔｅｐ３が分割情報をＣＯＭマーカセグメントに記録する手段にそれぞれ対応する。また、本実施例のためのプログラムは、請求項６又は７記載の発明の一実施例に相当するものである。このプログラムが記録されたコンピュータが読み取り可能な各種情報記録媒体は請求項１１の一実施例に相当する。
【実施例２】
【００７９】
図５は、本発明の実施例２を説明するためのフローチャートである。図中のｓｔｅｐ１１，１２，１３，１４，１５はそれぞれ前記実施例１に係る図２におけるｓｔｅｐ１，２，４，５，６と同じ処理を行うステップであるので、その説明は省略する。
【００８０】
次に、ＰＣ１００は、ｓｔｅｐ１２で生成した９バイトの分割情報を、ＪＰ２ファイルフォーマットのＵＵＩＤＢｏｘのＤＡＴＡフィールドに記述し、又はＸＭＬＢｏｘのＤＢｏｘに所定のタグ形式で記述する（ｓｔｅｐ１６）。具体的には例えば、ＲＡＭ１１１上に確保された当該Ｂｏｘ情報領域に分割情報を書き込む。
【００８１】
次にＰＣ１００は、ＪＰＥＧ２０００の符号を格納した最終的なＪＰ２フォーマットのファイルを生成し（ｓｔｅｐ１７）、これをハードディスク装置１１２に保存する（ｓｔｅｐ１８）。
【００８２】
なお、本実施例においても、生成する符号のプログレッションオーダをユーザが任意に指定することも可能であり、この場合には指定されたプログレッションオーダに従ったタイルパートと符号の生成が行われることになる。かかる態様も当然に本実施例に包含される。
【００８３】
本実施例は、コンピュータを利用した請求項２記載の発明の一実施例に相当するものであり、ｓｔｅｐ１２が分割情報を生成する手段に、ｓｔｅｐ１６が分割情報をＵＵＩＤＢｏｘ又はＸＭＬＢｏｘに記録する手段にそれぞれ対応する。
【００８４】
また、本実施例のためのプログラムは、請求項７記載の発明の一実施例に相当するものである。このプログラムが記録されたコンピュータが読み取り可能な各種情報記録媒体は請求項１１の一実施例に相当する。
【実施例３】
【００８５】
図６は、本発明の実施例３を説明するためのフローチャートである。本実施例においては、ＰＣ１００がＪＰＴサーバとして動作し、ＰＣ１０１がＪＰＴクライアントとして動作する場合を想定している。また、図６に示す手順はＪＰＴサーバとしてのＰＣ１００側で実行されるものである。
【００８６】
処理の対象となるファイルは、前記実施例１又は２に係る処理によって生成されたＪＰ２ファイルであり、これはＰＣ１００内のハードディスク装置１１２に保存されているものとする。ただし、そのＪＰ２ファイルが、ＪＰＴサーバにより管理されている外部のハードディスク装置等に保存されている態様も本実施例に包含される。なお、分割情報がＣＯＭマーカセグメント、ＵＵＩＤＢｏｘ、ＸＭＬＢｏｘのいずれに記述されているかは既知とする。また、説明の便宜上、符号のタイル数＝１であり、また、クライアントが要求する解像度レベル(の画像サイズ)と表示ウィンドウサイズとは一致しているものとする。以上は後記実施例４においても同様とする。
【００８７】
まず、ＪＰＴサーバであるＰＣ１００は、ＪＰＴクライアントであるＰＣ１０１より、表示すべきファイル名と解像度レベルを指定される（ｓｔｅｐ２１）。なお、解像度レベル指定はfsizというパラメータによって指定される。また、表示ウィンドウ指定はrsizというパラメータによって指定される。例えば
fsiz＝"fsiz"  "＝"  ｘ方向のサイズ","  y方向のサイズ  [","  "closest"]
rsiz＝"rsiz"  "＝"  x方向のウィンドウ  ","  x方向のウィンドゥサイズ
の様に表現される。
【００８８】
ＰＣ１００において、指定されたＪＰ２ファイルを開き（ｓｔｅｐ２２）、同ファイル内の符号のメインヘッダ中のＣＯＭマーカセグメント（あるいは同ファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘ）に記述された分割情報（図３）から、タイルパートへの分割方法を検知する（ｓｔｅｐ２３）。
【００８９】
ＰＣ１００は、符号のメインヘッダに関する情報を、メインヘッダデータビンとしてＰＣ１０１へ送信する（ｓｔｅｐ２４）。
【００９０】
次にＰＣ１００は、符号のメインヘッダ中のＣＯＤマーカセグメントからプログレッションオーダを検知する（ｓｔｅｐ２５）。そして、指定された解像度レベルに基づいて決まる送信すべきタイルパートが符号の何番目のタイルパートであるかを、プログレッションオーダ及び検知した分割方法をもとに識別し、そのタイルパートの番号をＲＡＭ１１１上に例えばテーブルとして保持する（ｓｔｅｐ２６）。
【００９１】
次にＰＣ１００は、符号をシークして最初のＳＯＴマーカセグメントを探し、このＳＯＴマーカセグメントより読み出したタイルパート長をＬとして保持し（ｓｔｅｐ２７）、このＬをもとに符号の次のＳＯＴマーカセグメントへシークし（該ＳＯＴマーカセグメントと直前のＳＯＴマーカセグメントの間の区間が１つのタイルパートとして検出された）、そのＳＯＴマーカセグメントより読み出したタイルパート長を改めてＬとして保持する（ｓｔｅｐ３０）。そして、検出したタイルパートの番号とｓｔｅｐ２６で識別した番号とを比較することにより、送信すべきタイルパートであるか否かを判定し（ｓｔｅｐ３１）、送信すべきタイルパートならば、それをＰＣ１０１へ送信する（ｓｔｅｐ３２）。
【００９２】
次にＰＣ１００は、保持しているＬをもとに次のＳＯＴマーカセグメントへシークし（すなわち次のタイルパートを検出し）、そのＳＯＴマーカセグメントより読み出したタイルパート長を改めてＬとして保持する（ｓｔｅｐ３０）。その検出したタイルパートが送信すべきものならば（ｓｔｅｐ３１，Ｙｅｓ）、そのタイルパートをＰＣ１０１へ送信する（ｓｔｅｐ３２）。
【００９３】
ＰＣ１００は、同様の処理を繰り返し、送信すべき最後のタイルパートまで送信されたと判定すると（ｓｔｅｐ２８，Ｙｅｓ）、当該ファイルを閉じ（ｓｔｅｐ２９）、一連の処理を終了する。
【００９４】
以上に説明したように、符号又はファイルにタイルパートへの分割方法を示す分割情報が含まれているため、符号から必要なタイルパートを効率的に選択してクライアントへ送信することができる。
【００９５】
なお、ここでは簡単のため、タイル数＝１としたが、複数のタイルがある場合には、同様の処理をタイル数だけ繰り返せばよい。また、クライアントが要求する解像度レベルの画像サイズよりも表示ウィンドウサイズが小さい場合には、要求解像度レベルにおいて表示ウィンドウに含まれる位置に存在するタイル群だけに関してだけ、図６と同様な処理を繰り返せばよい。以上は次の実施例４においても同様である。
【００９６】
本実施例は、コンピュータを利用した請求項３又は４記載の発明の一実施例に相当するものであり、ｓｔｅｐ２３が分割方法検知手段に、ｓｔｅｐ２６がタイルパート識別手段にそれぞれ対応し、また、ｓｔｅｐ２７〜３２が所要のタイルパートの選択処理に相当する。
【００９７】
また、本実施例のためのプログラムは、請求項８又は９記載の発明の一実施例に相当するものである。このプログラムが記録されたコンピュータが読み取り可能な各種情報記録媒体は請求項１１の一実施例に相当する。
【実施例４】
【００９８】
図７は、本発明の実施例４を説明するためのフローチャートである。本実施例においては、ＰＣ１００がＪＰＴサーバとして動作し、ＰＣ１０１がＪＰＴクライアントとして動作する場合を想定している。また、図７に示す手順はＪＰＴサーバとしてのＰＣ１００側で実行されるものである。
【００９９】
図７中のｓｔｅｐ４１，４２，４３，４４，４５，４６はそれぞれ前記実施例３に係る図６中のｓｔｅｐ２１，２２，２３，２４，２５，２６と同じ処理を行うステップであるので、その説明は省略する。
【０１００】
次にＰＣ１００は、メインヘッダのＴＬＭマーカセグメントから各タイルパートの長さを読み出し、図８の様な、タイルパート０を送信すべきかどうかを示すフラグ２００と、送信すべきタイルパートの番号と該タイルパートの次に送信すべきタイルパートへのシーク長を保持したテーブル２０１をＲＡＭ１１１上に生成する（ｓｔｅｐ４７）。あるタイルパートから次に送信すべきタイルパートへのシーク長は、その間の送信対象でないタイルパートの長さ（ＴＬＭマーカセグメントに記述されている）の積算をもとに求められる。なお、テーブル２０１の１行目に最初のタイルパートの番号＝０が必ず記録される。ただし、最初のタイルパートが実際に送信されるか否かはフラグ２００の状態によって決まる。
【０１０１】
次にＰＣ１００は、符号をシークして最初のＳＯＴマーカセグメントを探し（ｓｔｅｐ４７）、フラグ２００が”送信”状態であるならば（ｓｔｅｐ４９，Ｙｅｓ）、そのＳＯＴマーカセグメントに続く最初のタイルパートをＪＰＴクライアントであるＰＣ１０１へ送信する（ｓｔｅｐ５０）。
【０１０２】
引き続いてＰＣ１００は、テーブル２０１の１行目に記録されているシーク長に基づいて次に送信すべきタイルパート（テーブル２００の２行目に記録されている番号のタイルパート）の先頭位置へシークし、当該タイルパートをＰＣ１０１へ送信する（ｓｔｅｐ５２）。次に、テーブル２０１の２行目に記録されているシーク長に基づいて、次に送信すべきタイルパート（テーブル２００の３行目に記録されている番号のタイルパート）の先頭位置へシークし、当該タイルパートをＰＣ１０１へ送信する（ｓｔｅｐ５２）。
【０１０３】
同様の処理を繰り返し、送信すべき最後のタイルパートまで送信すると、すなわち、テーブル２０１に記録されている最後の番号のタイルパートを送信すると（ｓｔｅｐ５１，Ｙｅｓ）、ＰＣ１００はファイルを閉じ（ｓｔｅｐ５３）、一連の処理を終了する。
【０１０４】
以上に説明したように、符号又はファイルにタイルパートへの分割方法を示す分割情報が含まれているため、符号から必要なタイルパートを効率的に選択してクライアントへ送信することができる。本実施例では、ＴＬＭマーカセグメントに記述されている各タイルパートの長さに基づいて送信すべきタイルパートへのシーク長を予め計算して図８に示すようなテーブルに保持するため、飛び飛びのタイルパートを選択して送信するような場合でも極めて効率的に送信すべきタイルパートへシークし送信することができる。
【０１０５】
本実施例は、コンピュータを利用した請求項５記載の発明の一実施例に相当するものであり、ｓｔｅｐ４７がシーク長算出手段に対応し、また、ｓｔｅｐ４８〜５２が所要のタイルパートの選択処理に相当する。
【０１０６】
また、本実施例のためのプログラムは、請求項１０記載の発明の一実施例に相当するものである。このプログラムが記録されたコンピュータが読み取り可能な各種情報記録媒体は請求項１１の一実施例に相当する。
【０１０７】
なお、タイルパートへの分割方法もしくは分割位置を示す図３に示した分割情報を、符号のＣＯＭマーカセグメントやファイルのＵＵＩＤＢｏｘ又はＸＭＬＢｏｘに記録することが困難な場合には、符号又はそれを含むファイルに関連付けられた外部データベース等に同様の分割情報を記載してもよい。この場合、符号又はそれを含むファイルに関連付けられた外部データベースに記録された分割情報を参照することにより、符号のタイルパートへの分割方法もしくは分割位置を検知することができる。図３１に、そのような外部データベースが持つ関連付けを示す表の例である。
【図面の簡単な説明】
【０１０８】
【図１】本発明の実施形態に係るシステム構成例を示すブロック図である。
【図２】本発明の実施例１を説明するためのフローチャートである。
【図３】分割情報のフォーマット例を示す図である。
【図４】ユーザがタイルパートへの分割方法を指定するための画面例を示す模式図である。
【図５】本発明の実施例２を説明するためのフローチャートである。
【図６】本発明の実施例３を説明するためのフローチャートである。
【図７】本発明の実施例４を説明するためのフローチャートである。
【図８】実施例４において生成されるフラグとテーブルの説明図である。
【図９】ＪＰＥＧ２０００の符号化アルゴリズムの説明のためのブロック図である。
【図１０】画像、タイル、サブバンド、プリシンクト、コードブロックの関係を示す図である。
【図１１】サブバンド分割の例と、デコンポジションレベルと解像度レベルの関係を示す図である。
【図１２】レイヤー分割例を示す図である。
【図１３】ＪＰＥＧ２０００規定のプログレッションオーダを示す図である。
【図１４】レイヤープログレッシブ符号の概要図である。
【図１５】ＬＲＣＰプログレッションオーダの符号におけるパケット配列例を示す図である。
【図１６】解像度プログレッシブ符号の概要図である。
【図１７】ＲＬＣＰプログレッションオーダの符号におけるパケット配列例を示す図である。
【図１８】ＳＯＴマーカセグメントの構成図である。
【図１９】ＳＯＴマーカセグメントの内容説明図である。
【図２０】ＴＬＭマーカセグメントの構成図である。
【図２１】ＴＬＭマーカセグメントの内容説明図である。
【図２２】全ての解像度レベルの境界位置でタイルパートへ分割した例を示す図である。
【図２３】全ての解像度レベルの境界位置及び全てのレイヤーの境界位置でタイルパートへ分割した例を示す図である。
【図２４】全ての解像度レベルの境界位置、全てのレイヤーの境界位置及び全てのコンポーネントの境界位置でタイルパートへ分割した例を示す図である。
【図２５】ＣＯＤマーカセグメントの構成図である。
【図２６】ＣＯＭマーカセグメントの構成図である。
【図２７】ＪＰ２ファイルの構造を示す図である。
【図２８】Ｂｏｘの情報構造を示す図である。
【図２９】Ｂｏｘの情報内容の説明図である。
【図３０】ＪＰＭファイルの構造を示す図である。
【図３１】分割情報が記録された外部データベースの持つ関連付けを示す表の例を示す図である。
【符号の説明】
【０１０９】
１００    パーソナルコンピュータ（ＪＰＴサーバ）
１０１    パーソナルコンピュータ（ＪＰＴクライアント）
１０２    ネットワーク
１１０    ＣＰＵ
１１１    ＲＡＭ
１１２    ハードディスク装置
１１３    表示装置
１１４    入力装置
１１５    ネットワーク・インターフェース
【図１】
0004743613.tif 000002
【図２】
0004743613.tif 000003
【図３】
0004743613.tif 000004
【図４】
0004743613.tif 000005
【図５】
0004743613.tif 000006
【図６】
0004743613.tif 000007
【図７】
0004743613.tif 000008
【図８】
0004743613.tif 000009
【図９】
0004743613.tif 000010
【図１０】
0004743613.tif 000011
【図１１】
0004743613.tif 000012
【図１２】
0004743613.tif 000013
【図１３】
0004743613.tif 000014
【図１４】
0004743613.tif 000015
【図１５】
0004743613.tif 000016
【図１６】
0004743613.tif 000017
【図１７】
0004743613.tif 000018
【図１８】
0004743613.tif 000019
【図１９】
0004743613.tif 000020
【図２０】
0004743613.tif 000021
【図２１】
0004743613.tif 000022
【図２２】
0004743613.tif 000023
【図２３】
0004743613.tif 000024
【図２４】
0004743613.tif 000025
【図２５】
0004743613.tif 000026
【図２６】
0004743613.tif 000027
【図２７】
0004743613.tif 000028
【図２８】
0004743613.tif 000029
【図２９】
0004743613.tif 000030
【図３０】
0004743613.tif 000031
【図３１】
0004743613.tif 000032