Method and apparatus for noise reduction in video systems
Abstract
The disclosure provides a noise filter. The noise filter includes a motion estimation (ME) engine. The ME receives a current frame and a reference frame. The current frame comprising a current block and the reference frame includes a plurality of reference blocks. The ME engine generates final motion vectors. The current block comprises a plurality of current pixels. A motion compensation unit generates a motion compensated block based on the final motion vectors and the reference frame. The motion compensated block includes a plurality of motion compensated pixels. A weighted average filter multiplies each current pixel of the plurality current pixels and a corresponding motion compensated pixel of the plurality of motion compensated pixels with a first weight and a second weight respectively. The weighted average filter generates a filtered block. A blockiness removal unit is coupled to the weighted average filter and removes artifacts in the filtered block.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A noise filter comprising:
a motion estimation (ME) engine configured to receive a current frame and a reference frame, the current frame comprising a current block and the reference frame comprising a plurality of reference blocks, the ME engine configured to generate final motion vectors, the current block comprises a plurality of current pixels; a motion compensation unit coupled to the ME engine and configured to generate a motion compensated block based on the final motion vectors and the reference frame, the motion compensated block comprises a plurality of motion compensated pixels; a weighted average filter configured to multiply each current pixel of plurality of current pixels and a corresponding motion compensated pixel of the plurality of motion compensated pixels with a first weight and a second weight respectively, wherein the product of the current pixels and the first weight is summed with the product of the corresponding motion compensated pixels and the second weight to generate a filtered block; and a blockiness removal unit coupled to the weighted average filter and configured to remove artifacts in the filtered block.
2 . The noise filter of claim 1 further comprising a filtered frame buffer coupled to the blockiness removal unit and configured to store the filtered block, wherein the filtered block comprises a plurality of filtered pixels.
3 . The noise filter of claim 1 further configured to receive a plurality of frames, wherein the plurality of frames comprises the current frame and the reference frame, wherein a reference block of the plurality of reference blocks comprises a plurality of reference pixels.
4 . The noise filter of claim 1 , wherein the ME engine is configured to estimates sum of absolute difference (SAD) between the current block and the reference block, the SAD is estimated by adding absolute value of differences between a current pixel and a corresponding reference pixel over all the pixels of the current block and the reference block respectively.
5 . The noise filter of claim 1 , wherein the motion vectors provides a location of the reference block with respect to the current block and the ME engine is configured to estimate a motion vector cost between the current block and the reference block, the motion vector cost is estimated from the motion vectors associated with the current block.
6 . The noise filter of claim 1 , wherein the ME engine is configured to estimate a cost function between the current block and the reference block, the cost function is estimated by summing the SAD, between the current block and the reference block, and a product of a motion smoothness value (MSV) and the motion vector cost between the current block and the reference block.
7 . The noise filter of claim 1 further comprising a motion smoothness factor (MSF) engine coupled to the ME engine and configured to estimate the motion smoothness value (MSV) corresponding to the current block, wherein the MSV is estimated from a current noise level and the MSV is defined between a maximum MSV and a minimum MSV.
8 . The noise filter of claim 7 , wherein the MSV is equal to the minimum MSV when a sum of the motion vectors associated with the current block and the motion vectors associated with a set of adjacent blocks is above threshold.
9 . The noise filter of claim 7 , wherein the current noise level is estimated between the current frame and the reference frame by averaging SAD for all blocks with motion vectors below a predefined threshold.
10 . The noise filter of claim 1 , wherein the ME engine is configured to select a final SAD and the final motion vectors associated with the current block corresponding to a reference block of the plurality of reference blocks for which the cost function is minimum.
11 . The noise filter of claim 10 , wherein the ME engine is configured to estimate chrominance motion vectors associated with the current block, wherein the chrominance motion vectors are estimated from the final motion vectors and a last bit of the final motion vectors is masked with zero when the final motion vectors are odd.
12 . The noise filter of claim 11 , wherein the ME engine is configured to estimate a chrominance SAD between the current block and the reference block for which the cost function is minimum, the chrominance SAD is estimated from the chrominance vectors.
13 . The noise filter of claim 1 , wherein the ME engine is configured to estimate a combined SAD associated with the current block by summing the final SAD and the chrominance SAD.
14 . The noise filter of claim 1 further comprising a weight computation unit coupled to the ME engine and configured to estimate the first weight and the second weight using the combined SAD associated with the current block, an average combined SAD associated with a previous frame and a blending factor.
15 . The noise filter of claim 14 , wherein the blending factor for a motion block is lower than the blending factor for a static block.
16 . The noise filter of claim 14 , wherein the blending factor is defined between a maximum blending factor and a minimum blending factor such that the blending factor for the motion block is minimum blending factor and the blending factor for the static block is between the maximum blending factor and the minimum blending factor.
17 . The noise filter of claim 1 , wherein the blockiness removal unit is a de-blocking filter and a set of parameters associated with the de-blocking filter are adjusted to perform at least one of a strong filtering, a moderate filtering and a weak filtering.
18 . The noise filter of claim 1 coupled to a spatial filter, the spatial filter comprising:
a median filter configured to receive a filtered pixel of the plurality of filtered pixels from the noise filter and configured to generate a median pixel;
a subtracter coupled to the median filter and configured to subtract the median pixel from the filtered pixel to generate a subtracted pixel;
a soft coring unit configured to receive the subtracted pixel and a noise function, the noise function is estimated from the current noise level, the soft coring unit configured to perform a soft coring function on the subtracted pixel and generates an adjusted pixel; and
an adder coupled to the soft coring unit and configured to sum the adjusted pixel and the median pixel to generate a spatial filtered pixel.
19 . A method of filtering noise comprising:
generating final motion vectors from a current frame and a reference frame, wherein the current frame comprises a current block and, the current block comprises a plurality of current pixels and the reference frame comprises a plurality of reference blocks; generating a motion compensated block based on the final motion vectors and the reference frame, the motion compensated block comprises a plurality of motion compensated pixels; generating a filtered block by summing a product of the current pixels and a first weight and a product corresponding motion compensated pixels and a second weight, the filtered block comprises a plurality of filtered pixels; removing artifacts in the filtered block; and storing the filtered block.
20 . The method of claim 19 , wherein generating the final motion vectors comprises:
estimating a motion smoothness value (MSV) corresponding to the current block based on a current noise level; estimating a sum of absolute difference (SAD) between the current block and a reference block; estimating a motion vector cost between the current block and the reference block; estimate a cost function between the current block and the reference block by summing the SAD, between the current block and the reference block, and a product of the MSV and the motion vector cost between the current block and the reference block; and selecting a final SAD and motion vectors associated with the current block corresponding to a reference block of the plurality of reference blocks for which the cost function is minimum.
21 . The method of claim 19 further comprising:
estimating a chrominance SAD between the current block and the reference block;
estimating a combined SAD associated with the current block by summing the final SAD and the chrominance SAD; and
estimating the first weight and the second weight using the combined SAD associated with the current block, an average SAD associated with a previous frame and a blending factor.
22 . The method of claim 19 further comprising:
generating a median pixel from a filtered pixel of the plurality of filtered pixels;
subtracting the median pixel from the filtered pixel to generate a subtracted pixel;
estimating a noise function from the current noise level;
performing a set coring function on the subtracted pixel to generate an adjusted pixel, wherein the soft coring function is estimated from the noise function; and
summing the adjusted pixel and the median pixel to generate a spatial filtered pixel.
23 . A computing device comprising:
a processing unit; a memory module coupled to the processing unit; video processing unit coupled to the processing unit and the memory module, the video processing unit comprising a noise filter, the noise filter comprising:
a motion estimation (ME) engine configured to receive a current frame and a reference frame, the current frame comprising a current block and the reference frame comprising a plurality of reference blocks, the ME engine configured to generate final motion vectors the current block comprises a plurality of current pixels;
a motion compensation unit coupled to the ME engine and configured to generate a motion compensated block based on the final motion vectors and the reference frame, the motion compensated block comprises a plurality of motion compensated pixels;
a weighted average filter configured to multiply each current pixel of the plurality of current pixels and a corresponding motion compensated pixel of the plurality of motion compensated pixels with a first weight and a second weight respectively, wherein the product of the current pixels and the first weight is summed with the product of the corresponding motion compensated pixels and the second weight to generate a filtered block; and
a blockiness removal unit coupled to the weighted average filter and configured to remove artifacts in the filtered block.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.