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