JP4789197B2 - Code processing apparatus, code processing method, program, and information recording medium - Google Patents
Code processing apparatus, code processing method, program, and information recording medium Download PDFInfo
- Publication number
- JP4789197B2 JP4789197B2 JP2006137822A JP2006137822A JP4789197B2 JP 4789197 B2 JP4789197 B2 JP 4789197B2 JP 2006137822 A JP2006137822 A JP 2006137822A JP 2006137822 A JP2006137822 A JP 2006137822A JP 4789197 B2 JP4789197 B2 JP 4789197B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- code
- progression order
- processing
- tile
- 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
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
本発明は、画像の圧縮符号の処理に係り、特に、プログレッションオーダに従って配列された部分符号から構成されていて部分符号の配列中でのプログレッションオーダの変更が許容される符号、具体的には例えばJPEG2000の符号の処理に関する。本発明はJPIPサーバ等に好適に応用できるものである。 The present invention relates to processing of a compression code of an image, and in particular, a code that is composed of partial codes arranged in accordance with a progression order and is allowed to change the progression order in the arrangement of partial codes. The present invention relates to JPEG2000 code processing. The present invention can be suitably applied to a JPIP server or the like.
プログレッションオーダに従って配列された部分符号から構成されていて部分符号の配列中でのプログレッションオーダの変更が許容された符号として、例えばJPEG2000の符号がある。JPEG2000の符号では、部分符号であるパケットを選択的にアクセスしてデコードしたり送信したりする処理が可能である。本発明は、このような符号の処理の目的に好適なものである。 As a code that is composed of partial codes arranged in accordance with the progression order and is allowed to change the progression order in the partial code arrangement, for example, there is a JPEG2000 code. In the JPEG2000 code, a packet that is a partial code can be selectively accessed and decoded or transmitted. The present invention is suitable for the purpose of such code processing.
ここで、JPEG2000の符号化処理と符号構造について、本発明の理解に必要な限度で説明する。 Here, the encoding process and code structure of JPEG2000 will be described to the extent necessary for understanding the present invention.
JPEG2000の符号化処理は概ね図1のブロック図に示す流れで行われる。画像は矩形のタイルに分割される(分割数≧1)。各タイルは、輝度・色差等のコンポ−ネントへ色変換される(ブロック1)。RBGデータのような正数で表されるデータの場合、ダイナミックレンジの半分を減じるDCレベルシフトも施される。変換後のコンポ−ネント(タイルコンポ−ネントと呼ばれる)はウェーブレット変換を適用されてサブバンドに分割される(ブロック2)。1回のウェーブレット変換(デコンポジション)によってLL,HL,LH,HHと略称される4つのサブバンドに分割される。そして、LLサブバンドに対して再帰的にウェーブレット変換を繰返すと、最終的に1つのLLサブバンドと複数のHL,LH,HHサブバンドが生成される。 JPEG2000 encoding processing is generally performed according to the flow shown in the block diagram of FIG. The image is divided into rectangular tiles (number of divisions ≧ 1). Each tile is color-converted into components such as luminance and color difference (block 1). In the case of data represented by a positive number such as RBG data, a DC level shift that reduces half of the dynamic range is also performed. The transformed component (referred to as a tile component) is divided into subbands by applying wavelet transformation (block 2). The signal is divided into four subbands abbreviated as LL, HL, LH, and HH by one wavelet transform (decomposition). When the wavelet transform is repeated recursively for the LL subband, one LL subband and a plurality of HL, LH, and HH subbands are finally generated.
3回のウェーブレット変換(デコンポジション)を行った場合のサブバンドを図3に示す。図3中の各サブバンド名の接頭の数字(例えば”3LL”の”3”)は、デコンポジションレベル(施されたウェーブレット変換の回数)を示す。また、後の説明のため、デコンポジションレベルと解像度レベルの関係を図3に示した。 FIG. 3 shows subbands when wavelet transform (decomposition) is performed three times. A prefix number (for example, “3” of “3LL”) of each subband name in FIG. 3 indicates a decomposition level (the number of wavelet transforms performed). For the purpose of later explanation, the relationship between the decomposition level and the resolution level is shown in FIG.
9×7変換と呼ばれる非可逆ウェーブレット変換が用いられる場合には、ウェーブレット係数は、サブバンド毎に線形量子化(正規化を含む)を施され(ブロック3)、次にエントロピー符号化される(ブロッ4)。このエントロピー符号化では、各サブバンドはプリシンクトとよばれる矩形に分割される。プリシンクトとは、サブバンドを矩形に分割したもので、HL,LH,HHの3つのサブバンドの対応したプリシンクトは3つで1まとまりとして扱われる。ただし、LLサブバンドを分割したプリシンクトは1つで1まとまりとして扱われる。プリシンクトは、大まかには画像中の場所(Position)を表すものである。プリシンクトはサブバンドと同じサイズにできる。プリシンクトをさらに矩形に分割したものがコードブロックである。 When an irreversible wavelet transform called 9 × 7 transform is used, the wavelet coefficients are subjected to linear quantization (including normalization) for each subband (block 3), and then entropy coded ( Block 4). In this entropy coding, each subband is divided into rectangles called precincts. The precinct is a subband divided into rectangles, and three precincts corresponding to the three subbands HL, LH, and HH are treated as one unit. However, one precinct obtained by dividing the LL subband is handled as one unit. The precinct roughly represents a position in the image. The precinct can be the same size as the subband. A code block is obtained by further dividing the precinct into rectangles.
図2にタイル、サブバンド、プリシンクト、コードブロックの関係を示す。よって、物理的な大きさの序列は、画像≧タイル>サブバンド≧プリシンクト≧コードブロックとなる。 FIG. 2 shows the relationship among tiles, subbands, precincts, and code blocks. Therefore, the physical size order is image ≧ tile> subband ≧ precinct ≧ code block.
以上の分割の後、係数のエントロピー符号化(ビットプレーン符号化)が、コードブロック毎かつビットプレーン順に行われる。 After the above division, coefficient entropy coding (bit-plane coding) is performed for each code block and in order of bit-plane.
次に必要なエントロピー符号をまとめてパケットを生成する(ブロック5)。パケットとは、プリシンクトに含まれる全てのコードブロックから、ビットプレーンの符号の一部(例えば全てのコードブロックのMSBから3枚目までのビットプレーンの符号)を集めたものにヘッダ(パケットヘッダ)をつけたものである。上記”一部”は”空”(から)でもよいので、パケットの中身が符号的には”空)”ということもある。パケットヘッダには、当該パケットに含まれる符号に関する情報が含まれる。各パケットは独立に扱うことができる。いわばパケットは符号の単位である。 Next, necessary entropy codes are collected to generate a packet (block 5). A packet is a header (packet header) in which all code blocks included in a precinct collect a part of the code of a bit plane (for example, the code from the MSB to the third bit plane of all code blocks). It is a thing attached. Since the “part” may be “empty” (from), the content of the packet may be “empty” in terms of code. The packet header includes information regarding codes included in the packet. Each packet can be handled independently. In other words, a packet is a unit of code.
そして、全てのプリシンクト(=全てのコードブロック=全てのサブバンド)のパケットを集めると、画像全域の符号の一部(例えば、画像全域のウェーブレット係数の、MSBから3枚目までのビットプレーンの符号)ができるが、これをレイヤと呼ぶ。レイヤは、大まかには画像全体のビットプレーンの符号の一部であるから、デコードされるレイヤ数が増えれば画質は上がることになる。すなわち、レイヤは画質の単位である。すべてのレイヤを集めると、画像全域の全てのビットプレーンの符号になる。 When packets of all precincts (= all code blocks = all subbands) are collected, a part of the code of the entire image area (for example, wavelet coefficients of the entire image area of the bit planes from the MSB to the third frame) This is called a layer. Since the layer is roughly a part of the code of the bit plane of the entire image, the image quality increases as the number of layers to be decoded increases. That is, a layer is a unit of image quality. When all layers are collected, it becomes the code of all bit planes of the entire image.
デコンポジションレベル数=2、プリシンクトサイズ=サブバンドサイズ、としたときのレイヤの例を図4の上段に示す。いくつかのレイヤに含まれるパケットを図4の下段に太枠で囲んで示す。 An example of layers when the number of decomposition levels = 2 and the precinct size = subband size is shown in the upper part of FIG. Packets included in several layers are shown in a lower frame in FIG.
以上のようにして生成されたパケットやレイヤの区切りに従って、パケットを配列するとともに必要なタグやタグ情報を付加することにより、最終的なJPEG2000の符号(コードストリーム)が形成される(ブロック6)。 The final JPEG2000 code (code stream) is formed by arranging packets and adding necessary tags and tag information according to the packet and layer delimiters generated as described above (block 6). .
以上の説明から理解されるように、パケットは
・どのコンポ−ネント(記号C)に属するか、
・どの解像度レベル(記号R)に属するか、
・どのプリシンクト(“場所”,記号P)に属するか、
・どのレイヤ(記号L)に属するか、
という4つの属性(本願では、これら属性を”プログレッション属性”と呼ぶ)を有する。パケットの先頭にはパケットヘッダがあり、その後にMQ符号(パケットデータ)が続いているが、パケットヘッダには上記属性そのものは記述されていない。
As can be understood from the above description, the component to which the packet belongs (symbol C),
-Which resolution level (symbol R) belongs to
-Which precinct ("location", symbol P) belongs to
-Which layer (symbol L) belongs to
(In the present application, these attributes are referred to as “progression attributes”). There is a packet header at the beginning of the packet, followed by an MQ code (packet data), but the attribute itself is not described in the packet header.
パケットの配列とは、パケット(パケットヘッダとパケットデータ)を、どの属性の順に階層的に並べるかを意味する。この配列順をプログレッションオーダと呼び、図5に示す5通りが規定されている。 The packet arrangement means the order in which attributes packets (packet header and packet data) are arranged hierarchically. This arrangement order is called a progression order, and five patterns shown in FIG. 5 are defined.
ここで、エンコーダがプログレッションオーダに従ってパケットを並べる様子と、デコーダがプログレッションオーダに従ってパケットの属性を解釈する様子を以下に示す。 Here, the manner in which the encoder arranges the packets according to the progression order and the manner in which the decoder interprets the attributes of the packets in accordance with the progression order are shown below.
例えば、LRCPプログレッションオーダの場合、次のようなforループ
for(レイヤ){
for(解像度){
for(コンポ−ネント){
for(プリシンクト){
エンコード時:パケットを配置
デコード時:パケットの属性を解釈
}
}
}
}
により、パケットの配列(エンコード時)又は解釈(デコード時)がなされる。
For example, in the case of LRCP progression order, the following for loop
for (layer) {
for (resolution) {
for (component) {
for (Precinct) {
Encoding: Place packet
When decoding: Interpret packet attributes}
}
}
}
Thus, the packet is arranged (when encoded) or interpreted (when decoded).
各パケットのパケットヘッダには、
・そのパケットが空かどうか、
・そのパケットにどのコードブロックが含まれるか、
・そのパケットに含まれる各コードブロックのゼロビットプレーン数、
・そのパケットに含まれる各コードブロック符号のコーディングパス数(ビットプレーン数)、
・そのパケットに含まれる各コードブロックの符号長、
が記載されている。しかし、レイヤ番号や解像度レベル等はパケットヘッダには一切記載されていない。デコード時に、そのパケットがどのレイヤのどの解像度レベルのものかを判別するには、メインヘッダ中のCODマーカセグメント(図13参照)等に記載されたプログレッションオーダから上記のようなforループを構成し、そのパケットに含まれる各コードブロックの符号長の和からパケット長を求めることによってパケットの切れ目を判別し、各パケットがforループ内のどの位置でハンドリングされたかを見ればよい。これは、パケットヘッダ中の符号長さえ読み出せば、パケットデータ(エントロピー符号)をデコードしなくとも、次のパケットを検出できること、すなわち任意のパケットにアクセス可能であることを意味する。
In the packet header of each packet,
Whether the packet is empty,
Which code block is included in the packet,
The number of zero bit planes for each code block included in the packet,
-The number of coding passes (number of bit planes) of each code block code included in the packet,
The code length of each code block included in the packet,
Is described. However, the layer number and resolution level are not described in the packet header at all. In order to determine which resolution level of which layer the packet is at the time of decoding, the for loop as described above is constructed from the progression order described in the COD marker segment (see FIG. 13) in the main header. Then, by determining the packet length by obtaining the packet length from the sum of the code lengths of the code blocks included in the packet, it is only necessary to determine at which position in the for loop each packet is handled. This means that as long as the code length in the packet header is read, the next packet can be detected without decoding the packet data (entropy code), that is, any packet can be accessed.
なお、本願においては、上記のようなforループの一番外側(最外殻)を”プログレッションオーダの最外殻”と呼ぶ。 In the present application, the outermost (outermost shell) of the for loop as described above is referred to as “progression order outermost shell”.
図6は、LRCPプログレッションオーダの符号の様な、プログレッションオーダの最外殻に位置する属性がレイヤ(L)であるレイヤプログレッシブ符号の概念図である。ただし、タイルパート(後述)の数は1としている。 FIG. 6 is a conceptual diagram of a layer progressive code in which an attribute located at the outermost shell of the progression order is a layer (L), such as a code of the LRCP progression order. However, the number of tile parts (described later) is 1.
図7に、画像サイズ=100×100画素、タイル分割無し(1タイル)、2レイヤ(0,1)、解像度レベル数=3(0〜2)、3コンポ−ネント(0〜2)、プリシンクトサイズ=32×32、LRCPプログレッションオーダの場合における36個のパケットの配列例を示す。ただし、タイルパート(後述)の数は1としている。 In FIG. 7, the image size = 100 × 100 pixels, no tile division (1 tile), 2 layers (0, 1), the number of resolution levels = 3 (0 to 2), 3 components (0 to 2), pre- An example of the arrangement of 36 packets in the case of a synch size = 32 × 32 and an LRCP progression order is shown. However, the number of tile parts (described later) is 1.
図8は、RLCPプログレッションオーダの符号の様な、解像度レベル(R)がプログレッションオーダの最外殻に位置する、解像度プログレッシブ符号の概念図である。ただし、タイルパート数は1としている。 FIG. 8 is a conceptual diagram of the resolution progressive code in which the resolution level (R) is located at the outermost shell of the progression order, such as the code of the RLCP progression order. However, the number of tile parts is 1.
図9に、画像サイズ=100×100画素、タイル分割無し(1タイル)、2レイヤ(0,1)、解像度レベル数=3(0〜2)、3コンポ−ネント(0〜2)、プリシンクトサイズ=32×32、RLCPプログレッションオーダの場合における36個のパケットの配列例を示す。ただし、タイルパート(後述)の数は1としている。 In FIG. 9, the image size = 100 × 100 pixels, no tile division (1 tile), 2 layers (0, 1), the number of resolution levels = 3 (0-2), 3 components (0-2), pre- An example of the arrangement of 36 packets in the case of a synch size = 32 × 32 and an RLCP progression order is shown. However, the number of tile parts (described later) is 1.
さて、各タイルを構成する符号を、パケットの切れ目で複数の部分に分割することができ、分割した部分をタイルパートと呼ぶ。なお、先に言及したように、図7と図9はタイルパート数=1の場合である。 Now, the codes constituting each tile can be divided into a plurality of parts at packet breaks, and the divided parts are called tile parts. As mentioned above, FIGS. 7 and 9 show the case where the number of tile parts = 1.
各タイルパートは、パケットのほかに、SOT(start of tile-part)マーカセグメントで始まりSOD(start of data)マーカで終わるヘッダを有し、このヘッダをタイルパートヘッダと呼ぶ(図6,図8,図16参照)。 In addition to the packet, each tile part has a header that starts with an SOT (start of tile-part) marker segment and ends with an SOD (start of data) marker. This header is called a tile part header (FIGS. 6 and 8). , FIG. 16).
図11にSOTマーカセグメントの構成を示す。なお、マーカ(この例ではSOTマーカ)とそれに関連したパラメータから構成されるものをマーカセグメントと呼ぶ。SOTマーカセグメントのパラメータの内容を図12に示す。図12から理解されるように、SOTマーカセグメント中のパラメータPsotの内容を読めば当該タイルパートの長さを知ることができる。したがって、SOTマーカセグメントを読み込めば、パケットヘッダをデコードすることなく、タイルパートの長さを知ることができる。 FIG. 11 shows the configuration of the SOT marker segment. A marker segment (SOT marker in this example) and parameters related to the marker is called a marker segment. The contents of the parameters of the SOT marker segment are shown in FIG. As understood from FIG. 12, the length of the tile part can be known by reading the contents of the parameter Psot in the SOT marker segment. Therefore, if the SOT marker segment is read, the length of the tile part can be known without decoding the packet header.
さて、以上に説明したように、JPEG2000では任意の部分符号にアクセスできるため、サーバに保存されているJPEG2000符号から、クライアント側で必要とする部分符号だけを送受信するためのプロトコルが現在標準化の途上にあり、このプロトコルをJPIP(JPEG2000 Interactive Protocol)と呼ぶ。 Now, as explained above, since arbitrary partial codes can be accessed in JPEG2000, a protocol for transmitting / receiving only partial codes required on the client side from JPEG2000 codes stored in the server is currently in the process of standardization. This protocol is called JPIP (JPEG2000 Interactive Protocol).
このような階層的な符号を部分的にアクセスするためのプロトコルは、古くは、画像の多重解像度表現であるFlashPixと、それにアクセスするためのプロトコルであるIIP(Internet Imaging Protocol)に見ることができる(例えば特許文献1参照)。webサイトhttp://www.i3a.org/i_iip.htmlでIIPの標準書を提供している。また、JPIPに関連した先行技術文献としては、例えばJPIPのキャッシュモデル等に関する特許文献2がある。
Protocols for partially accessing such hierarchical codes can be found in the past from FlashPix, which is a multi-resolution representation of an image, and IIP (Internet Imaging Protocol), which is a protocol for accessing it. (For example, refer to Patent Document 1). IIP standards are provided on the web site http://www.i3a.org/i_iip.html. Further, as a prior art document related to JPIP, for example, there is
以上のように、JPEG2000には5つのプログレッションオーダが存在するが、エンコード時には、1つの符号中で、これらのうちの複数のプログレッションオーダを混在させることができる。例えば、画像サイズ=100×100画素、2レイヤ、解像度レベル数=3(0〜2)、3コンポ−ネント(0〜2)、プリシンクトサイズ=32×32(図7相当)の36個のパケットに関し、
for(レイヤ=0){
for(解像度レベル=0,1,2){
for(コンポ−ネント=0,1,2){
for(全てのプリシンクト){
パケットを配置
}
}
}
}
のように、forループを回す回数を制限して、前半の18個のパケットをLRCP順に配列し、後半の18個のパケットに関しては
for(コンポ−ネント=0,1,2){
for(全てのプリシンクト){
for(解像度レベル=0,1,2){
for(レイヤ=0,1){
未だ配置されていないパケットのみを配置
}
}
}
}
のforループによりCPRL順に配置することができる。この例の場合のパケット配列を図10に示す。
As described above, there are five progression orders in JPEG2000, but at the time of encoding, a plurality of these progression orders can be mixed in one code. For example, 36 image sizes = 100 × 100 pixels, 2 layers, number of resolution levels = 3 (0 to 2), 3 components (0 to 2), and precinct size = 32 × 32 (corresponding to FIG. 7) For packets
for (layer = 0) {
for (resolution level = 0,1,2) {
for (component = 0,1,2) {
for (all precincts) {
Place packet}
}
}
}
As described above, the number of times the for loop is turned is limited to arrange the 18 packets in the first half in the LRCP order.
for (component = 0,1,2) {
for (all precincts) {
for (resolution level = 0,1,2) {
for (layer = 0,1) {
Place only packets that have not been placed yet}
}
}
}
Can be arranged in CPRL order by the for loop. The packet arrangement in this example is shown in FIG.
このように、メインヘッダ中で規定されたデフォルトのプログレッションオーダに対して、プログレッションオーダを変更もしくは再規定することをプログレッションオーダチェンジ(POC)と呼び、この変更を明示するためにはメインヘッダまたは最初のタイルパートのタイルパートヘッダ中にPOCマーカセグメントが挿入される。 In this way, changing or re-defining a progression order relative to the default progression order specified in the main header is called a progression order change (POC). A POC marker segment is inserted into the tile part header of each tile part.
図14にPOCマーカセグメントの構造を示す。図15にPOCマーカセグメントのパラメータの内容を示す。i回目のプログレッションオーダチェンジ指定による変更後のプログレッションオーダがPpoc(i)に記載され、パラメータRSpoc(i)、CSpoc(i)、REpoc(i)、CEpoc(i)、LYpoc(i)により、その時のforループを回す回数がループ変数の”最初”および”最後”で指定される。すなわち、解像度レベルであれば、”最初”以上”最後”未満の解像度レベルについて、Ppocで指定されたプログレッションオーダのforループが回されることになる。ただし、レイヤについては、常に”最初”のレイヤ番号=0である。 FIG. 14 shows the structure of the POC marker segment. FIG. 15 shows the contents of the parameters of the POC marker segment. The progression order after the i-th progression order change designation is described in Ppoc (i), and the parameters RSpoc (i), CSpoc (i), REpoc (i), CEpoc (i), and LYpoc (i) The number of times the for loop is turned is designated by “first” and “last” of the loop variable. In other words, for the resolution level, the for loop of the progression order specified by Ppoc is rotated for the resolution level of “first” or more and less than “last”. However, for the layer, the “first” layer number = 0 is always set.
また、プログレッションオーダチェンジ指定は2回以上の任意回数行うことができる。図10の例で言えば、デフォルトのプログレッションオーダに対して、先頭のパケットから適用される1回目のプログレッションオーダチェンジ(再規定)が行われ、LRCPのforループの”最初”および”最後”が指定される。次に途中のパケットから適用される2回目のプログレッションオーダチェンジ(再規定)で、CPRLのforループの”最初”および”最後”が指定される。また、図14に見られるように、1つのPOCマーカセグメント中で複数回のプログレッションオーダチェンジを指定できる。 Further, the specification of the progression order change can be performed any number of times more than once. In the example of FIG. 10, the first progression order change (re-definition) applied from the first packet is performed for the default progression order, and the “first” and “last” of the LRCP for loop are changed. It is specified. Next, the “first” and “last” of the for loop of CPRL is designated by the second progression order change (re-definition) applied from the intermediate packet. Further, as shown in FIG. 14, a plurality of progression order changes can be designated in one POC marker segment.
さて、プログレッションオーダチェンジ(POC)指定のある符号のパケット配列は複雑なものとなるため、そのままのパケット配列では符号中の所望のパケットを選択することが難しい。例えば、図10のパケット列から解像度レベル1までの全てのパケット(太線枠で囲んだパケット)だけをデコードしたい場合に、それら所望のパケットが符号中のどの位置に出現するかの決定が煩雑になる。
Now, since the packet arrangement of the code with the designation of progression order change (POC) becomes complicated, it is difficult to select a desired packet in the code with the packet arrangement as it is. For example, when it is desired to decode only all packets (packets surrounded by a thick line frame) from the packet sequence in FIG. 10 to
そこで、プログレッションオーダチェンジ指定のある符号の一部のパケットを選択してデコードするような場合に通常採られる手法は、まず、メモリに格納された符号中の各パケットをアクセスするためのポインタ情報(例えばパケットの先頭位置と長さ)を求め、これを特定のプログレッションオーダ(例えばデフォルトのプログレッションオーダ)の順にソートした形で配列に記録しておき、次に、特定のプログレッションオーダのforループを回して所望のパケットの先頭位置と長さを上記配列より取得し、これに基づいて符号中の所望のパケットにアクセスする手法であろう。 In view of this, a method usually adopted when selecting and decoding a part of a packet of a code having a designation of progression order change is first to provide pointer information for accessing each packet in the code stored in the memory ( For example, the top position and length of the packet are obtained and recorded in an array in the order of a specific progression order (for example, default progression order), and then the for loop of the specific progression order is turned. Thus, the method may be a method of obtaining the start position and length of a desired packet from the above array and accessing the desired packet in the code based on this.
一例として、図10に示したパケット配列の符号中の解像度レベル1までの全てのパケット(図10中の太線枠で囲んだパケット)だけを選択してデコードする場合を考えると、通常、各タイルに関し次のような手順がとられるであろう。なお、処理はタイル毎に行われる。
As an example, considering the case of selecting and decoding only all packets up to
[ステップ1]該タイルに関する全てのパケットをメモリAに読み込む。 [Step 1] All packets related to the tile are read into the memory A.
[ステップ2]パケットの先頭位置とパケット長を要素に持つ構造体P
struct P{
パケットの先頭位置;
パケット長;
}
を定義し、該タイルのパケットの総数を計算し、該総数分の構造体Pの配列Bを用意する。そして、デフォルトのプログレッションオーダに対応したforループを構成し、このforループを全て回して配列Bの全ての要素(構造体P)を初期化する。
[Step 2] Structure P having the packet start position and packet length as elements
struct P {
Beginning position of packet;
Packet length;
}
And the total number of packets of the tile is calculated, and an array B of structures P corresponding to the total number is prepared. Then, a for loop corresponding to the default progression order is configured, and all the elements (structure P) of the array B are initialized by turning all the for loops.
[ステップ3]最初のプログレッションオーダチェンジ指定に対応したforープを構成し、このforループを回してメモリA中のパケットついてのポインタ情報を求めて配列Bに格納する処理を行う。すなわち、
for(レイヤ=0){
for(解像度レベル=0,1,2){
for(コンポ−ネント=0,1,2){
for(全てのプリシンクト){
パケットの属性を解釈し、メモリA上の該パケットの先頭位置と長さを求
め(パケット長は、パケットヘッダをデコードし、あるいはPLTマーカ
セグメントを解釈して求めることができる)、これをデフォルトのプログレ
ッションオーダに従ってソートした形で配列Bに格納する
}
}
}
}
なお、パケットの先頭位置とパケット長をデフォルトのプログレッションオーダに従ってソートした形で配列Bに格納するとは、配列Bの各要素がデフォルトのプログレッションオーダに従った属性を持つものとして、上記forループで解釈されたパケットの属性に対応した(同じ属性を持つ)配列Bの要素に、そのパケットの先頭位置とパケット長を格納する、という意味である。
[Step 3] A for loop corresponding to the first progression order change designation is formed, and this for loop is performed to obtain pointer information for the packet in the memory A and store it in the array B. That is,
for (layer = 0) {
for (resolution level = 0,1,2) {
for (component = 0,1,2) {
for (all precincts) {
Interpret the packet attributes and determine the start position and length of the packet on memory A
(Packet length is determined by decoding packet header or PLT marker
This can be determined by interpreting the segment)
Store in array B in a sorted form according to the order of the order}
}
}
}
Note that storing the start position of the packet and the packet length in the array B in a form sorted according to the default progression order means that each element of the array B has an attribute according to the default progression order and is interpreted by the above for loop. This means that the start position and the packet length of the packet are stored in the element of the array B corresponding to the attribute of the packet that has been assigned (having the same attribute).
[ステップ4]2回目のプログレッションオーダチェンジで規定されたforループを構成し、このforループを回して、前記ステップ3で最後に処理されたメモリA中のパケットの次のパケットから処理する、すなわち、
for(コンポ−ネント=0,1,2){
for(全てのプリシンクト){
for(解像度レベル=0,1,2){
for(レイヤ=0,1){
パケットの属性を解釈
その属性のパケットの先頭位置がすでに配列Bに保存されていなければ
(条件A)、メモリA上の当該パケットの先頭位置とパケット長をデフォルトの
プログレッションオーダに従って配列Bに保存する
}
}
}
}
かくして、配列B上に、プログレッションオーダチェンジの影響を排除した形で、すなわち、デフォルトのプログレッションオーダの順にソートされた形で、1つのタイルに関する全てのパケットのポインタ情報(先頭位置と長さ)が記録された。
[Step 4] A for loop defined by the second progression order change is formed, and this for loop is turned to process from the packet next to the packet in the memory A last processed in the
for (component = 0,1,2) {
for (all precincts) {
for (resolution level = 0,1,2) {
for (layer = 0,1) {
Interpret packet attributes
If the start position of the packet with the attribute is not already stored in the array B (condition A), the start position and the packet length of the packet on the memory A are set to the default.
Save to array B according to progression order}
}
}
}
Thus, the pointer information (start position and length) of all packets related to one tile is stored on the array B in a form that excludes the influence of the progression order change, that is, in the form sorted in the order of the default progression order. Recorded.
[ステップ5]したがって、デフォルトのプログレッションオーダのforループを構成し、所望のパケットを選択的にデコードすることができる。すなわち、
for(全てのレイヤ){
for(解像度レベル=0,1){
for(全てのコンポ−ネント){
for(プリシンクト){
当該パケット属性に対応した配列Bの要素から読み出した当該パケットの先頭
位置と長さに基づき、メモリA中の当該パケットを読み出してエントロピー復
号する
}
}
}
}
の処理により各タイルについて解像度レベル1までのパケットのみ選択しデコードすることができる。
[Step 5] Therefore, it is possible to construct a default progression order for loop and selectively decode a desired packet. That is,
for (all layers) {
for (resolution level = 0,1) {
for (all components) {
for (Precinct) {
The head of the packet read from the element of the array B corresponding to the packet attribute
Based on the position and length, the packet in memory A is read and entropy restored.
Issue}
}
}
}
With this processing, only packets up to
なお、上記ステップ4において、「その属性のパケットの先頭位置がすでに配列B中に保存されていなければ」という条件Aを置くのは、forループのループ変数の”最初”と”最後”の指定だけでは、ステップ3とステップ4のforループが必ずしも排他的とはならず重複範囲をもってしまうことがあるからである(ただし、この重複はパケットが重複して配置されることを意味しない)。
In
上に述べた手法は汎用的ではある。しかし、常にこの手法を適用することは、選択しない多くのパケット(図10の例では太線で囲まれたパケット以外のパケット)についてまでも、パケット長を知るためにパケットヘッダをデコードするか、あるいは最初のタイルパートヘッダに挿入されたPLTマーカセグメント(図17−1,図17−2参照)を解釈しなければならず、処理に無駄が多く高速化に不向きであるという問題がある。符号の一部の部分符号のみのデコード等を行うのは、もともの処理の高速化を意図するものであるから、無駄な処理は極力排除すべきである。 The method described above is general purpose. However, always applying this method is to decode the packet header in order to know the packet length, even for many packets that are not selected (packets other than those surrounded by a thick line in the example of FIG. 10), or The PLT marker segment (see FIGS. 17-1 and 17-2) inserted in the first tile part header must be interpreted, and there is a problem that processing is wasteful and unsuitable for speeding up. Decoding only a partial code of the code is intended to speed up the original process, and therefore wasteful processing should be eliminated as much as possible.
また、高速化を実現するためには、無駄なパケットヘッダのデコードを減らすほかに、JPEG2000の符号自体のメモリへの読み込みもできるだけ少なくするべきである。すなわち、上記手法のステップ1では「該タイルに関する全てのパケットをメモリAに読み込む」であったが、これが常に必要であるとは限らないので、処理の進捗に応じて必要な分のパケットだけをメモリAに読み込む、ということも可能なのである。
In order to achieve high speed, in addition to reducing useless decoding of packet headers, the JPEG2000 code itself should be read as little as possible. That is, in
本発明は、以上の諸点に鑑み、JPEG2000の符号や、その他のプログレッションオーダの途中変更が許容された部分符号の集合からなる符号から、必要な部分符号をアクセスするためポインタ情報を取得する処理を効率化、高速化することにある。 In view of the above points, the present invention performs processing for obtaining pointer information for accessing a necessary partial code from a JPEG 2000 code or a code consisting of a set of partial codes that are allowed to be changed in the middle of the progression order. To improve efficiency and speed.
請求項1記載の発明は、
プログレションオーダに従って配列された部分符号から構成されていて部分符号の配列中でのプログレッションオーダの変更が許容される符号を扱う符号処理装置であって、
第1の記憶手段に格納されている、前記符号の各部分符号をアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号の部分符号の配列中でのプログレッションオーダの変更の有無を判定する第1の判定手段、
前記符号の、ユーザにより指定された部分符号が、先頭の部分符号から連続的に配列されているか否かの判定を行う第2の判定手段を有し、
前記第1の判定手段によりプログレッションオーダの変更が無いと判定され、かつ、前記第2の判定手段により前記指定された部分符号が前記符号の先頭の部分符号から連続的に配列されていると判定された場合に、前記処理手段において前記符号の前記指定された部分符号のみを対象にして前記処理を行うことを特徴とする符号処理装置である。
The invention described in
A code processing device that handles codes that are composed of partial codes arranged in accordance with a progression order and that allow change of the progression order in the arrangement of partial codes,
Processing for obtaining pointer information for accessing each partial code of the code stored in the first storage means, and storing the pointer information in the second storage means in a form sorted according to one progression order. Processing means to perform,
First determination means for determining whether or not there is a change in progression order in the array of partial codes of the code;
A second determination means for determining whether or not the partial code designated by the user of the code is continuously arranged from the first partial code;
It is determined by the first determination means that there is no change in progression order, and the second determination means determines that the designated partial code is continuously arranged from the first partial code of the code. In this case, the processing means performs the processing only on the designated partial code of the code.
請求項2記載の発明は、
プログレションオーダに従って配列された部分符号から構成されていて部分符号の配列中でのプログレッションオーダの変更が許容される符号を扱う符号処理装置であって、
第1の記憶手段に格納されている、前記符号の各部分符号をアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号中のプログレッションオーダの変更の有無を判定する第1の判定手段、
前記符号の、ユーザにより指定された部分符号が、先頭の部分符号から連続的に配列されているか否かの判定を行う第2の判定手段、
前記指定された部分符号の配列中でのプログレッションオーダの変更の有無を判定する第3の判定手段を有し、
前記第1の判定手段により前記符号中のプログレッションオーダの変更が有ると判定された場合において、前記第2の判定手段により前記指定された部分符号が前記符号の先頭の部分符号から連続的に配列されていると判定され、かつ、前記第2の判定手段により前記指定された部分符号の配列中でのプログレッションオーダの変更が無いと判定されときに、前記処理手段は前記指定された部分符号のみを対象にして前記処理を行うことを特徴とする符号処理装置である。
The invention according to
A code processing device that handles codes that are composed of partial codes arranged in accordance with a progression order and that allow change of the progression order in the arrangement of partial codes,
Processing for obtaining pointer information for accessing each partial code of the code stored in the first storage means, and storing the pointer information in the second storage means in a form sorted according to one progression order. Processing means to perform,
First determination means for determining whether or not a progression order in the code is changed;
Second determination means for determining whether or not the partial code specified by the user of the code is continuously arranged from the first partial code;
A third determination unit for determining whether or not the progression order is changed in the specified partial code array;
When it is determined by the first determination means that there is a change in the progression order in the code, the designated partial code is continuously arranged from the first partial code of the code. And when the second determination means determines that there is no change in the progression order in the array of the specified partial codes, the processing means only performs the specified partial codes. The code processing device is characterized by performing the above-described processing.
請求項3記載の発明は、
JPEG2000の符号を扱う符号処理装置であって、
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号のタイル毎に、プログレションオーダチェンジ指定の有無を判定する第1の判定手段、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定手段を有し、
前記第1の判定手段によりプログレッションオーダチェンジ指定が無いと判定された前記符号のタイルについて、前記第2の判定手段により前記指定されたパケットが先頭パケットから連続的に配列されていると判定された場合に、前記処理手段において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理装置である。
The invention described in
A code processing apparatus that handles JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing means,
First determination means for determining whether or not a progression order change is designated for each tile of the code;
A second determination unit configured to determine whether or not packets designated by the user are continuously arranged from the top packet for each tile of the code;
For the tile of the code that has been determined by the first determination means that there is no progression order change designation, it is determined by the second determination means that the designated packets are continuously arranged from the top packet. In this case, the processing means performs the processing only on the designated packet.
請求項4記載の発明は、
請求項3記載の発明に係る符号処理装置であって、
前記第1の判定手段によりプログレッションオーダチェンジ指定が無いと判定された前記符号のタイルについて、前記第2の判定手段はデフォルトのプログレッションオーダの最外殻の属性が前記指定されたパケットに対応したforループの最外殻の属性と一致するときに、前記指定されたパケットが先頭パケットから連続的に配列されていると判定することを特徴とする符号処理装置である。
The invention according to
A code processing device according to the invention of
For the tile of the code that has been determined by the first determination means that there is no progression order change designation, the second determination means uses the fore in which the attribute of the outermost shell of the default progression order corresponds to the designated packet. The code processing device is characterized in that when the attribute of the outermost shell of the loop is matched, it is determined that the designated packet is continuously arranged from the head packet.
なお、上記の属性の「一致」には「実質的な一致」も含まれる。例えば、タイルのデフォルトのプログレッションオーダがLRCPで、レイヤ数が1であると、実質的なプログレッションオーダはRCPであっても、その実質的な最外殻の属性はRとみることができる。そして、例えば所望のパケットとして、ある解像度レベル以下の全てのパケットが指定されたとすると、所望のパケットに対応したforループの最外殻の属性はRであり、これはプログレッションオーダの実質的な最外殻の属性Rと一致する。このようなケースが「実質的な一致」の典型例である。請求項6,10,12記載の発明における属性の「一致」には同様な「実質的な一致」も含まれる。
Note that the “match” of the attribute includes “substantial match”. For example, if the default progression order of a tile is LRCP and the number of layers is 1, even if the substantial progression order is RCP, the attribute of the substantial outermost shell can be regarded as R. For example, if all packets of a certain resolution level or lower are designated as the desired packet, the attribute of the outermost shell of the for loop corresponding to the desired packet is R, which is a substantial maximum of the progression order. It matches the attribute R of the outer shell. Such a case is a typical example of “substantial coincidence”. Similar “substantial matching” is also included in the attribute “matching” in the inventions of
請求項5記載の発明は、
JPEG2000の符号を扱う符号処理装置であって、
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号のタイル毎に、プログレッションオーダチェンジ指定の有無を判定する第1の判定手段、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定手段、
前記符号のタイル毎に、前記指定されたパケットの配列中でのプログレッションオーダの変更の有無を判定する第3の判定手段を有し、
前記第1の判定手段によりプログレッションオーダチェンジ指定が有ると判定されたタイルについて、前記第2の判定手段により前記指定されたパケットが先頭パケットから連続的に配列されていると判定され、かつ、前記第3の判定手段により前記指定されたパケットの配列中でのプログレッションオーダの変更が無いと判定された場合に、前記処理手段において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理装置である。
The invention according to
A code processing apparatus that handles JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing means,
First determination means for determining whether or not a progression order change is designated for each tile of the code;
Second determination means for determining whether or not packets designated by the user are continuously arranged from the top packet for each tile of the code;
Third determination means for determining whether or not there is a change in the progression order in the specified packet arrangement for each tile of the code,
For the tile determined to have a progression order change designation by the first determination means, the second determination means determines that the specified packet is continuously arranged from the top packet, and When the third determination unit determines that there is no change in the progression order in the specified packet arrangement, the processing unit performs the process only on the specified packet. Is a code processing device.
請求項6記載の発明は、
請求項5記載の発明に係る符号処理装置であって、
前記第1の判定手段によりプログレッションオーダチェンジ指定が有ると判定されたタイルについて、前記第2の判定手段は、最初のプログレッションオーダチェンジ指定に対応したプログレッションオーダの最外殻の属性が、前記指定されたパケットに対応したforループの最外殻の属性と一致するときに、前記指定されたパケットが先頭パケットから連続的に配列されていると判定することを特徴とする符号処理装置である。
The invention described in
A code processing device according to the invention of
For the tile determined to have a progression order change designation by the first determination means, the second determination means specifies the attribute of the outermost shell of the progression order corresponding to the first progression order change designation. The code processing device is characterized in that when the attribute of the outermost shell of the for loop corresponding to the received packet matches, it is determined that the designated packet is continuously arranged from the top packet.
請求項7記載の発明は、
請求項5記載の発明に係る符号処理装置であって、
前記第2の判定手段により前記指定されたパケットが先頭タイルから連続的に配列されていると判定されたタイルについて、前記第3の判定手段は、最初のプログレッションオーダチェンジ指定に対応したforループのループ変数の範囲内に、前記指定されたパケットに対応したforループのループ変数の範囲が完全に包含されているときに、前記指定されたパケットの配列中でのプログレッションオーダの変更が無いと判定することを特徴とする符号処理装置である。
The invention described in
A code processing device according to the invention of
For the tile for which the second determining means determines that the specified packet is continuously arranged from the first tile, the third determining means is configured to specify a for loop corresponding to the first progression order change specification. When the range of the loop variable of the for loop corresponding to the specified packet is completely included in the range of the loop variable, it is determined that there is no change in the progression order in the array of the specified packet The code processing device is characterized by the above.
請求項8記載の発明は、
請求項3又は5記載の発明に係る符号処理装置であって、
前記符号のタイルに対する前記指定されたパケットのみを対象とした前記処理手段による前記処理において、該タイルのパケットの前記第1の記憶手段への読み込みを該処理の進捗に合わせ分割して行うことを特徴する符号処理装置である。
The invention described in
A code processing device according to
In the processing by the processing means for only the designated packet with respect to the tile of the code, reading the packet of the tile into the first storage means is performed in accordance with the progress of the processing. This is a characteristic code processing device.
請求項9記載の発明は、
JPEG2000の符号を扱う符号処理方法であって、
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理工程、
前記符号のタイル毎に、プログレションオーダチェンジ指定の有無を判定する第1の判定工程、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定工程を有し、
前記第1の判定工程によりプログレッションオーダチェンジ指定が無いと判定された前記符号のタイルについて、前記第2の判定工程により前記指定されたパケットが先頭パケットから連続的に配列されていると判定された場合に、前記処理工程において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理方法である。
The invention according to claim 9
A code processing method for handling JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing steps,
A first determination step for determining whether a progression order change is specified for each tile of the code;
A second determination step for determining whether or not the packet designated by the user is continuously arranged from the top packet for each tile of the code;
For the tile of the code determined to have no designation of progression order change in the first determination step, it is determined in the second determination step that the specified packet is continuously arranged from the top packet. In this case, the code processing method is characterized in that the processing is performed only on the designated packet in the processing step.
請求項10記載の発明は、
請求項9記載の発明に係る符号処理方法であって、
前記第1の判定工程によりプログレッションオーダチェンジ指定が無いと判定された前記符号のタイルについて、前記第2の判定工程は、デフォルトのプログレッションオーダの最外殻の属性が前記指定されたパケットに対応したforループの最外殻の属性と一致するときに、前記指定されたパケットが先頭パケットから連続的に配列されていると判定することを特徴とする符号処理方法である。
The invention according to
A code processing method according to the invention of claim 9,
For the tile of the code that is determined to have no designation of a progression order change in the first determination step, the second determination step has an attribute of an outermost shell of a default progression order corresponding to the specified packet. The code processing method is characterized in that when the attribute of the outermost shell of the for loop coincides, it is determined that the designated packet is continuously arranged from the top packet.
請求項11記載の発明は、
JPEG2000の符号を扱う符号処理方法であって、
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理工程、
前記符号のタイル毎に、プログレッションオーダチェンジ指定の有無を判定する第1の判定工程、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定工程、
前記符号のタイル毎に、前記指定されたパケットの配列中でのプログレッションオーダの変更の有無を判定する第3の判定工程を有し、
前記第1の判定工程によりプログレッションオーダチェンジ指定が有ると判定されたタイルについて、前記第2の判定工程により前記指定されたパケットが先頭パケットから連続的に配列されていると判定され、かつ、前記第3の判定工程により前記指定されたパケットの配列中でのプログレッションオーダの変更が無いと判定された場合に、前記処理工程において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理方法である。
The invention according to
A code processing method for handling JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing steps,
A first determination step of determining whether or not a progression order change is specified for each tile of the code;
A second determination step of determining whether or not the packet designated by the user is continuously arranged from the top packet for each tile of the code;
A third determination step for determining whether or not there is a change in the progression order in the specified packet arrangement for each tile of the code;
For tiles determined to have a progression order change designation in the first determination step, it is determined in the second determination step that the specified packet is continuously arranged from the top packet, and When it is determined in the third determination step that there is no change in progression order in the specified packet arrangement, the processing is performed only on the specified packet in the processing step. Is a code processing method.
請求項12記載の発明は、
請求項11記載の発明に係る符号処理方法であって、
前記第1の判定工程によりプログレッションオーダチェンジ指定が有ると判定されたタイルについて、前記第2の判定工程は、最初のプログレッションオーダチェンジ指定に対応したプログレッションオーダの最外殻の属性が前記指定されたパケットに対応したforループの最外殻の属性と一致するときに、前記指定されたパケットが先頭パケットから連続的に配列されていると判定することを特徴とする符号処理方法である。
The invention according to
A code processing method according to the invention of
For the tile determined to have a progression order change designation in the first determination step, the second determination step has the attribute of the outermost shell of the progression order corresponding to the first progression order change designation specified The code processing method is characterized in that when the attribute of the outermost shell of the for loop corresponding to the packet matches, it is determined that the designated packet is continuously arranged from the top packet.
請求項13記載の発明は、
請求項11記載の発明に係る符号処理方法であって、
前記第2の判定工程により前記指定されたパケットが先頭パケットから連続的に配列されていると判定されたタイルについて、前記第3の判定工程は、最初のプログレッションオーダチェンジ指定に対応したforループのループ変数の範囲内に、前記指定されたパケットに対応したforループのループ変数の範囲が完全に包含されているときに、前記指定されたパケットの配列中でのプログレッションオーダの変更が無いと判定することを特徴とする符号処理方法である。
The invention according to claim 13
A code processing method according to the invention of
For tiles for which it is determined in the second determination step that the specified packets are continuously arranged from the top packet, the third determination step includes the step of the for loop corresponding to the first progression order change specification. When the range of the loop variable of the for loop corresponding to the specified packet is completely included in the range of the loop variable, it is determined that there is no change in the progression order in the array of the specified packet This is a code processing method.
請求項14記載の発明は、
請求項9又は11記載の発明に係る符号処理方法であって、
前記符号のタイルに対する前記指定されたパケットのみを対象とした前記処理工程による前記処理において、該タイルのパケットの前記第1の記憶手段への読み込みを該処理の進捗に合わせ分割して行うことを特徴する符号処理方法である。
The invention according to claim 14
A code processing method according to the invention of
In the processing by the processing step for only the designated packet with respect to the tile of the code, reading of the packet of the tile into the first storage unit is performed in accordance with the progress of the processing. This is a characteristic code processing method.
請求項15記載の発明は、請求項9乃至14のいずれか1項記載の発明に係る符号処理方法における各工程をコンピュータに実行させるプログラムであって、該符号処理方法における第1の記憶手段及び第2の記憶手段として該コンピュータのメインメモリを利用するプログラムである。 A fifteenth aspect of the invention is a program for causing a computer to execute each step in the code processing method according to any one of the ninth to fourteenth aspects, the first storage means in the code processing method and It is a program that uses the main memory of the computer as second storage means.
請求項16記載の発明は、請求項15記載の発明に係るプログラムが記録された、コンピュータが読み取り可能な情報記録媒体である。 A sixteenth aspect of the invention is a computer-readable information recording medium on which a program according to the fifteenth aspect of the invention is recorded.
本発明によれば、符号中のユーザが指定した部分符号をアクセスするためのポインタ情報を取得する処理を効率よく高速に行うことができる。すなわち、
(1)請求項1記載の発明によれば、符号にプログレッションオーダの変更が無く、ユーザにより指定された部分符号が先頭の部分符号から連続的に配列されている場合に、指定された部分符号についてのポインタ情報を取得する処理を効率良く高速に実行することができる。
(2)請求項2記載の発明によれば、符号にプログレッションオーダの変更が有っても、ユーザにより指定された部分符号が先頭の部分符号から連続的に配列されていて、かつ指定された部分符号の配列中でのプログレッションオーダの変更が無い場合に、指定された部分符号についてのポインタ情報を取得する処理を効率良く高速に実行可能になる。
(3)請求項3,4,0,10記載の発明によれば、JPEG2000の符号のプログレッションオーダチェンジ指定が無いタイルについて、ユーザにより指定されたパケットが先頭パケットから連続的に配列されている場合に、指定されたパケットについてのポインタ情報を取得する処理を効率良く高速に実行することができる。
(4)請求項5−7,11−13記載の発明によれば、JPEG2000の符号のプログレッションオーダチェンジ指定が有るタイルについて、ユーザにより指定された部分符号が先頭パケットから連続的に配列されていて、かつ指定されたパケットの配列中でのプログレッションオーダの変更が無い場合に、指定されたパケットについてのポインタ情報を取得する処理を効率良く高速に実行することができる。
(5)請求項8,14記載の発明によれば、無駄なパケットの読み込みによる処理時間の増加を抑えることができる。
(6)請求項15記載の発明に係るプログラム又は請求項16記載の発明に係る情報記録媒体に記録されたプログラムをコンピュータにロードすることにより、請求項9−14の符号処理方法を実施することができる。換言するならば、コンピュータを、請求項3−8記載の発明に係る符号処理装置として機能させることができる。
ADVANTAGE OF THE INVENTION According to this invention, the process which acquires the pointer information for accessing the partial code | symbol designated by the user in a code | symbol can be performed efficiently and at high speed. That is,
(1) According to the first aspect of the present invention, when there is no change of the progression order in the code and the partial code specified by the user is continuously arranged from the first partial code, the specified partial code The process of acquiring the pointer information for can be executed efficiently and at high speed.
(2) According to the invention described in
(3) According to the invention described in
(4) According to the invention described in claims 5-7 and 11-13, the partial codes designated by the user are continuously arranged from the top packet for tiles for which a JPEG2000 code progression order change is designated. In addition, when there is no change of the progression order in the designated packet array, the processing for obtaining the pointer information for the designated packet can be executed efficiently and at high speed.
(5) According to the inventions of
(6) The code processing method according to any one of claims 9 to 14 is carried out by loading the program according to the invention according to claim 15 or the program recorded on the information recording medium according to the invention according to claim 16 into a computer. Can do. In other words, the computer can be caused to function as the code processing device according to the invention of claims 3-8.
以下、本発明の実施の形態について説明する。 Embodiments of the present invention will be described below.
本発明は、例えば図18に示すようなシステムにおいて実施することができる。図18において、100と101はパーソナルコンピュータ(PC)であり、これらはネットワーク(LAN、イントラネット、インターネット等)102を経由して相互に通信可能である。
The present invention can be implemented, for example, in a system as shown in FIG. In FIG. 18,
PC100はCPU110、メインメモリ(RAM)111、ハードディスク装置112、表示装置113、キーボードやマウス等の入力装置114、ネットワーク・インターフェース115等がバス116に接続された一般的な構成である。PC101も同様の構成で構わない。
The
本発明は、単独のPC100又は101において実施する形態、あるいは、例えばPC101をクライアント、PC100をサーバとしたクライアント・サーバシステム上で実施する形態をとり得る。また、単独のPC100又は101上でクライアント・ソフトウェアとサーバ・ソフトウェアを走らせてクライアント・サーバシステムを構築することも可能であり、かかるシステム上で本発明を実施する形態もとり得る。なお、後述する各実施例を専用のハードウェアで実施することも可能であり、かかる実施形態も本発明に当然に包含される。
The present invention may take a form implemented on a
図19乃至図22、図24、図25は本発明の実施例1を説明するためのフローチャートである。これらフローチャートに示される手順は、図18のPC100(又はPC101)上でソフトウェアによって実行されるものとする。そのためのプログラムは、ハードディスク装置112に保存されており、メインメモリ(RAM)111へロードされてCPU110により実行されるものとする。また、処理の対象はJPEG2000の符号であって、これはハードディスク装置112に保存されているものとする。また、後述のメモリAとしては、メインメモリ111の一部領域が用いられる。また、後述の構造体Pの配列はメインメモリ111上に置かれる。
19 to 22, FIG. 24, and FIG. 25 are flowcharts for explaining the first embodiment of the present invention. The procedures shown in these flowcharts are executed by software on the PC 100 (or PC 101) in FIG. A program for this purpose is stored in the
図19を参照する。まず、ユーザにより処理対象の符号が指定され、また、解像度レベルやレイヤ番号、コンポーネント番号等の指定によって、選択すべき(所望の)パケットが指定される(step100)。 Refer to FIG. First, a code to be processed is specified by the user, and a (desired) packet to be selected is specified by specifying a resolution level, a layer number, a component number, or the like (step 100).
この指定は、PC100の入力装置114を利用して行われる場合と、クライアント側のPC101より行われる場合とがある。前者は、PC100において例えば指定された解像度レベルまでのパケットのみデコードして、原画像より低解像度の画像を表示装置113に表示させるようなケースが該当する。後者は、例えば指定された解像度レベルまでのパケットだけをサーバ側PC100からクライアント側PC101へ送信し、クライアント側PC101において、そのパケットをデコードして原画像より低解像度の画像を表示するようなケースが該当する。
次にPC100は、ユーザより指定された符号のデフォルトのプログレッションオーダを決定する処理が行われる(step101)。この処理で、タイル毎にデフォルトのプログレッションオーダが決定される。
This designation may be performed using the
Next, the
次にPC100において、指定された符号におけるPOC(プログレッションオーダチェンジ)指定の有無を調べるためのPOC検知処理が行われる(step102)。
Next, the
そして、タイル毎にPOCが検知されたか否かが判定され(step103)、POCが検知されたタイルについては通常パケット選択処理が実行され(step104)、POCが検知されなかったタイルについては第1の高速パケット選択処理が実行される(step105)。 Then, it is determined whether or not POC has been detected for each tile (step 103), normal packet selection processing is executed for the tiles for which POC has been detected (step 104), and the first for tiles for which no POC has been detected. A high-speed packet selection process is executed (step 105).
なお、POCマーカセグメントに関連して既に説明したように、POCマーカセグメントがメインヘッダ又はタイルパートヘッダに挿入されている場合、少なくとも2回以上のプログレッションオーダチェンジが指定されていること、つまり、パケット配列の途中で少なくとも一度はプログレッションオーダが変更されることを意味する。 As already described in connection with the POC marker segment, when the POC marker segment is inserted in the main header or tile part header, at least two or more progression order changes are designated, that is, the packet This means that the progression order is changed at least once in the middle of the array.
step101におけるデフォルト・プログレッションオーダ決定処理について、図20に示したフローチャートを参照し説明する。
The default progression order determination process in
なお、JPEG2000の符号においては、デフォルトのプログレッションオーダは、メインヘッダ中のCODマーカセグメント(図13)のパラメータSgcodに記載され、必要に応じて1番目のタイルパートのタイルパートヘッダ(図16)のCODマーカセグメントにも記載される。さらに、先に述べたように、デフォルトのプログレッションオーダは、メインヘッダ中のPOCマーカセグメント(図14)で変更され、必要に応じてタイルパートヘッダ中のPOCマーカセグメントによって変更される。これらの各マーカセグメントによる指定の優先順位は
メインヘッダのCODマーカセグメントによる指定(全タイルに適用される)<タイルパートヘッダのCODマーカセグメントによる指定(当該タイルのみに適用される)<メインヘッダのPOCマーカセグメントによる指定(全タイルに適用される)<タイルパートヘッダのPOCマーカセグメントによる指定(当該タイルのみに適用される)
であり、後の指定ほど優先度が高い。
In the JPEG2000 code, the default progression order is described in the parameter Sgcod of the COD marker segment (FIG. 13) in the main header and, if necessary, the tile part header (FIG. 16) of the first tile part. It is also described in the COD marker segment. Further, as described above, the default progression order is changed by the POC marker segment (FIG. 14) in the main header, and is changed by the POC marker segment in the tile part header as necessary. The priority of designation by each marker segment is designated by the COD marker segment of the main header (applied to all tiles) <designated by the COD marker segment of the tile part header (applied only to the tile) <main header Designation by POC marker segment (applicable to all tiles) <designation by POC marker segment in tile part header (applicable only to the tile)
The higher the priority, the later specified.
図20を参照する。まず、ハードディスク装置112より指定された符号のメインヘッダがメインメモリ111に読み込まれる(step110)。
Refer to FIG. First, the main header of the code designated by the
メインヘッダを参照し、メインヘッダ中のCODマーカセグメントに指定されたプログレッションオーダ(D)が全タイルのデフォルトのプログレッションオーダとして仮決定される(step111)。次のstep112以下はタイル毎に実行されるステップである。
With reference to the main header, the progression order (D) specified in the COD marker segment in the main header is provisionally determined as the default progression order for all tiles (step 111). The
まず、当該タイルの最初のタイルパートのタイルパートヘッダがメインメモリ111に読み込まれ(step112)、このタイルパートヘッダにCODマーカセグメントが含まれているか調べられる(step113)。そのCODマーカセグメントが含まれていないならば(step113,NO)、step111で仮決定されたプログレッションオーダ(D)が当該タイルのデフォルトのプログレッションオーダとして決定され(step114)、そのCODマーカセグメントが含まれているならば(step113,YES)、該CODマーカセグメント中に指定されたプログレッションオーダが当該タイルに対するデフォルトのプログレッションオーダとして決定される(step115)。
First, the tile part header of the first tile part of the tile is read into the main memory 111 (step 112), and it is checked whether the COD marker segment is included in the tile part header (step 113). If the COD marker segment is not included (
次に、step102(図19)におけるPOC検知処理について、図21に示したフローチャートを参照し説明する。 Next, the POC detection process in step 102 (FIG. 19) will be described with reference to the flowchart shown in FIG.
step101(図19)でメインメモリ111に読み込まれているメインヘッダが参照され(step120)、POCマーカセグメントの有無が調べられる(step121)。メインヘッダ中にPOCマーカセグメントが含まれているならば(step121,YES)、全てのタイルについてPOC(プログレッションオーダチェンジ)指定が有ると判断される(step122)。
In step 101 (FIG. 19), the main header read into the
メインヘッダ中にPOCマーカセグメントが含まれていないならば(step121,NO)、タイル毎にPOC検知が行われる。すなわち、当該タイルの最初のタイルパートのタイルパートヘッダがメインメモリ111に読み込まれ(step123)、このタイルパートヘッダにおけるPOCマーカセグメントの有無が調べられる(step124)。POCマーカセグメントが含まれているならば(step124,YES)当該タイルにPOC指定が有ると判断され(step125)、POCマーカセグメントが含まれていないならば(step124,NO)当該タイルにPOC指定は無いと判断される(step126)。 If the POC marker segment is not included in the main header (step 121, NO), POC detection is performed for each tile. That is, the tile part header of the first tile part of the tile is read into the main memory 111 (step 123), and the presence / absence of the POC marker segment in the tile part header is checked (step 124). If the POC marker segment is included (step 124, YES), it is determined that the tile has a POC designation (step 125), and if the POC marker segment is not included (step 124, NO), the POC designation is determined for the tile. It is determined that there is not (step 126).
次に、step104(図19)における通常パケット選択処理について、図22−1及び図22−2に示したフローチャートを参照し説明する。この処理はタイル毎に実行される。 Next, normal packet selection processing in step 104 (FIG. 19) will be described with reference to the flowcharts shown in FIGS. 22-1 and 22-2. This process is executed for each tile.
まず、当該タイルの全てのタイルパートがメインメモリ111に読み込まれ、そのパケットのみが読み込まれた順にメモリAに格納される(step130)。この際に必要なタイルパート長は、タイルパートヘッダ中のSOTマーカセグメントのPsot(図11,図12)を参照することにより検出される。
First, all tile parts of the tile are read into the
次に、step101(図19)で決定された当該タイルに対するデフォルトのプログレッションオーダが取得される(step131)。 Next, a default progression order for the tile determined in step 101 (FIG. 19) is acquired (step 131).
次に、当該タイルのパケット数が計算される(step132)。計算したパケット数分の構造体Pからなる配列Bがメインメモリ111上に用意され、当該タイルのデフォルトのプログレッションオーダのforループが形成され、このforループを回すことにより配列Bの全ての要素(構造体P)が初期化される(step133)。なお、構造体Pは図23に示すようにパケットの先頭位置とパケット長を要素に持つ構造体である。
Next, the number of packets of the tile is calculated (step 132). An array B composed of structures P for the calculated number of packets is prepared on the
当該タイルの最初のタイルパートのタイルパートヘッダ中のPOCマーカセグメント(図14,図15)が参照され、最初のプログレッションオーダチェンジ指定のパラメータの内容、すなわちプログレッションオーダと、レイヤ、解像度、コンポーネントの”最初の番号”(開始位置)と”最後の番号”(終了位置)が取得される(step134)。ただし、レイヤの最初の番号(開始位置)は常に0である(図15の参照)。 The POC marker segment (FIGS. 14 and 15) in the tile part header of the first tile part of the tile is referred to, and the contents of the parameters for specifying the first progression order change, that is, the progression order and the layer, resolution, and component ” The first number (start position) and the last number (end position) are acquired (step 134). However, the first number (start position) of the layer is always 0 (see FIG. 15).
次に、上記最初のプログレッションオーダチェンジ指定のパラメータに従った属性解釈用のforループを構成し処理を開始し(step135)、最初のプログレッションオーダチェンジ指定が適用されるパケットの先頭位置とパケット長を求め、それを当該タイルのデフォルト・プログレッションオーダに従ってソートした形で配列Bに格納する処理を実行する(step136〜step139)。 Next, a for loop for attribute interpretation according to the parameters of the first progression order change designation is constructed and processing is started (step 135), and the start position and packet length of the packet to which the first progression order change designation is applied are set. A process of obtaining the data and storing it in the array B in a form sorted according to the default progression order of the tile is executed (step 136 to step 139).
step134〜step139の処理について、図10に示した例を用いて具体的に説明する。図10の例では、最初のプログレッションオーダチェンジ指定でのプログレッションオーダはLRCPであり、
for(レイヤ=0){
for(解像度レベル=0,1,2){
for(コンポ−ネント=0,1,2){
for(全てのプリシンクト){
パケットの属性を解釈し、メモリA上の該パケットの先頭位置と長さを求め、
これをデフォルトのプログレッションオーダに従ってソートした形で配列Bに
格納する
}
}
}
}
のようなforループ処理が実行されることになる。
The processing of step 134 to step 139 will be specifically described using the example shown in FIG. In the example of FIG. 10, the progression order in the first progression order change designation is LRCP.
for (layer = 0) {
for (resolution level = 0,1,2) {
for (component = 0,1,2) {
for (all precincts) {
Interpret the attributes of the packet, find the beginning position and length of the packet on the memory A,
This is sorted into array B according to the default progression order.
Store }
}
}
}
For loop processing like this is executed.
まず、ループ変数は、最初はレイヤ番号(L)=0、解像度レベル(R)=0、コンポーネント番号(C)=0、プリシンクト番号(P)=0(この例では解像度レベル0,1でのプリシンクト数=1)に設定され、メモリA中の最初のパケットの格納位置と長さが、その属性(L=0,R=0,C=0,P=0)に対応した配列Bの要素に格納される(step137)。なお、パケットの長さは、パケットヘッダをデコードすることによって求めることができるが、タイルパートヘッダ中にPLTマーカセグメントが含まれているときには、それを解釈することにより知ることができる(この場合、バケットヘッダのデコードは不要となる)。
First, the loop variables are initially layer number (L) = 0, resolution level (R) = 0, component number (C) = 0, precinct number (P) = 0 (in this example,
メモリAの注目位置はメモリA中の2番目のパケットの先頭位置へ移動し(step138)、ループ変数を更新する(step139)。ここではプリシンクト数は1であるので、コンポーネント番号(C)が1に更新されることになる。したがって、2番目のパケットは属性(L=0,R=0,C=1,P=0)と解釈され、この属性に対応した配列Bの要素に該パケットの先頭位置とその長さが格納される(step137)。注目位置はメモリA中の3番目のパケットの先頭位置に移動し(step138)、ループ変数はコンポーネント番号(C)が2に更新される(step139)。したがって、3番目のパケットの先頭位置とその長さは、その属性(L=0,R=0,C=2,P=0)に対応した配列Bの要素に格納される(step137)。注目位置はメモリA中の4番目のパケットの先頭位置へ移動し(step138)、ループ変数は解像度レベル(R)が1に、コンポーネント番号(C)が0にそれぞれ更新され(step139)、当該パケットの先頭位置とその長さは、その属性(L=0,R=1,C=0,P=0)に対応した配列Bの要素に格納される(step137)。 The target position of the memory A moves to the head position of the second packet in the memory A (step 138), and the loop variable is updated (step 139). Here, since the number of precincts is 1, the component number (C) is updated to 1. Therefore, the second packet is interpreted as an attribute (L = 0, R = 0, C = 1, P = 0), and the start position of the packet and its length are stored in the element of the array B corresponding to this attribute. (Step 137). The position of interest moves to the start position of the third packet in the memory A (step 138), and the component number (C) of the loop variable is updated to 2 (step 139). Therefore, the head position and the length of the third packet are stored in the element of the array B corresponding to the attribute (L = 0, R = 0, C = 2, P = 0) (step 137). The attention position moves to the head position of the fourth packet in the memory A (step 138), and the loop variable is updated with the resolution level (R) set to 1 and the component number (C) set to 0 (step 139). Is stored in an element of the array B corresponding to the attribute (L = 0, R = 1, C = 0, P = 0) (step 137).
同様の処理が繰り返され、メモリA中の7番目以降のパケットの先頭位置に注目位置が移動すると、ループ変数は解像度レベル(R)が2に、コンポーネント番号(C)は0に更新される。解像度レベル=2ではプリシンクト数が4となるため、このパケット以降はループ変数のプリシンクト番号(P)が0,1,2,3と順に更新され、この更新が一巡するとコンポーネント番号(C)が1に更新される。以下同様の処理がメモリA中の18番目のパケットまで繰り返され、注目位置がメモリA中の19番目のパケットの先頭位置に移動しループ変数がL=1,R=0,C=0,P=0に更新されると、当該forループの処理は終了したと判定され(step136,Yes)、図22−2に示す処理へと進む。
When the same processing is repeated and the position of interest moves to the head position of the seventh and subsequent packets in the memory A, the loop variable is updated with the resolution level (R) of 2 and the component number (C) of 0. Since the number of precincts is 4 at the resolution level = 2, the precinct number (P) of the loop variable is updated in order of 0, 1, 2, 3 after this packet, and the component number (C) becomes 1 when this update is completed. Updated to Thereafter, the same processing is repeated until the 18th packet in the memory A, the target position moves to the head position of the 19th packet in the memory A, and the loop variables are L = 1, R = 0, C = 0, P When updated to = 0, it is determined that the processing of the for loop has been completed (
図22−2を参照する。当該タイルの次のタイルパートのタイルパートヘッダ中のPOCマーカセグメントが参照され、次のプログレッションオーダチェンジ指定のパラメータの内容が取得される(step141)。次に、当該プログレッションオーダチェンジ指定のパラメータに従った属性解釈用のforループを構成し処理を開始し(step142)、配列Bに当該プログレッションオーダチェンジ指定が適用されるパケットの先頭位置とパケット長を、当該タイルのデフォルト・プログレッションオーダに従ってソートした形で格納する処理を実行する(step143〜step147)。 Refer to FIG. The POC marker segment in the tile part header of the next tile part of the tile is referred to, and the content of the parameter for specifying the next progression order change is acquired (step 141). Next, a for loop for attribute interpretation according to the parameter of the progression order change designation is constructed and processing is started (step 142), and the start position and the packet length of the packet to which the progression order change designation is applied are arranged in array B. Then, a process of storing the tiles in a sorted form according to the default progression order of the tile is executed (step 143 to step 147).
再び図10に示した例を用いて処理内容を説明する。図10の例では19番目のパケットで2回目のプログレションオーダチェンジが行われるが、すでに注目位置はメモリA中の19番目のパケットの先頭位置に移動している。 The processing contents will be described again using the example shown in FIG. In the example of FIG. 10, the second progression order change is performed with the 19th packet, but the target position has already moved to the start position of the 19th packet in the memory A.
この例の場合、2回目のプログレッションオーダチェンジで指定されるプログレッションオーダはCPRLであり、
for(コンポ−ネント=0,1,2){
for(全てのプリシンクト){
for(解像度レベル=0,1,2){
for(レイヤ=0,1){
メモリA中でパケットの属性を解釈し、
その属性のパケットの先頭位置がすでに配列B中に保存されていなければ、
メモリA中での当該パケットの先頭位置とパケット長を求め、これをデフォル
トのプログレッションオーダに従って配列Bに格納する
}
}
}
}
のようなforループ処理が実行されることになる。
In this example, the progression order specified in the second progression order change is CPRL,
for (component = 0,1,2) {
for (all precincts) {
for (resolution level = 0,1,2) {
for (layer = 0,1) {
Interpret the packet attributes in memory A,
If the start position of the packet of that attribute is not already stored in array B,
Obtain the start position and packet length of the packet in memory A, and use this as the default.
Stored in array B according to the progression order
}
}
}
For loop processing like this is executed.
最初、ループ変数はC=0,P=0,R=0,L=0に設定されるので、メモリA中の19番目のパケットの属性は(R=0,L=0,C=0,P=0)と解釈されるが、この属性に対応した配列Bの要素には既に1番目のパケットの先頭位置が格納済みである(step144,YES)。したがって、注目位置をメモリA中の19番目のパケットの先頭位置から移動させることなく、ループ変数のLを1に更新する(step147)。この属性(R=0,L=1,C=0,P=0)は当該パケットの正しい属性であり、これに対応した配列Bの要素にはパケットの先頭位置は未格納であり(step144,NO)、19番目のパケットの先頭位置と長さを当該配列Bの要素に格納する(step145)。
Initially, since the loop variable is set to C = 0, P = 0, R = 0, L = 0, the attributes of the 19th packet in the memory A are (R = 0, L = 0, C = 0, P = 0), but the start position of the first packet has already been stored in the element of the array B corresponding to this attribute (
つぎに注目位置をメモリA中の20番目のパケットの先頭位置に移動させ(step147)、ループ変数をL=0,R=1に更新するが(step147)、この時の属性(R=1,L=0,C=0,P=0)に対応した配列Bの要素には3番目のパケットの先頭位置が既に格納されているので(step144,YES)、注目位置を移動させることなく、ループ変数をL=1に更新する(step147)。この時の属性(R=1,L=1,C=0,P=0)は20番目のパケットの正しい属性であり、この属性に対応した配列Bの要素にはパケットの先頭位置は未格納であるので(step144,NO)、この配列Bの要素に20番目のパケットの先頭位置と長さを格納し(step145)、注目位置をメモリA中の21番目のパケットの先頭位置に移動させる。
Next, the target position is moved to the head position of the 20th packet in the memory A (step 147), and the loop variable is updated to L = 0 and R = 1 (step 147). At this time, the attribute (R = 1, Since the start position of the third packet is already stored in the element of the array B corresponding to L = 0, C = 0, P = 0) (
このような処理が繰り返されることにより、21番目から36番目までのパケットの先頭位置と長さが当該タイルのデフォルト・プログレッションオーダの順にソートした形で(プログレッションオーダの変更の影響を排除した形で)配列Bに格納される。 By repeating such processing, the leading positions and lengths of the 21st to 36th packets are sorted in the order of the default progression order of the tile (with the effect of changing the progression order removed). ) Stored in array B.
step143で当該forループの処理が終了したと判定されるとstep140に戻るが、この例では当該タイルの最後のプログレッションオーダチェンジ指定の処理が終わっているので、当該タイルに対するパケット選択処理は完了する。
When it is determined in
ここまでの説明で理解されるように、パケット選択処理は、プログレッションオーダチェンジの影響を排除した形で、メモリA中の所望のパケットをアクセスするためのポインタ情報(パケット先頭位置及びパケット長)を配列B上に得るための処理である。このようなポインタ情報を得られたならば、例えば前記[ステップ5]のようなforループを回して配列B上のポインタ情報を参照することにより、メモリA中の所望のパケットをアクセスし、そのパケットをデコードしたりクライアント側へ送信することができるが、その処理は以上のフローチャートには示されていない。このことは後述する他のパケット選択処理に関しても同様である。 As will be understood from the above description, the packet selection process is performed by using pointer information (packet head position and packet length) for accessing a desired packet in the memory A in a form that eliminates the influence of the progression order change. This is a process for obtaining on the array B. If such pointer information is obtained, a desired packet in the memory A is accessed by referring to the pointer information on the array B by turning a for loop such as [Step 5]. The packet can be decoded or transmitted to the client side, but the process is not shown in the above flowchart. The same applies to other packet selection processing described later.
なお、配列Bに格納されるポインタ情報は用途に依存して選ぶことができる。すなわちパケットデータ(パケットからパケットヘッダを除いたMQ符号そのものをデコードするためにパケットをアクセスしたいのであれば、「パケットの先頭位置」に代えて「パケットデータの先頭位置」を求めるようにしてもよい。パケットヘッダも含めたパケット全体を扱いたいのであれば(例えばJPIPでパケットを送信したい場合など)、上記のように「パケットヘッダの先頭位置」を求めるとよい。同様に、MQ符号自体をデコードするためにパケットをアクセスしたいのであれば「パケット長」に代えて「パケットデータだけの長さ」を求めるようにしてもよい。パケットヘッダも含めたパケット全体を扱いたいのであれば(例えばJPIPでパケットを送信したい場合など)、上記の「パケット長」(パケットヘッダを含めた長さ)を求めるとよい。このことは後述の他のパケット選択処理においても同様である。 The pointer information stored in the array B can be selected depending on the application. That is, if it is desired to access the packet data in order to decode the packet data (the MQ code itself excluding the packet header from the packet), the “head position of the packet data” may be obtained instead of the “head position of the packet”. If you want to handle the entire packet including the packet header (for example, when you want to send a packet using JPIP), you can find the "head position of the packet header" as described above. In order to access the packet, instead of “packet length”, “the length of only the packet data” may be obtained, and if the entire packet including the packet header is to be handled (for example, in JPIP) If you want to send a packet), the above "packet length" (packet header Meta may seek length). This also applies to other packet selection process described later.
次に、step105(図19)における第1の高速パケット選択処理について、図24と図25に示したフローチャートを参照し説明する。この処理は、タイル毎に実行される。 Next, the first high-speed packet selection process in step 105 (FIG. 19) will be described with reference to the flowcharts shown in FIGS. This process is executed for each tile.
図24を参照する。まず、当該タイルの全てのタイルパートがメインメモリ111に読み込まれ、そのパケットのみが読み込まれた順にメモリAに格納される(step150)。この際に必要なタイルパート長は、タイルパートヘッダ中のSOTマーカセグメントの
Psot(図11,図12)を参照することにより検出される。
Refer to FIG. First, all tile parts of the tile are read into the
次に、step101(図19)で決定された当該タイルに対するデフォルトのプログレッションオーダが取得される(step151)。 Next, a default progression order for the tile determined in step 101 (FIG. 19) is acquired (step 151).
次に、前記ユーザ指定(例えば解像度レベルの指定等)による所望のパケットが先頭パケットから連続的に配列しているか否かの判定が行われる(step152)。この判定処理を図25に示したフローチャートを参照し説明する。 Next, it is determined whether or not desired packets according to the user designation (for example, resolution level designation) are continuously arranged from the top packet (step 152). This determination process will be described with reference to the flowchart shown in FIG.
図25を参照する。step101で決定された当該タイルのデフォルト・プログレッションオーダとそのパラメータ(レイヤ、解像度、コンポーネントの開始・終了位置)を取得し(step170)、前記ユーザ指定(例えば解像度レベル、レイヤ数、コンポーネント数の指定)を取得し(step171)、デフォルト・プログレッションオーダの最外殻の属性が、前記ユーザ指定による所望パケットに対応したforループの最外殻の属性に実質的に一致するか否かを判定する(step172)。実質的に一致すると判定したならば判定結果をYESとし(step173)、実質的に一致しないと判定したならば判定結果をNOとする(step174)。
Refer to FIG. The default progression order of the tile determined in
例えば、デフォルト・プログレッションオーダが、その最外殻の属性が解像度レベル(R)であるRLCP又はRPCLであって、ある解像度レベルまでの全てのパケットが所望のパケットとしてユーザにより指定されたとすると、所望のパケットはプログレッションオーダの最外殻に連続的に位置するため(所望のパケットが先頭パケットから連続的に配列されている)判定結果はYESとなる。 For example, if the default progression order is RLCP or RPCL whose outermost shell attribute is a resolution level (R) and all packets up to a certain resolution level are specified by the user as desired packets, the desired Are continuously located in the outermost shell of the progression order (desired packets are continuously arranged from the top packet), the determination result is YES.
なお、「属性が”実質的に”一致する」とは次のような場合である。デフォルト・プログレッションオーダがLRCPであるが、そのレイヤ数が1である場合には、プログレッションオーダは、その最外殻の属性が実質的にRである(実質的にRCPである)ため、ある解像度レベルまでの全てのパケットが所望のパケットとしてユーザより指定されたとすると、所望のパケットはプログレッションオーダの最外殻に実質的に連続的に位置するため(所望のパケットが先頭パケットから連続的に配列されている)判定結果はYESとなるわけである。 Note that “the attribute“ substantially matches ”” is as follows. If the default progression order is LRCP but the number of layers is 1, the resolution of the progression order is substantially R because its outermost shell attribute is substantially R (substantially RCP). If all packets up to the level are designated by the user as desired packets, the desired packets are located substantially continuously in the outermost shell of the progression order (the desired packets are continuously arranged from the first packet). The determination result is YES.
一方、デフォルトのプログレッションオーダがLRCPで、レイヤ数が2以上の場合に、所望のパケットとして解像度レベル1までのパケットがユーザにより指定されたときには、例えば図7に示したパケット配列列を見れば明らかなように、所望のパケットは先頭パケットから連続的に配列されない(飛び飛びに並ぶ)ため判定結果はNOとなる。
On the other hand, when the default progression order is LRCP and the number of layers is 2 or more, when a packet up to
再び図24を参照する。step152の判定結果がNOの場合、step104と同様の通常パケット選択処理が実行される(step153)。ただし、プログレッションオーダチェンジがない場合であるので、その処理手順はより簡易である。その処理手順を図22−1を参照して説明すれば、step130〜step133までは同じであるが、step134は省かれる。step135では、当該タイルのデフォルトのプログレッションオーダのパラメータに従った属性解釈用のforループ(これはstep133で構成されるforループと同一である)を構成し処理を開始する。step136〜step139までは同じである。ただし、step136で当該forループの処理が終了したと判定されると、当該タイルに対するパケット選択処理は終了する。
FIG. 24 will be referred to again. When the determination result in
再び図24を参照する。step152の判定結果がYESとなった場合、step154以下の処理が実行され、この処理こそが実質的な高速パケット選択処理である。
FIG. 24 will be referred to again. When the determination result at
まず、前記ユーザ指定(解像度レベルの指定等)により所望のパケットのパケット数が計算される(step154)。計算したパケット数分の構造体Pの配列Bがメインメモリ111上に用意され、配列Bの全ての要素(構造体P)が初期化される(step155)。
First, the number of desired packets is calculated according to the user designation (resolution level designation or the like) (step 154). An array B of structures P for the calculated number of packets is prepared on the
次に、デフォルトのプログレッションオーダのパケット属性解釈用のforループが構成され、前記ユーザ指定によりループ変数の初期値と最終値が設定されて、当該forループの処理が開始され(step156)、メモリA中の先頭のパケットから順にパケットの属性が解釈され、その属性に対応した配列Bの要素にパケット先頭位置とパケット長が格納される(step157〜step160)。所望のパケットの最後のパケットまで処理が終わると、当該forループ処理が終了したと判定され(step157)、当該タイルに対するパケット選択処理を終了する。このように、プログレッションオーダチェンジ指定の無いタイルにおいて、所望のパケットが先頭パケットから連続的に配列されている場合、所望のパケットのみについて、そのポインタ情報を求めて配列Bに格納するため、所望パケット以外のパケットのパケットヘッダのデコード等の無駄な処理が排除され効率的な高速処理となる。
Next, a for loop for interpreting the packet attribute of the default progression order is constructed, the initial value and the final value of the loop variable are set by the user designation, the for loop processing is started (step 156), and the memory A The packet attributes are interpreted in order from the first packet in the middle, and the packet head position and the packet length are stored in the elements of the array B corresponding to the attributes (
以上の説明から理解されるように、本実施例は請求項1,3,4に係る符号処理装置の一実施例に相当する。そして、符号処理装置の第1の判定手段の機能は図19中のstep102,103に対応し、第2の判定手段の機能は図25中のstep172に対応し、また、処理手段による指定されたパケットのみを対象として処理は図24中のstep156−160に対応する。また、第1の記憶手段はメインメモリに割り当てられるメモリAに対応し、第2の記憶手段はメインメモリに置かれる配列Bに対応する。
As can be understood from the above description, this embodiment corresponds to an embodiment of a code processing device according to
また、本実施例における処理内容の説明は、請求項9,10に係る符号処理方法の処理手順の説明でもある。すなわち、本実施例は請求項9,10に係る符号処理方法の一実施例に相当する。そして、符号処理方法の第1の判定工程は図19中のstep102,103に対応し、第2の判定工程は図25中のstep172に対応し、また、処理工程における指定されたパケットのみを対象として処理は図24中のstep156−160に対応する。また、第1の記憶手段はメモリAに対応し、第2の記憶手段は配列Bに対応する。
Further, the description of the processing contents in this embodiment is also an explanation of the processing procedure of the code processing method according to
また、図19から図25に示した処理はPC100(又は101)においてプログラムにより実行されるが、かかるプログラムは請求項15に係るプログラムの一実施例に相当することも明らかである。
The processing shown in FIGS. 19 to 25 is executed by a program in the PC 100 (or 101), and it is obvious that such a program corresponds to an embodiment of the program according to
図26乃至図29、図20、図24に示したフローチャートを参照し、本発明の実施例2について説明する。これらのフローチャートに示される手順は、図18のPC100(又はPC101)上でソフトウェアによって実行されるものとする。そのためのプログラムは、ハードディスク装置112に保存されており、メインメモリ(RAM)111へロードされてCPU110により実行されるものとする。また、処理の対象はJPEG2000の符号であって、これはハードディスク装置112に保存されているものとする。また、後述のメモリAとしては、メインメモリ111の一部領域が用いられる。また、後述の構造体Pの配列はメインメモリ111上に置かれる。
A second embodiment of the present invention will be described with reference to the flowcharts shown in FIGS. 26 to 29, FIG. 20, and FIG. The procedures shown in these flowcharts are executed by software on the PC 100 (or PC 101) in FIG. A program for this purpose is stored in the
図26を参照する。まず、ユーザにより処理対象の符号が指定され、また、解像度レベルやレイヤ番号、コンポーネント番号等の指定によって、選択すべき(所望の)パケットが指定される(step200)。 Refer to FIG. First, a code to be processed is specified by the user, and a (desired) packet to be selected is specified by specifying a resolution level, a layer number, a component number, or the like (step 200).
この指定は、PC100の入力装置114を利用して行われる場合と、クライアント側のPC101より行われる場合とがある。前者は、PC100において例えば指定された解像度レベルまでのパケットのみデコードして、原画像より低解像度の画像を表示装置113に表示させるようなケースが該当する。後者は、例えば指定された解像度レベルまでのパケットだけをサーバ側PC100からクライアント側PC101へ送信し、クライアント側PC101において、そのパケットをデコードして原画像より低解像度の画像を表示するようなケースが該当する。
次にPC100において、ユーザより指定された符号のデフォルトのプログレッションオーダを決定する処理が行われる(step201)。この処理で、タイル毎にデフォルトのプログレッションオーダが決定される。処理手順は図20のフローチャートにより説明した通りである。
This designation may be performed using the
Next, in the
次にPC100において、POC検知処理が行われる(step202)。このPOC検知処理の内容は後に図27を参照し説明する。 Next, POC detection processing is performed in the PC 100 (step 202). The contents of this POC detection process will be described later with reference to FIG.
そして、タイル毎に、POC検知処理の結果に応じたパケット選択処理が実行される。すなわち、処理対象のタイルについてプログレッションオーダチェンジ指定が無いと判定されたならば(step203,NO)、第1の高速パケット選択処理が実行される(step204)。プログレッションオーダチェンジ指定が有ると判定されたならば(step203,YES)、第2の高速パケット選択処理が実行される(step205)。第1の高速パケット選択処理は図24のフローチャートを参照して説明した通りであるので、その説明は繰り返さない。第2の高速パケット選択処理については後述する。 Then, for each tile, a packet selection process according to the result of the POC detection process is executed. That is, if it is determined that there is no progression order change designation for the tile to be processed (step 203, NO), the first high-speed packet selection process is executed (step 204). If it is determined that there is a progression order change designation (step 203, YES), a second high-speed packet selection process is executed (step 205). Since the first high-speed packet selection process is as described with reference to the flowchart of FIG. 24, the description thereof will not be repeated. The second high-speed packet selection process will be described later.
次に、step202におけるPOC検知処理について、図27に示すフローチャートを参照し説明する。メインメモリ111に読み込まれたメインヘッダを参照し、POCマーカセグメントを探す(step211)。POCマーカセグメントが見つかったならば(step211,YES)、プログレッションオーダチェンジ指定が有ると判定し(step212)、当該POCマーカセグメントから全タイルに対し適用されるプログレッションオーダチェンジのパラメータ(E)を取得する(step213)。 Next, the POC detection process in step 202 will be described with reference to the flowchart shown in FIG. The POC marker segment is searched with reference to the main header read into the main memory 111 (step 211). If a POC marker segment is found (step 211, YES), it is determined that there is a progression order change designation (step 212), and the parameters (E) of the progression order change applied to all tiles are acquired from the POC marker segment. (Step 213).
ここまでは符号全体つまり全タイルに関連した処理であるが、以下の処理は処理の対象となった個々のタイルについて実行される処理である。 Up to this point, the processing is related to the entire code, that is, all the tiles. However, the following processing is processing executed for each tile to be processed.
メインヘッダ中にPOCマーカセグメントが見つかった場合には(step211,YES)、step213の次に処理対象のタイルの最初のタイルパートのタイルパートヘッダをメインメモリに読み込み、POCマーカセグメントを探す(step214)。タイルパートヘッダにPOCマーカセグメントが見つからなければ(step215,NO)、前記パラメータ(E)を当該タイルに適用されるプログレッションオーダチェンジのパラメータとする(step217)。最初のタイルパートヘッダにPOCマーカセグメントが見つかったならば(step215,YES)、そのPOCマーカセグメントから当該タイルに適用されるプログレッションオーダチェンジ(POC)のパラメータを取得する(step216)。 If a POC marker segment is found in the main header (step 211, YES), the tile part header of the first tile part of the tile to be processed is read into the main memory after step 213, and the POC marker segment is searched (step 214). . If no POC marker segment is found in the tile part header (step 215, NO), the parameter (E) is set as the parameter of the progression order change applied to the tile (step 217). If a POC marker segment is found in the first tile part header (step 215, YES), the parameter of the progression order change (POC) applied to the tile is acquired from the POC marker segment (step 216).
一方、メインヘッダ中にPOCマーカセグメントが見つからなかった場合には(step211,NO)、処理の対象となったタイルについて、その最初のタイルパートのタイルパートヘッダを読み込み、POCマーカセグメントを探す(step218)。POCマーカセグメントが見つからなかったならば(step219,NO)、当該タイルにプログレッションオーダチェンジ指定は無いと判定する(step220)。POCマーカセグメントが見つかったならば(step219,YES)、当該タイルにプログレッションオーダチェンジ指定が有ると判定し(step221)、タイルパートヘッダ中のPOCマーカセグメントから当該タイルに適用されるプログレッションオーダチェンジのパラメータを取得する(step223)。 On the other hand, when the POC marker segment is not found in the main header (step 211, NO), the tile part header of the first tile part is read for the tile to be processed, and the POC marker segment is searched (step 218). ). If no POC marker segment is found (step 219, NO), it is determined that there is no designation of a progression order change for the tile (step 220). If a POC marker segment is found (step 219, YES), it is determined that there is a progression order change designation for the tile (step 221), and parameters of the progression order change applied to the tile from the POC marker segment in the tile part header. Is acquired (step 223).
このように、このPOC検知処理においては、プログレッションオーダチェンジ指定の有無を判定するとともに、プログレッションオーダチェンジ指定が有ると判定したときには、そのパラメータを取得する処理を行う。 In this way, in this POC detection process, the presence / absence of a progression order change designation is determined, and when it is determined that there is a progression order change designation, the parameter is acquired.
次に、step205(図26)における第2の高速パケット選択処理について、図28と図29に示すフローチャートを参照し説明する。前述のように、この処理はプログレッションオーダチェンジ指定が有ると判定されたタイルについて実行される。 Next, the second high-speed packet selection process in step 205 (FIG. 26) will be described with reference to the flowcharts shown in FIGS. As described above, this process is executed for a tile that is determined to have a progression order change designation.
図28を参照する。まず、当該タイルの全てのタイルパートがメインメモリ111に読み込まれ、そのパケットのみが読み込まれた順にメモリAに格納される(step230)。この際に必要なタイルパート長は、タイルパートヘッダ中のSOTマーカセグメントのPsot(図11,図12)を参照することにより検出される。
Refer to FIG. First, all tile parts of the tile are read into the
次に、当該タイルの最初のプログレッションオーダチェンジ指定のパラメータ(POC検知処理において既に得られている)を取得し(step231)、前記ユーザ指定(例えば解像度レベルの指定等)による所望のパケットが先頭パケットから連続的に配列され、かつ、所望のパケットの配列中でプログレッションオーダの変更が無いか否かの判定が行われる(step152)。この判定処理を図29に示したフローチャートを参照し説明する。 Next, the parameter of the first progression order change designation (already obtained in the POC detection process) of the tile is acquired (step 231), and the desired packet according to the user designation (for example, resolution level designation) is the first packet. Whether or not there is no change in the progression order in the desired packet arrangement is determined (step 152). This determination process will be described with reference to the flowchart shown in FIG.
図29を参照する。当該タイルの最初のプログレッションオーダチェンジ指定のパラメータ(プログレッションオーダと、レイヤ、解像度、コンポーネントの開始・終了位置)を読み込み(step250)、次に前記ユーザ指定(例えば解像度レベル、レイヤ数、コンポーネント数の指定)を読み込み(step251)、前記最初のプログレッションオーダチェンジ指定に対応したプログレッションオーダの最外殻の属性が、前記ユーザ指定に対応したforループの最外殻の属性に実質的に一致するか否かの判定を行う(step252)。この判定の内容は、図25中のstep172に関連して説明したと同様である(ただし、step152,step172では、タイルのデフォルトのプログレッションオーダに注目している)。
Refer to FIG. Parameters for specifying the first progression order change of the tile (progression order, layer, resolution, component start / end positions) are read (step 250), and then specified by the user (for example, the resolution level, number of layers, number of components) ) Is read (step 251), and whether or not the attribute of the outermost shell of the progression order corresponding to the first progression order change designation substantially matches the attribute of the outermost shell of the for loop corresponding to the user designation. Is determined (step 252). The contents of this determination are the same as those described in relation to step 172 in FIG. 25 (however, in
さて、step252で実質的に一致しないと判定したならば(step252,NO)、最終的な判定結果をNOとする(step253)。 If it is determined in step 252 that they do not substantially match (step 252, NO), the final determination result is NO (step 253).
step252で実質的に一致すると判定したならば(step252,YES)、すなわち、所望のパケットが先頭パケットから連続的に配列されているならば、最初のプログレッションオーダチェンジ指定のパラメータに対応したforループのループ変数の範囲に、前記ユーザ指定に対応したforループのループ変数の範囲が完全に包含されるか否かの判定を行う(step254)。つまり、所望のパケットの配列中で再度のプログレッションオーダの変更が行われるか否かを調べるわけである。この包含関係が成立するならば(step256,YES)、最終的な判定結果をYESとする(step256)。上記包含関係が成立しないならば(step256,NO)、最終的な判定結果をNOとする(step255)。
If it is determined in step 252 that they substantially match (step 252, YES), that is, if a desired packet is continuously arranged from the first packet, the for loop corresponding to the parameter of the first progression order change designation It is determined whether or not the range of the loop variable of the for loop corresponding to the user designation is completely included in the range of the loop variable (step 254). That is, it is checked whether or not the progression order is changed again in the desired packet arrangement. If this inclusion relation is established (
再び図28を参照する。step232の判定結果がNOの場合、step104と同様の通常パケット選択処理が実行される(step153)。 Refer to FIG. 28 again. When the determination result at step 232 is NO, the normal packet selection process similar to step 104 is executed (step 153).
一方、step232の判定結果がYESの場合、step234以下の処理が実行され、この処理こそが無駄のない高速なパケット選択処理である。 On the other hand, if the determination result at step 232 is YES, the processing from step 234 onward is executed, and this processing is a high-speed packet selection processing without waste.
まず、前記ユーザ指定(解像度レベルの指定等)により所望のパケットのパケット数が計算される(step234)。計算したパケット数分の構造体Pの配列Bがメインメモリ111上に用意され、配列Bの全ての要素(構造体P)が初期化される(step235)。
First, the number of desired packets is calculated according to the user designation (resolution level designation or the like) (step 234). An array B of structures P for the calculated number of packets is prepared on the
次に、当該タイルの最初のプログレッションオーダチェンジ指定のプログレッションオーダに対応したパケット属性解釈用のforループを構成し、前記ユーザ指定によりループ変数の初期値と最終値を設定し(step236)、当該forループを回してメモリA中の先頭のパケットから順にパケットの属性を解釈し、その属性に対応した配列Bの要素にパケットの先頭位置とパケット長を格納する処理を実行する(step237〜step240)。所望のパケットの最後のパケットまで処理を終えると(step237,YES)、当該タイルに対するパケット選択処理を終了する。このように、所望のパケットのみについて、そのポインタ情報(パケット先頭位置とパケット長)を配列Bに格納するパケット選択処理は、所望のパケット以外のパケットのパケットヘッダのデコード等の無駄な処理がないため、効率的・高速に実行できる。 Next, a for loop for interpreting packet attributes corresponding to the progression order designated by the first progression order change of the tile is constructed, and initial values and final values of loop variables are set by the user designation (step 236). The loop is rotated to interpret the packet attributes in order from the first packet in the memory A, and the process of storing the packet head position and the packet length in the element of the array B corresponding to the attribute is executed (steps 237 to 240). When the process is completed up to the last packet of the desired packet (step 237, YES), the packet selection process for the tile is finished. As described above, the packet selection processing for storing the pointer information (packet head position and packet length) for only the desired packet in the array B does not involve useless processing such as decoding of the packet header of the packet other than the desired packet. Therefore, it can be executed efficiently and at high speed.
以上の説明から理解されるように、本実施例は請求項2,5,6,7に係る符号処理装置の一実施例に相当する。そして、符号処理装置の第1の判定手段の機能は図26中のstep202,203に対応し、第2の判定手段の機能は図29中のstep252に対応し、第3の判定手段の機能は図29中のstep254に対応し、また、処理手段による指定されたパケットのみを対象として処理は図28中のstep236−240に対応する。また、第1の記憶手段はメインメモリに割り当てられるメモリAに対応し、第2の記憶手段はメインメモリに置かれる配列Bに対応する。
As can be understood from the above description, this embodiment corresponds to an embodiment of a code processing device according to
また、本実施例における処理内容の説明は、請求項11,12,13に係る符号処理方法の処理手順の説明でもある。すなわち、本実施例は請求項11,12,13に係る符号処理方法の一実施例に相当する。そして、符号処理方法の第1の判定工程能は図26中のstep202,203に対応し、第2の判定工程は図29中のstep252に対応し、第3の判定工程は図29中のstep254に対応し、また、処理工程による指定されたパケットのみを対象として処理は図28中のstep236−240に対応する。
Further, the description of the processing contents in this embodiment is also an explanation of the processing procedure of the code processing method according to
また、本実施例におけるstep204の第1の高速パケット選択処理は前記実施例1におけるstep105と同じ処理である。したがって、本実施例は請求項1,3,4に係る符号処理装置及び請求項9,10に係る符号処理方法の一実施例でもある。
In addition, the first high-speed packet selection process of step 204 in the present embodiment is the same process as step 105 in the first embodiment. Therefore, this embodiment is also an embodiment of the code processing device according to
また、図26から図29に示した処理はPC100(又は101)においてプログラムにより実行されるが、かかるプログラムは請求項15に係るプログラムの一実施例に相当することも明らかである。
The processing shown in FIGS. 26 to 29 is executed by a program in the PC 100 (or 101). It is also clear that such a program corresponds to an embodiment of the program according to
本発明の実施例3について説明する。この実施例3にあっては、前記実施例2における第2の高速パケット選択処理(図28)の内容が、図30のフローチャートに示すように一部変更される。これ以外は前記実施例2と同様である。 A third embodiment of the present invention will be described. In the third embodiment, the contents of the second high-speed packet selection process (FIG. 28) in the second embodiment are partially changed as shown in the flowchart of FIG. Other than this, the second embodiment is the same as the second embodiment.
図30と図28の相違点は、step230Aにおいて当該タイルの最初のタイルパートのみを読み込み、そのパケットだけをメモリAに格納すること、step237の次にに追加されたstep300で注目位置がメモリA中の最後のパケットに達したか判定すること、この判定結果がYESとなったときに、step301で次の1つのタイルパートを読み込み、そのパケットのみをメモリA中の最後のパケットに続けて追加格納して処理を続けることである。
The difference between FIG. 30 and FIG. 28 is that only the first tile part of the tile is read in
すなわち、本実施例3においては、初めに先頭のタイルパートのパケットのみをメモリAに格納する。そして、step232の判定結果がYESの場合には、パケット選択の進捗に応じて必要なタイルパートを1つずつ追加読み込みしつつパケット選択を進める。そして、所望の全てのパケットについてのポインタ情報が配列Bに格納されたならば(step237,YES)、それ以降のタイルパートの読み込みは行わない。 That is, in the third embodiment, only the first tile part packet is stored in the memory A first. If the determination result in step 232 is YES, packet selection is advanced while additionally reading necessary tile parts one by one in accordance with the progress of packet selection. If the pointer information for all desired packets is stored in the array B (step 237, YES), the subsequent tile parts are not read.
このように、ユーザにより指定された所望のパケットのみを対象としたパケット選択処理において、タイルのパケットのメモリAへの読み込みを該処理の進捗に合わせタイルパート単位で分割して行うと、初めにタイルの全てのタイルパートのパケットをメモリAに読み込む場合に比べ、不必要なパケットの読み込み処理に要する時間分だけパケット選択処理の時間を短縮することができる。なお、分割読み込みの単位はタイルパート単位に限定されるわけではない。 In this way, in the packet selection process for only the desired packet designated by the user, when the reading of the tile packet into the memory A is performed in units of tile parts according to the progress of the process, Compared with the case where the packets of all tile parts of the tile are read into the memory A, the packet selection processing time can be reduced by the time required for the unnecessary packet reading processing. The division reading unit is not limited to tile part units.
以上の説明から理解されるように、本実施例は請求項8に係る符号処理装置及び請求項14に係る符号処理方法の一実施例に相当する。また、本実施例のためのプログラムは請求項15に係るプログラムの一実施例に相当する。
As can be understood from the above description, this embodiment corresponds to an embodiment of the code processing device according to
本発明の実施例4について説明する。この実施例4にあっては、前記実施例1又は2における第1の高速パケット選択処理において、前記実施例3と同様に、処理の進捗に合わせて、タイルのパケットのメモリAへの読み込みがタイルパート単位で分割して行われる。これを便宜図24により説明する。
step150でタイルの先頭のタイルパートのパケットのみがメモリAに読み込まれる。step157の次にstep300(図30)と同様な判定ステップが追加され、この判定ステップでYESと判定されたときにメモリAへの次タイルパートのパケットの追加読み込みを行う、step301(図30)と同様のステップが追加される。
In
このようなパケットの分割読み込みの効果は前記実施例3に述べた通りである。なお、分割読み込みの単位はタイルパート単位に限定されるわけではない。 The effect of such packet division reading is as described in the third embodiment. The division reading unit is not limited to tile part units.
これ以外は前記実施例2又は3と同様であるので説明を省略する。 Other than this, the second embodiment is the same as the second or third embodiment, and a description thereof is omitted.
本実施例は、請求項8に係る符号処理装置及び請求項14に係る符号処理方法の一実施例に相当することは明らかである。また、本実施例のためのプログラムは請求項15に係るプログラムの一実施例に相当する。
It is obvious that this embodiment corresponds to an embodiment of the code processing device according to
以上、JPEG2000の符号を扱う実施形態について説明した。しかし、JPEG2000以外の符号であっても、JPEG2000の符号と同様に、プログレッションオーダに従って配列された部分符号から構成されていて部分符号の配列中でプログレッションオーダの変更が許容される符号を扱う装置に対しても、本発明を適用し得ることは明らかである。 The embodiment that handles JPEG2000 codes has been described above. However, even for codes other than JPEG2000, in the same way as JPEG2000 codes, a device that handles codes that are composed of partial codes arranged in accordance with a progression order and that allow the change of the progression order in the arrangement of partial codes. In contrast, it is clear that the present invention can be applied.
100 パーソナルコンピュータ(サーバ)
101 パーソナルコンピュータ(クライアント)
102 ネットワーク
110 CPU
111 RAM
112 ハードディスク装置
113 表示装置
114 入力装置
115 ネットワーク・インターフェース
100 Personal computer (server)
101 Personal computer (client)
102
111 RAM
112
Claims (16)
第1の記憶手段に格納されている、前記符号の各部分符号をアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号の部分符号の配列中でのプログレッションオーダの変更の有無を判定する第1の判定手段、
前記符号の、ユーザにより指定された部分符号が、先頭の部分符号から連続的に配列されているか否かの判定を行う第2の判定手段を有し、
前記第1の判定手段によりプログレッションオーダの変更が無いと判定され、かつ、前記第2の判定手段により前記指定された部分符号が前記符号の先頭の部分符号から連続的に配列されていると判定された場合に、前記処理手段において前記符号の前記指定された部分符号のみを対象にして前記処理を行うことを特徴とする符号処理装置。 A code processing device that handles codes that are composed of partial codes arranged in accordance with a progression order and that allow change of the progression order in the arrangement of partial codes,
Processing for obtaining pointer information for accessing each partial code of the code stored in the first storage means, and storing the pointer information in the second storage means in a form sorted according to one progression order. Processing means to perform,
First determination means for determining whether or not there is a change in progression order in the array of partial codes of the code;
A second determination means for determining whether or not the partial code designated by the user of the code is continuously arranged from the first partial code;
It is determined by the first determination means that there is no change in progression order, and the second determination means determines that the designated partial code is continuously arranged from the first partial code of the code. In such a case, the processing means performs the processing only on the designated partial code of the code.
第1の記憶手段に格納されている、前記符号の各部分符号をアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号中のプログレッションオーダの変更の有無を判定する第1の判定手段、
前記符号の、ユーザにより指定された部分符号が、先頭の部分符号から連続的に配列されているか否かの判定を行う第2の判定手段、
前記指定された部分符号の配列中でのプログレッションオーダの変更の有無を判定する第3の判定手段を有し、
前記第1の判定手段により前記符号中のプログレッションオーダの変更が有ると判定された場合において、前記第2の判定手段により前記指定された部分符号が前記符号の先頭の部分符号から連続的に配列されていると判定され、かつ、前記第2の判定手段により前記指定された部分符号の配列中でのプログレッションオーダの変更が無いと判定されときに、前記処理手段は前記指定された部分符号のみを対象にして前記処理を行うことを特徴とする符号処理装置。 A code processing device that handles codes that are composed of partial codes arranged in accordance with a progression order and that allow change of the progression order in the arrangement of partial codes,
Processing for obtaining pointer information for accessing each partial code of the code stored in the first storage means, and storing the pointer information in the second storage means in a form sorted according to one progression order. Processing means to perform,
First determination means for determining whether or not a progression order in the code is changed;
Second determination means for determining whether or not the partial code specified by the user of the code is continuously arranged from the first partial code;
A third determination unit for determining whether or not the progression order is changed in the specified partial code array;
When it is determined by the first determination means that there is a change in the progression order in the code, the designated partial code is continuously arranged from the first partial code of the code. And when the second determination means determines that there is no change in the progression order in the array of the specified partial codes, the processing means only performs the specified partial codes. The code processing apparatus is characterized in that the process is performed on a target.
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号のタイル毎に、プログレションオーダチェンジ指定の有無を判定する第1の判定手段、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定手段を有し、
前記第1の判定手段によりプログレッションオーダチェンジ指定が無いと判定された前記符号のタイルについて、前記第2の判定手段により前記指定されたパケットが先頭パケットから連続的に配列されていると判定された場合に、前記処理手段において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理装置。 A code processing apparatus that handles JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing means,
First determination means for determining whether or not a progression order change is designated for each tile of the code;
A second determination unit configured to determine whether or not packets designated by the user are continuously arranged from the top packet for each tile of the code;
For the tile of the code that has been determined by the first determination means that there is no progression order change designation, it is determined by the second determination means that the designated packets are continuously arranged from the top packet. In such a case, the processing means performs the processing only on the designated packet.
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理手段、
前記符号のタイル毎に、プログレッションオーダチェンジ指定の有無を判定する第1の判定手段、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定手段、
前記符号のタイル毎に、前記指定されたパケットの配列中でのプログレッションオーダの変更の有無を判定する第3の判定手段を有し、
前記第1の判定手段によりプログレッションオーダチェンジ指定が有ると判定されたタイルについて、前記第2の判定手段により前記指定されたパケットが先頭パケットから連続的に配列されていると判定され、かつ、前記第3の判定手段により前記指定されたパケットの配列中でのプログレッションオーダの変更が無いと判定された場合に、前記処理手段において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理装置。 A code processing apparatus that handles JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing means,
First determination means for determining whether or not a progression order change is designated for each tile of the code;
Second determination means for determining whether or not packets designated by the user are continuously arranged from the top packet for each tile of the code;
Third determination means for determining whether or not there is a change in the progression order in the specified packet arrangement for each tile of the code,
For the tile determined to have a progression order change designation by the first determination means, the second determination means determines that the specified packet is continuously arranged from the top packet, and When the third determination unit determines that there is no change in the progression order in the specified packet arrangement, the processing unit performs the process only on the specified packet. A code processing device.
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理工程、
前記符号のタイル毎に、プログレションオーダチェンジ指定の有無を判定する第1の判定工程、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定工程を有し、
前記第1の判定工程によりプログレッションオーダチェンジ指定が無いと判定された前記符号のタイルについて、前記第2の判定工程により前記指定されたパケットが先頭パケットから連続的に配列されていると判定された場合に、前記処理工程において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理方法。 A code processing method for handling JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing steps,
A first determination step for determining whether a progression order change is specified for each tile of the code;
A second determination step for determining whether or not the packet designated by the user is continuously arranged from the top packet for each tile of the code;
For the tile of the code determined to have no designation of progression order change in the first determination step, it is determined in the second determination step that the specified packet is continuously arranged from the top packet. In this case, the code processing method is characterized in that the processing is performed only on the designated packet in the processing step.
第1の記憶手段に格納されている、前記符号の各パケットをアクセスするためのポインタ情報を求め、該ポインタ情報を1のプログレッションオーダに従ってソートした形で第2の記憶手段に格納する処理を行う処理工程、
前記符号のタイル毎に、プログレッションオーダチェンジ指定の有無を判定する第1の判定工程、
前記符号のタイル毎に、ユーザにより指定されたパケットが、先頭パケットから連続的に配列されているか否かの判定を行う第2の判定工程、
前記符号のタイル毎に、前記指定されたパケットの配列中でのプログレッションオーダの変更の有無を判定する第3の判定工程を有し、
前記第1の判定工程によりプログレッションオーダチェンジ指定が有ると判定されたタイルについて、前記第2の判定工程により前記指定されたパケットが先頭パケットから連続的に配列されていると判定され、かつ、前記第3の判定工程により前記指定されたパケットの配列中でのプログレッションオーダの変更が無いと判定された場合に、前記処理工程において前記指定されたパケットのみを対象にして前記処理を行うことを特徴とする符号処理方法。 A code processing method for handling JPEG2000 codes,
Pointer information for accessing each packet of the code stored in the first storage means is obtained, and processing for storing the pointer information in the second storage means in a form sorted according to one progression order is performed. Processing steps,
A first determination step of determining whether or not a progression order change is specified for each tile of the code;
A second determination step of determining whether or not the packet designated by the user is continuously arranged from the top packet for each tile of the code;
A third determination step for determining whether or not there is a change in the progression order in the specified packet arrangement for each tile of the code;
For tiles determined to have a progression order change designation in the first determination step, it is determined in the second determination step that the specified packet is continuously arranged from the top packet, and When it is determined in the third determination step that there is no change in progression order in the specified packet arrangement, the processing is performed only on the specified packet in the processing step. A code processing method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006137822A JP4789197B2 (en) | 2006-05-17 | 2006-05-17 | Code processing apparatus, code processing method, program, and information recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006137822A JP4789197B2 (en) | 2006-05-17 | 2006-05-17 | Code processing apparatus, code processing method, program, and information recording medium |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007311999A JP2007311999A (en) | 2007-11-29 |
JP4789197B2 true JP4789197B2 (en) | 2011-10-12 |
Family
ID=38844462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006137822A Expired - Fee Related JP4789197B2 (en) | 2006-05-17 | 2006-05-17 | Code processing apparatus, code processing method, program, and information recording medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4789197B2 (en) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4125186B2 (en) * | 2003-06-20 | 2008-07-30 | キヤノン株式会社 | Image processing method and image processing apparatus |
JP4143471B2 (en) * | 2003-05-21 | 2008-09-03 | キヤノン株式会社 | Image encoding method, image encoding apparatus, and recording apparatus |
JP4812071B2 (en) * | 2004-01-16 | 2011-11-09 | 株式会社リコー | Image processing apparatus, image processing method, program, and information recording medium |
JP2005303854A (en) * | 2004-04-15 | 2005-10-27 | Nec Engineering Ltd | Image-data transfer system and its transferring method |
JP2006042117A (en) * | 2004-07-29 | 2006-02-09 | Ricoh Co Ltd | Image processor, image processing method, image retrieval system, and program |
JP4603947B2 (en) * | 2004-09-03 | 2010-12-22 | キヤノン株式会社 | Image communication system, server apparatus and control method therefor, and computer program |
-
2006
- 2006-05-17 JP JP2006137822A patent/JP4789197B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2007311999A (en) | 2007-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4709493B2 (en) | Method and product for communicating compressed digital images | |
JP4538430B2 (en) | System and method in server client environment | |
US7580577B2 (en) | Methods, apparatus and computer products for generating JPEG2000 encoded data in a client | |
JP2004274759A (en) | Communication method and device for compressed digital image with limited access and server/client transfer | |
JP2002511686A (en) | Multi-resolution compressed image management system and method | |
JP2006196968A (en) | Code processing apparatus, code processing method, program, and information recording medium | |
JP2007142614A (en) | Image processing apparatus and method, program, and information recording medium | |
JP4789192B2 (en) | Code processing apparatus, program, and information recording medium | |
US20030068089A1 (en) | Image processing system processing code data | |
JP2004166124A (en) | Image processor, program, storage medium, and image processing method | |
US20040130570A1 (en) | Image browsing device acquiring coded data for saving a displayed image from image data source | |
JP4609918B2 (en) | Image processing system, image processing method, program, and information recording medium | |
JP4789197B2 (en) | Code processing apparatus, code processing method, program, and information recording medium | |
JP2006253920A (en) | Server device, method for processing transmission, program and information recording medium | |
JP4743613B2 (en) | Code generation device, file generation device, code processing device, program, information recording medium | |
JP2006196969A (en) | Image processing apparatus, image processing method, program, and information recording medium | |
JP4748672B2 (en) | Code processing apparatus, program, and information recording medium | |
JP4323178B2 (en) | Search object restriction device, image processing apparatus, program, storage medium, and search object restriction method | |
JP4688164B2 (en) | Image processing apparatus, image processing method, program, and information recording medium | |
JP4874170B2 (en) | Image processing apparatus and image processing method | |
JP3958198B2 (en) | Image processing method | |
JP2005269323A (en) | Image processor, program, and storing medium | |
JP2008263589A (en) | Encoding device, code conversion device, code expansion device, encoding method, code conversion method, and code expansion method | |
JP5146145B2 (en) | Image processing apparatus, image processing method, computer program, and information recording medium | |
JP3919104B2 (en) | Image processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090227 |
|
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: 20110713 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110714 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140729 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |