一:
(1)对Sena、Sensin和Omaha图像进行编码
压缩前文件名 文件大小
压缩后文件名 文件大小
压缩比
Sena.img 64kb Sena.huff 54kb 1.19:1
Sinan.img 64kb Sinan.huff 57kb 1.12:1
Omaha.img 64kb Omaha.huff 56kb 1.14:1
(2)编写一段程序,得到相邻像素之差,然后利用Huffman对差值图像进行编码。
文件名(压缩前) 大小 文件名(压缩后) 大小 压缩比
Sena.img 64kb Sena.img 31kb 2.06:1
Sensin.img 64kb Sensing.img 36kb 1.78:1
Omaha.img 64kb Omaha.img 50kb 1.2:1
可以看出sena的压缩比最高,sensi次之,Omaha的最小,这也说明不同的图片先计算差分图再使用Huffman编码,可以不同程度的减少文件大小。
(3)利用程序huff_enc和huff_dec,并使用由Sensin图像生成的码本对Bookshelf1和Sena图像进行编码。将这一结果与使用被压缩图象生成码本的情况进行对比。
文件名 原文件大小 原图像压缩后大小 码本压缩后的文件名 码本压缩后文件大小
Sena.img 64kb 54kb Senam.img 51kb
Bookshelf.img 64kb 58kb Bookshelf.img 53kb
采用适当的码表进行编码,可能会造成编码后的文件减小
三:算法另一实现
运行截图:
图片截图:
压缩前后文件大小对比截图:
由于图片打了压缩比很小,基本看不出来,而且只有一种颜色的图片压缩比大一点,所以就截了张纯白色的图片如上图,这样压缩比就大了许多,由2890字节压缩到了1885字节,压缩率=(2890-1885)/2890=49.2%.但是由于压缩后的图片损坏了打不开,就只截了压缩之前的图片,然后把前后的大小显示出来了。