An Image Lossless Compression Patent

The present general lossless compression algorithm is not effective for the compression effect of JPEG files. In this article, the lossless compression method combining the shuffling algorithm with the lossless compression algorithm and a new shuffling algorithm are proposed, and this new algorithm could compresses the JPEG files without losses, and the result indicates that this algorithm can further remove the redundancies in the files, and reduce the volume of the files, and the algorithm has been protected by the patent.


Introduction
The picture with the format of JPEG has the character of high image quality, and it is widely used in the computer storage and compute network transfer, and most present pictures of general digital camera are adopt the format of JPEG.Because the picture quality of JPEG picture is higher, so the picture occupies relatively large space, for example, the JPEG picture shot by the digital camera with 8 million pixels can achieve 5M bytes.To save the storage space and reduce the consumption time of picture in the transfer process, the original JPEG picture files are generally compressed to save or transfer.
There are two kinds of compression methods at present.One is the lossless compression which takes the data as the combination of the information and redundancy degree, and its work principle is to remove or reduce the redundancy degree in data without the loss of original data.The other one is the loss compression, which can not only remove or reduce the redundancy degree in data, but ignore some unimportant details, so it has considerable compression ratio, but this compression method will lose some information in original files, so the decompressed files will have some differences with the original files (Yan, 2007).
For the general lossless compression method, the representative algorithms include the Huffman algorithm, LZ and its derived algorithms (LZW, deflate and so on), and the derived software include WinRAR, WinZip, 7-zip and so on, but above software all directly compress the JPEG picture file, so they are not ideal, even the volume of compressed files will increase.In fact, because of the difference of arrangement, original JPEG picture files would have certain redundancy degree which can not be removed when the original JPEG picture files are not treated, so how to more effectively treat the original JPEG picture files is another measure to enhance the compression rate.
A new shuffling algorithm, i.e. the father-common shuffling algorithm, is proposed in the article, and it can effectively treat the original JPEG picture files before these files are compressed, and it could further remove the information redundancy in the files combining with the general lossless compression algorithm.Many experiments show that this method can effectively remove 1%-3% redundancy based on original compression rate, and the algorithm is simple and easy to be realized.

New shuffling algorithm
The function of the shuffling algorithm is to rearrange the bits of data, and it changes the arrangement of bits into another arrangement, and there are many shuffling functions such as the even shuffling, the k'th sub-shuffling, and so on, and the converse shuffling function could change the arrangement into original arrangement order (Wu, 2006, P.172-175).
The new shuffling algorithm proposed in the article is temporally noted as the father-common shuffling algorithm, i.e. if the former card in front of the card A is the card C, and the former card in front of the card B is also the card C, so the card C is defined as the father card of the card A and the card B. When shuffling, the card A and the card B are arranged according to the order.
The concrete description of the father-common algorithm combining the JPEG file is showed as follows.

Principle of shuffling algorithm
Treat the JPEG picture files according to the rule of the father-common shuffling.
(1) Read the JPEG picture files by the binary mode, and group these files; The so-called grouping is to take each 8 bits as one group from the first bit of the binary number, and if there are not 8 bits, 0 can be supplemented in front of this group of binary number to complete 8 bits.
(2) Convert each group of binary code into unsigned decimal number, and save the first group of unsigned decimal number converted from the binary code in the new array H; Because the unsigned decimal number converted from the first grouping number is in 0-255, and to save spaces, this unsigned decimal number can be set as the space occupying one byte.
(3) Sequentially establish 256 arrays Ei (i=0-255), and these arrays are used to store the sub-data after the father-data corresponding with i.For any two neighboring groupings, the former grouping data is set as the father-data, and the latter grouping data is set as the sub-data; (4) Traverse all converted unsigned decimal numbers according to the order of ascending counts, and store the sub-data occurring after each father-data in the i'th array E[i] established in the step (3), and i=father-data, and if the father-data same with i doesn't exist, the array E[i] is empty; (5) Judge whether the traversing ends, and if it ends, count the length of each array that the traversing is completed, and store the result in the new array G, and if it doesn't end, continue the step (4); The element which records the length of each array in the array G generally occupies the space of four bytes.
(6) Connect the contents in 256 Ei arrays end to end and save them in the new array I; (7) Connect and combine the contents in the array H, the array G and the array I end to end, and store them in the new array J which is the converted JPEG picture file.
It is seen that the volume of converted files is bigger than the original files for 1001 bytes.

