Image encoding by vector quantization of regions of an image and codebook updates
First Claim
1. An apparatus for encoding an image represented by a plurality of blocks of pixels, said apparatus comprising:
- a preprocessor configured to select a portion of the plurality of blocks to subsample by calculating values indicative of distortion caused by subsampling the plurality of blocks;
the preprocessor being further configured to subsample the portion of the plurality of blocks into subsampled blocks to reduce the amount of data that must be encoded to encode the image; and
an encoder configured to receive the subsampled blocks from said preprocessor and non-subsampled blocks, said encoder being further configured to encode the subsampled blocks and the non-subsampled blocks with separate codebooks.
1 Assignment
0 Petitions
Accused Products
Abstract
Improved method and apparatus for vector quantization (VQ) to build a codebook for the compression of data. The codebook or "tree" is initialized by establishing N initial nodes and creating the remainder of the codebook as a binary codebook. Children entries are split upon determination of various attributes, such as maximum distortion, population, etc. Vectors obtained from the data are associated with the children nodes, and then representative children entries are recalculated. This splitting/reassociation continues iteratively until a difference in error associated with the previous children and current children becomes less than a threshold. This splitting and reassociating process continues until the maximum number of terminal nodes is created in the tree, a total error or distortion threshold has been reached or some other criterion. The data may then be transmitted as a compressed bitstream comprising a codebook and indices referencing the codebook.
-
Citations
58 Claims
-
1. An apparatus for encoding an image represented by a plurality of blocks of pixels, said apparatus comprising:
-
a preprocessor configured to select a portion of the plurality of blocks to subsample by calculating values indicative of distortion caused by subsampling the plurality of blocks; the preprocessor being further configured to subsample the portion of the plurality of blocks into subsampled blocks to reduce the amount of data that must be encoded to encode the image; and an encoder configured to receive the subsampled blocks from said preprocessor and non-subsampled blocks, said encoder being further configured to encode the subsampled blocks and the non-subsampled blocks with separate codebooks. - View Dependent Claims (2, 3, 5, 6, 7)
-
-
4. An apparatus for encoding an image represented by a plurality of blocks of pixels, said apparatus comprising:
-
a preprocessor configured to subsample a portion of the plurality of blocks into subsampled blocks to reduce the amount of data that must be encoded to encode the image; an encoder configured to receive the subsampled blocks from said preprocessor and non-subsampled blocks, said encoder being further configured to encode the subsampled blocks and the non-subsampled blocks with separate codebooks; and a rate controller configured to limit the number of subsampled blocks according to a desired bit-rate.
-
-
8. An apparatus for encoding an image, said apparatus comprising:
-
means for encoding each of a plurality of regions of an image with a respective one of a first plurality of codebooks; means for generating an error value indicating a measure of distortion resulting from encoding at least one of the plurality of regions with one of the first plurality of codebooks; means for dividing the at least one of the plurality of regions into subregions based on the error value; and means for encoding each of the subregions with a respective one of a second plurality of codebooks. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. An apparatus for encoding a current image comprising:
-
means for using a previous codebook from a previous image to encode said current image as a first encoded image; means for decoding said first encoded image to generate a first decoded image; means for comparing said current image to said first decoded image to produce an error value; means for updating said previous codebook to create a current codebook for said current image if said error value exceeds a threshold, said threshold being based on an error between a second decoded image generated from a previous encoded image and a previous unencoded image; and means for encoding said current image as a second encoded image using said current codebook if said error value exceeds said threshold. - View Dependent Claims (15, 16, 17, 19, 20, 21, 22, 23, 26)
-
-
18. An apparatus for encoding a current image comprising:
-
means for using a previous codebook from a previous image to encode said current image as a first encoded image; means for decoding said first encoded image to generate a first decoded image; means for comparing said current image to said first decoded image to produce an error value; means for updating said previous codebook to create a current codebook for said current image if said error value exceeds a threshold; and means for encoding said current image as a second encoded image using said current codebook if said error value exceeds said threshold wherein said updating means comprises a means for updating specific entries in said previous codebook to generate said current codebook if decoded vectors generated from said first encoded image have a large error in comparison with said current image; wherein said updating means further comprises a means for generating a new codebook to be used as said current codebook if said decoded vectors generated from said first encoded image have a large mean squared error in comparison with said current image and said means for updating entries in said previous codebook has already been operative; and wherein said new codebook generation means is activated if said updating means has been operative for encoding at least N images sequentially.
-
-
24. An apparatus for encoding a current image comprising:
-
means for using a previous codebook from a previous image to encode said current image as a first encoded image; means for decoding said first encoded image to generate a first decoded image; means for comparing said current image to said first decoded image to produce an error value; means for updating said previous codebook to create a current codebook for said current image if said error value exceeds a threshold; and means for encoding said current image as a second encoded image using said current codebook if said error value exceeds said threshold; wherein said updating means comprises a means for traversing nodes in a tree representative of vectors for said previous codebook and determining best entries in said previous codebook to use in said current codebook; means for creating additional entries in said tree to better represent said current image; wherein said means for creating additional entries comprises splitting nodes in said tree to create two new entries for said current codebook; and wherein said means for splitting nodes in said tree is operative upon determining that said nodes have a greater population of vectors from the current image associated with them than a population threshold.
-
-
25. An apparatus for encoding a current image comprising:
-
means for using a previous codebook from a previous image to encode said current image as a first encoded image; means for decoding said first encoded image to generate a first decoded image; means for comparing said current image to said first decoded image to produce an error value; means for updating said previous codebook to create a current codebook for said current image if said error value exceeds a threshold; and means for encoding said current image as a second encoded image using said current codebook if said error value exceeds said threshold; wherein said updating means comprises a means for traversing nodes in a tree representative of vectors for said previous codebook and determining best entries in said previous codebook to use in said current codebook; means for creating additional entries in said tree to better represent said current image; wherein said means for creating additional entries comprises splitting nodes in said tree to create two new entries for said current codebook; and wherein said means for splitting nodes in said tree is operative upon determining that said nodes have a greater distortion of vectors than a distortion threshold.
-
-
27. An apparatus for encoding N images comprising:
-
means for encoding N images into N encoded images using a first codebook generated from n images, wherein n is greater than or equal to one and n is less than or equal to N; means for determining based on an error between one of said N images and a decoded one of said N encoded images that a second codebook should be used by said means for encoding instead of said first codebook; means for determining whether a first number of blocks for said N encoded images having an error greater than an average block error is greater than a threshold; and means for generating a second codebook for encoding an image encoded subsequent to said N images. - View Dependent Claims (28, 29, 30, 34, 35, 36)
-
-
31. An apparatus for encoding N images comprising:
-
means for encoding N images into N encoded images using a first codebook generated from n images, wherein n is greater than or equal to one and n is less than or equal to N; means for determining based on an error between one of said N images and a decoded one of said N encoded images that a second codebook should be used by said means for encoding instead of said first codebook; filtering means for filtering said N images prior to said encoding means encoding said N images; and rate control means for controlling said filtering means to generate an encoded bitstream at a desired rate. - View Dependent Claims (32, 33)
-
-
37. A method of encoding a sequence of images comprising:
-
generating a first codebook based on vectors obtained from an initial image of said sequence of images; encoding a subsequent image of said sequence of images into a subsequent encoded image using said first codebook; decoding said subsequent encoded image into a subsequent decoded image using said first codebook; determining whether a current frame error between said subsequent decoded image and said subsequent image is greater than a previous frame error between a decoded initial image and said initial image; and if said current frame error is greater than said previous frame error, generating a second codebook based on said subsequent image and encoding said subsequent image using said second codebook. - View Dependent Claims (38, 39, 40, 41, 42, 43, 44, 46)
-
-
45. A method for transmitting an image, the method comprising:
-
separating the image into smooth regions and detailed regions based upon a comparison between pixels and neighboring pixels in the image; encoding the smooth regions of the image with a first codebook; encoding the detailed regions of the image with a second codebook; and wherein said step of separating the image into smooth regions and detailed regions comprises the step of calculating, for each one of a plurality of blocks of pixels comprised by the image, an error value indicative of distortion that would result if the one of the plurality of pixel blocks was subsampled, the smooth regions being defined by pixel blocks having lower error values than pixel blocks defining the detailed regions.
-
-
47. A method for encoding images, the method comprising the steps of:
-
generating a first codebook based on a first input image; encoding a second input image with the first codebook to generate a second encoded image; decoding said second encoded image to generate a second decoded image; determining whether a difference between the second decoded image and the second input image exceeds a threshold; updating the first codebook to generate a second codebook if the difference exceeds the threshold; and wherein said step of determining whether a difference between the second decoded image and the second input image exceeds a threshold comprises the step of determining a threshold based on a difference between a previous input image and a previous decoded image. - View Dependent Claims (48, 49, 55)
-
-
50. A method for encoding images, the method comprising the steps of:
-
generating a first codebook based on a first input image; encoding a second input image with the first codebook to generate a second encoded image; decoding said second encoded image to generate a second decoded image; determining whether a difference between the second decoded image and the second input image exceeds a threshold; updating the first codebook to generate a second codebook if the difference exceeds the threshold; and wherein said step of updating the first codebook to generate a second codebook comprises the step of traversing nodes in a tree to locate a terminal node of the tree having a larger distortion measure than other terminal nodes of the tree. - View Dependent Claims (51)
-
-
52. An apparatus for encoding an image comprising:
-
a preprocessor configured to receive the image and to indicate whether a difference between a first region of the image and a second region of the image exceeds a threshold; a vector quantizer coupled to said preprocessor and receiving therefrom the first region, the second region and an indication whether the difference exceeds a threshold, said vector quantizer being configured to encode the first region of the image with a first codebook into a first data sequence and, if the difference exceeds the threshold, to encode the second region with a second codebook into a second data sequence; a packer coupled to said vector quantizer and receiving the first data sequence and, if the difference exceeds a threshold, the second data sequence therefrom, said packer being configured to generate a datastream containing the first data sequence and, if the difference exceeds the threshold, the second data sequence; and said packer being further configured to place information in the datastream indicating that the first data sequence is encoded with the first codebook and, if the difference exceeds the threshold, that the second data sequence is encoded with the second codebook.
-
-
53. An apparatus for decoding an encoded image, said apparatus comprising:
-
a receiving unit configured to receive a datastream including a first codebook index, a second codebook index and information indicating for each of the first codebook index and the second codebook index whether a subsampled block-type or a non-subsampled block-type is represented; an unpacker coupled to said receiving unit and receiving the datastream therefrom, said unpacker being configured to detect the information indicating whether a subsampled block-type or a non-subsampled block-type is represented and to decode each one of the first codebook index and the second codebook index using either a first codebook or a second codebook according to whether the one of the first codebook index and the second codebook index represents a subsampled block-type or a non-subsampled block-type. - View Dependent Claims (54)
-
-
56. A method for encoding an image represented by a plurality of blocks of pixels, said method comprising:
-
subsampling a portion of the plurality of blocks into subsampled blocks to reduce the amount of data that must be encoded to encode the image; encoding the subsampled blocks with a first codebook; encoding non-subsampled blocks with a second codebook; and wherein said step of subsampling a portion of the plurality of blocks includes the step of selecting the portion of the plurality of blocks to subsample by calculating values indicative of distortion expected from subsampling the plurality of blocks.
-
-
57. A method for encoding an image, said method comprising:
-
encoding each of a plurality of regions of an image with a respective one of a first plurality of codebooks; dividing at least one of the plurality of regions into subregions based on an error value associated with encoding the at least one of the plurality of regions; and encoding each of the subregions with a respective one of a second plurality of codebooks. - View Dependent Claims (58)
-
Specification