Block-Based Palette Encoding for High-Color Image Compression
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional methods for encoding and decoding data, particularly in formats like GIF and PNG, face inefficiencies when dealing with more than 256 colors, requiring techniques such as image splitting or transparency, which are inefficient and yield insufficient coding gains.
Innovation Solution
The method involves determining and using different palettes for different parts of the input data, with palette selection indices included in the encoded data to efficiently encode and decode, allowing for dynamic palette usage and compression.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If a single palette is used for the entire image, then the data structure is simple and easy to decode, but the coding efficiency is insufficient when the image contains more than 256 colors
Solution Approach 1:
The image is divided into multiple blocks, and each block can use its own palette or reference a shared palette. This segmentation allows different regions with different color characteristics to be encoded independently, improving coding efficiency for images with more than 256 colors while maintaining manageable complexity through modular structure
Solution Approach 2:
The palette assignment is made dynamic rather than static. Each block can dynamically select or generate its own palette based on local color characteristics, allowing the encoding system to adapt to varying color distributions across different image regions, thereby improving overall coding efficiency
2Adaptability or versatility
If the image is split into multiple partial images with separate palettes, then more than 256 colors can be represented, but the data structure becomes complex with multiple headers and the decoding process becomes inefficient
Solution Approach 1:
Multiple block-level palettes are merged into a single shared palette structure that can be referenced by multiple blocks. This combining approach allows the system to represent more than 256 colors across the entire image while avoiding the complexity of multiple independent image headers, as all blocks share a common palette definition
Solution Approach 2:
The shared palette structure serves multiple functions: it can be referenced by multiple blocks, supports more than 256 colors across the entire image, and maintains a single unified data structure that simplifies decoding. This multi-functional design eliminates the need for separate palettes in each block while still providing the versatility needed for rich color representation
3Adaptability or versatility
If transparency information is used to add more colors, then the color palette can be extended beyond 256 colors, but considerable planning and optimization are required and encoding efficiency is insufficient
Solution Approach 1:
Instead of using transparency information to extend the color palette, the invention changes the fundamental parameter of palette organization from a single shared palette to multiple block-specific palettes. This parameter change allows direct representation of more than 256 colors through expanded palette capacity in each block, eliminating the need for transparency-based workarounds and improving encoding efficiency
Data Source
AI summary
A method of encoding input data to generate corresponding encoded data is provided. The method includes encoding the input data into a plurality of symbols in the encoded data, wherein the plurality of symbols represent data as defined by a plurality of palettes indicated and/or included in the encoded data. The method further includes determining mutually different palettes to be used for encoding mutually different parts of the input data, and using the mutually different palettes for encoding the mutually different parts of the input data. Moreover, the method also includes including, within the encoded data, information associating the mutually different palettes with their respective parts of the input data encoded into the encoded data, wherein the information includes palette selection indices for referencing the mutually different palettes on a block-by-block basis.


