Title of Invention

TECHNIQUE FOR BIT-ACCURATE FILM GRAIN SIMULATION

Abstract The simulation of film grain in an image makes use of parameters contained in a Supplemental Enhancement Information (SEI) message that accompanies the image upon transmission. The SEI message specifies film grain simulation parameters such as the film simulation model, the blending mode, and color space.
Full Text CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims piiority under 35 U.S.C. 119(e) to U.S. Provisional Patent Application Serial No. 60/511,026, filed on October 14,2003, the teachings of which are incorporated herein.
TECHNICAL FIELD
This invention relates to a technique for simulating film grain in an image. BACKGROUND ART
Motion picture films comprise silver-halide crystals dispersed in an emulsion, which is coated in thin layers on a film base. The exposure and development of these crystals form the photographic image consisting of discrete tiny particles of silver. In color negatives, tiny blobs of dye occur on the sites where the silver crystals form following chemical removal of the silver during development of the film stock. These small specks of dye commonly bear the label 'grain' in color film. Gram appears randomly distributed on the resulting image because of the random formation of silver crystals on the original emulsion. Within a uniformly exposed area, some crystals develop after exposure while others do not.
Grain varies in size and shape. The faster the film, the larger the clumps of silver formed and blobs of dye generated, and the more they tend to group together in random patterns. The term "granularity" typically refers to the grain pattern. The naked eye cannot distinguish individual grains, which vary from 0.0002 mm to about 0.002 mm. Instead, the eye resolves groups of grains, referred to as blobs. A viewer identifies these groups of blobs as film grain. As the image resolution becomes larger, the perception of the film grain becomes higher. Film grain becomes clearly noticeable on cinema and High Definition (HD) images, whereas film grain progressively loses importance in Standard Definition (SD) and becomes imperceptible in smaller formats.
Motion picture film typically contains image-dependent noise resulting either from the physical process of exposure and development of the photographic film or from the
subsequent editing of the images. Photographic film possesses a characteristic quasi-random pattern, or texture, resulting from physical granularity of the photographic emulsion. Alternatively, simulation of similar pattern can occur in computed-generated images hi order to blend them with photographic film. In both cases, this image-dependent noise bears the designation of "film grain." Quite often, moderate grain texture presents a desirable feature in motion pictures. In some instances, the film grain provides visual cues that facilitate the correct perception of two-dimensional pictures. Film grade often varies within a single film to provide various clues as to time reference, point of view, etc. Many other technical and artistic demands exist for controlling grain texture in the motion picture industry. Therefore, preserving the grainy appearance of images throughout image processing and delivery chain has become a requirement in the motion picture industry.
Several commercially available products have the capability of simulating film grain, often for blending a computer-generated object into natural scene. Cineon® from Eastman Kodak Co, Rochester New York, one of the first digital film applications to implement grain simulation, produces very realistic results for many grain types. However the Cineon® application does not yield good performance for many high speed films because of the noticeable diagonal stripes the application produces for high grain size settings. Further, the Cineon® application fails to simulate grain with adequate fidelity when images become subject to prior processing, for example, such as when the images are copied or digitally processed.
Another commercial product that simulates film grain is Grain SurgeryTMfrom Visual Infinity Inc., which is used as a plug-in of Adobe ® After Effects ®. The Grain Surgery™ product appears to generate synthetic grain by filtering a set of random numbers. This approach suffers from disadvantage of a high computational complexity.
Thus, a need exists for an efficient film grain simulation technique, which reduces the need for memory bandwidth, and computational effort, thus permitting film grain simulation in cost-sensitive high volume devices, such as set top boxes.
BRIEF SUMMARY OF THE INVENTION
Briefly, in accordance with a preferred embodiment of the present principles, there is provided a method for simulating film grain in an image block of M x N pixels, where N and M are integers greater than zero. The method commences by first computing the average of the pixel values within the block of M x N pixels. A film gram block of M x N pixels is selected from among a pool of previously established blocks containing film grain as a function of the average value of the image block and a random number. Each pixel in the selected film grain block is blended with a corresponding pixel in the image block.
BRIEF DESCRIPTION OF THE DRAWINGS
FIGURE 1 depicts a block schematic drawing of an apparatus for generating pre-established film grain blocks for use in subsequent film grain simulation; and
FIGURE 2 depicts a block schematic drawing of an apparatus in accordance with the present principles for simulating film grain on a pixel-by-pixel basis using the pre-established film grain blocks generated by the apparatus of FIG. 1.
DETAILED DESCRIPTION Introduction
The method of the present principles simulates film grain in accordance with film grain information transmitted with an image to which simulated grain is blended. In practice, the transmitted image typically undergoes compression (encoding) prior to transmission via one of a variety of well-known compression schemes, such as the H.264 compression scheme. With the transmitted image compressed using the H.264 compression scheme, transmission of the film grain information typically occurs via a Supplemental Enhancement Information (SEI) message. Pursuant to contributions recently adopted by the standards body responsible for promulgating the H.264 standard, the SEI message can now include various parameters that specify different film grain attributes. Constraints on the film grain SEI message parameters
The method of the present principles imposes some constraints with regard to the number of parameters and their range of possible values allowed by the H.264 recommendation. TABLE 1.provides a list of such parameters, including a description of their semantics and the constraints imposed by the present principles.
(Table Removed)
In addition to the previous constraints, the present principles imposes that film grain SEI messages precede I pictures, and only one film grain SEI message can precede a particular I picture. (The presence in the bit stream of slice_type equal to 7 or nal_ref_idc equal to 5, indicates an I picture.)
All the other parameters of the film grain SEI message have no constraint with respect to the standard specification.
Bit-accurate implementation of film grain simulation
Film grain simulation in accordance with the present principles occurs in a two-step process. First, generation of a pool of film grain blocks occurs during initialization, as described in greater detail with respect to FIG. 1. Thereafter, selected film grain portions are added to each luminance pixel of each decoded picture as described with respect to FIG. 2.
FIGURE 1 depicts an apparatus 10 in accordance with an illustrated embodiment of the present principles for generating a pool of film grain blocks for use in film grain simulation. The apparatus 10 typically generates a pool of 128 film grain blocks for each of as many as 8 different luminance intensity intervals. The SEI message field num_intensity_intervals_minusl[O] indicates one less man the number of the luminance intensity intervals.
The apparatus 10 accomplishes film grain noise initialization using a specified uniform pseudo-random number polynomial generator 12 and using a specified list of 2048 8-bit Gaussian distributed random numbers stored in a look-up table 14 The look-up table 14 stores random numbers in 2's complement form in the range [-63,63]. The list of Gaussian random numbers appears in the Appendix.
According to the bit-accurate specification of the present principles, generation of the film grain blocks begins with the lowest luminance intensity interval. The uniform random number generator 12 generates an index for the Gaussian random number list stored in the look-up table 14 using a primitive polynomial modulo 2 operator, x18 + x5 + x2 + x1 + 1. For ease of understanding, the term x(i, s) will indicate the ith symbol of the sequence x, beginning with an initial seed s. The random number seed becomes reset to 1 upon the receipt of each film grain SEI message.
To form an individual 8x8 film gram block, a random block generator 16 reads 8 lines worth of 8 random numbers from the Gaussian random number look-up table 14. A random offset, from the random number generator 12, serves to access each line of 8 random numbers. Each line of the block produced by the block generator 16 is generated as following:
index = x(i, 1)
for n=0...7, B[i%8][n] = Gaussian_list[(index + n)%2048]
where i increments for each 8x1 block line.
The 8 x 8 block of random values read by the generator 16 undergoes a transform, typically an integer Discrete Cosine Transform (DCT), performed by an Integer DCT transform block 18. After the DCT transform, the 8 x 8 random values undergo frequency filtering at a frequency filter 20 in accordance with the cut frequencies specified in the SEI message. Following frequency filtering, the 8 x 8 random values undergo an inverse DCT transform by an inverse integer DCT block 22. A first scaling block 24 scales the pixels on the top and bottom block lines as follows:
for n=0..7, B'[0][n] = (B[0] [n] + 1)>> 1 for n=0..7, B'[7][n] = (B[7] [n] + 1) >> 1
This process continues until generation of a set of 128 film grain blocks for each luminance intensity interval. Following subsequent scaling by the second scaling block 26, the film grain blocks undergo storage in the film grain pool 28.
Block and Pixel Operations to Simulate Film Grain
FIGURE 2 illustrates an apparatus 200 in accordance with an illustrative embodiment of the present principles for simulating film grain on a pixel-by-pixel basis using the stored values in the film grain pool 28. The apparatus 200 includes a processing block 202 for, creating an average of each 8 x 8 block of luma pixel values for comparison to the parameters intensit3_mterval_jower_bound[0][i] and
intensityjnterval_upper__bound[0][i] in the film grain SEI message to determine the correct luminance intensity interval for the current block.
A selector block 204 selects a kth film grain block from the pool 28, using the random number generated by the uniform random number generator 16 from the polynomial modulo 128 as the block index. Thus, the noise generator 16, which generates uniformly distributed random numbers using a polynomial for the initialization process described with respect to FIG. 1, finds application in the apparatus 200 of FIG. 2 to select film grain blocks, with the random number seed reset to 1 after the pool creation process. If the resulting block index is identical to the previous one, the last bit of the index undergoes toggling. Such operation can occur using a bit-wise comparison and an XOR operator (A) as follows:
previous_index = index
index = x(k, 1) % 128
index A= (index = previous_index)
Following block selection, a deblocking filter 206 deblocks the pixels on the right most column of the previously selected block and on the left most column of the current block. An adder 208 adds the deblocked film grain block to decoded luma pixels. (Since two horizontally adjacent blocks are required to perform deblocking, there is a 1-block delay between the block selected in 204 and the block added in 208.) A clipper 210 clips the result within the range [0, 255] for display. Note that film grain noise addition only occurs to luma pixels.
Scaling of Cut Frequencies
The parameters in the film grain SEI message of TABLE 1 assume the use of a 16 x 16 DCT in the simulation process. In particular, horizontal and vertical high cut frequencies, provided by comp_model_value[0][i][l] and comp_model_value[0][i][2], and horizontal and vertical low cut frequencies, provided by comp_model_value[0][i][3] and comp_model_value[0][i][4], serve to filter the transform coefficients of a block of 16x16 values.
In the illustrated embodiment, the use of 8 x 8 blocks will reduce complexity. Employing an 8 x 8 block transform using cut frequency parameters based on a 16 x 16 transform implies that all the cut frequencies require scaling before the grain generation.
The scaling of the cut frequencies occurs as follows:
comp_model_value'[0][i][j] = (comp_jnodel_value [0][i][j] + 1)>> 1
where j is in the range [1,4]. Note that the scaling constitutes the equivalent of the integer division, rounded up to the nearest integer.
Integer Transform and Variance Scaling
The transform used for the frequency filtering corresponds to an 8 x 8 integer approximation to the DCT, using the following transformation matrix:

(Table Removed)
16-bit arithmetic can be used. The forward integer transformation of a given block of random noise is defined as:
B = (((T8xB + 8)>>4)xT8T+8)>>4 with 11 bits used f or B .
The inverse integer transform is defined as:
B = (T8rxBxT8+128)»8 with 8 bits used for B.
Following the inverse transform, the block B undergoes scaling as follows, assuming it is in the kth luminance intensity interval,
val = B(i, j) * comp_model_value[0][k][0]
B'(i, j) = (((val - (val >>4) + 2log2-scale-faclor-1)>> log2_scale_factor ) + 16) >> 5
where the operation (val - (val>>4)) compensates the scaling of the integer transform; Iog2_scale_factor, transmitted in the SEI message, scales comp_model_value[0][k][0]; and 5 scales the Gaussian numbers provided in the Appendix.
Deblocking filter 206
As indicated, the film grain simulation apparatus of FIG. 2 includes a deblocking filter 206 for smoothing blocking artifacts resulting from the small size of the transform. In

the illustrated embodiment, the deblocking filter 206 takes the form of a 3-tap filter applied to all pixels bordering the 8x8 .block left and right edges. Given a row of pixels belonging to two adjacent 8x8 blocks, the transition between blocks being located between pixels b and c,
application of the deblocking occurs as follows:
b1 = (a + (b > 2 c1 = (b + (c > 2
where b' and c' replace the value of the original pixels b and c, respectively. Deblocking of the left and right block edges occurs for every film gram block before addition to the decoded image.

The foregoing describes a technique for simulating film grain in an image.
Appendix The list of the 2048 Gaussian distributed random numbers are:
char Gaussian[2048] = {
OxFB, 0x05,0x33, OxFB, 0x14, OxEF, 0x06, OxlD, 0x26, 0x30, OxD5,0x01, 0x20, OxD9,0x16, OxlB, OxE7, OxOA, 0x06, OxFB, OxF6, OxF7,0x10, OxCl, 0x08, OxFE, OxCC, 0x09, 0x09, 0x23,0x17, OxFB, OxED, 0x15, OxFF, 0x25, OxDF, OxlA, OxD3,0x10, OxE9, OxOA, OxFF, OxE5, 0x18, 0x00, OxE4, OxEC, 0x00, Ox3C, OxCl, OxCB, OxES, 0x04,0x07, Ox3F, Ox3D, 0x36,0x19, Ox3F, 0x00, 0x03,0x38, 0x09, OxOE, 0x06,0x26, 0x38,0x28, OxEjZ, OxCl, 0x37, OxE7, OxF2, 0x01, OxES, OxF5, OxlD, OxF2, OxDC, 0x05, 0x38,0x21,0x27, OxFF, OxC7, OxD5, OxFE, OxFE, 0x14, OxlD, OxD8, 0x18, OxF3, OxFl, OxEF, OxCC, 0x19,0x08, OxF4, OxEF, OxFA, OxF9, OxCl, OxE5, OxF5, OxE5, OxCl, OxCS, 0x02, OxF4, OxDC, Ox3F, Ox3F, OxFF, 0x14, Ox2B, OxEO, OxF9, OxlB, 0x09, Ox2D, OxD8, OxEO, OxEO, Oxll, OxFD, OxES, 0x31, OxFD, Ox2C, Ox3E, OxF3, Ox2D, 0x00, Ox IF, OxlD, OxF9, OxF5,0x38, OxFO, Ox3A, 0x06, OxOC, 0x19, OxF8,0x35, OxFD, OxlA, 0x13, OxEF, 0x08, OxFD, 0x02, OxD3, 0x03, OxlF, OxlF, OxF9,0x13, OxEE, 0x09, OxlB, 0x08, OxE7, 0x13,0x10, OxEE, Ox3E, OxED, OxCS, 0x08, OxFl, 0x00,0x09,0x31, OxlE, 0x32, OxFA, OxDC, OxF8, OxE7, 0x31, 0x01,0x01, OxlD, 0x10, OxFF, OxFF, 0x04, OxEC, OxCC, OxEE, 0x06, Ox3F, 0x07, OxCl, OxFl, OxD5, OxED, OxES, 0x16, OxEC, 0x25, OxOB, OxF7, OxF5, OxDD, 0x25, OxE6,0x00, 0x10, OxEA, 0x08, OxD2, OxlD, OxEO, OxDF, OxlB, OxCE, OxF2, OxD5, OxEF, OxD2, 0x21, 0x02, OxDC, OxE2, Ox2E, OxEB, 0x06, OxF4, OxEE, OxCl, OxF8,0x07, OxCl, OxlF, Oxll, OxOF, Ox2E, 0x08, OxE7, OxES, 0x23, 0x26, 0x28, Ox3F, Ox3F, OxlE, 0x10, OxCC, OxD2, 0x00,0x00,0x25, OxDE, 0x23, Ox3F, OxF7, OxC9, OxOE, OxOB, 0x07,0x01,0x13, Ox2D, 0x02, 0x14, 0x00, OxFE, 0x13, 0x07, 0x38, OxF2, OxEE, 0x19, 0x15,0x35, OxOD, Ox3B, 0x03, OxD9, OxOC, OxDE, OxF6, Ox2E, OxFB, 0x00, 0x09,0x14, OxE7,0x27, OxCl, OxEB, Ox3F, 0x08,0x05, OxF6, OxOF, OxE7, OxOD, OxD4, OxD3, OxED, OxF7, OxFC, OxOC, OxC6, 0x23, OxF4, OxEB, 0x00,0x05, Ox2A, OxCB, 0x13, OxFO, OxCl, 0x17, 0x19, OxF4, OxF6, 0x16,0x00, 0x07, OxEF, OxDE, 0x00, OxDC, OxOC, OxFD, 0x00, OxOE, OxFF, 0x16, 0x10, OxFO, Ox3A, OxEA, 0x27, OxF5, OxF8, OxCA, OxFB, OxDD, Ox2C, OxE9, OxOB, OxD3, Ox3B, OxEE, 0x18, OxCl, OxlD, 0x10, OxDS, OxFB, OxFS, OxFD, 0x16, OxCl, OxF9, Ox2C, Ox3F, 0x08,0x31, OxED, OxFO, 0x12, 0x15, OxED, OxFl, OxF6, 0x34, OxF7, 0x09,0x09, OxES, OxFC, OxOF, 0x00, OxCl, 0x10, OxSF, OxD6,0x25, OxOB, OxEC, OxES, OxCl, OxCB, OxF9,0x16, OxDB, 0x00, OxOE, OxF7, 0x14, OxDE, OxED, 0x06, OxSF, OxFF, 0x02, OxOA, OxDC, OxES, OxCl, OxFF, OxFF, OxE6, OxFE, OxCS, Ox2E, OxSB, OxDS, OxES, 0x00, 0x09, OxEA, 0x21,0x26, OxFA, OxF6, OxCl, Oxl 1, OxEC, OxlB, OxSB, OxFE, OxC7, OxFS, 0x22, OxF9, OxDS, OxOC, OxD7, OxEB, OxCl, 0x35, OxF4, OxEE, 0x13, OxFD, OxFD, OxD7, 0x02, OxDS, 0x15, OxEF, 0x04, OxCl, 0x13, 0x22, 0x18, OxEl, 0x24, OxES, 0x36, OxFS, OxD4, OxE9, OxED, 0x16. Oxl'8, OxFF, OxlD, OxEC, 0x28. 0x04. OxCl, OxFC, OxE4, OxES, OxSE, OxEO, 0x17, Oxl 1, OxSA, 0x07, OxFB, OxDO, 0x36, Ox2F, OxFS, OxES, 0x22, 0x03, OxFA, OxFE, 0x18, 0x12, OxEA, Ox3C, OxFl, OxDA, 0x14, OxEA, 0x02, 0x01, 0x22, OxOS. OxD9,0x00, OxD9, 0x02, OxSF, 0x15, OxOD, OxSF, OxCl, OxOD, OxES,OxFS, OxlB, 0x37, 0x17. 0x35. 0x00, OxDA. 0x00, OxlA, OxFC, OxFS, OxEB, OxSD, 0x36, OxSF, 0x32, 0x21, 0x17, 0x02, 0x00, OxSD, OxFA, OxES, OxFO, OxES, Ox2C, 0x20, OxCC, OxFE, Ox2F,
OxE6, OxlF, 0x16, OxOE, 0x17,0x09, OxEF, 0x07, Oxl4: 0x17, OxDO, OxF4, Ox2F, OxDB, OxSF, OxC7, OxSF, OxDF, 0x00, OxF8,0x19, OxDl, 0x17,0x05, Ox 11, OxEA, OxDB, Ox2C, OxCB, OxFC, OxE4, OxF2, OxCA, OxF4, OxSF, OxE2, OxFA, 0x26, OxEA, 0x08, 0x09, 0x29, OxF5,0x04, OxSF, OxDF, OxlA, 0x01, OxOC, 0x06,0x37,0x15, OxCS, OxFS,0x05, OxF4,0x29,0x21, OxFA, 0x25, OxCS, OxlD, OxSF, OxFB, 0x31, OxF7, OxlF, OxED, OxlA, 0x04,0x03, OxlE, OxES, 0x01, OxE4,0x38, OxCC, OxES, 0x01, OxFC, OxE9, 0x24, Ox2A, OxES, OxEF, 0x06, Ox3B, OxOD, Ox2E, OxDD, 0x06, OxCF, OxDD, OxF6, OxOE, 0x23, . OxDl, 0x09, OxE6, 0x20, OxFA, OxEl, OxF4,0x20, 0x24, OxFC, OxSF, 0x00, OxCl, 0x33, OxF6, OxDC, OxC9, OxCD, OxFD, OxOE, OxEC, OxF6, OxES, OxF2, OxF4, 0x09, OxFE, OxE7, Ox2F, OxES, OxDl, OxEE, Oxl 1, 0x09, OxDE, Ox3F, OxF7, OxCl, OxF5, OxCS, OxE6, 0x12,0x25, OxCl, 0x00, OxFB, OxCS, OxE6, OxFS, 0x13,0x22, 0x08,0x08, OxC7, Ox2C, OxlF, OxOC, 0x12, OxF5,0x18, OxCE, OxFl, OxFC, OxDl, OxE6,0x02, Ox2E, OxFS, OxES, OxFC, 0x19,0x01, OxDB, OxD4, OxFB, OxED, OxSF, OxDS, OxFS, 0x09, OxOA, 0x38,0x25, 0x19, OxFl, Ox2E, OxEl, 0x03, OxFB, 0x17,0x12,0x32, OxEB, OxFS, OxE6, OxFD, OxEE, OxDA, OxFl, OxF6, OxlF, OxOF, OxlF, OxOA, OxCl, OxOF, OxlF, 0x12, 0x33, OxD6, OxFC, 0x26, 0x27, OxlD, OxD9, OxFD, Oxll, 0x04,0x28, OxF4, OxFC, 0x01, OxFS, 0x23, OxSF, 0x29, OxDS, OxlB, 0x09, OxCS, OxCS, 0x12,0x05, OxSF, OxlC, OxES, 0x38,0x06, OxOC, 0x10, OxFA, OxE9, OxOA, OxFA, 0x02, OxlC, OxOD, OxOC, OxOC, OxFB, OxEE, 0x12, OxD2,0x26, 0x28,0x04,0x19,0x06, 0x21, OxFA, 0x00, 0x10,0x16, OxDB, 0x10, OxED, OxFS, OxES, OxCl, OxFS, OxOF, OxFC, Oxl 1, 0x06, 0x23, 0x06, OxlC, 0x05, OxE6, OxD6, OxlA, OxEA, OxEF, 0x00, OxSF, 0x05, OxDF, OxEA, 0x17, OxC7, 0x01,0x05, . OxlC, OxEF, OxSB, OxF7, OxE2, OxlA, OxES, OxCl, OxES, OxFS, 0x01, OxFE, 0x08, OxDS, OxFE, OxSF, OxOC, 0x27, 0x21, OxlF, OxF4,0x06,OxEO, OxEE, OxCl, OxF2, OxOA, OxEl, 0x20, OxE6, OxEC, 0x36, OxEl, 0x07, OxF6, 0x06, OxOE, OxEl, OxOA, OxOD, Ox2F, OxEA, OxES, OxC6, OxFC, 0x27, OxES, OxOB, ' OxEB, OxFS, 0x17, OxE9, OxC4, OxEF, OxF2, OxE6, OxEA, OxOE, OxSF, OxFA, 0x18, OxFC, OxCl, 0x25, OxFS, OxFS, Ox2C, OxlD, 0x05, OxDl, 0x28, OxES, OxlD, OxlE, OxF4,0x14, OxDS, OxFF, OxF6, OxES, OxEA, OxES, OxFS, OxE6, Ox23,.OxF2,0x21, OxFl, OxFS, 0x07, OxFS, OxDF, OxF4, OxF2, OxE2,0x17, 0x12, 0x08,0x07, OxEE, OxFS, OxFB, 0x04, OxFS, OxF7, OxlD, 0x16, OxES, OxE9,OxFF, OxF6, OxDS, OxOE, OxDF, OxCl, 0x25,0x32,0x02,OxFS, 0x30, Oxl 1, OxEO, 0x14, OxE7,0x03, OxES, OxOB, OxE4, OxF7, OxF4, OxCS, OxDC, Ox2D, 0x07, OxF9,0x27, OxFO, OxD9, OxCl, OxEF, 0x14,0x26, OxD7,0x00, OxlB, OxOB, OxDB, OxSF, OxFS, OxF6,0x06, OxOF, OxlB, OxCS, OxCl, Ox2C, OxlB, OxlE, 0x06, OxlB, OxFA, OxCS, OxF9, OxOF, 0x18, OxDF, OxFS, Ox2D, OxFC, 0x00, OxOA, 0x22, OxDD, 0x31, OxF7, OxCS, 0x20, OxDS, OxFC, OxFC, OxDD, OxSF, 0x19, OxDS, OxES, OxOC, OxlE, OxE2, OxC9,0x03, OxEC, OxSF, Ox2B, OxEO, 0x35, OxCl, OxFE, Oxll, OxF9,0x14, OxES, 0x06, 0x06,0x24, OxCE, OxFS, 0x26, Ox3F, OxFD, OxCE, Ox2C, 0x12, Ox3C, Ox2C, OxC2, OxES, 0x06, OxD2, OxC7, OxOA, OxDF, OxDS, OxDl, OxCS, 0x15, OxF2, OxFl, 0x08,0x02, OxE6, OxE2, OxOA, OxEB, 0x05, OxDA, OxES, 0x06, OxOE, 0x01, 0x03, OxDC, 0x13, OxES, OxFB, 0x36, OxE6,0x14,0x21, OxFA, OxCl, OxCl, OxES, OxOB, OxOE, 0x17, Oxl 1, Ox2D, Oxl 1, OxFO, 0x39, OxE7, OxFO, OxE7, Ox2D, 0x03, OxD7, 0x24, OxF4, OxCD, OxOC, OxFB, 0x26, 0x2A, 0x02, 0x21, OxDS, OxFA, OxFS, OxFO, OxES, 0x09, 0x19, OxOC, 0x04, OxlF, OxCD, OxFA, 0x12, OxSF, 0x38,0x30. Oxl 1, 0x00, OxFO, OxES, OxSF, OxCS, OxFO, OxlE, OxFD, OxSB, OxFO, OxCl. OxE6, OxEB, OxlF, 0x01, OxFE, OxF4, 0x23, OxE4, OxFO, OxEB, OxEB, 0x10, OxE4, OxCl, OxSF, OxOC, OxEF, OxFB, 0x08, OxDS, OxOE, OxE4, 0x14, OxCl, OxCl, OxOA, OxE9, OxFB, OxEF, OxEl, OxE7, OxFO. OxDS, 0x27, OxDA, OxDC, 0x04, OxOD, OxDC, OxFC, OxDB, OxDfi. OxD6, OxE4, OxOC. 0x27, OxFC, OxDO. Ox 11,
OxEO, 0x04, OxE3,0x07,0x00, OxEC, Ox 10, OxDS, OxEA, 0x08, OxFF, OxFC, OxlD, 0x13,0x05, OxCA, OxED, OxOB, 0x10,0x08, OxF2,0x01,0x19, OxCA, OxFE, 0x32,0x00,0x20, OxOB, 0x00, Ox3F, OxlE, 0x16, OxOC, OxFl, 0x03,0x04, OxFD, OxES, 0x31,0x08,0x15,0x00, OxEC, 0x10, OxED, OxE6,0x05, OxCA, OxF7, OxlC, OxCl, 0x22, OxOD, 0x19. Ox2E, 0x13, OxlE, OxE7,0x16, OxED, 0x06, Ox2A, Ox3C, OxOD, 0x21,0x16, OxC9, OxD7, OxFF, OxOF, 0x12,0x09, OxEE, OxlD, 0x23,0x13, OxDA, OxE9, OxlD, OxD9,0x03, OxEl, OxEF, OxFA, OxlE, 0x14, OxCl, 0x23, OxFE, OxOB, OxE5,0x19, OxCl, 0x21, OxFE, OxEC, OxOE, OxEl, OxlD, OxFF, 0x00, OxF7, OxEA, OxD2, OxDS, OxDO, OxF9, OxE6, OxFB, OxFB, OxDA, 0x06,0x00,0x03, OxDF, OxCl, Ox3F, OxF3, OxOD, OxFA, 0x08, OxFA, OxF3,0x00,0x04, OxE9, OxFO, OxF9, OxOD, OxFl, OxE3, OxlD, 0x26, OxC4, OxOD, 0x13, OxE5, OxEl, OxFl, OxF6, OxEE, OxFl, OxFD, OxCl, OxF4, OxE2, 0x23, OxCl, 0x38, OxCl, Ox3F, Ox2B, OxFD, 0x39, 0x36, OxlA, Ox2B, OxCl, 0x01, 0x07, OxOB, 0x25, OxCC, OxE7,0x01,0x24, OxDS, OxC9, OxDB, 0x20, 0x28, OxOC, OxlA, Ox3F, OxEA, OxE7, OxCD, OxEC, OxEO, OxF2, 0x27, OxDF, 0x20, OxFO, OxFl, OxFD, Ox3F, 0x00, OxFA, OxE7, 0x21, OxF9,0x02, OxD2, OxOE, OxEF, OxFD, OxDS, OxE4, OxFF, 0x12,0x15,0x16, OxFl, OxDE, OxFD, 0x12, 0x13, OxE7,0x15, OxDS, OxlD, 0x02, Ox3F, 0x06, OxlC, 0x21, 0x16, OxlD.OxEB, OxEB, 0x14, OxF9, OxC5, OxOC, 0x01, OxFB, 0x09, OxFA, 0x19, OxOE, 0x01, OxlB, OxE8, OxFB, 0x00,0x01,0x30, OxF7, OxOE, 0x14,0x06,0x15,0x27, OxEA, OxlB, OxCB, OxEB, OxF7, Ox3F, 0x07, OxFB, OxF7, OxDS, 0x29, OxEE, 0x26, OxCA, 0x07, 0x20, OxE8,0x15, 0x05, 0x06, OxOD, OxQD.-OxlE, OxlC, OxOF, OxOD, 0x35, OxF7, OxlB, 0x06,0x30,0x02, OxFD, OxE2, OxCD, Ox2F, 0x35, OxEB, OxlA, OxOD, OxE9, OxFC, 0x34, OxE6,0x17, Ox2C, 0x33, OxFO, 0x13, OxEF, OxlB, 0x19,0x23, OxDl, OxEF, OxDS, OxCB, OxF7, OxFl, 0x04, OxF7,0x27, OxF9, 0x26,0x02, OxF7, OxCB, Ox2A, OxOA, OxEA, OxED, OxEC, 0x04, OxF2,0x25, 0x17, OxDB, OxlE, OxCl, Ox3C, OxC9, OxE4, OxFl; 0x14,0x03,0x27,0x25,0x21, OxlC, 0x14, OxF4, OxOF, 0x12, OxE9, OxEE, 0x15, OxDC, OxEE, OxlF, Ox3F, OxDE, OxE7, Ox2C, OxFO, OxE2, OxlD, OxE5, Ox 15,0x07,0x02, OxDF, 0x06, OxDS, Ox IF, OxOE, OxED, OxFF, 0x29, OxEF, OxED, OxD6, OxD6, OxlC, Oxl 1, OxDE, OxE2, OxOE, OxEE, OxDl, OxD9, 0x02, OxOF, OxFE, OxFO, OxD9, OxF6, OxFC, OxDA, 0x16, 0x03, OxD2, OxDD, 0x20,0x04, OxES, Ox3F, OxDE, OxOC, OxFB, OxED, OxC7, OxlF, OxCl, OxCE, 0x02, OxFl, 0x37, OxOB, OxES, 0x20, OxCE, OxOD, OxEB, OxOA, OxES, OxF3, OxDC, 0x01, OxD2, 0x02, OxSF, 0x02,0x25, OxDS, OxFC, OxEB, OxCE, OxSF, 0x00, Ox3E, Ox2D, OxEl, 0x19, OxlC, 0x01,0x28, OxCl, OxSF, 0x27, OxSF, OxF2, OxOE, Ox3A, OxDB, OxF8, OxE4,0x34,0x18,0x16, OxOC, OxDD, 0x18, OxED, OxCB, OxOF, OxFO, 0x01, OxFB, 0x14, OxCl ,0x19, OxCC, OxEB, OxEE, 0x19,0x00,0x17, Ox2B, OxFC, 0x26, OxOD, OxEC, OxF4, Ox2D, Ox2B, OxES, 0x25,0x05,0x10,0x26, OxlD, OxSF, OxSF, OxFD, OxDC, 0x18, OxFO, OxCB, OxEF, 0x12, OxlC, OxlA, OxFS, OxFE, 0x29, OxlA, OxCB, OxlA, OxC2, OxOE, OxOB, OxlB, OxEB, OxDS, OxFS, OxFD, 0x17, OxOB. OxFC, 0x00, OxFA, 0x37,0x25, OxOD, OxE6, OxEE, OxFO, 0x13, OxOF, 0x21,0x13, 0x13, OxEl, 0x12, 0x01, OxOA, OxFl, OxE7, OxFS, OxlA, OxED, OxDS, OxOA, 0x19,0x39,0x09, OxDS, OxDE, 0x00, OxF9, OxE9, OxEA, OxFF, Ox3E, 0x08, OxFA, OxOB, OxD7, OxD7, OxDE, OxF7, OxEO, OxCl, 0x04, 0x28, OxES, OxlE, 0x03, OxEE, OxEA,OxEB, OxlC, OxFS, 0x17,0x09, OxD6, 0x17, OxFA, 0x14, OxEE, OxDB, OxE2. Ox2A, OxD9, OxCl, 0x05, 0x19,0x00, OxFF, 0x06,0x17, 0x02, 0x09, OxD9, OxES, OxFS, 0x20, OxDD, 0x05, OxCB, 0x09, OxFS, 0x05, OxFl, OxlF, OxES, 0x12, 0x25, OxFS, OxSF, OxDC, OxFO, OxF2, OxC5, 0x34. 0x21,0x35, OxCD,OxCC, 0x23, OxlE, 0x01, OxOB, OxFF, 0x10, OxFE, OxF9, OxDF, OxF9, OxFS. OxES, 0x07, OxEl, 0x25, OxlC, OxC9, 0x00, 0x29, OxFS, OxOA, 0x25. OxED, OxFS, OxFB, 0x20. OxFS. OxCl, OxES, OxEO, OxOF, Ox2F, OxSA, 0x01. OxCS, OxFD,
OxCA, OxEl, 0x30, 0x04, 0x19,0x03, 0x25, OxF3, 0x24,0x38, OxEE, OxC9, Ox2F, OxE7, OxOB, OxFA, OxF7, Ox IB, OxOA, OxOB, Ox2D, Ox2D, OxOB, OxE8, 0x08, OxDB, OxOB, 0x04, OxE8, OxDO, OxEE, 0x18, OxEF, Oxl 1, OxCL OxD6, 0x15, Ox3F, OxF5, OxF4, 0x2A, 0x29, OxEF, OxFO, OxFA, 0x36, 0x33, OxED, 0x19, OxDF, Oxl 1, 0x09, OxF5,0x18, OxFl, Ox3F, 0x14, OxOC, OxD2, OxFF, OxEF, 0x34, 0x01, OxE4, OxFS, 0x03, Ox3F, OxF8, Ox3E, 0x21,0x22, OxE2, OxOF, OxEF, OxlA, OxE4, OxF5,0x08, 0x15, OxEF, OxF3, OxE4, OxDF, OxF6, OxFC, OxE8,0x21,0x06,0x20, 0x02,0x17, OxlB, Ox3F, OxDB, 0x16, Ox2C, OxEO, OxFA, OxDA, OxDS, OxD3, OxOB, OxOE, 0x10, OxED, OxD5, OxFO, 0x30, OxD3, 0x13,0x04, OxEl, OxFF, OxFB, Ox3R OxE8, OxEE, OxE5, OxOB, OxEF, OxEF, OxE6, Ox2C, OxD3,0x00, 0x18, 0x26, OxFE, OxCl, 0x08,0x16, OxFE, OxDC, 0x00, OxE4, OxF7, OxDC, OxOE, Ox2E, OxlD, 0x18, OxOA, 0x08, 0x37, OxC9, 0x10, OxD7, 0x17,0x17, OxFB, Oxl 1, OxD5, 0x15, OxlC, OxDO, Ox3F, OxFS, 0x00,0x00, OxED, OxCl, OxFF, 0x00, OxlF, Ox2E, 0x00, Oxl2, OxEO, OxE2, OxF7,0x13, OxCl, OxlC, 0x18, OxFS, Ox3F, Ox2C, OxEB, OxCA, OxE7, OxF8,0x03, OxEE, 0x22, 0x17, OxF9, 0x35,0x14, OxlC, 0x03,0x09, 0x03, 0x01, Ox2B, OxD4, OxD2, OxFS, OxF6, OxFS, 0x06, 0x03, OxFE, OxDA, OxDS, OxEF, 0x03, OxEF, OxFE, 0x09, 0x01, OxC9, 0x02, OxDF, OxDS, Ox3C, OxF7, OxFO, OxEE, OxD6, Ox3F, 0x21, 0x16, 0x08,0x17









We claim:
1. An apparatus for simulating film grain in an image block, comprising:
means (202) for computing the average of the pixel values within the block;
means (204) for randomly selecting a film grain block of from among a pool of
previously established blocks containing film grain as a function of the average value of the image block; and
means (208) for blending each pixel in the selected film grain block with a corresponding pixel in the image block.
2. The apparatus as claimed in claim 1, wherein the means for randomly selecting a film grain block further a look up table containing random numbers.
3. The apparatus as claimed in claim 1, where the look-up table is populated in advance of film grain simulation with random numbers generated by a random number generator.
4. A method implemented by the apparatus as claimed in claim 1, for simulating film grain in an image block of comprising the steps of:
computing the average of the pixel values within the image block;
randomly selecting a film grain block of from among a pool of previously established blocks containing film grain as a function of the average value of the image block; and
blending each pixel in the selected film grain block with a corresponding pixel in the image block.
5. The method as claimed in claim 4, wherein the step of randomly selecting a film grain block further including the step of accessing a look up table containing random numbers to obtain a random number.
6. The method as claimed in claim 4, comprising the step of populating the look-up table in advance of film grain simulation with random numbers generated by a random number generator.
7. An apparatus for creating a block of pixels with film grain, for random selection as a function of the average value of the image block and a random number, comprising:
means (12) for receiving film grain information that includes at least one parameter that specifies an attribute of the film grain to appear in the block;
means (16) for creating a block random values selected from a previously established list of Gaussian random numbers;
means (18) for computing an Discrete Cosine Transform of the block of random numbers;
means (20) for filtering coefficients resulting from the Discrete Cosine Transform by at least one parameter in the received film grain information;
means (22) for computing an Inverse Discrete Cosine Transform of the filtered set of coefficients;
means (24) for scaling all the pixel values in the block as indicated by one parameter in the received film grain information; and
means (28) for storing the created block of film grain into a pool of film grain blocks for selection as a function of the average value of the image block and a random number.
8. The apparatus as claimed in claim 7, comprising means (18,22) for performing an integer approximation of a Discrete Cosine Transform (DCT) and the Inverse Discrete Cosine Transform (IDCT) to reduce complexity.
9. The apparatus as claimed in claim 7, comprising the means (24) for scaling top and bottom edges of the created film grain block to hide block edges.
10. The apparatus as claimed in claim 7, wherein means (12) for receiving the film grain information further comprises means for decoding a Supplemental Enhancement Information message containing the at least one parameter.
11. A method implemented by the apparatus as claimed in claim 7, for creating blocks of pixels with film grain for random selection as a function of the average value of the image block, comprising the steps of:
receiving film grain information that includes at least one parameter that specifies an attribute of the film grain to appear in the blocks;
creating blocks of random values selected from a previously established list of Gaussian random numbers;
obtaining a transformed block of random numbers;
filtering coefficients for the transformed blocks by at least one parameter in the received film grain information;
computing an transform of the filtered set of coefficients for the blocks;
scaling all the pixel values for each of the blocks as indicated by one parameter in the received film grain information; and
storing each of the blocks of film grain into a pool of film grain blocks for selection as a function of the average value of the image block and a random number.
12. The method as claimed in claim 11, comprising the step of performing an integer approximation of a Discrete Cosine Transform (DCT) and the Inverse Discrete Cosine Transform (IDCT) to reduce complexity.
13. The method as claimed in claim 11, comprising the step of scaling top and bottom edges of the film grain blocks to hide block edges.
14. The method as claimed in claim 11, wherein the step of receiving the film grain information further comprises the step of decoding a Supplemental Enhancement Information message containing the at least one parameter.

Documents:

2470-delnp-2006-abstract.pdf

2470-delnp-2006-assignment.pdf

2470-delnp-2006-Claims-(18-02-2010).pdf

2470-delnp-2006-claims.pdf

2470-delnp-2006-Correspondence-Others-(18-02-2010).pdf

2470-DELNP-2006-Correspondence-Others-(18-05-2010).pdf

2470-DELNP-2006-Correspondence-Others-(28-08-2006).pdf

2470-delnp-2006-correspondence-others.pdf

2470-delnp-2006-description (complete).pdf

2470-delnp-2006-drawings.pdf

2470-delnp-2006-form-1.pdf

2470-delnp-2006-form-18-(28-08-2006).pdf

2470-delnp-2006-form-2.pdf

2470-delnp-2006-form-26.pdf

2470-delnp-2006-Form-3-(18-02-2010).pdf

2470-delnp-2006-form-3.pdf

2470-delnp-2006-form-5.pdf

2470-delnp-2006-pct-101.pdf

2470-delnp-2006-pct-210.pdf

2470-delnp-2006-pct-220.pdf

2470-delnp-2006-pct-237.pdf

2470-delnp-2006-pct-306.pdf

2470-delnp-2006-pct-311.pdf

2470-delnp-2006-pct-409.pdf

2470-delnp-2006-pct-416.pdf

abstract.jpg


Patent Number 242451
Indian Patent Application Number 2470/DELNP/2006
PG Journal Number 36/2010
Publication Date 03-Sep-2010
Grant Date 26-Aug-2010
Date of Filing 02-May-2006
Name of Patentee THOMSON LICENSING
Applicant Address 46,QUAI A. LE GALLO, F-92100 BOULOGNE-BILlANCOURT, FRANCE.
Inventors:
# Inventor's Name Inventor's Address
1 BOYCE, JILL, MAC DONALD 3 BRANDYWINE CT., MANALAPAN, NJ 07726 (US).
2 GOMILA, DRISTINA 25C CHESTNUT COURT, PRINCETON, NJ 08540 (US).
3 LLACH, JOAN 25C CHESTNUT COURT, PRINCETON, NJ 08540 (US)
4 TOURAPIS, ALEXANDROS 20212 HEATHER DRIVE, WEST WINDSON, NJ 08550 (US)
5 COOPER, JEFFREY, ALLEN 11 TOTH LANE, ROCK HILL, NJ 08540 (US).
6 YIN, PENG 65 WARWICK ROAD, WEST WINDSER, NJ 08540 (US).
PCT International Classification Number H04N 7/26
PCT International Application Number PCT/US2004/033713
PCT International Filing date 2004-10-12
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 60/511,026 2003-10-14 U.S.A.