IP Library › Granted Patent US 11,477,493
Granted Patent B2
US 11,477,493 · App. 15/671,595 · Granted Oct 18, 2022

Adaptation for entropy coding of blocks of image data

Inventors: Ruijie Xu (Sunnyvale, CA); Dake He (Sunnyvale, CA)
Assignee: GOOGLE LLC
H04N19/91H04N19/124H04N19/129H04N19/159H04N19/176H04N19/44H04N19/60
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 11,477,493
App. No.
15/671,595
Granted
Oct 18, 2022
Kind
B2
Abstract

Systems and methods are disclosed for entropy coding of blocks of image data. For example, methods may include partitioning a block of video data into a plurality of groups of elements; decoding, using an entropy decoder, data from an encoded bitstream to obtain, using a first scan order, elements of a first group from the plurality of groups of elements, wherein the first group includes elements forming a triangle in a corner of the block, and wherein the triangle includes elements of a first row and elements of a first column of the block; determining, based on the elements of the first group, a second scan order for a second group from the plurality of groups of elements; and decoding, using the entropy decoder, data from the encoded bitstream to obtain, using the second scan order, elements of the second group from the plurality of groups of elements.

Claims (74)

1. A system for decoding video, comprising:

a memory; and

a processor, wherein the memory stores instructions executable by the processor to cause the system to:

partition a block of video data into a plurality of groups of elements;

decode, using an entropy decoder, data from an encoded bitstream to obtain, using a first scan order, elements of a first group from the plurality of groups of elements, wherein the first group includes elements forming a triangle in a corner of the block, and wherein the triangle includes elements of a first row of the block and elements of a first column of the block;

determine, based on the elements of the first group, a second scan order, from a plurality of scan orders, for a second group from the plurality of groups of elements, wherein the plurality of scan orders includes at least one scan order that differs from the first scan order with respect to the first group, wherein, to determine the second scan order, the processor executes the instructions to:

determine a scan order prediction based on the elements of the first group;

decode, using the entropy decoder, data from the encoded bitstream to obtain a scan order adjustment parameter; and

determine the second scan order based on the scan order prediction and the scan order adjustment parameter; and

decode, using the entropy decoder, data from the encoded bitstream to obtain, using the second scan order, elements of the second group from the plurality of groups of elements.

2. The system of claim 1 , wherein the elements of the block are quantized transform coefficients.

3. The system of claim 1 , wherein the first group includes at least one element from:

the first row outside of the triangle;

the first column outside of the triangle; or

the block outside the first row and outside the first column.

4. The system of claim 1 , wherein a shape of the first group is selected based on a size of the block.

5. The system of claim 1 , wherein the memory stores instructions executable by the processor to cause the system to:

determine a sum of magnitudes of all the elements of the first group;

check a parity of the sum; and

enable use of the second scan order based on the parity of the sum.

6. The system of claim 1 , wherein the instructions for determining, based on the elements of the first group, the second scan order for the second group from the plurality of groups of elements include instructions executable by the processor to cause the system to:

determine a first count of non-zero elements in a portion of the first group below a main diagonal of the block and at or above an anti-diagonal of the block;

determine a second count of non-zero elements in a portion of the first group above the main diagonal of the block and at or above the anti-diagonal of the block; and

determine the second scan order based on the first count and the second count.

7. The system of claim 1 , wherein the instructions for determining, based on the elements of the first group, the second scan order for the second group from the plurality of groups of elements include instructions executable by the processor to cause the system to:

determine a first sum of magnitudes of elements in a portion of the first group below a main diagonal of the block and at or above an anti-diagonal of the block;

determine a second sum of magnitudes of elements in a portion of the first group above the main diagonal of the block and at or above the anti-diagonal of the block; and

determine the second scan order based on the first sum and the second sum.

8. A method for decoding video comprising:

partitioning a block of video data into a plurality of groups of elements;

decoding, using an entropy decoder, data from an encoded bitstream to obtain, using a first scan order, elements of a first group from the plurality of groups of elements, wherein the first group includes elements forming a triangle in a corner of the block, and wherein the triangle includes elements of a first row of the block and elements of a first column of the block;

