Motion estimation aided noise reduction
First Claim
1. A method for encoding a flame in a video stream, the frame having a plurality of blocks, the method comprising:
- Identifying a noise reduction frame;
identifying a first motion vector for encoding a current block of the plurality of blocks;
wherein the first motion vector indicates a reference block in a reference frame, and wherein the noise reduction frame differs from the reference frame;
identifying a noise reduction block from the noise reduction frame using the first motion vector, such that the noise reduction block is collocated with the reference block;
generating a denoised block using the current block and the noise reduction block;
identifying a second motion vector for encoding the denoised block based on the first motion vector;
generating a residual block using the denoised block and the second motion vector; and
generating an encoded block based on the residual block and the second motion vector; and
Wherein the current block includes a plurality of current pixels;
the noise reduction block includes a plurality of noise reduction pixels; and
generating the denoised block includes;
identifying a filter coefficient based on a current pixel from the plurality of current pixels and a noise reduction pixel from the plurality of noise reduction pixels;
producing a denoised pixel based on the filter coefficient, the current pixel, and the noise reduction pixel;
on a condition that a difference between the current pixel and the denoised pixel is less than a first threshold and a sum of squared errors value is less than a second threshold, including the denoised pixel in the denoised block;
on a condition that the difference between the current pixel and the denoised pixel is greater than the first threshold, including the current pixel in the denoised block; and
on a condition that the difference between the current pixel and the denoised pixel is equal to the first threshold, including the current pixel in the denoised block; and
wherein generating the denoised block includes weighting the filter coefficient based on a weighting metric, wherein;
on a condition that a magnitude of the first motion vector is greater than a third threshold and a difference between a sum of squared errors of the first motion vector and a sum of squared errors of a zero magnitude motion vector is greater than a fourth threshold, the weighting metric is zero; and
on a condition that a magnitude of the first motion vector is less than the third threshold and a difference between a sum of squared errors of the first motion vector and a sum of squared errors of a zero magnitude motion vector is less than the fourth threshold, the weighting metric is the magnitude of the first motion vector.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for performing motion estimation aided noise reduction encoding and decoding are provided. Motion estimation aided noise reduction encoding can include identifying a motion vector for encoding a current block in a video frame based on a reference block in a reference frame, identifying a noise reduction block for denoising the current block, aligning the noise reduction block with the current block, denoising the current block, identifying a motion vector for encoding the denoised block, generating a residual block for encoding the denoised block, and encoding the denoised block. Denoising the current block can include identifying a filter coefficient for a pixel in the current block based on a corresponding pixel in the noise reduction block, producing a denoised pixel based on the coefficient and the corresponding pixel, and determining whether to use the denoised pixel or the current pixel for encoding the block.
286 Citations
16 Claims
-
1. A method for encoding a flame in a video stream, the frame having a plurality of blocks, the method comprising:
-
Identifying a noise reduction frame; identifying a first motion vector for encoding a current block of the plurality of blocks; wherein the first motion vector indicates a reference block in a reference frame, and wherein the noise reduction frame differs from the reference frame; identifying a noise reduction block from the noise reduction frame using the first motion vector, such that the noise reduction block is collocated with the reference block; generating a denoised block using the current block and the noise reduction block; identifying a second motion vector for encoding the denoised block based on the first motion vector; generating a residual block using the denoised block and the second motion vector; and generating an encoded block based on the residual block and the second motion vector; and Wherein the current block includes a plurality of current pixels; the noise reduction block includes a plurality of noise reduction pixels; and generating the denoised block includes; identifying a filter coefficient based on a current pixel from the plurality of current pixels and a noise reduction pixel from the plurality of noise reduction pixels; producing a denoised pixel based on the filter coefficient, the current pixel, and the noise reduction pixel; on a condition that a difference between the current pixel and the denoised pixel is less than a first threshold and a sum of squared errors value is less than a second threshold, including the denoised pixel in the denoised block; on a condition that the difference between the current pixel and the denoised pixel is greater than the first threshold, including the current pixel in the denoised block; and on a condition that the difference between the current pixel and the denoised pixel is equal to the first threshold, including the current pixel in the denoised block; and wherein generating the denoised block includes weighting the filter coefficient based on a weighting metric, wherein; on a condition that a magnitude of the first motion vector is greater than a third threshold and a difference between a sum of squared errors of the first motion vector and a sum of squared errors of a zero magnitude motion vector is greater than a fourth threshold, the weighting metric is zero; and on a condition that a magnitude of the first motion vector is less than the third threshold and a difference between a sum of squared errors of the first motion vector and a sum of squared errors of a zero magnitude motion vector is less than the fourth threshold, the weighting metric is the magnitude of the first motion vector. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 15, 16)
-
-
9. An apparatus for encoding a frame in a video stream, the flame having a plurality of blocks, the apparatus comprising:
-
a memory; and a processor configured to execute instructions stored in the memory to; identifying a noise reduction frame; identify a first motion vector for encoding a current block of the plurality of blocks, wherein the first motion vector indicates a reference block in a reference frame, and wherein the noise reduction frame differs from the reference frame; identify a noise reduction block from the noise reduction frame such that the noise reduction block is collocated with the reference block; generate a denoised block using the current block and the noise reduction block; identify a second motion vector for encoding the denoised block based on the first motion vector; generate a residual block using the denoised block and the second motion vector; and generate an encoded block based on the residual block and the second motion vector; and wherein the current block includes a plurality of current pixels; the noise reduction block includes a plurality of noise reduction pixels; and the processor is configured to generate the denoised block by; identifying a filter coefficient based on a current pixel from the plurality of current pixels and a noise reduction pixel from the plurality of noise reduction pixels; producing a denoised pixel based on the filter coefficient, the current pixel, and the noise reduction pixel; on a condition that a difference between the current pixel and the denoised pixel is less than a first threshold and a sum of squared errors value is less than a second threshold, including the denoised pixel in the denoised block; on a condition that the difference between the current pixel and the denoised pixel is greater than the first threshold, including the current pixel in the denoised block; and on a condition that the difference between the current pixel and the denoised pixel is equal to the first threshold, including the current pixel in the denoised block; and wherein the processor is configured to generate the denoised block by weighting the filter coefficient based on a weighting metric, wherein; on a condition that a magnitude of the first motion vector is greater than a third threshold and a difference between a sum of squared errors of the first motion vector and a sum of squared errors of a zero magnitude motion vector is greater than a fourth threshold, the weighting metric is zero; and on a condition that a magnitude of the first motion vector is less than the third threshold and a difference between a sum of squared errors of the first motion vector and a sum of squared errors of a zero magnitude motion vector is less than the fourth threshold, the weighting metric is the magnitude of the first motion vector. - View Dependent Claims (10, 11, 12, 13, 14)
-
Specification