首页 理论教育 系统设计与实现优化

系统设计与实现优化

时间:2023-06-30 理论教育 版权反馈
【摘要】:循环建树:通过循环进行频次统计操作,构建赫夫曼树。

系统设计与实现优化

7.6.3.1 设计图形用户界面(GUI)

为提高赫夫曼压缩及解压缩前后的图像对比效果,可设计GUI窗体,载入图片文件并进行显示,执行赫夫曼压缩、解压缩的操作流程。软件通过菜单来关联相关功能模块,包括文件载入、压缩算法选择等;通过加入图像显示模块来对压缩前后的图像进行直观对比;通过压缩文本区来显示压缩过程中所产生的详细信息。为了能有效地进行不同的实验,在程序启动及载入图像时,均自动调用窗体初始化函数,用于清理坐标显示区域的图像等信息,避免之前的实验产生干扰。

7.6.3.2 压缩重构

基于赫夫曼编码的压缩属于无损压缩编码,其程序实现的基本思想如下。

(1)频次统计:输入一个待编码的向量,这里简称为串,统计串中各字符出现的次数,称之为频次。假设串中含有n个不同的字符,统计频次的数组为count[],则赫夫曼编码每次找出count[]数组中最小的两个值分别作为左、右孩子节点,建立其父节点。(www.xing528.com)

(2)循环建树:通过循环进行频次统计操作,构建赫夫曼树。在建赫夫曼树的过程中首先把count[]数组内的n个值初始化为赫夫曼树的n个叶子节点,且将孩子节点的标号初始化为-1,父节点则初始化为其本身的标号。

(3)循迹编码:选择赫夫曼树的叶子节点作为起点,依次向上查找。假设当前的节点标号是i,那么其父节点是Huffmantree[i].parent,满足如下条件:如果i是Huffmantree[i].parent的左孩子节点,则该节点的路径为0;如果i是Huffmantree[i].parent的右孩子节点,则该节点的路径为1。在循环过程中,如果向上查找得到某节点的父节点标号就是其本身,则说明该节点已经是根节点,进而停止查找。此外,在查找当前权值最小的两个节点时,父节点不是其本身节点的已经被查找过,因此可以直接略过,减少程序的冗余消耗。

7.6.3.3 效果对比

为了检验对图片进行赫夫曼压缩及解压缩的效果,可编写程序计算压缩率及PSNR值,用于表示压缩效果。压缩结果表明,赫夫曼图像压缩可以在无损的前提下有效地进行图像的编解码,具有良好的压缩率,解压缩后的图像与原始图像相比也具有较高的PSNR值,可以有效地节省图像在传输、存储等过程中所需要的资源消耗,提高图像处理效率

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