IP Library › Granted Patent US 10,003,792
Granted Patent B2
US 10,003,792 · App. 14/360,911 · Granted Jun 19, 2018

Video encoder for images

Inventors: Xiulian Peng (Beijing, CN); Fei Liang (Beijing, CN); Ji-Zheng Xu (Beijing, CN); Feng Wu (Beijing, CN)
Assignee: Microsoft Technology Licensing, LLC
H04N19/00569H04N19/119H04N19/136H04N19/14H04N19/146H04N19/147H04N19/176H04N19/192H04N19/96
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,003,792
App. No.
14/360,911
Granted
Jun 19, 2018
Kind
B2
Abstract

Some implementations can compress a digital image to create a compressed image corresponding to the digital image. The digital image can be divided into a plurality of coding units and a determination can be made whether to divide each coding unit of the plurality of coding units into smaller coding units/prediction units based on (i) a range of pixel values in each coding unit and/or (ii) a number of bits to encode the coding unit. Rate distortion optimization can be performed based on a size of each of the prediction units. A determination can be made whether to perform a transform for each of the transform units based on a size of each prediction unit and/or a spatial frequency measure associated with each transform unit.

Claims (69)

1. One or more computer-readable memory or storage devices having stored thereon computer-executable instructions for causing a computing system programmed thereby to perform operations comprising:

encoding an image using a video encoder, including, for a current coding unit (CU) of the image:

determining CU size of the current CU;

determining a range of pixel values in the current CU, including:

determining a maximum pixel value among the pixel values in the current CU;

determining a minimum pixel value among the pixel values in the current CU; and

determining, for the range of pixel values in the current CU, a difference between the maximum pixel value and the minimum pixel value;

based at least in part on the determined CU size of the current CU, selecting a range threshold;

encoding the current CU;

determining a number of bits used to code the current CU; and

based at least in part on (a) the range of pixel values in the current CU and (b) the number of bits used to code the current CU, determining whether to split the current CU into smaller CUs and/or prediction units (PUs) for encoding, including comparing the range of pixel values in the current CU to the selected range threshold; and

outputting the encoded image as part of a coded bit stream.

2. The one or more computer-readable memory or storage devices of claim 1 wherein the image is a still image, and wherein the operations further comprise:

setting CU size to be less than maximum CU size;

setting CU depth to be less than maximum CU depth; and

disabling residual quadtree coding, such that transform unit (TU) size equals PU size.

3. The one or more computer-readable memory or storage devices of claim 1 wherein:

the encoding the image further includes, based at least in part on the determined CU size of the current CU, selecting a bits threshold that is different than the range threshold; and

the determining whether to split the current CU further includes comparing the number of bits used to code the current CU to the selected bits threshold.

4. The one or more computer-readable memory or storage devices of claim 1 wherein the encoding the image further includes, for a particular PU of the image, determining an intra prediction mode for the particular PU using a gradient mode histogram.

5. The one or more computer-readable memory or storage devices of claim 1 wherein the encoding the image further includes, for a particular PU of the image, determining an intra prediction mode for the particular PU using a hierarchical prediction scheme with a coarse-to-fine decision-making process for intra angular prediction modes.

6. The one or more computer-readable memory or storage devices of claim 1 wherein the encoding the image further includes, for a particular PU of the image:

calculating a spatial frequency measure (SFM) for the particular PU; and

determining whether to use a transform for the particular PU based at least in part on the SFM for the particular PU.

7. The one or more computer-readable memory or storage devices of claim 6 wherein the determining whether to use the transform includes:

comparing the SFM for the particular PU to a SFM threshold;

if the SFM for the particular PU is below the SFM threshold, using the transform for the particular PU; and

otherwise, performing rate-distortion optimization (RDO) with respect to using or skipping the transform for the particular PU.

8. A method comprising:

encoding an image, including, for a current coding unit (CU) of the image:

determining CU size of the current CU;

determining a range of pixel values in the current CU, including:

determining a maximum pixel value among the pixel values in the current CU;

determining a minimum pixel value among the pixel values in the current CU; and

determining, for the range of pixel values in the current CU, a difference between the maximum pixel value and the minimum pixel value;

based at least in part on the determined CU size of the current CU, selecting a range threshold;

encoding the current CU;

determining a number of bits used to code the current CU; and

based at least in part on (a) the range of pixel values in the current CU and (b) the number of bits used to code the current CU, determining whether to split the current CU into smaller CUs and/or prediction units (PUs) for encoding, including comparing the range of pixel values in the current CU to the selected range threshold;

and

outputting the encoded image as part of a coded bit stream.

9. The method of claim 8 wherein the image is a still image, and wherein the method further comprises:

setting CU size to be less than maximum CU size;

setting CU depth to be less than maximum CU depth; and

disabling residual quadtree coding, such that transform unit (TU) size equals PU size.

10. The method of claim 8 wherein:

the encoding the image further includes, based at least in part on the determined CU size of the current CU, selecting a bits threshold that is different than the range threshold; and

the determining whether to split the current CU further includes comparing the number of bits used to code the current CU to the selected bits threshold.

11. A computing device comprising one or more processors and one or more computer-readable storage media having stored thereon computer-executable instructions for causing the computing device to perform operations comprising:

encoding an image, including, for a current coding unit (CU) of the image:

determining CU size of the current CU;

determining a range of pixel values in the current CU, including:

determining a maximum pixel value among the pixel values in the current CU;

determining a minimum pixel value among the pixel values in the current CU; and

determining, for the range of pixel values in the current CU, a difference between the maximum pixel value and the minimum pixel value;

based at least in part on the determined CU size of the current CU, selecting a range threshold;

encoding the current CU;

determining a number of bits used to code the current CU; and

based at least in part on (a) the range of pixel values in the current CU and (b) the number of bits used to code the current CU, determining whether to split the current CU into smaller CUs and/or prediction units (PUs) for encoding, including comparing the range of pixel values in the current CU to the selected range threshold; and

outputting the encoded image as part of a coded bit stream.

12. The computing device of claim 11 wherein the image is a still image, and wherein the operations further comprise:

setting CU size to be less than maximum CU size;

setting CU depth to be less than maximum CU depth; and

disabling residual quadtree coding, such that transform unit (TU) size equals PU size.

13. The computing device of claim 11 wherein:

the encoding the image further includes, based at least in part on the determined CU size of the current CU, selecting a bits threshold that is different than the range threshold; and

the determining whether to split the current CU further includes comparing the number of bits used to code the current CU to the selected bits threshold.

14. The computing device of claim 11 wherein the encoding the image further includes, for a particular PU of the image, determining an intra prediction mode for the particular PU using a gradient mode histogram or using a hierarchical prediction scheme with a coarse-to-fine decision-making process for intra angular prediction modes.

15. The method of claim 8 wherein the encoding the image further includes, for a particular PU of the image, determining an intra prediction mode for the particular PU using a gradient mode histogram or using a hierarchical prediction scheme with a coarse-to-fine decision-making process for intra angular prediction modes.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2014
From: PENG, XIULIAN; LIANG, FEI; XU, JI-ZHENG; WU, FENG
To: MICROSOFT CORPORATION
Reel/Frame 032975/0739 →
Continuity (1)
Related Publication 20150016521A1 · Jan 15, 2015