图像压缩技术:编码冗余与空间冗余处理
编码冗余相关内容
在处理图像时,我们常常会遇到各种冗余情况,编码冗余就是其中之一。首先,我们来了解一下MAT - file。当使用save函数,或者像“Save Workspace As”和“Save Selection As”这样的菜单命令时,会创建一个带有.mat扩展名的文件,例如“SqueezeTracy.mat”,这种文件被称为MAT - file,它是一种二进制数据文件,包含了工作区变量的名称和值,在某些情况下,它可能只包含一个工作区变量,比如变量c。之前计算的压缩比cr1和cr2之间存在小差异,这是由于MATLAB数据文件的开销导致的。
Huffman解码
Huffman编码后的图像如果不能被解码以重建原始图像,那么它的用处就不大。对于上一节中y = mat2huff(x)的输出,解码器需要完成一系列操作来重建x。这个过程可以分为以下五个基本步骤:
1. 从输入结构y中提取维度m和n,以及最终输出x的最小值xmin。
2. 通过将x的直方图传递给huffman函数,重新创建用于对x进行编码的Huffman码,生成的代码在代码列表中称为map。
3. 构建一个数据结构(过渡和输出表link),通过一系列计算效率高的二进制搜索来简化对y.code中编码数据的解码过程。
4. 将数据结构和编码数据(即link和y.code)传递给C函数unravel。这个函数可以最小化执行二进制搜索所需的时间,创建类为double的解码输出向量x。
5. 将xmin添加到x的每个元素中,并将其重塑为与原始x的维度(即m行n列)相匹配。
下面是huff2mat函数的代码:
超级会员免费看
订阅专栏 解锁全文
3000

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



