IP Library Granted Patent US 11,335,032
Granted Patent B2
US 11,335,032 · App. 17/003,565 · Granted May 17, 2022

Rate controlled image and texture data compression

Inventors: Cheng Chang (Redmond, WA); Zhi Zhou (Issaquah, WA); Richard Webb (Sammamish, WA); Richard Lawrence Greene (Kirkland, WA)
Assignee: Facebook Technologies, LLC.
G06T9/00
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,335,032
App. No.
17/003,565
Granted
May 17, 2022
Kind
B2
Abstract

In one embodiment, a computing system may determine a quantization range having a first quantization endpoint and a second quantization endpoint. While fixing the second quantization endpoint to an initial value determined based on the color range, one of a plurality of first candidate values for the first quantization endpoint is selected based on a plurality of corresponding first quantization errors. While fixing the first quantization endpoint to the selected first candidate value, one of a plurality of second candidate values for the second quantization endpoint is selected based on a plurality of corresponding second quantization errors. The computing system may define quantization levels corresponding to the bit depth using the quantization range defined by the first quantization endpoint and the second quantization endpoint, and then encode the one or more color components of the pixel region using the quantization levels.

Claims (65)

1. A method implemented by a computing system, the method comprising:

determining a bit depth for encoding one or more color components of a pixel region in an image, the one or more color components having a color range;

determining a quantization range having a first quantization endpoint and a second quantization endpoint by:

while fixing the second quantization endpoint to an initial value determined based on the color range, selecting one of a plurality of first candidate values for the first quantization endpoint based on a plurality of corresponding first quantization errors; and

while fixing the first quantization endpoint to the selected first candidate value, selecting one of a plurality of second candidate values for the second quantization endpoint based on a plurality of corresponding second quantization errors;

defining quantization levels corresponding to the bit depth using the quantization range defined by the first quantization endpoint and the second quantization endpoint; and

encoding the one or more color components of the pixel region using the quantization levels.

2. The method of claim 1 , wherein determining the quantization range comprises having comprises determining a maximum quantization level and a minimum quantization level corresponding to the bit depth.

3. The method of claim 2 , further comprising:

while fixing the second quantization endpoint to the maximum quantization level:

performing a first search for the plurality of first candidate values for the first quantization endpoint based on the maximum quantization level and the minimum quantization level;

determining a quantization error associated with each of the plurality of first candidate values; and

setting the first quantization endpoint to the one of the plurality of first candidate values corresponding to a lowest quantization error.

4. The method of claim 3 , wherein performing the first search for the plurality of first candidate values for the first quantization endpoint comprises performing a search for M candidate values for the first quantization endpoint.

5. The method of claim 4 , further comprising:

while fixing the first quantization endpoint to the one of the plurality of first candidate values corresponding to a lowest quantization error:

performing a second search for the plurality of second candidate values for the second quantization endpoint based on the maximum quantization level and the first quantization endpoint;

determining a quantization error associated with each of the plurality of second candidate values; and

setting the second quantization endpoint to the one of the plurality of second candidate values corresponding to a lowest quantization error.

6. The method of claim 5 , wherein performing the second search for the plurality of second candidate values for the second quantization endpoint comprises performing a search for N candidate values for the second quantization endpoint.

7. The method of claim 6 , wherein performing the first search for the plurality of first candidate values for the first quantization endpoint and performing the second search for the plurality of second candidate values for the second quantization endpoint comprises performing a search for a total of (M+N)−1 candidate values.

8. The method of claim 6 , wherein performing the first search for the plurality of first candidate values for the first quantization endpoint and performing the second search for the plurality of second candidate values for the second quantization endpoint comprises performing a search for a total of M*N candidate values.

9. A system comprising:

one or more non-transitory computer-readable storage media including instructions; and

one or more processors coupled to the storage media, the one or more processors configured to execute the instructions to:

determine a bit depth for encoding one or more color components of a pixel region in an image, the one or more color components having a color range;

determine a quantization range having a first quantization endpoint and a second quantization endpoint by:

while fixing the second quantization endpoint to an initial value determined based on the color range, select one of a plurality of first candidate values for the first quantization endpoint based on a plurality of corresponding first quantization errors; and

