IP Library Granted Patent US 11,343,514
Granted Patent B2
US 11,343,514 · App. 16/914,340 · Granted May 24, 2022

Lossless compression of digital images using prior image context

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 11,343,514
App. No.
16/914,340
Granted
May 24, 2022
Kind
B2
Abstract

Techniques for lossless compression of a digital image using prior image context.

Claims (104)

1. One or more non-transitory storage media storing one or more programs comprising instructions, which, when executed by one or more computing devices, cause the one or more computing devices to perform operations comprising:

identifying a particular block of discrete cosine transform coefficients;

determining an above-block of discrete cosine transform coefficients that is above the particular block;

determining a left-block of discrete cosine transform coefficients that is left of the particular block;

determining an above-left-block of discrete cosine transform coefficients that is above and left of the particular block;

decoding entropy coded image data of a further compressed image to obtain a plurality of sub-block AC coefficients for an original compressed image including, for each sub-block AC coefficient of the plurality of sub-block AC coefficients in the particular block, decoding entropy coded image data for the each sub-block AC coefficient based at least in part on:

a value of a sub-block AC coefficient at a same position, in the above-block, as a position of the each sub-block AC coefficient in the particular block,

a value of a sub-block AC coefficient at a same position, in the left-block, as a position of the each sub-block AC coefficient in the particular block, and

a value of a sub-block AC coefficient at a same position, in the above-left-block, as a position of the each sub-block AC coefficient in the particular block; and

generating a plurality of sample blocks of the original compressed image based at least in part on the plurality of sub-block AC coefficients obtained.

2. The one or more non-transitory storage media of claim 1 , the one or more programs further comprising instructions, which, when executed by the one or more computing devices, cause the one or more computing devices to perform operations comprising:

displaying the original compressed image in a graphical user interface.

3. The one or more non-transitory storage media of claim 1 , the one or more programs further comprising instructions, which, when executed by the one or more computing devices, cause the one or more computing devices to perform operations comprising:

displaying the original compressed image in a web browser window of a graphical user interface.

4. The one or more non-transitory storage media of claim 1 , the one or more programs further comprising instructions, wherein, decoding entropy coded image data for the each sub-block AC coefficient comprises:

decoding entropy coded image data for the each sub-block AC coefficient of the plurality of sub-block AC coefficients based at least in part on an average of:

the value of the sub-block AC coefficient, at the same position in the above-block, as the position of the each sub-block AC coefficient in the particular block,

the value of the sub-block AC coefficient, at the same position in the left-block, as the position of the each sub-block AC coefficient in the particular block, and

the value of the sub-block AC coefficient, at the same position in the above-left-block, as the position of the each sub-block AC coefficient in the particular block.

5. The one or more non-transitory storage media of claim 1 , the one or more programs further comprising instructions, which, when executed by the one or more computing devices, cause the one or more computing devices to perform operations comprising:

decoding entropy coded image data of the further compressed image to obtain a plurality of left-edge AC coefficients for the original compressed image including, for each left-edge AC coefficient of the plurality of left-edge AC coefficients in the particular block, decoding entropy coded image data for the each left-edge AC coefficient based at least in part on:

values of a plurality of AC coefficients, in the left-block, that are in a same row as the each left-edge AC coefficient, and

values of a plurality of AC coefficients, in the particular block, that are in a same row as the each left-edge AC coefficient; and

generating the plurality of sample blocks of the original compressed image based at least in part on the plurality of left-edge AC coefficients obtained.

6. The one or more non-transitory storage media of claim 1 , the one or more programs further comprising instructions, which, when executed by the one or more computing devices, cause the one or more computing devices to perform operations comprising:

decoding entropy coded image data of the further compressed image to obtain a plurality of top-edge AC coefficients for the original compressed image including, for each top-edge AC coefficient of the plurality of top-edge AC coefficients in the particular block, decoding entropy coded image data for the each top-edge AC coefficient based at least in part on:

values of a plurality of AC coefficients, in the above-block, that are in a same column as the each top-edge AC coefficient, and

values of a plurality of AC coefficients, in the particular block, that are in a same column as the each top-edge AC coefficient; and

generating the plurality of sample blocks of the original compressed image based at least in part on the plurality of top-edge AC coefficients obtained.

7. The one or more non-transitory storage media of claim 1 , further comprising instructions, which, when executed by the one or more computing devices, cause the one or more computing devices to perform operations comprising:

