首先,Huffman算法就可以进行压缩,但是直接用Huffman算法对图片的压缩效率并不高。
采用Haar Wavelets,对图片的像素进行处理。
首先,将第2i个值和第2i+1个值进行操作,相加除以2,得到的值,存放在i个位置,相减除以2,得到的值放在width/2 + i的像素上。其中,i的取值范围:[0,width/2].
如下图所示:
重复上述操作若干次。
对于一张图片,两个相邻的像素值相差很小,所以他们的差值除以2得到的结果很小。所以,压缩后的图片的后部分有可能像素值很小。在图片中,0表示黑色。
如图示意:
第二个图的后半部分图几乎都是黑色,表示他们的像素几乎都是0。在重复操作,黑色的部分越来越多。表示像素中的0的个数越来越大。
注意,这时的图片并没有被压缩,只是图片的像素值变小了,但是每个像素的存储空间没变。再用Huffman算法对上面所得的图片进行压缩。由于上述图片中0比较多,所以Huffman算法的压缩比很大。
本文介绍了如何使用Haar Wavelets对图像进行预处理,通过结合像素相加和相减的方式来减小像素值,然后利用Huffman编码针对处理后的图像进行高效压缩。由于Haar变换后图像的0值增多,Huffman编码能实现更高的压缩比。
1612

被折叠的 条评论
为什么被折叠?