Reverse-shuffling algorithm
Implement the reversely shuffling to the converted JPEG picture files.
(1) Read reversibly transformed JPEG picture files by the binary mode in the new array J, and group the data; The grouping begins from the first bit, and each 8 bits generally is one group.
(2) Convert each group of data into unsigned decimal numbers, and read the first unsigned decimal number and store it in the new array H, and read the length element of the array stored in sub-data, and store this length element in the new array G sequentially; Sequentially read the spaced occupied in the data according to the above rules, i.e. read the unsigned decimal number occupying 1 byte in the array J into the array H, and read the array length with four bytes after the unsigned decimal number into the array G.
(3) Sequentially establish 256 arrays Ei (i=0-255), and they are used to store the sub-data after the father-data corresponding with i; (4) Sequentially store the residual data in the array J according to the length of the sub-data array in the array G in the array E[i] established in the step (3); (5) Establish the array A, and store the data in the array H in the first position of the array A; (6) Sequentially read the data in the array A as the father-data, and look for the first number without read sign in the array E[i] (i=father data) in 256 arrays as the sub-data, and store this sub-data in the next empty position after the father-data in the array A, and sign the position of this sub-data in the corresponding array E[i] as read; (7) Scan 256 arrays Ei, and check whether the sign positions of all data is read, and if they are not read, so continue the step (6), and if they are read, so stop scanning, and save the array A as file, and the file is the original JPEG picture file.

Flow chart
The compression/decompression flows are seen in Figure 1 and Figure 2.

Compression steps
(1) Reversibly convert the JPEG picture file according to the father-common shuffling rule, and obtain the converted JPEG picture file; (2) Compress the converted JPEG picture files by the LZ77 coding or the improved algorithm, and the compression is over.

Decompression steps
(1) Decompress the compressed JPEG picture files by the LZ77 coding or the improved algorithm, and obtain the reversibly converted JPEG picture files; (2) Reversely treat the reversibly converted JPEG picture files by the reverse shuffling algorithm, and obtain original JPEG picture files.
Experiment data: Canon EOS 400D Digital, general JPEG pictures and network pictures shot by Cannon PowerShot D630 camera.
Experiment tool: general gzip lossless compression algorithm.
Part experiment result is seen in Table 1.

Result analysis
Volume analysis: Above results are only part data, and large numbers of experiment data show that this method can compress the volume of JPEG files without loss, and when the file is the JPEG picture over 1M bits, the compression effect is better than the current compression software.
Real-time analysis: In above experiment environment, to compress the single JPEG file with 20M bits, Winrar needs about 14s, and Winzip needs about 3s, and the father-common shuffling algorithm +gzip lossless compression method needs about 5.5s.
To the data in the Table, there are 40 JPEG picture files, and Winrar needs 72s, Winzip needs 12s, and the father-common shuffling algorithm +gzip lossless compression method needs about 40s.

Conclusions
At present, the picture of JPEG format is popular and widely used in various occasions, and its volume gradually becomes into the restriction of transfer and saving with the development of the digital equipments.Under the condition to possibly reduce the volume without the loss of picture quality, a new shuffling algorithm combining with the general lossless compression algorithm is proposed in the article from another angle.The experiment result indicates that the real-time character of this method is good, and the compression rate can be enhanced by 1%-3% comparing with WinRAR, WinZip and 7zip, and the concretely theoretical support is still in research, but the algorithm has been protection by the patent (No. 200810073769.0).Record the lengths of the first grouping and each arrays, connect 256 arrays end to end, and output the converted files

Figure 1 .
Figure 1.Flow of Shuffling Processing of JPEG Picture File

Table 1 .
Comparison of JPEG pictures (shot by Cannon EOS 400D Digital Camera) respectively compressed by Winrar, Winzip and father-common+gzip compression algorithm Group the picture data according to 8bits/grouping, and describe each grouping as decimal unsigned number Establish 256 empty arrays sequentially Transverse each grouping, and put the latter grouping (sub-array) in the array corresponding with the former grouping (father-array)