decoding entropy coded image data to obtain a DC coefficient based at least in part on:

a plurality of sample values in a bottom two rows of a sample block above of a target sample block for the DC coefficient,

a plurality of sample values in a rightmost two columns of a sample block coefficients left of the target sample block,

a plurality of sample values in a top two rows of the target sample block, and

a plurality of sample values in a leftmost two columns of the target sample block; and

generating the plurality of sample blocks of the original compressed image based at least in part on the DC coefficient obtained.

8. A method comprising:

identifying a particular block of discrete cosine transform coefficients;

determining an above-block of discrete cosine transform coefficients that is above the particular block;

determining a left-block of discrete cosine transform coefficients that is left of the particular block;

decoding entropy coded image data to of a further compressed image to obtain a plurality of DC coefficients for an original compressed image including, for each DC coefficient of the plurality of DC coefficients in the particular block, decoding entropy coded image data for the each DC coefficient based at least in part on:

a plurality of sample values in a bottom two rows of the above-block,

a plurality of sample values in a rightmost two columns of the left-block,

a plurality of sample values in a top two rows of the particular block, and

a plurality of sample values in a leftmost two columns of the particular block; and

generating a plurality of sample blocks of the original compressed image based at least in part on the plurality of DC coefficients obtained.

9. The method of claim 8 , further comprising:

decoding entropy coded image data to obtain the plurality of DC coefficients including, for each DC coefficient of the plurality of DC coefficients, decoding entropy coded image data for the each DC coefficient based at least in part on:

computing a first plurality of image gradients based at least in part on the plurality of sample values in the bottom two rows of the above-block,

computing a second plurality of image gradients, in an opposite direction of the first plurality of image gradients, based at least in part on the plurality of sample values in the top two rows of the particular block for the each DC coefficient,

computing a third plurality of image gradients based at least in part on the plurality of sample values in the rightmost two columns of the left-block, and

computing a fourth plurality of images gradients, in an opposite direction of the third plurality of image gradients, based at least in part on the plurality of sample values in the leftmost two columns of the particular block for the each DC coefficient.

10. The method of claim 8 , further comprising:

determining an above-left-block of discrete cosine transform coefficients that is above and left of the particular block;

decoding entropy coded image data of a further compressed image to obtain a plurality of sub-block AC coefficients for an original compressed image including, for each sub-block AC coefficient of the plurality of sub-block AC coefficients in the particular block, decoding entropy coded image data for the each sub-block AC coefficient based at least in part on:

a value of a sub-block AC coefficient at a same position, in the above-block, as a position of the each sub-block AC coefficient in the particular block,

a value of a sub-block AC coefficient at a same position, in the left-block, as a position of the each sub-block AC coefficient in the particular block, and

a value of a sub-block AC coefficient at a same position, in the above-left-block, as a position of the each sub-block AC coefficient in the particular block; and

generating a plurality of sample blocks of the original compressed image based at least in part on the plurality of sub-block AC coefficients obtained.

11. The method of claim 8 , further comprising:

decoding entropy coded image data of the further compressed image to obtain a plurality of left-edge AC coefficients for the original compressed image including, for each left-edge AC coefficient of the plurality of left-edge AC coefficients in the particular block, decoding entropy coded image data for the each left-edge AC coefficient based at least in part on:

values of a plurality of AC coefficients, in the left-block, that are in a same row as the each left-edge AC coefficient, and

values of a plurality of AC coefficients, in the particular block, that are in a same row as the each left-edge AC coefficient; and

generating the plurality of sample blocks of the original compressed image based at least in part on the plurality of left-edge AC coefficients obtained.

12. A computing device comprising:

one or more processors;

storage media; and

one or more programs stored in the storage media and comprising instructions which, when executed by the computing device, cause the computing device to perform operations comprising:

identifying a particular block of discrete cosine transform coefficients;

determining a left-block of discrete cosine transform coefficients that is left of the particular block;

decoding entropy coded image data of a further compressed image to obtain a plurality of left-edge AC coefficients for an original compressed image including, for each left-edge AC coefficient of the plurality of left-edge AC coefficients in the particular block, decoding entropy coded image data for the each left-edge AC coefficient based at least in part on:

values of a plurality of AC coefficients, in the left-block, that are in a same row as the each left-edge AC coefficient, and

