A method and apparatus for adaptive denoising of source video in a video conference application is provided. source video frames received from a video capture device are divided into a plurality of 16×16 blocks. For each source block, a moving object detection process and a noise estimation process are performed. Then temporal denoising is adaptively applied to the blocks of the source frame based on the noise estimation and moving object detection. The adaptively filtered blocks are provided to an output frame and forwarded to a coding module for encoding.
|
1. A method for adaptive noise filtering of source video prior to encoding in a video conferencing system, the method comprising:
receiving source frames from a video capturing device;
preprocessing the received source frames by removing noise from one or more blocks of a source frame by:
dividing the source frame into a plurality of source blocks; and
generating a preprocessed source frame by adaptively applying a block-based temporal denoising filter to the plurality of source blocks by, for each of the plurality of source blocks:
determining whether an absolute difference between a sum of block pixels in a corresponding denoised block at time t−1 minus a sum of block pixels in a source block at time t satisfies a difference threshold;
in response to determination that the difference threshold is satisfied, identifying the source block as moving;
in response to determination that the difference threshold is not satisfied, identifying the source block as static;
if the source block is identified as moving, copying the source block into the preprocessed frame; and
if the source block is identified as static, copying a noise filtered version of the source block into the preprocessed frame;
performing a noise level estimation for the source frames by:
temporally averaging a calculated noise value on a fixed running window of a predetermined number of frames;
determining, for a current frame, whether an average noise level satisfies a noise threshold; and
in response to determining that the average noise level satisfies the noise threshold, setting a noise level as high;
adapting the block-based temporal denoising filter based on the noise level estimation for the source frames by:
in response to determining that the average noise level fails to satisfy the noise threshold, lowering a variance threshold for moving object detection and lowering a difference threshold for noise filtering; and
in response to determining that the average noise level satisfies the noise threshold setting, increasing the difference threshold for noise filtering, lowering the variance threshold for center position blocks, and increasing the variance threshold on border position blocks;
encoding the preprocessed source frames; and
transmitting, over a network, the encoded frames to at least one endpoint.
14. A source device for adaptive noise filtering of source video prior to encoding in a video conferencing system, the source device comprising:
a video capture device that captures video source frames;
an external video noise filter, configured to:
receive source frames from the video capturing device;
preprocess the received source frames by removing noise from one or more blocks of a source frame by:
dividing the source frame into a plurality of source blocks; and
generating a preprocessed source frame by adaptively applying a block-based temporal denoising filter to the plurality of source blocks by, for each of the plurality of source blocks:
determining whether an absolute difference between a sum of block pixels in a corresponding denoised block at time t−1 minus a sum of block pixels in a source block at time t satisfies a difference threshold;
in response to determination that the difference threshold is satisfied identifying the source block as moving;
in response to determination that the difference threshold is not satisfied, identifying the source block as static;
if the source block is identified as moving, copying the source block into the preprocessed frame; and
if the source block is identified as static, copying a noise filtered version of the source block into the preprocessed frame;
performing a noise level estimation for the source frames, wherein the noise level estimation is binary and uses a variance threshold to distinguish high and low noise levels and wherein performing the noise level estimation comprises:
calculating a noise value using
and M is a number of consecutive static blocks;
temporally averaging a calculated noise value on a fixed running window of a predetermined number of frames;
determining, for a current frame, whether an average noise level satisfies a noise threshold; and
in response to determining that the average noise level fails to satisfy the noise threshold setting the noise level as high and otherwise setting the noise level as low; and
adapting the block-based temporal denoising filter based on the noise level estimation for the source frame;
a video codec configured to:
receive the preprocessed source frame; and
generate an encoded video bitstream, by encoding the preprocessed source frames; and
a processor configured to transmit, over a network, the encoded video bitstream to at least one endpoint.
3. The method of
4. The method of
5. The method of
for each of the plurality of source blocks,
determining a variance between a corresponding noise filtered block at time t and a corresponding preprocessed source frame block at time t−1;
if the variance satisfies the variance threshold then marking the source block as a moving object edge block;
if the variance fails to satisfy the variance threshold, marking the source block as static; and
identifying moving objects with the source frame by filling in moving object edge blocks.
6. The method of
deriving density values for rows and columns of the source frame by accumulating a number of moving blocks for each row and column in the source frame; and
generating a rectangle of moving blocks around the source blocks previously marked as the moving object edge blocks.
7. The method of
performing false object detection by, for each source block identified as moving, determining whether there exists at least one other block between the source block and two adjacent frame borders, wherein the at least one other block is identified as moving; and
in response to determination that no block identified as moving exists between the source block and the two adjacent frame borders, marking the source block as static.
8. The method of
using dynamic programming to determine, for each source block marked as moving, whether there exists the at least one other block identified as moving.
9. The method of
and M is a number of consecutive static blocks.
11. The method of
12. The method of
in response to a low noise level estimation for the source frame, noise filtering is decreased by lowering the difference threshold; and
in response to a high noise level estimation for the source frame, noise filtering is increased by increasing the difference threshold.
13. The method of
adapting the moving object detection based on noise level and block position.
15. The source device of
dividing the source frame into a plurality of blocks, each block having N×N pixels, N being an integer; and
generating a preprocessed source frame by adaptively applying a block-based temporal denoising filter to the plurality of source blocks, where a preprocessed source frame includes at least one filtered block and at least one source block.
16. The source device of
17. The source device of
perform moving object detection to determine which the of the plurality of source blocks are moving blocks.
18. The source device of
19. The source device of
for each of the plurality of source blocks,
determining a variance between a corresponding noise filtered block at time t and a corresponding preprocessed source frame block at time t−1;
if the variance satisfies the variance threshold then marking the source block as a moving object edge block;
if the variance fails to satisfy the variance threshold, marking the source block as static; and
identifying moving objects with the source frame by filling in moving object edge blocks.
20. The source device of
deriving density values for rows and columns of the source frame by accumulating a number of moving blocks for each row and column in the source frame; and
generating a rectangle of moving blocks around the source blocks previously marked as the moving object edge blocks.
21. The source device of
perform false object detection by, for each source block identified as moving, determining whether there exists at least one other block between the source block and two adjacent frame borders, wherein the at least one other block is identified as moving; and
in response to determination that no block identified as moving exists between the source block and the two adjacent frame borders, marking the source block as static.
22. The source device of
use dynamic programming to determine, for each source block marked as moving, whether there exists at least one other block identified as moving.
23. The source device of
adapt the block-based temporal denoising filter based on the estimate noise level of a source frame.
24. The source device of
25. The source device of
26. The source device of
27. The source device of
in response to a low noise level estimation for the source frame, noise filtering is decreased by lowering the difference threshold; and
in response to a high noise level estimation for the source frame, noise filtering is increased by increasing the difference threshold.
28. The source device of
adapting the moving object detection based on noise level and block position.
29. The source device of
in response to a low noise level estimation for a source frame, lowering the variance threshold; and
in response to a high noise level estimation for a source frame, lowering a variance threshold for blocks in the center of the source frame; and
increasing the variance threshold for blocks on the source frame border.
|
Video conferencing with mobile devices is becoming more and more commonplace. However, video captured with a mobile device is often noisy due to the space/size constraints of the video capturing devices on the mobile device.
The video capturing device, e.g., camera, charge-coupled device (CCD), CMOS image sensor, and the like, provided in mobile devices have much smaller image sensors than stand-alone cameras. As a result, when video is captured/recorded on a mobile device, especially in low-light conditions, the resulting images/videos are often noisy.
Although there are various known processes for reducing noise from captured video footage, many of these known video noise reduction filters (VNRs) are not only processor intensive but are not capable of being implemented in real-time interactive applications, such as video conferencing, where low-delay, for example, 200 ms or less, is an essential requirement. Furthermore, many conventional real-time VNR algorithms are codec specific.
Many of the conventional VNRs that are suitable for real-time interactive applications are often embedded in the codec and/or make use of encoding data, for example, motion vectors, computed as part of the coding process. As a result these conventional VNRs are considered internal VNRs. An alternative to conventional internal VNRs is to parse the bitstream of the codec and use the parsed information in an external denoising component. However, this alternative is not universally applicable and depends on the codec (via the parsing), also the parsed information from the bitstream can only be extracted from the previous frame and hence introduces some delay and/or visual artifacts.
Video conferencing platforms/applications may be used in may products, such as Google Hangouts™, Facebook Messenger™, Amazon Mayday™ and Snapchat™. These platforms/application may support several video codecs, for example, VP8, VP9, and H.264. Although some of the standardized codecs, such as, VP8 and VP9, may have internal video noise filters (VNRs), which are embedded in the encoder and use information collected from the encoder, such as motion vectors, hardware codecs are emerging, which normally do not have video noise filters.
Accordingly, a need exists for a codec independent video noise reduction filter (VNR) capable of meeting the processing requirements of video conferencing applications on mobile devices.
This specification describes technologies relating to temporal noise filtering in general, and specifically to methods and systems for adaptive denoising of source video in a video conferencing application where in the denoising process is independent of the utilized codec and utilizes moving object detection.
In general, one aspect of the subject matter described in this specification can be embodied in a method or source device for adaptive noise filtering of source video prior to encoding in a video conferencing system, the method comprising: receiving source frames from a video capturing device; preprocessing the received source frames by removing noise from one or more blocks of a source frame; encoding the preprocessed source frames; and transmitting, over a network, the encoded frames to at least one endpoint.
According to an embodiment, removing noise from one or more blocks of a source frame comprises: dividing the source frame into a plurality of blocks, each block having N×N pixels, N being an integer; and generating a preprocessed source frame by adaptively applying a block-based temporal denoising filter to the plurality of source blocks, where a preprocessed source frame includes at least one filtered block and at least one source block.
According to other embodiments adaptively applying a block-based temporal denoising filter to the plurality of source blocks, comprises: for each of the plurality of source blocks, determining whether an absolute difference between a sum of block pixels in a corresponding denoised block at time t−1 minus a sum of block pixels in a source block at time t satisfies a difference threshold; and in response to a determination that the difference threshold is satisfied identifying the source block as moving, and otherwise identifying the source block as static; and for each of the plurality of source blocks, if the source blocks is identified as moving, coping the source block into the preprocessed frame and if the source block is identified as static, copying a noise filtered version of the source block into the preprocessed frame.
According to other embodiments the adaptive noise filtering method includes performing moving object detection to determine which of the plurality of source blocks are moving blocks. The moving object detection may be variance-based. The variance-based moving object detection comprises: for each of the plurality of source blocks, determining a variance between a corresponding noise filtered block at time t and a corresponding preprocessed source frame block at time t−1; if the variance satisfies a predefined variance threshold then marking the source block as a moving object edge block, otherwise marking the source block as static; identifying moving objects with the source frame by filling in the moving object edge blocks.
According to further embodiments, detecting moving objects with the source frame may include deriving density values for the rows and columns of the source frame by accumulating the number of moving blocks for each row and column in the source frame; and generating a rectangle of moving blocks around the blocks previously marked as moving object edge blocks. According to a further aspect, performing false object detection may be performed by, for each block marked as moving object block, determining whether there exists a moving object block between it and two adjacent frame borders, and in response to a determination that no moving block exists, marking the block as static.
According to yet further embodiments, aspects may use dynamic programming to determine, for each block marked as a moving object block, whether there exists a moving object block between it and two adjacent frame borders.
According to other embodiments, aspects may perform a noise level estimation for the source frames; and adapt the block-based temporal denoising filter based on the estimate noise level of a source frame.
In at least some aspects, the noise level estimation is binary and uses a variance metric to distinguish high and low noise levels.
According to a further embodiment, the noise level estimation may include calculating a noise value using
and M is the number of consecutive static blocks; temporally averaging the calculated noise value on a fixed running window of a predetermined number of frames; determining, for a current frame, whether the average noise level satisfies a noise threshold; and in response to a determination that the average noise level satisfies the noise threshold setting the noise level as high and otherwise setting the noise level as low.
According to at least some aspects, more weight is given to darker blocks.
According to a yet further embodiment, adapting the block-based temporal denoising filter based on the estimate noise level of a source frame includes: in response to a low noise level estimation for a source frame, noise filtering is decreased by lowering the difference threshold; and in response to a high noise level estimation for a source frame, noise filtering is increased by increasing the difference threshold.
According to a still further embodiment, adapting the block-based temporal denoising filter based on the estimate noise level of a source frame further includes: adapting the moving object detection based on noise level and block position.
In at least some aspects, adapting the moving object detection based on noise level and block position, may include: in response to a low noise level estimation for a source frame, lowering the variance threshold; and in response to a high noise level estimation for a source frame, lowering the variance threshold for blocks in the center of the source frame; and increasing the variance threshold for blocks on the source frame border.
According to another embodiment, a source device is disclosed for adaptive noise filtering of source video prior to encoding in a video conferencing system, the source device including: a video capture device that captures video source frames; an external video noise filter, configured to receive source frames from the video capturing device; preprocess the received source frames by removing noise from one or more blocks of a source frame; a video codec configured to receive the preprocessed source frame; generate an encoded video bitstream, by encoding the preprocessed source frames; and a processor configured to transmit, over a network, the encoded video bistream to at least one endpoint.
According to a yet further embodiment, removing noise from one or more blocks of a source frame includes: dividing the source frame into a plurality of blocks, each block having N×N pixels, N being an integer; and generating a preprocessed source frame by adaptively applying a block-based temporal denoising filter to the plurality of source blocks, where a preprocessed source frame includes at least one filtered block and at least one source block.
In at least some aspects, adaptively applying a block-based temporal denoising filter to the plurality of source blocks, includes: for each of the plurality of source blocks, determining whether an absolute difference between a sum of block pixels in a corresponding denoised block at time t−1 minus a sum of block pixels in a source block at time t satisfies a difference threshold; and in response to a determination that the difference threshold is satisfied identifying the source block as moving, and otherwise identifying the source block as static; and for each of the plurality of source blocks, if the source block is identified as moving, coping the source block into the preprocessed frame and if the source block is identified as static, copying a noise filtered version of the source block into the preprocessed frame.
In at least some aspects, the external video noise filter is further configured to perform moving object detection to determine which the of the plurality of source blocks are moving blocks.
In at least some embodiments, the moving object detection is variance based. Moreover, variance-based moving object detection may include: for each of the plurality of source blocks, determining a variance between a corresponding noise filtered block at time t and a corresponding preprocessed source frame block at time t−1; if the variance satisfies a predefined variance threshold then marking the source block as a moving object edge block, otherwise marking the source block as static; identifying moving objects with the source frame by filling in the moving object edge blocks.
In another embodiment, detecting moving objects with the source frame includes: deriving density values for the rows and columns of the source frame by accumulating the number of moving blocks for each row and column in the source frame; generating a rectangle of moving blocks around the blocks previously marked as moving object edge blocks.
In a yet further embodiment, the external video noise filter is further configured to perform false object detection by, for each block marked as moving object block, determining whether there exists a moving object block between it and two adjacent frame borders, and in response to a determination that no moving block exists, marking the block as static.
In a still further embodiment, the external video noise filter is further configured to: use dynamic programming to determine, for each block marked as a moving object block, whether there exists a moving object block between it and two adjacent frame borders.
In a yet still further embodiment, the external video noise filter is further configured to: perform a noise level estimation for the source frames; and adapt the block-based temporal denoising filter based on the estimate noise level of a source frame.
In a further aspect, the noise level estimation is binary and uses a variance metric to distinguish high and low noise levels. Moreover, the noise level estimation may include: calculating a noise value using
and M is the number of consecutive static blocks; temporally averaging the calculated noise value on a fixed running window of a predetermined number of frames; determining, for a current frame, whether the average noise level satisfies a noise threshold; and in response to a determination that the average noise level satisfies the noise threshold setting the noise level as high and otherwise setting the noise level as low.
In a still further embodiment, more weight is given to darker blocks.
In a further embodiment, adapting the block-based temporal denoising filter based on the estimate noise level of a source frame includes: in response to a low noise level estimation for a source frame, noise filtering is decreased by lowering the difference threshold; and in response to a high noise level estimation for a source frame, noise filtering is increased by increasing the difference threshold.
In a yet further embodiment, adapting the block-based temporal denoising filter based on the estimate noise level of a source frame further includes: adapting the moving object detection based on noise level and block position.
In a still further embodiment, adapting the moving object detection based on noise level and block position includes: in response to a low noise level estimation for a source frame, lowering the variance threshold; and in response to a high noise level estimation for a source frame, lowering the variance threshold for blocks in the center of the source frame; and increasing the variance threshold for blocks on the source frame border.
The details of one or more embodiments are set forth in the accompanying drawings which are given by way of illustration only, and the description below. Other features, aspects, and advantages of the disclosed embodiments will become apparent from the description, the drawings, and the claims. Like reference numbers and designations in the various drawings indicate like elements.
The disclosed embodiments provide systems and methods for adaptive video noise filtering of source video prior to encoding, in general, and specifically to an external adaptive video noise filtering process, with moving object detection, prior to encoding.
According to exemplary embodiments, the moving object detection (MOD) based external video noise reduction filter (VNR) is designed to be suitable for interactive, i.e., real-time, video conferencing applications, where low-delay, for example, 200 ms or less, is an essential requirement. The external VNR improves video quality when the source video is noisy due to hardware constraints, for example, mobile devices which have limited power and processing capabilities in addition to cameras which typically introduce noise to the captured signal.
As shown in
Referring to
Generation of the preprocessed source frame (step 301) includes several steps. As shown in
Referring back to step 301, the source frame is divided into L blocks, each block having N×N pixels. Both L and N are integers and L equals the total number of pixels in the source frame divided by N2. The number N of pixels in each block, according to an exemplary embodiment is determined using a conventional algorithm which factors in the resolution of the raw video frame into the determination of N such that the N used for high definition video is larger than the N used for standard definition video. For the purposes of this disclosure, the buffered video frame may be divided into a plurality, L, of 16×16 blocks.
According to an example embodiment, the block-based temporal noise filtering process (step 323) by be adaptively performed as shown in
where N is the number of pixels in a block (e.g., 256), pt−1(i) is the ith of the pixel luma, also referred to as brightness, of a noise filtered block at time t−1, and st(i) is the ith sample the source block at time t.
The above sum difference filtering technique works well in noisy regions where no objects are in motion; however it has difficulty in low-detail moving areas, such as a forehead, because the sum difference can remain below the difference threshold despite there being movement, causing the noise filter to be inappropriately applied, resulting in unnatural blocking and smoothing. Therefore, according to exemplary embodiments, the block-based temporal noise filtering process (step 323) may include performing moving object detection to identify which of the plurality of N×N source blocks are moving blocks (Step 330) and/or performing noise level estimation to adapt the filtering thresholds (step 331).
Because the video noise filter 107 is external to the encoder, it does not have access to motion vector information. Furthermore, in order to meet the low delay requirements of real-time video conferencing application, the video noise filter cannot compute motion vectors. Therefore, the moving object detection process relies on other metrics, for example, sum difference, absolute difference, variance and the like to detect motion. The absolute difference, absdifft(i), is the difference between the ith pixel in the source block at time t and the ith pixel in the filtered a block at time t−1 as shown in Equation (2) below.
absdifft=|st(i)−pt−1(i)| Eq. (2)
where st(i) is the ith pixel at time t, pt−1 is the ith pixel in the noise filtered block at time t−1. The variance of two blocks at time t and t−1, denoted bt and bt−1 respectively, is defined as:
According to an example embodiment, the moving object detection process 330 utilizes the variance metric to detect motion that is largely camera independent. As shown in
variance(,pt−1)≥var_thresold? marked as moving block: marked as static block Eq. (4)
Referring back to
Returning back to the moving object detection process 330, because the above variance based process (steps 402-406) typically detects the blocks which contain a moving edge, but does not identify the non-edge containing blocks as moving which, for flat moving objects, such as a forehead, or moving door, can provide undesirable results. The moving object detection process fills in the blocks surrounded by the moving-edge-detected blocks to prevent generating artifacts on the moving flat blocks. The fill in process 208 derives density values for the rows and columns of the frame by accumulating the number of moving blocks for each row and column (step 408), and then generates a rectangle of blocks which include the moving edge blocks (step 410).
As shown in
Because visual artifacts (e.g., motion trailing, blocking) can arise from the block-based temporal denoiser 214, especially when the filter strength is strong, the noise estimation 206 is employed to adapt the external denoising filter 214. In addition, the noise estimation may be used to adapt the moving object edge block detection 204 of the Moving object detector 210.
Referring to
and M is the number of consecutive static blocks.
An average noise value is calculated (step 603) by temporally averaging on a fixed running window, for example 16 frames. Then the noise level for the current source frame is determined by comparing the average noise value to a predetermined noise threshold (step 605). Based on the results of the comparison, the noise level may be set using a binary value, e.g., low or high using the following algorithm:
noise level=average noise value>noise threshold? high noise: low noise (6)
where average noise value is a recursive average of noise value for 16 frames.
The variance threshold utilized by the moving object detection process 330 and the difference threshold utilized by the block-based temporal noise filtering process 323 may be adapted based on the noise level. According to an example embodiment, if the average noise level fails to satisfies a predefined noise threshold (no path out of step 604), then the a low variance threshold is utilized (step 607) in the moving object detection process 330 and a lower difference threshold is utilized (step 609) in the temporal noise filtering process 323. If the average noise level satisfies the predefined threshold (Yes path out of step 605), then a higher difference threshold is utilized (step 613) in the temporal noise filtering process 323 and a low variance threshold is utilized for center position blocks and a high variance threshold on border position blocks is utilized in the moving object detection process 330 (step 611). Center blocks are predefined based on the video conferencing application. For example, the center blocks may be predefined to cover the area where a human face is likely to be during a video conference.
Depending on the desired configuration, the processor (710) can be of any type including but not limited to a microprocessor (μP), a microcontroller (μC), a digital signal processor (DSP), or any combination thereof. The processor (710) can include one more levels of caching, such as a level one cache (711) and a level two cache (712), a processor core (713), and registers (714). The processor core (713) can include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. A memory controller (716) can also be used with the processor (710), or in some implementations the memory controller (715) can be an internal part of the processor (710).
Depending on the desired configuration, the system memory (720) can be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.) or any combination thereof. System memory (720) typically includes an operating system (721), one or more applications (722), and program data (724). The application (722) may include a video conferencing application and an adaptive denoising process for captured video. In some embodiments, the application (722) can be arranged to operate with program data (724) on an operating system (721).
The computing device (700) can have additional features or functionality, and additional interfaces to facilitate communications between the basic configuration (701) and any required devices and interfaces.
The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, flowcharts, and/or examples. Insofar as such block diagrams, flowcharts, and/or examples contain one or more functions and/or operations, it will be understood by those within the art that each function and/or operation within such block diagrams, flowcharts, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof. In one embodiment, several portions of the subject matter described herein may be implemented via Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), digital signal processors (DSPs), other integrated formats, or as a web service. However, those skilled in the art will recognize that some aspects of the embodiments disclosed herein, in whole or in part, can be equivalently implemented in integrated circuits, as one or more computer programs running on one or more computers, as one or more programs running on one or more processors, as firmware, or as virtually any combination thereof, and that designing the circuitry and/or writing the code for the software and or firmware would be well within the skill of one of skill in the art in light of this disclosure. In addition, those skilled in the art will appreciate that the mechanisms of the subject matter described herein are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the subject matter described herein applies regardless of the particular type of non-transitory signal bearing medium used to actually carry out the distribution. Examples of a non-transitory signal bearing medium include, but are not limited to, the following: a recordable type medium such as a floppy disk, a hard disk drive, a Compact Disc (CD), a Digital Video Disk (DVD), a digital tape, a computer memory, etc.; and a transmission type medium such as a digital and/or an analog communication medium. (e.g., fiber optics cable, a waveguide, a wired communications link, a wireless communication link, etc.)
Thus, particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.
Horowitz, Michael, Paniconi, Marco, Chen, Jing
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6130912, | Jun 09 1998 | Sony Electronics, INC; Sony Corporation | Hierarchical motion estimation process and system using block-matching and integral projection |
6285710, | Oct 13 1993 | THOMSON LICENING S A | Noise estimation and reduction apparatus for video signal processing |
6614847, | Oct 25 1996 | Texas Instruments Incorporated | Content-based video compression |
7551232, | Nov 14 2005 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Noise adaptive 3D composite noise reduction |
7920628, | Jul 29 2005 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Noise filter for video compression |
8098256, | Sep 29 2005 | Apple Inc | Video acquisition with integrated GPU processing |
8149336, | May 07 2008 | Honeywell International Inc. | Method for digital noise reduction in low light video |
8254438, | Dec 05 2005 | British Telecommunications public limited company | Video quality measurement |
8280182, | Jul 29 2008 | Sonix Technology Co., Ltd. | Image processing method of noise reduction and apparatus thereof |
8311129, | Dec 16 2005 | LIFESIZE, INC | Temporal video filtering |
8385425, | Oct 25 2007 | Microsoft Technology Licensing, LLC | Temporal video filtering for real time communication systems |
8447069, | Dec 10 2009 | Industrial Technology Research Institute | Apparatus and method for moving object detection |
8629937, | Jul 25 2012 | VIXS Systems, Inc | Motion adaptive filter and deinterlacer and methods for use therewith |
9462163, | Oct 10 2009 | Ittiam Systems (P) Ltd. | Robust spatiotemporal combining system and method for video enhancement |
9633416, | Dec 26 2015 | Intel Corporation | Adaptive control for denoise filtering |
20060198441, | |||
20080134094, | |||
20090153739, | |||
20140105498, | |||
20140193070, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 24 2016 | CHEN, JING | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 039950 | /0418 | |
Aug 24 2016 | PANICONI, MICHAEL | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 039950 | /0418 | |
Aug 24 2016 | CHEN, JING | Google Inc | CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND ASSIGNOR S NAME PREVIOUSLY RECORDED ON REEL 039950 FRAME 0418 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT | 040354 | /0791 | |
Aug 24 2016 | PANICONI, MARCO | Google Inc | CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND ASSIGNOR S NAME PREVIOUSLY RECORDED ON REEL 039950 FRAME 0418 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT | 040354 | /0791 | |
Aug 31 2016 | HOROWITZ, MICHAEL | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 039950 | /0418 | |
Aug 31 2016 | HOROWITZ, MICHAEL | Google Inc | CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND ASSIGNOR S NAME PREVIOUSLY RECORDED ON REEL 039950 FRAME 0418 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT | 040354 | /0791 | |
Sep 01 2016 | GOOGLE LLC | (assignment on the face of the patent) | / | |||
Sep 29 2017 | Google Inc | GOOGLE LLC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 044567 | /0001 |
Date | Maintenance Fee Events |
Aug 07 2023 | REM: Maintenance Fee Reminder Mailed. |
Jan 22 2024 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Dec 17 2022 | 4 years fee payment window open |
Jun 17 2023 | 6 months grace period start (w surcharge) |
Dec 17 2023 | patent expiry (for year 4) |
Dec 17 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 17 2026 | 8 years fee payment window open |
Jun 17 2027 | 6 months grace period start (w surcharge) |
Dec 17 2027 | patent expiry (for year 8) |
Dec 17 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 17 2030 | 12 years fee payment window open |
Jun 17 2031 | 6 months grace period start (w surcharge) |
Dec 17 2031 | patent expiry (for year 12) |
Dec 17 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |