US20040179746A1 - System and method for inserting information in DCT coefficient domain - Google Patents

System and method for inserting information in DCT coefficient domain Download PDF

Info

Publication number
US20040179746A1
US20040179746A1 US10/808,754 US80875404A US2004179746A1 US 20040179746 A1 US20040179746 A1 US 20040179746A1 US 80875404 A US80875404 A US 80875404A US 2004179746 A1 US2004179746 A1 US 2004179746A1
Authority
US
United States
Prior art keywords
level
code length
zero
dct coefficient
length
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/808,754
Inventor
Masahiro Hashimoto
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to US10/808,754 priority Critical patent/US20040179746A1/en
Publication of US20040179746A1 publication Critical patent/US20040179746A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Definitions

  • the present invention relates to techniques for inserting additional information into discrete cosine transform (DCT) coefficient data, which is intermediate data in a digital image encoding system conforming to compression standards such as MPEG, JPEG, H.261, or the like.
  • DCT discrete cosine transform
  • an information inserting section 520 receives information to be inserted from an insertion information memory 530 and inserts the information into DCT coefficients of image data.
  • the information is inserted with reference to a variable-length code table 510 . More specifically, the variable-length code table 510 is searched for a combination of level and zero-run length (hereinafter simply referred to as “run length”), that allows the length of the code to be kept constant when the level is changed. Therefore, the information can be inserted by only changing the level of that combination.
  • FIG. 10 is an example of insertion of certain information into DCT coefficients of a block of image data.
  • a one-dimensional data stream obtained by scanning the DCT coefficients in zigzag order is represented as follows:
  • Insertion of the information in this example is performed by changing the level of the third coefficient from 5 to 6.
  • Such a conventional information inserting method has a problem of allowing only a limited amount of information to be inserted. This is because information is only inserted by finding a combination (run length, level) at which the code length does not vary though the level of a DCT coefficient is changed and then changing only the level of a found combination.
  • a system for inserting additional information in DCT coefficients by referring to a variable-length code table, wherein the DCT coefficients are generated in blocks from image data includes an information inserting section for inserting additional information into input DCT coefficients in a block by changing at least one DCT coefficient of the input DCT coefficients to produce changed DCT coefficients; and a total code length restoring section for correcting a level of one DCT coefficient selected from the changed DCT coefficients in the block to produce corrected DCT coefficients by referring to the variable-length code table, wherein the one DCT coefficient is selected so that a total code length of codes generated from the corrected DCT coefficients is equal to an original total code length of codes generated from the input DCT coefficients in the block.
  • the total code length restoring section preferably includes a difference calculator for calculating a total code length difference between the original total code length and a total code length of codes generated from the changed DCT coefficients in the block; a target code length calculator for calculating a target code length for a non-zero DCT coefficient sequentially selected from the changed DCT coefficients based on a difference between the total code length difference and a current code length of the non-zero DCT coefficient; and a level corrector for correcting a level of the non-zero DCT coefficient to produce corrected DCT coefficients when a corrected code length of a code generated from a combination of a zero-run length and a corrected level of the non-zero DCT coefficient substantially matches the target code length.
  • the level corrector may include a level candidate calculator for calculating a level candidate of the non-zero DCT coefficient based on a current level of the non-zero DCT coefficient; a determiner for determining whether a corrected code length of a code generated from a combination of a zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and a corrector for correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length.
  • the level candidate calculator may include a level range limiter for limiting a level range of the non-zero DCT coefficient based on the current level of the non-zero DCT coefficient; and a candidate generator for generating a level candidate within the level range.
  • the level corrector may include a level candidate calculator for calculating a level candidate of the non-zero DCT coefficient based on the target code length and a zero-run length of the non-zero DCT coefficient; a determiner for determining whether a corrected code length of a code generated from a combination of the zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and a corrector for correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length.
  • the level candidate calculator may include a candidate generator for generating a level candidate based on the target code length and a zero-run length of the non-zero DCT coefficient; a level range limiter for limiting a level range of the non-zero DCT coefficient, wherein the level range is limited by a maximum level and a minimum level; and a level selector for selecting one of the level candidate, the maximum level and the minimum level depending on whether the level candidate falls within the level range.
  • FIG. 1 is a schematic block diagram showing a configuration of a system for inserting information into DCT coefficient data according to the present invention
  • FIG. 2 illustrates a layered structure of an MPEG standard format
  • FIG. 3 illustrates a zigzag-scanning sequence
  • FIG. 4 is a schematic diagram showing a two-dimensional variable-length coding table
  • FIG. 5 is a diagram illustrating DCT coefficient sequences before and after insertion of information for explaining the present invention
  • FIG. 6 is a block diagram showing a total code length restoring section according to a first embodiment of the present invention.
  • FIG. 7 is a block diagram showing a total code length restoring section according to a second embodiment of the present invention.
  • FIG. 8 is a block diagram showing a total code length restoring section according to a third embodiment of the present invention.
  • FIG. 9 is a block diagram showing a configuration of a conventional system for inserting information into DCT coefficient data.
  • FIG. 10 is a diagram illustrating DCT coefficient sequences before and after insertion of information for explaining the conventional information inserting system.
  • an information inserting section 1 receives DCT coefficient data 9 of image data from outside and information 11 to be inserted from an insertion information memory 3 .
  • the information inserting section 1 inserts the information 11 into the DCT coefficient data 9 and outputs intermediate DCT coefficient data 13 to a total code length restoring section 5 .
  • the total code length restoring section 5 receives the DCT coefficient data 9 and the intermediate DCT coefficient data 13 from the information inserting section 1 and produces resultant DCT coefficient data 17 while referring to a variable-length code table 7 . More specifically, the total code length restoring section 5 rewrites some DCT coefficients of the intermediate DCT coefficient data 13 by referring to the variable-length code table 7 so that the sum total of code lengths obtained by coding the intermediate DCT coefficient data 13 is equal to that of code lengths obtained by coding the DCT coefficient data 9 . In this manner, the DCT coefficient data 17 is finally obtained.
  • image data that has been compressed according to an MPEG standard has such a structure that a sequence header code SHC is followed by a sequence of GOP (group of picture).
  • data of each frame/field of an image is written in a picture layer following a picture start code (PSC).
  • PSC picture start code
  • Each frame or field is encoded in one of three types of picture format, Intra-Picture (hereinafter referred to as “I picture”), Predictive Picture (hereinafter referred to as “P picture”) and Bidirectionally-Predictive-Picture (hereinafter referred to as “B picture”).
  • I picture Intra-Picture
  • P picture Predictive Picture
  • B picture Bidirectionally-Predictive-Picture
  • each picture is subdivided into blocks and each block is subjected to the discrete cosine transform (DCT). Then, the DCT coefficients are quantized with an appropriate quantizing coefficient and the quantized DCT coefficients are subjected to two-dimensional Huffman coding.
  • DCT discrete cosine transform
  • the field data of each frame is inside a macro block (MB) layer under a slice layer following a slice start code (SSC).
  • SSC slice start code
  • the field data of each frame is expressed by a total of 6 block layers, 4 block layers indicating brightness data Y and 2 block layers indicating color difference data Cb and Cr.
  • variable length encoding using two-dimensional Huffman codes.
  • a code “00100110s” is assigned to a combination of run length 0 and level 5 and a code “00100001s” is assigned to a combination of run length 0 and level 6.
  • “s” at the end of each code is a sign bit.
  • variable length table 7 is configured as follows. That is, using a set of combinations of run lengths and levels in an entire DCT domain made up of 64 DCT coefficients as an information source, the probabilities of occurrence of those combinations are obtained in advance through actual measurements or probability models. Then, each code word is assigned to each combination using the obtained probabilities of occurrence of combinations according to the Huffman coding method.
  • variable length code table 7 When a run length and a level are input, the variable length code table 7 outputs the code length of the corresponding code. When a run length and a code length are input, the variable length code table 7 outputs the corresponding level.
  • a necessary condition when inserting information is that the sum total of all code lengths when DCT coefficients are subjected to the Huffman coding does not change.
  • a one-dimensional sequence obtained by zigzag-scanning before insertion of the information is:
  • Information in this example is inserted by changing the 3rd coefficient from 5 to 6, the 13th coefficient from 2 to 3, the 14th coefficient from 3 to 0, the 16th coefficient from 0 to 2, and the 56th coefficient from 2 to 1.
  • the Huffman-coded code length does not change before and after inserting the information.
  • the change in the 3rd coefficient causes the combination (run length 0, level 5) to change to the combination (run length 0, level 6). Since the code lengths corresponding to these combinations are both 9 as shown in FIG. 4, the code length is not changed by the change of the 3rd coefficient.
  • the change in the 13th coefficient causes the combination (run length 0, level 2) to change to the combination (run length 0, level 3).
  • the code length of the code corresponding to the combination (run length 0, level 2) is 5 bits and the code length of the code corresponding to the combination (run length 0, level 3) is 6 bits (see FIG. 4). Therefore, the change of the 13th coefficient causes the code length to be increased by 1 bit.
  • the change in the 14th coefficient causes the combination (run length 0, level 3) to change to the combination (run length 2, level 2).
  • the code length of the code corresponding to the combination (run length 0, level 3) is 6 bits and the code length of the code corresponding to the combination (run length 2, level 2) is 8 bits (see FIG. 4). Therefore, the change of the 14th coefficient causes the code length to be increased by 2 bits.
  • the change in the 56th coefficient causes the combination (run length 2, level 2) to change to the combination (run length 2, level 1).
  • the code length of the code corresponding to the combination (run length 2, level 2) is 8 bits and the code length of the code corresponding to the combination (run length 2, level 1) is 5 bits. Therefore, the change of the 56th coefficient causes the code length to be decreased by 3 bits.
  • the total code length restoring means 5 includes a code length reference section 101 , an encoder 103 , a total code length calculation sections 105 and 107 , a total code length difference calculation section 109 , a code length target value calculation section 111 , a level range calculation section 113 , a counter 115 , a code length reference section 117 , a difference calculation section 119 , an optimal value detection section 121 , a memory 123 , and a DCT coefficient correction section 125 .
  • the code length reference section 101 receives the DCT coefficient data 9 before inserting information and outputs a code length signal 151 indicating the code length of an individual code produced from the DCT coefficient data 9 by referring to the variable length code table 7 .
  • the term “individual code” is defined as a code generated from a non-zero DCT coefficient and the run length preceding the non-zero DCT coefficient.
  • the encoder 103 receives the DCT coefficient data 13 after inserting the information from the information inserting section 1 .
  • the encoder 103 while referring to the variable length code table 7 , outputs a code length signal 153 indicating the code length of an individual code produced from the DCT coefficient data 13 , a run length signal 155 indicating the run length corresponding to the individual code, a level signal 157 indicating the level of the non-zero coefficient corresponding to the individual code, and a position signal 159 indicating the position of the non-zero coefficient.
  • the term “individual code” is also defined as a code generated from a non-zero DCT coefficient and the run length preceding the non-zero DCT coefficient.
  • the total code length calculation section 105 receives the code length signal 151 from the code length reference section 101 and calculates a total code length signal 161 indicating the total code length for each block of the DCT coefficient data 9 before inserting the information.
  • the total code length calculation section 107 receives the code length signal 153 from the encoder 103 and calculates a total code length signal 163 indicating the total code length for each block of the DCT coefficient data 13 after inserting the information.
  • the total code length difference calculation section 109 receives the respective total code length signals 161 and 163 from the total code length calculation sections 105 and 107 .
  • the total code length difference calculation section 109 calculates a total code length difference signal 165 indicating a difference between the per-block total code length before inserting the information and the per-block total code length after inserting the information. It is the difference that should be compensated for.
  • the code length target value calculation section 111 receives the code length signal 153 and the total code length difference signal 165 and calculates a code length target signal 167 indicating a code length target value by subtracting the difference indicated by the total code length difference signal 165 from the code length indicated by the code length signal 153 .
  • the total code length is restored when the code length of a code generated from the level of one non-zero coefficient after correction and the corresponding run length (not corrected) becomes equal to the code length target value.
  • Code length target values are calculated successively for all non-zero coefficients. However, not the levels of all non-zero coefficients but the level of one non-zero coefficient is corrected as a whole in the total code length restoring section 5 .
  • the level range calculation section 113 receives the level signal 157 and the position signal 159 from the encoder 103 and outputs a level range signal 169 indicating minimum and maximum values of a level variation range that does not produce any deterioration in the quality of an image.
  • the level signal 157 is necessary to provide references for the maximum and minimum values.
  • the position signal 159 is necessary to change the level variation range based on the space frequency. If the level variation range does not depend on space frequency, it is not necessary to input the position signal 159 to the level range calculation section 113 .
  • the counter 115 receives the level range signal 169 from the level range calculation section 113 and outputs a count signal 171 indicating a count value obtained by sequentially counting from the minimum value to the maximum value.
  • a count value represents a level candidate after correction.
  • the code length reference section 117 receives the run length signal 155 and the count signal 171 and, by referring to the variable length code table 7 , outputs a code length signal 173 indicating the code length corresponding to a combination of the run length indicated by the run length signal 155 and the level candidate indicated by the count signal 171 . That is, the code length signal 173 indicates the code length corresponding to each candidate of a level correction value.
  • the difference calculation section 119 receives the target value signal 167 and the code length signal 173 and outputs a difference signal 175 indicating a difference between a code length target value indicated by the target value signal 167 and a code length indicated by the code length signal 173 .
  • the total code length is restored by correcting the level of a non-zero coefficient in question to the level candidate that is indicated by the counter 115 when the difference indicated by the difference signal 175 is zero.
  • the optimal value detection section 121 receives the difference signal 175 from the difference calculation section 119 and outputs a write enable signal 177 , which becomes active when a minimum value of the absolute value of the difference indicated by the difference signal 175 is updated.
  • the optimal value detection section 121 can also be designed to make a write enable signal 177 active when the difference indicated by the difference signal 175 becomes zero and not to make it active even if the difference indicated by the difference signal 175 becomes zero thereafter.
  • the memory 123 receives the position signal 159 , the count signal 171 , and the write enable signal 177 , stores the position indicated by the position signal 159 and the level indicated by the count signal 171 when the write enable signal 177 becomes active. Then, the memory 123 outputs a level signal 179 indicating the level after correction of a non-zero coefficient to be corrected and a position signal 181 indicating the position of the non-zero coefficient to be corrected when the counting operation of the counter 115 for all non-zero coefficients in the block has been completed.
  • the DCT coefficient correction section 125 receives the DCT coefficient data 13 , the level signal 179 , and the position signal 181 .
  • the DCT coefficient correction section 125 corrects the level of the DCT coefficient located at the position indicated by the position signal 181 among the DCT coefficients 13 to the level indicated by the level signal 179 . Therefore, the DCT coefficient correction section 125 outputs restored DCT coefficient data 17 indicating all DCT coefficients about the block, that is, all DCT coefficients after the total code length has been restored.
  • the optimal value detection section 121 When the optimal value detection section 121 has not detected any zero from the difference signal 175 , then it is also possible to broaden the level variation range determined by the level range calculation section 113 and make a retry. It is also possible to output an error signal without making any retry. However, no retry or error signal is necessary depending on the application.
  • the total code length restoring means 5 includes a code length reference section 101 , an encoder 103 , a total code length calculation sections 105 and 107 , a total code length difference calculation section 109 , a code length target value calculation section 111 , a level range calculation section 113 , a level reference section 201 , a code length reference section 203 , a level comparator 205 , a selector 207 , a code length reference section 209 , a level reference section 211 , a selector 213 , and a code length comparator 215 , a memory 123 , and a DCT coefficient correction section 125 .
  • the code length reference section 101 receives the DCT coefficient data 9 before inserting information and outputs a code length signal 151 indicating the code length of an individual code produced from the DCT coefficient data 9 by referring to the variable length code table 7 .
  • the encoder 103 receives the DCT coefficient data 13 after inserting the information from the information inserting section 1 .
  • the encoder 103 while referring to the variable length code table 7 , outputs a code length signal 153 indicating the code length of an individual code produced from the DCT coefficient data 13 , a run length signal 155 indicating the run length corresponding to the individual code, a level signal 157 indicating the level of the non-zero coefficient corresponding to the individual code, and a position signal 159 indicating the position of the non-zero coefficient.
  • the total code length calculation section 105 receives the code length signal 151 from the code length reference section 101 and calculates a total code length signal 161 indicating the total code length for each block of the DCT coefficient data 9 before inserting the information.
  • the total code length calculation section 107 receives the code length signal 153 from the encoder 103 and calculates a total code length signal 163 indicating the total code length for each block of the DCT coefficient data 13 after inserting the information.
  • the total code length difference calculation section 109 receives the respective total code length signals 161 and 163 from the total code length calculation sections 105 and 107 .
  • the total code length difference calculation section 109 calculates a total code length difference signal 165 indicating a difference between the per-block total code length before inserting the information and the per-block total code length after inserting the information.
  • the code length target value calculation section 111 receives the code length signal 153 and the total code length difference signal 165 and calculates a code length target signal 167 indicating a code length target value by subtracting the difference indicated by the total code length difference signal 165 from the code length indicated by the code length signal 153 .
  • the level range calculation section 113 receives the level signal 157 and the position signal 159 from the encoder 103 and outputs a level range signal 169 indicating minimum and maximum values of a level variation range that does not produce any deterioration in the quality of an image.
  • the level reference section 201 receives the run length signal 155 and the code length target signal 167 and outputs a target level signal 251 indicating the target level corresponding to a combination of the run length indicated by the signal 155 and the code length target value indicated by the signal 167 . If there is a plurality of target level candidates, a minimum level, maximum level or intermediate level of those target level candidates is used as the target level. When the level of one non-zero coefficient becomes the target level, it means that the per-block total code length is restored.
  • the level comparator 205 receives the level range signal 169 and the target level signal 251 and compares the target level with a maximum value and minimum value of the level variation range.
  • the level comparator 205 outputs selection signals 253 and 255 that vary depending on the comparison result.
  • the fact that the target level is within the level variation range means that the image quality does not deteriorate even if a non-zero coefficient level is used as the target level.
  • the selector 207 receives the level range signal 169 and the selection signal 253 and outputs a signal 257 according to the selection signal 253 . If the target level is greater than a maximum value of the level variation range, the signal 257 is a maximum value signal indicating the maximum value of the level variation range. If the target level is smaller than a minimum value of the level variation range, the signal 257 is a minimum value signal indicating the minimum value of the level variation range. In other cases, the signal 257 is a signal indicating an indefinite state. The reason why the signal 257 is allowed to be in the indefinite state is that the selector 213 does not select the signal 261 in that case.
  • the code length reference section 209 receives the run length signal 155 and the signal 257 output from the selector 207 . With reference to the variable length code table 7 , the code length reference section 209 outputs a code length signal 259 indicating the code length of a code corresponding to a combination of the run length indicated by the signal 155 and the level indicated by the signal 257 .
  • the level reference section 211 receives the run length signal 155 and the code length signal 259 . With reference to the variable length code table 7 , the level length reference section 211 outputs a level signal 261 indicating the level corresponding to a combination of the run length indicated by the signal 155 and the code length indicated by the signal 259 with reference to the variable length code table 7 .
  • a minimum level, maximum value or intermediate value of those level candidates is used as the level.
  • the selection rule for these candidates is the same as in the case of the level reference section 201 so as to make the match between the level reference section 201 and level reference section 211 . If there is only a single level candidate corresponding to the code length indicated by the combination of the run length indicated by the signal 155 and the code length indicated by the signal 259 , then the level indicated by the signal 257 is the same as that indicated by the signal 261 .
  • the selector 207 , code length reference section 209 , level reference section 211 and selector 213 are provided so that the rule about the level of the level reference section 201 is also applied to the case where the level to be selected is a maximum value or minimum value output by the level range calculation section 113 .
  • the selector 213 receives the target level signal 251 , the level signal 261 , and the selection signal 255 and outputs a signal 263 according to the selection signal 255 .
  • the signal 263 is the same as the level signal 261 . In other cases, the signal 263 is the same as the target level signal 251 .
  • the signal 263 when the target level is greater than the maximum value of the level variation range, the signal 263 is a level signal indicating the level according to the maximum value of the level variation range.
  • the signal 263 is a level signal indicating the level according to the minimum value of the level variation range.
  • the signal 263 is a signal indicating the target level.
  • the code length reference section 203 receives the run length signal 155 and the signal 263 inputted from the selector 213 . With reference to the variable length code table 7 , the code length reference section 203 outputs a signal 265 indicating the code length of a code corresponding to a combination of the run length indicated by the signal 155 and the level indicated by the signal 263 .
  • the code length comparator 215 receives the code length target value signal 167 and the 265 and compares the code length target value indicated by the signal 167 with the code length indicated by the signal 265 .
  • the code length comparator 215 outputs a write enable signal 267 that becomes active when the code length target value and the code length match.
  • the code length comparator 215 can also compare the code length target value indicated by the signal 167 with the code length indicated by the signal 265 and outputs a write enable signal 267 that becomes active when the absolute value of the difference of these two is updated.
  • the memory 123 receives the position signal 159 , the signal 263 and the write enable signal 267 .
  • the memory 123 stores the position indicated by the position signal 159 and the level indicated by the signal 263 when the write enable signal 267 becomes active.
  • the memory 123 outputs a level signal 179 indicating the level after correction and a position signal 181 indicating the position of the corrected non-zero coefficient.
  • the DCT coefficient correction section 125 receives the DCT coefficient data 13 , the level signal 179 , and the position signal 181 .
  • the DCT coefficient correction section 125 corrects the level of the DCT coefficient located at the position indicated by the position signal 181 among the DCT coefficients 13 to the level indicated by the level signal 179 . Therefore, the DCT coefficient correction section 125 outputs restored DCT coefficient data 17 indicating all DCT coefficients about the block, that is, all DCT coefficients after the total code length has been restored.
  • the level output by the level reference section 201 is selected as the level of the non-zero coefficient to be corrected, the total code length is restored. Contrarily, when a maximum value or minimum value output by the level range calculation section 113 is selected as the level of the non-zero coefficient to be corrected, it is not guaranteed that the total code length will be restored.
  • the total code length restoring section 5 removes the selector 207 , code length reference section 209 , level reference section 211 , and selector 213 from the circuit configuration of the second embodiment as shown in FIG. 7. Therefore, the rule about the level output by the level reference section 201 is prevented from applying to the case where the level selected after correction is a maximum value or minimum value output by the level range calculation section 113 .
  • the total code length restoring means 5 includes a code length reference section 101 , an encoder 103 , a total code length calculation sections 105 and 107 , a total code length difference calculation section 109 , a code length target value calculation section 111 , a level range calculation section 113 , a level reference section 201 , a level comparator 301 , a code length reference section 203 , a selector 303 , a code length comparator 215 , a memory 123 , and a DCT coefficient correction section 125 .
  • the code length reference section 101 receives the DCT coefficient data 9 before inserting information and outputs a code length signal 151 indicating the code length of an individual code produced from the DCT coefficient data 9 by referring to the variable length code table 7 .
  • the encoder 103 receives the DCT coefficient data 13 after inserting the information from the information inserting section 1 .
  • the encoder 103 while referring to the variable length code table 7 , outputs a code length signal 153 indicating the code length of an individual code produced from the DCT coefficient data 13 , a run length signal 155 indicating the run length corresponding to the individual code, a level signal 157 indicating the level of the non-zero coefficient corresponding to the individual code, and a position signal 159 indicating the position of the non-zero coefficient.
  • the total code length calculation section 105 receives the code length signal 151 from the code length reference section 101 and calculates a total code length signal 161 indicating the total code length for each block of the DCT coefficient data 9 before inserting the information.
  • the total code length calculation section 107 receives the code length signal 153 from the encoder 103 and calculates a total code length signal 163 indicating the total code length for each block of the DCT coefficient data 13 after inserting the information.
  • the total code length difference calculation section 109 receives the respective total code length signals 161 and 163 from the total code length calculation sections 105 and 107 .
  • the total code length difference calculation section 109 calculates a total code length difference signal 165 indicating a difference between the per-block total code length before inserting the information and the per-block total code length after inserting the information.
  • the code length target value calculation section 111 receives the code length signal 153 and the total code length difference signal 165 and calculates a code length target signal 167 indicating a code length target value by subtracting the difference indicated by the total code length difference signal 165 from the code length indicated by the code length signal 153 .
  • the level range calculation section 113 receives the level signal 157 and the position signal 159 from the encoder 103 and outputs a level range signal 169 indicating minimum and maximum values of a level variation range that does not produce any deterioration in the quality of an image.
  • the level reference section 201 receives the run length signal 155 and the code length target signal 167 and outputs a target level signal 251 indicating the target level corresponding to a combination of the run length indicated by the signal 155 and the code length target value indicated by the signal 167 . If there is a plurality of target level candidates, a minimum level, maximum level or intermediate level of those target level candidates is used as the target level.
  • the level comparator 301 receives the level range signal 169 and the target level signal 251 and compares the target level with a maximum value and minimum value of the level variation range. The level comparator 301 outputs a selection signal 351 that changes according to the comparison result.
  • the selector 303 receives the level range signal 169 , the target level signal 251 , and the selection signal 351 and outputs a signal 353 according to the selection signal 351 . If the target level is greater than a maximum value of the level variation range, the signal 353 is a signal indicating the maximum value of the level variation range. If the target level is smaller than a minimum value of the level variation range, the signal 353 is a signal indicating the minimum value of the level variation range. In other cases, the signal 353 is a signal indicating the target level.
  • the code length reference section 203 receives the run length signal 155 and the signal 353 and outputs a code length signal 355 indicating the code length of a code corresponding to a combination of the run length indicated by the signal 155 and the level indicated by the signal 355 with reference to the variable length code table 7 .
  • the code length comparator 215 receives the code length target signal 167 and the code length signal 355 and compares the code length target value indicated by the signal 167 with the code length indicated by the signal 355 .
  • the code length comparator 215 outputs a write enable signal 357 that becomes active when the code length target value and the code length match.
  • the code length comparator 215 can also compare the code length target value indicated by the signal 167 with the code length indicated by the signal 265 and output a write enable signal 357 that becomes active when the absolute value of the difference between these two is updated.
  • the memory 123 receives the position signal 159 , the signal 353 , and the write enable signal 357 and stores the position indicated by the signal 159 and the level indicated by the signal 353 when the write enable signal 357 becomes active.
  • the memory 123 outputs a level signal 179 indicating the level after correction and a position signal 181 indicating the position of the corrected non-zero coefficient.
  • the DCT coefficient correction section 125 receives the DCT coefficient data 13 , the level signal 179 , and the position signal 181 .
  • the DCT coefficient correction section 125 corrects the level of the DCT coefficient located at the position indicated by the position signal 181 among the DCT coefficients 13 to the level indicated by the level signal 179 . Therefore, the DCT coefficient correction section 125 outputs restored DCT coefficient data 17 indicating all DCT coefficients about the block, that is, all DCT coefficients after the total code length has been restored.
  • the method according to the above described embodiments can also be implemented by a computer loading and executing from a recording medium such as CD-ROM, a program that instructs the computer to execute this method.
  • the system according to the above described embodiments can also be implemented by a computer loading and executing from a recording medium such as CD-ROM, a program to make the computer function as the above-described sections of the system.
  • a CPU of the computer temporarily transfers the program from the recording medium to the main memory under an operating system, and then loads the program from the main memory and executes the program.
  • the above described program can also be created from a text-format file in which interpreter format instructions are written and an interpreter that loads this file and converts it to executable instructions.

Abstract

A system for inserting an increased amount of information into DCT coefficients generated in blocks from image data is disclosed. Additional information is first inserted into input DCT coefficients in a block by changing at least one DCT coefficient of the input DCT coefficients to produce changed DCT coefficients. A level of one DCT coefficient selected from the changed DCT coefficients in the block is corrected to produce corrected DCT coefficients. The one DCT coefficient is selected so that a total code length of codes generated from the corrected DCT coefficients is equal to an original total code length of codes generated from the input DCT coefficients in the block.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention [0001]
  • The present invention relates to techniques for inserting additional information into discrete cosine transform (DCT) coefficient data, which is intermediate data in a digital image encoding system conforming to compression standards such as MPEG, JPEG, H.261, or the like. [0002]
  • 2. Description of the Prior Art [0003]
  • With wide-spreading digital satellite broadcasting, Internet transmission and DVD (Digital Video Disk), etc. in recent years, digital images are becoming easily accessible to users. Since the quality of digital images does not deteriorate when they are copied, securing their copyrights is an important issue. As means for implementing protection for copyrights, there has been proposed a technique of adding copyright information or the like into the DCT coefficient domain of digital image (see Japanese Patent Application Unexamined Publication No. 10-178642). [0004]
  • A typical example of such a conventional information inserting system will be described briefly with reference to FIG. 9. [0005]
  • Referring to FIG. 9, an [0006] information inserting section 520 receives information to be inserted from an insertion information memory 530 and inserts the information into DCT coefficients of image data. The information is inserted with reference to a variable-length code table 510. More specifically, the variable-length code table 510 is searched for a combination of level and zero-run length (hereinafter simply referred to as “run length”), that allows the length of the code to be kept constant when the level is changed. Therefore, the information can be inserted by only changing the level of that combination.
  • FIG. 10 is an example of insertion of certain information into DCT coefficients of a block of image data. In this example, a one-dimensional data stream obtained by scanning the DCT coefficients in zigzag order is represented as follows: [0007]
  • before the information is inserted, (15, 7, 5, 3, 0, 2, 0, 0, 0, 0, 0, 1, 2, 3, 0, . . . 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0); and [0008]
  • after the information has been inserted, (15, 7, 1, 3, 0, 2, 0, 0, 0, 0, 0, 1, 2, 3, 0, . . . 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0). [0009]
  • Insertion of the information in this example is performed by changing the level of the third coefficient from 5 to 6. The code length after Huffman coding does not change before and after insertion of the information. That is, the code length of a code corresponding to a combination of run length and level (run_length=0, level=5) is 9 and that corresponding to (run_length=0, level=6) is also 9. Therefore, a change from (run_length=0, level=5) to (run_length=0, level=6) of the third coefficient does not cause any change in code length, remaining 9 bits. [0010]
  • Such a conventional information inserting method, however, has a problem of allowing only a limited amount of information to be inserted. This is because information is only inserted by finding a combination (run length, level) at which the code length does not vary though the level of a DCT coefficient is changed and then changing only the level of a found combination. [0011]
  • SUMMARY OF THE INVENTION
  • It is an object of the present invention to provide a system and method allowing an increased amount of information to be inserted into DCT coefficient data. [0012]
  • According to the present invention, a system for inserting additional information in DCT coefficients by referring to a variable-length code table, wherein the DCT coefficients are generated in blocks from image data, includes an information inserting section for inserting additional information into input DCT coefficients in a block by changing at least one DCT coefficient of the input DCT coefficients to produce changed DCT coefficients; and a total code length restoring section for correcting a level of one DCT coefficient selected from the changed DCT coefficients in the block to produce corrected DCT coefficients by referring to the variable-length code table, wherein the one DCT coefficient is selected so that a total code length of codes generated from the corrected DCT coefficients is equal to an original total code length of codes generated from the input DCT coefficients in the block. [0013]
  • The total code length restoring section preferably includes a difference calculator for calculating a total code length difference between the original total code length and a total code length of codes generated from the changed DCT coefficients in the block; a target code length calculator for calculating a target code length for a non-zero DCT coefficient sequentially selected from the changed DCT coefficients based on a difference between the total code length difference and a current code length of the non-zero DCT coefficient; and a level corrector for correcting a level of the non-zero DCT coefficient to produce corrected DCT coefficients when a corrected code length of a code generated from a combination of a zero-run length and a corrected level of the non-zero DCT coefficient substantially matches the target code length. [0014]
  • The level corrector may include a level candidate calculator for calculating a level candidate of the non-zero DCT coefficient based on a current level of the non-zero DCT coefficient; a determiner for determining whether a corrected code length of a code generated from a combination of a zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and a corrector for correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length. The level candidate calculator may include a level range limiter for limiting a level range of the non-zero DCT coefficient based on the current level of the non-zero DCT coefficient; and a candidate generator for generating a level candidate within the level range. [0015]
  • The level corrector may include a level candidate calculator for calculating a level candidate of the non-zero DCT coefficient based on the target code length and a zero-run length of the non-zero DCT coefficient; a determiner for determining whether a corrected code length of a code generated from a combination of the zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and a corrector for correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length. The level candidate calculator may include a candidate generator for generating a level candidate based on the target code length and a zero-run length of the non-zero DCT coefficient; a level range limiter for limiting a level range of the non-zero DCT coefficient, wherein the level range is limited by a maximum level and a minimum level; and a level selector for selecting one of the level candidate, the maximum level and the minimum level depending on whether the level candidate falls within the level range.[0016]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a schematic block diagram showing a configuration of a system for inserting information into DCT coefficient data according to the present invention; [0017]
  • FIG. 2 illustrates a layered structure of an MPEG standard format; [0018]
  • FIG. 3 illustrates a zigzag-scanning sequence; [0019]
  • FIG. 4 is a schematic diagram showing a two-dimensional variable-length coding table; [0020]
  • FIG. 5 is a diagram illustrating DCT coefficient sequences before and after insertion of information for explaining the present invention; [0021]
  • FIG. 6 is a block diagram showing a total code length restoring section according to a first embodiment of the present invention; [0022]
  • FIG. 7 is a block diagram showing a total code length restoring section according to a second embodiment of the present invention; [0023]
  • FIG. 8 is a block diagram showing a total code length restoring section according to a third embodiment of the present invention; [0024]
  • FIG. 9 is a block diagram showing a configuration of a conventional system for inserting information into DCT coefficient data; and [0025]
  • FIG. 10 is a diagram illustrating DCT coefficient sequences before and after insertion of information for explaining the conventional information inserting system.[0026]
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • System Configuration [0027]
  • Referring to FIG. 1, an [0028] information inserting section 1 receives DCT coefficient data 9 of image data from outside and information 11 to be inserted from an insertion information memory 3. The information inserting section 1 inserts the information 11 into the DCT coefficient data 9 and outputs intermediate DCT coefficient data 13 to a total code length restoring section 5.
  • The total code [0029] length restoring section 5 receives the DCT coefficient data 9 and the intermediate DCT coefficient data 13 from the information inserting section 1 and produces resultant DCT coefficient data 17 while referring to a variable-length code table 7. More specifically, the total code length restoring section 5 rewrites some DCT coefficients of the intermediate DCT coefficient data 13 by referring to the variable-length code table 7 so that the sum total of code lengths obtained by coding the intermediate DCT coefficient data 13 is equal to that of code lengths obtained by coding the DCT coefficient data 9. In this manner, the DCT coefficient data 17 is finally obtained.
  • Hereafter, assuming the input image data is MPEG-encoded image data, embodiments of the present invention will be described in detail. [0030]
  • As shown in FIG. 2, image data that has been compressed according to an MPEG standard has such a structure that a sequence header code SHC is followed by a sequence of GOP (group of picture). Here, data of each frame/field of an image is written in a picture layer following a picture start code (PSC). Each frame or field is encoded in one of three types of picture format, Intra-Picture (hereinafter referred to as “I picture”), Predictive Picture (hereinafter referred to as “P picture”) and Bidirectionally-Predictive-Picture (hereinafter referred to as “B picture”). In the case of P picture and B picture, only a difference between a reference picture and the own picture is encoded as image data. Moreover, each picture is subdivided into blocks and each block is subjected to the discrete cosine transform (DCT). Then, the DCT coefficients are quantized with an appropriate quantizing coefficient and the quantized DCT coefficients are subjected to two-dimensional Huffman coding. [0031]
  • The field data of each frame is inside a macro block (MB) layer under a slice layer following a slice start code (SSC). In the case where a color difference format is 4:2:0, the field data of each frame is expressed by a total of 6 block layers, 4 block layers indicating brightness data Y and 2 block layers indicating color difference data Cb and Cr. [0032]
  • Variable-Length Encoding [0033]
  • The following is a further explanation of variable length encoding using two-dimensional Huffman codes. [0034]
  • As shown in FIG. 3, in the case of zigzag scanning, quantized DCT coefficients are scanned in a sequence of numbers and are converted to a one-dimensional sequence of 64 DCT coefficients. The position labeled with “1” in the figure expresses a DC component of the DCT domain. Horizontal space frequency increases from this position “1” rightward and vertical frequency increases from this position “1” downward. Thus, zigzag scanning virtually results in a one-dimensional sequence in order from low-frequency components to high-frequency components. For this one-dimensional sequence of 64 DCT coefficients, a non-zero coefficient amplitude (level) and a running length of preceding zero coefficients (run length) are sequentially combined except the DC component (the first component of the one-dimensional sequence). A variable length code is assigned to each of these combinations of run lengths and levels. [0035]
  • Referring to FIG. 4, for example, a code “00100110s” is assigned to a combination of [0036] run length 0 and level 5 and a code “00100001s” is assigned to a combination of run length 0 and level 6. Here, “s” at the end of each code is a sign bit.
  • The variable length table [0037] 7 is configured as follows. That is, using a set of combinations of run lengths and levels in an entire DCT domain made up of 64 DCT coefficients as an information source, the probabilities of occurrence of those combinations are obtained in advance through actual measurements or probability models. Then, each code word is assigned to each combination using the obtained probabilities of occurrence of combinations according to the Huffman coding method.
  • When a run length and a level are input, the variable length code table [0038] 7 outputs the code length of the corresponding code. When a run length and a code length are input, the variable length code table 7 outputs the corresponding level.
  • Information Inserting Method [0039]
  • Next, a method for inserting information into DCT coefficients will be explained. [0040]
  • A necessary condition when inserting information is that the sum total of all code lengths when DCT coefficients are subjected to the Huffman coding does not change. [0041]
  • As shown in FIG. 5, in this example, a one-dimensional sequence obtained by zigzag-scanning before insertion of the information is: [0042]
  • (15, 7, 5, 3, 0, 2, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, . . . 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0), and [0043]
  • after insertion of the information is: [0044]
  • (15, 7, 6, 3, 0, 2, 0, 0, 0, 0, 0, 1, 3, 0, 0, 2, . . . 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0). [0045]
  • Information in this example is inserted by changing the 3rd coefficient from 5 to 6, the 13th coefficient from 2 to 3, the 14th coefficient from 3 to 0, the 16th coefficient from 0 to 2, and the 56th coefficient from 2 to 1. The Huffman-coded code length does not change before and after inserting the information. [0046]
  • More specifically, the change in the 3rd coefficient causes the combination ([0047] run length 0, level 5) to change to the combination (run length 0, level 6). Since the code lengths corresponding to these combinations are both 9 as shown in FIG. 4, the code length is not changed by the change of the 3rd coefficient.
  • The change in the 13th coefficient causes the combination ([0048] run length 0, level 2) to change to the combination (run length 0, level 3). The code length of the code corresponding to the combination (run length 0, level 2) is 5 bits and the code length of the code corresponding to the combination (run length 0, level 3) is 6 bits (see FIG. 4). Therefore, the change of the 13th coefficient causes the code length to be increased by 1 bit.
  • The change in the 14th coefficient causes the combination ([0049] run length 0, level 3) to change to the combination (run length 2, level 2). The code length of the code corresponding to the combination (run length 0, level 3) is 6 bits and the code length of the code corresponding to the combination (run length 2, level 2) is 8 bits (see FIG. 4). Therefore, the change of the 14th coefficient causes the code length to be increased by 2 bits.
  • The change in the 56th coefficient causes the combination ([0050] run length 2, level 2) to change to the combination (run length 2, level 1). The code length of the code corresponding to the combination (run length 2, level 2) is 8 bits and the code length of the code corresponding to the combination (run length 2, level 1) is 5 bits. Therefore, the change of the 56th coefficient causes the code length to be decreased by 3 bits.
  • Therefore, the sum total of increments/decrements of the code length is: 0 bits+2 bits+1 bit−3 bits=0 bits, which means that the sum total of code lengths remains unchanged. This is a basic operation of the total code [0051] length restoring section 5 of FIG. 1.
  • Code Length Restoration [0052]
  • First to third embodiments of the total code [0053] length restoring section 7 will be explained in detail below.
  • First Embodiment [0054]
  • Referring to FIG. 6, the total code [0055] length restoring section 5 according to a first embodiment of the present invention will be described.
  • In FIG. 6, the total code length restoring means [0056] 5 includes a code length reference section 101, an encoder 103, a total code length calculation sections 105 and 107, a total code length difference calculation section 109, a code length target value calculation section 111, a level range calculation section 113, a counter 115, a code length reference section 117, a difference calculation section 119, an optimal value detection section 121, a memory 123, and a DCT coefficient correction section 125.
  • The code [0057] length reference section 101 receives the DCT coefficient data 9 before inserting information and outputs a code length signal 151 indicating the code length of an individual code produced from the DCT coefficient data 9 by referring to the variable length code table 7. The term “individual code” is defined as a code generated from a non-zero DCT coefficient and the run length preceding the non-zero DCT coefficient.
  • The [0058] encoder 103 receives the DCT coefficient data 13 after inserting the information from the information inserting section 1. The encoder 103, while referring to the variable length code table 7, outputs a code length signal 153 indicating the code length of an individual code produced from the DCT coefficient data 13, a run length signal 155 indicating the run length corresponding to the individual code, a level signal 157 indicating the level of the non-zero coefficient corresponding to the individual code, and a position signal 159 indicating the position of the non-zero coefficient. The term “individual code” is also defined as a code generated from a non-zero DCT coefficient and the run length preceding the non-zero DCT coefficient.
  • The total code [0059] length calculation section 105 receives the code length signal 151 from the code length reference section 101 and calculates a total code length signal 161 indicating the total code length for each block of the DCT coefficient data 9 before inserting the information.
  • The total code [0060] length calculation section 107 receives the code length signal 153 from the encoder 103 and calculates a total code length signal 163 indicating the total code length for each block of the DCT coefficient data 13 after inserting the information.
  • The total code length [0061] difference calculation section 109 receives the respective total code length signals 161 and 163 from the total code length calculation sections 105 and 107. The total code length difference calculation section 109 calculates a total code length difference signal 165 indicating a difference between the per-block total code length before inserting the information and the per-block total code length after inserting the information. It is the difference that should be compensated for.
  • The code length target [0062] value calculation section 111 receives the code length signal 153 and the total code length difference signal 165 and calculates a code length target signal 167 indicating a code length target value by subtracting the difference indicated by the total code length difference signal 165 from the code length indicated by the code length signal 153. The total code length is restored when the code length of a code generated from the level of one non-zero coefficient after correction and the corresponding run length (not corrected) becomes equal to the code length target value. Code length target values are calculated successively for all non-zero coefficients. However, not the levels of all non-zero coefficients but the level of one non-zero coefficient is corrected as a whole in the total code length restoring section 5.
  • The level [0063] range calculation section 113 receives the level signal 157 and the position signal 159 from the encoder 103 and outputs a level range signal 169 indicating minimum and maximum values of a level variation range that does not produce any deterioration in the quality of an image. The level signal 157 is necessary to provide references for the maximum and minimum values. The position signal 159 is necessary to change the level variation range based on the space frequency. If the level variation range does not depend on space frequency, it is not necessary to input the position signal 159 to the level range calculation section 113.
  • The [0064] counter 115 receives the level range signal 169 from the level range calculation section 113 and outputs a count signal 171 indicating a count value obtained by sequentially counting from the minimum value to the maximum value. A count value represents a level candidate after correction.
  • The code [0065] length reference section 117 receives the run length signal 155 and the count signal 171 and, by referring to the variable length code table 7, outputs a code length signal 173 indicating the code length corresponding to a combination of the run length indicated by the run length signal 155 and the level candidate indicated by the count signal 171. That is, the code length signal 173 indicates the code length corresponding to each candidate of a level correction value.
  • The [0066] difference calculation section 119 receives the target value signal 167 and the code length signal 173 and outputs a difference signal 175 indicating a difference between a code length target value indicated by the target value signal 167 and a code length indicated by the code length signal 173. The total code length is restored by correcting the level of a non-zero coefficient in question to the level candidate that is indicated by the counter 115 when the difference indicated by the difference signal 175 is zero.
  • The optimal [0067] value detection section 121 receives the difference signal 175 from the difference calculation section 119 and outputs a write enable signal 177, which becomes active when a minimum value of the absolute value of the difference indicated by the difference signal 175 is updated. The optimal value detection section 121 can also be designed to make a write enable signal 177 active when the difference indicated by the difference signal 175 becomes zero and not to make it active even if the difference indicated by the difference signal 175 becomes zero thereafter.
  • The [0068] memory 123 receives the position signal 159, the count signal 171, and the write enable signal 177, stores the position indicated by the position signal 159 and the level indicated by the count signal 171 when the write enable signal 177 becomes active. Then, the memory 123 outputs a level signal 179 indicating the level after correction of a non-zero coefficient to be corrected and a position signal 181 indicating the position of the non-zero coefficient to be corrected when the counting operation of the counter 115 for all non-zero coefficients in the block has been completed.
  • The DCT [0069] coefficient correction section 125 receives the DCT coefficient data 13, the level signal 179, and the position signal 181. The DCT coefficient correction section 125 corrects the level of the DCT coefficient located at the position indicated by the position signal 181 among the DCT coefficients 13 to the level indicated by the level signal 179. Therefore, the DCT coefficient correction section 125 outputs restored DCT coefficient data 17 indicating all DCT coefficients about the block, that is, all DCT coefficients after the total code length has been restored.
  • When the optimal [0070] value detection section 121 has not detected any zero from the difference signal 175, then it is also possible to broaden the level variation range determined by the level range calculation section 113 and make a retry. It is also possible to output an error signal without making any retry. However, no retry or error signal is necessary depending on the application.
  • Second Embodiment [0071]
  • Referring to FIG. 7, the total code [0072] length restoring section 5 according to a second embodiment of the present invention will be described.
  • In FIG. 7, the total code length restoring means [0073] 5 includes a code length reference section 101, an encoder 103, a total code length calculation sections 105 and 107, a total code length difference calculation section 109, a code length target value calculation section 111, a level range calculation section 113, a level reference section 201, a code length reference section 203, a level comparator 205, a selector 207, a code length reference section 209, a level reference section 211, a selector 213, and a code length comparator 215, a memory 123, and a DCT coefficient correction section 125.
  • The code [0074] length reference section 101 receives the DCT coefficient data 9 before inserting information and outputs a code length signal 151 indicating the code length of an individual code produced from the DCT coefficient data 9 by referring to the variable length code table 7.
  • The [0075] encoder 103 receives the DCT coefficient data 13 after inserting the information from the information inserting section 1. The encoder 103, while referring to the variable length code table 7, outputs a code length signal 153 indicating the code length of an individual code produced from the DCT coefficient data 13, a run length signal 155 indicating the run length corresponding to the individual code, a level signal 157 indicating the level of the non-zero coefficient corresponding to the individual code, and a position signal 159 indicating the position of the non-zero coefficient.
  • The total code [0076] length calculation section 105 receives the code length signal 151 from the code length reference section 101 and calculates a total code length signal 161 indicating the total code length for each block of the DCT coefficient data 9 before inserting the information.
  • The total code [0077] length calculation section 107 receives the code length signal 153 from the encoder 103 and calculates a total code length signal 163 indicating the total code length for each block of the DCT coefficient data 13 after inserting the information.
  • The total code length [0078] difference calculation section 109 receives the respective total code length signals 161 and 163 from the total code length calculation sections 105 and 107. The total code length difference calculation section 109 calculates a total code length difference signal 165 indicating a difference between the per-block total code length before inserting the information and the per-block total code length after inserting the information.
  • The code length target [0079] value calculation section 111 receives the code length signal 153 and the total code length difference signal 165 and calculates a code length target signal 167 indicating a code length target value by subtracting the difference indicated by the total code length difference signal 165 from the code length indicated by the code length signal 153.
  • The level [0080] range calculation section 113 receives the level signal 157 and the position signal 159 from the encoder 103 and outputs a level range signal 169 indicating minimum and maximum values of a level variation range that does not produce any deterioration in the quality of an image.
  • The [0081] level reference section 201 receives the run length signal 155 and the code length target signal 167 and outputs a target level signal 251 indicating the target level corresponding to a combination of the run length indicated by the signal 155 and the code length target value indicated by the signal 167. If there is a plurality of target level candidates, a minimum level, maximum level or intermediate level of those target level candidates is used as the target level. When the level of one non-zero coefficient becomes the target level, it means that the per-block total code length is restored.
  • The [0082] level comparator 205 receives the level range signal 169 and the target level signal 251 and compares the target level with a maximum value and minimum value of the level variation range. The level comparator 205 outputs selection signals 253 and 255 that vary depending on the comparison result. The fact that the target level is within the level variation range means that the image quality does not deteriorate even if a non-zero coefficient level is used as the target level.
  • The [0083] selector 207 receives the level range signal 169 and the selection signal 253 and outputs a signal 257 according to the selection signal 253. If the target level is greater than a maximum value of the level variation range, the signal 257 is a maximum value signal indicating the maximum value of the level variation range. If the target level is smaller than a minimum value of the level variation range, the signal 257 is a minimum value signal indicating the minimum value of the level variation range. In other cases, the signal 257 is a signal indicating an indefinite state. The reason why the signal 257 is allowed to be in the indefinite state is that the selector 213 does not select the signal 261 in that case.
  • The code [0084] length reference section 209 receives the run length signal 155 and the signal 257 output from the selector 207. With reference to the variable length code table 7, the code length reference section 209 outputs a code length signal 259 indicating the code length of a code corresponding to a combination of the run length indicated by the signal 155 and the level indicated by the signal 257.
  • The [0085] level reference section 211 receives the run length signal 155 and the code length signal 259. With reference to the variable length code table 7, the level length reference section 211 outputs a level signal 261 indicating the level corresponding to a combination of the run length indicated by the signal 155 and the code length indicated by the signal 259 with reference to the variable length code table 7. When there is a plurality of level candidates corresponding to the combination of the run length indicated by the signal 155 and code length indicated by the signal 259, a minimum level, maximum value or intermediate value of those level candidates is used as the level. The selection rule for these candidates is the same as in the case of the level reference section 201 so as to make the match between the level reference section 201 and level reference section 211. If there is only a single level candidate corresponding to the code length indicated by the combination of the run length indicated by the signal 155 and the code length indicated by the signal 259, then the level indicated by the signal 257 is the same as that indicated by the signal 261.
  • The [0086] selector 207, code length reference section 209, level reference section 211 and selector 213 are provided so that the rule about the level of the level reference section 201 is also applied to the case where the level to be selected is a maximum value or minimum value output by the level range calculation section 113.
  • The [0087] selector 213 receives the target level signal 251, the level signal 261, and the selection signal 255 and outputs a signal 263 according to the selection signal 255. When the target level is greater than a maximum value of the level variation range and when the target level is smaller than a minimum value of the level variation range, the signal 263 is the same as the level signal 261. In other cases, the signal 263 is the same as the target level signal 251.
  • More specifically, when the target level is greater than the maximum value of the level variation range, the [0088] signal 263 is a level signal indicating the level according to the maximum value of the level variation range. When the target level is smaller than the minimum value of the level variation range, the signal 263 is a level signal indicating the level according to the minimum value of the level variation range. When the target level is equal to or smaller than the maximum value of the level variation range and greater than the minimum value thereof, the signal 263 is a signal indicating the target level.
  • The code [0089] length reference section 203 receives the run length signal 155 and the signal 263 inputted from the selector 213. With reference to the variable length code table 7, the code length reference section 203 outputs a signal 265 indicating the code length of a code corresponding to a combination of the run length indicated by the signal 155 and the level indicated by the signal 263.
  • The [0090] code length comparator 215 receives the code length target value signal 167 and the 265 and compares the code length target value indicated by the signal 167 with the code length indicated by the signal 265. The code length comparator 215 outputs a write enable signal 267 that becomes active when the code length target value and the code length match. Alternatively, the code length comparator 215 can also compare the code length target value indicated by the signal 167 with the code length indicated by the signal 265 and outputs a write enable signal 267 that becomes active when the absolute value of the difference of these two is updated.
  • The [0091] memory 123 receives the position signal 159, the signal 263 and the write enable signal 267. The memory 123 stores the position indicated by the position signal 159 and the level indicated by the signal 263 when the write enable signal 267 becomes active. When the above operation for all non-zero coefficients in the block has been completed, the memory 123 outputs a level signal 179 indicating the level after correction and a position signal 181 indicating the position of the corrected non-zero coefficient.
  • The DCT [0092] coefficient correction section 125 receives the DCT coefficient data 13, the level signal 179, and the position signal 181. The DCT coefficient correction section 125 corrects the level of the DCT coefficient located at the position indicated by the position signal 181 among the DCT coefficients 13 to the level indicated by the level signal 179. Therefore, the DCT coefficient correction section 125 outputs restored DCT coefficient data 17 indicating all DCT coefficients about the block, that is, all DCT coefficients after the total code length has been restored.
  • When the level output by the [0093] level reference section 201 is selected as the level of the non-zero coefficient to be corrected, the total code length is restored. Contrarily, when a maximum value or minimum value output by the level range calculation section 113 is selected as the level of the non-zero coefficient to be corrected, it is not guaranteed that the total code length will be restored.
  • However, even if a maximum value or minimum value output by the level [0094] range calculation section 113 is selected as the level of the non-zero coefficient to be corrected, there is still a possibility that the total code length may be restored. Furthermore, there is a low probability that a maximum value or minimum value output by the level range calculation section 113 will be selected as the level after correction for all non-zero coefficients.
  • When no match has been found in the [0095] code length comparator 215, it is also possible to make a retry by broadening the level variation range determined by the level range calculation section 113. It is also possible to output an error signal without making any retry. However, some applications require neither retry nor error signal.
  • Third Embodiment [0096]
  • Referring to FIG. 8, the total code [0097] length restoring section 5 according to a third embodiment of the present invention will be described.
  • The total code [0098] length restoring section 5 according to the third embodiment removes the selector 207, code length reference section 209, level reference section 211, and selector 213 from the circuit configuration of the second embodiment as shown in FIG. 7. Therefore, the rule about the level output by the level reference section 201 is prevented from applying to the case where the level selected after correction is a maximum value or minimum value output by the level range calculation section 113.
  • In FIG. 8, the total code length restoring means [0099] 5 includes a code length reference section 101, an encoder 103, a total code length calculation sections 105 and 107, a total code length difference calculation section 109, a code length target value calculation section 111, a level range calculation section 113, a level reference section 201, a level comparator 301, a code length reference section 203, a selector 303, a code length comparator 215, a memory 123, and a DCT coefficient correction section 125.
  • The code [0100] length reference section 101 receives the DCT coefficient data 9 before inserting information and outputs a code length signal 151 indicating the code length of an individual code produced from the DCT coefficient data 9 by referring to the variable length code table 7.
  • The [0101] encoder 103 receives the DCT coefficient data 13 after inserting the information from the information inserting section 1. The encoder 103, while referring to the variable length code table 7, outputs a code length signal 153 indicating the code length of an individual code produced from the DCT coefficient data 13, a run length signal 155 indicating the run length corresponding to the individual code, a level signal 157 indicating the level of the non-zero coefficient corresponding to the individual code, and a position signal 159 indicating the position of the non-zero coefficient.
  • The total code [0102] length calculation section 105 receives the code length signal 151 from the code length reference section 101 and calculates a total code length signal 161 indicating the total code length for each block of the DCT coefficient data 9 before inserting the information.
  • The total code [0103] length calculation section 107 receives the code length signal 153 from the encoder 103 and calculates a total code length signal 163 indicating the total code length for each block of the DCT coefficient data 13 after inserting the information.
  • The total code length [0104] difference calculation section 109 receives the respective total code length signals 161 and 163 from the total code length calculation sections 105 and 107. The total code length difference calculation section 109 calculates a total code length difference signal 165 indicating a difference between the per-block total code length before inserting the information and the per-block total code length after inserting the information.
  • The code length target [0105] value calculation section 111 receives the code length signal 153 and the total code length difference signal 165 and calculates a code length target signal 167 indicating a code length target value by subtracting the difference indicated by the total code length difference signal 165 from the code length indicated by the code length signal 153.
  • The level [0106] range calculation section 113 receives the level signal 157 and the position signal 159 from the encoder 103 and outputs a level range signal 169 indicating minimum and maximum values of a level variation range that does not produce any deterioration in the quality of an image.
  • The [0107] level reference section 201 receives the run length signal 155 and the code length target signal 167 and outputs a target level signal 251 indicating the target level corresponding to a combination of the run length indicated by the signal 155 and the code length target value indicated by the signal 167. If there is a plurality of target level candidates, a minimum level, maximum level or intermediate level of those target level candidates is used as the target level.
  • The [0108] level comparator 301 receives the level range signal 169 and the target level signal 251 and compares the target level with a maximum value and minimum value of the level variation range. The level comparator 301 outputs a selection signal 351 that changes according to the comparison result.
  • The [0109] selector 303 receives the level range signal 169, the target level signal 251, and the selection signal 351 and outputs a signal 353 according to the selection signal 351. If the target level is greater than a maximum value of the level variation range, the signal 353 is a signal indicating the maximum value of the level variation range. If the target level is smaller than a minimum value of the level variation range, the signal 353 is a signal indicating the minimum value of the level variation range. In other cases, the signal 353 is a signal indicating the target level.
  • The code [0110] length reference section 203 receives the run length signal 155 and the signal 353 and outputs a code length signal 355 indicating the code length of a code corresponding to a combination of the run length indicated by the signal 155 and the level indicated by the signal 355 with reference to the variable length code table 7.
  • The [0111] code length comparator 215 receives the code length target signal 167 and the code length signal 355 and compares the code length target value indicated by the signal 167 with the code length indicated by the signal 355. The code length comparator 215 outputs a write enable signal 357 that becomes active when the code length target value and the code length match. Alternatively, the code length comparator 215 can also compare the code length target value indicated by the signal 167 with the code length indicated by the signal 265 and output a write enable signal 357 that becomes active when the absolute value of the difference between these two is updated.
  • The [0112] memory 123 receives the position signal 159, the signal 353, and the write enable signal 357 and stores the position indicated by the signal 159 and the level indicated by the signal 353 when the write enable signal 357 becomes active. When the above operation for all non-zero coefficients in the block has been completed, the memory 123 outputs a level signal 179 indicating the level after correction and a position signal 181 indicating the position of the corrected non-zero coefficient.
  • The DCT [0113] coefficient correction section 125 receives the DCT coefficient data 13, the level signal 179, and the position signal 181. The DCT coefficient correction section 125 corrects the level of the DCT coefficient located at the position indicated by the position signal 181 among the DCT coefficients 13 to the level indicated by the level signal 179. Therefore, the DCT coefficient correction section 125 outputs restored DCT coefficient data 17 indicating all DCT coefficients about the block, that is, all DCT coefficients after the total code length has been restored.
  • When no match is found by the [0114] code length comparator 215, it is also possible to make a retry by broadening the level variation range determined by the level range calculation section 113. It is also possible to output an error signal without making any retry. However, some applications require neither retry nor error signal.
  • The above-described embodiments have been explained taking the MPEG standard coding system as an example, but of course the present invention is applicable to other image coding systems using DCT, for example, JPEG standard and H.261 as well. [0115]
  • The method according to the above described embodiments can also be implemented by a computer loading and executing from a recording medium such as CD-ROM, a program that instructs the computer to execute this method. [0116]
  • The system according to the above described embodiments can also be implemented by a computer loading and executing from a recording medium such as CD-ROM, a program to make the computer function as the above-described sections of the system. [0117]
  • In this case, normally, a CPU of the computer temporarily transfers the program from the recording medium to the main memory under an operating system, and then loads the program from the main memory and executes the program. [0118]
  • The above described program can also be created from a text-format file in which interpreter format instructions are written and an interpreter that loads this file and converts it to executable instructions. [0119]
  • As described above, according to the present invention, it is possible to eliminate variations in code length that occur when information is inserted. Therefore, a great deal of information is allowed to be inserted into digital image data compression-encoded by the MPEG standard or the like. [0120]

Claims (13)

1. A system for inserting additional information in DCT (discrete cosine transform) coefficients by referring to a variable-length code table, wherein the DCT coefficients are generated in blocks from image data, the system comprising:
an information inserting section for inserting additional information into input DCT coefficients in a block by changing at least one DCT coefficient of the input DCT coefficients to produce changed DCT coefficients; and
a total code length restoring section for correcting a level of one DCT coefficient selected from the changed DCT coefficients in the block to produce corrected DCT coefficients by referring to the variable-length code table, wherein the one DCT coefficient is selected so that a total code length of codes generated from the corrected DCT coefficients is equal to an original total code length of codes generated from the input DCT coefficients in the block.
2. The system according to claim 1, wherein the total code length restoring section comprises:
a difference calculator for calculating a total code length difference between the original total code length and a total code length of codes generated from the changed DCT coefficients in the block;
a target code length calculator for calculating a target code length for a non-zero DCT coefficient sequentially selected from the changed DCT coefficients based on a difference between the total code length difference and a current code length of the non-zero DCT coefficient; and
a level corrector for correcting a level of the non-zero DCT coefficient to produce corrected DCT coefficients when a corrected code length of a code generated from a combination of a zero-run length and a corrected level of the non-zero DCT coefficient substantially matches the target code length.
3. The system according to claim 2, wherein the level corrector comprises:
a level candidate calculator for calculating a level candidate of the non-zero DCT coefficient based on a current level of the non-zero DCT coefficient;
a determiner for determining whether a corrected code length of a code generated from a combination of a zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and
a corrector for correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length.
4. The system according to claim 3, wherein the level candidate calculator comprises:
a level range limiter for limiting a level range of the non-zero DCT coefficient based on the current level of the non-zero DCT coefficient; and
a candidate generator for generating a level candidate within the level range.
5. The system according to claim 2, wherein the level corrector comprises:
a level candidate calculator for calculating a level candidate of the non-zero DCT coefficient based on the target code length and a zero-run length of the non-zero DCT coefficient;
a determiner for determining whether a corrected code length of a code generated from a combination of the zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and
a corrector for correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length.
6. The system according to claim 5, wherein the level candidate calculator comprises:
a candidate generator for generating a level candidate based on the target code length and a zero-run length of the non-zero DCT coefficient;
a level range limiter for limiting a level range of the non-zero DCT coefficient, wherein the level range is limited by a maximum level and a minimum level; and
a level selector for selecting one of the level candidate, the maximum level and the minimum level depending on whether the level candidate falls within the level range.
7. A method for inserting additional information in DCT (discrete cosine transform) coefficients by referring to a variable-length code table, wherein the DCT coefficients are generated in blocks from image data, the method comprising the steps of:
a) inserting additional information into input DCT coefficients in a block by changing at least one DCT coefficient of the input DCT coefficients to produce changed DCT coefficients; and
b) correcting a level of one DCT coefficient selected from the changed DCT coefficients in the block to produce corrected DCT coefficients by referring to the variable-length code table, wherein the one DCT coefficient is selected so that a total code length of codes generated from the corrected DCT coefficients is equal to an original total code length of codes generated from the input DCT coefficients in the block.
8. The method according to claim 7, wherein the step (b) comprises the steps of:
b.1) calculating a total code length difference between the original total code length and a total code length of codes generated from the changed DCT coefficients in the block;
b.2) calculating a target code length for a non-zero DCT coefficient sequentially selected from the changed DCT coefficients based on a difference between the total code length difference and a current code length of the non-zero DCT coefficient; and
b.3) correcting a level of the non-zero DCT coefficient to produce corrected DCT coefficients when a corrected code length of a code generated from a combination of a zero-run length and a corrected level of the non-zero DCT coefficient substantially matches the target code length.
9. The method according to claim 8, wherein the step (b.3) comprises the steps of:
b.3.1) calculating a level candidate of the non-zero DCT coefficient based on a current level of the non-zero DCT coefficient;
b.3.2) determining whether a corrected code length of a code generated from a combination of a zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and
b.3.3) correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length.
10. The method according to claim 9, wherein the step (b.3.1) comprises:
a level range limiter for limiting a level range of the non-zero DCT coefficient based on the current level of the non-zero DCT coefficient; and
a candidate generator for generating a level candidate within the level range.
11. The method according to claim 8, wherein the step (b.3) comprises the steps of:
b.3.1) calculating a level candidate of the non-zero DCT coefficient based on the target code length and a zero-run length of the non-zero DCT coefficient;
b.3.2) determining whether a corrected code length of a code generated from a combination of the zero-run length and the level candidate of the non-zero DCT coefficient substantially matches the target code length; and
b.3.3) correcting a level of the non-zero DCT coefficient to the level candidate when the corrected code length matches the target code length.
12. The method according to claim 11, wherein the step (b.3.1) comprises the steps of:
generating a level candidate based on the target code length and a zero-run length of the non-zero DCT coefficient;
limiting a level range of the non-zero DCT coefficient, wherein the level range is limited by a maximum level and a minimum level; and
selecting one of the level candidate, the maximum level and the minimum level depending on whether the level candidate falls within the level range.
13. A recording medium storing a computer-readable program for inserting additional information in DCT (discrete cosine transform) coefficients by referring to a variable-length code table, wherein the DCT coefficients are generated in blocks from image data, the program comprising the steps of:
a) inserting additional information into input DCT coefficients in a block by changing at least one DCT coefficient of the input DCT coefficients to produce changed DCT coefficients; and
b) correcting a level of one DCT coefficient selected from the changed DCT coefficients in the block to produce corrected DCT coefficients by referring to the variable-length code table, wherein the one DCT coefficient is selected so that a total code length of codes generated from the corrected DCT coefficients is equal to an original total code length of codes generated from the input DCT coefficients in the block.
US10/808,754 1999-06-24 2004-03-25 System and method for inserting information in DCT coefficient domain Abandoned US20040179746A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/808,754 US20040179746A1 (en) 1999-06-24 2004-03-25 System and method for inserting information in DCT coefficient domain

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP17853899A JP3407869B2 (en) 1999-06-24 1999-06-24 Method and method for inserting information into DCT coefficients
JP178538/1999 1999-06-24
US09/602,229 US6775416B1 (en) 1999-06-24 2000-06-23 System and method for inserting information in DCT coefficient domain
US10/808,754 US20040179746A1 (en) 1999-06-24 2004-03-25 System and method for inserting information in DCT coefficient domain

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/602,229 Continuation US6775416B1 (en) 1999-06-24 2000-06-23 System and method for inserting information in DCT coefficient domain