determining, based on the elements of the first group, a second scan order, from a plurality of scan orders, for a second group from the plurality of groups of elements, wherein the plurality of scan orders includes at least one scan order that differs from the first scan order with respect to the first group, wherein determining the second scan order includes:

determining a scan order prediction based on the elements of the first group;

decoding, using the entropy decoder, data from the encoded bitstream to obtain a scan order adjustment parameter; and

determining the second scan order based on the scan order prediction and the scan order adjustment parameter; and

decoding, using the entropy decoder, data from the encoded bitstream to obtain, using the second scan order, elements of the second group from the plurality of groups of elements.

9. The method of claim 8 , wherein the elements of the block are quantized transform coefficients.

10. The method of claim 8 , wherein the first group includes at least one element from:

the first row outside of the triangle;

the first column outside of the triangle; or

the block outside the first row and outside the first column.

11. The method of claim 8 , wherein determining, based on the elements of the first group, the second scan order for the second group from the plurality of groups of elements comprises:

determining a scan order prediction based on the elements of the first group;

decoding, using the entropy decoder, data from the encoded bitstream to obtain a scan order adjustment parameter; and

determining the second scan order based on the scan order prediction and the scan order adjustment parameter.

12. The method of claim 8 , wherein determining, based on the elements of the first group, the second scan order for the second group from the plurality of groups of elements comprises:

determining a first count of non-zero elements in a portion of the first group below a main diagonal of the block and at or above an anti-diagonal of the block;

determining a second count of non-zero elements in a portion of the first group above the main diagonal of the block and at or above the anti-diagonal of the block; and

determining the second scan order based on the first count and the second count.

13. The method of claim 8 , wherein determining, based on the elements of the first group, the second scan order for the second group from the plurality of groups of elements comprises:

determining a first sum of magnitudes of elements in a portion of the first group below a main diagonal of the block and at or above an anti-diagonal of the block;

determining a second sum of magnitudes of elements in a portion of the first group above the main diagonal of the block and at or above the anti-diagonal of the block; and

determining the second scan order based on the first sum and the second sum.

14. A system for encoding video, comprising:

a memory; and

a processor, wherein the memory stores instructions executable by the processor to cause the system to:

partition a block of video data into a plurality of groups of elements;

encode, using an entropy encoder using a first scan order, elements of a first group from the plurality of groups of elements, wherein the first group includes elements forming a triangle in a corner of the block, and wherein the triangle includes elements of a first row of the block and elements of a first column of the block;

determine, based on the elements of the first group, a second scan order, from a plurality of scan orders, for a second group from the plurality of groups of elements, wherein the plurality of scan orders includes at least one scan order that differs from the first scan order with respect to the first group, wherein, to determine the second scan order the memory stores instructions executable by the processor to cause the system to:

determine a scan order prediction based on the elements of the first group; and

encode, using the entropy encoder, a scan order adjustment parameter that is based on the second scan order and the scan order prediction; and

encode, using the entropy encoder using the second scan order, elements of the second group from the plurality of groups of elements.

15. The system of claim 14 , wherein the first group includes at least one element from:

the first row outside of the triangle;

the first column outside of the triangle; or

the block outside the first row and outside the first column.

16. The system of claim 14 , wherein the memory stores instructions executable by the processor to cause the system to:

determine a sum of magnitudes of all the elements of the first group;

check a parity of the sum; and

adjust an element of the first group to change the parity of the sum to signal that use of the second scan order is enabled.

17. The system of claim 14 , wherein the instructions for determining, based on the elements of the first group, the second scan order for the second group from the plurality of groups of elements include instructions executable by the processor to cause the system to:

determine a first count of non-zero elements in a portion of the first group below a main diagonal of the block and at or above an anti-diagonal of the block;

determine a second count of non-zero elements in a portion of the first group above the main diagonal of the block and at or above the anti-diagonal of the block; and

determine the second scan order based on the first count and the second count.

Assignments (2)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2017
From: XU, RUIJIE; HE, DAKE
To: GOOGLE INC.
Reel/Frame 043256/0688 →
Continuity (2)
Continuation 15668745 · Aug 4, 2017
Related Publication 20190045226A1 · Feb 7, 2019