IP Library › Granted Patent US 11,461,275
Granted Patent B2
US 11,461,275 · App. 16/692,840 · Granted Oct 4, 2022

Compression techniques for vertices of graphic models

Inventors: Lars M. Lindberg (Bjaerred, SE); Ali Sazegari (Cupertino, CA)
Assignee: Apple Inc.
G06F16/1744G06F16/2365G06F7/49947G06F7/523G06F7/556G06T9/001
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,461,275
App. No.
16/692,840
Granted
Oct 4, 2022
Kind
B2
Abstract

Methods for lossy and lossless pre-processing of image data. In one embodiment, a method for lossy pre-processing image data, where the method may include, at a computing device: receiving the image data, where the image data includes a model having a mesh, the mesh includes vertices defining a surface, the vertices including attribute vectors, and the attribute vectors including values. The method also including quantizing the values of the attribute vectors to produce modified values, where a precision of the modified values is determined based on a largest power determined using a largest exponent of the values, encoding pairs of the modified values into two corresponding units of information. The method also including, for each pair of the pairs of the modified values, serially storing the two corresponding units of information as a data stream into a buffer, and compressing the data stream in the buffer.

Claims (79)

1. A method for compressing image data, the method comprising, at a computing device:

receiving the image data, wherein:

the image data comprises a model having a mesh,

the mesh comprises a plurality of vertices defining a surface,

the plurality of vertices comprises a plurality of attribute vectors, and

the plurality of attribute vectors comprises a plurality of values;

quantizing the plurality of values to produce a plurality of modified values, wherein a precision of the quantization corresponds to a threshold value that is based at least in part on a largest exponent among the plurality of values;

for each pair of modified values of the plurality of modified values, encoding the pair into two corresponding units of information, wherein each unit includes information from both members of the pair;

serially storing the units of information as a data stream into a buffer; and

compressing the data stream in the buffer.

2. The method of claim 1 , wherein quantizing the plurality of values of the plurality of attribute vectors to produce the plurality of modified values comprises:

identifying a value of the plurality of values that has the largest exponent;

determining the threshold value based on the largest exponent; and

determining the plurality of modified values by applying the threshold value to each of the plurality of values.

3. The method of claim 2 , wherein determining the plurality of modified values by applying the threshold value to each of the plurality of values further comprises, for each value of the plurality of values:

dividing the value by the threshold value to obtain an intermediate value;

rounding the intermediate value to obtain a rounded intermediate value; and

multiplying the rounded intermediate value by the threshold value to obtain a modified value.

4. The method of claim 1 , wherein the plurality of values comprise 16-bit floating-point numbers including a sign bit, 5-bits of exponent representing range, and 11-bits of significand representing accuracy.

5. The method of claim 4 , wherein quantizing the plurality of values of the plurality of attribute vectors to produce the plurality of modified values further comprises, for each value of the plurality of values that are not associated with the threshold value:

modifying one or more bits of the 11-bits of significand to zero.

6. The method of claim 4 , wherein quantizing the plurality of values of the plurality of attribute vectors to produce the plurality of modified values further comprises, for a value of the plurality of values that is associated with the threshold value:

further quantizing the value by setting every other bit of the 11-bits of significand to zero.

7. The method of claim 1 , wherein each modified value of the plurality of modified values comprises a 12-bit signed integer plus the largest exponent, and wherein the plurality of modified values are stored in an array.

8. The method of claim 1 , wherein, for each pair of modified values of the plurality of modified values, encoding the pair into two corresponding units of information comprises:

placing, into a first unit of information of the two corresponding units of information, least significant bits of the pair of modified values and a sign bit; and

placing, into a second unit of information of the two corresponding units of information, most significant bits of the pair of modified values,

wherein the first unit of information comprises two bytes and the second unit of information comprises one byte.

9. The method of claim 1 , further comprising:

receiving second image data that comprises one or more relative attribute vectors associated with one or more of the plurality of vertices, the one or more relative attribute vectors comprising one or more second values;

decompressing the data stream to return the plurality of modified values to the plurality of values;

determining differences between the one or more second values and corresponding one or more of the plurality of values; and

animating the model on a display based on the differences.

10. The method of claim 1 , wherein the plurality of attribute vectors comprise a plurality of position vectors and a plurality of texture vectors.

11. The method of claim 1 , wherein the data stream is compressed in accordance with a Lempel-Ziv-Welch (“LZW”) type compressor.

12. A computing device configured to compress image data, the computing device comprising:

at least one processor; and

at least one memory storing instructions that, when executed by the at least one processor,

causes the at least one processor to perform the steps of:

receiving the image data, wherein:

the image data comprises a model having a mesh,

the mesh comprises a plurality of vertices defining a surface,

the plurality of vertices comprises a plurality of attribute vectors, and

the plurality of attribute vectors comprises a plurality of values;

quantizing the plurality of values to produce a plurality of modified values, wherein a precision of the quantization corresponds to a threshold value that is based at least in part on a largest exponent among the plurality of values;

for each pair of modified values of the plurality of modified values,

encoding the pair into two corresponding units of information, wherein each unit includes information from both members of the pair;

serially storing the units of information as a data stream into a buffer; and

compressing the data stream in the buffer.

13. The computing device of claim 12 , wherein quantizing the plurality of values of the plurality of attribute vectors to produce the plurality of modified values comprises:

identifying a value of the plurality of values that has the largest exponent;

determining the threshold value based on the largest exponent; and

determining the plurality of modified values by applying the threshold value to each of the plurality of values.

14. The computing device of claim 13 , wherein determining the plurality of modified values by applying the threshold value to each of the plurality of values further comprises, for each value of the plurality of values:

dividing the value by the threshold value to obtain an intermediate value;

rounding the intermediate value to obtain a rounded intermediate value; and

multiplying the rounded intermediate value by the threshold value to obtain a modified value.

15. The computing device of claim 12 , wherein the plurality of values comprise 16-bit floating-point numbers including a sign bit, 5-bits of exponent representing range, and 11-bits of significand representing accuracy.

16. The computing device of claim 15 , wherein quantizing the plurality of values of the plurality of attribute vectors to produce the plurality of modified values further comprises, for each value of the plurality of values that are not associated with the threshold value:

modifying one or more bits of the 11-bits of significand to zero.

17. A non-transitory computer readable storage medium configured to store instructions that, when executed by a processor included in a computing device, cause the computing device to compress image data, by carrying out steps that include:

receiving the image data, wherein:

the image data comprises a model having a mesh,

the mesh a plurality of vertices defining a surface,

the plurality of vertices comprises a plurality of attribute vectors, and

the plurality of attribute vectors comprises a plurality of values;

quantizing the plurality of values to produce a plurality of modified values, wherein a precision of the quantization corresponds to a threshold value that is based at least in part on a largest exponent among the plurality of values;

for each pair of modified values of the plurality of modified values, encoding the pair into two corresponding units of information, wherein each unit includes information from both members of the pair;

serially storing the units of information as a data stream into a buffer; and

compressing the data stream in the buffer.

18. The non-transitory computer readable storage medium of claim 17 , wherein quantizing the plurality of values of the plurality of attribute vectors to produce the plurality of modified values comprises:

identifying a value of the plurality of values that has the largest exponent;

determining the threshold value based on the largest exponent; and

determining the plurality of modified values by applying the threshold value to each of the plurality of values.

19. The method non-transitory computer readable storage medium of claim 18 , wherein determining the plurality of modified values by applying the threshold value to each of the plurality of values further comprises, for each value of the plurality of values:

dividing the value by the threshold value to obtain an intermediate value;

rounding the intermediate value to obtain a rounded intermediate value; and

multiplying the rounded intermediate value by the threshold value to obtain a modified value.

20. The non-transitory computer readable storage medium of claim 17 , wherein the plurality of values comprise 16-bit floating-point numbers including a sign bit, 5-bits of exponent representing range, and 11-bits significand representing accuracy.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2019
From: LINDBERG, LARS M.; SAZEGARI, ALI
To: APPLE INC.
Reel/Frame 051091/0714 →
Continuity (2)
Provisional Application 62855812 · May 31, 2019
Related Publication 20200380732A1 · Dec 3, 2020