# Patent

## Title
Image processing device and image processing method

## Abstract

A significant digit number encoding unit designates a predetermined number of coefficient data items generated from image data as a set. The maximum number of significant digits that have the greatest absolute value in relation to each set every cycle is obtained and information is encoded regarding the maximum number. An absolute value is extracted for the maximum number of each coefficient data item in a set; and the absolute value is encoded at a cycle different from that of the significant digit number encoding unit. A sign encoding unit encodes a positive or negative sign of each coefficient data item in a set whose absolute value is not 0 at a cycle different from that of the absolute value encoding unit.

## Background
FIELD
The present disclosure relates to an image processing device and an image processing method, and more particularly to an image processing device and an image processing method capable of more easily performing encoding and decoding.
BACKGROUND
As an encoding method in which, in a case of performing image (data) encoding, coefficients of sub-bands (frequency bands) generated by performing a band division process on an input image are encoded, there is JPEG (Joint Photographic Experts Group) 2000.
In a case of encoding an image using the JPEG 2000 method, wavelet coefficients obtained by performing wavelet transform on the input image are quantized, and the quantized coefficients obtained through the quantization further undergo entropy encoding.
In the related art, in entropy encoding, bit modeling called EBCOT (Embedded Block Coding with Optimized Truncation) and arithmetical encoding called MQ coder are performed. That is to say, quantized coefficients undergo bit modeling, and further undergo arithmetical encoding based on a plurality of coding paths for each bit plane. The code obtained through the arithmetical encoding is output as an encoded image (data) (for example, refer to JP-A-2004-166254).
In addition, in a case of decoding an image encoded using the JPEG 2000 method, a process is performed with procedures reverse to the case of encoding. More specifically, the code which is the encoded image data undergoes entropy decoding and then is inversely quantized, and the quantized coefficients obtained thereby further undergo inverse wavelet transform. The image obtained by the inverse wavelet transform is output as a decoded image.
SUMMARY
However, in the above-described technique, since an amount to be processed at the EBCOT and MQ coder is large, it is difficult to perform image encoding and decoding at high speed, and, for example, in a case of performing real-time encoding (or decoding) of an HD (High Definition) image with a high resolution of horizontal 1920 pixels and vertical 1080 pixels, it is necessary to provide expensive dedicated hardware.
It is therefore desirable to more easily encode or decode an image.
One embodiment of the present disclosure is directed to an image processing device including a significant digit number encoding unit that designates a predetermined number of coefficient data items of a plurality of coefficient data items generated from image data as a set, obtains the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in relation to each set every cycle, and encodes information regarding the maximum number of significant digits; an absolute value encoding unit that extracts an absolute value for the maximum number of significant digits of each coefficient data item in a set which has been encoded by the significant digit number encoding unit, and encodes the absolute value at a cycle different from that of encoding of the significant digit number encoding unit; and a sign encoding unit that encodes a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set which has been encoded by the absolute value encoding unit at a cycle different from that of encoding of the absolute value encoding unit.
The image processing device may further include a maximum significant digit number holding unit that holds the maximum number of significant digits obtained by the significant digit number encoding unit during a predetermined time period. Here, the absolute value encoding unit may encode the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.
The maximum significant digit number holding unit may hold the maximum number of significant digits until the next cycle.
The maximum significant digit number holding unit may hold the maximum number of significant digits until a cycle after a plurality of cycles.
The image processing device may further include a coefficient data holding unit that holds each coefficient data item of a current set which is a process target during the same time period as that of the maximum significant digit number holding unit. Here, the absolute value encoding unit may encode the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, of each coefficient data item held by the coefficient data holding unit, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.
The image processing device may further include an absolute value holding unit that holds the absolute value extracted by the absolute value encoding unit during a predetermined time period. Here, the sign encoding unit may encode a sign of coefficient data whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when encoding is performed by the absolute value encoding unit by a time period when the absolute value holding unit holds the absolute value.
The absolute value holding unit may hold the absolute value until the next cycle.
The absolute value holding unit may hold the absolute value until a cycle after a plurality of cycles.
The image processing device may further include a coefficient data holding unit that holds each coefficient data item of a current set which is a process target during time period equal to or more than a time period of the absolute value holding unit. Here, the sign encoding unit may encode a sign of each coefficient data item held by the coefficient data holding unit, whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the coefficient data holding unit holds the coefficient data.
The image processing device may further include a wavelet transform unit that performs wavelet transform on image data; and a quantization unit that quantizes wavelet coefficients obtained by the wavelet transform unit performing the wavelet transform on the image data. Here, each of the significant digit number encoding unit, the absolute value encoding unit, and the sign encoding unit may perform encoding on quantized coefficients obtained by the quantization unit quantizing the wavelet coefficients.
The one embodiment of the present disclosure is also directed to an image processing method of an image processing device, including causing a significant digit number encoding unit to designate a predetermined number of coefficient data items of a plurality of coefficient data items generated from image data as a set, to obtain the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in relation to each set every cycle, and to encode information regarding the maximum number of significant digits; causing an absolute value encoding unit to extract an absolute value for the maximum number of significant digits of each coefficient data item in a set whose number of significant digits has been encoded, and to encode the absolute value at a cycle different from that of encoding of the maximum number of significant digits; and causing a sign encoding unit to encode a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been encoded at a cycle different from that of encoding of the absolute value.
Another embodiment of the present disclosure is directed to an image processing device including a significant digit number decoding unit that designates a predetermined number of coefficient data items of a plurality of coefficient data items as a set, and decodes a code indicating the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in the set in relation to each set every cycle; an absolute value decoding unit that decodes a code indicating an absolute value for the maximum number of significant digits of each coefficient data item in a set which has been decoded by the significant digit number decoding unit at a cycle different from that of decoding of the significant digit number decoding unit; and a sign decoding unit that decodes a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set which has been decoded by the absolute value decoding unit at a cycle different from that of decoding of the absolute value decoding unit.
The image processing device may further include a maximum significant digit number holding unit that holds the maximum number of significant digits obtained by the significant digit number decoding unit decoding the code indicating the maximum number of significant digits during a predetermined time period. Here, the absolute value decoding unit decodes the code indicating the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, at a cycle which is delayed from a cycle when decoding is performed by the significant digit number decoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.
The maximum significant digit number holding unit may hold the maximum number of significant digits until the next cycle.
The maximum significant digit number holding unit may hold the maximum number of significant digits until a cycle after a plurality of cycles.
The image processing device may further include an absolute value holding unit that holds the absolute value obtained by the absolute value decoding unit decoding the code indicating the absolute value during a predetermined time period. Here, the sign decoding unit may decode a code indicating a sign of coefficient data whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when decoding is performed by the absolute value decoding unit by a time period when the absolute value holding unit holds the absolute value.
The absolute value holding unit may hold the absolute value until the next cycle.
The absolute value holding unit may hold the absolute value until a cycle after a plurality of cycles.
The image processing device may further include an inverse quantization unit that inversely quantizes quantized coefficients including absolute values obtained as a result of decoding by the absolute value decoding unit and signs obtained as a result of decoding by the sign decoding unit; and an inverse wavelet transform unit that performs inverse wavelet transform on wavelet coefficients obtained by the inverse quantization unit inversely quantizing the quantized coefficients.
The another embodiment of the present disclosure is also directed to an image processing method of an image processing device, including causing a significant digit number decoding unit to designate a predetermined number of coefficient data items of a plurality of coefficient data items as a set, and to decode a code indicating the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in the set in relation to each set every cycle; causing an absolute value decoding unit to decode a code indicating an absolute value for the maximum number of significant digits of each coefficient data item in a set whose number of significant digits has been decoded at a cycle different from that of decoding of the number of significant digits; and causing a sign decoding unit to decode a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been decoded at a cycle different from that of decoding of the absolute value.
According to the one embodiment of the present disclosure, a predetermined number of coefficient data items of a plurality of coefficient data items generated from image data are designated as a set, the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value is obtained in relation to each set every cycle, information regarding the maximum number of significant digits is encoded, an absolute value for the maximum number of significant digits of each coefficient data item in a set whose number of significant digits has been encoded is extracted, the absolute value is encoded at a cycle different from that of encoding of the maximum number of significant digits, and, a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been encoded is encoded at a cycle different from that of encoding of the absolute value.
According to the another embodiment of the present disclosure, a predetermined number of coefficient data items of a plurality of coefficient data items are designated as a set, a code indicating the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in the set is decoded in relation to each set every cycle, a code indicating an absolute value for the maximum number of significant digits of each coefficient data item in a set whose number of significant digits has been decoded is decoded at a cycle different from that of decoding of the number of significant digits, and, a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been decoded is decoded at a cycle different from that of decoding of the absolute value.
According to the embodiments of the present disclosure, it is possible to process an image. Particularly, it is possible to more easily encode or decode an image.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram illustrating a main configuration example of the image encoding device.
FIG. 2 is a diagram illustrating a sub-band.
FIG. 3 is a diagram illustrating an example of the quantized coefficient to be encoded.
FIG. 4 is a diagram illustrating an example of the timing chart in a case where a pipeline process is not performed.
FIG. 5 is a diagram illustrating an example of the timing chart in a case where the pipeline process is performed.
FIG. 6 is a diagram illustrating another example of the timing chart in a case where the pipeline process is performed.
FIG. 7 is a block diagram illustrating a main configuration example of the entropy encoding unit.
FIG. 8 is a flowchart illustrating an example of the flow of the encoding process.
FIG. 9 is a flowchart illustrating an example of the flow of the entropy encoding process.
FIG. 10 is a flowchart illustrating an example of the flow of the W-set encoding process.
FIG. 11 is a flowchart illustrating an example of the flow of the process of the maximum number of significant digits.
FIG. 12 is a block diagram illustrating a main configuration example of the image decoding device.
FIG. 13 is a block diagram illustrating a main configuration example of the entropy decoding unit.
FIG. 14 is a block diagram illustrating a configuration example of the code dividing portion.
FIG. 15 is a block diagram illustrating another configuration example of the code dividing portion.
FIG. 16 is a flowchart illustrating an example of the flow of the decoding process.
FIG. 17 is a flowchart illustrating an example of the flow of the entropy decoding process.
FIG. 18 is a flowchart illustrating an example of the flow of the W-set decoding process.
FIG. 19 is a flowchart illustrating an example of the flow of the process of the maximum number of significant digits.
FIG. 20 is a diagram illustrating still another example of the timing chart in a case where the pipeline process is performed.
FIG. 21 is a block diagram illustrating another configuration example of the entropy encoding unit.
FIG. 22 is a block diagram illustrating another configuration example of the entropy decoding unit.
FIG. 23 is a block diagram illustrating another configuration example of the image encoding device.
FIG. 24 is a block diagram illustrating another configuration example of the image decoding device.
FIGS. 25A to 25C are diagrams illustrating an example of the flow of the encoding and decoding.
FIG. 26 is a block diagram illustrating a main configuration example of the personal computer.



