信源编码技术_作业2_Huffman

1.1 利用自身码本进行Huffman编码

(1)步骤

在调试→调试属性→配置属性→调试→命令参数,分别输入:

-i ..\images\sensin.img -o .\out\sensin.huff
-i ..\images\omaha.img -o .\out\omaha.huff
-i ..\images\sena.img -o .\out\sena.huff

再运行程序huff_enc.c

(2)实验结果(文件大小对比)

图像原图大小编码后大小压缩率
sensin.img64KB58.7KB91.7%
omaha.img64KB57.0KB89.1%
sena.img64KB56.1KB87.7%

(3)实验结论

  • 对图像进行Huffman编码后,文件有所缩小,但压缩幅度不大;
  • 不同图像的压缩率相差无几。

1.2 对相邻像素之差进行Huffman编码

(1)步骤

先将原图像转化为差值图像(每行保留第一个像素,其余像素使用后向差分计算,再对差值进行8bit量化),剩下的步骤与1.1相同。

(2)实验结果(文件大小对比)

图像差值图像大小编码后大小压缩率
sensin.img64KB30.1KB41.0%
omaha.img64KB44.6KB69.7%
sena.img64KB25.2KB39.3%

(3)实验结论

  • 对图像的差值进行Huffman编码,压缩效果要比直接对原图编码好得多;
  • 压缩效果因图而异。omaha.img图像不如sensin.img和sena.img平滑,相邻像素之间差异大,所以压缩率没有sensin.img和sena.img低,但相比于对原图编码已经进步了不少。

2 利用sensin图像码本给其他图像进行Huffman编码

(1)步骤

生成sensin图像码本:

-i ..\images\sensin.img -o .\out\sensin.huff -s .\out\sensin.code

分别输入以下命令,进行编码:

-i ..\images\sena.img -o .\out\sena_enc_sensin_code.huff -c .\out\sensin.code
-i ..\images\bookshelf1.img -o .\out\bookshelf1_enc_sensin_code.huff -c .\out\sensin.code

(2)实验结果(文件大小对比)

图像原图大小编码后大小压缩率
bookshelf1.img64KB70.8KB110.6%
sena.img64KB59.5KB93.0%

(3)实验结论

  • 用其他图像的码本编码,压缩效果远不如用自身码本编码,甚至还可能越编越大;
  • sena.img和sensin.img图像像素的整体分布较为相似,所以用sensin的码本给sena编码还是起到了一定的压缩效果。

3 附录

3.1 Huffman学习笔记

 

3.2 实验过程中遇到的问题及解决办法:

  • 报错:无法打开源文件“stdio.h”"math.h"等头文件。解决:Windows开始菜单→Visual Studio Installer→修改→通用Windows平台开发→勾选Windows 10 SDK→启动。
  • VS安装过程中,点击暂停键后无法恢复。解决:断网再重连,或连VPN,或关掉重装。
  • 0x0F8AF2F6 (ucrtbased.dll) (HuffmanDec.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。解决:读某个文件却没有放入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值