US20150023436A1 - Method and apparatus for noise reduction in video systems - Google Patents
Method and apparatus for noise reduction in video systems Download PDFInfo
- Publication number
- US20150023436A1 US20150023436A1 US14/337,669 US201414337669A US2015023436A1 US 20150023436 A1 US20150023436 A1 US 20150023436A1 US 201414337669 A US201414337669 A US 201414337669A US 2015023436 A1 US2015023436 A1 US 2015023436A1
- Authority
- US
- United States
- Prior art keywords
- block
- current
- motion
- pixel
- pixels
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- H04N19/00909—
-
- H04N19/00733—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Definitions
- Embodiments of the disclosure relate generally to noise filters and more particularly to a noise filter implemented using a video compression engine.
- a noise filter is an essential component in a video system to ensure a high quality video. Also, when the noise filter is used in a video compression engine, it reduces a bitrate significantly to provide a high quality video. In vision systems the noise filter improves accuracy of underlying vision algorithms. Noise is random in nature and various noise models are available to characterize different kinds of noise. Averaging and filtering techniques are prominently used to remove many of these kinds of noise. Traditionally, spatial filtering and temporal filtering have been used to remove noise.
- MATNF motion adaptive temporal noise filter
- MCTNF motion compensated temporal noise filter
- MATNF class of filters have various shortcomings, such as: (a) inability to clean noise especially in medium to high noise; (b) distortion in areas with motion (motion region) when strong filtering is performed; (c) blurring of sequences with high resolution.
- MCTNF generates better video quality and does more effective filtering than MATNF.
- MCTNF has much higher computational complexity.
- 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 is coupled to the ME engine and 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 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.
- a blockiness removal unit is coupled to the weighted average filter and removes artifacts in the filtered block.
- FIG. 1 illustrates a block diagram of a noise filter, according to an embodiment
- FIG. 2 illustrates a spatial filter, according to an embodiment
- FIG. 3 illustrates is computing device, according to an embodiment
- FIG. 4 is an example environment in which various aspect of the present disclosure may be implemented.
- FIG. 1 illustrates a block diagram of a noise filter 100 , according to an example embodiment.
- the noise filter 100 includes a motion estimation (ME) engine 104 .
- the ME engine 104 receives a current frame 102 and a reference frame 106 .
- a motion smoothness factor (MSF) engine 108 is coupled to the ME engine 104 .
- a motion compensation unit 110 is coupled to the ME engine 104 .
- the motion compensation unit 110 also receives the reference frame 106 .
- a weighted average filter 114 is coupled to the motion compensation unit 110 .
- the weighted average filter 114 also receives the current frame 102 .
- a weight computation unit 112 is coupled to the ME engine 104 and the weighted average filter 114 .
- a blockiness removal unit 116 is coupled to the weighted average filter 114 .
- a filtered frame buffer 120 is coupled to the blockiness removal unit 116 .
- the noise filter 100 is being initiated to process the current frame 102 .
- the ME engine 104 receives the current frame 102 and the reference frame 106 .
- a plurality of frames is received by the noise filter 100 and the plurality of frames includes the current frame 102 and the reference frame 106 .
- Each frame of the plurality of frames includes a plurality of non-overlapping macroblocks and each macroblock includes a plurality of blocks.
- the current frame 102 includes a current block and the reference frame 106 includes a plurality of reference blocks.
- the reference frame 106 is a frame received before the current frame 102 that is filtered by the noise filter 100 to generate the reference frame 106 .
- the current block includes a plurality of current pixels and each reference block of the plurality of reference blocks includes a plurality of reference pixels.
- the ME engine 104 performs a motion search for each macroblock of the plurality of non-overlapping macroblocks in the current frame 102 .
- the current frame 102 is of 1920 ⁇ 1080 pixels and each macroblock is of 16 ⁇ 16 pixels.
- the ME engine 104 performs motion searches with 16 ⁇ 16 macroblocks.
- the ME engine 104 performs a book-keep for each block of the set of blocks in the macroblock.
- each macroblock of 16 ⁇ 16 pixels includes 4 blocks of 8 ⁇ 8 pixels.
- the ME engine 104 book-keep at 8 ⁇ 8 blocks to estimate four distinct motion vectors for each macroblock.
- a macroblock of the current frame 102 is compared with a macroblock of the reference frame 106 and a set of motion vectors corresponding to each block in the macroblock of the current frame 102 are stored by the ME engine 104 .
- the motion vectors provide a location of a reference block with respect to the current block.
- the motion vector of the plurality of motion vectors represents a shift of an area to be matched in the reference frame 106 and the current frame 102 .
- the motion vectors are utilized for representing vectors corresponding to a horizontal and a vertical shift of a specific block between the reference frame 106 and the current frame 102 .
- the ME engine 104 performs multiple motion searches to compare the macroblock of the current frame 102 with a set of macroblocks in the reference frame 106 .
- the ME engine 104 therefore generates a plurality of motion vectors.
- the ME engine 104 uses multiple reference frames for generating the plurality of motion vectors.
- the multiple reference frames includes frames received before the current frame 102 and frames received after the current frame 102 .
- the ME engine 104 is configured to estimate a sum of absolute difference (SAD) between the current block and a reference block of the plurality of reference blocks in the reference frame 106 .
- 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.
- the ME engine 104 estimates a plurality of SAD corresponding to the current block as the ME engine 104 estimates SAD between the current block and each reference block of the plurality of reference blocks.
- the ME engine 104 also estimates motion vector cost (MVcost) between the current block and a reference block.
- the motion vector cost (MVcost) is estimated from the motion vectors associated with the current block.
- the motion vector cost (MVcost) is defined as:
- MVcost MVbits(MV x, MV y ) (1)
- MVx,MVy are the motion vectors associated with the block and MVbits is an imaginary value of bits of the differential value of the motion vectors (MVx,MVy) in the x and y direction respectively with respect to predicted motion vectors.
- predicted motion vectors are decided based on motion vectors of blocks adjacent to the current block.
- the motion smoothness factor (MSF) engine 108 estimates a motion smoothness value (MSV) corresponding to the current block.
- the MSV is defined between a maximum MSV and a minimum MSV.
- the MSV is estimated from the current noise level as illustrated in equation 2.
- MSV Minimum ⁇ ⁇ MSV ⁇ Current ⁇ ⁇ Noise ⁇ ⁇ level Minimum ⁇ ⁇ Noise ⁇ ⁇ level ( 2 )
- the MSV when current noise level is equal to the minimum noise level, the MSV is equal to the minimum MSV. As the current noise level increases, MSV increases till it saturates to the maximum MSV.
- a value of the maximum MSV is defined as (192*blocksize/64) and a value of the minimum MSV is defined as (24*blocksize/64), where blocksize is a size of the current block. In one example, when the current block is an 8 ⁇ 8 pixel block, the blocksize is 64.
- the current noise level is estimated between the current frame 102 and the reference frame 106 by averaging SAD for all blocks with motion vectors below a predefined threshold.
- the current noise level is estimated between the current frame 102 and the reference frame 106 by averaging SAD for all blocks with motion vectors (MVx,MVy) defined as ⁇ 0,0>. Therefore, in the above example, the current noise level is represented as
- the blocks with motion vectors (MVx,MVy) defined as ⁇ 0,0> are considered for estimating the current noise level as the SAD in other blocks may be due to motion and thus, the SAD will not be true representation of noise.
- 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 a predefined threshold.
- adjacent blocks are spatial neighbor blocks and or temporal neighbor blocks of the current block. Whenever information from spatial neighbor blocks is not available due to processing in a raster scan format, temporal neighbor blocks from a previous frame are utilized. The noise filter 100 receives the previous frame followed by current frame 102 .
- the ME engine 104 estimates a cost function (J) between the current block and a reference block.
- the cost function (J) is estimated 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.
- the cost function (J) is defined as:
- the ME engine 104 estimates a motion vector cost between the current block and the reference block and also estimates the SAD between the current block and the reference block.
- the MSF engine 108 estimates the motion smoothness value (MSV) corresponding to the current block. Thereafter, the ME engine 104 utilizes these values to obtain the cost function (J) as illustrated in equation 4.
- the ME engine 104 estimates the cost function (J) between the current block and each reference block of the plurality of reference blocks in the reference frame 106 . In one example, the ME engine 104 estimates the cost function (J) between the current block and a set of reference blocks of the plurality of reference blocks in the reference frame 106 . The ME engine 104 selects a final SAD and final motion vectors associated with the current block corresponding to a reference block of the plurality of reference blocks for which the cost function (J) is minimum.
- the cost function (J) between the current block and a first reference block is J 1 and the cost function (J) between the current block and a second reference block is J 2 .
- the reference frame 106 includes the first reference block and the second reference block.
- the ME engine 104 selects the SAD and the motion vectors corresponding to J 1 which are referred as the final SAD and the final motion vectors corresponding to the current block.
- the final motion vectors are divided by two to obtain chrominance motion vectors (cMVx, cMVy). However, when the final motion vectors are odd, a last bit of the final motion vectors is masked with zero before dividing by two. Thus the chrominance motion vectors (cMVx, cMVy) obtained are integers. Interpolation for chrominance SAD is thus avoided because it provides marginal improvement in removing noise but comes with significant computational complexity.
- the ME engine 104 estimates a chrominance SAD between the current block and the reference block using the chrominance motion vectors (cMVx, MVy).
- the chrominance SAD is a SAD for a chrominance block (Cb block and Cr block) which corresponds to the current block.
- the chrominance components Cb and Cr are of 4 ⁇ 4 pixels.
- the chrominance motion vectors (cMVx, cMVy) are utilized to estimate SAD for every 4 ⁇ 4 block which is further used to compute the chrominance SAD.
- the ME engine 104 estimates a combined SAD associated with the current block by summing the final SAD and the chrominance SAD.
- the weight computation unit 112 receives the combined SAD associated with the current block from the ME engine 104 .
- the weight computation unit 112 estimates a first weight (W 1 ) and a second weight (W 2 ) using the combined SAD associated with the current block, an average combined SAD associated with the previous frame and a blending factor.
- the noise filter 100 receives the previous frame followed by current frame 102 . Each block of the previous frame is associated with a combined SAD. An average of combined SAD associated with all the blocks in the previous frame provides the average combined SAD associated with the previous frame.
- the first weight (W 1 ) is estimated as follows
- ⁇ is the blending factor and r is defined as
- the second weight (W 2 ) is estimated as follows
- piecewise linear approximation of exponential function is used in the weight computation unit 112 to estimate the first weight (W 1 ) and the second weight (W 2 ).
- a range of r is from 0 to 8, it is divided into 9 regions and a region is defined between two numbers such as a first region is defined between 0 and 1, a second region is defined between 1 and 2 and so on.
- a last region will account for r>8.
- a straight line is fitted instead of exponential as an approximation. This reduces the error in estimation of the first weight (W 1 ) and the second weight (W 2 ) and also can be implemented with very low computational complexity as compared to traditional floating point implementation.
- a block is marked as zero block when the motion vectors of the block is ⁇ 0,0>, otherwise it is marked as non-zero block.
- the current block is a static block otherwise the current block is a motion block.
- the blending factor ( ⁇ ) for the motion block is lower than the blending factor ( ⁇ ) for the static block.
- the blending factor ( ⁇ ) is defined between a maximum blending factor ( ⁇ ) and a minimum blending factor ( ⁇ ).
- the blending factor ( ⁇ ) for the motion block is equal to the minimum blending factor ( ⁇ ) and the blending factor ( ⁇ ) for the static block is between the maximum blending factor ( ⁇ ) and the minimum blending factor ( ⁇ ).
- the blending factor ( ⁇ ) increases in steps from the minimum blending factor ( ⁇ ) to the maximum blending factor ( ⁇ ). For example, min_ ⁇ , min_ ⁇ + ⁇ , min — ⁇ +2 ⁇ till max_ ⁇ , where ⁇ is a step increase in ⁇ , min_ ⁇ is the minimum blending factor and max_ ⁇ is the maximum blending factor.
- the motion compensation unit 110 receives the final motion vectors from the ME engine 104 and also receives the reference frame 105 .
- the motion compensation unit 110 generates a motion compensated block based on the final motion vectors and the reference frame 106 .
- the motion compensated block includes a plurality of motion compensated pixels.
- the weighted average filter 114 receives: (a) motion compensated pixels from the motion compensation unit 110 ; (b) the plurality of current pixels corresponding to the current block; and (c) the first weight (W 1 ) and the second weight (W 2 ) from the weight computation unit 112 .
- the weighted average filter 114 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 (W 1 ) and a second weight (W 2 ) respectively.
- the product of the current pixels and the first weight (W 1 ) is summed with the product of the corresponding motion compensated pixels and the second weight (W 2 ) to generate a filtered block.
- the filtered block includes a plurality of filtered pixels.
- a filtered pixel (f) is represented as:
- logWd is used in equation 8, to increase the precision of weights W 1 and W 2 .
- a value of logWd is 6, as it can be used to represent weights up to one with maximum precision.
- the weighted average filter 114 is implemented on a motion compensation accelerator in a video compression engine.
- the filtered block is received by the blockiness removal unit 116 that removes artifacts in the filtered block.
- the blockiness removal unit 116 is a de-blocking filter.
- a set of parameters are associated with the de-blocking filter such as (but not limited to) quantization parameter, inter mode, intra modes and motion vector.
- a set of the parameters associated with the de-blocking filter are adjusted to perform at least one of a strong filtering, moderate filtering and weak filtering.
- the set of parameters are adaptively selected based on the noise present in the filtered block.
- the blookiness removal unit 116 after filtering provides the filtered block to the filtered frame buffer 120 .
- the filtered frame buffer 120 stores the filtered block.
- the filtered frame buffer 120 stores all the filtered blocks corresponding to the current frame 102 .
- the filtered blocks corresponding to the current frame 102 together form a filtered frame.
- the noise filter 100 in one embodiment is a motion compensated temporal noise filter (MCTNF).
- MTNF motion compensated temporal noise filter
- the noise filter 100 is mapped to a video compression engine.
- the noise filter 100 is mapped to video encoding accelerators. Indeed, those skilled in the art will appreciate that building blocks of noise filter 100 overlaps building blocks of a video compression engine and the processes defined earlier in the description have been adapted to suit hardware blocks of the video compression engine.
- the noise filter 100 utilizes available resources of a video compression engine and also provides high video quality.
- the noise filter 100 finds application in any video processing systems such as, but not limited to, video surveillance devices, and computer vision systems.
- the noise filter 100 is of lesser computational complexity as compared to MATNF and provides a better video quality than MCTNF.
- FIG. 2 illustrates a spatial filter 200 according to an embodiment.
- the spatial filter 200 is coupled to the noise filter 201 .
- the noise filter 201 is similar in connection and operation to the noise filter 100 (as illustrated in FIG. 1 ).
- the spatial filter 200 includes a median filter 202 that is coupled to the noise filter 201 .
- the median filter 202 is an N ⁇ N median filter, where N is an integer.
- the median filter 202 is a 3 ⁇ 3 median filter.
- a subtracter 204 is coupled to the median filter 202 .
- a soft coring unit 206 is coupled to the subtracter 204 and receives a noise function ( ⁇ ) 208 .
- the soft coring unit 206 is coupled to an adder 210 .
- the median filter 202 receives a filtered pixel of the plurality of filtered pixels from the noise filler 201 .
- the noise filter 201 generates a filtered block and each block includes a plurality of filtered pixels.
- the median filter 202 generates a median pixel on receiving the filtered pixel.
- the subtracter 204 subtracts the median pixel from the filtered pixel to generate a subtracted pixel.
- the soft coring unit 206 receives the subtracted pixel and the noise function ( ⁇ ) 208 .
- the noise function ( ⁇ ) 208 is estimated from a current noise level. The current noise level is obtained as illustrated in equation 3.
- the soft coring unit 206 performs a soft coring function which is defined as
- f(x) represents an output of the soft coring unit 206 and x represents an input to the soft coring unit 206 .
- the input to the soft coring unit 206 is the subtracted pixel.
- the soft coring unit 206 performs soft coring function on the subtracted pixel and generates an adjusted pixel.
- the adder 210 sums the adjusted pixel and the median pixel to generate a spatial filtered pixel.
- the spatial filter 200 performs filtering on each filtered pixel received from the noise filter 201 and generates a corresponding spatial filtered pixel.
- the spatial filter 200 is used to remove any noise left over in the noise filter 201 .
- the spatial filter 200 in one example suppresses amplitudes below a threshold and preserves high amplitudes.
- FIG. 3 illustrates a computing device 300 according to an embodiment.
- the computing device 300 is, or is incorporated into, a mobile communication device, such as a mobile phone, a personal digital assistant, a transceiver, a personal computer, or any other type of electronic system.
- the computing device 300 may include one or more additional components known to those skilled in the relevant art and are not discussed here for simplicity of the description.
- the computing device 300 comprises a megacell or a system-on-chip (SoC) which includes a processing unit 312 such as a CPU (Central Processing Unit), a memory module 315 (e.g., random access memory (RAM)) and a tester 310 .
- the processing unit 312 can be, for example, a CISC-type (Complex Instruction Set Computer) CPU, RISC-type CPU (Reduced Instruction Set Computer), or a digital signal processor (DSP).
- the memory module 315 (which can be memory such as RAM, flash memory, or disk storage) stores one or more software applications 330 (e.g., embedded applications) that, when executed by the processing unit 312 , performs any suitable function associated with the computing device 300 .
- the tester 310 comprises logic that supports testing and debugging of the computing device 300 executing the software applications 330 .
- the tester 310 can be used to emulate a defective or unavailable component(s) of the computing device 300 to allow verification of how the component(s), were it actually present on the computing device 300 , would perform in various situations (e.g., how the component(s) would interact with the software applications 330 ).
- the software applications 330 can be debugged in an environment which resembles post-production operation.
- the processing unit 312 typically comprises memory and logic which store information frequently accessed from the memory module 315 .
- a camera 318 is coupled to the processing unit 312 .
- the computing device 300 includes a video processing unit 316 .
- the video processing unit 316 is coupled to the processing unit 312 , the memory module 314 and the camera 318 .
- the video processing unit 316 includes noise filter 320 .
- the noise filter 320 is analogous to the noise filter 100 in connection and operation.
- the images video data shot by the camera 318 is processed in the video processing unit 316 .
- the video data in the computing device 300 is processed using the noise filter 320 as in any of the embodiments discussed previous in this description.
- the noise filter 320 overlaps building blocks of a video compression engine and the processes defined earlier in the description have been adapted to suit hardware blocks of the video compression engine.
- the noise filter 320 utilizes available resources of a video compression engine and also provides high video quality.
- FIG. 4 is an example environment in which various aspects of the present disclosure may be implemented.
- the environment may comprise, for example, one or more video cameras 410 , computers 420 , personal digital assistants (PDA) 430 , mobile devices 440 , televisions 460 , video conference systems 460 , video streaming systems 480 , TV broadcasting systems 470 and communication networks/channels 490 .
- PDA personal digital assistants
- the video cameras 410 are configured to take continuous pictures and generate digital video, a signal comprising sequence of image frames.
- the video cameras 410 are configured to process the image frames for efficient storage and/or for transmission over the communication networks/channels 490 .
- the computers 420 , PDAs 430 and the mobile devices 440 are configured to encode the video signals for transmission and to decode encoded video signals received from the communication networks/channels 490 .
- the video streaming systems 480 is configured to encode video signal and to transmit the encoded video signals over the communication networks/channels 490 responsive to a received request and/or asynchronously.
- the television broadcasting systems 470 are configured to process video signals in accordance with one or more broadcast technologies and to broadcast the processed video signals over the communication networks/channels 490 .
- the video conference systems 460 are configured to receive a video signal from one or more participating/conferencing end-terminals (not shown) and to convert or compress the video signal for broadcasting or for transmitting to other participating user terminals.
- the television broadcasting systems 470 are configured to receive encoded video signals from one or more different broadcasting centers (or channels), to decode each video signal and to display the decoded video signals on a display device (not shown).
- the devices and systems 410 - 480 are coupled to the communication networks/channels 490 .
- Communication networks/channels 490 supports an exchange of video signal encoded in accordance with one or more video encoding standards such as but not limited to, H.263, H.264/AEC, and HEVC (high efficiency video coding) or H.266, for example.
- the devices and systems 410 - 480 are required to process (encode and/or decode) video signals complying with such standards.
- the systems and devices 410 - 480 are implemented with one or more functional units that are configured to perform signal processing, transmitting and/or receiving of video signals from communication networks/channels 490 .
- each device in the described environment performs video coding or decoding, one or more embodiments described in this disclosure are used.
- connection means at least either a direct electrical connection between the devices connected or an indirect connection through one or more passive intermediary devices.
- circuit means at least either a single component or a multiplicity of passive or active components, that are connected together to provide a desired function.
- signal means at least one current, voltage, charge, data, or other signal.
- connected to or “connected with” (and the like) are intended to describe either an indirect or direct electrical connection. Thus, if a first device is coupled to a second device, that connection can be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Picture Signal Circuits (AREA)
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.
Description
- This application claims priority from India provisional patent application No. 3248CHE/2013 filed on Jul. 22, 2013, which is hereby incorporated by reference in its entirety.
- Embodiments of the disclosure relate generally to noise filters and more particularly to a noise filter implemented using a video compression engine.
- A noise filter is an essential component in a video system to ensure a high quality video. Also, when the noise filter is used in a video compression engine, it reduces a bitrate significantly to provide a high quality video. In vision systems the noise filter improves accuracy of underlying vision algorithms. Noise is random in nature and various noise models are available to characterize different kinds of noise. Averaging and filtering techniques are prominently used to remove many of these kinds of noise. Traditionally, spatial filtering and temporal filtering have been used to remove noise.
- Spatial filtering involves filtering around pixels in a frame using pixels in the frame while temporal filtering involves filtering around pixels in a frame using pixels in the frame and in neighboring frames. There are two types of temporal filters which are most commonly used for reducing noise in the video systems. These are MATNF (motion adaptive temporal noise filter) and MCTNF (motion compensated temporal noise filter). MATNF class of filters have various shortcomings, such as: (a) inability to clean noise especially in medium to high noise; (b) distortion in areas with motion (motion region) when strong filtering is performed; (c) blurring of sequences with high resolution. MCTNF generates better video quality and does more effective filtering than MATNF. However, MCTNF has much higher computational complexity.
- This Summary is provided to comply with 37 CFR. §1.73, requiring a summary of the invention briefly indicating the nature and substance of the invention. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
- An embodiment 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 is coupled to the ME engine and 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 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. 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. A blockiness removal unit is coupled to the weighted average filter and removes artifacts in the filtered block.
- Other aspects and example embodiments are provided in the Drawings and the Detailed Description the follows.
-
FIG. 1 illustrates a block diagram of a noise filter, according to an embodiment; -
FIG. 2 illustrates a spatial filter, according to an embodiment; -
FIG. 3 illustrates is computing device, according to an embodiment; and -
FIG. 4 is an example environment in which various aspect of the present disclosure may be implemented. -
FIG. 1 illustrates a block diagram of anoise filter 100, according to an example embodiment. Thenoise filter 100 includes a motion estimation (ME)engine 104. TheME engine 104 receives acurrent frame 102 and areference frame 106. A motion smoothness factor (MSF)engine 108 is coupled to theME engine 104. Amotion compensation unit 110 is coupled to theME engine 104. Themotion compensation unit 110 also receives thereference frame 106. A weightedaverage filter 114 is coupled to themotion compensation unit 110. The weightedaverage filter 114 also receives thecurrent frame 102. Aweight computation unit 112 is coupled to theME engine 104 and the weightedaverage filter 114. Ablockiness removal unit 116 is coupled to the weightedaverage filter 114. A filteredframe buffer 120 is coupled to theblockiness removal unit 116. - The operation of the
noise filter 100 illustrated inFIG. 1 is explained now. Thenoise filter 100 is being initiated to process thecurrent frame 102. TheME engine 104 receives thecurrent frame 102 and thereference frame 106. A plurality of frames is received by thenoise filter 100 and the plurality of frames includes thecurrent frame 102 and thereference frame 106. Each frame of the plurality of frames includes a plurality of non-overlapping macroblocks and each macroblock includes a plurality of blocks. Thecurrent frame 102 includes a current block and thereference frame 106 includes a plurality of reference blocks. In one example, thereference frame 106 is a frame received before thecurrent frame 102 that is filtered by thenoise filter 100 to generate thereference frame 106. The current block includes a plurality of current pixels and each reference block of the plurality of reference blocks includes a plurality of reference pixels. - The
ME engine 104 performs a motion search for each macroblock of the plurality of non-overlapping macroblocks in thecurrent frame 102. In one example, thecurrent frame 102 is of 1920×1080 pixels and each macroblock is of 16×16 pixels. TheME engine 104 performs motion searches with 16×16 macroblocks. Also, theME engine 104 performs a book-keep for each block of the set of blocks in the macroblock. In the above example, each macroblock of 16×16 pixels includes 4 blocks of 8×8 pixels. Thus, theME engine 104 book-keep at 8×8 blocks to estimate four distinct motion vectors for each macroblock. - During the motion search, a macroblock of the
current frame 102 is compared with a macroblock of thereference frame 106 and a set of motion vectors corresponding to each block in the macroblock of thecurrent frame 102 are stored by theME engine 104. The motion vectors provide a location of a reference block with respect to the current block. In one example, the motion vector of the plurality of motion vectors represents a shift of an area to be matched in thereference frame 106 and thecurrent frame 102. The motion vectors are utilized for representing vectors corresponding to a horizontal and a vertical shift of a specific block between thereference frame 106 and thecurrent frame 102. - The
ME engine 104 performs multiple motion searches to compare the macroblock of thecurrent frame 102 with a set of macroblocks in thereference frame 106. TheME engine 104 therefore generates a plurality of motion vectors. - In one embodiment the
ME engine 104 uses multiple reference frames for generating the plurality of motion vectors. In an example, the multiple reference frames includes frames received before thecurrent frame 102 and frames received after thecurrent frame 102. - The
ME engine 104 is configured to estimate a sum of absolute difference (SAD) between the current block and a reference block of the plurality of reference blocks in thereference frame 106. 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. Thus, theME engine 104 estimates a plurality of SAD corresponding to the current block as theME engine 104 estimates SAD between the current block and each reference block of the plurality of reference blocks. - The
ME engine 104 also estimates motion vector cost (MVcost) between the current block and a reference block. The motion vector cost (MVcost) is estimated from the motion vectors associated with the current block. The motion vector cost (MVcost) is defined as: -
MVcost=MVbits(MVx,MVy) (1) - Where (MVx,MVy) are the motion vectors associated with the block and MVbits is an imaginary value of bits of the differential value of the motion vectors (MVx,MVy) in the x and y direction respectively with respect to predicted motion vectors. In one embodiment predicted motion vectors are decided based on motion vectors of blocks adjacent to the current block.
- The motion smoothness factor (MSF)
engine 108 estimates a motion smoothness value (MSV) corresponding to the current block. The MSV is defined between a maximum MSV and a minimum MSV. The MSV is estimated from the current noise level as illustrated in equation 2. -
- As illustrated in equation 2, when current noise level is equal to the minimum noise level, the MSV is equal to the minimum MSV. As the current noise level increases, MSV increases till it saturates to the maximum MSV. In one example, a value of the maximum MSV is defined as (192*blocksize/64) and a value of the minimum MSV is defined as (24*blocksize/64), where blocksize is a size of the current block. In one example, when the current block is an 8×8 pixel block, the blocksize is 64.
- The current noise level is estimated between the
current frame 102 and thereference frame 106 by averaging SAD for all blocks with motion vectors below a predefined threshold. In an example, the current noise level is estimated between thecurrent frame 102 and thereference frame 106 by averaging SAD for all blocks with motion vectors (MVx,MVy) defined as <0,0>. Therefore, in the above example, the current noise level is represented as -
- In the above example, the blocks with motion vectors (MVx,MVy) defined as <0,0> are considered for estimating the current noise level as the SAD in other blocks may be due to motion and thus, the SAD will not be true representation of noise.
- In one example, 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 a predefined threshold. In one embodiment, adjacent blocks are spatial neighbor blocks and or temporal neighbor blocks of the current block. Whenever information from spatial neighbor blocks is not available due to processing in a raster scan format, temporal neighbor blocks from a previous frame are utilized. The
noise filter 100 receives the previous frame followed bycurrent frame 102. - The
ME engine 104 estimates a cost function (J) between the current block and a reference block. The cost function (J) is estimated 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. Thus, the cost function (J) is defined as: -
J(MVx, MVy)=SAD(MVx, MVy)+(MSV*MVbits(MVx, MVy)) (4) - During a motion search, the current block is compared with a reference block, the
ME engine 104 estimates a motion vector cost between the current block and the reference block and also estimates the SAD between the current block and the reference block. TheMSF engine 108 estimates the motion smoothness value (MSV) corresponding to the current block. Thereafter, theME engine 104 utilizes these values to obtain the cost function (J) as illustrated in equation 4. - The
ME engine 104 estimates the cost function (J) between the current block and each reference block of the plurality of reference blocks in thereference frame 106. In one example, theME engine 104 estimates the cost function (J) between the current block and a set of reference blocks of the plurality of reference blocks in thereference frame 106. TheME engine 104 selects a final SAD and final motion vectors associated with the current block corresponding to a reference block of the plurality of reference blocks for which the cost function (J) is minimum. - For example the cost function (J) between the current block and a first reference block is J1 and the cost function (J) between the current block and a second reference block is J2. The
reference frame 106 includes the first reference block and the second reference block. Thus when J1 is less than J2, theME engine 104 selects the SAD and the motion vectors corresponding to J1 which are referred as the final SAD and the final motion vectors corresponding to the current block. - The final motion vectors are divided by two to obtain chrominance motion vectors (cMVx, cMVy). However, when the final motion vectors are odd, a last bit of the final motion vectors is masked with zero before dividing by two. Thus the chrominance motion vectors (cMVx, cMVy) obtained are integers. Interpolation for chrominance SAD is thus avoided because it provides marginal improvement in removing noise but comes with significant computational complexity.
- The
ME engine 104 estimates a chrominance SAD between the current block and the reference block using the chrominance motion vectors (cMVx, MVy). The chrominance SAD is a SAD for a chrominance block (Cb block and Cr block) which corresponds to the current block. In one example, when the current block is 8×8 pixels, the chrominance components Cb and Cr are of 4×4 pixels. The chrominance motion vectors (cMVx, cMVy) are utilized to estimate SAD for every 4×4 block which is further used to compute the chrominance SAD. - The
ME engine 104 estimates a combined SAD associated with the current block by summing the final SAD and the chrominance SAD. Theweight computation unit 112 receives the combined SAD associated with the current block from theME engine 104. Theweight computation unit 112 estimates a first weight (W1) and a second weight (W2) using the combined SAD associated with the current block, an average combined SAD associated with the previous frame and a blending factor. Thenoise filter 100 receives the previous frame followed bycurrent frame 102. Each block of the previous frame is associated with a combined SAD. An average of combined SAD associated with all the blocks in the previous frame provides the average combined SAD associated with the previous frame. The first weight (W1) is estimated as follows -
- Where, β is the blending factor and r is defined as
-
- The second weight (W2) is estimated as follows
-
W2=1−W1 (7) - In one implementation, piecewise linear approximation of exponential function is used in the
weight computation unit 112 to estimate the first weight (W1) and the second weight (W2). For example, when a range of r is from 0 to 8, it is divided into 9 regions and a region is defined between two numbers such as a first region is defined between 0 and 1, a second region is defined between 1 and 2 and so on. Similarly, a last region will account for r>8. For each region, a straight line is fitted instead of exponential as an approximation. This reduces the error in estimation of the first weight (W1) and the second weight (W2) and also can be implemented with very low computational complexity as compared to traditional floating point implementation. - A block is marked as zero block when the motion vectors of the block is <0,0>, otherwise it is marked as non-zero block. When a number of zero blocks adjacent to the current block is above a threshold, the current block is a static block otherwise the current block is a motion block. The blending factor (β) for the motion block is lower than the blending factor (β) for the static block. The blending factor (β) is defined between a maximum blending factor (β) and a minimum blending factor (β). In one example, the blending factor (β) for the motion block is equal to the minimum blending factor (β) and the blending factor (β) for the static block is between the maximum blending factor (β) and the minimum blending factor (β). In another example, for the static block, the blending factor (β) increases in steps from the minimum blending factor (β) to the maximum blending factor (β). For example, min_β, min_β+δ, min—β+2δ till max_β, where δ is a step increase in β, min_β is the minimum blending factor and max_β is the maximum blending factor.
- The
motion compensation unit 110 receives the final motion vectors from theME engine 104 and also receives the reference frame 105. Themotion compensation unit 110 generates a motion compensated block based on the final motion vectors and thereference frame 106. The motion compensated block includes a plurality of motion compensated pixels. - The weighted
average filter 114 receives: (a) motion compensated pixels from themotion compensation unit 110; (b) the plurality of current pixels corresponding to the current block; and (c) the first weight (W1) and the second weight (W2) from theweight computation unit 112. The weightedaverage filter 114 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 (W1) and a second weight (W2) respectively. - The product of the current pixels and the first weight (W1) is summed with the product of the corresponding motion compensated pixels and the second weight (W2) to generate a filtered block. The filtered block includes a plurality of filtered pixels. A filtered pixel (f) is represented as:
-
- where, p0 is the current pixel and p1 is the motion compensated pixel. W1 is the first weight and W2 is the second weight, logWd is used in equation 8, to increase the precision of weights W1 and W2. In one example, a value of logWd is 6, as it can be used to represent weights up to one with maximum precision.
- It is to be noted that in above equation, when the first weight W1 is multiplied with a current pixel, the second weight is multiplied with a corresponding motion compensated pixel at the corresponding position in the motion compensated block. In an embodiment, the weighted
average filter 114 is implemented on a motion compensation accelerator in a video compression engine. - The filtered block is received by the
blockiness removal unit 116 that removes artifacts in the filtered block. In an example, theblockiness removal unit 116 is a de-blocking filter. A set of parameters are associated with the de-blocking filter such as (but not limited to) quantization parameter, inter mode, intra modes and motion vector. A set of the parameters associated with the de-blocking filter are adjusted to perform at least one of a strong filtering, moderate filtering and weak filtering. In one example, the set of parameters are adaptively selected based on the noise present in the filtered block. Theblookiness removal unit 116 after filtering provides the filtered block to the filteredframe buffer 120. The filteredframe buffer 120 stores the filtered block. The filteredframe buffer 120 stores all the filtered blocks corresponding to thecurrent frame 102. The filtered blocks corresponding to thecurrent frame 102 together form a filtered frame. - The
noise filter 100 in one embodiment is a motion compensated temporal noise filter (MCTNF). In one example, thenoise filter 100 is mapped to a video compression engine. In another example, thenoise filter 100 is mapped to video encoding accelerators. Indeed, those skilled in the art will appreciate that building blocks ofnoise filter 100 overlaps building blocks of a video compression engine and the processes defined earlier in the description have been adapted to suit hardware blocks of the video compression engine. Thenoise filter 100 utilizes available resources of a video compression engine and also provides high video quality. Thenoise filter 100 finds application in any video processing systems such as, but not limited to, video surveillance devices, and computer vision systems. Thenoise filter 100 is of lesser computational complexity as compared to MATNF and provides a better video quality than MCTNF. -
FIG. 2 illustrates aspatial filter 200 according to an embodiment. Thespatial filter 200 is coupled to thenoise filter 201. Thenoise filter 201 is similar in connection and operation to the noise filter 100 (as illustrated inFIG. 1 ). Thespatial filter 200 includes amedian filter 202 that is coupled to thenoise filter 201. In one example, themedian filter 202 is an N×N median filter, where N is an integer. In another example themedian filter 202 is a 3×3 median filter. Asubtracter 204 is coupled to themedian filter 202. Asoft coring unit 206 is coupled to thesubtracter 204 and receives a noise function (σ) 208. Thesoft coring unit 206 is coupled to anadder 210. - The
median filter 202 receives a filtered pixel of the plurality of filtered pixels from thenoise filler 201. Thenoise filter 201 generates a filtered block and each block includes a plurality of filtered pixels. Themedian filter 202 generates a median pixel on receiving the filtered pixel. Thesubtracter 204 subtracts the median pixel from the filtered pixel to generate a subtracted pixel. Thesoft coring unit 206 receives the subtracted pixel and the noise function (σ) 208. The noise function (σ) 208 is estimated from a current noise level. The current noise level is obtained as illustrated in equation 3. - The
soft coring unit 206 performs a soft coring function which is defined as -
- where f(x) represents an output of the
soft coring unit 206 and x represents an input to thesoft coring unit 206. The input to thesoft coring unit 206 is the subtracted pixel. Thesoft coring unit 206 performs soft coring function on the subtracted pixel and generates an adjusted pixel. Theadder 210 sums the adjusted pixel and the median pixel to generate a spatial filtered pixel. - The
spatial filter 200 performs filtering on each filtered pixel received from thenoise filter 201 and generates a corresponding spatial filtered pixel. Thespatial filter 200 is used to remove any noise left over in thenoise filter 201. Thespatial filter 200 in one example suppresses amplitudes below a threshold and preserves high amplitudes. -
FIG. 3 illustrates acomputing device 300 according to an embodiment. Thecomputing device 300 is, or is incorporated into, a mobile communication device, such as a mobile phone, a personal digital assistant, a transceiver, a personal computer, or any other type of electronic system. Thecomputing device 300 may include one or more additional components known to those skilled in the relevant art and are not discussed here for simplicity of the description. - In some embodiments, the
computing device 300 comprises a megacell or a system-on-chip (SoC) which includes aprocessing unit 312 such as a CPU (Central Processing Unit), a memory module 315 (e.g., random access memory (RAM)) and atester 310. Theprocessing unit 312 can be, for example, a CISC-type (Complex Instruction Set Computer) CPU, RISC-type CPU (Reduced Instruction Set Computer), or a digital signal processor (DSP). The memory module 315 (which can be memory such as RAM, flash memory, or disk storage) stores one or more software applications 330 (e.g., embedded applications) that, when executed by theprocessing unit 312, performs any suitable function associated with thecomputing device 300. Thetester 310 comprises logic that supports testing and debugging of thecomputing device 300 executing thesoftware applications 330. For example, thetester 310 can be used to emulate a defective or unavailable component(s) of thecomputing device 300 to allow verification of how the component(s), were it actually present on thecomputing device 300, would perform in various situations (e.g., how the component(s) would interact with the software applications 330). In this way, thesoftware applications 330 can be debugged in an environment which resembles post-production operation. - The
processing unit 312 typically comprises memory and logic which store information frequently accessed from the memory module 315. Acamera 318 is coupled to theprocessing unit 312. Thecomputing device 300 includes avideo processing unit 316. Thevideo processing unit 316 is coupled to theprocessing unit 312, thememory module 314 and thecamera 318. Thevideo processing unit 316 includesnoise filter 320. Thenoise filter 320 is analogous to thenoise filter 100 in connection and operation. The images video data shot by thecamera 318 is processed in thevideo processing unit 316. The video data in thecomputing device 300 is processed using thenoise filter 320 as in any of the embodiments discussed previous in this description. Thenoise filter 320 overlaps building blocks of a video compression engine and the processes defined earlier in the description have been adapted to suit hardware blocks of the video compression engine. Thenoise filter 320 utilizes available resources of a video compression engine and also provides high video quality. -
FIG. 4 is an example environment in which various aspects of the present disclosure may be implemented. As shown, the environment may comprise, for example, one ormore video cameras 410,computers 420, personal digital assistants (PDA) 430,mobile devices 440,televisions 460,video conference systems 460,video streaming systems 480,TV broadcasting systems 470 and communication networks/channels 490. - The
video cameras 410 are configured to take continuous pictures and generate digital video, a signal comprising sequence of image frames. Thevideo cameras 410 are configured to process the image frames for efficient storage and/or for transmission over the communication networks/channels 490. Thecomputers 420,PDAs 430 and themobile devices 440 are configured to encode the video signals for transmission and to decode encoded video signals received from the communication networks/channels 490. Thevideo streaming systems 480 is configured to encode video signal and to transmit the encoded video signals over the communication networks/channels 490 responsive to a received request and/or asynchronously. Thetelevision broadcasting systems 470 are configured to process video signals in accordance with one or more broadcast technologies and to broadcast the processed video signals over the communication networks/channels 490. Thevideo conference systems 460 are configured to receive a video signal from one or more participating/conferencing end-terminals (not shown) and to convert or compress the video signal for broadcasting or for transmitting to other participating user terminals. Thetelevision broadcasting systems 470 are configured to receive encoded video signals from one or more different broadcasting centers (or channels), to decode each video signal and to display the decoded video signals on a display device (not shown). - As shown in
FIG. 4 the devices and systems 410-480 are coupled to the communication networks/channels 490. Communication networks/channels 490 supports an exchange of video signal encoded in accordance with one or more video encoding standards such as but not limited to, H.263, H.264/AEC, and HEVC (high efficiency video coding) or H.266, for example. Accordingly, the devices and systems 410-480 are required to process (encode and/or decode) video signals complying with such standards. The systems and devices 410-480 are implemented with one or more functional units that are configured to perform signal processing, transmitting and/or receiving of video signals from communication networks/channels 490. When each device in the described environment performs video coding or decoding, one or more embodiments described in this disclosure are used. - In the foregoing discussion, the terms “connected” means at least either a direct electrical connection between the devices connected or an indirect connection through one or more passive intermediary devices. The term “circuit” means at least either a single component or a multiplicity of passive or active components, that are connected together to provide a desired function. The term “signal” means at least one current, voltage, charge, data, or other signal. Also, the terms “connected to” or “connected with” (and the like) are intended to describe either an indirect or direct electrical connection. Thus, if a first device is coupled to a second device, that connection can be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
- It should be noted that reference throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages should be or are in any single embodiment. Rather, language referring to the features and advantages is understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment of the present disclosure. Thus, discussion of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment.
- Further, the described features advantages, and characteristics of the disclosure may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize that the disclosure can be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the disclosure.
- One having ordinary skill in the art will understand that the present disclosure, as discussed above, may be practiced with steps and/or operations in a different order, and/or with hardware elements in configurations which are different than those which are disclosed. Therefore, although the disclosure has been described based upon these preferred embodiments, it should be appreciated that certain modifications, variations, and alternative constructions are apparent and well within the spirit and scope of the disclosure. In order to determine the metes and bounds of the disclosure, therefore, reference should be made to the appended claims.
Claims (23)
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.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/988,978 US11051046B2 (en) | 2013-07-22 | 2020-08-10 | Method and apparatus for noise reduction in video systems |
US17/331,159 US11831927B2 (en) | 2013-07-22 | 2021-05-26 | Method and apparatus for noise reduction in video systems |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN3248CH2013 | 2013-07-22 | ||
IN3248/CHE/2013 | 2013-07-22 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/988,978 Continuation US11051046B2 (en) | 2013-07-22 | 2020-08-10 | Method and apparatus for noise reduction in video systems |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150023436A1 true US20150023436A1 (en) | 2015-01-22 |
Family
ID=52343566
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/337,669 Abandoned US20150023436A1 (en) | 2013-07-22 | 2014-07-22 | Method and apparatus for noise reduction in video systems |
US16/988,978 Active US11051046B2 (en) | 2013-07-22 | 2020-08-10 | Method and apparatus for noise reduction in video systems |
US17/331,159 Active 2034-10-01 US11831927B2 (en) | 2013-07-22 | 2021-05-26 | Method and apparatus for noise reduction in video systems |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/988,978 Active US11051046B2 (en) | 2013-07-22 | 2020-08-10 | Method and apparatus for noise reduction in video systems |
US17/331,159 Active 2034-10-01 US11831927B2 (en) | 2013-07-22 | 2021-05-26 | Method and apparatus for noise reduction in video systems |
Country Status (1)
Country | Link |
---|---|
US (3) | US20150023436A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170223802A1 (en) * | 2016-02-03 | 2017-08-03 | Honeywell International Inc. | Camera-aided controller of illumination |
US10645414B2 (en) | 2015-11-11 | 2020-05-05 | Samsung Electronics Co., Ltd. | Method for encoding/decoding image, and device therefor |
CN113613005A (en) * | 2021-07-30 | 2021-11-05 | 百果园技术(新加坡)有限公司 | Video denoising method and device based on time domain filtering |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150023436A1 (en) * | 2013-07-22 | 2015-01-22 | Texas Instruments Incorporated | Method and apparatus for noise reduction in video systems |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659365A (en) * | 1995-06-06 | 1997-08-19 | Sony Corporation | Video compression |
US20020110194A1 (en) * | 2000-11-17 | 2002-08-15 | Vincent Bottreau | Video coding method using a block matching process |
US20050063475A1 (en) * | 2003-09-19 | 2005-03-24 | Vasudev Bhaskaran | Adaptive video prefilter |
US20060023788A1 (en) * | 2004-07-27 | 2006-02-02 | Fujitsu Limited | Motion estimation and compensation device with motion vector correction based on vertical component values |
US20060056724A1 (en) * | 2004-07-30 | 2006-03-16 | Le Dinh Chon T | Apparatus and method for adaptive 3D noise reduction |
US20060222074A1 (en) * | 2005-04-01 | 2006-10-05 | Bo Zhang | Method and system for motion estimation in a video encoder |
US20080089417A1 (en) * | 2006-10-13 | 2008-04-17 | Qualcomm Incorporated | Video coding with adaptive filtering for motion compensated prediction |
US20100091194A1 (en) * | 2007-03-31 | 2010-04-15 | Sony Deutschland Gmbh | Noise reduction method and unit for an image frame |
US20100309378A1 (en) * | 2009-06-08 | 2010-12-09 | Sheng Zhong | Method And System For Motion Compensated Noise Level Detection And Measurement |
US20110090960A1 (en) * | 2008-06-16 | 2011-04-21 | Dolby Laboratories Licensing Corporation | Rate Control Model Adaptation Based on Slice Dependencies for Video Coding |
US8184200B1 (en) * | 2008-04-22 | 2012-05-22 | Marvell International Ltd. | Picture rate conversion system for high definition video |
US20120257113A1 (en) * | 2011-04-11 | 2012-10-11 | Mstar Semiconductor, Inc. | Filter for Video Stream |
WO2013049412A2 (en) * | 2011-09-29 | 2013-04-04 | Dolby Laboratories Licensing Corporation | Reduced complexity motion compensated temporal processing |
US9131073B1 (en) * | 2012-03-02 | 2015-09-08 | Google Inc. | Motion estimation aided noise reduction |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999018419A1 (en) | 1997-10-02 | 1999-04-15 | Siemens Canada Limited | Temperature correction method and subsystem for automotive evaporative leak detection systems |
US8059207B2 (en) * | 2007-02-23 | 2011-11-15 | Samsung Electronics Co., Ltd. | System and method for video noise reduction using an adaptive temporal method with motion detection and motion compensation |
US20150023436A1 (en) * | 2013-07-22 | 2015-01-22 | Texas Instruments Incorporated | Method and apparatus for noise reduction in video systems |
-
2014
- 2014-07-22 US US14/337,669 patent/US20150023436A1/en not_active Abandoned
-
2020
- 2020-08-10 US US16/988,978 patent/US11051046B2/en active Active
-
2021
- 2021-05-26 US US17/331,159 patent/US11831927B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659365A (en) * | 1995-06-06 | 1997-08-19 | Sony Corporation | Video compression |
US20020110194A1 (en) * | 2000-11-17 | 2002-08-15 | Vincent Bottreau | Video coding method using a block matching process |
US20050063475A1 (en) * | 2003-09-19 | 2005-03-24 | Vasudev Bhaskaran | Adaptive video prefilter |
US20060023788A1 (en) * | 2004-07-27 | 2006-02-02 | Fujitsu Limited | Motion estimation and compensation device with motion vector correction based on vertical component values |
US20060056724A1 (en) * | 2004-07-30 | 2006-03-16 | Le Dinh Chon T | Apparatus and method for adaptive 3D noise reduction |
US20060222074A1 (en) * | 2005-04-01 | 2006-10-05 | Bo Zhang | Method and system for motion estimation in a video encoder |
US20080089417A1 (en) * | 2006-10-13 | 2008-04-17 | Qualcomm Incorporated | Video coding with adaptive filtering for motion compensated prediction |
US20100091194A1 (en) * | 2007-03-31 | 2010-04-15 | Sony Deutschland Gmbh | Noise reduction method and unit for an image frame |
US8184200B1 (en) * | 2008-04-22 | 2012-05-22 | Marvell International Ltd. | Picture rate conversion system for high definition video |
US20110090960A1 (en) * | 2008-06-16 | 2011-04-21 | Dolby Laboratories Licensing Corporation | Rate Control Model Adaptation Based on Slice Dependencies for Video Coding |
US20100309378A1 (en) * | 2009-06-08 | 2010-12-09 | Sheng Zhong | Method And System For Motion Compensated Noise Level Detection And Measurement |
US20120257113A1 (en) * | 2011-04-11 | 2012-10-11 | Mstar Semiconductor, Inc. | Filter for Video Stream |
WO2013049412A2 (en) * | 2011-09-29 | 2013-04-04 | Dolby Laboratories Licensing Corporation | Reduced complexity motion compensated temporal processing |
US9131073B1 (en) * | 2012-03-02 | 2015-09-08 | Google Inc. | Motion estimation aided noise reduction |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10645414B2 (en) | 2015-11-11 | 2020-05-05 | Samsung Electronics Co., Ltd. | Method for encoding/decoding image, and device therefor |
US20170223802A1 (en) * | 2016-02-03 | 2017-08-03 | Honeywell International Inc. | Camera-aided controller of illumination |
CN113613005A (en) * | 2021-07-30 | 2021-11-05 | 百果园技术(新加坡)有限公司 | Video denoising method and device based on time domain filtering |
Also Published As
Publication number | Publication date |
---|---|
US20210289233A1 (en) | 2021-09-16 |
US11831927B2 (en) | 2023-11-28 |
US20200374564A1 (en) | 2020-11-26 |
US11051046B2 (en) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11831927B2 (en) | Method and apparatus for noise reduction in video systems | |
US11134259B2 (en) | System and method for enhanced motion compensation using adaptive filtering | |
US11611764B2 (en) | Method and apparatus of HEVC de-blocking filter | |
JP5102228B2 (en) | Video encoding | |
KR102123958B1 (en) | Method for reducing real-time video noise in coding process, terminal, and computer-readable non-volatile storage medium | |
US20060171569A1 (en) | Video compression with blur compensation | |
US12170780B2 (en) | Method and apparatus for real-time SAO parameter estimation | |
JP2009531980A (en) | Method for reducing the computation of the internal prediction and mode determination process of a digital video encoder | |
JP7543301B2 (en) | METHOD AND APPARATUS FOR VIDEO ENCODING AND DECODING BY OPTICAL FLOW BASED ON BOUNDARY SMOOTHED MOTION COMPENSATION - Patent application | |
KR100964515B1 (en) | Non-Integer Pixel Sharing for Video Encoding | |
US20240187640A1 (en) | Temporal structure-based conditional convolutional neural networks for video compression | |
US8792549B2 (en) | Decoder-derived geometric transformations for motion compensated inter prediction | |
EP3991432A1 (en) | Bi-directional optical flow refinement of affine motion compensation | |
US20240031611A1 (en) | Deep prediction refinement | |
US12149726B2 (en) | Motion refinement using a deep neural network | |
US20240430415A1 (en) | Adaptive Filter Computation Precision in Video Coding | |
Dane et al. | Quality enhancement in standard compliant frame rate up conversion by motion smoothing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: TEXAS INSTRUMENTS INCORPORATED, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:NAGORI, SOYEB;JAGANNATHAN, SHYAM;PODDAR, DEEPAK KUMAR;AND OTHERS;REEL/FRAME:034254/0024 Effective date: 20140718 |
|
STCV | Information on status: appeal procedure |
Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |