IP Library Granted Patent US 10,171,820
Granted Patent B2
US 10,171,820 · App. 15/822,401 · Granted Jan 1, 2019

Digital image recompression

Inventors: Daniel Horn (San Francisco, CA); Ken Elkabany (San Francisco, CA); Keith Winstein (Palo Alto, CA)
Assignee: Dropbox, Inc.
H04N19/176H04N19/124H04N19/13H04N19/14H04N19/18H04N19/40H04N19/48H04N19/593H04N19/625H04N19/91H04N19/132H04N19/42H04N19/436H04N19/46
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,171,820
App. No.
15/822,401
Filed
Nov 27, 2017
Granted
Jan 1, 2019
Kind
B2
Art Unit
2667
USPC
382/233
Abstract

Techniques for image recompression. In one implementation, the techniques are implemented to recompress a baseline joint photographic experts group (JPEG) image with compression savings. The techniques replace the Huffman coding of baseline JPEG with an arithmetic coding that uses a sophisticated adaptive probability model. The arithmetic coding techniques avoid global operations such as global sorting that would prevent distributed and multithreaded decompression operations when recovering the original JPEG image from the recompressed image. At the same time, the techniques realize substantial compression savings relative to baseline JPEG, on average 23% compressing savings in some implementations.

Claims (82)

1. A system, comprising:

one or more processors;

storage media; and

one or more programs stored in the storage media and configured for execution by the one or more processors, the one or more programs comprising instructions configured for:

obtaining compressed image data that is a coded representation of a digital image;

decoding the compressed image data to obtain at least one block of quantized discrete cosine transform (DCT) coefficients corresponding to a sample block of the digital image, the block of quantized DCT coefficients comprising a DC coefficient and a plurality of non-zero AC coefficients;

determining probability estimates for binary symbols of binarized representations of the plurality of non-zero AC coefficients based, at least in part, on classifying each non-zero AC coefficient of the plurality of non-zero AC coefficients as being part of at most one of: (a) a top-edge row of AC coefficients of the block of quantized DCT coefficients, (b) a left-edge column of AC coefficients of the block of quantized DCT coefficients, or (c) a sub-block of AC coefficients of the block of quantized DCT coefficients;

wherein a particular non-zero AC coefficient of the plurality of non-zero AC coefficients is classified as being part of (c) the sub-block of AC coefficients;

wherein determining probability estimates for binary symbols of a binarized representation of the particular non-zero AC coefficient is based on:

an AC coefficient corresponding in position to the particular non-zero AC coefficient in an above quantized DCT block of coefficients,

an AC coefficient corresponding in position to the particular non-zero AC coefficient in a left quantized DCT block of coefficients, and

an AC coefficient corresponding in position to the particular non-zero AC coefficient in an above-left quantized DCT block of coefficients;

arithmetic coding the binary symbols based, at least in part, on the probability estimates; and

based, at least in part, on the arithmetic coding, storing further compressed image data that is a coded representation of the digital image, the further compressed image data being lossless with respect to the compressed image data, the further compressed image data requiring fewer bytes to store in storage media than required by the compressed image data.

2. The system of claim 1 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on:

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients to the base two;

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients to the base two; and

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients to the base two.

3. The system of claim 1 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on a weighted average of:

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients;

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients; and

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients.

4. The system of claim 3 , wherein:

a first numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients is thirteen;

a second numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients is thirteen; and

a third numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients is six.

5. The system of claim 1 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on an index of the particular non-zero AC coefficient within the sub-block of AC coefficients.

6. The system of claim 1 , wherein the binarized representation of the particular non-zero AC coefficient includes a coefficient exponent component, followed by a zero bit, followed by a sign bit component, followed by a residual component.

7. The system of claim 1 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on the number of non-zero AC coefficients in the sub-block of AC coefficients.

8. One or more non-transitory computer-readable media storing one or more programs for execution by one or more processors, the one or more programs comprising instructions configured for:

obtaining compressed image data that is a coded representation of a digital image;

decoding the compressed image data to obtain at least one block of quantized discrete cosine transform (DCT) coefficients corresponding to a sample block of the digital image, the block of quantized DCT coefficients comprising a DC coefficient and a plurality of non-zero AC coefficients;

determining probability estimates for binary symbols of binarized representations of the plurality of non-zero AC coefficients based, at least in part, on classifying each non-zero AC coefficient of the plurality of non-zero AC coefficients as being part of at most one of: (a) a top-edge row of AC coefficients of the block of quantized DCT coefficients, (b) a left-edge column of AC coefficients of the block of quantized DCT coefficients, or (c) a sub-block of AC coefficients of the block of quantized DCT coefficients;

wherein a particular non-zero AC coefficient of the plurality of non-zero AC coefficients is classified as being part of (c) the sub-block of AC coefficients;

wherein determining probability estimates for binary symbols of a binarized representation of the particular non-zero AC coefficient is based on:

an AC coefficient corresponding in position to the particular non-zero AC coefficient in an above quantized DCT block of coefficients,

an AC coefficient corresponding in position to the particular non-zero AC coefficient in a left quantized DCT block of coefficients, and

an AC coefficient corresponding in position to the particular non-zero AC coefficient in an above-left quantized DCT block of coefficients;

arithmetic coding the binary symbols based, at least in part, on the probability estimates; and

based, at least in part, on the arithmetic coding, storing further compressed image data that is a coded representation of the digital image, the further compressed image data being lossless with respect to the compressed image data, the further compressed image data requiring fewer bytes to store in storage media than required by the compressed image data.

9. The one or more non-transitory computer-readable media of claim 8 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on:

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients to the base two;

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients to the base two; and

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients to the base two.

10. The one or more non-transitory computer-readable media of claim 8 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on a weighted average of:

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients;

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients; and

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients.

11. The one or more non-transitory computer-readable media of claim 10 , wherein:

a first numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients is thirteen;

a second numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients is thirteen; and

a third numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients is six.

12. The one or more non-transitory computer-readable media of claim 8 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on an index of the particular non-zero AC coefficient within the sub-block of AC coefficients.

13. The one or more non-transitory computer-readable media of claim 8 , wherein the binarized representation of the particular non-zero AC coefficient includes a coefficient exponent component, followed by a zero bit, followed by a sign bit component, followed by a residual component.

14. The one or more non-transitory computer-readable media of claim 8 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on the number of non-zero AC coefficients in the sub-block of AC coefficients.

15. A method, comprising:

obtaining compressed image data that is a coded representation of a digital image;

decoding the compressed image data to obtain at least one block of quantized discrete cosine transform (DCT) coefficients corresponding to a sample block of the digital image, the block of quantized DCT coefficients comprising a DC coefficient and a plurality of non-zero AC coefficients;

determining probability estimates for binary symbols of binarized representations of the plurality of non-zero AC coefficients based, at least in part, on classifying each non-zero AC coefficient of the plurality of non-zero AC coefficients as being part of at most one of: (a) a top-edge row of AC coefficients of the block of quantized DCT coefficients, (b) a left-edge column of AC coefficients of the block of quantized DCT coefficients, or (c) a sub-block of AC coefficients of the block of quantized DCT coefficients;

wherein a particular non-zero AC coefficient of the plurality of non-zero AC coefficients is classified as being part of (c) the sub-block of AC coefficients;

wherein determining probability estimates for binary symbols of a binarized representation of the particular non-zero AC coefficient is based on:

an AC coefficient corresponding in position to the particular non-zero AC coefficient in an above quantized DCT block of coefficients,

an AC coefficient corresponding in position to the particular non-zero AC coefficient in a left quantized DCT block of coefficients, and

an AC coefficient corresponding in position to the particular non-zero AC coefficient in an above-left quantized DCT block of coefficients;

arithmetic coding the binary symbols based, at least in part, on the probability estimates;

based, at least in part, on the arithmetic coding, storing further compressed image data that is a coded representation of the digital image, the further compressed image data being lossless with respect to the compressed image data, the further compressed image data requiring fewer bytes to store in storage media than required by the compressed image data; and

wherein the method is performed by a computing system comprising one or more processors and storage media storing one or more programs, the one or more programs having instructions configured to perform the method.

16. The method of claim 15 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on:

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients to the base two;

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients to the base two; and

the logarithm of the absolute value of the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients to the base two.

17. The method of claim 15 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on a weighted average of:

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients;

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients; and

the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients.

18. The method of claim 17 , wherein:

a first numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above quantized DCT block of coefficients is thirteen;

a second numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the left quantized DCT block of coefficients is thirteen; and

a third numerical weight in the weighted average applied to the AC coefficient corresponding in position to the particular non-zero AC coefficient in the above-left quantized DCT block of coefficients is six.

19. The method of claim 15 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on an index of the particular non-zero AC coefficient within the sub-block of AC coefficients.

20. The method of claim 15 , wherein the binarized representation of the particular non-zero AC coefficient includes a coefficient exponent component, followed by a zero bit, followed by a sign bit component, followed by a residual component.

21. The method of claim 15 , wherein the determining the probability estimates for the binary symbols of the binarized representation of the particular non-zero AC coefficient is further based on the number of non-zero AC coefficients in the sub-block of AC coefficients.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2018
From: HORN, DANIEL; ELKABANY, KEN; WINSTEIN, KEITH
To: DROPBOX, INC.
Reel/Frame 047252/0273 →
Continuity (4)
Continuation 15614860 · Jun 6, 2017
Continuation 15281604 · Sep 30, 2016
Provisional Application 62395269 · Sep 15, 2016
Related Publication 20180146199A1 · May 24, 2018