DETAILED DESCRIPTION
Hereinafter, embodiments of the present disclosure will be described. In addition, the description will be made in the following order.
1. First embodiment (image encoding device)
2. Second embodiment (image decoding device)
3. Third embodiment (image encoding device and image decoding device)
4. Fourth embodiment (image encoding device and image decoding device)
5. Fifth embodiment (personal computer)
1. First Embodiment
[Image Encoding Device]
FIG. 1 is a block diagram illustrating a main configuration example of the image encoding device. The image encoding device 11 shown in FIG. 1 is an image processing device which encodes image data and outputs the encoded data obtained.
As shown in FIG. 1, the image encoding device 11 has a wavelet transform unit 21, a quantization unit 22, and an entropy encoding unit 23.
For example, an image (data) which is a component signal having undergone a DC level shift as necessary is input to the wavelet transform unit 21. The wavelet transform unit 21 performs wavelet transform on the input image and divides the image into a plurality of sub-bands. The wavelet transform unit 21 supplies wavelet coefficients of the sub-bands obtained through the wavelet transform to the quantization unit 22.
The quantization unit 22 quantizes the wavelet coefficients supplied from the wavelet transform unit 21, and supplies the quantized coefficients obtained as a result thereof to the entropy encoding unit 23.
The entropy encoding unit 23 performs entropy encoding on the quantized coefficients supplied from the quantization unit 22, and outputs a code obtained thereby as an encoded image (encoded data). The image (encoded data) output from the entropy encoding unit 23 may undergo, for example, a rate control process, and be then packetized and recorded, or supplied to other devices (not shown) connected to the image encoding device 11.
The respective processing units of the wavelet transform unit 21 to the entropy encoding unit 23 perform processes at timing described below. Thereby, the image encoding device 11 realizes encoding at higher speed.
Next, entropy encoding performed by the entropy encoding unit 23 in FIG. 1 will be described with reference to FIG. 2 and FIG. 3.
FIG. 2 is a diagram illustrating a sub-band. For example, as shown in FIG. 2, a single sub-band includes six lines, a line L1 to a line L6, and a position corresponding to a pixel on the line in an xy coordinate system is set to (x,y). Here, the x coordinate at the left end position in each of the line in the figure is set to 0, and the y coordinate at the line L1 is set to 0.
Quantized coefficients in bit plane expression and at each position (x,y) for the sub-band are input in raster scan order from the line L1 to the line L6, from the quantization unit 22 to the entropy encoding unit 23.
In other words, first, a quantized coefficient corresponding to the left end position (0,0) of the line L1 is input to the entropy encoding unit 23. Next, a quantized coefficient corresponding to the position (1,0) adjacent to the right of the position (0,0) is input to the entropy encoding unit 23, and quantized coefficients corresponding to the positions adjacent to the right of the positions where quantized coefficients have been input are sequentially input to the entropy encoding unit 23 up to the position at the right end of the line L1.
When all the quantized coefficients at the positions on the line L1 are input, quantized coefficients corresponding to the respective positions on the line L2 are sequentially input to the entropy encoding unit 23 from the left end position (0,1) of line L2 sequentially to the right end position, and similarly, from the line L3 to the line L6, the quantized coefficients corresponding to the positions on each line are input to the entropy encoding unit 23.
For example, as shown on the upper left part of FIG. 3, when twelve quantized coefficients are input to the entropy encoding unit 23 in order from the left end position of the line L1 in FIG. 2, the entropy encoding unit 23 encodes a predetermined number w (w=4 in FIG. 3) of the quantized coefficients.
Here, in each of the quantized coefficients shown on the upper left part of FIG. 3, the absolute value of the code thereof is divided into binary digits (bit-plane expression), and, in the example shown in FIG. 3, the quantized coefficients “−0101”, “+0011”, “−0110”, “+0010”, “+0011”, +0110, “0000”, “−0011”, “+1101”, “−0100”, “+0111”, and “−1010” of a single line (the line L1 in FIG. 2) are input in this order to the entropy encoding unit 23.
Each quantized coefficient includes a code of quantized coefficient expressed as “+” (positive) or “−” (negative) (hereinafter, referred to as a sign of the quantized coefficient), and an absolute value of the quantized coefficient expressed in binary. In FIG. 3, of the bits representing the values of the respective digits of the absolute value of the quantized coefficient, the bit on the top side in the figure represents the most significant bit (the bit of the most significant digit). Therefore, for example, in the quantized coefficient “−0101”, the sign thereof is “−”, and the absolute value expressed in binary is “0101”, and thus the decimal representation of this quantized coefficient is “−5”.
First, the entropy encoding unit 23 determines whether or not (the absolute values of) the quantized coefficients of one input line are all 0 (zero), and outputs a code indicating whether or not all the quantized coefficients of the line to be encoded hereafter are 0 in accordance with the determination result. If it is determined that the quantized coefficients are all 0, the entropy encoding unit 23 outputs 0 as a code indicating whether or not all the quantized coefficients of the line are 0, and finishes encoding of the quantized coefficients of the line which is currently performed. In addition, if it is determined that the values of all quantized coefficients are not 0 (not only quantized coefficients of 0), the entropy encoding unit 23 outputs 1 as a code indicating whether or not all the quantized coefficients of the line are 0.
When the twelve quantized coefficients shown on the upper left part of the figure are input, the quantized coefficients of the input line are not only 0, and thus the entropy encoding unit 23 outputs 1 as a code, as shown on the upper right of the figure.
After the code 1 indicating that the quantized coefficients are not all 0 is output as a code indicating whether or not all the quantized coefficients of the line are 0, the entropy encoding unit 23 performs encoding on the first four (W) quantized coefficients “−0101”, “+0011”, “−0110”, and “+0010” which have been input.
The entropy encoding unit 23 compares the maximum number of significant digits of the four consecutive quantized coefficients input this time (the value of the variable B in FIG. 3) with the maximum number of significant digits of the four (W) quantized coefficients encoded (input) the previous time, determines whether or not the maximum number of significant digits has changed, and outputs a code indicating the maximum number of significant digits of the quantized coefficients.
Here, the maximum number of significant digits is the number of significant digits of the quantized coefficient having the greatest absolute value, of the four (W) quantized coefficients to be encoded together. In other words, the maximum number of significant digits indicates at which digit the 1 of the highest order is in the quantized coefficient having the greatest absolute value of the four quantized coefficients. Therefore, for example, the maximum number of significant digits of the four quantized coefficients “−0101”, “+0011”, “−0110”, and “+0010” to be encoded together, is “3”, which is the digit at which the highest order 1 is located in the quantized coefficient “−0110” having the greatest absolute value.
In addition, codes indicating the maximum number of significant digits of the quantized coefficients include a code indicating whether or not the maximum number of significant digits has changed, a code indicating whether the maximum number of significant digits has increased or decreased, and a code indicating an amount of change in the maximum number of significant digits, and in a case where the maximum number of significant digits has not changed, the code indicating whether the maximum number of significant digits has increased or decreased and the code indicating the amount of change in the maximum number of significant digits are not output.
In a case where the maximum number of significant digits has changed as a result of the comparison of the maximum number of significant digits, the entropy encoding unit 23 outputs a code 1 indicating that the maximum number of significant digits has changed, and in a case where the maximum number of significant digits has not changed, outputs a code 0 indicating that the maximum number of significant digits has not changed.
In addition, in a case of determining whether or not the maximum number of significant digits has changed, when the four quantized coefficients are input for the first time, that is, the quantized coefficients of the sub-band to be encoded are initially input (for example, when the four quantized coefficients are sequentially input from the left end of the line L1 in FIG. 2), no quantized coefficients of the sub-band have been encoded previously, and thus the maximum number of significant digits of the four (W) quantized coefficients encoded the previous time is set to 0.
Therefore, the entropy encoding unit 23 compares the maximum number 3 of significant digits, of the four quantized coefficients “−0101”, “+0011”, “−0110”, and “+0010”, input this time, with the maximum number 0 of significant digits of the four quantized coefficients encoded the previous time, and outputs a code 1 since the maximum number of significant digits has changed.
In addition, the entropy encoding unit 23 outputs a code indicating whether the maximum number of significant digits has increased or decreased, following the code 1 indicating that the maximum number of significant digits has changed. Here, the entropy encoding unit 23 outputs 0 in a case where the maximum number of significant digits has increased, and outputs 1 in a case where the maximum number of significant digits has decreased.
In a case of the example shown in FIG. 3, since the previous maximum number of significant digits is 0, and the current maximum number of significant digits is 3, as shown on the upper right part of the figure, the entropy encoding unit 23 outputs a code 0 indicating that the maximum number of significant digits has increased.
Further, when outputting the code indicating whether the maximum number of significant digits has increased or decreased, the entropy encoding unit 23 outputs a code indicating how much the maximum number of significant digits has increased or decreased, that is, a code indicating an amount of change in the maximum number of significant digits. Specifically, if an amount of change in the maximum number of significant digits (that is, an increase amount or a decrease amount) is set as n, the entropy encoding unit 23 outputs (n−1) code 0s, and outputs a code 1 following these 0s.
In the case of encoding the first four quantized coefficients shown in FIG. 3, since an amount of change in the maximum number of significant digits is 3 (=3−0), the entropy encoding unit 23 outputs two (=3−1) 0s and further outputs 1, as codes.
Next, the entropy encoding unit 23 outputs codes for the maximum number of significant digits indicating the absolute value of each of the four (W) quantized coefficients to be encoded this time. That is to say, in relation to each quantized coefficient, the entropy encoding unit 23 outputs a code indicating a value of each digit of an absolute value of the quantized coefficient, from the greatest digit of the significant digits indicated by the maximum number of significant digits to the smallest digit in order.
The quantized coefficients to be encoded this “−0101”, “+0011”, “−0110”, and “+0010”, and thus the entropy encoding unit 23 first outputs a code for the maximum number of significant digits indicating the absolute value of the quantized coefficient “−0101” input first. Here, the current maximum number of significant digits is 3, and thus the entropy encoding unit 23 outputs the value “1” of the greatest digit (that is, the third digit) of the significant digits indicated by the maximum number of significant digits of the quantized coefficient “−0101”, the value “0” (the second digit) of the digit one smaller than the greatest digit, and the value “1” for the lowest order digit. Thus, the code “101” for the number of the significant digits indicating the absolute value of the quantized coefficient “−0101” is output.
Similarly, the entropy encoding unit 23 sequentially outputs codes “011”, “110”, and “010”, for the numbers of significant digits respectively indicating the absolute values of the quantized coefficients “+0011”, “−0110”, and “+0010”. Therefore, in relation to the quantized coefficients, “101011110010” is output as the code for the maximum number of significant digits indicating the absolute value of each of “−0101”, “+0011”, “−0110”, and “+0010”. In this way, the entropy encoding unit 23 outputs a code with a length corresponding to the maximum number of significant digits of the four quantized coefficients to be encoded, as a code indicating the absolute values of the quantized coefficients.
Finally, the entropy encoding unit 23 outputs a code indicating a sign of each of the four (W) quantized coefficients whose absolute value is not 0. Here, in a case where a sign of the quantized coefficient is “+” (positive), the entropy encoding unit 23 outputs the code 0, and in a case where the sign of the quantized coefficient is “−” (negative), outputs the code 1.
Since the quantized coefficients to be encoded this time are “−0101”, “+0011”, “−0110”, and “+0010”, and the signs of the quantized coefficients are sequentially negative, positive, negative, positive, as shown on the upper right part of the figure, the entropy encoding unit 23 outputs “1010” as a code indicating the signs of the respective quantized coefficients.
When the four quantized coefficients which have been first input are encoded, the entropy encoding unit 23 next encodes the following consecutive four quantized coefficients “+0011”, “+0110”, “0000”, and “−0011”.
In the same manner as the case of encoding the quantized coefficients input first (the previous time), the entropy encoding unit 23 first compares the maximum number significant digits of the four (W) quantized coefficients newly input this time, with the maximum number of significant digits of the four (W) quantized coefficients encoded the previous time.
The maximum number of significant digits of the four (W) quantized coefficients input this time, “+0011”, “+0110”, “0000”, and “−0011”, is “3”, which is the digit at which the highest order 1 is located in the quantized coefficient “+0110” having the greatest absolute value, and this is the same as the maximum number 3 of significant digits of the quantized coefficients encoded the previous time, and thus the entropy encoding unit 23 outputs the code 0 indicating that the maximum number of significant digits has not changed.
Next, the entropy encoding unit 23 outputs the code “011110000011” where the code for the maximum number of significant digits “011”, “110”, “000” and “011”, indicating the absolute values of the respective four (W) quantized coefficients “+0011”, “+0110”, “0000”, and “−0011” to be encoded this time, have been arranged in order.
Further, when the code indicating the absolute values of the quantized coefficients is output, the entropy encoding unit 23 outputs a code indicating a sign of each of the four quantized coefficients whose absolute value is not 0.
Since the quantized coefficients to be encoded this time are “+0011”, “+0110”, “0000”, and “−0011”, and the third quantized coefficient “0000” has an absolute value of 0, the entropy encoding unit 23 outputs the code “001” indicating the signs of these quantized coefficients, which are not 0, “+0011” “+0110”, and “−0011” (positive, positive, and negative).
When the four quantized coefficients “+0011”, “+0110”, “0000”, and “−0011” are encoded, the entropy encoding unit 23 encodes the following four quantized coefficients “+1101”, “−0100”, “+0111”, and “−0101”.
First, the entropy encoding unit 23 compares the maximum number of significant digits of the four (W) quantized coefficients newly input this time, with the maximum number of significant digits of the four quantized coefficients encoded the previous time.
Since the maximum number of significant digits of the four (W) quantized coefficients input this time, “+1101”, “−0100”, “+0111”, and “−0101”, is “4”, which is the digit at which the highest order 1 is located in the quantized coefficient “+1101” having the greatest absolute value and is the different from the maximum number “3” of significant digits of the quantized coefficients encoded the previous time, the entropy encoding unit 23 outputs the code 1 indicating that the maximum number of significant digits has changed.
In addition, since the previous maximum number of significant digits is 3, and the maximum number of significant digits this time is 4, the entropy encoding unit 23 outputs the code 0 indicating that the maximum number of significant digits has increased, as shown on the right part of the figure.
Further, the entropy encoding unit 23 outputs a code indicating how much the maximum number of significant digits has increased or decreased. In this case, since an amount of change in the maximum number of significant digits is 1 (=4−3), the entropy encoding unit 23 outputs 0 (=1−1) zeroes as a code, and further outputs 1 (that is, outputs the code 1).
Next, the entropy encoding unit 23 outputs the code “1101010001111010” where the codes for the maximum number of significant digits “1101”, “0100”, “0111”, and “1010”, indicating the absolute values of the respective four (W) quantized coefficients “+1101”, “−0100”, “+0111”, and “−1010” to be encoded this time are arranged in order.
In addition, when the code indicating the absolute values of the quantized coefficients is output, the entropy encoding unit 23 outputs a code indicating the sign of each of the four quantized coefficients whose quantized coefficient is not 0.
Since the quantized coefficients to be encoded this time are “+1101”, “−0100”, “+0111”, and “−1010”, and the signs of these quantized coefficients are, in order, positive, negative, positive, and negative, as shown on the lower right part of the figure, the entropy encoding unit 23 outputs “0101” as a code indicating the signs of the respective quantized coefficients.
In this way, the entropy encoding unit 23 encodes a predetermined number (W) of input consecutive quantized coefficients. Thereby, when the code indicating whether or not all the quantized coefficients of the line to be encoded are 0 is output, and the code indicating that all the quantized coefficients of the line are not 0 is output, from the entropy encoding unit 23, next, a code indicating the maximum number of significant digits of the W quantized coefficients, a code indicating absolute values (bit-plane expression) of the W quantized coefficients, and a code indicating signs of the quantized coefficients, are output.
In relation to the code indicating the maximum number of significant digits of these W quantized coefficients, the code indicating absolute values of the W quantized coefficients, and the code indicating signs of the quantized coefficients, a code indicating the maximum number of significant digits of the next W quantized coefficients, a code indicating absolute values of the quantized coefficients, and a code indicating signs of the quantized coefficients, are repeatedly output, until all quantized coefficients of the line are encoded.
In addition, the description has been made that the quantized coefficients are encoded in raster scan order, but the order in which the quantized coefficients are encoded does not necessarily have to be in raster scan order. For example, in the case where the quantized coefficients of the sub-band shown in FIG. 2 are encoded, quantized coefficients at four positions vertically arranged in the figure may be set as the W quantized coefficients, and the W quantized coefficients may be sequentially encoded, such as the quantized coefficients at the positions (0,0), (0,1), (0,2), and (0,3) (that is, the left end positions of the respective line L1 to line L4 in the figure) being encoded, and then the quantized coefficients at the positions (1,0), (1,1), (1,2), and (1,3) being encoded.
In this way, the entropy encoding unit 23 encodes a predetermined number of quantized coefficients of the sub-band together, and outputs a code indicating the maximum number of significant digits of the quantized coefficients, a code indicating absolute values of the quantized coefficients, and a code indicating signs of the quantized coefficients.
As such, by encoding a predetermined number of quantized coefficients of the sub-band together, for example, unlike in a case of encoding an image using the JPEG 2000 method, it is not necessary to perform a plurality of processes for each bit plane on the basis of a plurality of coding paths, and it is possible to considerably reduce a processing amount in encoding since the variable length encoding is performed. Thereby, it is possible to perform encoding of an image at higher speed and to thereby realize an encoding device for encoding a high definition image in real time at low costs.
Further, since, in the image encoding device 11, it is not necessary to explicitly encode the length of a code in a case of encoding an image, an amount of codes can be reduced, and thus it is not necessary to manage information regarding the length of a code.
Although, it has been described above that, of the W quantized coefficients, the number of significant digits of a quantized coefficient having the greatest absolute value is set as a value of the variable Bnew indicating the maximum number of significant digits, the value of the variable Bnew may be a value equal to or greater than the number of significant digits of a quantized coefficient having the greatest absolute value of the W quantized coefficients. If the value of the variable Bnew becomes greater, a code amount for a code indicating absolute values of the quantized coefficients increases, but the code amount for a code indicating the maximum number of significant digits of the quantized coefficients can be reduced by setting the value of the variable Bnew to a value equal to or greater than the number of significant digits of the quantized coefficient having the greatest absolute value.
[Pipeline Process]
However, in a case of the above-described encoding and decoding methods, W quantized coefficients are designated as a set, and, for each set, encoding of the maximum number of significant digits, encoding of absolute values, and encoding of codes (signs) indicating positive and negative polarities thereof are sequentially performed as in an example shown in FIG. 4.
FIG. 4 is a timing chart of each process element of an encoding process or a decoding process. In FIG. 4, the arrows of time points indicate a time series. Further, t0 to t7 indicate time points. In addition, each rectangle indicates a process element in the encoding process.
In addition, Bi (hereinafter, also referred to as B(i)) indicates that an encoding process or a decoding process for the maximum number of significant digits of a (i+1)-th set (processed in the (i+1)-th order) from a head of a process target line when W quantized coefficients is designated as a set. Further, the variable i is an integer of 0 or more. In addition, absi (hereinafter, also referred to as A(i)) indicates an encoding process or a decoding process for an absolute value of each quantized coefficient of a (i+1)-th set (processed in the (i+1)-th order) from the left of the process target line when W quantized coefficients are used as a set. Furthermore, signi (hereinafter, also referred to as S(i)) indicates an encoding process or a decoding process for a code (sign) of each quantized coefficient of the (i+1)-th set (processed in the (i+1)-th order) from the left of the process target line when W quantized coefficients are designated as a set.
In addition, in FIG. 4, the dotted arrows indicate an order of codes to be arranged in the respective process elements of the encoding process in encoded data. In other words, results of the respective process elements in the encoding process may be arranged in order of B(i), A(i) and S(i). In a case of the example of FIG. 4, codes are output in order of B0, abs0, sign0, B1, abs1, sign1, B2, abs2, sign2, . . . .
In the decoding process, acquired encoded data is sequentially decoded. In other words, the respective process elements in the decoding process are performed in an order of codes to be arranged. For this reason, the following restriction is applied in order to execute the respective process elements in the decoding process.
Executed process→necessary information
Cue of B(i+1)→head of S(i), length of S(i)
Decoding of B(i+1)→decoding result of B(i)
Cue of A(i+1)→head of B(i+1), <length of B(i+1)>
Decoding of A(i+1)→<decoding result of B(i+1)>
Cue of S(i+1)→<head of A(i+1)>, <decoding result of B(i+1)>
Decoding of S(i+1)→<decoding result of A(i+1)>
In other words, it is necessary to obtain encoded data of an absolute value from the encoded data in order to decode the absolute value, and, for this, it is necessary to clarify a terminal end position of encoded data of the maximum number of significant digits. For this reason, before the absolute value is decoded, it is necessary to clarify a leading position of the encoded data of the maximum number of significant digits and the code length. In addition, since the encoded data of an absolute value is generated using an absolute value for the maximum number of significant digits, information on the maximum number of significant digits is necessary to decode an absolute value.
Further, it is necessary to obtain encoded data of a sign from the encoded data in order to encode the sign (code of positive or negative), and, for this, it is necessary to clarify a terminal end position of the encoded data of the absolute value. For this reason, before the sign is decoded, it is necessary to clarify a leading position of the encoded data of the absolute value and the code length. In addition, in a case where an absolute value is 0, there is no encoded data of a sign, and thus information on an absolute value of each quantized coefficient is necessary to decode a sign.
However, at the time point when decoding of B(i), A(i), and S(i) which start at the timing (the time point ti) before just one time point from the time point t(i+1) is completed, information surrounded by < > in the above-described necessary information is still unclear.
In other words, at the time point when decoding of B(i), A(i), and S(i) is completed, it can be seen that:

    
    
        information for starting decoding of B(i+1) has been provided,
        in order to start decoding of A(i+1), it is necessary to wait for decoding of B(i+1) to be completed, and
        in order to start decoding of S(i+1), it is necessary to wait for decoding of A(i+1) to be completed.
    
    


In other words, in the decoding process, there are dependencies as indicated by the solid arrows of FIG. 4. Therefore, the respective process elements B, A, and S are necessary to be processed in order and thus may not be processed in parallel.
For example, in FIG. 4, since a process result of B2 is necessary in order to execute a process of abs2, a process may not start using process results of B1, abs1, and sign1 (processes starting at the time point t1 before one time point) at the time point t2.
Further, for example, in FIG. 4, since a process result of abs3 is necessary in order to execute a process of sign3, a process may not start using process results of B2, abs2, and sign2 (processes starting at the time point t2 before one time point) at the time point t3.
Therefore, for example, as shown in FIG. 5, the respective process elements (B(i), A(i) and S(i)) of a decoding process for a set are made to be executed (started) at different timings (time points). In other words, each of the process elements (B, A, and S) of the decoding process is executed as in a pipeline process. That is to say, the respective process elements (B, A, and S) of the decoding process can be made to be executed in parallel.
FIG. 5 is a diagram illustrating an example of the timing chart indicating an execution timing of each process element in a case of performing a pipeline process.
In a case of the example shown in FIG. 5, an execution timing of the decoding process A(i) of an absolute value is delayed further by a set than an execution timing of the decoding process B(i) of the maximum number of significant digits. In addition, an execution timing of the decoding process S(i) of a code (sign) is delayed further by two sets than an execution timing of the decoding process B(i) of the maximum number of significant digits.
In other words, for example, at the time point t(i+2), the decoding process S(i) of a code (sign) of an i-th set, the decoding process A(i+1) of an absolute value of a (i+1)-th set, and the decoding process B(i+2) of the maximum number of significant digits of a (i+2)-th set, are executed, and, then, at the time point t(i+3), the decoding process S(i+1) of a code (sign) of the (i+1)-th set, the decoding process A(i+2) of an absolute value of the (i+2)-th set, and the decoding process B(i+3) of the maximum number of significant digits of a (i+3)-th set, are executed.
In other words, in the encoded data, the respective encoding process results (encoded data) of the process elements B, A, and S starting at the same time point may be arranged in order of S, A, and B.
In this way, a restriction for executing the respective process elements of the decoding process in this case is as follows.
Executed process→necessary information
Cue of S(i+1)→head of B(i+2), length of B(i+2)
Decoding of S(i+1)→decoding result of A(i+1)
Cue of A(i+2)→head of S(i+1), length of S(i+1) calculated from decoding result of A(i+1)
Decoding of A(i+2)→decoding result of B(i+2)
Cue of B(i+3)→head of A(i+2), length of A(i+2) from decoding result of B(i+2)
Decoding of B(i+3)→decoding result of B(i+2)
In other words, in this case, in any process, necessary information is all provided at a time point when a process starting at a time point before one time point finishes. Therefore, any process element of a decoding process for a set which is a process target can be started at the current time point.
That is to say, the dependencies between the respective process elements in the decoding process have a relationship as indicated by the solid arrows of FIG. 5. Therefore, since the dependencies between the respective process elements B, A, and S for a set are canceled, they can be processed in parallel. Accordingly, it is possible to improve throughput of the decoding process.
Further, since the decoding process is performed in this way, encoding process results (encoded data) of the respective process elements B, A, and S starting at the same time point may be arranged in order of S. A, and B in the encoded data. In order to realize this arrangement without performing a rearranging process which increases a process time, the encoding process may be performed in the same procedures. In other words, encoding is also performed in these procedures in the encoding process, and thereby it is possible to improve throughput of the encoding process in the same manner as the decoding process.
In a case of hardware, different circuits are used for the respective process elements even in a case of sequentially processing B, A, and S as in the example shown in FIG. 4. For this reason, it is possible to realize a parallel process for high speed as described above without increasing a circuit scale.
In addition, in a case of software, it is possible to effectively use a vacant time of the pipeline process of a CPU which is present after starting a process of B until a result related to B is provided, after starting a process of A until a result related to A is provided, and the like.
In addition, other pipeline process forms are possible. FIG. 6 is a diagram illustrating another example of the timing chart of a case where a pipeline process is performed.
For example, as shown in FIG. 6, in the encoded data, the codes B, A and S of the respective process elements starting at the same time point may be arranged in order of B, A, and S. Even if the encoded data is arranged in this way, information necessary for execution of the respective process elements B(i+3), A(i+2) and S(i+1) is provided at the time point t(i+3) in the same manner as the case of FIG. 5. Therefore, at the time point t(i+3), the respective process elements B(i+3), A(i+2) and S(i+1) can be executed in parallel. In other words, in the same manner as the case of FIG. 5, it is possible to improve throughput of the encoding process or the decoding process.
[Entropy Encoding Unit]
A processing unit which performs an encoding process of processing respective process elements in parallel will be described in detail. FIG. 7 is a block diagram illustrating a main configuration example of the entropy encoding unit 23.
As shown in FIG. 7, the entropy encoding unit 23 includes a line determining portion 61, a VLC (Variable Length Coding) encoding portion 62, a maximum significant digit number calculating portion 63, a VLC encoding portion 64, a significant digit extracting portion 65, a VLC encoding portion 66, a sign extracting portion 67, a VLC encoding portion 68, and a code linking portion 69.
Further, the entropy encoding unit 23 includes a delay portion 71 to a delay portion 75.
Quantized coefficients output from the quantization unit 22 (FIG. 1) are supplied (input) to the line determining portion 61, and the maximum significant digit number calculating portion 63. In addition, the quantized coefficients output from the quantization unit 22 are also supplied to the significant digit extracting portion 65 via the delay portion 71. Further, the quantized coefficients output from the quantization unit 22 are also supplied to the sign extracting portion 67 via the delay portion 73 and the delay portion 74.
The delay portions 71 to 75 include, for example, flip-flops (FF), and the like, and delay supply of information by a set. In other words, the delay portions 71 to 75 hold supplied information, and supply the held information to the subsequent processing portions at a process timing for the next set. For example, the delay portions 71 to 75 temporarily hold information which is supplied as a result of a process performed at the time point ti, and supply the information to the subsequent processing portions at the time point t(i+1). In other words, the subsequent processing portions use the information supplied from the delay portions 71 to 75 for a process performed at the time point t(i+1).
More specifically, the delay portion 71 supplies the quantized coefficients output from the quantization unit 22 or a calculation result of the maximum number of significant digits supplied from the maximum significant digit number calculating portion 63, to the significant digit extracting portion 65 at a process timing for the next set. In addition, the delay portion 72 supplies a calculation result of the maximum number of significant digits supplied from the maximum significant digit number calculating portion 63 to the significant digit extracting portion 65 at a process timing for the next set.
The delay portion 73 supplies the quantized coefficients output from the quantization unit 22 or a calculation result of the maximum number of significant digits supplied from the maximum significant digit number calculating portion 63, to the delay portion 74 at a process timing for the next set. The delay portion 74 supplies the information supplied from the delay portion 73 to the sign extracting portion 67 at a process timing for the next set.
Further, the delay portion 75 supplies (data of) significant digits of the quantized coefficients supplied from the significant digit extracting portion 65 to the sign extracting portion 67 at a process timing for the next set.
The line determining portion 61 determines whether or not all the quantized coefficients of a single line which are input from the quantization unit 22 and are encoded hereafter are 0, and supplies information indicating the determination result to the VLC encoding portion 62. In other words, the line determining portion 61 performs the process at the timing when the quantized coefficients are input.
The VLC encoding portion 62 outputs a code indicating whether or not all the quantized coefficients of the line to be encoded are 0 to the code linking portion 69 on the basis of the information indicating the determination result from the line determining portion 61. That is to say, the VLC encoding portion 62 performs the process at the timing when the quantized coefficients are input.
The maximum significant digit number calculating portion 63 calculates the maximum number of significant digits of consecutive W quantized coefficients input from the quantization unit 22, and supplies information indicating the calculation result to the VLC encoding portion 64. In other words, the maximum significant digit number calculating portion 63 performs the process at the timing when the quantized coefficients are input. In addition, the maximum significant digit number calculating portion 63 also supplies the information indicating the calculation result of the maximum number of significant digits to the significant extracting portion 65 via the delay portion 71 and the delay portion 72.
The VLC encoding portion 64 supplies a code indicating the maximum number of significant digits of the W quantized coefficients to the code linking portion 69 on the basis of the information indicating the calculation result from the maximum significant digit number calculating portion 63. That is to say, the VLC encoding portion 64 performs the process at the timing when the quantized coefficients are input.
The significant digit extracting portion 65 extracts significant digits of the W quantized coefficients supplied from the quantization unit 22 via the delay portion 71 on the basis of the information indicating the calculation result of the maximum number of significant digits supplied from the maximum significant digit number calculating portion 63 via the delay portion 71 and the delay portion 72, and supplies the extracted (data of) the significant digits of the quantized coefficients to the VLC encoding portion 66. In other words, the significant digit extracting portion 65 performs the process so as to be delayed by a set from the input timing of the quantized coefficients. In addition, the significant digit extracting portion 65 supplies the extracted (data of) significant digits of the quantized coefficients to the sign extracting portion 67 via the delay portion 75.
The VLC encoding portion 66 encodes absolute values of these quantized coefficients on the basis of the significant digits of the quantized coefficients from the significant digit extracting portion 65, and supplies a code indicating the absolute values of the quantized coefficients obtained thereby to the code linking portion 69. In other words, the VLC encoding portion 66 performs the process so as to be delayed by a set from the input timing of the quantized coefficients.
The sign extracting portion 67 extracts signs of the quantized coefficients supplied from the quantization unit 22 via the delay portion 73 and the delay portion 74 on the basis of the significant digits of the quantized coefficients supplied from the significant digit extracting portion 65 via the delay portion 75, and supplies the extracted (data of) signs to the VLC encoding portion 68. In other words, the sign extracting portion 67 performs the process so as to be delayed by two sets from the input timing of the quantized coefficients.
The VLC encoding portion 68 encodes (the data of) the signs from the sign extracting portion 67, and supplies a code indicating the signs of the quantized coefficients obtained thereby to the code linking portion 69. In other words, the VLC encoding portion 68 performs the process so as to be delayed by two sets from the input timing of the quantized coefficients.
The code linking portion 69 links the code indicating whether or not the quantized coefficients of the line are all 0, the code indicating the maximum number of significant digits, the code indicating the absolute values of the quantized coefficients, and the code indicating the signs of the quantized coefficients, respectively supplied from the VLC encoding portion 62, the VLC encoding portion 64, the VLC encoding portion 66, and the VLC encoding portion 68, to each other, so as to be output as an encoded image (data).
[Flow of Encoding Process]
Next, a detailed flow of the processes performed by the above-described respective portions of the image encoding device 11 will be described.
First, with reference to a flowchart of FIG. 8, a description will be made of an example of the flow of the encoding process performed by the image encoding device 11 (FIG. 1). This encoding process starts when an image (data) to be encoded is input to the wavelet transform unit 21.
In step S11, the wavelet transform unit 21 performs wavelet transform on the input image, divides the input image into a plurality of sub-bands, and supplies wavelet coefficients of each sub-band to the quantization unit 22.
In step S12, the quantization unit 22 quantizes the wavelet coefficients supplied from the wavelet transform unit 21, and supplies the quantized coefficients obtained as a result thereof to the entropy encoding unit 23. Thereby, for example, the quantized coefficients of each position of the sub-band, in bit-plane expression described with reference to FIG. 3, are input to the entropy encoding unit 23.
In step S13, the entropy encoding unit 23 performs an entropy encoding process, and finishes the encoding process. Although details of the entropy encoding process are described later, in the entropy encoding process as described with reference to FIG. 3, the entropy encoding unit 23 encodes a predetermined number (W) of quantized coefficients supplied from the quantization unit 22, and outputs, as an encoded image (encoded data), the code indicating whether or not all the quantized coefficients of the line to be encoded are 0, the code indicating the maximum number of significant digits of the quantized coefficients, the code indicating the absolute values of the quantized coefficients, and the code indicating the signs of the quantized coefficients.
At that time, the entropy encoding unit 23 executes the respective process elements of the entropy encoding process in parallel to each other at the timings as described with reference to FIG. 5 or 6. Thereby, the entropy encoding unit 23 can improve throughput of the entropy encoding process.
In this way, the image encoding device 11 encodes the input image so as to be output.
[Flow of Entropy Encoding Process]
Next, the entropy encoding process corresponding to the process in step S13 of FIG. 8 will be described with reference to FIG. 9.
In step S12 of FIG. 8, the quantized coefficients output from the quantization unit 22 are supplied (input) to the line determining portion 61, the maximum significant digit number calculating portion 63, the significant digit extracting portion 65, and the sign extracting portion 67, of the entropy encoding unit 23 (FIG. 7).
In step S41, the line determining portion 61 sets the variable y indicating the line of the sub-band to be encoded hereafter to y=0 and stores this.
For example, in a case of encoding the quantized coefficients of the sub-band shown in FIG. 2, the line determining portion 61 sets the variable y indicating the line (the line L1 to the line L6) of the sub-band to y=0. In addition, here, the line y indicated by the variable y indicates a line whose y coordinate at each position (x, y) on the line of the sub-band is y. Therefore, for example, in a case where the variable y stored in the line determining portion 61 is y=0, a line indicated by the variable becomes the line L1 whose y coordinate at each position on the line is 0.
In step S42, the maximum significant digit number calculating portion 63 sets a variable Binit indicating the maximum number of significant digits of the W quantized coefficients input first on the line (y−1) which is one before the line y indicated by the variable y stored in the line determining portion 61 to Binit=0, and stores this.
For example, in a case where the line (y−1) is the line L1 shown in FIG. 2, a value of the variable Binit indicating the maximum number of significant digits of the W quantized coefficients first input on the line (y−1) is the maximum number of significant digits of the W quantized coefficients from the left end position of line L1 in the figure, that is, of the W quantized coefficients at positions (0,0), (1,0), . . . , and (w−1,0). In addition, in a case where the variable y stored in the line determining portion 61 is y=0, the line (y−1) does not exist, and thus a value of the variable Binit is Binit=0.
In step S43, the line determining portion 61 determines whether or not (the absolute values of) the quantized coefficients of the line y indicated by the variable y stored therein are all 0. For example, in a case where the line y is the line L1 shown in FIG. 2, the line determining portion 61 determines that all the quantized coefficients are 0 in a case where all the quantized coefficients at the positions (x,y) on the line L1 are 0.
If it is determined in step S43 that the quantized coefficients are all 0, the line determining portion 61 generates information indicating that all the quantized coefficients are 0 and supplies the information to the VLC encoding portion 62 and the maximum significant digit number calculating portion 63, and the process proceeds to step S44.
In step S44, based on the information from the line determining portion 61 indicating that all the quantized coefficients are 0, the VLC encoding portion 62 outputs (supplies) the code 0 indicating that all the quantized coefficients of the line to be encoded are 0 to the code linking portion 69. The code linking portion 69 outputs the code 0 supplied from the VLC encoding portion 62 without change, as a code obtained as a result of the encoding of the quantized coefficients of the line y.
In step S45, the maximum significant digit number calculating portion 63 sets the value of the variable Binit stored therein to Binit=0, and updates the variable Binit on the basis of the information indicating that all the quantized coefficients are 0 from the line determining portion 61.
In step S46, the line determining portion 61 determines whether or not there is any unprocessed line in the lines of the sub-band whose encoding is in progress. That is to say, the line determining portion 61 determines whether or not the quantized coefficients of all the lines of the sub-band whose encoding is in progress, have been encoded. For example, in a case of encoding the quantized coefficients of the sub-band shown in FIG. 2, the line determining portion 61 determines that there are no unprocessed lines when the quantized coefficients at all the positions on the lines L1 to L6 have been encoded.
If it is determined in step S46 that there is an unprocessed line, the line determining portion 61 makes the process proceed to step S47 so as to encode the quantized coefficients at positions on the next line, that is, the line (y+1).
In step S47, the line determining portion 61 increments the variable y indicating the stored line to y=y+1, returns the process to step S43, and executes the above-described subsequent processes again.
In contrast, if it is determined in step S46 that there are no unprocessed lines, the quantized coefficients for all the lines forming the sub-band have been encoded, and thus the line determining portion 61 finishes the entropy encoding process, returns the process to step S13 of FIG. 8, and finishes the encoding process.
In addition, if it is determined in step S43 of FIG. 9 that the quantized coefficients of line y are not all 0 (there is a quantized coefficient which is not 0), the line determining portion 61 generates information indicating that the quantized coefficients are not all 0 (there is a quantized coefficient which is not 0), supplies the information to the VLC encoding portion 62 and the maximum significant digit number calculating portion 63, and makes the process proceed to step S48.
In step S48, based on the information from the line determining portion 61 indicating that the quantized coefficients are not all 0, the VLC encoding portion 62 outputs (supplies) the code 1 indicating that the quantized coefficients of the line to be encoded are not all 0 to the code linking portion 69. The code linking portion 69 outputs the code 1 supplied from the VLC encoding portion 62 without change.
In step S49, the entropy encoding unit 23 performs a W-set encoding process. Although details of the W-set encoding process are described later, in the W-set encoding process, the entropy encoding unit 23 encodes quantized coefficients on the line y indicated by the variable y stored in the line determining portion 61 every consecutive W sets.
Here, when a position on the line y specified by the variable y stored in the line determining portion 61 and the variable x stored in the maximum significant digit number calculating portion 63 is set to (x,y), the consecutive W positions on the line y are the consecutive positions (x,y), (x+1,y), . . . , and (x+w−1,y) on the line y. That is to say, in the W-set encoding process, the entropy encoding unit 23 encodes the quantized coefficients at the respective positions (x, y), (x+1,y), . . . , and (x+w−1,y).
When the W-set encoding process finishes, the entropy encoding unit 23 returns the process to step S46 and executes the subsequent processes.
In this way, the entropy encoding unit 23 encodes a predetermined number of the quantized coefficients at the respective positions of the sub-band in raster scan order.
As above, by encoding a predetermined number of the quantized coefficients at the respective positions of the sub-band in raster scan order, the input quantized coefficients can be processed in the order in which they have been input, and thus delay due to quantized coefficient encoding can be further reduced.
[Flow of W-Set Encoding Process]
Next, the W-set encoding process corresponding to the process of step S49 of FIG. 9 will be described with reference to a flowchart shown in FIG. 10.
If the W-set encoding process starts, the entropy encoding unit 23 initializes a variety of variables such as i, B, and max in step S61. For example, the entropy encoding unit 23 sets values of the variables i and B to 0 (i=0 and B=0), and sets a value of the variable max to the number of coefficients W sets on a corresponding line which is a process target (max=the number of coefficients W sets).
In step S62, the entropy encoding unit 23 determines whether or not the variable i is 0. If it is determined that the variable i is 0, the entropy encoding unit 23 makes the process proceed to step S63.
In a case of i=0, at the process timing (the time point t0), only encoding B(0) of the maximum number of significant digits for the first sets can be executed.
Therefore, in step S63, the maximum significant digit number calculating portion 63 and the VLC encoding portion 64 perform a process of the maximum number of significant digits for i=0, and generates a code indicating the maximum number of significant digits so as to be output (supplied) to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 64 without change as a code indicating the maximum number of significant digits of the first sets of the line y.
If the process in step S63 is completed, the maximum significant digit number calculating portion 63 and the VLC encoding portion 64 make the process proceed to step S70.
In step S70, the entropy encoding unit 23 determines whether or not the variable i<max−1. In other words, the entropy encoding unit 23 determines whether or not all the sets of the quantized coefficients of the line which is a process target have been processed.
If it is determined that the variable i<max−1 and there are unprocessed sets on the line which is a process target, the entropy encoding unit 23 makes the process proceed to step S71.
In step S71, the entropy encoding unit 23 increments the variable i (the variable i=i+1), and returns the process to step S62.
If it is determined in step S62 that the variable i is not 0, the entropy encoding unit 23 makes the process proceed to step S64.
In step S64, the entropy encoding unit 23 determines whether or not the variable i is 1. If it is determined that the variable i is 1, the entropy encoding unit 23 makes the process proceed to step S65.
In a case of i=1, at the process timing (the time point t1), only encoding B(1) of the maximum number of significant digits for the second sets and encoding A(0) of absolute values for the first sets can be executed.
Therefore, in step S65, the significant digit extracting portion 65 and the VLC encoding portion 66 extract absolute values corresponding to bits of the maximum number B of significant digits obtained through the process in step S63 in relation to the respective coefficients of the first coefficients W sets, and generate a code indicating the absolute values of the corresponding sets by arranging the absolute values so as to be output (supplied) to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 66 without change as a code indicating the absolute values of the first sets of the line y.
Therefore, in step S66, the maximum significant digit number calculating portion 63 and the VLC encoding portion 64 perform a process of the maximum number of significant digits for i=1, and generates a code indicating the maximum number of significant digits so as to be output (supplied) to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 64 without change as a code indicating the maximum number of significant digits the second sets of the line y.
If the process in step S66 is completed, the maximum significant digit number calculating portion 63 and the VLC encoding portion 64 make the process proceed to step S70.
If it is determined in step S64 that the variable i is not 1, the entropy encoding unit 23 makes the process proceed to step S67.
In a case of i≧2, at the process timing (the time point t2 and thereafter), encoding B(i) of the maximum number of significant digits for the (i+1)-th sets, encoding A(i−1) of absolute values for the i-th sets, and encoding S(i−2) of signs for the (i−1)-th sets can be executed.
Therefore, in step S67, the sign extracting portion 67 and the VLC encoding portion 68 generate a code indicating signs of corresponding sets by arranging codes indicating signs of the respective quantized coefficients whose absolute value is not 0 in relation to the respective coefficients of the (i−1)-th coefficients W sets, and output (supply) the code to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 68 without change as a code indicating absolute values of the (i−1)-th sets of the line y.
In step S68, the significant digit extracting portion 65 and the VLC encoding portion 66 extract absolute values corresponding to bits of the maximum number B of significant digits obtained through the process in step S66 or the process in step S69 the previous time in relation to the respective coefficients of the i-th coefficients W sets, and generate a code indicating the corresponding sets by arranging the absolute values so as to be output (supplied) to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 66 without change as a code indicating the absolute values of the i-th sets of the line y.
Therefore, in step S69, the maximum significant digit number calculating portion 63 and the VLC encoding portion 64 perform a process of the maximum number of significant digits, and generates a code indicating the maximum number of significant digits so as to be output (supplied) to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 64 without change as a code indicating the maximum number of significant digits of the (i+1)-th sets of the line y.
If the process in step S69 is completed, the maximum significant digit number calculating portion 63 and the VLC encoding portion 64 make the process proceed to step S70.
If it is determined in step S70 that the variable is not i<max−1, the entropy encoding unit 23 makes the process proceed to step S72.
In a case of the variable i=max−1, at the next process timing (the time point t(max)), encoding A(max−1) of absolute values for the max-th sets and encoding S(max−2) of signs for the (max−1)-th sets can be executed.
Therefore, in step S72, the sign extracting portion 67 and the VLC encoding portion 68 generate a code indicating signs of corresponding sets by arranging codes indicating signs of the respective quantized coefficients whose absolute value is not 0 in relation to the respective coefficients of the i-th coefficients W sets, and output (supply) the code to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 68 without change as a code indicating absolute values of the i-th sets of the line y.
The process in step S72 is executed at the next time point (timing) of the time point when the process in step S69 is finally performed.
In step S73, the significant digit extracting portion 65 and the VLC encoding portion 66 extract absolute values corresponding to bits of the maximum number B of significant digits obtained through the process in step S69 the previous time in relation to the respective coefficients of the (i+1)-th coefficients W sets, and generate a code indicating the absolute values of the corresponding sets by arranging the absolute values so as to be output (supplied) to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 66 without change as a code indicating the absolute values of the (i+1)-th sets of the line y.
The process in step S73 is executed at the same time point (timing) as the process in step S72.
In addition, at the next process timing (the time point t(max+1)), only encoding S(max−1) of signs for the max-th sets can be executed.
Therefore, in step S74, the sign extracting portion 67 and the VLC encoding portion 68 generate a code indicating signs of corresponding sets by arranging codes indicating signs of the respective quantized coefficients whose absolute value is not 0 in relation to the respective coefficients of the (i+1)-th coefficients W sets, and output (supply) the code to the code linking portion 69. The code linking portion 69 outputs the code supplied from the VLC encoding portion 68 without change as a code indicating absolute values of the (i+1)-th sets of the line y.
The process in step S74 is executed at the next time point (timing) of the time point when the process in step S73 is performed.
When the process in step S74 is completed, the entropy encoding unit 23 finishes the W-set encoding process.
[Flow of Process of Maximum Number of Significant Digits]
Next, with reference to flowcharts of FIG. 11, a description will be made of an example of the flow of the process of the maximum number of significant digits performed in step S63, S66 or S69 of FIG. 10.
If the process of the maximum number of significant digits starts, in step S81, the maximum significant digit number calculating portion 63 sets a position on the line y specified by the stored variable x to (x,y) and sets the number of significant digits of the quantized coefficient having the greatest absolute value of the quantized coefficients at the consecutive W positions (x,y), (x+1,y), . . . , and (x+w−1,y) as a value of the variable Bnew indicating the maximum number of significant digits of the W quantized coefficients to be encoded hereafter, and stores this variable Bnew.
In addition, the maximum significant digit number calculating portion 63 supplies the obtained maximum number of significant digits of the W quantized coefficients, that is, the value of the variable Bnew, to the VLC encoding portion 64. Further, the maximum significant digit number calculating portion 63 supplies the value of the variable Bnew to the significant digit extracting portion 65 via the delay portion 71 or the delay portion 72.
For example, in a case where the quantized coefficients of the consecutive W positions are respectively the quantized coefficients “−0101”, “+0011”, “−0110”, and “+0010”, shown in FIG. 3, of these quantized coefficients, the quantized coefficient with the greatest absolute value is “−0110” and the number of the significant digit thereof is “3”, which is the digit at which the highest order 1 is located in the “−0110”, and a value of the variable Bnew is set to 3.
In step S82, the VLC encoding portion 64 determines whether or not Bnew=B. That is to say, the VLC encoding portion 64 determines whether or not the stored value of the variable B indicating the maximum number of significant digits of the W quantized coefficients encoded the previous time is the same as the value of the variable Bnew indicating the maximum number of significant digits of the W quantized coefficients to be encoded hereafter, supplied from the maximum significant digit number calculating portion 63.
If it is determined in step S82 that Bnew=B, the VLC encoding portion 64 makes the process proceed to step S83, and outputs the code 0 indicating that the maximum number of significant digits has not changed to the code linking portion 69, as a code indicating the maximum number of significant digits of the W quantized coefficients to be encoded hereafter. When outputting the code 0 indicating the maximum number of significant digits, the VLC encoding portion 64 omits (skips) the processes in steps S84 to S88, and makes the process proceed to step S89.
In contrast, if it is determined in step S82 that Bnew is not B, the VLC encoding portion 64 makes the process proceed to step S84, and (since the maximum number of significant digits has changed,) outputs the code 1 indicating that the maximum number of significant digits has changed to the code linking portion 69.
In step S85, the VLC encoding portion 64 determines whether or not Bnew>B.
If it is determined that the maximum number Bnew of significant digits of the quantized coefficient sets (current sets) which are a process target is greater than the maximum number B of significant digits of the quantized coefficient sets (previous sets) which are a previous process target, the VLC encoding portion 64 makes the process proceed to step S86.
In step S86, the VLC encoding portion 64 outputs the code 0 indicating that the maximum number of significant digits has increased to the code linking portion 69 as a code indicating the maximum number of significant digits. Next, the VLC encoding portion 64 outputs (Bnew−B−1) codes 0 indicating a change amount (increment) of the maximum number of significant digits to the code linking portion 69 as a code indicating the maximum number of significant digits. In addition, the VLC encoding portion 64 makes the process proceed to step S88.
In addition, it is determined in step S85 that the maximum number Bnew of significant digits of the current sets is smaller than the maximum number B of significant digits of the previous sets (the maximum number of significant digits has decreased) the VLC encoding portion 64 makes the process proceed to step S87.
In step S87, the VLC encoding portion 64 outputs the code 1 indicating that the maximum number of significant digits has decreased to the code linking portion 69 as a code indicating the maximum number of significant digits. Next, the VLC encoding portion 64 outputs (Bnew−B−1) codes 0 indicating a change amount (decrement) of the maximum number of significant digits to the code linking portion 69 as a code indicating the maximum number of significant digits. In addition, the VLC encoding portion 64 makes the process proceed to step S88.
In step S88, the VLC encoding portion 64 outputs the code 1 indicating the terminal end (enough) of the change to the code linking portion 69. Further, the VLC encoding portion 64 makes the process proceed to step S89.
In step S89, the maximum significant digit number calculating portion 63 sets the value of the variable Bnew to the variable B (sets B=Bnew).
If the process in step S89 is completed, the maximum significant digit number calculating portion 63 finishes the process of the maximum number of significant digits and returns the process to FIG. 10.
In this way, the entropy encoding unit 23 encodes a predetermined number of quantized coefficients of a sub-band together, and outputs a code indicating the maximum number of significant digits of the quantized coefficients, a code indicating absolute values of the quantized coefficients, and a code indicating signs of the quantized coefficients.
In this way, for example, unlike in a case of encoding of an image using the JPEG 2000 method, it is not necessary to perform a plurality of processes for each bit plane on the basis of a plurality of coding paths, and, variable length encoding is preformed, and thus a process amount for encoding can be considerably reduced. Thereby, the image encoding device 11 can perform image encoding more easily, and an encoding device for encoding high resolution images in real-time can be realized at low costs.
Further, the image encoding device 11 does not have to explicitly encode the code length, thus a code amount can be reduced, and it is not necessary to manage information regarding the code length.
In addition, execution of the respective process elements of the encoding process is controlled such that the respective process elements of the encoding process for a single set are executed at different timings, and thereby the image encoding device 11 can improve throughput of the encoding process. As a result, the image encoding device 11 can perform the encoding process at higher speed.
Although the description has been made above that, of the W quantized coefficients, the significant digit of the quantized coefficient having the greatest absolute value is set as a value of the variable Bnew indicating the maximum number of significant digits, a value of the variable Bnew may be a value equal to or greater than the significant digit of the quantized coefficient having the greatest absolute value of the W quantized coefficients. If the value of the variable Bnew is greater, a code amount of the code indicating the absolute values of the quantized coefficients increases, but the code amount of the code indicating the maximum number of significant digits of the quantized coefficients can be reduced by setting a value of the variable Bnew to a value equal to or greater than the significant digit of the quantized coefficient having the greatest absolute value.
Further, in a case where the encoded data of the respective process elements of the encoding process is arranged as in the example of FIG. 6, in the flowchart of FIG. 10, an order of the process in step S65 and the process in step S66 to be executed may be reversed, an order of the processes in steps S67 to S69 to be executed may be replaced with an order of steps S69, S68 and S67, and an order of the process in step S72 and the process in step S73 to be executed may be reversed.
2. Second Embodiment
[Image Decoding Device]
FIG. 12 is a block diagram illustrating a main configuration example of the image decoding device. The image decoding device 111 shown in FIG. 12 is an image processing device corresponding to the image encoding device 11. In other words, the image decoding device 111 decodes encoded data which is output by encoding image data input to the image encoding device 11, using a method corresponding to the encoding process of the image encoding device 11, and outputs decoded image data.
As shown in FIG. 12, the image decoding device 111 includes an entropy decoding unit 121, an inverse quantization unit 122, and an inverse wavelet transform unit 123.
An encoded image (data) is input to the entropy decoding unit 121. The entropy decoding unit 121 performs entropy decoding on a code which is the input encoded image, and supplies quantized coefficients obtained thereby to the inverse quantization unit 122.
The inverse quantization unit 122 performs inverse quantization on the quantized coefficients supplied from the entropy decoding unit 121, and supplies wavelet coefficients for each sub-band obtained by the inverse quantization to the inverse wavelet transform unit 123.
The inverse wavelet transform unit 123 performs inverse wavelet transform on the wavelet coefficients of each sub-band supplied from the inverse quantization unit 122, and outputs an image obtained as a result thereof as a decoded image.
[Entropy Decoding Unit]
FIG. 13 is a block diagram illustrating a main configuration example of the entropy decoding unit 121.
As shown in FIG. 13, the entropy decoding unit 121 includes a code dividing portion 151, a line determining portion 152, a generation portion 153, a VLC decoding portion 154, a VLC decoding portion 155, a VLC decoding portion 156, a quantized coefficient synthesizing portion 157, and a switching portion 158.
In addition, the entropy decoding unit 121 includes a delay portion 161 and a delay portion 162.
The delay portions 161 and 162 include, for example, flip-flops (FF), and the like, and delay supply of information by a set. In other words, the delay portions 161 and 162 hold supplied information and supply the held information to the subsequent processing portions at a process timing for the next set. For example, the delay portions 161 and 162 temporarily hold information which is supplied as a result of a process performed at the time point ti, and supply the information to the subsequent processing portions at the time point t(i+1). In other words, the subsequent processing portions use the information supplied from the delay portions 161 and 162 for a process performed at the time point t(i+1).
More specifically, the delay portion 161 supplies information indicating the maximum number of significant digits supplied from the VLC decoding portion 154 to the VLC decoding portion 155 and the quantized coefficient synthesizing portion 157 at a process timing for the next set.
In addition, the delay portion 162 supplies information indicating a decoding result of a code indicating absolute values of the quantized coefficients supplied from the VLC decoding portion 155 to the VLC decoding portion 156 and the quantized coefficient synthesizing portion 157 at a process timing for the next set.
The code dividing portion 151 divides the code which is an encoded image that has been input, based on information supplied from each of the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, and the VLC decoding portion 156, and supplies the divided code with a predetermined length to the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, or the VLC decoding portion 156.
That is to say, the code dividing portion 151 divides the input code into a code indicating whether or not the encoded quantized coefficients of a single line are all 0, a code indicating the maximum number of significant digits of W encoded quantized coefficients, a code indicating absolute values of the W encoded quantized coefficients, and a code indicating signs of the encoded quantized coefficients, and supplies the codes to the processing portions corresponding to the data of the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, and the
VLC Decoding Portion 156.
More specifically, the code dividing portion 151 supplies the code indicating whether or not the encoded quantized coefficients of a single line are all 0 to the line determining portion 152. In addition, the code dividing portion 151 supplies the code indicating the maximum number of significant digits of the W encoded quantized coefficients to the VLC decoding portion 154. Further, the code dividing portion 151 supplies the code indicating absolute values of the W encoded quantized coefficients to the VLC decoding portion 155. Furthermore, the code dividing portion 151 supplies the code indicating signs of the encoded quantized coefficients to the VLC decoding portion 156.
The line determining portion 152 determines whether or not the quantized coefficients of a single line of an encoded sub-band are all 0, based on the code supplied from the code dividing portion 151, and supplies information indicating the determination result thereof to the code dividing portion 151, the generation portion 153, and the VLC decoding portion 154.
The generation portion 153 generates a code indicating quantized coefficients which are 0 for a single line on the basis of information indicating the determination result from the line determining portion 152, and supplies the code to the switching portion 158.
The VLC decoding portion 154 decodes the code supplied from the code dividing portion 151 indicating the maximum number of significant digits of the W encoded quantized coefficients, obtains the maximum number of significant digits of the W encoded quantized coefficients, and supplies information indicating the obtained maximum number of significant digits to the code dividing portion 151. In addition, the VLC decoding portion 154 supplies the obtained information indicating the maximum number of significant digits to the VLC decoding portion 155 and the quantized coefficient synthesizing portion 157 via the delay portion 161.
The code dividing portion 151 to the VLC decoding portion 154 performs the processes at the input timing of the encoded data.
The VLC decoding portion 155 decodes the code indicating the absolute values of the quantized coefficients supplied from the code dividing portion 151 on the basis of the information indicating the maximum number of significant digits supplied from the VLC decoding portion 154 via the delay portion 161. The VLC decoding portion 155 supplies (data of) significant digits of the W quantized coefficients obtained thereby to the VLC decoding portion 156 and the quantized coefficient synthesizing portion 157 via the delay portion 162. In addition, the VLC decoding portion 155 supplies information indicating the decoding result of the code indicating the absolute values of the quantized coefficients to the code dividing portion 151.
In other words, the VLC decoding portion 155 performs the process so as to be delayed by a set from the input timing of the encoded data.
Based on the significant digits of the quantized coefficients supplied from the VLC decoding portion 155 via the delay portion 162, the VLC decoding portion 156 decodes the code indicating the signs of the quantized coefficients supplied from the code dividing portion 151, and supplies the (data of) sings of the quantized coefficients obtained thereby to the quantized coefficient synthesizing portion 157. In addition, the VLC decoding portion 156 supplies information indicating the decoding result of the code indicating the signs of the quantized coefficients to the code dividing portion 151.
The quantized coefficient synthesizing portion 157 synthesizes the absolute values of the quantized coefficients supplied from the VLC decoding portion 155 via the delay portion 162 with the sings of the quantized coefficients supplied from the VLC decoding portion 156 on the basis of the information indicating the maximum number of significant digits supplied from the VLC decoding portion 154 via the delay portion 161, and supplies the W quantized coefficients obtained thereby to the switching portion 158.
In other words, the VLC decoding portion 156 and the quantized coefficient synthesizing portion 157 perform the processes so as to be delayed by two sets from the input timing of the encoded data.
The switching portion 158 outputs the quantized coefficients from the generation portion 153 or the quantized coefficient synthesizing portion 157.
[Code Dividing Portion]
FIG. 14 is a block diagram indicating a main configuration example of the code dividing portion 151. As shown in FIG. 14, the code dividing portion 151 includes a controller 171 and a memory 172.
The controller 171 reads a code with a predetermined length, of codes temporarily stored in the memory 172, based on the information supplied from each of the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, and the VLC decoding portion 156, shown in FIG. 13, and supplies the code to the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, or the VLC decoding portion 156.
In addition, the code dividing portion 151 may be configured as shown in FIG. 15, in addition to the configuration example shown in FIG. 14.
The code dividing portion 151 shown in FIG. 15 has a controller 191, a switch 192, and nodes 193-1 to 193-4.
When codes which are encoded images are input to the code dividing portion 151, the controller 191 controls the switch 192 on the basis of the information supplied from each of the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, and the VLC decoding portion 156, shown in FIG. 13, and supplies a code with a predetermined length of the input codes to the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, or the VLC decoding portion 156.
That is to say, the node 193-1 to the node 193-4 are respectively connected to the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, and the VLC decoding portion 156, and the controller 191 selects one of the nodes 193-1 to 193-4 as a supply destination of a code, and controls connection between the switch 192 and the selected node.
Since the switch 192 connects the node selected based on the control of the controller 191 to the input, the code input to the code dividing portion 151 is supplied to the line determining portion 152, the VLC decoding portion 154, the VLC decoding portion 155, or the VLC decoding portion 156, selected as a code supply destination, via the switch 192 and the node connected to the switch 192.
[Flow of Decoding Process]
Next, a decoding process performed by the image decoding device 111 will be described with reference to a flowchart shown in FIG. 16. This decoding process starts when the code which is an encoded image is input to the entropy decoding unit 121.
In step S131, the entropy decoding unit 121 performs an entropy decoding process, entropy-decodes the code which is an input image, and supplies quantized coefficients obtained thereby to the inverse quantization unit 122.
Although details of the entropy decoding process is described later in detail, in this entropy decoding process, the entropy decoding unit 121 decodes W quantized coefficients at consecutive positions on a line of an encoded sub-band at a time, and supplies the decoded quantized coefficients to the inverse quantization unit 122.
At this time, the entropy decoding unit 121 executes the respective process elements of the entropy decoding process in parallel to each other at the timings as described with reference to FIG. 5 or 6. Thereby, the entropy decoding unit 121 can improve throughput of the entropy decoding process.
In step S132, the inverse quantization unit 122 performs inverse quantization on the quantized coefficients supplied from the entropy decoding unit 121, and supplies wavelet coefficients of each sub-band obtained by the inverse quantization to the inverse wavelet transform unit 123.
In step S133, the inverse wavelet transform unit 123 performs inverse wavelet transform on the wavelet coefficients of each sub-band supplied from the inverse quantization unit 122, and outputs the image obtained as a result thereof, and then the decoding process finishes.
In this way, the image decoding device 111 decodes and outputs an encoded image.
[Flow of Entropy Decoding Process]
Next, an entropy decoding process corresponding to the process in step S131 of FIG. 16 will be described with reference to a flowchart of FIG. 17.
In step S161, the line determining portion 152 sets the variable y indicating a line of the sub-band to be decoded hereafter to y=0, and stores this.
In step S162, the VLC decoding portion 154 sets a variable Binit indicating the maximum number of significant digits of the W quantized coefficients input first on the line (y−1) which is one before the line y indicated by the variable y stored in the line determining portion 152 to Binit=0, and stores this.
For example, in a case where the line (y−1) is the line L1 shown in FIG. 2, a value of the variable Binit indicating the maximum number of significant digits of the W quantized coefficients first input on the line (y−1) is the maximum number of significant digits of the W quantized coefficients from the left end position of line L1 in the figure. In addition, in a case where the variable y stored in the line determining portion 152 is y=0, the line (y−1) does not exist, and thus a value of the variable Binit is Binit=0.
In step S163, the code dividing portion 151 supplies the first 1-bit code of the input code to the line determining portion 152, as a code indicating whether or not all quantized coefficients of the line to be decoded hereafter are O.
In step S163, the line determining portion 152 determines whether or not the 1-bit code read (supplied) from the code dividing portion 151 is 0, generates information indicating a result of the determination so as to be supplied to the generation portion 153, the VLC decoding portion 154, and the code dividing portion 151. If it is determined in step S16 that the code is 0, this means that the quantized coefficients of the line y are all 0, and thus the line determining portion 152 makes the process proceed to step S164.
In step S164, the generation portion 153 sets all the quantized coefficients on the line y to 0 on the basis of the information indicating the determination result from the line determining portion 152. Further, the generation portion 153 generates a code indicating the quantized coefficients of the line y so as to be supplied to the switching portion 158.
For example, in a case where a single quantized coefficient is represented by four digits, and there are five quantized coefficients on a single line, the generation portion 153 generates twenty (=4×5) 0s as a code indicating the quantized coefficients of the line y, and supplies the 0s to the switching portion 158. The switching portion 158 outputs the continuous twenty 0s, supplied from the generation portion 153, to the inverse quantization unit 122 as a code indicating the quantized coefficients of a single line.
In step S165, the VLC decoding portion 154 sets a value of the stored variable Binit to Binit=0 on the basis of information indicating the determination result from the line determining portion 152, and updates the variable Binit.
In step S166, the line determining portion 152 determines whether or not there are unprocessed lines in the lines of the sub-band whose decoding is in progress. That is to say, the line determining portion 152 determines whether or not quantized coefficients at positions on all lines of the sub-band whose decoding is in progress have been decoded.
If it is determined in step S166 that there is an unprocessed line, the line determining portion 152 makes the process proceed to step S167 so as to decode the quantized coefficients at the respective positions on the next line (y+1) of the line y indicated by the variable y stored therein.
In step S167, the line determining portion 152 increments the variable y indicating the stored line to y=y+1, returns the process to step S163, and executes the subsequent processes.
In contrast, if it is determined in step S166 that there are no unprocessed lines, the quantized coefficients for all the lines forming the sub-band have been decoded, and thus the line determining portion 152 finishes the entropy decoding process, returns the process to step S131 of FIG. 16 so as to execute the processes after step S132.
In addition, if it is determined in step S163 of FIG. 17 that the code is not 0, the line determining portion 152 makes the process proceed to step S168. In step S168, the entropy decoding unit 121 performs a W-set decoding process.
Although details of the W-set decoding process are described later, in the W-set decoding process, the entropy decoding unit 121 decodes quantized coefficients at continuous W positions on the line y indicated by the variable y stored in the line determining portion 152.
If the W-set decoding process finishes, the entropy decoding unit 121 returns the process to step S166 and executes the subsequent processes.
In this way, the entropy decoding unit 121 decodes a predetermined number of quantized coefficients at the respective positions of the sub-band in raster scan order.
In this way, by decoding a predetermined number of the quantized coefficients at the respective positions of the sub-band in raster scan order, the encoded quantized coefficients can be processed in the order in which they have been input, and thus delay due to quantized coefficient decoding can be further reduced.
[Flow of W-Set Decoding Process]
Next, a description will be made of an example of the flow of the W-set decoding process executed in step S168 of FIG. 17 with reference to a flowchart shown in FIG. 18.
In step S201, the entropy decoding unit 121 initializes a variety of variables such as i, B, and max. For example, the entropy decoding unit 121 sets the variable i=0 and the variable B=0, and sets the variable max to the number of coefficients W sets. Further, for example, the entropy decoding unit 121 sets initial values of all the coefficients to 0.
In step S202, the entropy decoding unit 121 determines whether or not the variable i is 0. If it is determined that the variable i is 0, the entropy decoding unit 121 makes the process proceed to step S203.
In a case of i=0, at the process timing (the time point t0), only decoding B(0) of the maximum number of significant for the first sets can be executed.
Therefore, in step S203, the VLC decoding portion 154 performs a process of the maximum number of significant digits for i=0, and decodes a code indicating the maximum number of significant digits so as to obtain the maximum number B of significant digits. The VLC decoding portion 154 supplies the obtained maximum number B of significant digits to the code dividing portion 151, and supplies the obtained maximum number B of significant digits to the VLC decoding portion 155 and the quantized coefficient synthesizing portion 157 via the delay portion 161.
If the process in step S203 is completed, the VLC decoding portion 154 makes the process proceed to step S210.
In step S210, the entropy decoding unit 121 determines whether or not the variable i<max−1. In other words, the entropy decoding unit 121 determines whether or not all the sets of the quantized coefficients of the line which is a process target have been processed.
If it is determined that the variable i<max−1 and there sets on the line which is a process target, the entropy decoding unit 121 makes the process proceed to step S211.
In step S211, the entropy decoding unit 121 increments the variable i (the variable i=i+1), and returns the process to step S202.
If it is determined in step S202 that the variable i is not 0, the entropy decoding unit 121 makes the process proceed to step S204.
In step S204, the entropy decoding unit 121 determines whether or not the variable i is 1. In other words, the entropy decoding unit 121 determines whether or not sets which are a process target are the second sets of the line which is a process target. If it is determined that the variable i is 1, the entropy decoding unit 121 makes the process proceed to step S205.
In a case of i=1, at the process timing (the time point t1), only decoding B(1) of the maximum number of significant digits for the second sets and decoding A(0) of absolute values for the first sets can be executed.
Therefore, in step S205, the VLC decoding portion 155 reads a code sequence corresponding to bits of the maximum number B of significant digits obtained through the process in step S203 in relation to the respective coefficients of the first coefficients W sets, and treats the code sequence as an arrangement of the absolute values for the maximum number of significant digits of the quantized coefficients. The VLC decoding portion 155 supplies the obtained absolute values of the respective quantized coefficients to the code dividing portion 151 and supplies the absolute values to the VLC decoding portion 156 and the quantized coefficient synthesizing portion 157 via the delay portion 162.
In step S206, the VLC decoding portion 154 performs a process of the maximum number of significant digits for i=1, and decodes a code indicating the maximum number of significant digits so as to obtain the maximum number B of significant digits. The VLC decoding portion 154 supplies the obtained maximum number B of significant digits to the code dividing portion 151, and supplies the obtained maximum number B of significant digits to the VLC decoding portion 155 and the quantized coefficient synthesizing portion 157 via the delay portion 161.
If the process in step S206 is completed, the VLC decoding portion 154 makes the process proceed to step S210.
If it is determined in step S204 that the variable i is not 1, the entropy decoding unit 121 makes the process proceed to step S207.
In a case of i≧2, at the process timing (the time point t2 and thereafter), decoding B(i) of the maximum number of significant digits for the (i+1)-th sets, decoding A(i−1) of absolute values for the i-th sets, and decoding S(i−2) of signs for the (i−1)-th sets can be executed.
Therefore, in step S207, the VLC decoding portion 156 treats the code indicating signs of the current sets supplied from the code dividing portion 151 as an arrangement of codes indicating signs of the respective quantized coefficients whose absolute value is not 0, in relation to the respective coefficients of the (i−1)-th coefficients W sets. The VLC decoding portion 156 supplies the obtained signs of the respective quantized coefficients to the code dividing portion 151 and the quantized coefficient synthesizing portion 157.
The quantized coefficient synthesizing portion 157 synthesizes the absolute values of the quantized coefficients with the signs thereof, and outputs W quantized coefficients obtained thereby via the switching portion 158.
In step S208, the VLC decoding portion 155 reads a code sequence corresponding to bits of the maximum number B of significant digits obtained through the process in step S206 or the process in step S209 the previous time, in relation to the respective coefficients of the i-th coefficients W sets, and treats the code sequence as an arrangement of the absolute values for the maximum number of significant digits of the quantized coefficients. The VLC decoding portion 155 supplies the obtained absolute values of the respective quantized coefficients to the code dividing portion 151 and supplies the absolute values to the VLC decoding 156 and the quantized coefficient synthesizing portion 157 via the delay portion 162.
In step S209, the VLC decoding portion 154 performs a process of the maximum number of significant digits, and decodes a code indicating the maximum number of significant digits so as to obtain the maximum number B of significant digits. The VLC decoding portion 154 supplies the obtained maximum number B of significant digits to the code dividing portion 151, and supplies the obtained maximum number B of significant digits to the VLC decoding portion 155 and the quantized coefficient synthesizing portion 157 via the delay portion 161.
If the process in step S209 is completed, the VLC decoding portion 154 makes the process proceed to step S210.
If it is determined in step S210 that the variable is not i<max−1, the entropy decoding unit 121 makes the process proceed to step S212.
In a case of the variable i=max−1, at the next process timing (the time point t(max)), decoding A(max−1) of absolute values for the max-th sets and decoding S(max−2) of signs for the (max−1)-th sets can be executed.
Therefore, in step S212, the VLC decoding portion 156 treats the code indicating signs of the current sets supplied from the code dividing portion 151 as an arrangement of codes indicating signs of the respective quantized coefficients whose absolute value is not 0, in relation to the respective coefficients of the i-th coefficients W sets. The VLC decoding portion 156 supplies the obtained signs of the respective quantized coefficients to the code dividing portion 151 and the quantized coefficient synthesizing portion 157.
The quantized coefficient synthesizing portion 157 synthesizes the absolute values of the quantized coefficients with the signs thereof, and outputs W quantized coefficients obtained thereby via the switching portion 158.
The process in step S212 is executed at the next time point (timing) of the time point when the process in step S209 is finally performed.
In step S213, the VLC decoding portion 155 reads a code sequence corresponding to bits of the maximum number B of significant digits obtained through the process in step S209 the previous time, in relation to the respective coefficients of the (i+1)-th coefficients W sets, and treats the code sequence as an arrangement of the absolute values for the maximum number of significant digits of the quantized coefficients. The VLC decoding portion 155 supplies the obtained absolute values of the respective quantized coefficients to the code dividing portion 151 and supplies the absolute values to the VLC decoding portion 156 and the quantized coefficient synthesizing portion 157 via the delay portion 162.
The process in step S213 is executed at the same time point (timing) as the process in step S212.
In addition, at the next process timing (the time point t(max+1)), only decoding S(max−1) of signs for the max-th sets can be executed.
Therefore, in step S214, the VLC decoding portion 156 treats the code indicating signs of the current sets supplied from the code dividing portion 151 as an arrangement of codes indicating signs of the respective quantized coefficients whose absolute value is not 0, in relation to the respective coefficients of the (i+1)-th coefficients W sets. The VLC decoding portion 156 supplies the obtained signs of the respective quantized coefficients to the code dividing portion 151 and the quantized coefficient synthesizing portion 157.
The quantized coefficient synthesizing portion 157 synthesizes the absolute values of the quantized coefficients with the signs thereof, and outputs W quantized coefficients obtained thereby via the switching portion 158.
The process in step S214 is executed at the next time point (timing) of the time point when the process in step S213 is performed.
When the process in step S214 is completed, the entropy encoding unit 23 finishes the W-set encoding process.
[Flow of Process of Maximum Number of Significant Digits]
Next, with reference to flowcharts of FIG. 19, a description will be made of an example of the flow of the process of the maximum number of significant digits performed in step S203, S206 or S209 of FIG. 18.
When the process of the maximum number of significant digits starts, in step S231, the VLC decoding portion 154 reads a 1-bit code from the codes supplied from the code dividing portion 151, and determines whether or not the code is 0. In a case where the read code is 0, the maximum number B of significant digits is the same as that of the previous set. Therefore, the VLC decoding portion 154 omits the processes in steps S232 to S236, finishes the process of the maximum number of significant digits, and returns the process to FIG. 18.
In addition, if it is determined in step S231 of FIG. 19 that the read code is 1, the VLC decoding portion 154 makes process proceed to step S232.
In step S232, the VLC decoding portion 154 reads a 1-bit code of the codes supplied from the code dividing portion 151 and determines whether or not the code is 0. If it is determined that the read code is 0, a value of the maximum number B of significant digits has increased from a value of the previous set. In this case, the VLC decoding portion 154 makes the process proceed to step S233.
In step S233, the VLC decoding portion 154 reads the codes supplied from the code dividing portion 151 by one bit until the code 1 is read. The VLC decoding portion 154 finishes the reading at the point when the code 1 is read, and sets the number of the codes 0 which have been read until then to n.
In step S234, the VLC decoding portion 154 updates a value of the maximum number B of significant digits by using the variable n. In other words, the VLC decoding portion 154 determines the maximum number B of significant digits of the current sets which are a process target as in the following Expression (1)

B=B+(n+1)  (1)

When the maximum number B of significant digits of the current sets is determined, the VLC decoding portion 154 finishes the process of the maximum number of significant digits and returns the process to FIG. 18.
In addition, if it is determined in step S232 of FIG. 19 that the read code is not 0, a value of the maximum number B of significant digits has decreased from a value of the previous set. In this case, the VLC decoding portion 154 makes process proceed to step S235.
In step S235, the VLC decoding portion 154 reads the codes supplied from the code dividing portion 151 by one bit until the code 1 is read or a maximum of (B−1)-bit code is read. The VLC decoding portion 154 finishes the reading at the point when the code 1 is read or the (B−1)-bit code is read, and sets the number of the codes 0 which have been read until then to n.
In step S236, the VLC decoding portion 154 updates a value of the maximum number B of significant digits by using the variable n. In other words, the VLC decoding portion 154 determines the maximum number B of significant digits of the current sets which are a process target as in the following Expression (2)

B=B−(n+1)  (2)

When the maximum number B of significant digits of the current sets is determined, the VLC decoding portion 154 finishes the process of the maximum number of significant digits and returns the process to FIG. 18.
As above, by decoding a predetermined number of the encode quantized coefficients of the sub-band together, for example, unlike in a case of decoding an image using the JPEG 2000 method, it is not necessary to perform a plurality of processes for each bit plane on the basis of a plurality of coding paths, and it is possible to perform decoding of an image at higher speed. Thereby, it is possible to realize a decoding device for decoding a high definition image in real time at low costs.
In addition, as described above, execution of the respective process elements of the encoding process is controlled such that the respective process elements of the decoding process for a single set are executed at different timings, and thereby the image decoding device 111 can improve encoding efficiency and throughput of the encoding process. As a result, the image decoding device 111 can perform the encoding process at higher speed.
Further, in a case where the encoded data of the respective process elements of the encoding process is arranged as in the example of FIG. 6, in the flowchart of FIG. 18, an order of the process in step S205 and the process in step S206 to be executed may be reversed, an order of the processes in steps S207 to S209 to be executed may be replaced with an order of steps S209, S208 and S207, and an order of the process in step S212 and the process in step S213 to be executed may be reversed.
In addition, in the above description, the description has been made that, as in the example of FIG. 5 or FIG. 6, the execution timing of the encoding process or the decoding process A of absolute values are delayed further by a set than that of the encoding process or the decoding process B of the maximum number of significant digits, and the execution timing of the encoding process or the decoding process S of signs is delayed further by two sets than that of the encoding process or the decoding process B of the maximum number of significant digits. However, the execution timings of the respective process elements are not limited to these patterns as long as they are different from each other.
For example, the execution timing of the encoding process or the decoding process A of absolute values may be delayed further by two or more sets than that of the encoding process or the decoding process B of the maximum number of significant digits. In this case, the execution timing of the encoding process or the decoding process S of signs may be delayed further by 0 or more sets than that of the encoding process or the decoding process A of absolute values.
Further, for example, the execution timing of the encoding process or the decoding process S of signs may be delayed further by two or more sets than that of the encoding process or the decoding process A of absolute values.
In addition, although, in the above description, the description has been made that the time point ti is an execution timing of a process element, the execution timing of each process element of the encoding process or the decoding process is not limited to the time point ti. Each process element of the encoding process or the decoding process may be executed at any execution timing as long as delay due to the dependencies shown in the flowchart of FIG. 5 or FIG. 6 does not occur.
For example, time from the time point ti to the time point t(i+1) may be used as one cycle, and a process element may be executed at any timing as long as the timing is a timing when a process is completed within the cycle.
3. Third Embodiment
[Another Example of Pipeline Process]
In addition, a process for a single process element may be performed over the next cycle. In other words, the process for the single process element may be performed using a plurality of cycles. For example, the encoding process or the decoding process B of the maximum number of significant digits may be performed using a time period corresponding to two sets, for example, as shown in FIG. 20. In this case, an arrangement of codes of the respective process elements in the encoded data is indicated by the dotted arrows of FIG. 20. That is to say, in this case as well, the arrangement of codes is the same as the case of FIG. 5.
In this case as well, as shown in FIG. 20, it is necessary to finish all the processes of the encoding process or the decoding process B(i) of the maximum number of significant digits before performing the encoding process or the decoding process A(i) of absolute values due to the dependencies. For example, in a case where a process time for the encoding process or the decoding process B of the maximum number of significant digits is considerably longer than a process time for the encoding process or the decoding process A of absolute values or the encoding process or the decoding process S of signs (deviation in a process time is great), it is possible to reduce a waiting time occurring at each cycle and to thereby improve throughput, through the above-described processes.
In this case, the entropy encoding unit 23 may be configured as in an example shown in FIG. 21. That is to say, in this case, the entropy encoding unit 23 further includes a VLC encoding portion 201 and a delay portion 202 in addition to the configuration of FIG. 7.
The VLC encoding portion 201 performs the same process as in the VLC encoding portion 64 of the case of FIG. 7 along with the VLC encoding portion 64. In other words, in the case of FIG. 7, the VLC encoding portion 64 executes the respective processes of the process of the maximum number of significant digits shown in the flowchart of FIG. 11, and, in a case of the example of FIG. 21, some processes of the processes are performed by the VLC encoding portion 201, and the other processes are performed by the VLC encoding portion 64.
The delay portion 202 delays information output from the VLC encoding portion 201 by a set in the same manner as the delay portions 71 to 75 so as to be supplied to the VLC encoding portion 64.
In this way, the process of the maximum number of significant digits is executed at cycles corresponding to two sets. In addition, arbitrarily, the VLC encoding portion 201 may perform processes up to a certain process of the process of the maximum number of significant digits and the VLC encoding portion 64 may perform processes from the certain process.
In addition, in this case, the entropy decoding unit 121 may be configured as in an example shown in FIG. 22. In other words, in this case, the entropy decoding unit 121 further includes a VLC decoding portion 251 in addition to the configuration of FIG. 13.
The VLC decoding portion 251 performs the same process as in the VLC decoding portion 154 of the case of FIG. 13 along with the VLC decoding portion 154. In other words, in the case of FIG. 13, the VLC decoding portion 154 executes the respective processes of the process of the maximum number of significant digits shown in the flowcharts of FIG. 19, and, in a case of the example of FIG. 22, some processes of the processes are performed by the VLC decoding portion 154, and the other processes are performed by the VLC decoding portion 251.
The VLC decoding portion 251 acquires a process result (a midway result of the process of the maximum number of significant digits of FIG. 19) from the VLC decoding portion 154 via the delay portion 161 and executes the other processes.
In this way, the process of the maximum number of significant digits is executed at cycles corresponding to two sets. In addition, arbitrarily, the VLC decoding portion 154 may perform processes up to a certain process of the process of the maximum number of significant digits and the VLC decoding portion 251 may perform processes from the certain process.
However, in the image encoding device 11 described above, in a case of encoding (or decoding) absolute values of quantized coefficients, the description has been made that the absolute values of predefined W quantized coefficients are sequentially encoded; however, the W quantized coefficients are encoded (or decoded) at the same time (in parallel) using an SIMD (Single Instruction Multiple Data) operation command used in a general purpose DSP (Digital Signal Processor) or a general purpose CPU, and thereby it is possible to encode (or decode) an image at higher speed.
Further, data encoded by the entropy encoding unit 23 may be data other than quantized coefficients. For example, in the image encoding device 11, the quantization unit 22 may be omitted, and the entropy encoding unit 23 may encode wavelet coefficients output from the wavelet transform unit 21. In this case, the entropy decoding unit 121 decodes input encoded data so as to output wavelet coefficients. Therefore, in this case, the image decoding device 111, the inverse quantization unit 122 may be omitted. The entropy decoding unit 121 decodes the input encoded data so as to output image data. Accordingly, in this case, in the image decoding device 111, the inverse wavelet transform unit 123 may also be omitted.
In addition, the wavelet transform unit 21 may be further omitted, and the entropy encoding unit 23 may encode image data (input image). In this case as well, the entropy decoding unit 121 decodes the input encoded data, and the entropy encoding unit 23 outputs data corresponding to the encoded data.
4. Fourth Embodiment
[Image Encoding Device]
FIG. 23 is a block diagram illustrating another configuration example of the image encoding device. The image encoding device 401 shown in FIG. 23 is an image processing device which performs low delay encoding on input image data and outputs encoded data generated.
As shown in FIG. 23, the image encoding device 401 includes a wavelet transform unit 410, a midway calculation buffer unit 411, a coefficient rearranging buffer unit 412, a coefficient rearranging unit 413, a rate control unit 414, and an entropy encoding unit 415.
Image data input to the image encoding device 401 is stored in the midway calculation buffer unit 411. The wavelet transform unit 410 performs wavelet transform on the image data stored in the midway calculation buffer unit 411. That is to say, the wavelet transform unit 410 reads the image data from the midway calculation buffer unit 411, generates coefficient data of a low frequency component and a high frequency component by performing a filter process on the image data using an analysis filter, and stores the coefficient data in the midway calculation buffer unit 411.
The wavelet transform unit 410 has a horizontal analysis filter and a vertical analysis filter, and performs an analysis filter process on the image data group both the screen horizontal direction and the screen vertical direction. The wavelet transform unit 410 performs the analysis filter process using, for example, a lifting operation.
The wavelet transform unit 410 reads the coefficient data of a low frequency component stored in the midway calculation buffer unit 411 again, performs a filter process on the read coefficient data using the analysis filters, and further generates coefficient data of a high frequency component and a low frequency component. The generated coefficient data is stored in the midway calculation buffer unit 411. That is to say, the wavelet transform unit 410 recursively repeats the analysis filter process on the low frequency component, and generates hierarchies of the coefficient data for each component.
The wavelet transform unit 410 reads the coefficient data from the midway calculation buffer unit 411 when this process is repeated and the division level arrives at a predetermined level, and stores the read coefficient data into the coefficient rearranging buffer unit 412.
The coefficient rearranging unit 413 reads the coefficient data stored in the coefficient rearranging buffer unit 412 in an order to be decoded (an order of inverse wavelet transform), so as to be supplied to the entropy encoding unit 415. The entropy encoding unit 415 encodes the supplied coefficient data using a predetermined entropy encoding method such as, for example, Huffman coding or arithmetic encoding.
The entropy encoding unit 415 is operated in conjunction with the rate control unit 414 and is controlled such that a bit rate of the output encoded data which is compressed is a substantially constant value. That is to say, the rate control unit 414 supplies, to the entropy encoding unit 415, a control signal for performing control such that an encoding process by the entropy encoding unit 415 is finished at the point when a bit rate of the data compressed and encoded by the entropy encoding unit 415 reaches a target value or immediately before reaching the target value on the basis of the encoded data information from the entropy encoding unit 415. The entropy encoding unit 415 outputs the encoded data at the point when the encoding process ends in response to the control signal supplied from the rate control unit 414.
The image encoding device 401 performs the image encoding multiple times in a stepwise fashion, by being divided into processes every several lines in the vertical direction of the screen. More specifically, the image encoding device 401 encodes the input image data for each number of lines which is necessary to generate coefficient data for a single line of a sub-band of the lowest frequency component after wavelet transform.
Hereinafter, the collection of lines necessary to generate coefficient data for a single line of a sub-band of the lowest frequency component, including other sub-bands, is referred to as a line block (or a precinct). Here, the line refers to pixel data or coefficient data for one row formed in a picture or a field corresponding to image data before wavelet transform, or in each sub-band.
In addition, data forming a line block (precinct) may be image data, may be coefficient data having undergone wavelet transform, or may be encoded data having undergone entropy encoding. In other words, the line block (precinct) may be data of any state as long as the data is data in original image data before wavelet transform, corresponding to a pixel data group for several lines necessary to generate coefficient data for a single line of a sub-band of the lowest frequency component after the wavelet transform. For example, there are cases where the data refers to a coefficient data group of each sub-band obtained by performing wavelet transform on the pixel data group.
In other words, the wavelet transform unit 410 performs a wavelet transform process for each line block (precinct). That is to say, the wavelet transform unit 410 starts the wavelet transform process when a minimal amount of input image data which is possible with an analysis filter process up to the lowest frequency component is accumulated in the midway calculation buffer unit 411.
In a case of a wavelet transform method in the related art, first, a horizontal analysis filter process is performed for the entire picture, and a vertical analysis filter process is performed for the entire picture. In addition, the same horizontal analysis filter process and vertical analysis filter process are sequentially performed for the obtained entire low frequency component. As above, the analysis filter processes are recursively repeated until a division level arrives at a final level. Therefore, it is necessary to hold a result of each analysis filter process in a buffer, but, at that time, it is necessary for the buffer to hold the entire picture, or filtering results of the entire low frequency component in a division level at that point, and thus a large amount of memory capacity is necessary (a data amount to be held is large).
In addition, in this case, unless the overall wavelet transform finishes in a picture, subsequent coefficient rearrangement or entropy encoding is not performed, and a delay time increases.
In contrast, since the wavelet transform unit 410 continuously performs the horizontal analysis filter process and vertical analysis filter process with the line block units up to a final level as described above, an amount of data which it is necessary to hold (buffer) at a time (at the same time) is small, and a memory capacity of a buffer to be prepared can be considerably reduced as compared with the method in the related art. In addition, the analysis filter processes are performed up to a final level, and thereby a process such as subsequent coefficient rearrangement or entropy encoding can be executed.
The coefficient rearranging unit 413 reads coefficient data when the coefficient data read next is stored in the coefficient rearranging buffer unit 412. The entropy encoding unit 415 sequentially performs entropy encoding on supplied coefficient data. Therefore, the wavelet transform unit 410 starts outputting the coefficient data at lower delay, and thereby the coefficient rearranging unit 413 or the entropy encoding unit 415 can start a process of each at lower delay.
In other words, the encoded data is output at lower delay. The respective processes of the wavelet transform, the coefficient arrangement, and the entropy encoding can be performed in parallel to each other. Therefore, it is possible to considerably reduce a delay time as compared with the method in the related art. In other words, the image encoding device 401 can encode input image data at lower delay and output encoded data.
The embodiments of the present disclosure may be applied to the image encoding device 401. For example, the entropy encoding unit 23 of FIG. 7 is employed as the entropy encoding unit 415. In this way, the image encoding device 401 can perform an encoding process at higher speed.
That is to say, the image encoding device 401 can reduce loads on the encoding process. Thereby, it is possible to perform the encoding process at higher speed. In addition, it is possible to implement the image encoding device 401 at lower costs (it is possible to reduce manufacturing costs). Further, the image encoding device 401 can execute the encoding process using a plurality of pipeline processes which are performed in parallel to each other. Thereby, it is possible to improve throughput of the encoding process.
[Image Decoding Device]
FIG. 24 is a block diagram illustrating another configuration example of the image decoding device. The image decoding device 420 shown in FIG. 24 is an image processing device corresponding to the image encoding device 401 of FIG. 23. That is to say, the image decoding device 420 decodes encoded data which is generated by the image encoding device 401 encoding image data, and generates decoded image data.
As shown in FIG. 24, the image decoding device 420 includes an entropy decoding unit 421, a coefficient buffer unit 422, and an inverse wavelet transform unit 423.
Encoded data input to the image decoding device 420 is supplied to the entropy decoding unit 421. The entropy decoding unit 421 performs entropy decoding on the encoded data using a method corresponding to the entropy encoding by the entropy encoding unit 415, and restores coefficient data before the entropy encoding. The entropy decoding unit 421 supplies the coefficient data to the coefficient buffer unit 422 so as to be stored.
The inverse wavelet transform unit 423 reads the coefficient data stored in the coefficient buffer unit 422, performs respective synthesis filter processes thereon in the vertical direction and the horizontal direction, and stores results of the synthesis filter processes in the coefficient buffer unit 422 again. The inverse wavelet transform unit 423 repeatedly performs the process according to a division level, and obtains decoded image data (output image data). The inverse wavelet transform unit 423 outputs the decoded image data generated to an external device of the image decoding device 420.
At this time, the coefficient data is rearranged in an order of inverse wavelet transform by the coefficient rearranging unit 413 of the image encoding device 401, and thus the inverse wavelet transform unit 423 can sequentially read the coefficients stored in the coefficient buffer unit 422 so as to be used for the synthesis filter process. In other words, the inverse wavelet transform unit 423 can perform lower delay inverse wavelet transform.
Therefore, the image decoding device 420 can decode the encoded data at lower delay and output decoded image data.
The embodiments of the present disclosure may be applied to the image decoding device 420. For example, the entropy decoding unit 121 of FIG. 13 is employed as the entropy decoding unit 421. In this way, the image decoding device 420 can perform a decoding process at lower delay and perform the decoding process at higher speed.
That is to say, the image decoding device 420 can reduce loads on the decoding process. Thereby, it is possible to perform the decoding process at higher speed. In addition, it is possible to implement the image decoding device 420 at lower costs (it is possible to reduce manufacturing costs). Further, the image decoding device 420 can execute the decoding process using a plurality of pipeline processes which are performed in parallel to each other. Thereby, it is possible to improve throughput of the decoding process.
[Flow of Encoding and Decoding]
It is possible to implement a data transmission system which can perform lower delay data transmission by using the above-described image encoding device 401 and image decoding device 420.
In transmission of data, the data is encoded, is transmitted, and is decoded in a transmission destination, which is effective for improvement in transmission efficiency.
In the data transmission system which encodes and transmits image data in this way, the image encoding device 401 is employed as an image encoding device of a transmission source, and the image decoding device 420 is employed as an image decoding device of a transmission destination. In this way, as described above, it is possible to perform lower delay encoding and decoding, and to thereby realize lower delay data transmission.
More detailed description will be made. FIGS. 25A to 25C are diagrams illustrating an example of the flow in which image data is encoded by the image encoding device 401 and the encoded data is decoded by the image decoding device 420. FIGS. 25A to 25C show an example of performing a filter process by wavelet transform up to the division level=2, employing a 5×3 filter. In the wavelet transform unit 410, as an example is shown in FIG. 25A, the first analysis filter process is performed on the first line to the seventh line of the input image data in each of the horizontal and vertical directions (In-1 in FIG. 25A).
In the division level=1 process of the first analysis filter process, the coefficient data items for three lines are generated, and are respectively disposed in the region HH, the region HL, and the region LH formed at the division level=1, as an example is shown in FIG. 25B (WT-1 in FIG. 25B).
In addition, the region LL formed at the division level=1 is further divided into four regions through the analysis filter process in the horizontal and vertical directions at the division level=2. The coefficient data items generated at the division level=2 are respectively disposed in the region LL, the region HH, region HL, and region LH by one line within the region LL by the division level=1.
In the second filter process and thereafter by the wavelet transform unit 410, the filter process is performed every four lines (In-2 . . . in FIG. 25A), coefficient data for two lines is generated at the division level=1 (WT-2 in FIG. 25B), and coefficient data for a single line is generated at the division level=2.
In a case of decoding the data having undergone the wavelet transform as in FIG. 25B, as an example is shown in FIG. 25C, the first line by the first synthesis process on the decoding side is output (Out-1 in FIG. 25C) with respect to the first filter process using the first line to the seventh line on the encoding side. Thereafter, four lines are output at a time from the decoding side (Out-2 . . . in FIG. 25C) with respect to the second filter process to the next-to-last filter process on the encoding side. Seven lines are output from the decoding side with respect to the last filter process on the encoding side.
As described above, the encoding process by the image encoding device 401 and the decoding process by the image decoding device 420 can be performed for each line block and can be performed in parallel to each other. Therefore, a delay time after image data is input to the image encoding device 401 until decoded image data is output from the image decoding device 420 is considerably reduced. That is to say, it is possible to realize lower delay data transmission.
By applying the embodiment of the present disclosure to the image encoding device 401 and the image decoding device 420 of the data transmission system as described above, it is possible to realize an encoding process or a decoding process more easily. In addition, it is possible to improve throughput of the encoding process or the decoding process, and to thereby further reduce delay of data transmission.
In addition, configurations of the image encoding device 401 and the image decoding device 420 are limited to the above-described examples as long as they can employ the embodiments of the present disclosure. For example, rearrangement of coefficients may be performed by the image decoding device 420. In addition, other transform processes (inverse transform processes) may be employed instead of the wavelet transform process (inverse wavelet transform process). Further, quantization or inverse quantization may be performed on coefficient data.
As a detailed example of the above-described data transmission system, there is a digital triax system in which, for example, in a television broadcasting station or production studio, when studio recording, relaying, or the like is performed, a plurality of signals such as a video signal, an audio signal, a return video signal, and a synchronization signal are superimposed and are transmitted, and power is supplied, using a single coaxial cable which connects a video camera to a camera control unit or a switcher.
In addition, the data transmission system may be applied to any systems such as, for example, a television conference system, and a communication system between a home gaming console and a peripheral device such as a video camera or a monitor. In addition, the data transmission system may also be applied to data transmission between processing units inside a device.
In other words, the embodiments of the present disclosure may be applied to all systems which transmit encoded data obtained by encoding image data.
5. Fifth Embodiment
[Personal Computer]
Next, the above-described series of processes may be performed by hardware or software. In this case, for example, there may be a configuration of a personal computer as shown in FIG. 26.
In FIG. 26, A CPU (Central Processing Unit) 601 of the personal computer 600 performs various processes according to a program stored in a ROM (Read Only Memory) 602 or a program which is loaded to a RAM (Random Access Memory) 603 from a storage unit 613. The RAM (Random Access Memory) 603 appropriately stores data which is necessary for the CPU 601 to execute various processes.
The CPU 601, the ROM 602, and the RAM 603 are connected to each other via a bus 604. In addition, an input and output interface 610 is also connected to the bus 604.
The input and output interface 610 is connected to an input unit 611 including a keyboard, a mouse, and the like, an output unit 612 including a display such as a CRT (Cathode Ray Tube) display or an LCD (Liquid Crystal Display), a speaker, and the like, a storage unit 613 including an SSD (Solid State Drive) such as a flash memory, a hard disk, or the like, and a communication unit 614 including an interface of a wired LAN (Local Area Network) or a wireless LAN, a modem, or the like. The communication unit 614 performs a communication process via a network including the Internet.
A drive 615 is connected to the input and output interface 610 as necessary, a removable medium 621 such as a magnetic disk, an optical disc, a magneto-optical disc, or a semiconductor memory, is appropriately installed therein, and a computer program read therefrom is installed in the storage unit 613 as necessary.
In a case where the above-described series of processes is executed using software, a program constituting the software is installed from a network or a recording medium.
The recording medium includes, for example, as shown in FIG. 26, not only the removable medium 621 such as a magnetic disk (including a flexible disc), an optical disc (including a CD-ROM (Compact Disc-Read Only Memory) and a DVD (Digital Versatile Disc)), a magneto-optical disc (including an MD (Mini Disc)), or a semiconductor memory, which is distributed so as to deliver a program to a user separately from a device body, but also the ROM 602 which is sent to a user in a state of being incorporated in a device body in advance and records a program therein, or a hard disk included in the storage unit 613.
The program executed by the computer may be a program where processes are performed in a time series according to the order described in the present specification, or may be a program executed in parallel or a program where processes are performed at a necessary timing such as when accessed.
In addition, in the present specification, the steps for describing programs recorded on a recording medium include not only processes performed in a time series according to the described order, but also processes performed in parallel or separately even if not necessarily performed in the time series.
In addition, in the present specification, the system refers to the entire apparatus including a plurality of devices.
Further, in the above description, a configuration described as a single device (or a processing unit) described above may be formed by a plurality of devices (or processing units). Conversely, in the above description, configurations described as a plurality of devices (or processing units) may be formed by a single device (or a processing unit). In addition, configurations other than those described above may be added to the configuration of each device (or each processing unit). Further, apart of the configuration of one device (or a processing unit) may be included in the configuration of another device (or another processing unit) as long as the configuration and operations of the overall system are substantially the same. In addition, embodiments of the present disclosure are not limited to the above-described embodiments but may have various modifications without departing from the scope of the present disclosure.
In addition, the present disclosure may be implemented as the following configurations.
(1) An image processing device including a significant digit number encoding unit that designates a predetermined number of coefficient data items of a plurality of coefficient data items generated from image data as a set, obtains the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in relation to each set every cycle, and encodes information regarding the maximum number of significant digits; an absolute value encoding unit that extracts an absolute value for the maximum number of significant digits of each coefficient data item in a set which has been encoded by the significant digit number encoding unit, and encodes the absolute value at a cycle different from that of encoding of the significant digit number encoding unit; and a sign encoding unit that encodes a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set which has been encoded by the absolute value encoding unit at a cycle different from that of encoding of the absolute value encoding unit.
(2) The image processing device set forth in (1) further including a maximum significant digit number holding unit that holds the maximum number of significant digits obtained by the significant digit number encoding unit during a predetermined time period, wherein the absolute value encoding unit encodes the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.
(3) The image processing device set forth in (2) wherein the maximum significant digit number holding unit holds the maximum number of significant digits until the next cycle.
(4) The image processing device set forth in (2) wherein the maximum significant digit number holding unit holds the maximum number of significant digits until a cycle after a plurality of cycles.
(5). The image processing device set forth in any one of (2) to (4), further including a coefficient data holding unit that holds each coefficient data item of a current set which is a process target during the same time period as that of the maximum significant digit number holding unit, wherein the absolute value encoding unit encodes the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, of each coefficient data item held by the coefficient data holding unit, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.
(6) The image processing device set forth in any one of (1) to (5), further including an absolute value holding unit that holds the absolute value extracted by the absolute value encoding unit during a predetermined time period, wherein the sign encoding unit encodes a sign of coefficient data whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when encoding is performed by the absolute value encoding unit by a time period when the absolute value holding unit holds the absolute value.
(7) The image processing device set forth in (6), wherein the absolute value holding unit holds the absolute value until the next cycle.
(8) The image processing device set forth in (6), wherein the absolute value holding unit holds the absolute value until a cycle after a plurality of cycles.
(9) The image processing device set forth in any one of (6) to (8), further including a coefficient data holding unit that holds each coefficient data item of a current set which is a process target during a time period equal to or more than a time period of the absolute value holding unit, wherein the sign encoding unit encodes a sign of each coefficient data item held by the coefficient data holding unit; whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the coefficient data holding unit holds the coefficient data.
(10) The image processing device set forth in any one of (1) to (9), further including a wavelet transform unit that performs wavelet transform on image data; and a quantization unit that quantizes wavelet coefficients obtained by the wavelet transform unit performing the wavelet transform on the image data, wherein each of the significant digit number encoding unit, the absolute value encoding unit, and the sign encoding unit performs encoding on quantized coefficients obtained by the quantization unit quantizing the wavelet coefficients.
(11) An image processing method of an image processing device, including causing a significant digit number encoding unit to designate a predetermined number of coefficient data items of a plurality of coefficient data items generated from image data as a set, to obtain the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in relation to each set every cycle, and to encode information regarding the maximum number of significant digits; causing an absolute value encoding unit to extract an absolute value for the maximum number of significant digits of each coefficient data item in a set whose maximum number of significant digits has been encoded, and to encode the absolute value at a cycle different from that of encoding of the maximum number of significant digits; and causing a sign encoding unit to encode a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been encoded at a cycle different from that of encoding of the absolute value.
(12) An image processing device including a significant digit number decoding unit that designates a predetermined number of coefficient data items of a plurality of coefficient data items as a set, and decodes a code indicating the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in the set in relation to each set every cycle; an absolute value decoding unit that decodes a code indicating an absolute value for the maximum number of significant digits of each coefficient data item in a set which has been decoded by the significant digit number decoding unit at a cycle different from that of decoding of the significant digit number decoding unit; and a sign decoding unit that decodes a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set which has been decoded by the absolute value decoding unit at a cycle different from that of decoding of the absolute value decoding unit.
(13) The image processing device set forth in (12), further including a maximum significant digit number holding unit that holds the maximum number of significant digits obtained by the significant digit number decoding unit decoding the code indicating the maximum number of significant digits during a predetermined time period, wherein the absolute value decoding unit decodes the code indicating the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, at a cycle which is delayed from a cycle when decoding is performed by the significant digit number decoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.
(14) The image processing device set forth in (13), wherein the maximum significant digit number holding unit holds the maximum number of significant digits until the next cycle.
(15) The image processing device set forth in (13), wherein the maximum significant digit number holding unit holds the maximum number of significant digits until a cycle after a plurality of cycles.
(16) The image processing device set forth in any one of (12) to (15), further including an absolute value holding unit that holds the absolute value obtained by the absolute value decoding unit decoding the code indicating the absolute value during a predetermined time period, wherein the sign decoding unit decodes a code indicating a sign of coefficient data whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when decoding is performed by the absolute value decoding unit by a time period when the absolute value holding unit holds the absolute value.
(17) The image processing device set forth in (16), wherein the absolute value holding unit holds the absolute value until the next cycle.
(18) The image processing device set forth in (16), wherein the absolute value holding unit holds the absolute value until a cycle after a plurality of cycles.
(19) The image processing device set forth in any one of (12) to (18), further including an inverse quantization unit that inversely quantizes quantized coefficients including absolute values obtained as a result of decoding by the absolute value decoding unit and signs obtained as a result of decoding by the sign decoding unit; and an inverse wavelet transform unit that performs inverse wavelet transform on wavelet coefficients obtained by the inverse quantization unit inversely quantizing the quantized coefficients.
(20) An image processing method of an image processing device, including causing a significant digit number decoding unit to designate a predetermined number of coefficient data items of a plurality of coefficient data items as a set, and to decode a code indicating the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in the set in relation to each set every cycle; causing an absolute value decoding unit to decode a code indicating an absolute value for the maximum number of significant digits of each coefficient data item in a set whose number of significant digits has been decoded at a cycle different from that of decoding of the number of significant digits; and causing a sign decoding unit to decode a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been decoded at a cycle different from that of decoding of the absolute value.
The present disclosure contains subject matter related to that disclosed in Japanese Priority Patent Application JP 2011-280578 filed in the Japan Patent Office on Dec. 21, 2011, the entire contents of which are hereby incorporated by reference.
It should be understood by those skilled in the art that various modifications, combinations, sub-combinations and alterations may occur depending on design requirements and other factors insofar as they are within the scope of the appended claims or the equivalents thereof.

