Block Compression Using 3- and 6-Byte Sequence Dictionaries
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Dictionary coders frequently reset when compressing print streams with large amounts of image and font data, leading to inefficient compression due to forgetting previously encountered sequences and treating repeated image data as new, resulting in suboptimal storage and transfer efficiency.
Innovation Solution
A block compression algorithm that processes data in 6-byte windows, using a lookup table and binary trees to identify and compress repeating sequences of 3 and 6 bytes, assigning codewords with locations and lengths, and emitting sequences to manage code word changes and matches, thereby reducing resets and enhancing compression efficiency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If a dictionary coder is used to compress print streams with image and font data, then compression is performed, but the dictionary coder frequently resets when running out of code words, causing loss of previously learned sequences and reducing compression efficiency
Solution Approach 1:
The invention segments the dictionary into multiple separate dictionaries (first dictionary for image data, second dictionary for text data) instead of using a single unified dictionary. This segmentation prevents the exhaustion of code words in one dictionary from affecting the other, eliminating the need for frequent resets and preserving learned sequences across different data types.
Solution Approach 2:
The invention changes the parameter of dictionary capacity by providing each dictionary with a different maximum number of code words (first maximum number for image dictionary, second maximum number for text dictionary). This allows optimization of code word allocation based on the specific characteristics of different data types, preventing premature exhaustion in either dictionary.
2Ease of operation
If a dictionary coder resets frequently due to image data, then image data is processed, but the coder forgets sequences from both before and within the image data, treating repeated image data as new
Solution Approach 1:
The invention segments the compression process by directing image data to a dedicated first dictionary while text data uses a second dictionary. This allows the first dictionary to accumulate image sequences without being constrained by the code word limits of a unified dictionary, enabling recognition and compression of repeated image data even after processing large amounts of unique image content.
Solution Approach 2:
The invention performs preliminary classification of data types before compression, routing image data to the first dictionary and text data to the second dictionary. This preliminary action ensures that image sequences are captured and stored in the appropriate dictionary before repetition occurs, enabling efficient compression of repeated image data without requiring resets.
3Quantity of substance
If print streams with thousands of recipients are compressed, then storage and transfer efficiency is improved, but bandwidth-limited networks still require significant transfer time
Solution Approach 1:
The invention merges two compression approaches by combining the specialized image data compression (using the first dictionary for image sequences) with text data compression (using the second dictionary for text sequences). This combined approach achieves superior overall compression ratios for print streams containing both image and text data, reducing the total data volume and consequently the transfer time over bandwidth-limited networks.
Data Source
AI summary
A method for compressing a data stream based on a 3 byte sequence is used. Each three byte sequence is assigned a code word including a location and a length of the data associated with the code word. When a 6 byte sequence is located, a binary tree of 6 byte sequences sharing the same first three bytes is built, associating each 6 byte sequence with a position in the stream where the 6 byte sequence is found. When the length of a code word is changed, a byte sequence is emitted that identifies the code word to be changed and updating the length of the code word, so that when a match is found, a byte sequence is emitted that identifies the code word associated with the matched data. The method finds particular application in data streams that are sent to printers, and which contain large blocks of identical data.


