“HUFFMAN-树”不仅能对文本数据进行编码、译码,提高文本数据的传输效率,同时它也能对多媒体数据(如:数字图像、视频等)进行编码、译码,从而实现多媒体数据的压缩存储。目前,在Web互联网上广泛使用的JPEG图像格式就采用了HUFFMAN编码,与其他图像格式(如:BMP、TIF等)相比,同一副图像采用JPEG格式时所需的存储空间是最少的。在这个实验中,请设计一个HUFFMAN编/译码器,并模拟数字图像的压缩存储(编码)和解码显示(译码)的过程。
(1)构造“HUFFMAN-树”:
①读入一个大小为N*M(N为图像的高度,M为图像的宽度)的灰度图像块,该图像中的每个像素(元素)的取值范围是0~255,取值为0表示该像素是“黑色”,取值为255表示该像素是“白色”,其他取值表示介于“黑色”和“白色”之间的灰度值。
②统计读入图像块中每种灰度值出现的次数,并去除出现次数为零的灰度值,以此作为构造“HUFFMAN-树”所需的权值。
③说明:在构造“HUFFMAN-树”的过程中,当有多个待合并元素的权值相同时,每次选择灰度值较小的两个元素进行合并。
(2)HUFFMAN编码(压缩存储):读入新的灰度图像块,利用已建立好的“HUFFMAN-树”对其进行编码,将图像的宽度、高度信息和编码结果保存到文件(如:compress_image.txt)中,同时计算HUFFMAN编码的压缩比并输出。压缩比的计算公式如下:压缩比=原始图像所需比特数/压缩后图像所需比特数。
(3)HUFFMAN译码(解码显示):读入压缩存储的灰度图像,利用已建立好的“HUFFMAN-树”对其进行译码,将译码结果按照原有宽度、高度还原图像,并将还原之后的图像保存到文件(如:decoding_image.txt)中。
标签:
树
上传时间:
2016-12-02
上传用户:592595