## Claims

1. An image processing device comprising:
a significant digit number encoding unit that designates a predetermined number of coefficient data items of a plurality of coefficient data items generated from image data as a set, obtains the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in relation to each set every cycle, and encodes information regarding the maximum number of significant digits;
an absolute value encoding unit that extracts an absolute value for the maximum number of significant digits of each coefficient data item in a set which has been encoded by the significant digit number encoding unit, and encodes the absolute value at a cycle different from that of encoding of the significant digit number encoding unit; and
a sign encoding unit that encodes a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set which has been encoded by the absolute value encoding unit at a cycle different from that of encoding of the absolute value encoding unit.

2. The image processing device according to claim 1, further comprising:
a maximum significant digit number holding unit that holds the maximum number of significant digits obtained by the significant digit number encoding unit during a predetermined time period,
wherein the absolute value encoding unit encodes the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.

3. The image processing device according to claim 2, wherein
the maximum significant digit number holding unit holds the maximum number of significant digits until the next cycle.

4. The image processing device according to claim 2, wherein
the maximum significant digit number holding unit holds the maximum number of significant digits until a cycle after a plurality of cycles.

5. The image processing device according to claim 2, further comprising:
a coefficient data holding unit that holds each coefficient data item of a current set which is a process target during the same time period as that of the maximum significant digit number holding unit,
wherein the absolute value encoding unit encodes the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, of each coefficient data item held by the coefficient data holding unit, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.

