IP Library Granted Patent US 11,638,007
Granted Patent B2
US 11,638,007 · App. 17/446,862 · Granted Apr 25, 2023

Codebook generation for cloud-based video applications

Inventors: Viswanathan Swaminathan (Saratoga, CA); Rashmi Mittal (Bangalore, IN)
Assignee: Adobe Inc.
H04N19/13H04N19/176H04N19/196H04N19/94
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,638,007
App. No.
17/446,862
Granted
Apr 25, 2023
Kind
B2
Abstract

Techniques are disclosed for the improvement of vector quantization (VQ) codebook generation. The improved codebooks may be used for compression in cloud-based video applications. VQ achieves compression by vectorizing input video streams, matching those vectors to codebook vector entries, and replacing them with indexes of the matched codebook vectors along with residual vectors to represent the difference between the input stream vector and the codebook vector. The combination of index and residual is generally smaller than the input stream vector which they collectively encode, thus providing compression. The improved codebook may be generated from training video streams by grouping together similar types of data (e.g., image data, motion data, control data) from the video stream to generate longer vectors having higher dimensions and greater structure. This improves the ability of VQ to remove redundancy and thus increase compression efficiency. Storage space is thus reduced and video transmission may be faster.

Claims (50)

1. A method for generating a codebook for vector quantization of digital video content, the method comprising:

performing entropy decoding on a pre-compressed training video stream to provide a decoded video stream;

partitioning the decoded video stream into a plurality of data segment clusters including a first data segment cluster comprising a plurality of image data segments, a second data segment cluster comprising a plurality of motion data segments, and a third data segment cluster comprising a plurality of control data segments;

grouping at least one of the plurality of data segment clusters to form a data vector that is longer than each data segment in the grouped at least one data segment cluster;

generating a codebook entry that is at least partially based on the data vector; and

associating an index value with the generated codebook entry, wherein the index value is shorter than, and provides a compressed representation of, the generated codebook entry.

2. The method of claim 1 , wherein:

each of more than one of the plurality of data segment clusters are grouped to form a corresponding data vector that is longer than each data segment in the grouped corresponding data segment cluster;

the method further comprises applying a clustering algorithm to the corresponding data vectors; and

the clustering algorithm is configured to select and retain codebook entries that are based on vectors that are most representative of the pre-compressed training video stream.

3. The method of claim 1 , further comprising:

selecting a codebook based on a dimensional size of data segments included in the at least one of the plurality of data segment clusters that is grouped to from the data vector; and

mapping the generated codebook entry to the selected codebook.

4. The method of claim 1 , wherein the image data segments in the first data segment cluster are Discrete Cosine Transform blocks associated with a single macroblock that forms part of the pre-compressed training video stream.

5. The method of claim 1 , wherein the entropy decoding of the pre-compressed training video stream includes at least one of Context Adaptive Arithmetic decoding, Context Adaptive Variable Length decoding, and Huffman decoding.

6. The method of claim 1 , wherein the pre-compressed training video stream is an MPEG-compressed video stream.

7. The method of claim 1 , further comprising storing the generated codebook entry in a codebook comprising entries based on vectors associated with segments corresponding to a particular size threshold.

8. A computer program product comprising one or more non-transitory computer readable media encoded with instructions that, when executed by one or more processors, cause a process for generating a codebook for vector quantization of digital video content to be invoked, the process comprising:

performing entropy decoding on a pre-compressed training video stream to provide a decoded video stream;

partitioning the decoded video stream into a plurality of data segment clusters including a first data segment cluster comprising a plurality of image data segments, a second data segment cluster comprising a plurality of motion data segments, and a third data segment cluster comprising a plurality of control data segments;

grouping a particular one of the plurality of data segment clusters to form a data vector that is longer than each data segment in the grouped particular data segment cluster;

generating a codebook entry that is at least partially based on the data vector; and

associating an index value with the generated codebook entry, wherein the index value is shorter than, and provides a compressed representation of, the generated codebook entry.

9. The computer program product of claim 8 , wherein:

each of more than one of the plurality of data segment clusters are grouped to form a corresponding data vector that is longer than each data segment in the grouped corresponding data segment cluster;

the process further comprises applying a clustering algorithm to the corresponding data vectors; and

the clustering algorithm is configured to select and retain codebook entries that are based on vectors that are most representative of the pre-compressed training video stream.

10. The computer program product of claim 8 , wherein the process further comprises:

selecting a codebook based on a dimensional size of data segments in the particular data segment cluster that is grouped to from the data vector; and

mapping the generated codebook entry to the selected codebook.

11. The computer program product of claim 8 , wherein the image data segments in the first data segment cluster are Discrete Cosine Transform blocks associated with a single macroblock that forms part of the pre-compressed training video stream.

12. The computer program product of claim 8 , wherein the entropy decoding of the pre-compressed training video stream includes at least one of Context Adaptive Arithmetic decoding, Context Adaptive Variable Length decoding, and Huffman decoding.

13. The computer program product of claim 8 , wherein the pre-compressed training video stream is an MPEG-compressed video stream.

14. The computer program product of claim 8 , wherein the process further comprises storing the generated codebook entry in a codebook comprising entries based on vectors associated with segments corresponding to a particular size threshold.

15. A system for generating a codebook for vector quantization of digital video content, the system comprising a memory and one or more processors configured to:

perform entropy decoding on a pre-compressed video stream to provide a decoded video stream;

partition the decoded video stream into a plurality of data segment clusters including a first data segment cluster comprising a plurality of image data segments, a second data segment cluster comprising a plurality of motion data segments, and a third data segment cluster comprising a plurality of control data segments;

group at least one of the plurality of data segment clusters to form a data vector that is longer than each data segment in the grouped at least one data segment cluster;

generate a codebook entry that is at least partially based on the data vector; and

associate an index value with the generated codebook entry, wherein the index value is shorter than, and provides a compressed representation of, the generated codebook entry.

16. The system of claim 15 , wherein:

each of more than one of the plurality of data segment clusters are grouped to form a corresponding data vector that is longer than each data segment in the grouped corresponding data segment cluster;

the one or more processors are further configured to apply a clustering algorithm to the corresponding data vectors; and

the clustering algorithm is configured to select and retain codebook entries that are based on vectors that are most representative of the pre-compressed video stream.

17. The system of claim 15 , wherein the one or more processors are further configured to:

select a codebook based on a dimensional size of data segments included in the at least one of the plurality of data segment clusters that is grouped to from the data vector; and

map the generated codebook entry to the selected codebook.

18. The system of claim 15 , wherein the image data segments in the first data segment cluster are Discrete Cosine Transform blocks associated with a single macroblock that forms part of the pre-compressed video stream.

19. The system of claim 15 , wherein the entropy decoding of the pre-compressed video stream includes at least one of Context Adaptive Arithmetic decoding, Context Adaptive Variable Length decoding, and Huffman decoding.

20. The system of claim 15 , wherein the pre-compressed video stream is an MPEG-compressed video stream.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2021
From: SWAMINATHAN, VISWANATHAN; MITTAL, RASHMI
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 057381/0442 →
CHANGE OF NAME Recorded Sep 3, 2021
From: ADOBE SYSTEMS INCORPORATED
To: ADOBE INC.
Reel/Frame 057411/0235 →
Continuity (3)
Continuation 16295154 · Mar 7, 2019
Continuation 15055913 · Feb 29, 2016
Related Publication 20210400278A1 · Dec 23, 2021