WO2010013290A1 - 圧縮処理装置および圧縮処理方法 - Google Patents

圧縮処理装置および圧縮処理方法 Download PDF

Info

Publication number
WO2010013290A1
WO2010013290A1 PCT/JP2008/002065 JP2008002065W WO2010013290A1 WO 2010013290 A1 WO2010013290 A1 WO 2010013290A1 JP 2008002065 W JP2008002065 W JP 2008002065W WO 2010013290 A1 WO2010013290 A1 WO 2010013290A1
Authority
WO
WIPO (PCT)
Prior art keywords
encoding
huffman
data
unit
subsets
Prior art date
Application number
PCT/JP2008/002065
Other languages
English (en)
French (fr)
Inventor
ハンス ユルゲン マタウシュ
小出哲士
熊木武志
石崎雅勝
Original Assignee
国立大学法人広島大学
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 国立大学法人広島大学 filed Critical 国立大学法人広島大学
Priority to PCT/JP2008/002065 priority Critical patent/WO2010013290A1/ja
Priority to JP2008552632A priority patent/JP4303312B1/ja
Priority to US12/664,946 priority patent/US7860328B2/en
Publication of WO2010013290A1 publication Critical patent/WO2010013290A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Definitions

  • the present invention relates to a compression processing apparatus and a compression processing method for compressing data.
  • Huffman coding is known as one of the most efficient lossless compression techniques among data compression techniques (D. A. Huffman, “A method for the construction of minimum redundancy codes,” Proc. IRE , No. 40, pp. 1098-1101, Sept. 1952.).
  • Static Huffman coding is the most widely implemented form for both software and hardware.
  • static Huffman coding in order to execute the coding process in real time, the appearance frequency of data is investigated in advance from a large number of sample data, and an existing table created based on this result is prepared. Encoding is performed.
  • dynamic Huffman coding uses online compression, which is a problem with conventional Huffman coding, and compression that matches any symbol string that does not have an existing table, which is a problem with static Huffman coding. It was developed to improve.
  • dynamic Huffman coding a Huffman tree is updated each time a symbol is processed, and coding is performed using a tree constructed at that time.
  • the compression rate is often low for a certain time from the start of compression because the Huffman tree is not sufficient. The same can be said when the appearance distribution of data changes during compression.
  • the compression processing device is a compression processing device that compresses input data and outputs compressed data, and includes a division unit and an encoding unit.
  • the dividing unit divides a plurality of elements included in a population composed of input data into a plurality of subsets using the characteristics of each element.
  • the encoding unit Huffman-encodes the data to be encoded for each subset using a plurality of Huffman encoding tables provided corresponding to the plurality of subsets, and outputs compressed data.
  • the compression processing apparatus may further include a table creation unit.
  • the table creation unit performs a process of checking the appearance frequency of the encoding target data included in one subset and creating a Huffman coding table corresponding to one subset for all of the plurality of subsets. Create a Huffman coding table.
  • the encoding unit may perform Huffman encoding on the encoding target data for each subset while creating a plurality of Huffman encoding tables.
  • the compression processing apparatus may further include a table holding unit and an update unit.
  • the table holding unit holds first and second coding tables each consisting of a plurality of Huffman codes.
  • the update unit encodes one of the first and second coding tables that is not used for the Huffman coding of the input data with the highest appearance frequency according to the appearance frequency of the encoding target data. Update so that the target data is converted to the shortest Huffman code.
  • the encoding unit creates a plurality of Huffman encoding tables based on the other encoding table of the first and second encoding tables when the compression rate of the compressed data is equal to or less than the threshold value.
  • Huffman coding is performed on the data to be encoded for each subset, and when the compression ratio becomes larger than the threshold value, a plurality of Huffman coding tables are created based on one coding table updated by the update unit.
  • the encoding target data may be Huffman encoded for each subset.
  • the update unit counts the appearance frequency for all the encoding target data, and every time the appearance frequency for one encoding target data reaches the maximum value, the shorter the order in which the appearance frequency reaches the maximum value is shorter.
  • a process of assigning a new Huffman code having a length to one encoding target data may be executed for all the encoding target data, and one of the encoding tables may be updated.
  • the update unit calculates a compression rate based on the compressed data output from the encoding unit, and when the calculated compression rate becomes greater than a threshold value or is new for all the encoding target data.
  • a switching signal for switching the coding table may be generated and output to the coding unit.
  • the encoding unit switches the encoding table according to the switching signal, and Huffman-encodes the data to be encoded for each subset while creating a plurality of Huffman encoding tables based on the encoded table after the switching. Also good.
  • the compression processing apparatus may further include an image dividing unit.
  • the image dividing unit divides the image into a plurality of images based on an object included in the image to generate a plurality of input data. Then, the dividing unit performs a process of dividing a plurality of elements included in a population composed of one input data among a plurality of input data into a plurality of subsets using features of each element. Run against.
  • the encoding unit Huffman-encodes the data to be encoded for each subset using a plurality of Huffman encoding tables provided corresponding to the plurality of subsets divided from one input data, and compresses the compressed data.
  • the output process may be executed for all of the plurality of input data.
  • the compression processing method is a compression processing method for compressing input data and outputting compressed data, wherein the division unit uses a plurality of elements included in a population composed of input data to use a plurality of elements.
  • a first step of dividing the data into subsets, and the encoding unit encodes the data to be encoded for each subset using a plurality of Huffman encoding tables provided corresponding to the plurality of subsets.
  • a second step of outputting the compressed data is a compression processing method for compressing input data and outputting compressed data, wherein the division unit uses a plurality of elements included in a population composed of input data to use a plurality of elements.
  • the table creation unit checks the appearance frequency of the encoding target data included in one subset and creates a Huffman coding table corresponding to one subset for all of the plurality of subsets.
  • a third step of executing and creating a plurality of Huffman coding tables may be further included.
  • the encoding unit may perform Huffman encoding on the encoding target data for each subset while creating a plurality of Huffman encoding tables.
  • the update unit uses one of the first and second encoding tables each consisting of a plurality of Huffman codes, which is not used for Huffman encoding of the input data, as encoding target data.
  • the coding unit further includes a third step of updating the encoding target data having the highest appearance frequency so as to be converted into the shortest Huffman code in accordance with the appearance frequency, and in the second step, the encoding unit Encoding target data for each subset while creating a plurality of Huffman encoding tables based on the other encoding table of the first and second encoding tables when the compression rate is equal to or less than the threshold value If the compression ratio becomes larger than the threshold value, a plurality of Huffman coding tables must be created based on one coding table.
  • the coded data may be Huffman coding for each subset.
  • the third step includes a first sub-step in which the update unit counts the appearance frequency for all encoding target data, and the update unit every time the appearance frequency for one encoding target data reaches a maximum value.
  • a process of assigning a new Huffman code having a shorter length to one encoding target data is performed on all the encoding target data as the order in which the appearance frequency reaches the maximum value is earlier, and one of the codes
  • a second sub-step of updating the data table is performed on all the encoding target data as the order in which the appearance frequency reaches the maximum value is earlier.
  • the update unit calculates the compression rate based on the compressed data output from the encoding unit, and the update unit calculates the compression rate calculated in the third substep.
  • a switching signal for switching the encoding table is generated and output to the encoding unit.
  • the encoding unit switches the encoding table according to the switching signal, and creates a plurality of Huffman encoding tables based on the encoded table after the switching.
  • the encoding target data may be Huffman encoded for each subset.
  • the compression processing method further includes a third step in which the image division unit divides the image into a plurality of images based on an object included in the image and generates a plurality of input data.
  • the unit performs a process for dividing a plurality of elements included in a population composed of one input data among a plurality of input data into a plurality of subsets using characteristics of each element for all of the plurality of input data.
  • the encoding unit uses a plurality of Huffman encoding tables provided corresponding to the plurality of subsets divided from one input data to encode each subset.
  • the process of Huffman encoding the data and outputting the compressed data may be executed for all of the plurality of input data.
  • the compression processing device or the compression processing method divides input data into a plurality of subsets according to the difference in appearance frequency of each symbol string, and creates a Huffman coding table for each subset of the divided plurality of subsets. Huffman coding is performed for each subset using the created Huffman coding table.
  • FIG. 1 It is a schematic block diagram which shows the structure of the compression processing apparatus by Embodiment 1 of this invention. It is a conceptual diagram which shows the conventional Huffman encoding. It is a conceptual diagram which shows the Huffman encoding in the compression processing apparatus shown in FIG. It is a conceptual diagram of the image compression in the compression processing apparatus shown in FIG. It is a figure for demonstrating the specific example of the division
  • FIG. 9 is a configuration diagram of an encoder and an optimizer shown in FIG. 8. It is a block diagram of the allocation module shown in FIG. It is a block diagram of the exchange module shown in FIG.
  • FIG. 10 is another configuration diagram of the replacement module shown in FIG. 9. It is a figure for demonstrating the operation
  • FIG. 10 is a schematic block diagram of a compression processing apparatus according to Embodiment 3.
  • FIG. 10 is a figure for demonstrating the division method of an image. It is a flowchart for demonstrating the image division
  • 10 is a flowchart for illustrating a compression processing method according to Embodiment 3.
  • FIG. 10 is a schematic block diagram showing another configuration of the compression processing device according to Embodiment 3.
  • 12 is a flowchart for explaining another compression processing method according to the third embodiment.
  • FIG. 1 is a schematic block diagram showing a configuration of a compression processing apparatus according to Embodiment 1 of the present invention.
  • a compression processing apparatus 10 according to Embodiment 1 of the present invention includes a processing unit 1, a division unit 2, a table creation unit 3, and an encoding unit 4.
  • the processing unit 1 divides an original image into a plurality of pixels, conversion / sampling from RGB to YCbCr, level shift, discrete cosine transform, quantization, and zigzag scan / run length in a compression method using a conventional Huffman code Perform processing. Then, the processing unit 1 outputs the data after the zigzag scan and the run length processing to the division unit 2 as input data.
  • the division unit 2 divides the input data received from the processing unit 1 into a plurality of subsets according to the characteristics (appearance frequency) of each element included in the input data, and the divided plurality of subsets are converted into the table creation unit 3 and the code Output to the unit 4.
  • the table creation unit 3 receives a plurality of subsets from the division unit 2. Then, the table creation unit 3 investigates the appearance frequency of the encoding target data included in one subset, and based on the examined appearance frequency, the conventional Huffman tree construction method is used for one subset. Create a Huffman coding table. The table creation unit 3 executes this process for all subsets of the plurality of subsets, and creates a plurality of Huffman coding tables for the plurality of subsets. Then, the table creation unit 3 outputs the created plurality of Huffman coding tables to the coding unit 4.
  • the encoding unit 4 receives a plurality of subsets from the division unit 2 and receives a plurality of Huffman encoding tables from the table creation unit 3. Then, the encoding unit 4 performs Huffman encoding on the encoding target data included in the plurality of subsets using the plurality of Huffman encoding tables, and outputs the compressed data. In this case, the encoding unit 4 performs Huffman encoding on the encoding target data included in one subset using a Huffman encoding table created corresponding to one subset. Then, the encoding unit 4 performs this process on all the subsets of the plurality of subsets, and Huffman encodes all the encoding target data included in the plurality of subsets.
  • FIG. 2 is a conceptual diagram showing conventional Huffman coding.
  • FIG. 3 is a conceptual diagram showing Huffman coding in the compression processing apparatus 10 shown in FIG. Referring to FIG. 2, a population set U including input data includes a plurality of elements represented by white circles, white squares, and white triangles, and all of the plurality of elements belong to the subset A.
  • a plurality of elements belonging to the mother set U are divided into respective features and divided into several subsets B, C, and D. Then, a Huffman coding table is created for each of the subsets B, C, and D, and Huffman coding is performed for each of the subsets B, C, and D using the created Huffman coding table.
  • the compression rate can be improved.
  • the Huffman coding table is created for each subset and compression processing is performed, even after the number of elements is large, the encoded data can be obtained immediately.
  • FIG. 4 is a conceptual diagram of image compression in the compression processing apparatus 10 shown in FIG.
  • the processing unit 1 of the compression processing apparatus 10 divides the original image into a plurality of elements, performs conversion from RGB to YCbCr for each of the divided elements, Sampling.
  • the processing unit 1 of the compression processing apparatus 10 level-shifts the sampling result, and then performs discrete cosine transform (DCT: Discrete Cosine Transform).
  • DCT discrete cosine Transform
  • the processing unit 1 of the compression processing apparatus 10 performs quantization, performs zigzag scanning of the quantized data from the upper left to the lower right of the original image, and performs a run length process.
  • the dividing unit 2 of the compression processing apparatus 10 divides the input data (“data after zigzag scanning and run-length processing”; the same applies hereinafter) into a plurality of subsets, and the table creation unit 3 A Huffman coding table is created for each of the plurality of subsets divided by the unit 2, and the coding unit 4 uses a plurality of Huffman coding tables created by the table creation unit 3 to generate a Huffman code for each subset. To output a compressed image.
  • the “divide input data into subsets” block and the “Huffman coding for each subset” block are different from the conventional image compression method.
  • the dividing unit 2 changes the symbol string “ATAACCCCGG” into the symbol string “ATAA” and the symbol string “CCCCGG” depending on the appearance frequency of each symbol. And split into
  • the division unit 2 refers to the symbol string after the zigzag scan and the run length process, and divides the input data into a plurality of subsets by grouping similar symbol strings.
  • the division unit 2 divides the data after the zigzag scan and the run length processing into a plurality of subsets according to the appearance frequency of each symbol string.
  • FIG. 5 is a diagram for explaining a specific example of division into subsets.
  • the original image is a landscape image including a sky part, a mountain part, and a ground part.
  • the appearance frequency of each symbol string differs in the sky portion, the mountain portion, and the ground portion. Therefore, the dividing unit 2 divides the original image data into a subset A consisting of an empty portion, a subset B consisting of a mountain portion, and a subset C consisting of a ground portion, depending on the appearance frequency of each symbol string. To do.
  • the table creation unit 3 scans the subset A composed of empty portions, creates a Huffman coding table A for the subset A, scans the subset B composed of mountain portions, and scans the subset B
  • a Huffman coding table B is created for the sub-set C
  • a subset C consisting of the ground portion is scanned
  • a Huffman coding table C is created for the subset C.
  • the encoding unit 4 uses the Huffman encoding table A to Huffman-encode the data to be encoded included in the empty subset A and uses the Huffman encoding table B to form the mountain portion.
  • the encoding target data included in the set B is Huffman encoded
  • the encoding target data included in the subset C including the ground portion is Huffman encoded using the Huffman encoding table C.
  • Conventional Huffman coding is performed using a predetermined Huffman coding table regardless of data differences such as the sky portion, the mountain portion, and the ground portion. Or the conventional Huffman encoding performed Huffman encoding using the Huffman encoding table produced after scanning the whole image.
  • Huffman coding is performed using the Huffman coding tables A, B, and C optimized for each sky, mountain, and ground. Huffman codes can be assigned. Therefore, the compression rate can be improved.
  • FIG. 6 is a diagram for explaining another specific example of the division into subsets.
  • the original image is a snapshot of a person composed of a background part and a person part.
  • the appearance frequency of each symbol string differs in the background portion and the person portion. Therefore, the dividing unit 2 divides the data of the original image into a subset D consisting of the background portion and a subset E consisting of the person portion depending on the appearance frequency of each symbol string.
  • the table creation unit 3 scans the subset D composed of the background parts, creates a Huffman coding table D for the subset D, scans the subset E composed of the person parts, and scans the subset E A Huffman coding table E is created.
  • the encoding unit 4 Huffman-encodes the data to be encoded included in the subset D including the background portion using the Huffman encoding table D, and uses the Huffman encoding table E to form the portion including the person portion.
  • Data to be encoded included in the set E is Huffman encoded.
  • the method according to the present invention can improve the compression rate over the conventional Huffman coding for the same reason as described above.
  • FIG. 7 is a flowchart for explaining the compression processing method according to the first embodiment.
  • the processing unit 1 of the compression processing device 10 performs conversion from RGB to YCbCr, sampling, level shift, discrete cosine transform, quantization, and zigzag for the original image.
  • the dividing unit 2 extracts a similar symbol string from the encoding target data group received from the processing unit 1, and generates a subset (step S2).
  • the table creation unit 3 scans the subset generated by the division unit 2 and creates a Huffman coding table (step S3).
  • the encoding unit 4 receives a subset from the division unit 2 and receives a Huffman encoding table from the table creation unit 3. Then, the encoding unit 4 performs Huffman encoding on the data to be encoded in the subset using the Huffman encoding table (step S4).
  • step S5 it is determined whether or not the Huffman encoding has been completed for all the subsets. If the Huffman encoding has not been completed for all the subsets, the series of operations is performed in step S2. Returning to step S2, step S2 to step S5 described above are repeatedly executed.
  • step S5 If it is determined in step S5 that Huffman coding has been completed for all the subsets, the series of operations ends.
  • the compression processing apparatus 10 divides the input data into a plurality of subsets according to the difference in appearance frequency of each symbol string, and each subset of the divided plurality of subsets.
  • a Huffman coding table is created for each, and Huffman coding is performed for each subset using the created Huffman coding table.
  • FIG. 8 is a schematic block diagram of a compression processing apparatus according to the second embodiment.
  • division unit 2 in compression processing apparatus 10A according to the second embodiment, division unit 2, table creation unit 3 and encoding unit 4 of compression processing apparatus 10 shown in FIG. The rest is the same as the compression processing apparatus 10.
  • Encoder 11 holds two encoding tables each consisting of a Huffman code. When the encoder 11 does not receive the switching signal EXC for switching the coding table from the optimizer 12, the input data received from the processing unit 1 using one of the two coding tables. Is Huffman coded and compressed data is output. When the encoder 11 receives the switching signal EXC from the optimizer 12, the encoder 11 switches from one of the two encoding tables to the other encoding table, encodes the input data, and outputs the compressed data. To do.
  • the optimizer 12 updates a coding table that the encoder 11 does not use for Huffman coding of input data in parallel with the Huffman coding in the encoder 11, and generates a switching signal EXC and outputs it to the encoder 11.
  • FIG. 9 is a block diagram of the encoder 11 and the optimizer 12 shown in FIG.
  • encoder 11 includes a CAM (Content Addressable Memory) 111, a selector 112, and encoding tables 113 and 114.
  • the optimizer 12 includes an allocation module 121 and an exchange module 122.
  • the CAM 111 stores a plurality of memory symbols and a plurality of addresses respectively associated with the plurality of memory symbols.
  • the plurality of memory symbols are symbols that can be input to the CAM 111.
  • the CAM 111 receives each input symbol constituting the input data from the processing unit 1, the CAM 111 searches for a plurality of stored symbols, detects a stored symbol that matches the input symbol, and corresponds to the detected stored symbol The assigned address is detected. Then, the CAM 111 outputs the detected address as a match address MAdd to the selector 112 and the assignment module 121 of the optimizer 12.
  • the selector 112 When the selector 112 does not receive the switching signals EXC1 and EXC2 (a kind of switching signal EXC) from the allocation module 121 and the exchange module 122 of the optimizer 12, respectively, the selector 112 outputs the matching address MAdd received from the CAM 111 to the active table 113. When switching signals EXC 1 and EXC 2 are respectively received from allocation module 121 and exchange module 122, match address MAdd received from CAM 111 is output to shadow table 114.
  • EXC1 and EXC2 a kind of switching signal EXC
  • Each of the active tables 113 and 114 includes a plurality of addresses and a plurality of code words.
  • the plurality of code words are respectively associated with the plurality of addresses.
  • Each of the plurality of code words is composed of a Huffman code.
  • the encoding table 113 plays the role of an active table when it receives the match address MAdd from the selector 112.
  • the encoding table 113 reads the code word associated with the received matching address MAdd and outputs the read code word as compressed data.
  • the encoding table 113 serves as a shadow table when it does not receive the coincidence address MAdd from the selector 112.
  • the encoding table 114 has the same configuration as the encoding table 113 and performs the same function as the encoding table 113.
  • each of the encoding tables 113 and 114 includes an SRAM (Static Random Access Memory).
  • the exchange module 122 receives a new codeword from the assignment module 121 and is output as compressed data from the encoding table 113 (or the encoding table 114) serving as an active table (referred to as “old codeword”). The same shall apply hereinafter).
  • the exchange module 122 calculates a compression ratio based on the new codeword and the old codeword, and when the calculated compression ratio becomes larger than the threshold value, the switching module EXC2 is generated to generate the selector 112 and the allocation. Output to module 121.
  • FIG. 10 is a block diagram of the allocation module 121 shown in FIG.
  • the allocation module 121 includes a decoder 1200, counters 1201 to 120n (n is an integer of 2 or more), an address encoder 1211, an address counter 1212, an address register 1213, and a multiplexer (MUX) 1214. Address pointer 1215, basic table 1216, and controller 1217.
  • a decoder 1200 counters 1201 to 120n (n is an integer of 2 or more)
  • MUX multiplexer
  • the decoder 1200 decodes the coincidence address MAdd received from the CAM 111 of the encoder 11, and outputs the decoded coincidence address MAdd to a counter (one of the counters 1201 to 120n) provided corresponding to the coincidence address MAdd.
  • Counters 1201 to 120n are provided corresponding to n addresses stored in the CAM 111. Each of the counters 1201 to 120n is preset with a maximum value Count_MAX. This maximum value Count_MAX is determined according to the type of data to be subjected to Huffman coding.
  • Each of the counters 1201 to 120n receives the coincidence address MAdd from the decoder 1200, counts the number of times the coincidence address MAdd is received, and generates an overflow signal OFL when the count value reaches the maximum value Count_MAX.
  • the overflow signal OFL is output to the address encoder 1211, the address counter 1212 and the controller 1217.
  • each of the counters 1201 to 120n receives the reset signal RSET from the controller 1217, and resets the count value.
  • the address encoder 1211 holds an address associated with each of the counters 1201 to 120n.
  • the address encoder 1211 encodes the address associated with the counter (any of the counters 1201 to 120n) that outputs the overflow signal OFL,
  • the encoded address is output to the address register 1213 and the multiplexer 1214 as the address Add_old to be updated in the shadow table 114.
  • the address counter 1212 receives the overflow signal OFL from any of the counters 1201 to 120n, and receives the maximum address Add_old_MAX from the address register 1213 among the addresses Add_old to be updated.
  • the address counter 1212 sequentially generates the update address Add_new within the range below the maximum address Add_old_MAX, and outputs the generated update address Add_new to the address pointer 1215.
  • the update address Add_new indicates an address to be specified in the basic table 1216, and the basic table 1216 stores a plurality of codewords by assigning addresses in ascending order of codeword bit length, as will be described later.
  • the address counter 1212 generates the update address Add_new in order from the smallest address within the range below the maximum address Add_old_MAX.
  • the address counter 1212 upon receiving the switching signal EXC2 from the exchange module 122, the address counter 1212 generates addresses Add0 to Addn in order from “0”, and outputs the generated addresses Add0 to Addn to the multiplexer 1214 and the address pointer 1215.
  • the address register 1213 holds only the maximum address Add_old_MAX among the addresses Add_old received from the address encoder 1211 and outputs the held maximum address Add_old_MAX to the address counter 1212.
  • the multiplexer 1214 Upon receiving the address Add_old from the address encoder 1211, the multiplexer 1214 outputs the received address Add_old to the shadow table 113.
  • the address pointer 1215 When the address pointer 1215 receives the update address Add_new from the address counter 1212, the address pointer 1215 designates an address in the basic table 1216 that matches the received update address Add_new.
  • the address pointer 1215 receives addresses Add0 to Addn from the address counter 1212 and receives n addresses associated with the counters 1201 to 120n that output the overflow signal OFL from the controller 1217.
  • Address pointer 1215 designates, in basic table 1216, an address that does not match the address from controller 1217 among addresses Add0 to Addn received from address counter 1212.
  • the basic table 1216 stores a plurality of addresses and a plurality of code words. A plurality of code words are associated with a plurality of addresses, respectively. In this case, the basic table 1216 stores a plurality of codewords in ascending order of codeword bit length. Therefore, the code word with the shortest bit length is associated with the minimum address, and the code word with the longest bit length is associated with the maximum address.
  • the controller 1217 When the controller 1217 receives the overflow signal OFL from all of the counters 1201 to 120n, the controller 1217 generates the switching signal EXC1, outputs the generated switching signal EXC1 to the selector 112 of the encoder 11, and outputs the overflow signal OFL.
  • the n addresses associated with 1201 to 120n are sequentially output to the address pointer 1215.
  • the controller 1217 when the controller 1217 outputs the switching signal EXC1 or receives the switching signal EXC2 from the exchange module 122, the controller 1217 generates a reset signal RSET and outputs it to the counters 1201 to 120n.
  • FIG. 11 is a block diagram of the exchange module 122 shown in FIG. Referring to FIG. 11, exchange module 122 includes a subtractor 1221, an adder 1222, a comparator 1223, an accumulation register 1224, and a signal generator 1225.
  • the subtractor 1221 receives the code word C_new from the assignment module 121 and receives the code word C_old from the encoding table 113 (or the encoding table 114) that plays the role of an active table. Then, the subtracter 1221 subtracts the code word C_new from the code word C_old, and outputs the subtraction result to the adder 1222.
  • the adder 1222 receives the subtraction result from the subtractor 1221 and receives the accumulated value from the accumulation register 1224. Adder 1222 adds the subtraction result to the accumulated value, and outputs the addition result to accumulation register 1224.
  • the comparator 1223 receives the code word C_new from the assignment module 121 and receives the code word C_old from the encoding table 113 (or the encoding table 114) serving as an active table.
  • the comparator 1223 compares the bit length of the code word C_new with the bit length of the code word C_old, and activates the accumulation register 1224 when the bit length of the code word C_new is shorter than the bit length of the code word C_old.
  • Enable signal EN is generated, and the generated enable signal EN is output to the accumulation register 1224. Note that the comparator 1223 does not output the enable signal EN to the accumulation register 1224 when the bit length of the code word C_new is greater than or equal to the bit length of the code word C_old.
  • accumulating register 1224 When accumulating register 1224 receives enable signal EN from comparator 1223, accumulating register 1224 retains the addition result received from adder 1222 as an accumulated value and outputs the retained accumulated value to adder 1222 and signal generator 1225.
  • the signal generator 1225 has a preset compression rate threshold. Then, the signal generator 1225 compares the accumulated value received from the accumulation register 1224 with a threshold value. When the accumulated value becomes larger than the threshold value, the signal generator 1225 generates the switching signal EXC2, and the generated switching signal EXC2 is encoded by the encoder. 11 selectors 112 and the controller 1217 of the assignment module 121.
  • the accumulation register 1224 is activated by the enable signal EN only when the bit length of the code word C_new is shorter than the bit length of the code word C_old, and outputs the accumulated value to the signal generator 1225. Then, the signal generator 1225 generates the switching signal EXC2 when the accumulated value is larger than the compression rate threshold. Further, since the accumulated value is a value obtained by accumulating the subtraction result obtained by subtracting the code word C_new from the code word C_old, it indicates an accumulated value in which the bit length of the compressed data is shortened. In the present invention, this cumulative value is referred to as “compression rate”.
  • the signal generator 1225 compares the compression rate with the threshold value, and generates the switching signal EXC2 when the compression rate is larger than the threshold value.
  • FIG. 12 is another configuration diagram of the exchange module 122 shown in FIG.
  • an arithmetic unit 1226 such as an ALU (Arithmic Logic Unit) is used instead of the subtractor 1221 without using the comparator 1223, the calculation of C_old and C_new is devised. By doing so, the value of the accumulation register can be finely adjusted. For example, when the bit length of C_new is longer than C_old, the subtraction result is negative, but by accumulating the value, it is possible to leave an efficient codeword. In addition to the subtraction, a better effect may be obtained by using addition or multiplication.
  • FIG. 13 is a diagram for explaining the operation of Huffman coding using the one coding table 113.
  • FIG. 14 is a diagram for explaining the operation of Huffman coding using the other coding table 114.
  • the selector 112 is omitted.
  • the selector 112 selects the encoding table 113 when it does not receive the switching signal EXC1 or EXC2. Therefore, the encoding table 113 serves as an active table, and the encoding table 114 serves as a shadow table.
  • the encoding table 113 includes addresses [0000] to [1111] and codewords [00002] to [ffeff]. Each of the codewords [00002] to [fffef] is a Huffman code, and the plurality of codewords [00002] to [ffffef] are associated with the plurality of addresses [0000] to [1111], respectively. Yes.
  • selector 112 when selector 112 receives switching signal EXC1 or EXC2, selector 112 switches the encoding table to be used from encoding table 113 to encoding table 114. Therefore, the encoding table 114 serves as an active table, and the encoding table 113 serves as a shadow table.
  • the encoding table 114 includes addresses [0000] to [1111] and codewords [00023] to [fffef]. Each of the codewords [00023] to [ffffef] is a Huffman code, and the plurality of codewords [00023] to [ffffef] are associated with the plurality of addresses [0000] to [1111], respectively. Yes.
  • the encoder 11 by configuring the encoder 11 with the CAM 111 and the two encoding tables 113 and 114, the input symbol can be easily Huffman encoded.
  • FIG. 15 is a diagram for explaining the update of the encoding table 114 serving as a shadow table.
  • the number in parentheses of the code word represents the bit length of the code word.
  • the roles of the active table and the shadow table of the two encoding tables 113 and 114 are switched when all of the counters 1201 to 120n output the overflow signal OFL or when the compression ratio becomes larger than the threshold value.
  • the same address and the same code word are initially set as default settings.
  • the data is output to the register 1213 and the multiplexer 1214.
  • the address counter 1212 receives the overflow signal OFL from the counter 1203 and the maximum address Add_old_MAX from the address register 1213. Then, the address counter 1212 generates update addresses Add_new in ascending order of address values within a range equal to or less than the maximum address Add_old_MAX, and outputs the generated update addresses Add_new to the address pointer 1215.
  • the multiplexer 1214 outputs the address Add_old received from the address encoder 1211 to the encoding table 114 serving as a shadow table.
  • Output to the encoding table 114 ( shadow table) and the exchange module 122 as C_new.
  • the address counter 1212 receives the overflow signal OFL from the last counter (any of the counters 1201 to 120n) and outputs the update address Add_new to the address pointer 1215, or when receiving the switching signal EXC2 from the exchange module 122, Starting from 0 ′′, addresses are sequentially generated, and the generated addresses are output to the multiplexer 1214 and the address pointer 1215.
  • the controller 1217 sequentially outputs n addresses associated with the counters 1201 to 120n that output the overflow signal OFL to the address pointer 1215.
  • the code word received from the basic table 1216 is overwritten on the code word not overwritten.
  • the encoding table 113 is updated by the above-described method.
  • FIG. 16 is a flowchart for explaining operations in the encoder 11 and the optimizer 12 shown in FIG.
  • CAM 111 of encoder 11 receives an input symbol (step S11), and compares the received input symbol with a stored symbol (step S12).
  • the CAM 111 of the encoder 11 detects an address associated with a storage symbol that matches the input symbol
  • the CAM 111 outputs the detected address to the selector 112 and the assignment module 121 as a match address MAdd.
  • step S15 it is determined whether or not all input symbols have been converted to Huffman codes. If all input symbols have not been converted to Huffman codes, the series of operations returns to step S11, and the encoder 11 The above-described steps S11 to S15 are repeatedly executed.
  • step S15 when it is determined in step S15 that all input symbols have been converted to Huffman codes, the series of operations ends.
  • step S13 the counter (one of the counters 1201 to 120n) associated with the coincidence address MAdd increments the counter value by “1” (step S16), and the counter value reaches the maximum value. It is determined whether or not there is (step S17).
  • step S17 When it is determined in step S17 that the counter value is not the maximum value, the exchange module 122 determines whether or not the compression rate is equal to or less than the threshold value by the method described above (step S18).
  • step S18 When it is determined in step S18 that the compression ratio is equal to or less than the threshold value, the series of operations returns to step S16, and the above-described steps S16 to S18 are repeatedly executed.
  • step S18 when it is determined in step S18 that the compression rate is greater than the threshold value, the series of operations proceeds to step S22.
  • step S21 it is determined whether or not all counter values are maximum values. When all counter values are maximum values, the series of operations proceeds to step S22.
  • step S21 when it is determined in step S21 that at least one of all the counter values is not the maximum value, the series of operations proceeds to step S16.
  • step S18 When it is determined in step S18 that the compression ratio is greater than the threshold value, or when it is determined in step S21 that all counter values are maximum values, the coding table is switched (step S22). And a series of operation
  • FIG. 17 is a diagram for specifically explaining Huffman coding in the compression processing apparatus 10A shown in FIG.
  • encoder 11 receives input data after zigzag scan and run length processing are performed in processing unit 1.
  • the data will be Huffman encoded.
  • the encoding table 114 shadow table
  • the Huffman coding is performed on the data to be encoded in the face portion while creating a Huffman coding table suitable for the Huffman coding of the face portion using the part of the codewords.
  • the encoder 11 and the optimizer 12 perform Huffman coding on the input data input from the processing unit 1 to divide the person image into a subset of the background portion, the face portion, and the torso portion. Then, while creating a Huffman coding table suitable for each subset of the face part and the body part, the subsets of the background part, the face part, and the body part are Huffman coded.
  • the encoder 11 constitutes the division unit 2 and the encoding unit 4 shown in FIG. 1, and the encoder 11 and the optimizer 12 constitute the table creation unit 3 shown in FIG.
  • the compression processing apparatus 10A (see FIG. 8) according to the second embodiment has the same configuration as the compression processing apparatus 10 (see FIG. 1) according to the first embodiment.
  • FIG. 18 is a flowchart for explaining the compression processing method according to the second embodiment.
  • processing unit 1 of compression processing apparatus 10 ⁇ / b> A performs conversion from RGB to YCbCr, sampling, level shift, discrete cosine transformation, quantization, and zigzag for the original image.
  • the detected address is detected, and the detected address is output to the optimizer 12 as the match address MAdd.
  • the optimizer 12 counts the appearance frequency for each encoding target data by counting the number of times the matching address MAdd is received (step S33).
  • the optimizer 12 determines that the number of new allocations of Huffman codes has exceeded the threshold value, and at least one of the counters 1201 to 120n outputs the overflow signal OFL If not, it is determined that the number of new allocations of Huffman codes does not exceed the threshold.
  • step S36 When it is determined in step S36 that the number of new allocations of the Huffman code has exceeded the threshold value, the encoder 11 switches the active table from the encoding table 113 to the encoding table 114, and a new Huffman code is added in the switched encoding table 114.
  • the data to be encoded is Huffman encoded while creating the encoding table (step S37).
  • step S36 when it is determined in step S36 that the number of new allocations of the Huffman code does not exceed the threshold, the encoder 11 uses the Huffman encoding table already created using the encoding table 113 to encode data to be encoded. Is Huffman encoded (step S38).
  • step S39 it is determined whether or not all the encoding target data has been encoded.
  • step S39 it is determined that encoding of at least one encoding target data has not been completed.
  • the series of operations returns to step S32, and encoding of all the encoding target data is completed in step S39. Steps S32 to S39 described above are repeatedly executed until it is determined that they have been performed.
  • step S39 when it is determined in step S39 that all the encoding target data has been encoded, the series of operations ends.
  • the compression processing apparatus 10A divides input data into subsets and creates encoding target data while creating a Huffman encoding table suitable for the divided subsets. Huffman encoding.
  • the data to be encoded can be Huffman encoded at high speed and the compression rate can be improved.
  • the encoding tables 113 and 114 constitute a “table holding unit”, and the optimizer 12 constitutes an “update unit”.
  • FIG. 19 is a schematic block diagram of a compression processing apparatus according to the third embodiment.
  • a compression processing apparatus 10B according to Embodiment 3 is the same as the compression processing apparatus 10 except that an image dividing unit 5 is added to the compression processing apparatus 10 shown in FIG.
  • the image dividing unit 5 divides the original image data into a plurality of image data based on the object of the original image, and outputs the divided plurality of image data to the processing unit 1.
  • the processing unit 1 processes the plurality of image data input from the image dividing unit 5 for each image data by the method described above, and divides the plurality of input data corresponding to the plurality of image data. Output to unit 2.
  • the dividing unit 2 executes the process of dividing each input data into a plurality of subsets for all the input data of the plurality of input data
  • the table creating unit 3 A process of creating a plurality of Huffman coding tables suitable for a plurality of subsets divided for each input data is executed for all the input data of the plurality of input data.
  • the processing for performing Huffman coding for each subset using a plurality of Huffman coding tables suitable for the plurality of subsets is performed on all input data of the plurality of input data. Run against.
  • the image division unit 5 divides an image into a plurality of images using, for example, a region growing type division division algorithm.
  • a leader cell is determined from 3 ⁇ 3 pixels, and a region is grown from the determined leader cell region to a surrounding pixel region having a relatively large coupling weight. Is a method of dividing the image by repeating until no leader cell exists.
  • FIG. 20 is a diagram for explaining an image dividing method.
  • the image dividing unit 5 divides one frame into images of each object by a region growing type image dividing method.
  • This region-growing image segmentation method is the LEGION model (D.DL. Wang, angand D. Terman, “Image segmentation based on oscillator correlation,” Neural Computation, Volume 9 (4), pp. 805-836 (1997). ) Is handled in four states: self-ignition (self-excitable), self-ignitable (excitable), and ignition (inhibition).
  • This region-growing image segmentation method includes four steps of initialization, self-ignition, ignition, and suppression.
  • the image dividing unit 5 receives an input image having a 3 ⁇ 3 configuration shown in FIG. Then, the image dividing unit 5 calculates eight coupling weights CW1 to CW8 between the pixels in the nine pixels constituting the input image, and corresponds the calculated eight coupling weights CW1 to CW8 between the pixels. In addition, it is held in a memory (built in the image division unit 5). In FIG. 20B, eight connection weights of the pixel (2, 2) and the surrounding pixels are illustrated.
  • the image division unit 5 reads the eight connection weights CW1 to CW8 held in the memory, and calculates the sum SUM (CW) of the read eight connection weights CW1 to CW8.
  • the image dividing unit 5 determines whether or not the calculated sum SUM (CW) is larger than the threshold value phi P for determining the leader cell.
  • SUM means calculating a sum represented by a sigma symbol in mathematics.
  • the image dividing unit 5, when the sum SUM (CW) is equal to or less than the threshold value phi P, without setting the pixels that are the center of the calculation of the coupling weights leader cell, the reader self-lag p ij Set to 0.
  • the image dividing unit 5 executes this processing by setting each of the nine pixels of the input image as a pixel that is the center of calculation of the coupling weight, and determines a leader cell (see FIG. 20C).
  • the image division unit 5 returns to the self-ignition process for dividing the next area again after the extinguishing process is completed. Then, the image division unit 5 repeatedly executes the above-described processing until no leader cell exists, and divides each area. Then, after all the reader cells have fired, the image division unit 5 labels all the areas and ends the division of one frame image (see (h) in FIG. 20).
  • FIG. 21 is a flowchart for explaining an image segmentation method using the region growing segmentation algorithm.
  • image segmentation unit 5 calculates a connection weight between pixels in a plurality of pixels constituting one frame, and determines a leader cell by the method described above. (Step S41).
  • the image division unit 5 determines whether or not a self-ignitable cell has been detected (step S42). When it is determined that a self-ignitable cell has been detected, self-ignition is performed by the method described above (step S42). S43).
  • step S44 determines whether or not the ignition cell exists (step S44), and when the ignition cell exists, performs ignition (region growth) to the surroundings by the method described above (step S45). And a series of operation
  • step S44 If it is determined in step S44 that there is no ignition cell, the image segmentation unit 5 performs the end of ignition and area determination by the method described above, and performs labeling (extinguishing) (step S46). Thereafter, the series of operations returns to step S42, and steps S42 to S46 are repeatedly executed until it is determined in step S42 that no self-ignitable cell is detected.
  • step S42 If it is determined in step S42 that no self-ignitable cell is detected, the series of operations ends.
  • the image dividing unit 5 repeatedly executes the flowchart shown in FIG. 21 to divide each frame into images of the respective objects.
  • FIG. 22 is a flowchart for explaining the compression processing method according to the third embodiment.
  • the flowchart shown in FIG. 22 is the same as the flowchart shown in FIG. 7 except that steps S51 to S53 are added to steps S2 to S5 of the flowchart shown in FIG.
  • the image dividing unit 5 of the compression processing apparatus 10B divides the original image into a plurality of images according to the flowchart shown in FIG. 21 (step S51).
  • step S5 If it is determined in step S5 that the encoding has been completed for all the subsets, it is determined whether the encoding has been completed for all the images (step S53).
  • step S53 When it is determined in step S53 that encoding has not been completed for all images, the series of operations returns to step S52, and in step S53, it is determined that encoding has been completed for all images. Steps S52, S2 to S5, and S53 described above are repeatedly executed until it is done.
  • step S53 if it is determined in step S53 that encoding has been completed for all the images, a series of operations is completed.
  • FIG. 23 is a schematic block diagram showing another configuration of the compression processing apparatus according to the third embodiment.
  • the compression processing apparatus according to Embodiment 3 may be a compression processing apparatus 10C shown in FIG.
  • the compression processing apparatus 10C is obtained by adding the image unit 5 to the compression processing apparatus 10A shown in FIG. 8, and the rest is the same as the compression processing apparatus 10A.
  • the image dividing unit 5 is as described above. Accordingly, the compression processing apparatus 10C divides the original image into a plurality of images while paying attention to the object, and each of the divided plurality of images is suitable for division into a plurality of subsets and a plurality of subsets. While creating a plurality of Huffman encoding tables, a process for Huffman encoding all the encoding target data included in the plurality of subsets is executed to compress the original image data.
  • FIG. 24 is a flowchart for explaining another compression processing method according to the third embodiment.
  • the flowchart shown in FIG. 24 is the same as the flowchart shown in FIG. 18 except that steps S51 to S53 are added to steps S32 to S39 of the flowchart shown in FIG.
  • step S51 and S52 are sequentially executed, and thereafter, the above-described steps S32 to S39 are sequentially executed.
  • step S53 described above is executed, and in step S53, it is determined that encoding has been completed for all images. Then, the series of operations ends.
  • the original image is divided into a plurality of images while paying attention to the object, and the compression processing method or the embodiment according to the first embodiment is performed on each of the divided plurality of images.
  • the original image data is compressed using the compression processing method 2.
  • each divided image is composed of similar image data. Therefore, data compression can be flexibly performed by applying the Huffman coding according to the first and second embodiments to these images.
  • the landscape shown in FIG. 5 is divided into three images: an image made up of the sky, an image made up of the mountains, and an image made up of the ground.
  • each of the three images is made up of symbol strings having similar appearance frequencies, so that a Huffman coding table that can flexibly correspond to each image can be created. Therefore, data compression can be performed flexibly.
  • the image division is performed by using the region growing type image division method.
  • the present invention is not limited to this, and the image division is performed in the following (1) to (4). It may be performed using the methods described.
  • the present invention is not limited to this, and the compression processing apparatus and the compression processing method according to the present invention process text data and audio data. You may compress by the method mentioned above.
  • the present invention is applied to a compression processing apparatus capable of improving compression efficiency.
  • the present invention is also applied to a compression processing method capable of improving compression efficiency.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

分割ユニット(2)は、ジグザグスキャン/ランレングス処理まで終了した入力データの各記号列を出現頻度の違いによって出現頻度が類似した複数の部分集合に分割する。そして、テーブル作成ユニット(3)は、各部分集合を走査して各部分集合に対してハフマン符号化テーブルを作成する。符号化ユニット(4)は、各部分集合をその部分集合に対して作成されたハフマン符号化テーブルを用いてハフマン符号化する処理を複数の部分集合の全ての部分集合について実行する。

Description

圧縮処理装置および圧縮処理方法
 この発明は、データを圧縮する圧縮処理装置および圧縮処理方法に関するものである。
 従来、ハフマン符号化は、データ圧縮技術の中で最も効率のよい可逆圧縮技術の一つとして知られている(D. A. Huffman, “A method for the construction of minimum redundancy codes,” Proc. IRE, no. 40, pp. 1098-1101, Sept. 1952.)。
 一般的なハフマン符号化は、圧縮処理を行なう前に、全ての符号化対象の記号列を精査することにより、はじめに、対象データに合わせた符号化テーブルを作成し、その作成した符号化テーブルを、再び、同様の記号列に対して用いて圧縮処理を行なう。
 しかし、この方法では、圧縮を行なうためにデータを2回スキャンする必要があるため、オンラインでのリアルタイム圧縮が困難になる。また、符号化対象の記号列の種類が多く、出現頻度に偏りがある場合、圧縮率の向上が望めない場合がある。
 そこで、最近では、静的ハフマン符号化と動的(「適応型」とも言う)ハフマン符号化(D. E. Kunth, “Dynamic Huffmann coding,” J. Algorithms, vol. 6, pp. 163-180, 1985.)の2通りに分かれている。
 静的ハフマン符号化は、ソフトウェアおよびハードウェア共に、最も広く実装されている形態である。そして、静的ハフマン符号化は、符号化処理をリアルタイムに実行するために、予め数多くのサンプルデータからデータの出現頻度を調査しておき、この結果を元に作成した既存のテーブルを用意して符号化を行なうものである。
 また、動的ハフマン符号化は、従来のハフマン符号化の問題点であるオンラインでの圧縮、および静的ハフマン符号化の問題点である既存のテーブルが存在しない任意の記号列に合わせた圧縮を改善するために開発されたものである。そして、動的ハフマン符号化は、記号を処理するごとにハフマン木を更新し、その時点で構成されたツリーによって符号化を行なうものである。
 しかし、従来の動的ハフマン符号化においては、圧縮効率およびリアルタイム性についていくつかの問題がある。すなわち、動的ハフマン符号化は、アルゴリズムの特性上、符号化データに加え、初出現の記号を符号化せずに送らなければならないため、その分、データ量が増加する。
 また、動的ハフマン符号化においては、圧縮開始からある時間は、ハフマン木が十分なものでないため、圧縮率が低いことが多い。これは、圧縮中にデータの出現分布が変化した場合にも同様のことが言える。
 更に、データの局所性により、集中的に出現した記号に短い符号が割り当てられたとしても、それ以降出現しない場合には、データ量が大きくなるにつれて静的ハフマン符号化よりも圧縮効率が下がる場合がある。
 これに対しては、符号化テーブルの定期的なリフレッシュという方法が採用されることもあるが、過去のデータの生起確率を破棄することは、逆に圧縮効率を悪化させることにもなる。また、符号化の際に、その都度、ハフマン木を更新するため、処理により多くの時間を必要とする。これにより、オンラインでの処理が可能であるとしても、動的ハフマン符号化は、リアルタイム性を要するアプリケーションには向かない場合がある。
 そこで、圧縮効率の向上が可能な圧縮処理装置を提供することが望まれる。
 また、圧縮効率の向上が可能な圧縮処理方法を提供することが望まれる。
 圧縮処理装置は、入力データを圧縮して圧縮データを出力する圧縮処理装置であって、分割ユニットと、符号化ユニットとを備える。分割ユニットは、入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する。符号化ユニットは、複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、圧縮データを出力する。
 圧縮処理装置は、テーブル作成ユニットをさらに備えてもよい。テーブル作成ユニットは、1つの部分集合に含まれる符号化対象データの出現頻度を調べて1つの部分集合に対応するハフマン符号化テーブルを作成する処理を複数の部分集合の全てについて実行し、複数のハフマン符号化テーブルを作成する。
 符号化ユニットは、複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化してもよい。
 圧縮処理装置は、テーブル保持ユニットと、更新ユニットとをさらに備えてもよい。テーブル保持ユニットは、各々が複数のハフマン符号からなる第1および第2の符号化テーブルを保持する。更新ユニットは、第1および第2の符号化テーブルのうち、入力データのハフマン符号化に用いられていない一方の符号化テーブルを符号化対象データの出現頻度に応じて出現頻度が最も多い符号化対象データが最も短いハフマン符号に変換されるように更新する。そして、符号化ユニットは、圧縮データの圧縮率がしきい値以下であるとき、第1および第2の符号化テーブルのうちの他方の符号化テーブルに基づいて複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化し、圧縮率がしきい値よりも大きくなると、更新ユニットによって更新された一方の符号化テーブルに基づいて複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化してもよい。
 更新ユニットは、全ての符号化対象データに対して出現頻度をカウントするとともに、1つの符号化対象データに対する出現頻度が最大値に達する毎に、出現頻度が最大値に達した順番が早いほど短い長さを有する新しいハフマン符号を1つの符号化対象データに対して割り当てる処理を全ての符号化対象データに対して実行し、一方の符号化テーブルを更新してもよい。
 更新ユニットは、符号化ユニットから出力された圧縮データに基づいて圧縮率を演算するとともに、その演算した圧縮率がしきい値よりも大きくなったとき、または全ての符号化対象データに対して新しいハフマン符号を割り当てたとき、符号化テーブルを切換えるための切換信号を生成して符号化ユニットへ出力してもよい。符号化ユニットは、切換信号に応じて符号化テーブルを切換え、その切換え後の符号化テーブルに基づいて複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化してもよい。
 圧縮処理装置は、画像分割ユニットをさらに備えてもよい。画像分割ユニットは、画像に含まれる対象物に基づいて画像を複数の画像に分割して複数の入力データを生成する。そして、分割ユニットは、複数の入力データのうちの1つの入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する処理を複数の入力データの全てに対して実行する。符号化ユニットは、1つの入力データから分割された複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、圧縮データを出力する処理を複数の入力データの全てに対して実行してもよい。
 また、圧縮処理方法は、入力データを圧縮して圧縮データを出力する圧縮処理方法であって、分割ユニットが、入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する第1のステップと、符号化ユニットが、複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、圧縮データを出力する第2のステップとを備える。
 圧縮処理方法は、テーブル作成ユニットが、1つの部分集合に含まれる符号化対象データの出現頻度を調べて1つの部分集合に対応するハフマン符号化テーブルを作成する処理を複数の部分集合の全てについて実行し、複数のハフマン符号化テーブルを作成する第3のステップをさらに備えてもよい。
 第2のステップにおいて、符号化ユニットは、複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化してもよい。
 圧縮処理方法は、更新ユニットが、各々が複数のハフマン符号からなる第1および第2の符号化テーブルのうち、入力データのハフマン符号化に用いられていない一方の符号化テーブルを符号化対象データの出現頻度に応じて出現頻度が最も多い符号化対象データが最も短いハフマン符号に変換されるように更新する第3のステップをさらに備え、第2のステップにおいて、符号化ユニットは、圧縮データの圧縮率がしきい値以下であるとき、第1および第2の符号化テーブルのうちの他方の符号化テーブルに基づいて複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化し、圧縮率がしきい値よりも大きくなると、一方の符号化テーブルに基づいて複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化してもよい。
 第3のステップは、更新ユニットが、全ての符号化対象データに対して出現頻度をカウントする第1のサブステップと、更新ユニットが、1つの符号化対象データに対する出現頻度が最大値に達する毎に、出現頻度が最大値に達した順番が早いほど短い長さを有する新しいハフマン符号を1つの符号化対象データに対して割り当てる処理を全ての符号化対象データに対して実行し、一方の符号化テーブルを更新する第2のサブステップとを含んでもよい。
 第3のステップは、更新ユニットが、符号化ユニットから出力された圧縮データに基づいて圧縮率を演算する第3のサブステップと、更新ユニットが、第3のサブステップにおいて演算された圧縮率がしきい値よりも大きくなったとき、または全ての符号化対象データに対して新しいハフマン符号を割り当てたとき、符号化テーブルを切換えるための切換信号を生成して符号化ユニットへ出力する第4のサブステップとをさらに含み、第2のステップにおいて、符号化ユニットは、切換信号に応じて符号化テーブルを切換え、その切換え後の符号化テーブルに基づいて複数のハフマン符号化テーブルを作成しながら各部分集合毎に符号化対象データをハフマン符号化してもよい。
 圧縮処理方法は、画像分割ユニットが、画像に含まれる対象物に基づいて画像を複数の画像に分割して複数の入力データを生成する第3のステップをさらに備え、第1のステップにおいて、分割ユニットは、複数の入力データのうちの1つの入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する処理を複数の入力データの全てに対して実行し、第2のステップにおいて、符号化ユニットは、1つの入力データから分割された複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、圧縮データを出力する処理を複数の入力データの全てに対して実行してもよい。
 圧縮処理装置または圧縮処理方法は、入力データを各記号列の出現頻度の違いによって複数の部分集合に分割し、その分割した複数の部分集合の各部分集合毎にハフマン符号化テーブルを作成し、その作成したハフマン符号化テーブルを用いて各部分集合毎にハフマン符号化を行なう。
 その結果、従来のハフマン符号化を用いた場合よりも、各部分集合に含まれる符号化対象データに対して短いハフマン符号が割り当てられる。
 したがって、圧縮率を向上できる。
この発明の実施の形態1による圧縮処理装置の構成を示す概略ブロック図である。 従来のハフマン符号化を示す概念図である。 図1に示す圧縮処理装置におけるハフマン符号化を示す概念図である。 図1に示す圧縮処理装置における画像圧縮の概念図である。 部分集合への分割の具体例を説明するための図である。 部分集合への分割の他の具体例を説明するための図である。 実施の形態1における圧縮処理方法を説明するためのフローチャートである。 実施の形態2による圧縮処理装置の概略ブロック図である。 図8に示すエンコーダおよび最適器の構成図である。 図9に示す割当モジュールの構成図である。 図9に示す交換モジュールの構成図である。 図9に示す交換モジュールの他の構成図である。 一方の符号化テーブルを用いたハフマン符号化の動作を説明するための図である。 他方の符号化テーブルを用いたハフマン符号化の動作を説明するための図である。 シャドウテーブルの役割を果たす符号化テーブルの更新を説明するための図である。 図9に示すエンコーダおよび最適器における動作を説明するためのフローチャートである。 図8に示す圧縮処理装置におけるハフマン符号化を具体的に説明するための図である。 実施の形態2における圧縮処理方法を説明するためのフローチャートである。 実施の形態3による圧縮処理装置の概略ブロック図である。 画像の分割方法を説明するための図である。 領域成長型分割分割アルゴリズムを用いた画像の分割方法を説明するためのフローチャートである。 実施の形態3における圧縮処理方法を説明するためのフローチャートである。 実施の形態3による圧縮処理装置の他の構成を示す概略ブロック図である。 実施の形態3における他の圧縮処理方法を説明するためのフローチャートである。
 本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
 [実施の形態1]
 図1は、この発明の実施の形態1による圧縮処理装置の構成を示す概略ブロック図である。図1を参照して、この発明の実施の形態1による圧縮処理装置10は、処理部1と、分割ユニット2と、テーブル作成ユニット3と、符号化ユニット4とを備える。
 処理部1は、従来のハフマン符号を用いた圧縮方法における原画像の複数の画素への分割、RGBからYCbCrへの変換/サンプリング、レベルシフト、離散コサイン変換、量子化、およびジグザグスキャン/ランレングス処理を行なう。そして、処理部1は、ジグザグスキャンおよびランレングス処理後のデータを入力データとして分割ユニット2へ出力する。
 分割ユニット2は、処理部1から受けた入力データを入力データに含まれる各要素の特徴(出現頻度)によって複数の部分集合に分割し、その分割した複数の部分集合をテーブル作成ユニット3および符号化ユニット4へ出力する。
 テーブル作成ユニット3は、分割ユニット2から複数の部分集合を受ける。そして、テーブル作成ユニット3は、1つの部分集合に含まれる符号化対象データの出現頻度を調査し、その調査した出現頻度に基づいて、従来のハフマン木の構築方法を用いて1つの部分集合に対するハフマン符号化テーブルを作成する。テーブル作成ユニット3は、この処理を複数の部分集合の全ての部分集合に対して実行し、複数の部分集合に対して複数のハフマン符号化テーブルを作成する。そうすると、テーブル作成ユニット3は、その作成した複数のハフマン符号化テーブルを符号化ユニット4へ出力する。
 符号化ユニット4は、分割ユニット2から複数の部分集合を受け、テーブル作成ユニット3から複数のハフマン符号化テーブルを受ける。そして、符号化ユニット4は、複数の部分集合に含まれる符号化対象データを複数のハフマン符号化テーブルを用いてハフマン符号化し、圧縮データを出力する。この場合、符号化ユニット4は、1つの部分集合に含まれる符号化対象データを1つの部分集合に対応して作成されたハフマン符号化テーブルを用いてハフマン符号化する。そして、符号化ユニット4は、この処理を複数の部分集合の全ての部分集合に対して実行し、複数の部分集合に含まれる全ての符号化対象データをハフマン符号化する。
 図2は、従来のハフマン符号化を示す概念図である。また、図3は、図1に示す圧縮処理装置10におけるハフマン符号化を示す概念図である。図2を参照して、入力データからなる母集合Uは、白丸、白四角および白三角によって表される複数の要素からなり、複数の要素の全ては、部分集合Aに属する。
 したがって、従来のハフマン符号化においては、部分集合Aに対して1つのハフマン符号化テーブルを作成するため、要素数と、その種類が多い場合、ハフマン符号化テーブルの作成に時間を要し、圧縮効率の向上も難しくなる。
 一方、図3に示すように、この発明によるハフマン符号化では、母集合Uに属する複数の要素をそれぞれの特徴に分けていくつかの部分集合B,C,Dに分割する。そして、各部分集合B,C,Dごとにハフマン符号化テーブルを作成し、その作成したハフマン符号化テーブルを用いて各部分集合B,C,Dごとにハフマン符号化を行なう。
 このように、この発明によるハフマン符号化では、各部分集合ごとにハフマン符号化を行なうため、圧縮率を向上できる。また、部分集合ごとにハフマン符号化テーブルを作成して圧縮処理を行なうため、要素数が多い場合でも、符号後のデータを直ぐに得ることができる。
 図4は、図1に示す圧縮処理装置10における画像圧縮の概念図である。図4を参照して、画像を圧縮する場合、圧縮処理装置10の処理部1は、原画像を複数の要素に分割し、その分割した複数の要素ごとにRGBからYCbCrへの変換を行ない、サンプリングする。
 その後、圧縮処理装置10の処理部1は、サンプリング結果をレベルシフトし、その後、離散コサイン変換(DCT:Discrete Cosine Transform)を行なう。
 引き続いて、圧縮処理装置10の処理部1は、量子化を行ない、その量子化後のデータを原画像の左上から右下に向かってジグザクスキャンするとともに、ランレングス処理を行なう。
 その後、圧縮処理装置10の分割ユニット2は、入力データ(「ジグザクスキャンおよびランレングス処理後のデータ」を言う。以下、同じ。)を複数の部分集合に分割し、テーブル作成ユニット3は、分割ユニット2によって分割された複数の部分集合の各々についてハフマン符号化テーブルを作成し、符号化ユニット4は、テーブル作成ユニット3によって作成された複数のハフマン符号化テーブルを用いて部分集合ごとにハフマン符号化を行ない、圧縮画像を出力する。
 したがって、「入力データを部分集合に分割」のブロックおよび「部分集合毎にハフマン符号化」のブロックが従来の画像圧縮方法と異なる点である。
 ここで、圧縮処理装置10の分割ユニット2における入力データの複数の部分集合への分割方法について説明する。たとえば、入力データが「ATAACCCCGG」の記号列からなる場合、分割ユニット2は、各記号の出現頻度の違いによって、「ATAACCCCGG」の記号列を「ATAA」の記号列と、「CCCCGG」の記号列とに分割する。
 ジグザクスキャンおよびランレングス処理が行なわれた後のデータは、「ATAA」の記号列および「CCCCGG」の記号列のように類似した記号列が配列された部分が分散的に配置されている。したがって、分割ユニット2は、ジグザクスキャンおよびランレングス処理が行なわれた後の記号列を参照して、類似した記号列を一まとめにして入力データを複数の部分集合に分割する。
 このように、分割ユニット2は、ジグザクスキャンおよびランレングス処理後のデータを各記号列の出現頻度の違いによって複数の部分集合に分割する。
 図5は、部分集合への分割の具体例を説明するための図である。図5を参照して、原画像は、空の部分、山の部分および地面の部分からなる風景画である。このような原画像は、空の部分、山の部分および地面の部分において、各記号列の出現頻度が異なる。したがって、分割ユニット2は、各記号列の出現頻度の違いによって、原画像のデータを空の部分からなる部分集合A、山の部分からなる部分集合Bおよび地面の部分からなる部分集合Cに分割する。
 そして、テーブル作成ユニット3は、空の部分からなる部分集合Aをスキャンして部分集合Aに対してハフマン符号化テーブルAを作成し、山の部分からなる部分集合Bをスキャンして部分集合Bに対してハフマン符号化テーブルBを作成し、地面の部分からなる部分集合Cをスキャンして部分集合Cに対してハフマン符号化テーブルCを作成する。
 そうすると、符号化ユニット4は、ハフマン符号化テーブルAを用いて空の部分からなる部分集合Aに含まれる符号化対象データをハフマン符号化し、ハフマン符号化テーブルBを用いて山の部分からなる部分集合Bに含まれる符号化対象データをハフマン符号化し、ハフマン符号化テーブルCを用いて地面の部分からなる部分集合Cに含まれる符号化対象データをハフマン符号化する。
 従来のハフマン符号化は、空の部分、山の部分および地面の部分のようなデータの違いに関係なく、予め定められているハフマン符号化テーブルを用いてハフマン符号化を行なっていた。または、従来のハフマン符号化は、画像全体をスキャンした後に作成したハフマン符号化テーブルを用いてハフマン符号化を行なっていた。
 しかし、これらの方法では、図に含まれるデータの種類が多くなるにつれて、割り当てるハフマン符号のビット長が次第に長くなり、圧縮後のデータサイズが大きくなる傾向にある。
 これに対して、この発明による方法では、空、山および地面毎に最適化したハフマン符号化テーブルA,B,Cを用いてハフマン符号化するため、画像の部分集合毎にビット長の短い最適なハフマン符号を割り当てることができる。したがって、圧縮率を向上できる。
 図6は、部分集合への分割の他の具体例を説明するための図である。図6を参照して、原画像は、背景の部分および人物の部分からなる人物のスナップ写真である。このような原画像は、背景の部分および人物の部分において、各記号列の出現頻度が異なる。したがって、分割ユニット2は、各記号列の出現頻度の違いによって、原画像のデータを背景の部分からなる部分集合Dおよび人物の部分からなる部分集合Eに分割する。
 そして、テーブル作成ユニット3は、背景の部分からなる部分集合Dをスキャンして部分集合Dに対してハフマン符号化テーブルDを作成し、人物の部分からなる部分集合Eをスキャンして部分集合Eに対してハフマン符号化テーブルEを作成する。
 そうすると、符号化ユニット4は、ハフマン符号化テーブルDを用いて背景の部分からなる部分集合Dに含まれる符号化対象データをハフマン符号化し、ハフマン符号化テーブルEを用いて人物の部分からなる部分集合Eに含まれる符号化対象データをハフマン符号化する。
 この場合にも、この発明による方法では、上述した理由と同じ理由によって、従来のハフマン符号化よりも圧縮率を向上できる。
 図7は、実施の形態1における圧縮処理方法を説明するためのフローチャートである。図7を参照して、一連の動作が開始されると、圧縮処理装置10の処理部1は、原画像について、RGBからYCbCrへの変換、サンプリング、レベルシフト、離散コサイン変換、量子化およびジグザグスキャン/ランレングス処理を実行して符号化対象データ群(=入力データ)を生成する(ステップS1)。
 そして、分割ユニット2は、処理部1から受けた符号化対象データ群から類似した記号列を抽出し、部分集合を生成する(ステップS2)。
 その後、テーブル作成ユニット3は、分割ユニット2によって生成された部分集合内をスキャンし、ハフマン符号化テーブルを作成する(ステップS3)。
 引き続いて、符号化ユニット4は、分割ユニット2から部分集合を受け、テーブル作成ユニット3からハフマン符号化テーブルを受ける。そして、符号化ユニット4は、ハフマン符号化テーブルを用いて部分集合内の符号化対象データをハフマン符号化する(ステップS4)。
 その後、全ての部分集合に対してハフマン符号化が終了したか否かが判定され(ステップS5)、全ての部分集合に対してハフマン符号化が終了していない場合、一連の動作は、ステップS2へ戻り、上述したステップS2~ステップS5が繰り返し実行される。
 そして、ステップS5において、全ての部分集合に対してハフマン符号化が終了していると判定されると、一連の動作は終了する。
 上述したように、実施の形態1によれば、圧縮処理装置10は、入力データを各記号列の出現頻度の違いによって複数の部分集合に分割し、その分割した複数の部分集合の各部分集合毎にハフマン符号化テーブルを作成し、その作成したハフマン符号化テーブルを用いて各部分集合毎にハフマン符号化を行なう。
 その結果、従来のハフマン符号化を用いた場合よりも、各部分集合に含まれる符号化対象データに対して短いハフマン符号が割り当てられる。したがって、圧縮率を向上できる。
 [実施の形態2]
 図8は、実施の形態2による圧縮処理装置の概略ブロック図である。図8を参照して、実施の形態2による圧縮処理装置10Aは、図1に示す圧縮処理装置10の分割ユニット2、テーブル作成ユニット3および符号化ユニット4をエンコーダ11および最適器12に代えたものであり、その他は、圧縮処理装置10と同じである。
 エンコーダ11は、各々がハフマン符号からなる2つの符号化テーブルを保持する。そして、エンコーダ11は、符号化テーブルを切換えるための切換信号EXCを最適器12から受けないとき、2つの符号化テーブルのうち、一方の符号化テーブルを用いて、処理部1から受けた入力データをハフマン符号化し、圧縮データを出力する。また、エンコーダ11は、切換信号EXCを最適器12から受けると、2つの符号化テーブルのうちの一方の符号化テーブルから他方の符号化テーブルへ切換えて入力データをハフマン符号化し、圧縮データを出力する。
 最適器12は、エンコーダ11におけるハフマン符号化と並行して、エンコーダ11が入力データのハフマン符号化に用いていない符号化テーブルを更新するとともに、切換信号EXCを生成してエンコーダ11へ出力する。
 図9は、図8に示すエンコーダ11および最適器12の構成図である。図9を参照して、エンコーダ11は、CAM(Content Addressable Memory)111と、選択器112と、符号化テーブル113,114とを含む。最適器12は、割当モジュール121と、交換モジュール122とを含む。
 CAM111は、複数の記憶記号と、複数の記憶記号にそれぞれ対応付けられた複数のアドレスとを記憶する。複数の記憶記号は、CAM111へ入力可能な記号からなる。CAM111は、入力データを構成する各入力記号を処理部1から受けると、記憶している複数の記憶記号を探索し、入力記号に一致する記憶記号を検出するとともに、その検出した記憶記号に対応付けられたアドレスを検出する。そして、CAM111は、その検出したアドレスを一致アドレスMAddとして選択器112および最適器12の割当モジュール121へ出力する。
 選択器112は、最適器12の割当モジュール121および交換モジュール122からそれぞれ切換信号EXC1,EXC2(切換信号EXCの一種)を受けないとき、CAM111から受けた一致アドレスMAddをアクティブテーブル113へ出力し、割当モジュール121および交換モジュール122からそれぞれ切換信号EXC1,EXC2を受けると、CAM111から受けた一致アドレスMAddをシャドウテーブル114へ出力する。
 アクティブテーブル113,114の各々は、複数のアドレスと、複数のコードワードとからなる。複数のコードワードは、複数のアドレスにそれぞれ対応付けられている。そして、複数のコードワードの各々は、ハフマン符号からなる。
 符号化テーブル113は、選択器112から一致アドレスMAddを受けると、アクティブテーブルの役割を果たす。そして、符号化テーブル113は、その受けた一致アドレスMAddに対応付けられたコードワードを読み出し、その読み出したコードワードを圧縮データとして出力する。
 また、符号化テーブル113は、選択器112から一致アドレスMAddを受けないとき、シャドウテーブルの役割を果たす。
 符号化テーブル114は、符号化テーブル113と同じ構成からなり、符号化テーブル113と同じ機能を果たす。
 なお、符号化テーブル113,114の各々は、SRAM(Static Random Access Memory)からなる。
 割当モジュール121は、CAM111から一致アドレスMAddを受けると、その一致アドレスMAddをCAM111から受けた回数をカウントし、そのカウントしたカウント値が最大値Count_MAXに達すると、一致アドレスMAddに代わる新しいアドレスと、新しいコードワードとを後述する方法によって発生し、その発生した新しいアドレスと新しいコードワードとによって符号化テーブル114(=シャドウテーブル)を更新する。また、割当モジュール121は、新しいコードワードを交換モジュール122へ出力する。更に、割当モジュール121は、CAM111から受ける一致アドレスMAddの全てに対するカウント値が最大値Count_MAXに達したとき、切換信号EXC1を生成して選択器112へ出力する。
 交換モジュール122は、新しいコードワードを割当モジュール121から受け、アクティブテーブルの役割を果たす符号化テーブル113(または符号化テーブル114)から圧縮データとして出力されるコードワード(「古いコードワード」と言う。以下、同じ。)を受ける。
 そして、交換モジュール122は、新しいコードワードと古いコードワードとに基づいて圧縮率を演算し、その演算した圧縮率がしきい値よりも大きくなると、切換信号EXC2を生成して選択器112および割当モジュール121へ出力する。
 図10は、図9に示す割当モジュール121の構成図である。図10を参照して、割当モジュール121は、デコーダ1200と、カウンタ1201~120n(nは2以上の整数)と、アドレスエンコーダ1211と、アドレスカウンタ1212と、アドレスレジスタ1213と、マルチプレクサ(MUX)1214と、アドレスポインタ1215と、基本テーブル1216と、コントローラ1217とを含む。
 デコーダ1200は、エンコーダ11のCAM111から受けた一致アドレスMAddをデコードし、そのデコードした一致アドレスMAddを一致アドレスMAddに対応して設けられたカウンタ(カウンタ1201~120nのいずれか)へ出力する。
 カウンタ1201~120nは、CAM111が記憶するn個のアドレスに対応して設けられる。カウンタ1201~120nの各々は、最大値Count_MAXが予め設定されている。この最大値Count_MAXは、ハフマン符号化する対象となるデータの種類に応じて決定されるものである。
 カウンタ1201~120nの各々は、デコーダ1200から一致アドレスMAddを受けると、その一致アドレスMAddを受けた回数をカウントし、そのカウント値が最大値Count_MAXに達すると、オーバーフロー信号OFLを生成し、その生成したオーバーフロー信号OFLをアドレスエンコーダ1211、アドレスカウンタ1212およびコントローラ1217へ出力する。
 また、カウンタ1201~120nの各々は、コントローラ1217からリセット信号RSETを受けると、カウント値をリセットする。
 アドレスエンコーダ1211は、カウンタ1201~120nがそれぞれ対応付けられているアドレスを保持している。そして、アドレスエンコーダ1211は、カウンタ1201~120nのいずれかからオーバーフロー信号OFLを受けると、そのオーバーフロー信号OFLを出力したカウンタ(カウンタ1201~120nのいずれか)が対応付けられたアドレスをエンコードし、そのエンコードしたアドレスをシャドウテーブル114において更新されるべきアドレスAdd_oldとしてアドレスレジスタ1213およびマルチプレクサ1214へ出力する。
 アドレスカウンタ1212は、カウンタ1201~120nのいずれかからオーバーフロー信号OFLを受け、更新されるべきアドレスAdd_oldのうち、最大のアドレスAdd_old_MAXをアドレスレジスタ1213から受ける。そして、アドレスカウンタ1212は、オーバーフロー信号OFLを受けると、最大のアドレスAdd_old_MAX以下の範囲で更新アドレスAdd_newを順次生成し、その生成した更新アドレスAdd_newをアドレスポインタ1215へ出力する。
 この更新アドレスAdd_newは、基本テーブル1216において指定すべきアドレスを示し、基本テーブル1216は、後述するように、コードワードのビット長の短い順にアドレスを割り当てて複数のコードワードを記憶する。
 したがって、アドレスカウンタ1212は、最大のアドレスAdd_old_MAX以下の範囲で小さいアドレスから順に更新アドレスAdd_newを生成する。
 また、アドレスカウンタ1212は、交換モジュール122から切換信号EXC2を受けると、“0”から順にアドレスAdd0~Addnを発生し、その発生したアドレスAdd0~Addnをマルチプレクサ1214およびアドレスポインタ1215へ出力する。
 アドレスレジスタ1213は、アドレスエンコーダ1211から受けたアドレスAdd_oldのうち、最大のアドレスAdd_old_MAXだけを保持するとともに、その保持した最大のアドレスAdd_old_MAXをアドレスカウンタ1212へ出力する。
 マルチプレクサ1214は、アドレスエンコーダ1211からアドレスAdd_oldを受けると、その受けたアドレスAdd_oldをシャドウテーブル113へ出力する。
 また、マルチプレクサ1214は、アドレスカウンタ1212からアドレスAdd0~Addnを受けると、その受けたアドレスAdd0~Addnを符号化テーブル114(=シャドウテーブル)へ出力する。
 アドレスポインタ1215は、アドレスカウンタ1212から更新アドレスAdd_newを受けると、その受けた更新アドレスAdd_newに一致する基本テーブル1216中のアドレスを指定する。
 また、アドレスポインタ1215は、アドレスカウンタ1212からアドレスAdd0~Addnを受け、オーバーフロー信号OFLを出力したカウンタ1201~120nが対応付けられたn個のアドレスをコントローラ1217から受ける。そして、アドレスポインタ1215は、アドレスカウンタ1212から受けたアドレスAdd0~Addnのうち、コントローラ1217からのアドレスに一致しないアドレスを基本テーブル1216において指定する。
 基本テーブル1216は、複数のアドレスと、複数のコードワードとを記憶する。そして、複数のコードワードは、複数のアドレスにそれぞれ対応付けられている。この場合、基本テーブル1216は、コードワードのビット長の短い順に複数のコードワードを記憶する。したがって、ビット長が最も短いコードワードは、最小のアドレスに対応付けられ、ビット長が最も長いコードワードは、最大のアドレスに対応付けられている。
 基本テーブル1216は、アドレスポインタ1215からアドレスを指定されると、その指定されたアドレスに対応付けられたコードワードを新しいコードワードC_newとして符号化テーブル114(=シャドウテーブル)および交換モジュール122へ出力する。
 コントローラ1217は、カウンタ1201~120nの全てからオーバーフロー信号OFLを受けると、切換信号EXC1を生成し、その生成した切換信号EXC1をエンコーダ11の選択器112へ出力するとともに、オーバーフロー信号OFLを出力したカウンタ1201~120nが対応付けられたn個のアドレスをアドレスポインタ1215へ順次出力する。
 また、コントローラ1217は、切換信号EXC1を出力したとき、または交換モジュール122から切換信号EXC2を受けたとき、リセット信号RSETを生成してカウンタ1201~120nへ出力する。
 図11は、図9に示す交換モジュール122の構成図である。図11を参照して、交換モジュール122は、減算器1221と、加算器1222と、比較器1223と、累積レジスタ1224と、信号生成器1225とを含む。
 減算器1221は、割当モジュール121からコードワードC_newを受け、アクティブテーブルの役割を果たす符号化テーブル113(または符号化テーブル114)からコードワードC_oldを受ける。そして、減算器1221は、コードワードC_oldからコードワードC_newを減算し、その減算結果を加算器1222へ出力する。
 加算器1222は、減算器1221から減算結果を受け、累積レジスタ1224から累積値を受ける。そして、加算器1222は、累積値に減算結果を加算し、その加算結果を累積レジスタ1224へ出力する。
 比較器1223は、割当モジュール121からコードワードC_newを受け、アクティブテーブルの役割を果たす符号化テーブル113(または符号化テーブル114)からコードワードC_oldを受ける。そして、比較器1223は、コードワードC_newのビット長をコードワードC_oldのビット長と比較し、コードワードC_newのビット長がコードワードC_oldのビット長よりも短いとき、累積レジスタ1224を活性化するためのイネーブル信号ENを生成し、その生成したイネーブル信号ENを累積レジスタ1224へ出力する。なお、比較器1223は、コードワードC_newのビット長がコードワードC_oldのビット長以上であるとき、イネーブル信号ENを累積レジスタ1224へ出力しない。
 累積レジスタ1224は、比較器1223からイネーブル信号ENを受けると、加算器1222から受けた加算結果を累積値として保持するとともに、その保持した累積値を加算器1222および信号生成器1225へ出力する。
 信号生成器1225は、圧縮率のしきい値が予め設定されている。そして、信号生成器1225は、累積レジスタ1224から受けた累積値をしきい値と比較し、累積値がしきい値よりも大きくなると、切換信号EXC2を生成し、その生成した切換信号EXC2をエンコーダ11の選択器112および割当モジュール121のコントローラ1217へ出力する。
 累積レジスタ1224は、コードワードC_newのビット長がコードワードC_oldのビット長よりも短いときのみ、イネーブル信号ENによって活性化され、累積値を信号生成器1225へ出力する。そして、信号生成器1225は、累積値が圧縮率のしきい値よりも大きいとき、切換信号EXC2を生成する。また、累積値は、コードワードC_oldからコードワードC_newを減算した減算結果を累積した値であるので、圧縮データのビット長が短くなった累積値を示す。この発明においては、この累積値を「圧縮率」と言う。
 従って、信号生成器1225は、圧縮率をしきい値と比較し、圧縮率がしきい値よりも大きいとき、切換信号EXC2を生成する。
 図12は、図9に示す交換モジュール122の他の構成図である。また、図12に示すように,比較器1223を利用せずに、減算器1221に代えて、ALU(Arithmetic Logic Unit)のような演算ユニット1226を利用した場合、C_oldとC_newとの演算を工夫することで、累積レジスタの値を細かく調整することができる。たとえば、C_oldよりC_newのビット長が長い場合、減算結果は、負となるが、その値も累積することで、効率よいコードワードを残すことも可能となる。また、減算のみでなく加算や乗算を利用することでも、よりよい効果が得られる場合がある。
 図13は、一方の符号化テーブル113を用いたハフマン符号化の動作を説明するための図である。また、図14は、他方の符号化テーブル114を用いたハフマン符号化の動作を説明するための図である。なお、図13および図14においては、選択器112が省略されている。
 図13を参照して、選択器112は、切換信号EXC1またはEXC2を受けないとき、符号化テーブル113を選択する。したがって、符号化テーブル113は、アクティブテーブルの役割を果たし、符号化テーブル114は、シャドウテーブルの役割を果たす。
 符号化テーブル113は、アドレス[0000]~[1111]と、コードワード[00002]~[fffef]とからなる。そして、コードワード[00002]~[fffef]の各々は、ハフマン符号であり、複数のコードワード[00002]~[fffef]は、それぞれ、複数のアドレス[0000]~[1111]に対応付けられている。
 CAM111は、[01100101]を入力記号として処理部1から受けると、記憶している複数の記憶記号[10000001],[10000010],・・・,[11111010]を探索し、入力記号=[01100101]に一致する記憶記号=[01100101]を検出し、その検出した記憶記号=[01100101]に対応付けられたアドレス=[0011]を一致アドレスMAddとして選択器112を介してアクティブテーブルの役割を果たす符号化テーブル113へ出力する。
 符号化テーブル113は、一致アドレスMAdd=[0011]を受けると、その受けた一致アドレスMAdd=[0011]に一致するアドレス=[0011]に対応付けられたコードワード=[00043]を検出し、その検出したコードワード=[00043]を圧縮データとして出力する。
 図14を参照して、選択器112は、切換信号EXC1またはEXC2を受けると、使用する符号化テーブルを符号化テーブル113から符号化テーブル114へ切換える。したがって、符号化テーブル114は、アクティブテーブルの役割を果たし、符号化テーブル113は、シャドウテーブルの役割を果たす。
 符号化テーブル114は、アドレス[0000]~[1111]と、コードワード[00023]~[fffef]とからなる。そして、コードワード[00023]~[fffef]の各々は、ハフマン符号であり、複数のコードワード[00023]~[fffef]は、それぞれ、複数のアドレス[0000]~[1111]に対応付けられている。
 CAM111は、[01100101]を入力記号として処理部1から受けると、上述した動作と同じ動作によって、一致アドレスMAdd=[0011]を選択器112を介して符号化テーブル114へ出力する。
 符号化テーブル114は、一致アドレスMAdd=[0011]を受けると、その受けた一致アドレスMAdd=[0011]に一致するアドレス=[0011]に対応付けられたコードワード=[00002]を検出し、その検出したコードワード=[00002]を圧縮データとして出力する。
 このように、エンコーダ11は、符号化テーブル113または符号化テーブル114を用いて入力記号=[01100101]をコードワード=[00043]または[00002]へ変換する。
 エンコーダ11は、入力記号=[01100101]以外の入力記号が入力された場合も、上述した動作によって入力記号をコードワードに変換する。
 したがって、エンコーダ11をCAM111と2つの符号化テーブル113,114とによって構成することにより、入力記号を容易にハフマン符号化できる。
 図15は、シャドウテーブルの役割を果たす符号化テーブル114の更新を説明するための図である。なお、図15において、コードワードの括弧内の数字は、コードワードのビット長を表す。
 2つの符号化テーブル113,114は、カウンタ1201~120nの全てがオーバーフロー信号OFLを出力したとき、または圧縮率がしきい値よりも大きくなったとき、アクティブテーブルおよびシャドウテーブルの役割が切換えられる。
 そして、符号化テーブル113,114および基本テーブル1216は、最初、同じアドレスおよび同じコードワードがデフォルト設定として設定されている。
 たとえば、アドレス=[0010]に対応付けられたカウンタ1203が上述した方法によってオーバーフロー信号OFLを出力すると、アドレスエンコーダ1211は、カウンタ1203が対応付けられたアドレスをエンコードし、アドレス=[0010]をアドレスレジスタ1213およびマルチプレクサ1214へ出力する。
 そして、アドレスレジスタ1213は、アドレスエンコーダ1211からアドレス=[0010]を受けると、既に保持しているアドレスをアドレス=[0010]と比較し、既に保持しているアドレスがアドレス=[0010]よりも大きい場合、既に保持しているアドレスの保持を維持し、既に保持しているアドレスがアドレス=[0010]よりも小さい場合、既に保持しているアドレスに代えてアドレス=[0010]を保持する。その後、アドレスレジスタ1213は、アドレス=[0010]を最大のアドレスAdd_old_MAXとしてアドレスカウンタ1212へ出力する。
 アドレスカウンタ1212は、カウンタ1203からオーバーフロー信号OFLを受け、アドレスレジスタ1213から最大のアドレスAdd_old_MAXを受ける。そして、アドレスカウンタ1212は、最大のアドレスAdd_old_MAX以下の範囲でアドレス値の小さい順に更新アドレスAdd_newを発生し、その発生した更新アドレスAdd_newをアドレスポインタ1215へ出力する。
 マルチプレクサ1214は、アドレスエンコーダ1211から受けたアドレスAdd_oldをシャドウテーブルの役割を果たす符号化テーブル114へ出力する。
 一方、アドレスポインタ1215は、更新アドレスAdd_newに一致する基本テーブル1216中のアドレスを指定し、基本テーブル1216は、アドレスポインタ1215によって指定されたアドレスに対応付けられたコードワード=[00002]をコードワードC_newとして符号化テーブル114(=シャドウテーブル)および交換モジュール122へ出力する。
 そうすると、符号化テーブル114(=シャドウテーブル)は、割当モジュール121のマルチプレクサ1214からアドレスAdd_old=[00002]を受け、基本テーブル1216からコードワードC_new=[00002]を受ける。そして、符号化テーブル114(=シャドウテーブル)は、コードワードC_new=[00002(2)]をアドレス=[0010]に対応付けられたコードワード=[001e5(5)]に上書きする。これによって、符号化テーブル114-1(=シャドウテーブル)は、符号化テーブル114-2(=シャドウテーブル)へ更新され、アドレス=[0010]に対応付けられたコードワードは、3ビットだけ短くなる(図15参照)。
 その後、同様にして、コードワード=[00023(3)]がアドレス=[1110]に対応付けれられたコードワード=[fff4f(16)]に上書きされ、符号化テーブル114-2(=シャドウテーブル)は、符号化テーブル114-3(=シャドウテーブル)へ更新される。これによって、アドレス=[1110]に対応付けられたコードワードは、13ビットだけ短くなる。
 それ以降、同様にして、符号化テーブル114-3(=シャドウテーブル)は、符号化テーブル114-4(=シャドウテーブル)へ更新される。この符号化テーブル114(=シャドウテーブル)におけるコードワードの上書きは、最後のカウンタ(カウンタ1201~120nのいずれか)がオーバーフロー信号OFLを出力するまで、または圧縮率がしきい値よりも大きくなるまで繰り返される。
 アドレスカウンタ1212は、最後のカウンタ(カウンタ1201~120nのいずれか)からオーバーフロー信号OFLを受けて更新アドレスAdd_newをアドレスポインタ1215へ出力した後、または交換モジュール122から切換信号EXC2を受けたとき、“0”から開始してアドレスを順次発生し、その発生したアドレスをマルチプレクサ1214およびアドレスポインタ1215へ出力する。
 また、コントローラ1217は、オーバーフロー信号OFLを出力したカウンタ1201~120nが対応付けられたn個のアドレスをアドレスポインタ1215へ順次出力する。
 そうすると、アドレスポインタ1215は、アドレスカウンタ1212から受けたアドレスのうち、コントローラ1217からのアドレスに一致しないアドレスを基本テーブル1216において指定する。そして、基本テーブル1216は、指定されたアドレスに対応付けられたコードワードを読み出して符号化テーブル114(=シャドウテーブル)へ出力する。
 一方、マルチプレクサ1214は、アドレスカウンタ1212から出力されたアドレスを符号化テーブル114(=シャドウテーブル)へ出力する。
 そうすると、符号化テーブル114(=シャドウテーブル)は、マルチプレクサ1214からのアドレスと、基本テーブル1216からのコードワードとを受け、その受けたアドレスおよびコードワードに基づいて、オーバーライトの過程においてコードワードが上書きされなかったコードワード上に基本テーブル1216から受けたコードワードを上書きする。
 その結果、図15に示すように、オーダーライトにおいて、アドレス=[0000],[0001],・・・,[0010]に対応付けられたコードワードがそれぞれコードワード=[00fe8],[00fa9],・・・,[03f9a]によって上書きされる。これによって、符号化テーブル114-4(=シャドウテーブル)は、符号化テーブル114-5,114-6,114-7(=シャドウテーブル)へ順次更新され、重複したコードワードが無くなる。この処理を最大のアドレスAdd_old_MAXの値まで行なう。
 上述した符号化テーブル114(=シャドウテーブル)の更新においては、割当モジュール121は、オーバーフロー信号OFLを受けた順番により短いコードワードを符号化テーブル114(=シャドウテーブル)へ出力し、符号化テーブル114(=シャドウテーブル)を更新する。したがって、割当モジュール121は、出現頻度のカウント値が最大値に達した順番が早いほど短い長さのコードワードを1つの符号化対象データに割り当てることになる。
 また、上述した符号化テーブル114(=シャドウテーブル)の更新は、エンコーダ11が符号化テーブル113(=アクティブテーブル)を用いて上述した方法によって入力記号をハフマン符号に変換している動作に並行して行なわれる。
 なお、符号化テーブル113がシャドウテーブルの役割を果たす場合も、上述した方法によって、符号化テーブル113が更新される。
 図16は、図9に示すエンコーダ11および最適器12における動作を説明するためのフローチャートである。
 図16を参照して、一連の動作が開始されると、エンコーダ11のCAM111は、入力記号を受け(ステップS11)、その受けた入力記号を記憶記号と比較する(ステップS12)。
 そして、エンコーダ11のCAM111は、入力記号に一致する記憶記号に対応付けられたアドレスを検出すると、その検出したアドレスを一致アドレスMAddとして選択器112および割当モジュール121へ出力する。そして、エンコーダ11の選択器112は、一致アドレスMAddを符号化テーブル113(=アクティブテーブル)および割当モジュール121へ出力する(ステップS13)。
 引き続いて、エンコーダ11の符号化テーブル113(=アクティブテーブル)は、一致アドレスMAddに一致するアドレスに対応付けられたコードワードを出力する(ステップS14)。
 その後、全ての入力記号がハフマン符号に変換されたか否かが判定され(ステップS15)、全ての入力記号がハフマン符号に変換されていない場合、一連の動作は、ステップS11へ戻り、エンコーダ11において、上述したステップS11~ステップS15が繰り返し実行される。
 一方、ステップS15において、全ての入力記号がハフマン符号に変換されたと判定されたとき、一連の動作は、終了する。
 ステップS13の後、最適器12において、一致アドレスMAddに対応付けられたカウンタ(カウンタ1201~120nのいずれか)は、カウンタ値を“1”だけインクリメントし(ステップS16)、カウンタ値が最大値であるか否かを判定する(ステップS17)。
 ステップS17において、カウンタ値が最大値でないと判定されたとき、交換モジュール122は、上述した方法によって、圧縮率がしきい値以下であるか否かを判定する(ステップS18)。
 ステップS18において、圧縮率がしきい値以下であると判定されたとき、一連の動作は、ステップS16へ戻り、上述したステップS16~ステップS18が繰り返し実行される。
 一方、ステップS18において、圧縮率がしきい値よりも大きいと判定されたとき、一連の動作は、ステップS22へ移行する。
 一方、ステップS17において、カウンタ値が最大値であると判定されたとき、上述した方法によって、新しいハフマン符号が符号化テーブル114(=シャドウテーブル)に割当てられ(ステップS19)、符号化テーブル114(=シャドウテーブル)は、新しいハフマン符号によって更新される(ステップS20)。
 その後、全てのカウンタ値が最大値であるか否かが判定され(ステップS21)、全てのカウンタ値が最大値であるとき、一連の動作は、ステップS22へ移行する。
 一方、ステップS21において、全てのカウンタ値の少なくとも1つが最大値でないと判定されたとき、一連の動作は、ステップS16へ移行する。
 ステップS18において、圧縮率がしきい値よりも大きいと判定されたとき、またはステップS21において、全てのカウンタ値が最大値であると判定されたとき、符号化テーブルが切換えられる(ステップS22)。そして、一連の動作は、ステップS13へ移行する。
 なお、上述したステップS11~ステップS15は、エンコーダ11によって実行され、上述したステップS16~ステップS22は、最適器12によって実行される。したがって、最適器12における動作は、エンコーダ11における動作と並行して行なわれる。
 図17は、図8に示す圧縮処理装置10Aにおけるハフマン符号化を具体的に説明するための図である。
 図17を参照して、エンコーダ11は、処理部1においてジグザクスキャンおよびランレングス処理が行なわれた後の入力データを受ける。
 そして、エンコーダ11は、入力データを構成する各記号を符号化テーブル113(=アクティブテーブル)を用いて上述した方法によってハフマン符号化する。ここで、エンコーダ11は、図17に示す人物画像の背景部分をハフマン符号化する場合、圧縮率がしきい値以下である限り、符号化テーブル113(=アクティブテーブル)を用いて背景部分の符号化対象データをハフマン符号化する。したがって、エンコーダ11は、符号化テーブル113(=アクティブテーブル)に格納された一部のコードワードを用いて背景部分のハフマン符号化に適したハフマン符号化テーブルを作成しながら背景部分の符号化対象データをハフマン符号化することになる。
 その後、エンコーダ11は、人物画像の顔部分の符号化対象データを受けると、圧縮率がしきい値以下である限り、符号化テーブル113(=アクティブテーブル)を用いて顔部分の符号化対象データをハフマン符号化し、圧縮率がしきい値よりも大きくなると、符号化テーブル114(=シャドウテーブル)に切換えて顔部分の符号化対象データをハフマン符号化する。したがって、エンコーダ11は、顔部分の符号化対象データをハフマン符号化する場合、符号化テーブル113(=アクティブテーブル)に格納された一部のコードワードまたは符号化テーブル114(=シャドウテーブル)に格納された一部のコードワードを用いて顔部分のハフマン符号化に適したハフマン符号化テーブルを作成しながら顔部分の符号化対象データをハフマン符号化することになる。
 エンコーダ11が人物画像の胴部分の符号化対象データをハフマン符号化する場合も同様である。
 その結果、エンコーダ11および最適器12は、処理部1から入力された入力データをハフマン符号化することによって、人物画像を背景部分、顔部分および胴部分の部分集合に分割し、かつ、背景部分、顔部分および胴部分の部分集合にそれぞれ適したハフマン符号化テーブルを作成しながら背景部分、顔部分および胴部分の部分集合をそれぞれハフマン符号化する。
 この場合、エンコーダ11は、図1に示す分割ユニット2および符号化ユニット4を構成し、エンコーダ11および最適器12は、図1に示すテーブル作成ユニット3を構成する。
 したがって、実施の形態2による圧縮処理装置10A(図8参照)は、実施の形態1による圧縮処理装置10(図1参照)と同じ構成からなる。
 図18は、実施の形態2における圧縮処理方法を説明するためのフローチャートである。
 図18を参照して、一連の動作が開始されると、圧縮処理装置10Aの処理部1は、原画像について、RGBからYCbCrへの変換、サンプリング、レベルシフト、離散コサイン変換、量子化およびジグザグスキャン/ランレングス処理を実行して符号化対象データ群(=入力データ)を生成する(ステップS31)。
 そして、処理部1は、符号化対象データをエンコーダ11へ出力し(ステップS32)、エンコーダ11は、処理部1から受けた符号化対象データ(=入力記号)に一致する記憶記号に対応付けられたアドレスを検出し、その検出したアドレスを一致アドレスMAddとして最適器12へ出力する。
 そして、最適器12は、一致アドレスMAddを受けた回数をカウントすることにより、符号化対象データ毎に出現頻度をカウントする(ステップS33)。
 その後、最適器12は、カウンタ1201~120nのいずれかがオーバーフロー信号OFLを出力したか否かによって出現頻度が最大値(=最大値Count_MAX)に達する符号化対象データがあるか否かを判定する(ステップS34)。この場合、最適器12は、カウンタ1201~120nのいずれかがオーバーフロー信号OFLを出力した場合、出現頻度が最大値(=最大値Count_MAX)に達する符号化対象データがあると判定し、カウンタ1201~120nのいずれもオーバーフロー信号OFLを出力しない場合、出現頻度が最大値(=最大値Count_MAX)に達する符号化対象データがないと判定する。
 ステップS34において、出現頻度が最大値(=最大値Count_MAX)に達する符号化対象データがあると判定されたとき、最適器12は、上述した方法によって、符号化テーブル114(=シャドウテーブル)を更新して該当符号に短いハフマン符号を割り当てる(ステップS35)。
 ステップS35の後、またはステップS34において、出現頻度が最大値(=最大値Count_MAX)に達する符号化対象データがないと判定されたとき、最適器12は、カウンタ1201~120nの全てがオーバーフロー信号OFLを出力したか否かによってハフマン符号の新規割当回数が閾値を越えたか否かを判定する(ステップS36)。
 この場合、最適器12は、カウンタ1201~120nの全てがオーバーフロー信号OFLを出力したとき、ハフマン符号の新規割当回数が閾値を越えたと判定し、カウンタ1201~120nの少なくとも1つがオーバーフロー信号OFLを出力しないとき、ハフマン符号の新規割当回数が閾値を越えていないと判定する。
 ステップS36において、ハフマン符号の新規割当回数が閾値を越えたと判定されたとき、エンコーダ11は、アクティブテーブルを符号化テーブル113から符号化テーブル114へ切換え、その切換えた符号化テーブル114において新規にハフマン符号化テーブルを作成しながら符号化対象データをハフマン符号化する(ステップS37)。
 一方、ステップS36において、ハフマン符号の新規割当回数が閾値を越えていないと判定されたとき、エンコーダ11は、符号化テーブル113を用いて既に作成されたハフマン符号化テーブルを用いて符号化対象データをハフマン符号化する(ステップS38)。
 そして、ステップS37またはステップS38の後、全ての符号化対象データの符号化が終了したか否かが判定される(ステップS39)。ステップS39において、少なくとも1つの符号化対象データの符号化が終了していないと判定されたとき、一連の動作は、ステップS32へ戻り、ステップS39において、全ての符号化対象データの符号化が終了したと判定されるまで、上述したステップS32~ステップS39が繰り返し実行される。
 そして、ステップS39において、全ての符号化対象データの符号化が終了したと判定されると、一連の動作は終了する。
 上述したように、実施の形態2においては、圧縮処理装置10Aは、入力データの部分集合への分割、および分割された部分集合に適したハフマン符号化テーブルの作成を行ないながら符号化対象データをハフマン符号化する。
 したがって、符号化対象データを高速にハフマン符号化できるとともに、圧縮率を向上できる。
 その他は、実施の形態1と同じである。
 なお、実施の形態2においては、符号化テーブル113,114は、「テーブル保持ユニット」を構成し、最適器12は、「更新ユニット」を構成する。
 [実施の形態3]
 図19は、実施の形態3による圧縮処理装置の概略ブロック図である。図19を参照して、実施の形態3による圧縮処理装置10Bは、図1に示す圧縮処理装置10に画像分割ユニット5を追加したものであり、その他は、圧縮処理装置10と同じである。
 画像分割ユニット5は、原画像の対象物に基づいて原画像データを複数の画像データに分割し、その分割した複数の画像データを処理部1へ出力する。
 圧縮処理装置10Bにおいては、処理部1は、画像分割ユニット5から入力された複数の画像データを各画像データ毎に上述した方法によって処理し、複数の画像データに対応する複数の入力データを分割ユニット2へ出力する。
 また、圧縮処理装置10Bにおいては、分割ユニット2は、各入力データ毎に複数の部分集合に分割する処理を複数の入力データの全ての入力データに対して実行し、テーブル作成ユニット3は、各入力データ毎に分割された複数の部分集合に適した複数のハフマン符号化テーブルを作成する処理を複数の入力データの全ての入力データに対して実行し、符号化ユニット4は、各入力データ毎に複数の部分集合に含まれる符号化対象データを複数の部分集合に適した複数のハフマン符号化テーブルを用いて各部分集合毎にハフマン符号化する処理を複数の入力データの全ての入力データに対して実行する。
 図19に示す画像分割ユニット5における画像の分割方法について説明する。画像分割ユニット5は、たとえば、領域成長型分割分割アルゴリズムを用いて画像を複数の画像に分割する。
 この領域成長型分割分割アルゴリズムは、たとえば、3×3の画素からリーダセルを決定し、その決定したリーダセルの領域から相対的に大きい結合重みを有する周囲の画素の領域へ領域を成長させて行く処理をリーダセルが存在しなくまで繰り返して画像を分割する方法である。
 図20は、画像の分割方法を説明するための図である。画像分割ユニット5は、領域成長型画像分割方法によって1つのフレームを各対象物の画像に分割する。
 この領域成長型画像分割方法は、LEGIONモデル(D. L. Wang, and D. Terman, “Image segmentation based on oscillator correlation,” Neural Computation, Volume 9(4), pp. 805-836(1997).)の振動子ネットワークの各画素に対する振動子の振る舞いを自己発火(Self-Excitation)、自己発火可能(Self-Excitable)、発火(Excitation)および鎮火(Inhibition)という4つの状態で取り扱うものである。そして、この領域成長型画像分割方法は、初期化、自己発火、発火、および鎮火の4つのステップからなる。
 画像分割ユニット5は、図20の(a)に示す3×3の構成からなる入力画像を受ける。そして、画像分割ユニット5は、入力画像を構成する9個の画素における画素間の8個の結合重みCW1~CW8を演算し、その演算した8個の結合重みCW1~CW8を各画素間に対応付けてメモリ(画像分割ユニット5に内蔵されている)に保持する。なお、図20の(b)においては、(2,2)の画素と周囲の画素との8個の結合重みが図示されている。
 そうすると、画像分割ユニット5は、メモリに保持された8個の結合重みCW1~CW8を読み出し、その読み出した8個の結合重みCW1~CW8の和SUM(CW)を演算する。そして、画像分割ユニット5は、その演算した和SUM(CW)がリーダセルを決定するためのしきい値φよりも大きいか否かを判定する。なお、この出願においては、SUMは、数学におけるシグマ記号によって表される和を演算することを意味する。
 画像分割ユニット5は、和SUM(CW)がしきい値φよりも大きいと判定したとき、結合重みの計算の中心となった画素をリーダセルに設定し、リーダセルフラグpij=1を設定する。一方、画像分割ユニット5は、和SUM(CW)がしきい値φ以下であると判定したとき、結合重みの計算の中心となった画素をリーダセルに設定せず、リーダセルフラグpij=0を設定する。
 画像分割ユニット5は、この処理を入力画像の9個の画素の各々を結合重みの計算の中心となる画素に設定して実行し、リーダセルを決定する(図20の(c)参照)。
 その後、画像分割ユニット5は、リーダセルの1つを自己発火させる(発火フラグxij=1)(図20の(d)参照)。そして、画像分割ユニット5は、各セル(i,j)に隣接する8個の画素に対応するセル(k,l)∈Nijが発火していれば、セル(i,j)とセル(k,l)との間の結合重みの和SUM(k,l)∈Nij∧xkl=1ij;klを演算し、その演算した和SUM(k,l)∈Nij∧xkl=1ij;klがしきい値φよりも大きく、かつ、まだ、セル(i,j)がどの分割領域にも属していない(ラベルフラグlij=0)場合に、自動的に発火(xij=1)させる(引火・領域成長)(図20の(e)参照)。この引火処理によって、領域が広がって行き、図20の(f)に示すように、新たに発火するセルが存在しなくなると、1領域の分割が終了する。
 その後、画像分割ユニット5は、この分割された領域を保存するために、図20の(g)に示すように、発火しているセルへ分割領域識別のためのラベル番号を書き込み、発火したセルが既に分割されたセルであることを示すラベルフラグをセットし(lij=1)、鎮火処理(xij=0,pij=0)を行なう。
 画像分割ユニット5は、鎮火処理が終了すると、再び、次の領域の分割のための自己発火の処理に戻る。そして、画像分割ユニット5は、リーダセルが存在しなくなるまで、上述した処理を繰り返し実行し、各領域を分割する。そして、画像分割ユニット5は、全てのリーダセルが発火した後、全ての領域にラベル付けを行ない、1フレームの画像の分割を終了する(図20の(h)参照)。
 図21は、領域成長型分割分割アルゴリズムを用いた画像の分割方法を説明するためのフローチャートである。
 図21を参照して、一連の動作が開始されると、画像分割ユニット5は、1フレームを構成する複数の画素における各画素間の結合重みを演算するとともに、上述した方法によって、リーダセルを決定する(ステップS41)。
 そして、画像分割ユニット5は、自己発火可能なセルを検出したか否かを判定し(ステップS42)、自己発火可能なセルを検出したと判定したとき、上述した方法によって自己発火を行なう(ステップS43)。
 その後、画像分割ユニット5は、発火セルが存在するか否かを判定し(ステップS44)、発火セルが存在するとき、上述した方法によって周囲へ引火(領域成長)を行なう(ステップS45)。そして、一連の動作は、ステップS44へ戻り、ステップS44において、発火セルが存在しなくなるまで、ステップS44,S45が繰り返し実行される。
 ステップS44において、発火セルが存在しないと判定されると、画像分割ユニット5は、上述した方法によって、引火終了・領域決定を行なうとともに、ラベル付け(鎮火)を行なう(ステップS46)。その後、一連の動作は、ステップS42へ戻り、ステップS42において、自己発火可能なセルが検出されないと判定されるまで、ステップS42~ステップS46が繰り返し実行される。
 そして、ステップS42において、自己発火可能なセルが検出されないと判定されると、一連の動作は、終了する。
 なお、画像分割ユニット5は、図21に示すフローチャートを繰り返し実行し、各フレームを各対象物の画像に分割する。
 図22は、実施の形態3における圧縮処理方法を説明するためのフローチャートである。図22に示すフローチャートは、図7に示すフローチャートのステップS2~ステップS5にステップS51~ステップS53を追加したものであり、その他は、図7に示すフローチャートと同じである。
 図22を参照して、一連の動作が開始されると、圧縮処理装置10Bの画像分割ユニット5は、図21に示すフローチャートに従って原画像を複数の画像に分割する(ステップS51)。
 そして、処理部1は、複数の画像の1つの画像について、RGBからYCbCrへの変換、サンプリング、レベルシフト、離散コサイン変換、量子化およびジグザグスキャン/ランレングス処理を実行して符号化対象データ群(=入力データ)を生成する(ステップS52)。
 その後、上述したステップS2~ステップS5が順次実行される。そして、ステップS5において、全ての部分集合に対して符号化が終了したと判定されると、全ての画像に対して符号化が終了したか否かが判定される(ステップS53)。
 ステップS53において、全ての画像に対して符号化が終了していないと判定されたとき、一連の動作は、ステップS52へ戻り、ステップS53において、全ての画像に対して符号化が終了したと判定されるまで、上述したステップS52,S2~S5,S53が繰り返し実行される。
 そして、ステップS53において、全ての画像に対して符号化が終了したと判定されると、一連の動作が終了する。
 図23は、実施の形態3による圧縮処理装置の他の構成を示す概略ブロック図である。実施の形態3による圧縮処理装置は、図23に示す圧縮処理装置10Cであってもよい。
 図23を参照して、圧縮処理装置10Cは、図8に示す圧縮処理装置10Aに画像ユニット5を追加したものであり、その他は、圧縮処理装置10Aと同じである。
 画像分割ユニット5については、上述したとおりである。したがって、圧縮処理装置10Cは、原画像を対象物に注目して複数の画像に分割し、その分割した複数の画像の各々について、複数の部分集合への分割、および複数の部分集合に適した複数のハフマン符号化テーブルの作成を行ないながら複数の部分集合に含まれる全ての符号化対象データをハフマン符号化する処理を実行し、原画像データを圧縮する。
 図24は、実施の形態3における他の圧縮処理方法を説明するためのフローチャートである。図24に示すフローチャートは、図18に示すフローチャートのステップS32~ステップS39にステップS51~ステップS53を追加したものであり、その他は、図18に示すフローチャートと同じである。
 図24を参照して、一連の動作が開始されると、上述したステップS51,S52が順次実行され、その後、上述したステップS32~ステップS39が順次実行される。そして、ステップS39において、全ての符号化対象データの符号化が終了したと判定されると、上述したステップS53が実行され、ステップS53において、全ての画像に対して符号化が終了したと判定されると、一連の動作は、終了する。
 上述したように、実施の形態3においては、対象物に注目して原画像を複数の画像に分割し、その分割した複数の画像の各々について、実施の形態1による圧縮処理方法または実施の形態2による圧縮処理方法を用いて原画像データを圧縮することを特徴とする。
 原画像の分割は、各対象物を抽出するように行なわれるので、分割された各画像は、類似した画像データからなる。したがって、これらの各画像に対して実施の形態1,2によるハフマン符号化を適用することによって、データの圧縮を柔軟に行なうことができる。
 たとえば、図5に示す風景画は、空からなる画像、山からなる画像、および地面からなる画像の3個の画像に分割される。その結果、3個の画像の各画像は、出現頻度が類似した記号列からなるので、各画像に対して柔軟に対応したハフマン符号化テーブルを作成できる。したがって、データの圧縮を柔軟に行なうことができる。
 なお、上記においては、画像分割は、領域成長型画像分割方法を用いて行なわれると説明したが、この発明においては、これに限らず、画像分割は、下記の(1)~(4)に記載された方法を用いて行なわれてもよい。
 (1)B. Jaehne, “Digital Image Processing 5th revised and extended edition,” Springer-Verlag, pp. 427-440, 2001.
 (2)J. C. Russ, “The Image Processing Handbook,” CRC PRESS, pp. 371-429, 1999.36
 (3)T. Braeunl, S. Feyrer, W. Rapf, and M. Reinhardt, “Parallel Image Processing,”Springer-Verlag, 2000.
 (4)W. Y. Ma, and B. S. Manjunath, “Edgeflow: a technique for boundary detection and segmentation,” IEEE Transactions on Image Processing, vol. 9 (8), pp. 1375-1388, 2004.
 その他は、実施の形態1,2と同じである。
 上述した実施の形態1~3においては、画像データを圧縮する場合について説明したが、この発明においては、これに限らず、この発明による圧縮処理装置および圧縮処理方法は、文章データおよびオーディオデータを上述した方法によって圧縮してもよい。
 今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
 この発明は、圧縮効率の向上が可能な圧縮処理装置に適用される。また、この発明は、圧縮効率の向上が可能な圧縮処理方法に適用される。

Claims (14)

  1.  入力データを圧縮して圧縮データを出力する圧縮処理装置であって、
     前記入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する分割ユニットと、
     前記複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、前記圧縮データを出力する符号化ユニットとを備える圧縮処理装置。
  2.  1つの部分集合に含まれる符号化対象データの出現頻度を調べて前記1つの部分集合に対応するハフマン符号化テーブルを作成する処理を前記複数の部分集合の全てについて実行し、前記複数のハフマン符号化テーブルを作成するテーブル作成ユニットをさらに備える、請求の範囲第1項に記載の圧縮処理装置。
  3.  前記符号化ユニットは、前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化する、請求の範囲第1項に記載の圧縮処理装置。
  4.  各々が複数のハフマン符号からなる第1および第2の符号化テーブルを保持するテーブル保持ユニットと、
     前記第1および第2の符号化テーブルのうち、前記入力データのハフマン符号化に用いられていない一方の符号化テーブルを前記符号化対象データの出現頻度に応じて出現頻度が最も多い符号化対象データが最も短いハフマン符号に変換されるように更新する更新ユニットとをさらに備え、
     前記符号化ユニットは、前記圧縮データの圧縮率がしきい値以下であるとき、前記第1および第2の符号化テーブルのうちの他方の符号化テーブルに基づいて前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化し、前記圧縮率が前記しきい値よりも大きくなると、前記更新ユニットによって更新された一方の符号化テーブルに基づいて前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化する、請求の範囲第3項に記載の圧縮処理装置。
  5.  前記更新ユニットは、全ての符号化対象データに対して出現頻度をカウントするとともに、1つの符号化対象データに対する出現頻度が最大値に達する毎に、前記出現頻度が前記最大値に達した順番が早いほど短い長さを有する新しいハフマン符号を前記1つの符号化対象データに対して割り当てる処理を前記全ての符号化対象データに対して実行し、前記一方の符号化テーブルを更新する、請求の範囲第4項に記載の圧縮処理装置。
  6.  前記更新ユニットは、前記符号化ユニットから出力された圧縮データに基づいて前記圧縮率を演算するとともに、その演算した圧縮率が前記しきい値よりも大きくなったとき、または前記全ての符号化対象データに対して前記新しいハフマン符号を割り当てたとき、前記符号化テーブルを切換えるための切換信号を生成して前記符号化ユニットへ出力し、
     前記符号化ユニットは、前記切換信号に応じて前記符号化テーブルを切換え、その切換え後の符号化テーブルに基づいて前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化する、請求の範囲第5項に記載の圧縮処理装置。
  7.  画像に含まれる対象物に基づいて前記画像を複数の画像に分割して複数の入力データを生成する画像分割ユニットをさらに備え、
     前記分割ユニットは、前記複数の入力データのうちの1つの入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する処理を前記複数の入力データの全てに対して実行し、
     前記符号化ユニットは、前記1つの入力データから分割された複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、前記圧縮データを出力する処理を前記複数の入力データの全てに対して実行する、請求の範囲第1項に記載の圧縮処理装置。
  8.  入力データを圧縮して圧縮データを出力する圧縮処理方法であって、
     分割ユニットが、前記入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する第1のステップと、
     符号化ユニットが、前記複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、前記圧縮データを出力する第2のステップとを備える圧縮処理方法。
  9.  テーブル作成ユニットが、1つの部分集合に含まれる符号化対象データの出現頻度を調べて前記1つの部分集合に対応するハフマン符号化テーブルを作成する処理を前記複数の部分集合の全てについて実行し、前記複数のハフマン符号化テーブルを作成する第3のステップをさらに備える、請求の範囲第8項に記載の圧縮処理方法。
  10.  前記第2のステップにおいて、前記符号化ユニットは、前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化する、請求項8に記載の圧縮処理方法。
  11.  更新ユニットが、各々が複数のハフマン符号からなる第1および第2の符号化テーブルのうち、前記入力データのハフマン符号化に用いられていない一方の符号化テーブルを符号化対象データの出現頻度に応じて出現頻度が最も多い符号化対象データが最も短いハフマン符号に変換されるように更新する第3のステップをさらに備え、
     前記第2のステップにおいて、前記符号化ユニットは、前記圧縮データの圧縮率がしきい値以下であるとき、前記第1および第2の符号化テーブルのうちの他方の符号化テーブルに基づいて前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化し、前記圧縮率が前記しきい値よりも大きくなると、前記一方の符号化テーブルに基づいて前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化する、請求の範囲第10項に記載の圧縮処理方法。
  12.  前記第3のステップは、
     前記更新ユニットが、全ての符号化対象データに対して出現頻度をカウントする第1のサブステップと、
     前記更新ユニットが、1つの符号化対象データに対する出現頻度が最大値に達する毎に、前記出現頻度が前記最大値に達した順番が早いほど短い長さを有する新しいハフマン符号を前記1つの符号化対象データに対して割り当てる処理を前記全ての符号化対象データに対して実行し、前記一方の符号化テーブルを更新する第2のサブステップとを含む、請求の範囲第11項に記載の圧縮処理方法。
  13.  前記第3のステップは、
     前記更新ユニットが、前記符号化ユニットから出力された圧縮データに基づいて前記圧縮率を演算する第3のサブステップと、
     前記更新ユニットが、前記第3のサブステップにおいて演算された圧縮率が前記しきい値よりも大きくなったとき、または前記全ての符号化対象データに対して前記新しいハフマン符号を割り当てたとき、前記符号化テーブルを切換えるための切換信号を生成して前記符号化ユニットへ出力する第4のサブステップとをさらに含み、
     前記第2のステップにおいて、前記符号化ユニットは、前記切換信号に応じて前記符号化テーブルを切換え、その切換え後の符号化テーブルに基づいて前記複数のハフマン符号化テーブルを作成しながら前記各部分集合毎に前記符号化対象データをハフマン符号化する、請求の範囲第12項に記載の圧縮処理方法。
  14.  画像分割ユニットが、画像に含まれる対象物に基づいて前記画像を複数の画像に分割して複数の入力データを生成する第3のステップをさらに備え、
     前記第1のステップにおいて、前記分割ユニットは、前記複数の入力データのうちの1つの入力データからなる母集合に含まれる複数の要素を各要素の特徴を用いて複数の部分集合に分割する処理を前記複数の入力データの全てに対して実行し、
     前記第2のステップにおいて、前記符号化ユニットは、前記1つの入力データから分割された複数の部分集合に対応して設けられた複数のハフマン符号化テーブルを用いて各部分集合毎に符号化対象データをハフマン符号化し、前記圧縮データを出力する処理を前記複数の入力データの全てに対して実行する、請求の範囲第8項に記載の圧縮処理方法。
PCT/JP2008/002065 2008-07-31 2008-07-31 圧縮処理装置および圧縮処理方法 WO2010013290A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2008/002065 WO2010013290A1 (ja) 2008-07-31 2008-07-31 圧縮処理装置および圧縮処理方法
JP2008552632A JP4303312B1 (ja) 2008-07-31 2008-07-31 圧縮処理装置および圧縮処理方法
US12/664,946 US7860328B2 (en) 2008-07-31 2008-07-31 Compression processing apparatus and compression processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/002065 WO2010013290A1 (ja) 2008-07-31 2008-07-31 圧縮処理装置および圧縮処理方法

Publications (1)

Publication Number Publication Date
WO2010013290A1 true WO2010013290A1 (ja) 2010-02-04

Family

ID=40972393

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2008/002065 WO2010013290A1 (ja) 2008-07-31 2008-07-31 圧縮処理装置および圧縮処理方法

Country Status (3)

Country Link
US (1) US7860328B2 (ja)
JP (1) JP4303312B1 (ja)
WO (1) WO2010013290A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012249280A (ja) * 2011-04-14 2012-12-13 Fujitsu Ltd データ処理システム及びデータ処理方法
JP2022510733A (ja) * 2019-02-22 2022-01-27 グーグル エルエルシー 複数の画像全体の圧縮

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2947069A1 (fr) * 2009-06-19 2010-12-24 Thomson Licensing Procede de selection de versions d'un document parmi une pluralite de versions recues a la suite d'une recherche, et recepteur associe
GB2489272B (en) * 2011-03-23 2013-03-13 Toshiba Res Europ Ltd An image processing system and method
US9792350B2 (en) 2013-01-10 2017-10-17 International Business Machines Corporation Real-time classification of data into data compression domains
US9564918B2 (en) * 2013-01-10 2017-02-07 International Business Machines Corporation Real-time reduction of CPU overhead for data compression
US9053121B2 (en) 2013-01-10 2015-06-09 International Business Machines Corporation Real-time identification of data candidates for classification based compression
US10423596B2 (en) 2014-02-11 2019-09-24 International Business Machines Corporation Efficient caching of Huffman dictionaries
US9337862B2 (en) * 2014-06-09 2016-05-10 Tidal Systems, Inc. VLSI efficient Huffman encoding apparatus and method
US10613797B2 (en) * 2017-06-13 2020-04-07 ScaleFlux, Inc. Storage infrastructure that employs a low complexity encoder
CN116193113A (zh) * 2022-12-07 2023-05-30 辉羲智能科技(上海)有限公司 数据解压和压缩方法及装置
CN116074514B (zh) * 2023-04-06 2023-06-02 深圳市银河通信科技有限公司 一种多媒体数据的安全通信云广播系统
CN116346940B (zh) * 2023-05-29 2023-08-22 德州禹工环保设备有限公司 一种智慧海绵城市的监测管理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06237448A (ja) * 1993-02-12 1994-08-23 Toshiba Corp 可変長符号化及び復号化装置
JP2005012495A (ja) * 2003-06-19 2005-01-13 Olympus Corp 画像処理装置、画像処理方法及び画像処理プログラム
JP2006217145A (ja) * 2005-02-02 2006-08-17 Murata Mach Ltd 画像処理装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253078A (en) * 1990-03-14 1993-10-12 C-Cube Microsystems, Inc. System for compression and decompression of video data using discrete cosine transform and coding techniques
JPH10336647A (ja) * 1997-06-04 1998-12-18 Nikon Corp 画像圧縮装置および画像圧縮処理プログラムを記録したコンピュータ読み取り可能な記録媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06237448A (ja) * 1993-02-12 1994-08-23 Toshiba Corp 可変長符号化及び復号化装置
JP2005012495A (ja) * 2003-06-19 2005-01-13 Olympus Corp 画像処理装置、画像処理方法及び画像処理プログラム
JP2006217145A (ja) * 2005-02-02 2006-08-17 Murata Mach Ltd 画像処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012249280A (ja) * 2011-04-14 2012-12-13 Fujitsu Ltd データ処理システム及びデータ処理方法
JP2022510733A (ja) * 2019-02-22 2022-01-27 グーグル エルエルシー 複数の画像全体の圧縮
JP7147075B2 (ja) 2019-02-22 2022-10-04 グーグル エルエルシー 複数の画像全体の圧縮

Also Published As

Publication number Publication date
JP4303312B1 (ja) 2009-07-29
US7860328B2 (en) 2010-12-28
US20100189351A1 (en) 2010-07-29
JPWO2010013290A1 (ja) 2012-01-05

Similar Documents

Publication Publication Date Title
JP4303312B1 (ja) 圧縮処理装置および圧縮処理方法
US6597812B1 (en) System and method for lossless data compression and decompression
JP3017380B2 (ja) データ圧縮方法及び装置並びにデータ伸長方法及び装置
US6028963A (en) Image encoding based on judgement on prediction error
JPH0937271A (ja) 画像圧縮方法
US8600183B2 (en) Optimized method and system for entropy coding
US10225569B2 (en) Data storage control apparatus and data storage control method
US20060153443A1 (en) Image compression usable with animated images
US7583849B2 (en) Lossless image compression with tree coding of magnitude levels
US11595057B2 (en) Reducing error in data compression
EP3343446A1 (en) Method and apparatus for encoding and decoding lists of pixels
Constantinescu et al. Improved techniques for single-pass adaptive vector quantization
KR19980081853A (ko) 그래픽 이미지 압축 및 복원 방법
CN105099460B (zh) 字典压缩方法、字典解压缩方法与字典建构方法
US10930020B2 (en) Texture compression using a neural network
JPS63250277A (ja) 状態入力生成装置
US20050193022A1 (en) Method and apparatus for lossless compression and decompression of data
CN114463450A (zh) 基于人工智能的计算机图像压缩方法及系统
JPH104557A (ja) 画像処理装置、及び方法、及びその方法を記憶した記憶媒体
CN117097905B (zh) 一种无损图像分块压缩方法、设备、存储介质
Makarichev et al. Comparison of DAT with DCT in a Viewpoint of Current Image Processing and Analysis Trends
Kamal Iteration free fractal image compression for color images using vector quantization, genetic algorithm and simulated annealing
CN111565317A (zh) 图像压缩方法、编解码网络训练方法、装置及电子设备
Tilki et al. Image data compression using multiple bases representation
CN112200301B (zh) 卷积计算装置及方法

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2008552632

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 12664946

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08790329

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 08790329

Country of ref document: EP

Kind code of ref document: A1