Method and system for compression across multiple images
By receiving multiple images on the data processing hardware, using lossy compression and entropy encoding techniques, the image is compressed using entropy coded tables, which solves the problem of inefficient storage of multiple images in the prior art and realizes efficient storage compression.
Patent Information
- Application Number
- CN201980092510.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-02-22
- Filing Date
- 2019-11-10
- Publication Date
- 2025-05-02
- Estimated Expiration
- 2039-11-10
AI Technical Summary
The prior art is difficult to effectively compress multiple images, resulting in inefficient storage, especially in remote servers and backup storage devices.
By receiving multiple images on the data processing hardware, generating codewords using lossy compression, and generating an entropy coded table based on the codewords of multiple images, and finally entropy encoding of multiple images.
Efficient compression of multiple images is achieved, reducing storage space, improving storage efficiency, and reducing storage costs.
Smart Images

Figure CN113454995B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to compression across multiple images. Background Art
[0002] Today, technology enables people to generate media content (e.g., images and videos) essentially anywhere. For example, mobile devices often come standard with cameras, which allows people to take pictures or record their experiences. With the ease of use of this technology and the popularity of social media platforms, people may be compelled to generate media content to capture memories or share moments. As people increase the amount of media content they generate, storage space is often required as a repository to store the media content. As a result, remote servers and backup storage capabilities have become commonly accessible to meet some of these storage needs. However, as demand continues to increase, storage devices need to improve storage efficiency and / or media storage technology. Summary of the invention
[0003] One aspect of the present disclosure provides a method for compressing across multiple images. The method includes receiving multiple images at a storage device at data processing hardware. For each image in the multiple images, the method also includes generating a codeword using lossy compression by the data processing hardware, each codeword being defined as a bit string. The method further includes generating an entropy coding table based on the codewords of the multiple images by the data processing hardware. The method also includes entropy encoding the multiple images according to the generated entropy coding table by the data processing hardware.
[0004] Embodiments of the present disclosure may include one or more of the following optional features. In some embodiments, generating a codeword includes dividing each of a plurality of images into pixel blocks, transforming each pixel block into a transform coefficient, quantizing the transform coefficient to form a quantization index, representing each quantization index as a corresponding bit string, and assigning a variable length code to the corresponding bit string. Here, the variable length code includes a bit length that decreases when the occurrence of the corresponding bit string within the plurality of images increases. The transform coefficient may include a discrete cosine transform (DCT) coefficient. Each codeword may be a fixed length bit string of quantized transform coefficients. The lossy compression may be a Joint Photographic Experts Group (JPEG) compression.
[0005] In some examples, generating an entropy coding table includes encoding codewords by frequency of occurrence and assigning a variable length code of bits to each codeword based on the frequency of occurrence of the codeword. For example, the frequency of occurrence indicates the number of times each codeword exists in multiple images. Here, a first variable length code may be assigned to the first codeword and a second variable length code may be assigned to the second codeword. The first variable length code may include fewer bits than the second variable length code. The first codeword may include a greater frequency of occurrence than the second codeword. In some embodiments, assigning a variable length code of bits to each encoded codeword based on the frequency of occurrence of the codeword includes optimizing the sum of the variable length codes of bits for all encoded codewords.
[0006] In some configurations, the storage device includes a remote server of a distributed system in communication with the user device. Receiving the plurality of images may occur in response to an upload from the user device, the upload being associated with backup functionality of media content of the user device. The received plurality of images may include a high quality format, and entropy encoding the plurality of images may compress the received plurality of images into a lower storage footprint format.
[0007] In some examples, each of the plurality of images has a common characteristic, wherein the common characteristic is associated with a particular user, user account, media content album, or physical storage location. Receiving the plurality of images may include receiving media content including the plurality of images and another plurality of images for storage at a storage device, and determining that the plurality of images have a common characteristic, wherein the common characteristic is associated with a particular user, user account, media content album, or physical storage location. Additionally or alternatively, the method may further include storing the plurality of images entropy encoded using the generated entropy coding table in a location separate from the other plurality of images at the storage device.
[0008] Optionally, receiving the plurality of images includes detecting creation or receipt of media content at a user device running a storage application in communication with the storage device, and generating a prompt for the user device, wherein the prompt asks whether to back up or transfer the detected media content to the storage device using the user device. When the user selects to back up or transfer the detected media content to the storage device, the method includes identifying the plurality of images within the media content for entropy encoding.
[0009] In some examples, the plurality of images corresponds to a first subset of images from media content uploaded by a user device. Here, the uploading of the media content includes a first subset of images and a second subset of images. The first subset of images has a first media content format that is specified for compression into a lower storage footprint format. The second subset of images bypasses compression into a lower storage footprint format.
[0010] Another aspect of the present disclosure provides a system for compressing across multiple images. The system includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations. The operations include receiving multiple images at a storage device. For each image in the multiple images, the operations also include generating codewords using lossy compression, each codeword being defined as a bit string. The operations further include generating an entropy coding table based on the codewords for the multiple images and entropy encoding the multiple images according to the generated entropy coding table.
[0011] This aspect may include one or more of the following optional features. In some embodiments, the operation of generating a codeword includes dividing each of the multiple images into pixel blocks, transforming each pixel block into a transform coefficient, quantizing the transform coefficient to form a quantization index, representing each quantization index as a corresponding bit string, and assigning a variable length code to the corresponding bit string. Here, the variable length code includes a bit length that decreases when the occurrence of the corresponding bit string in the multiple images increases. The transform coefficient may include a discrete cosine transform (DCT) coefficient. Each codeword may be a fixed length bit string of quantized transform coefficients. The lossy compression may be a Joint Photographic Experts Group (JPEG) compression.
[0012] In some examples, the operation of generating an entropy coding table includes encoding codewords by frequency of occurrence and assigning a variable length code of bits to each codeword based on the frequency of occurrence of the codeword. For example, the frequency of occurrence indicates the number of times each codeword exists in multiple images. Here, a first variable length code may be assigned to the first codeword and a second variable length code may be assigned to the second codeword. The first variable length code may include fewer bits than the second variable length code, and the first codeword may include a greater frequency of occurrence than the second codeword. In some embodiments, assigning a variable length code of bits to each encoded codeword based on the frequency of occurrence of the codeword includes optimizing the sum of the variable length codes of bits for all encoded codewords.
[0013] In some configurations, the storage device includes a remote server of a distributed system in communication with the user device. The plurality of images may occur in response to an upload from the user device, the upload being associated with backup functionality of media content of the user device. The received plurality of images may include a high quality format, and entropy encoding the plurality of images may compress the received plurality of images into a lower storage footprint format.
[0014] In some examples, each of the plurality of images has a common characteristic, wherein the common characteristic is associated with a particular user, user account, media content album, or physical storage location. Receiving the plurality of images may include receiving media content including the plurality of images and another plurality of images for storage at a storage device, and determining that the plurality of images have a common characteristic, wherein the common characteristic is associated with a particular user, user account, media content album, or physical storage location. Additionally or alternatively, the method may further include storing the plurality of images entropy encoded using the generated entropy coding table in a location separate from the other plurality of images at the storage device.
[0015] Optionally, the operation of receiving the plurality of images includes detecting creation or receipt of media content at a user device running a storage application in communication with the storage device, and generating a prompt for the user device, wherein the prompt inquires whether the user of the user device is to back up or transfer the detected media content to the storage device. When the user selects to back up or transfer the detected media content to the storage device, the method includes identifying the plurality of images within the media content for entropy encoding.
[0016] In some examples, the plurality of images corresponds to a first subset of images of media content uploaded from a user device. Here, the upload of the media content includes a first subset of images and a second subset of images. The first subset of images has a first media content format that is specified for compression into a lower storage footprint format. The second subset of images bypasses compression into a lower storage footprint format.
[0017] The details of one or more embodiments of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0018] Figure 1 is a schematic diagram of an example media storage environment.
[0019] Figure 2 yes Figure 1 Schematic diagram of an example compressor for a media storage environment.
[0020] Figure 3 yes Figure 1 Schematic diagram of an example entropy encoder for a media storage environment.
[0021] Figure 4 is a flow chart of an example operational arrangement of a method for implementing image compression for a storage system of a media storage environment.
[0022] Figure 5 is a schematic diagram of an example computing device that can be used to implement the systems and methods described herein.
[0023] Like reference symbols in the various drawings indicate like elements. DETAILED DESCRIPTION
[0024] Media content storage has led to the widespread adoption of multimedia compression techniques. These techniques can be used on almost all types of hardware and software systems to reduce the size of images and / or videos. Storage vendors often use compression techniques to provide cost-effective storage solutions for media content users or media content owners. Compression techniques usually seek to reduce the size of a piece of media content (e.g., images or videos) while maintaining a certain degree of quality. Because a media content user or media content owner may be interested in maintaining the best quality of his or her media content, this interest may require a large amount of storage space. Unfortunately, these interests are not completely consistent with storage vendors who want to effectively utilize their storage space while trying to minimize the cost of storing media content. In other words, large, high-quality media content may be expensive to store and may reduce the number of customers (e.g., media content users or media content owners) who invest in storage vendors. Therefore, storage vendors hope to optimize storage on their entire storage space or a portion of their storage space. However, compression techniques have historically been developed to optimize content compression for each image or each video, so that these techniques cannot well consider multiple images or videos of larger scale. Here, in order to solve this problem, compression techniques consider multiple images or videos during the compression process.
[0025] Figure 1 1 is an example of a media storage environment 100. The media storage environment 100 is an environment in which a user 10 communicates via a user device 110 to store media content 120, such as photos (e.g., images 122, 122a-n) or videos. The user 10 may generate an upload 112 of the media content 120 to transfer the media content 120 to a storage system 140 via a network 130. The network 130 may be any type of communication network configured to route data between the user device 110 and the storage system 140. Although for illustrative purposes, Figure 1-3 The media content 120 may be depicted as an image 122 , and the media content 120 within the media storage environment 100 may be any type of media content 120 , including but not limited to images (eg, live photos, motion photos, smart burst photos, etc.) or videos.
[0026] The user 10 may choose to store the media content 120 on the storage system 140 for a variety of reasons. One possible reason is that the user 10 may have resource awareness for the user device 110. In other words, the user 10 may choose to store the media content 120 on the storage system 140 to merge or minimize the resource space of the user device 110 occupied by the media content 120. For example, the user device 110 is configured with a limited amount of storage space. Depending on the computing resources (e.g., data processing hardware 114 and / or memory hardware 116) of the user device 110, the user 10 may prefer to allocate computing resources to run the application or other functionality of the user device 110, rather than storing the media content 120. Therefore, the user 10 may choose to store the media content 120 in a remote location such as the storage system 140 rather than on the user device 110.
[0027] Another reason why the user 10 can use the storage system 140 to store media content 120 can be to use the media content service associated with the storage system 140. These media content services of the storage system 140 can be provided by a media content application (e.g., a cloud-based application). Cloud-based applications generally refer to applications that use or access the computing resources or storage resources of a remote system. For example, a media content application is configured to enable the user 10 (e.g., through a user device 110) to access the storage system 140. In some embodiments, a media content application is an application 20 running on a user device 110 that can access the resources (e.g., data processing hardware 114 and / or memory hardware 116) of the user device 110. By accessing the resources of the user device 110, the application 20 can communicate the media content 120 located on the user device 110 to the storage system 140. The media content application can provide media content services for the media content 120 before, during, or after being transmitted to the storage system 140. Some examples of media content services include media organization (e.g., photo albums, timelines, geo-tagging, metadata creation / editing), media editing, media sharing capabilities (e.g., peer-to-peer media sharing), media storage, etc. Additionally or alternatively, some of these media content applications may be dedicated to storage based on various compression techniques or storage management.
[0028] In some examples, the media content application provides backup functionality for the media content 120 of the user device 110. The backup functionality may be automatic, manual, or customized by the user 10. Because the user device 110 may be capable of media content generation or acquisition (i.e., receiving the media content 120), the backup functionality may allow the user 10 to save the media content 120. In addition, the storage system 140, by providing the backup functionality, may simplify the media content management of the user 10. For example, the storage system 140 stores the media content 120 in an album (i.e., the image groups 122a-n or videos) or metadata (e.g., timestamps) of the media content 120 to allow the user 10 to conveniently access or navigate the media content 120.
[0029] The user device 110 may be any computing device or data processing hardware capable of communicating captured media content 120 to a network 130 and / or a storage system 140. For example, the user device 110 is a mobile device such as a mobile phone, a laptop computer, a tablet computer, a personal digital assistant (PDA), a smart wearable device (e.g., a smart watch), etc. In some examples, the user device 110 includes data processing hardware 114, memory hardware 116, and at least one image capture device 118. In other examples, the user device 110 includes data processing hardware 114 and memory hardware 116 without an image capture device 118, so that the user device 110 can send and receive media content 120, but cannot generate media content 120. The image capture device 118 can capture an image 122 or an image sequence 122a-n (e.g., a video). For example, the image capture device 118 is a camera configured to capture a single image 122 or multiple images 122a-n at a specific frequency to form video content. Image capture device 118 generates media content 120 by capturing images 122 or sequences of images 122 a - n .
[0030] Storage system 140 (also referred to as storage device) generally refers to a networked system that is remote from user 10 and / or user device 110 configured to store media content 120. Here, user 10 does not have physical access to storage system 140, but has remote access via user device 110 having a network connection to network 130. Storage system 140 can be one or more workstations and / or servers with one or more network addresses. Storage system 140 includes resources 142, such as data processing hardware 144, memory hardware 146, and software resources 148. In some examples, storage system 140 is a distributed system (e.g., a cloud environment) in which resources 142 can be shared across multiple computing systems.
[0031] For more details, refer to Figure 1, the user 10 may decide to back up the media content 120 located on the user device 110. To back up the media content 120, the user 10 may upload the media content 120 (eg, at least one image 122) to the storage system 140. Here, Figure 1 Depicted are a plurality of images 122a-n uploaded by a user 10 at a user device 110. In some examples, the user 10 manually generates an upload 112 of media content 120 (e.g., images 122a-n). In other examples, an application 20 executing on the user device 110 automatically generates an upload 112 of media content 120 (e.g., images 122a-n). For example, the application 20 initiates an automatic backup process (e.g., at a specific time or a specific threshold of storage and / or generation of media content 120) that generates an upload 112 of media content 120 (e.g., images 122). In some configurations, the application 20 is configured to detect the creation or receipt of media content 120 at the user device 110 (e.g., by an image capture device 118). When the application 20 detects the creation (or receipt) of media content 120, the application 20 may prompt the user 10 of the user device 110 to back up (e.g., copy) the created media content 120 and / or transfer the media content 120 to the storage system 140. The application 20 may be configured to automatically back up and / or automatically transfer the created media content when the application 20 detects the creation of media content at the user device 110.
[0032] Figure 1The compressor 200 and entropy encoder 300 are illustrated as processing the media content 120 (such as images 122a-n) into compressed media content for storage (e.g., shown as compressed images 302, 302a-n) when the media content 120 is communicated to the storage system 140. The compressor 200 and entropy encoder 300 may correspond to software resources 148 on the storage system 140. In some examples, the storage system 140 receives the media content 120 (e.g., images 122a-n) and then communicates the media content 120 to the compressor 200 and entropy encoder 300. As an example of using the images 122a-n as media content 120, the user 10 may upload the images 122a-n in a high-quality format (e.g., original format), and the storage system 140 may then re-compress the uploaded images 122a-n (to a Joint Photographic Experts Group (JPEG) format) using the compressor 200 and entropy encoder 300. In other examples, the compressor 200 and the entropy encoder 300 process the media content 120 before the user device 110 uploads the media content 120 to the storage system 140. Here, the functionality of the compressor 200 and the entropy encoder 300 can be performed on the user device 110 via the application 20 running on the user device 110. For example, once the media content 120 (e.g., images 122a-n) is designated by the user device 110 (e.g., via the application 20) for upload at the user device 110, the compressor 200 and the entropy encoder 300 can process the media content 120 before uploading the media content 120. When the compressor 200 and the entropy encoder 300 process the media content 120 (e.g., images 122a-n) designated for upload 112 to the storage system 140, the user device 110 can upload 112 the media content 120 at a compressed size, thereby achieving faster upload times while requiring less bandwidth during the upload 112. Regardless of whether media content 120 is designated for upload 112 or whether the upload is complete, compressor 200 and entropy encoder 300 are configured to process media content 120 (e.g., images 122a-n) to generate compressed media content (e.g., shown as compressed images 302a-n) for storage on storage system 140.
[0033] Without processing the media content 120 into corresponding compressed media content 120 by the compressor 200 and the entropy encoder 300, the storage of the media content 120 (e.g., images 122a-n) may be expensive for the storage provider of the storage system 140 because the user 10 can specify and upload the media content 120 in a high-quality format. In particular, when the user 10 specifies and uploads the media content 120 in a high-quality format, the storage provider may be forced to store the media content that takes up more space than if the media content 120 was compressed into corresponding compressed media content 120 (e.g., compressed images 302a-n) before being stored on the storage system 140. Therefore, as more and more users 10 of the user device 110 are using the storage system 140 to store their media content 120, the storage provider can utilize the compressor 200 and the entropy encoder 300 to provide a cost-effective storage solution. For example, using the compressor 200 and the entropy encoder 300, media content 120 (e.g., images 122a-n) in a high-quality format can be compressed into compressed media content (e.g., images 302a-n) in a lower storage occupancy format to reduce storage requirements of the storage system 140. In addition, when the media content 120 is compressed by the compressor 200 and the entropy encoder 300 before being uploaded to the storage system 140, upload time and bandwidth requirements can be reduced.
[0034] When the compressor 200 receives the media content 120, the compressor 200 is configured to perform lossy compression and generate an output of quantization indexes 222. Here, the entropy encoder 300 receives the output of the quantization indexes 222 and is configured to encode the media content 120 according to one or more entropy coding tables 322 (e.g., Figure 3 ) entropy encodes the media content 120 in a lossless process to form compressed media content 120 (e.g., shown as compressed images 302, 302a-n). In some examples, the compressor 200 and the entropy encoder 300 are separate components (e.g., separate software programs). As separate components, the compressor 200 and the entropy encoder 300 are configured to communicate with each other, but can be implemented at different locations within the media storage environment 100. In some embodiments, as shown in FIG. Figure 1 As shown in the dashed box in , the compressor 200 and the entropy encoder 300 comprise a single unit. For example, the compressor 200 and the entropy encoder 300 are part of a single program executed on a media storage application associated with the storage system 140. In other words, the media storage application may be a software resource 148 used to communicate with the storage system 140 of the user device 110 including the compressor 200 and the entropy encoder 300 as built-in functionality.
[0035] Figure 2302 is an example of a compressor 200. The compressor 200 is configured to perform lossy compression (e.g., JPEG compression) on the media content 120 (e.g., shown as multiple images 122a-n) from the upload 112. Lossy compression is a form of media compression that processes media content (e.g., image 122) to reduce the amount of data required to represent the media content 120. In order to reduce the amount of data required to represent the media content 120, lossy compression generally removes redundant information or information that the compression technique specifies as unnecessary for representing the media content 120. The redundant information can be coded redundancy, inter-pixel redundancy, or psycho-visual redundancy. By removing redundancy, lossy compression forms media content 120 (e.g., compressed image 302), which includes less data (i.e., compressed) than the original form of the media content 120 (e.g., image 122) before compression, but generally has a quality loss that is imperceptible to the user 10. This is because the compression algorithm reduces redundancy by taking into account the actual perception of quality by the human eye (i.e., information that the human eye cannot detect). For example, the human eye is more sensitive to luminance than to chrominance, and therefore, compression techniques typically discard chrominance information.
[0036] The compressor 200 generally includes a transformer 210 and a quantizer 220. In some examples, the compressor 200 includes additional or alternative components, depending on the type of lossy compression that occurs at the compressor 200. The transformer 210 is configured to receive media content 120 (e.g., shown as images 122a-n) uploaded 112 from a user device 110. Figure 2For each image 122, the transformer 210 divides / partitions the image 122 into sub-blocks (e.g., pixel blocks) 213 at operation 212. For example, the transformer 210 divides / partitions the image 122 into 8x8 pixel blocks 213. For each sub-block 213, at operation 214, the transformer 210 transforms the sub-block 213 to generate corresponding transform coefficients 216 (e.g., by discrete cosine transform (DCT)). For example, for an 8x8 sub-block, the sub-block 213 is actually a 64-point discrete signal in two spatial dimensions. Thus, in the case of a DCT transform of the 8x8 sub-block 213, the DCT transform transforms the 64-point discrete signal into a decomposition of 64 spatial frequencies to output a set of 64 signal amplitudes as transform coefficients 216. These transform coefficients 216 may have some coefficients having zero frequency in both dimensions (also referred to as DC coefficients) and some coefficients having non-zero frequency (also referred to as AC coefficients). Here, the lower numbered coefficients represent low-frequency color changes (i.e., gradient colors across regions), while the higher numbered coefficients represent high-frequency color changes (i.e., rapid changes from one pixel to another within a block). In some examples, the transform coefficients 216 are non-quantized forms of symbols representing the media content 120 (e.g., image 122). By generating the transform coefficients 216, the transformer 210 can associate redundant image data and non-redundant image data to assist the entropy encoder 300 in removing redundant image data. In some embodiments, the transform coefficients 216 also allow the entropy encoder 300 to easily determine multiple coefficients of each transform sub-block 213 with non-zero variance to assist in codeword generation. Once the transformer 210 generates the transform coefficients 216, the transformer 210 communicates the transform coefficients 216 to the quantizer 220.
[0037] In some examples, the converter 210 performs additional operations. These operations may involve media content preparation. In some configurations, the operation of media content preparation occurs before the converter 210 divides the media content 120 into sub-blocks 213 at operation 212. For media content preparation, the converter 210 can separate the media content 120 into components of color space (e.g., brightness (Y), blue chrominance (U), and red chrominance (V)). When the converter 210 separates the media content 120 (e.g., image 122) into color space components, the converter 210 can additionally subsample the color space components (e.g., chrominance components) by pixel area.
[0038] The quantizer 220 receives the transform coefficients 216 and is configured to perform a quantization process (e.g., scalar quantization) based on the transform coefficients 216. The quantization process generally converts the input parameters into a smaller output value data set. Although the quantization process can be converted from analog to digital, the quantization process here processes the digital content of the converted digital media content. By using the quantization process, the data can be compressed, but at the expense of some aspects of data loss, because the smaller data set is a reduction of the larger or continuous data set (i.e., a lossy process). The quantizer 220 quantizes (e.g., scalar quantization) the transform coefficients 216 of each sub-block 213 from the transformer 210 into a quantization index 222. As an example, the quantizer 220 divides each transform coefficient 216 by the corresponding quantizer step size, and then the resulting value can be subsequently rounded to the nearest integer to form the quantization index 222. Here, the quantization index 222 is communicated to the entropy encoder 300 for code work formation and entropy encoding. In some examples, quantization via scalar quantization of transform coefficients 216 can allow a lossy compression process at compressor 200 to scale each transform coefficient 216 in order to contrast redundant media content data (e.g., data that can be removed during encoding) with valuable media content data (e.g., data that should not be removed).
[0039] In some examples, the quantization table specifies the quantizer step size of the quantizer 220. The quantization table can be a default quantization table based on the compression format (e.g., the desired quality setting) or a custom quantization table based on the purpose of lossy compression (i.e., the compression application). In some configurations, the quantizer step size indicates whether the transform coefficients 216 receive fine quantization and / or coarse quantization, or in some cases, which transform coefficients 216 receive fine quantization and which receive coarse quantization. Fine quantization is generally more similar to the original image, while coarse quantization forms an original image with less similarity. Because the quantization table may be different for different compression applications, the compressed media content (e.g., the compressed image 302) can store the quantization table used during quantization to enable decompression.
[0040] refer to Figure 3 , the entropy encoder 300 receives the quantization index 222 from the lossy compressed plurality of images 122a-n from the compressor 200. Using the quantization index 222 of the media content 120 (e.g., the plurality of images 122a-n), the entropy encoder 300 is configured to encode the media content 120 into corresponding compressed media content (e.g., shown as compressed images 302a-n). Figure 3As shown in , the entropy encoder 300 generally includes a coder 310, a coding table generator 320, and an encoder 330. The coder 310 is configured to generate a codeword 312 based on the quantization index 222. The codeword 312 refers to a bit string (e.g., bit, byte, transform coefficient, quantized transform coefficient, quantization index, vector, etc.) used to represent a data symbol. In other words, these symbols can represent compressed data from the compressor 200. In some embodiments, the coder 310 sorts the quantization index 222 to perform run length encoding (RLE). For example, the coder 310 can sort the quantization index 222 using a zigzag sequence (e.g., in sequential encoding), and then use a run length coding algorithm on the zigzag sequence to generate symbols. For example, RLE performs a linear transformation of the matrix of the quantization index 222 to vectorize the quantization index into a symbol in the form of a vector. To illustrate the 8x8 sub-block 213, the symbol of the codeword 312 corresponds to a vector representing 64 quantization indexes 222 sorted according to the zigzag sequence. In other examples, the coder 310 employs partial or full progressive encoding (eg, progressive encoding corresponding to progressive JPEG), where the coder 310 scans batches of similarly positioned quantization indices 222 rather than a sequential pattern (eg, a zigzag sequence) to generate symbols.
[0041] In some configurations, during RLE, the coder 310 generates a codeword 312 representing the quantization index 222 by merging consecutive zero quantization indices 222 and coded non-zero quantization indices 222. For example, each codeword 312 is formed by a combination of two symbols, a first symbol and a second symbol. The first symbol represents a run length (i.e., the number of zeros in the quantization index 222 preceding the non-zero quantization index 222) and a magnitude corresponding to the number of bits representing the non-zero quantization index 222 following the run length of the zero quantization index 222. The second symbol represents the magnitude of the non-zero quantization index 222 corresponding to the first symbol. For illustration, a vector representing 64 quantization indices 222 of an 8x8 sub-block 213 is used, which may include a sequence of quantization indices 222 such as (41, 0, 0, 0, 67, ...). Here, the coder 310 may represent the sequence as (0, 41); (3, 67) because there is no zero quantization index 222 before the non-zero quantization index 222 of forty-one (41) and there are three zero quantization indexes 222 before the non-zero quantization index 222 of sixty-seven (67). Using the signs of the quantization indexes 222, the coder 310 forms codewords 312 defined by bit strings. In some examples, the coder 310 forms the codewords 312, where each codeword is a fixed-length bit string representing a quantization index 222 (e.g., a quantized transform coefficient). For example, each codeword 312 is coded as a 4-bit value. In some examples, there is a special codeword 312 corresponding to the end of a block (e.g., an end-of-block marker) or a maximum run length of zeros of the fixed-length bit string. For example, in the case of a 4-bit value, the maximum run length special codeword 312 corresponds to sixteen consecutive zeros. The codeword 312 generated by the coder 310 may correspond to each symbol (eg, a run-length representation or a non-zero quantization index 222 representation). Once the coder 310 generates the codeword 312 , the codeword 312 may be communicated to the coding table generator 320 .
[0042] The coding table generator 320 generates one or more entropy coding tables 322 based on the codewords 312 received from the coder 310. Conventionally, during entropy encoding based on lossy compression (e.g., JPEG compression), entropy encoding uses a standard entropy coding table or an entropy coding table optimized for a single element of the media content 120. For example, the lossy compression generates a codeword for a single image, and the entropy encoder 300 performs encoding based only on the codeword generated from the single image. This process may be a combination of lossy compression and entropy encoding to produce compressed media content, but unfortunately, this compression process lacks optimization for overall storage across all media content (e.g., images 122a-n or image sets 122a-n from upload 112) and / or lacks specific optimization for a specific set of multiple elements of the media content. More specifically, in general, the entropy coding table does not take into account multiple elements of the media content (i.e., the entropy coding table is generated across multiple images). Although standard entropy coding tables may be based on average statistics for a large number of sets of images with a particular bit precision, these tables are not unique to, for example, a particular plurality of images 122a-n (e.g., a particular set of images 122a-n to be stored in storage system 140), and therefore may result in storage inefficiencies for storage providers. By taking into account multiple elements of media content 120 (e.g., multiple images 122a-n) that will or will ultimately be stored at storage system 140 when generating entropy coding tables, compressor 200 and entropy encoder 300 may optimize storage of media content for storage providers; thus, potentially reducing storage costs for user 10 or stabilizing storage costs for user 10.
[0043] In some examples, compressor 200 and / or entropy encoder 300 are configured to optimize the storage of different collections or sets of cross-media content 120. In these examples, media content 120 can share common characteristics. For example, compressor 200 and / or entropy encoder 300 are configured to optimize the storage of media content 120 associated with one or more users 10 (e.g., user accounts of users 10 with application 20 and / or storage system 140). On different scales, compressor 200 and / or entropy encoder 300 can be configured to optimize the storage of one or more subsets of cross-media content 120, such as a collection of media content albums or sharing given metadata characteristics. In some configurations, application 20 and / or storage system 140 adopts compressor 200 and / or entropy encoder 300 to optimize some (e.g., specific physical storage location) or entire storage in storage system 140 (e.g., entire remote system or data center). The application 20 and / or the storage system 140 may identify common characteristics of the media content (e.g., the type of media content 120 or a designated storage location of the media content 120) and determine whether the identification will utilize the compressor 200 and / or the entropy encoder 300. For example, the application 20 and / or the storage system 140 may identify some or all of the uploaded media content that shares the common characteristics and communicate the media content having the common characteristics to the compressor 200 and / or the entropy encoder 300.
[0044] In some configurations, the media content 120 uploaded 112 includes media content elements having different quality formats, such that the plurality of images 122a-n may correspond to a subset of the images 122a-n uploaded 112. For example, the image subset 122a-n of the plurality of images 122a-n defining the compressor 200 and / or the entropy encoder 300 corresponds to the images of the upload 112 having a large (e.g., high) quality format. In this configuration, the compressor 200 and / or the entropy encoder 300 may identify the quality differences of the media content 120 and determine the subset of images 122a-n to be processed. In other words, some of the media content 120 uploaded 112 may be compressed into a lower storage format (e.g., the identified image subset 122a-n), while the unidentified media content 120 is stored in the storage system 140 (e.g., not processed by the compressor 200 and / or the entropy encoder 300).
[0045] Additionally or alternatively, the storage system 140 and / or the storage provider of the application 20 specifies the media content formats to be processed by the compressor 200 and / or the entropy encoder 300. For example, the application 20 (or the compressor 200 and / or the entropy encoder 300) may be programmed with a file size threshold indicating a minimum file size to be compressed into a lower storage footprint format. In some examples, the application 20 is configured to categorically specify the media content formats to be compressed into a lower storage footprint format by the compressor 200 and / or the entropy encoder 300.
[0046] Continue to refer Figure 3 112 ), a coding table generator 320 receives codewords 312 for a plurality of images 122a-n (e.g., media content 120 of upload 112). In some examples, the coding table generator 320 regenerates the entropy coding table 322 for the storage provider or storage system 140 each time more media content 120 is communicated to the storage system 140, so that the storage system 140 maintains storage efficiency across all stored media content. In some embodiments, the coding table generator 320 generates the coding table 322 only for a plurality of images 122a-n that are sent together to the compressor 200 and / or the entropy encoder 300 (e.g., via upload 112).
[0047] In some examples, the entropy coding table 322 is a bit string map that includes one or more code words 312, a frequency of occurrence of each code word 312, and a variable length bit string (e.g., shown as variable code 324) mapped to each code word 312. In some configurations, the frequency of occurrence corresponds to a count of the number of times a particular code word 312 is present in the media content 120 (e.g., multiple images 122a-n), so that the coding table generator 320 compiles each code word 312 by the corresponding frequency of occurrence. For example, Figure 3 Depicted are codewords 312a-n ordered by frequency from most frequent (4.2) to least frequent (1.1). In some examples, variable length bit strings are mapped to fixed length bit strings such that codewords 312 with greater frequency are mapped to variable length bit strings with fewer bits. For example, when a codeword 312 appears with the highest frequency compared to other codewords 312, the coding table generator 320 assigns a variable length bit string with the least amount of bits (e.g., in Figure 3324 in the figure). In other words, when the coding table generator 320 assigns the first variable length code 324a to the first codeword 312a and the second variable length code 324b to the second codeword 312b, the first variable length code 324a includes fewer bits than the second variable length code 324b because the first codeword 312a has a greater frequency of occurrence than the second codeword 312b. In some examples, a frequency range may be assigned a specific variable length bit string so that even if two codewords 312 (e.g., the first codeword 312a and the second codeword 312b) have different frequencies, each of these codewords 312a-n has a corresponding variable length code 324a-n with different bits, but has the same variable length bit string. By assigning a variable length bit string (e.g., variable length code 324) having a bit amount proportional to the frequency of occurrence of a fixed length bit string (e.g., codeword 312), the coding table generator 320 can ensure that the representation of the media content 120 (e.g., image 122) according to the variable length bit string may reduce the number of bits required to form the compressed media content (e.g., compressed image 302). In other words, the sum of the bit lengths of the variable length bit strings can be optimized.
[0048] The encoder 330 performs entropy coding using the entropy coding table 322 generated by the coding table generator 320, thereby generating a compressed version of the media content 120 (e.g., compressed images 302a-n). Entropy coding can refer to a lossless data compression process because entropy coding can allow the original data to be perfectly reconstructed from the compressed data. The encoder 330 receives the codewords 312 and entropy coding table 322 of the media content 120 (e.g., images 122a-n), and replaces each codeword 312 in the media content 120 (e.g., images 122a-n) with a corresponding variable length code 324a-n as specified by the entropy coding table 322. For this process, the encoder 330 can use entropy coding techniques such as Huffman coding or arithmetic coding in conjunction with the entropy coding table 322. These entropy coding techniques can define the size of the variable length code 324 to be mapped to the codeword 312 (e.g., according to frequency) as indicated by the entropy coding table 322.
[0049] Figure 44 is a flow chart of an example method 400 for generating compressed media content for storage at a storage system 140, wherein the compressed media content is compressed images 302, 302a-n. At operation 402, the method 400 receives a plurality of images 122, 122a-n at a storage device (e.g., the storage system 140 (e.g., the memory hardware 146 at the storage system 140)). At operation 404, for each image 122 in the plurality of images 122, the method 400 generates a codeword 312 using lossy compression. Here, each codeword 312 is defined as a bit string. At operation 406, the method 400 generates an entropy coding table 322 based on the codewords 312 of the plurality of images 122. At operation 408, the method 400 entropy encodes the plurality of images 122 using the generated entropy coding table 322. In some embodiments, the user device 110 executes an application 20 configured to implement the functionality of the compressor 200 and / or the entropy encoder 300 on the user device 110. In these embodiments, the user device 110 locally stores the plurality of images 122 and locally performs operations 404, 406, 408 to locally encode the plurality of images 122. The user device 110 may then upload the encoded images as compressed images 302 for storage on a storage device (eg, storage system 140).
[0050] In some embodiments, the plurality of images 122a-n indicates a portion of the media content 120 that is to be entropy encoded based on the entropy coding table 322, specifically based on the collection of the plurality of images 122a-n. In other words, the plurality of images 122a-n may be formed as a subset of the media content 120, but the plurality of images 122a-n are all entropy encoded together, such that no single image in the plurality of images 122a-n bypasses entropy encoding.
[0051] Figure 5 is a schematic diagram of an example computing device 500 that can be used to implement the systems (e.g., user device 110, storage system 140, compressor 200, and / or entropy encoder 300) and methods (e.g., method 400) described in this document. Computing device 500 is intended to represent various forms of digital computers, such as laptops, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown herein, their connections and relationships, and their functions are illustrative only and are not meant to limit the implementation of the inventions described and / or claimed in this document.
[0052] The computing device 500 includes a processor 510 (e.g., data processing hardware), a memory 520 (e.g., memory hardware), a storage device 530, a high-speed interface / controller 540 connected to the memory 520 and a high-speed expansion port 550, and a low-speed interface / controller 560 connected to a low-speed bus 570 and the storage device 530. Each of the components 510, 520, 530, 540, 550, and 560 are interconnected using various buses and can be mounted on a common motherboard or in other appropriate ways. The processor 510 is capable of processing instructions for execution within the computing device 500, including instructions stored in the memory 520 or stored on the storage device 530, to display graphical information for a graphical user interface (GUI) on an external input / output device such as a display 580 coupled to the high-speed interface 540. In other embodiments, multiple processors and / or multiple buses, as well as multiple memories and memory types, can be used as appropriate. Furthermore, multiple computing devices 500 may be connected, with each device providing portions of the necessary operations (eg, as a server bank, a blade server bank, or a multi-processor system).
[0053] Memory 520 stores information non-temporarily within computing device 500. Memory 520 may be a computer-readable medium, a volatile memory unit, or a non-volatile memory unit. Non-temporary memory 520 may be a physical device for temporarily or permanently storing programs (e.g., sequences of instructions) or data (e.g., program state information) for use by computing device 500. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM) / programmable read-only memory (PROM) / erasable programmable read-only memory (EPROM) / electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware, such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM), and disk or tape.
[0054] The storage device 530 can provide mass storage for the computing device 500. In some embodiments, the storage device 530 is a computer readable medium. In various embodiments, the storage device 530 can be a floppy disk device, a hard disk device, an optical disk device or a tape device, a flash memory or other similar solid state storage device, or a device array, including a device in a storage area network or other configuration. In other embodiments, the computer program product is tangibly embodied as an information carrier. The computer program product contains instructions for performing one or more methods, such as those described above, when executed. The information carrier is a computer or machine readable medium, such as a memory 520, a storage device 530, or a memory on a processor 510.
[0055] The high-speed controller 540 manages bandwidth-intensive operations of the computing device 500, while the low-speed controller 560 manages less bandwidth-intensive operations. This division of responsibilities is illustrative only. In some embodiments, the high-speed controller 540 is coupled to a memory 520, a display 580 (e.g., through a graphics processor or accelerator), and a high-speed expansion port 550 that can accept various expansion cards (not shown). In some embodiments, the low-speed controller 560 is coupled to a storage device 530 and a low-speed expansion port 590. The low-speed expansion port 590, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a network device such as a switch or a router, for example, through a network adapter.
[0056] As shown, computing device 500 may be implemented in a variety of different forms. For example, computing device 500 may be implemented as a standard server 500a or multiple times in a group of such servers 500a, as a laptop computer 500b, or as part of a rack server system 500c.
[0057] Various implementations of the systems and techniques described herein can be implemented in digital electronic and / or optical circuitry, integrated circuits, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include implementations in one or more computer programs that can be executed and / or interpreted on a programmable system that includes at least one programmable processor, which can be special purpose or general purpose, coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to send data and instructions to these devices.
[0058] These computer programs (also referred to as programs, software, software applications or code) include machine instructions for a programmable processor and can be implemented in high-level procedural and / or object-oriented programming languages and / or in assembly / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, non-transitory computer-readable medium, apparatus and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.
[0059] The processes and logic flows described in this specification can be performed by one or more programmable processors that execute one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by dedicated logic circuits, such as FPGAs (field programmable gate arrays) or ASICs (application-specific integrated circuits). For example, processors suitable for executing computer programs include general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for executing instructions and one or more storage devices for storing instructions and data. Typically, a computer will also include one or more large-capacity storage devices such as magnetic disks, magneto-optical disks, or optical disks for storing data, or be operably coupled to a large-capacity storage device to receive data from it or transmit data to it, or both. However, a computer does not have to have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, such as semiconductor memory devices, such as EPROMs, EEPROMs, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0060] To provide interaction with a user, one or more aspects of the present disclosure can be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen, to display information to the user, and an optional keyboard and pointing device, such as a mouse and trackball, through which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including sound, voice, or tactile input. In addition, the computer can interact with the user by sending documents to and receiving documents from a device used by the user; for example, by sending a web page to a web browser on a user's client device in response to a request received from the web browser.
[0061] Many embodiments have been described. However, it should be understood that various modifications can be made without departing from the spirit and scope of the present disclosure. Therefore, other embodiments are also within the scope of the appended claims.
Claims
1. A method for compression across multiple images, comprising: receiving a plurality of images at data processing hardware of a storage device; for each image of the plurality of images, generating, by the data processing hardware, a codeword using lossy compression, each codeword being defined as a string of bits; generating, by the data processing hardware, an entropy coding table specific to the codeword generated for each of the plurality of images received at the storage device, the entropy coding table being configured to be suitable for a different set of images received at the storage device; as well as The plurality of images are entropy encoded, by the data processing hardware, using the generated entropy coding table specific to the plurality of images received at the storage device.
2. The method of claim 1 , wherein generating a codeword further comprises: dividing each image of the plurality of images into pixel blocks; transforming each pixel block in the pixel blocks into transform coefficients; quantizing the transform coefficients to form quantization indices; Represent each quantization index as a corresponding bit string; as well as A variable length code is assigned to the respective bit string, the variable length code comprising a bit length that decreases as occurrences of the respective bit string increase within the plurality of images.
3. The method according to claim 2, wherein: The transform coefficients include discrete cosine transform (DCT) coefficients.
4. The method according to claim 1, wherein: The lossy compression includes Joint Photographic Experts Group (JPEG) compression.
5. The method according to claim 1, wherein: Generating the entropy coding table includes: compiling the codewords generated for each of the plurality of images based on a frequency of occurrence of the codewords, the frequency of occurrence indicating a number of times each codeword exists in the plurality of images; and A variable length code of bits is assigned to each coded codeword based on the frequency of occurrence of the codeword.
6. The method according to claim 5, wherein: Assigning the variable length code of bits to each coded codeword based on the frequency of occurrence of the codeword comprises optimizing a sum of the variable length codes of bits for all coded codewords.
7. The method according to claim 1, wherein: Receiving the plurality of images occurs in response to an upload from a user device, the upload being associated with backup functionality of media content of the user device.
8. The method according to claim 1, wherein: Each image in the plurality of images has a common characteristic associated with a particular user, user account, media content album, or physical storage location.
9. The method according to claim 1, wherein: Receiving the plurality of images comprises: receiving media content including the plurality of images and another plurality of images for storage at the storage device; and It is determined that the plurality of images have a common characteristic, the common characteristic being associated with a particular user, user account, media content album, or physical storage location.
10. The method according to claim 9, further comprising: The plurality of images entropy encoded using the generated entropy coding table are stored by the data processing hardware in a location separate from the other plurality of images at the storage device.
11. A method for compression across multiple images, comprising: At the data processing hardware, a plurality of images are received at the storage device; for each image of the plurality of images, generating, by the data processing hardware, a codeword using lossy compression, each codeword being defined as a string of bits; generating, by the data processing hardware, an entropy coding table based on the codeword generated for each image of the plurality of images; as well as entropy encoding the plurality of images using the generated entropy coding table by the data processing hardware, Wherein, receiving the plurality of images comprises: detecting creation or receipt of media content at a user device running a storage application in communication with the storage device; generating a prompt for the user device, the prompt asking a user of the user device whether to back up or transfer the detected media content to the storage device; and When the user chooses to back up or transfer the detected media content to the storage device, the plurality of images within the media content are identified for entropy encoding.
12. A method for compression across multiple images, comprising: At the data processing hardware, a plurality of images are received at the storage device; for each image of the plurality of images, generating, by the data processing hardware, a codeword using lossy compression, each codeword being defined as a string of bits; generating, by the data processing hardware, an entropy coding table based on the codeword generated for each image of the plurality of images; as well as entropy encoding the plurality of images using the generated entropy coding table by the data processing hardware, Wherein, the plurality of images correspond to a first subset of images of an upload of media content from a user device, the upload of the media content comprising the first subset of images and a second subset of images, the first subset of images having a first media content format designated for compression into a lower storage occupancy format, the second subset of images bypassing compression into the lower storage occupancy format.
13. A system for compression across multiple images, comprising: Data processing hardware for storage devices; as well as Memory hardware in communication with the data processing hardware, the memory hardware storing instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations comprising: receiving a plurality of images at the storage device; For each image in the plurality of images, generating a codeword using lossy compression, each codeword being defined as a bit string; generating an entropy coding table specific to the codeword generated for each image of the plurality of images received at the storage device, the entropy coding table being configured to be suitable for different sets of images received at the storage device; and The plurality of images are entropy encoded using the generated entropy coding table specific to the plurality of images received at the storage device.
14. The system according to claim 13, wherein: Generating a codeword further comprises: dividing each image of the plurality of images into pixel blocks; transforming each pixel block in the pixel blocks into transform coefficients; quantizing the transform coefficients to form quantization indices; representing each quantization index as a corresponding bit string; and A variable length code is assigned to the corresponding bit string, the variable length code comprising a bit length that decreases as occurrence of the corresponding bit string increases in the plurality of images.
15. The system of claim 14, wherein: The transform coefficients include discrete cosine transform (DCT) coefficients.
16. The system of claim 13, wherein: The lossy compression includes Joint Photographic Experts Group (JPEG) compression.
17. The system of claim 13, wherein: Generating the entropy coding table includes: compiling the codewords generated for each of the plurality of images based on a frequency of occurrence of the codewords, the frequency of occurrence indicating a number of times each codeword exists in the plurality of images; and A variable length code of bits is assigned to each coded codeword based on the frequency of occurrence of the codeword.
18. The system of claim 17, wherein: Assigning the variable length code of bits to each coded codeword based on the frequency of occurrence of the codeword includes optimizing a sum of the variable length codes of bits for all coded codewords.
19. The system of claim 13, wherein: Receiving the plurality of images occurs in response to an upload from a user device, the upload being associated with backup functionality of media content of the user device.
20. The system of claim 13, wherein: Each image in the plurality of images has a common characteristic associated with a particular user, user account, media content album, or physical storage location.
21. The system of claim 13, wherein: Receiving the plurality of images comprises: receiving media content including the plurality of images and another plurality of images for storage at the storage device; and It is determined that the plurality of images have a common characteristic, the common characteristic being associated with a particular user, user account, media content album, or physical storage location.
22. The system of claim 21, wherein: The operations further include storing the plurality of images entropy encoded using the generated entropy coding table in a location separate from other plurality of images at the storage device.
23. A system for compression across multiple images, comprising: Data processing hardware; as well as Memory hardware in communication with the data processing hardware, the memory hardware storing instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations comprising: receiving a plurality of images at a storage device; For each image in the plurality of images, generating a codeword using lossy compression, each codeword being defined as a bit string; generating an entropy coding table based on the codeword generated for each image of the plurality of images; and entropy encoding the plurality of images using the generated entropy coding table, The operation of receiving the multiple images includes: detecting creation or receipt of media content at a user device running a storage application in communication with the storage device; generating a prompt for the user device, the prompt asking a user of the user device whether to back up or transfer the detected media content to the storage device; and When the user chooses to back up or transfer the detected media content to the storage device, the plurality of images within the media content are identified for entropy encoding.
24. A system for compression across multiple images, comprising: Data processing hardware; as well as Memory hardware in communication with the data processing hardware, the memory hardware storing instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations comprising: receiving a plurality of images at a storage device; For each image in the plurality of images, generating a codeword using lossy compression, each codeword being defined as a bit string; generating an entropy coding table based on the codeword generated for each image of the plurality of images; and entropy encoding the plurality of images using the generated entropy coding table, Wherein, the plurality of images corresponds to a first subset of images of an upload of media content from a user device, the upload of the media content comprising a first subset of images and a second subset of images, the first subset of images having a first media content format designated for compression into a lower storage footprint format, the second subset of images bypassing compression into the lower storage footprint format.
Citation Information
Patent Citations
Improved compressed caching in a virtual memory system
CN107925421A
Escape mode code resizing for fields and slices
US20050053151A1