IP Library Granted Patent US 9,955,186
Granted Patent B2
US 9,955,186 · App. 14/992,820 · Granted Apr 24, 2018

Block size decision for video coding

Inventors: Jaehong Chon (San Diego, CA); In Suk Chong (San Diego, CA); Xianglin Wang (San Diego, CA); Cheng-Teh Hsieh (Del Mar, CA)
Assignee: QUALCOMM Incorporated
H04N19/593H04N19/11H04N19/119H04N19/14H04N19/147
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 9,955,186
App. No.
14/992,820
Granted
Apr 24, 2018
Kind
B2
Abstract

An example method includes determining a respective variance value for pixels of each respective sub-block of at least four sub-blocks of a current block of video data of a particular block size; determining an average of the determined variance values for the at least four sub-blocks; determining a maximum difference value for the current block based on the average and the variance values for the at least four sub-blocks; determining whether pixels of the current block are homogeneous based on whether the maximum difference value for the current block satisfies a threshold difference value; and in response to determining that the pixels of the current block are homogeneous, selectively including block sizes that are greater than or equal to a threshold block size in a sub-set of block sizes to evaluate for use when intra encoding the pixels of the current block.

Claims (77)

1. A method for encoding video data, the method comprising:

determining, by a video encoder, a respective variance value for pixels of each respective sub-block of at least four sub-blocks of a current block of video data of a particular block size of a plurality of block sizes, wherein the current block of video data is included in a current picture of video data that includes a plurality of other blocks of video data;

determining, by the video encoder, an average of the determined variance values for the at least four sub-blocks;

determining, by the video encoder, a maximum difference value for the current block as a largest absolute difference between a variance value of each sub-block of the at least four sub-blocks and the determined average;

determining, by the video encoder, that the pixels of the current block are homogeneous based on the maximum difference value for the current block being less than a threshold difference value;

in response to determining that the pixels of the current block are homogeneous, selectively including, by the video encoder, block sizes of the plurality of block sizes that are greater than or equal to a threshold block size of the plurality of block sizes in a sub-set of block sizes to evaluate for use when intra encoding the pixels of the current block; and

evaluating block sizes in the sub-set of block sizes for use when intra encoding the pixels of the current block.

2. The method of claim 1 , wherein the threshold block size is a first threshold block size, the method further comprising:

determining, by the video encoder, that pixels of another block are not homogeneous if a maximum difference value for the other block is not less than the threshold difference value; and

in response to determining that the pixels of the other block are not homogeneous, selectively including block sizes of the plurality of block sizes that are less than or equal to a second threshold block size of the plurality of block sizes in a sub-set of block sizes to evaluate for use when intra encoding the pixels of the other block.

3. The method of claim 2 , wherein the first threshold block size equals the second threshold block size.

4. The method of claim 2 , wherein the first threshold block size is different than the second threshold block size.

5. The method of claim 1 , wherein the threshold block size is a first threshold block size, the method further comprising, in response to determining that the pixels of the current block in the particular block size are not homogeneous:

dividing a current sub-block of the at least four sub-blocks of video data into at least four second sub-blocks of video data;

determining a respective variance value for each respective second sub-block of the at least four second sub-blocks;

determining an average of the determined variance values for the at least four second sub-blocks;

determining a maximum difference value for the current sub-block based on the determined average and the determined variance values for the at least four second sub-blocks;

determining, based on the maximum difference value for the current sub-block, whether pixels of the current sub-block are homogeneous; and

in response to determining that the pixels of the current sub-block are homogeneous, selectively including block sizes of the plurality of block sizes that are greater than or equal to a second threshold block size of the plurality of block sizes but less than the first threshold block size in a sub-set of block sizes to evaluate for use when intra encoding the pixels of the current sub-block.

6. The method of claim 5 , further comprising:

in response to determining that the pixels of the current sub-block are not homogeneous, selectively including block sizes of the plurality of block sizes that are less than or equal to a third threshold block size of the plurality of block sizes in the sub-set of block sizes to evaluate for use when intra encoding the pixels of the current sub-block.

7. The method of claim 1 , further comprising:

determining, for the current block, a horizontal sum of absolute differences (SAD) value using a first pixel in each respective row of the current block as a predictor for the respective row;

determining, for the current block, a vertical SAD value using a first pixel in each respective column of the current block as a predictor for the respective column,

wherein the determination of whether the pixels of the current block are homogeneous is further based on whether a lesser of the horizontal SAD value and the vertical SAD value satisfies a threshold SAD value.

8. The method of claim 7 , further comprising:

determining a variance value for the current block,

wherein the determination of whether the pixels of the current block are homogeneous is further based on whether the variance value for the current block satisfies a threshold variance value.

9. The method of claim 8 , wherein determining whether the pixels of the current block are homogeneous comprises determining that the pixels of the current block are homogeneous in response to determining that:

the maximum difference value for the current block is less than the threshold difference value,

the lesser of the horizontal SAD value and the vertical SAD value is less than the threshold SAD value, or

the variance value for the current block is less than the threshold variance value.

10. The method of claim 8 , wherein the threshold difference value, the threshold SAD value, and the threshold variance value are fixed.

11. The method of claim 8 , further comprising:

adaptively determining one or more of the threshold difference value, the threshold SAD value, and the threshold variance value.

12. The method of claim 1 , wherein evaluating the block sizes in the sub-set of block sizes comprises:

determining a respective rate-distortion (RD) cost for each respective block size in the sub-set of block sizes, the method further comprising:

encoding, in a coded video bitstream, an indication that at least a portion of the pixels of the current block are intra encoded using the block size in the sub-set of block sizes with the lowest RD cost.

13. A video encoding device comprising:

a memory configured to store a current block of video data; and

one or more processors configured to:

determine a respective variance value for pixels of each respective sub-block of at least four sub-blocks of the current block of video data of a particular block size of a plurality of block sizes, wherein the current block of video data is included in a current picture of video data that includes a plurality of other blocks of video data;

determine an average of the determined variance values for the at least four sub-blocks;

determine a maximum difference value for the current block as a largest absolute difference between a variance value of each sub-block of the at least four sub-blocks and the determined average;

determine that the pixels of the current block are homogeneous if the maximum difference value for the current block is less than a threshold difference value;

selectively include, in response to determining that the pixels of the current block are homogeneous, block sizes of the plurality of block sizes that are greater than or equal to a threshold block size of the plurality of block sizes in a sub-set of block sizes to evaluate for use when intra encoding the pixels of the current block; and

evaluate block sizes in the sub-set of block sizes for use when intra encoding the pixels of the current block.

14. The video encoding device of claim 13 , wherein the threshold block size is a first threshold block size, and wherein the one or more processors are further configured to:

determine that the pixels of the current block are not homogeneous if the maximum difference value for the current block is not less than the threshold difference value; and

selectively include, in response to determining that the pixels of the current block are not homogeneous, block sizes of the plurality of block sizes that are less than or equal to a second threshold block size of the plurality of block sizes in the sub-set of block sizes to evaluate for use when intra encoding the pixels of the current block.

15. The video encoding device of claim 13 , wherein the threshold block size is a first threshold block size, and wherein, in response to determining that the pixels of the current block in the particular block size are not homogeneous, the one or more processors are configured to:

divide a current sub-block of the at least four sub-blocks of video data into at least four second sub-blocks of video data;

determine a respective variance value for each respective second sub-block of the at least four second sub-blocks;

determine an average of the determined variance values for the at least four second sub-blocks;

determine a maximum difference value for the current sub-block based on the determined average and the determined variance values for the at least four second sub-blocks;

determine, based on the maximum difference value for the current sub-block, whether pixels of the current sub-block are homogeneous; and

selectively include, in response to determining that the pixels of the current sub-block are homogeneous, block sizes of the plurality of block sizes that are greater than or equal to a second threshold block size of the plurality of block sizes but less than the first threshold block size in a sub-set of block sizes to evaluate for use when intra encoding the pixels of the current sub-block.

16. The video encoding device of claim 15 , wherein the one or more processors are further configured to:

selectively include, in response to determining that the pixels of the current sub-block are not homogeneous, block sizes of the plurality of block sizes that are less than or equal to a third threshold block size of the plurality of block sizes in the sub-set of block sizes to evaluate for use when intra encoding the pixels of the current sub-block.

17. The video encoding device of claim 13 , wherein the one or more processors are further configured to:

determine, for the current block, a horizontal sum of absolute differences (SAD) value using a first pixel in each respective row of the current block as a predictor for the respective row;

determine, for the current block, a vertical SAD value using a first pixel in each respective column of the current block as a predictor for the respective column,

wherein the determination of whether the pixels of the current block are homogeneous is further based on whether a lesser of the horizontal SAD value and the vertical SAD value satisfies a threshold SAD value.

18. The video encoding device of claim 17 , wherein the one or more processors are further configured to:

determine a variance value for the current block,

wherein the determination of whether the pixels of the current block are homogeneous is further based on whether the variance value for the current block satisfies a threshold variance value.

19. The video encoding device of claim 18 , wherein the one or more processors are configured to determine that the pixels of the current block are homogeneous in response to determining that:

the maximum difference value for the current block is less than the threshold difference value,

the lesser of the horizontal SAD value and the vertical SAD value is less than the threshold SAD value, or

the variance value for the current block is less than the threshold variance value.

20. A non-transitory computer-readable storage medium storing instructions that, when executed by one or more processors of a video encoder, cause the one or more processors to:

determine a respective variance value for pixels of each respective sub-block of at least four sub-blocks of a current block of video data of a particular block size of a plurality of block sizes, wherein the current block of video data is included in a current picture of video data that includes a plurality of other blocks of video data;

determine an average of the determined variance values for the at least four sub-blocks;

determine a maximum difference value for the current block as a largest absolute difference between a variance value of each sub-block of the at least four sub-blocks and the determined average;

determine that the pixels of the current block are homogeneous if the maximum difference value for the current block is less than a non-zero threshold difference value;

selectively include, in response to determining that the pixels of the current block are homogeneous, block sizes of the plurality of block sizes that are greater than or equal to a threshold block size of the plurality of block sizes in a sub-set of block sizes to evaluate for use when intra encoding the pixels of the current block; and

evaluate block sizes in the sub-set of block sizes for use when intra encoding the pixels of the current block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 29, 2016
From: CHON, JAEHONG; CHONG, IN SUK; WANG, XIANGLIN; HSIEH, CHENG-TEH
To: QUALCOMM INCORPORATED
Reel/Frame 037853/0128 →
Continuity (1)
Related Publication 20170201769A1 · Jul 13, 2017