6. The image processing device according to claim 1, further comprising:
an absolute value holding unit that holds the absolute value extracted by the absolute value encoding unit during a predetermined time period,
wherein the sign encoding unit encodes a sign of coefficient data whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when encoding is performed by the absolute value encoding unit by a time period when the absolute value holding unit holds the absolute value.

7. The image processing device according to claim 6, wherein
the absolute value holding unit holds the absolute value until the next cycle.

8. The image processing device according to claim 6, wherein
the absolute value holding unit holds the absolute value until a cycle after a plurality of cycles.

9. The image processing device according to claim 6, further comprising:
a coefficient data holding unit that holds each coefficient data item of a current set which is a process target during a time period equal to or more than a time period of the absolute value holding unit,
wherein the sign encoding unit encodes a sign of each coefficient data item held by the coefficient data holding unit, whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when encoding is performed by the significant digit number encoding unit by a time period when the coefficient data holding unit holds the coefficient data.

10. The image processing device according to claim 1, further comprising:
a wavelet transform unit that performs wavelet transform on image data; and
a quantization unit that quantizes wavelet coefficients obtained by the wavelet transform unit performing the wavelet transform on the image data,
wherein each of the significant digit number encoding unit, the absolute value encoding unit, and the sign encoding unit performs encoding on quantized coefficients obtained by the quantization unit quantizing the wavelet coefficients.

11. An image processing method of an image processing device, comprising:
causing a significant digit number encoding unit to designate a predetermined number of coefficient data items of a plurality of coefficient data items generated from image data as a set, to obtain the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in relation to each set every cycle, and to encode information regarding the maximum number of significant digits;
causing an absolute value encoding unit to extract an absolute value for the maximum number of significant digits of each coefficient data item in a set whose maximum number of significant digits has been encoded, and to encode the absolute value at a cycle different from that of encoding of the maximum number of significant digits; and
causing a sign encoding unit to encode a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been encoded at a cycle different from that of encoding of the absolute value.

12. An image processing device comprising:
a significant digit number decoding unit that designates a predetermined number of coefficient data items of a plurality of coefficient data items as a set, and decodes a code indicating the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in the set in relation to each set every cycle;
an absolute value decoding unit that decodes a code indicating an absolute value for the maximum number of significant digits of each coefficient data item in a set which has been decoded by the significant digit number decoding unit at a cycle different from that of decoding of the significant digit number decoding unit; and
a sign decoding unit that decodes a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set which has been decoded by the absolute value decoding unit at a cycle different from that of decoding of the absolute value decoding unit.

13. The image processing device according to claim 12, further comprising:
a maximum significant digit number holding unit that holds the maximum number of significant digits obtained by the significant digit number decoding unit decoding the code indicating the maximum number of significant digits during a predetermined time period,
wherein the absolute value decoding unit decodes the code indicating the absolute value for the maximum number of significant digits held by the maximum significant digit number holding unit, at a cycle which is delayed from a cycle when decoding is performed by the significant digit number decoding unit by a time period when the maximum significant digit number holding unit holds the maximum number of significant digits.

14. The image processing device according to claim 13, wherein
the maximum significant digit number holding unit holds the maximum number of significant digits until the next cycle.

15. The image processing device according to claim 13, wherein
the maximum significant digit number holding unit holds the maximum number of significant digits until a cycle after a plurality of cycles.

16. The image processing device according to claim 12, further comprising:
an absolute value holding unit that holds the absolute value obtained by the absolute value decoding unit decoding the code indicating the absolute value during a predetermined time period,
wherein the sign decoding unit decodes a code indicating a sign of coefficient data whose absolute value held by the absolute value holding unit is not 0, at a cycle which is delayed from a cycle when decoding is performed by the absolute value decoding unit by a time period when the absolute value holding unit holds the absolute value.

17. The image processing device according to claim 16, wherein
the absolute value holding unit holds the absolute value until the next cycle.

18. The image processing device according to claim 16, wherein
the absolute value holding unit holds the absolute value until a cycle after a plurality of cycles.

19. The image processing device according to claim 12, further comprising:
an inverse quantization unit that inversely quantizes quantized coefficients including absolute values obtained as a result of decoding by the absolute value decoding unit and signs obtained as a result of decoding by the sign decoding unit; and
an inverse wavelet transform unit that performs inverse wavelet transform on wavelet coefficients obtained by the inverse quantization unit inversely quantizing the quantized coefficients.

20. An image processing method of an image processing device, comprising:
causing a significant digit number decoding unit to designate a predetermined number of coefficient data items of a plurality of coefficient data items as a set, and to decode a code indicating the maximum number of significant digits which is the number of significant digits of coefficient data having the greatest absolute value in the set in relation to each set every cycle;
causing an absolute value decoding unit to decode a code indicating an absolute value for the maximum number of significant digits of each coefficient data item in a set whose number of significant digits has been decoded at a cycle different from that of decoding of the number of significant digits; and
causing a sign decoding unit to decode a positive or negative sign of each coefficient data item whose absolute value is not 0 in a set whose absolute value has been decoded at a cycle different from that of decoding of the absolute value.