values of a plurality of AC coefficients, in the particular block, that are in a same row as the each left-edge AC coefficient; and

generating a plurality of sample blocks of the original compressed image based at least in part on the plurality of left-edge AC coefficients obtained.

13. The computing device of claim 12 , the one or more programs further comprising instructions which, when executed by the computing device, cause the computing device to perform operations comprising:

determining an above-block of discrete cosine transform coefficients that is above the particular block;

determining an above-left-block of discrete cosine transform coefficients that is above and left of the particular block;

decoding entropy coded image data of the further compressed image to obtain a plurality of sub-block AC coefficients for the original compressed image including, for each sub-block AC coefficient of the plurality of sub-block AC coefficients in the particular block, decoding entropy coded image data for the each sub-block AC coefficient based at least in part on:

a value of a sub-block AC coefficient at a same position, in the above-block, as a position of the each sub-block AC coefficient in the particular block,

a value of a sub-block AC coefficient at a same position, in the left-block, as a position of the each sub-block AC coefficient in the particular block, and

a value of a sub-block AC coefficient at a same position, in the above-left-block, as a position of the each sub-block AC coefficient in the particular block; and

generating a plurality of sample blocks of the original compressed image based at least in part on the plurality of sub-block AC coefficients obtained.

14. The computing device of claim 12 , the one or more programs further comprising instructions which, when executed by the computing device, cause the computing device to perform operations comprising:

determining an above-block of discrete cosine transform coefficients that is above the particular block;

decoding entropy coded image data of the further compressed image to obtain a plurality of DC coefficients for an original compressed image including, for each DC coefficient of the plurality of DC coefficients in the particular block, decoding entropy coded image data for the each DC coefficient based at least in part on:

a plurality of sample values in a bottom two rows of the above-block,

a plurality of sample values in a rightmost two columns of the left-block,

a plurality of sample values in a top two rows of the particular block, and

a plurality of sample values in a leftmost two columns of the particular block; and

generating a plurality of sample blocks of the original compressed image based at least in part on the plurality of DC coefficients obtained.

15. The computing device of claim 12 , the one or more programs further comprising instructions which, when executed by the computing device, cause the computing device to perform operations comprising:

determining an above-block of discrete cosine transform coefficients that is above the particular block;

decoding entropy coded image data of the further compressed image to obtain a plurality of top-edge AC coefficients for the original compressed image including, for each top-edge AC coefficient of the plurality of top-edge AC coefficients in the particular block, decoding entropy coded image data for the each top-edge AC coefficient based at least in part on:

values of a plurality of AC coefficients, in the above-block, that are in a same column as the each top-edge AC coefficient, and

the values of a plurality of AC coefficients, in the particular block, that are in a same column as the each top-edge AC coefficient; and

generating the plurality of sample blocks of the original compressed image based at least in part on the plurality of top-edge AC coefficients obtained.

16. The computing device of claim 12 , wherein:

each AC coefficient, of the plurality of AC coefficients in the left-block, that are in a same row as the each left-edge AC coefficient, is a two-dimensional discrete cosine transform coefficient; and

each AC coefficient, of the plurality of AC coefficients in the particular block, is a is a two-dimensional discrete cosine transform coefficient.

17. The computing device of claim 12 , wherein each left-edge AC coefficient, of the plurality of left-edge AC coefficients obtained, is a one-dimensional discrete cosine transform coefficient.

18. The computing device of claim 12 , wherein the plurality of left-edge AC coefficients is from a plurality of discrete cosine transform blocks.

19. The computing device of claim 12 , wherein the original compressed image is compressed in a format conformant with all requirements of ISO/IEC 10981-1:1994.

20. The computing device of claim 12 , the one or more programs further comprising instructions, which, when executed by the computing device, cause the computing device to perform operations comprising:

displaying the original compressed image in a web browser window of a graphical user interface.

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 Aug 21, 2020
From: HORN, DANIEL; ELKABANY, KEN; WINSTEIN, KEITH
To: DROPBOX, INC.
Reel/Frame 053581/0562 →
Continuity (6)
Continuation 16205114 · Nov 19, 2018
Continuation 15822401 · Nov 27, 2017
Continuation 15614860 · Jun 6, 2017
Continuation 15281604 · Sep 30, 2016
Provisional Application 62395269 · Sep 15, 2016
Related Publication 20200382797A1 · Dec 3, 2020