while fixing the first quantization endpoint to the selected first candidate value, select one of a plurality of second candidate values for the second quantization endpoint based on a plurality of corresponding second quantization errors;

define quantization levels corresponding to the bit depth using the quantization range defined by the first quantization endpoint and the second quantization endpoint; and

encode the one or more color components of the pixel region using the quantization levels.

10. The system of claim 9 , wherein the one or more processors are further configured to execute the instructions to determine a maximum quantization level and a minimum quantization level corresponding to the bit depth.

11. The system of claim 10 , wherein the one or more processors are further configured to execute the instructions to:

while fixing the second quantization endpoint to the maximum quantization level:

perform a first search for the plurality of first candidate values for the first quantization endpoint based on the maximum quantization level and the minimum quantization level;

determine a quantization error associated with each of the plurality of first candidate values; and

set the first quantization endpoint to the one of the plurality of first candidate values corresponding to a lowest quantization error.

12. The system of claim 11 , wherein the one or more processors are further configured to execute the instructions to perform a search for M candidate values for the first quantization endpoint as the first search for the plurality of first candidate values.

13. The system of claim 12 , wherein the one or more processors are further configured to execute the instructions to:

while fixing the first quantization endpoint to the one of the plurality of first candidate values corresponding to a lowest quantization error:

perform a second search for the plurality of second candidate values for the second quantization endpoint based on the maximum quantization level and the first quantization endpoint;

determine a quantization error associated with each of the plurality of second candidate values; and

set the second quantization endpoint to the one of the plurality of second candidate values corresponding to a lowest quantization error.

14. The system of claim 13 , wherein the one or more processors are further configured to execute the instructions to perform a search for N candidate values for the second quantization endpoint as the second search for the plurality of second candidate values.

15. The system of claim 14 , wherein the one or more processors are further configured to execute the instructions to perform a search for a total of (M+N)−1 candidate values as the first search for the plurality of first candidate values and the second search for the plurality of second candidate values.

16. The system of claim 14 , wherein the one or more processors are further configured to execute the instructions to perform a search for a total of M*N candidate values as the first search for the plurality of first candidate values and the second search for the plurality of second candidate values.

17. A non-transitory computer-readable medium comprising

instructions that, when executed by one or more processors of a computing system, cause the one or more processors to:

determine a bit depth for encoding one or more color components of a pixel region in an image, the one or more color components having a color range;

determine a quantization range having a first quantization endpoint and a second quantization endpoint by:

while fixing the second quantization endpoint to an initial value determined based on the color range, select one of a plurality of first candidate values for the first quantization endpoint based on a plurality of corresponding first quantization errors; and

while fixing the first quantization endpoint to the selected first candidate value, select one of a plurality of second candidate values for the second quantization endpoint based on a plurality of corresponding second quantization errors;

define quantization levels corresponding to the bit depth using the quantization range defined by the first quantization endpoint and the second quantization endpoint; and

encode the one or more color components of the pixel region using the quantization levels.

18. The non-transitory computer-readable medium of claim 17 , wherein the instructions further cause the one or more processors to determine a maximum quantization level and a minimum quantization level corresponding to the bit depth.

19. The non-transitory computer-readable medium of claim 18 , wherein the instructions further cause the one or more processors to:

while fixing the second quantization endpoint to the maximum quantization level:

perform a first search for the plurality of first candidate values for the first quantization endpoint based on the maximum quantization level and the minimum quantization level;

determine a quantization error associated with each of the plurality of first candidate values; and

set the first quantization endpoint to the one of the plurality of first candidate values corresponding to a lowest quantization error.

20. The non-transitory computer-readable medium of claim 19 , wherein the instructions further cause the one or more processors to:

while fixing the first quantization endpoint to the one of the plurality of first candidate values corresponding to a lowest quantization error:

perform a second search for the plurality of second candidate values for the second quantization endpoint based on the maximum quantization level and the first quantization endpoint;

determine a quantization error associated with each of the plurality of second candidate values; and

set the second quantization endpoint to the one of the plurality of second candidate values corresponding to a lowest quantization error.

Assignments (2)
CHANGE OF NAME Recorded Jul 6, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060591/0848 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2020
From: CHANG, CHENG; ZHOU, ZHI; WEBB, RICHARD; GREENE, RICHARD LAWRENCE
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 054381/0389 →