Publications (1)

Publication Number Publication Date
US20040179746A1 true US20040179746A1 (en) 2004-09-16

Family

ID=16050239

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/602,229 Expired - Fee Related US6775416B1 (en) 1999-06-24 2000-06-23 System and method for inserting information in DCT coefficient domain
US10/808,754 Abandoned US20040179746A1 (en) 1999-06-24 2004-03-25 System and method for inserting information in DCT coefficient domain

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/602,229 Expired - Fee Related US6775416B1 (en) 1999-06-24 2000-06-23 System and method for inserting information in DCT coefficient domain

Country Status (5)

Country Link
US (2) US6775416B1 (en)
EP (1) EP1067799A3 (en)
JP (1) JP3407869B2 (en)
KR (1) KR100347395B1 (en)
CA (1) CA2312138C (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078301B2 (en) 2006-10-11 2011-12-13 The Nielsen Company (Us), Llc Methods and apparatus for embedding codes in compressed audio data streams
US8085975B2 (en) 2003-06-13 2011-12-27 The Nielsen Company (Us), Llc Methods and apparatus for embedding watermarks
US8412363B2 (en) 2004-07-02 2013-04-02 The Nielson Company (Us), Llc Methods and apparatus for mixing compressed digital bit streams

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3614784B2 (en) 2001-02-01 2005-01-26 松下電器産業株式会社 Information embedding device, information embedding method, information extracting device, and information extracting method
US8861922B2 (en) * 2003-09-29 2014-10-14 Alcatel Lucent Watermarking scheme for digital video

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809139A (en) * 1996-09-13 1998-09-15 Vivo Software, Inc. Watermarking method and apparatus for compressed digital video
US6037984A (en) * 1997-12-24 2000-03-14 Sarnoff Corporation Method and apparatus for embedding a watermark into a digital image or image sequence
US6192138B1 (en) * 1997-05-08 2001-02-20 Kabushiki Kaisha Toshiba Apparatus and method for embedding/unembedding supplemental information
US6208745B1 (en) * 1997-12-30 2001-03-27 Sarnoff Corporation Method and apparatus for imbedding a watermark into a bitstream representation of a digital image sequence
US6373960B1 (en) * 1998-01-06 2002-04-16 Pixel Tools Corporation Embedding watermarks into compressed video data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0766468B1 (en) 1995-09-28 2006-05-03 Nec Corporation Method and system for inserting a spread spectrum watermark into multimedia data
US6229924B1 (en) * 1996-05-16 2001-05-08 Digimarc Corporation Method and apparatus for watermarking video images
JP3601566B2 (en) 1996-12-18 2004-12-15 日本電信電話株式会社 Information multiplexing method and copyright protection system
JPH10276321A (en) 1997-01-28 1998-10-13 Mitsubishi Electric Corp Electronic transparency making device
JPH118753A (en) 1997-06-18 1999-01-12 Nec Corp Electronic watermark insertion device
KR100503159B1 (en) 1997-07-02 2005-07-25 코와 가부시키가이샤 Electronic watermarking method and method of extracting watermark information
JP3696723B2 (en) * 1997-09-02 2005-09-21 ソニー株式会社 Image data processing apparatus and method
JP4064506B2 (en) 1997-09-17 2008-03-19 パイオニア株式会社 Digital watermark superimposing method, detecting method and apparatus
JP3214554B2 (en) 1998-05-06 2001-10-02 日本電気株式会社 Digital watermark system, digital watermark insertion device, and electronic image demodulation device
US6332194B1 (en) * 1998-06-05 2001-12-18 Signafy, Inc. Method for data preparation and watermark insertion
WO2000013414A1 (en) * 1998-08-27 2000-03-09 International Business Machines Corporation System for embedding additional information in video data, and embedding method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809139A (en) * 1996-09-13 1998-09-15 Vivo Software, Inc. Watermarking method and apparatus for compressed digital video
US6192138B1 (en) * 1997-05-08 2001-02-20 Kabushiki Kaisha Toshiba Apparatus and method for embedding/unembedding supplemental information
US6037984A (en) * 1997-12-24 2000-03-14 Sarnoff Corporation Method and apparatus for embedding a watermark into a digital image or image sequence
US6208745B1 (en) * 1997-12-30 2001-03-27 Sarnoff Corporation Method and apparatus for imbedding a watermark into a bitstream representation of a digital image sequence
US6373960B1 (en) * 1998-01-06 2002-04-16 Pixel Tools Corporation Embedding watermarks into compressed video data

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8085975B2 (en) 2003-06-13 2011-12-27 The Nielsen Company (Us), Llc Methods and apparatus for embedding watermarks
US8351645B2 (en) 2003-06-13 2013-01-08 The Nielsen Company (Us), Llc Methods and apparatus for embedding watermarks
US8787615B2 (en) 2003-06-13 2014-07-22 The Nielsen Company (Us), Llc Methods and apparatus for embedding watermarks
US9202256B2 (en) 2003-06-13 2015-12-01 The Nielsen Company (Us), Llc Methods and apparatus for embedding watermarks
US8412363B2 (en) 2004-07-02 2013-04-02 The Nielson Company (Us), Llc Methods and apparatus for mixing compressed digital bit streams
US9191581B2 (en) 2004-07-02 2015-11-17 The Nielsen Company (Us), Llc Methods and apparatus for mixing compressed digital bit streams
US8078301B2 (en) 2006-10-11 2011-12-13 The Nielsen Company (Us), Llc Methods and apparatus for embedding codes in compressed audio data streams
US8972033B2 (en) 2006-10-11 2015-03-03 The Nielsen Company (Us), Llc Methods and apparatus for embedding codes in compressed audio data streams
US9286903B2 (en) 2006-10-11 2016-03-15 The Nielsen Company (Us), Llc Methods and apparatus for embedding codes in compressed audio data streams

Also Published As

Publication number Publication date
CA2312138C (en) 2007-08-07
JP2001007705A (en) 2001-01-12
JP3407869B2 (en) 2003-05-19
EP1067799A3 (en) 2004-08-18
US6775416B1 (en) 2004-08-10
CA2312138A1 (en) 2000-12-24
KR20010007522A (en) 2001-01-26
KR100347395B1 (en) 2002-08-03
EP1067799A2 (en) 2001-01-10

Similar Documents

Publication Publication Date Title
KR101695681B1 (en) Context-based adaptive binary arithmetic coding (cabac) video stream compliance
US20070280353A1 (en) Picture coding device
JP3446237B2 (en) Variable length code table generation method and apparatus
US20050152450A1 (en) Coding apparatus and method, program, and recording medium
US5389973A (en) Quantization control circuit
JP2010193398A (en) Image encoding device, and image encoding method
JP4741642B2 (en) Method and apparatus for correcting predicted value using color base, and image compression / decompression method and apparatus using the same
JP5155210B2 (en) Image comparison apparatus and method, image search apparatus, program, and recording medium
JP2001204022A (en) Data compressor and data compression method
US6775416B1 (en) System and method for inserting information in DCT coefficient domain
JP4919213B2 (en) Digital watermark insertion method and detection method
US7646926B2 (en) Image encoding apparatus
JP4731972B2 (en) Image encoding method and image encoding apparatus
JP4139657B2 (en) Video signal encoding apparatus and decoding apparatus
JP2004007766A (en) Moving image coding device and moving image coding method
JP3341528B2 (en) Quantization device and quantization method
US6266448B1 (en) Method of and apparatus for compressing and encoding digitized moving picture signals
KR100188923B1 (en) Method for quantization
JP2005522118A (en) Image coding using quantizer scale selection.
JPH05244578A (en) Decoder for block conversion code
JPH10136362A (en) Data compressor and digital video signal processor
JP2004007767A (en) Moving image encoding device and moving image encoding method
JP2001251622A (en) Image coder and image decoder
JPH10126789A (en) Encoder
JPH07264593A (en) Image encoding device

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION