提示:任何排序算法的执行路径都是使用分支点的比较结果进行定义的。如果解码器和编码器使用相同的排序算法,则对于编码器输入的系数比较结果,解码器通过执行相同的路径就可获得排序信息。
所以,只需将编码器数学表述中的“输出”改为“输入”,解码器即可恢复数据的排序信息;在恢复数据排序信息的同时,解码器还要负责图像的重构,对于确认恢复的重要系数,通过排序扫描和精细扫描两个步骤更新系数的量化值,逐步提高逼近精度和重构图像的质量。
global rMat cMat
% rMat、cMat是Mat的行、列数,作为全局变量,在编码、解码的相关程序中使用
% 读入当前 LIS 的表长
rlis=size(LIS,1);
% ls 是指向 LIS 当前表项位置的指针,初始位置为1
ls=1;
while ls<=rlis
% 读入当前 LIS 表项的类型
switch LisFlag(ls)
% ‘D’类表项,包含孩子和非直系子孙
case 'D'
% 读入该表项的坐标值
rP=LIS(ls,1);
cP=LIS(ls,2);
% 根据 Sn 判断该表项‘D’型子孙树是否重要
if Sn(1)==1
% 每次判断都是读入 Sn 的首位数,判断后立即删除这一位数
Sn(1)=[];
% 生成该表项的孩子树
chO=coef_DOL(rP,cP,'O');
% 分别判断每个孩子的重要性
for r=1:4
% 读入孩子的坐标值
rO=chO(r,1);
cO=chO(r,2);
% 判断该孩子的重要性
if Sn(1)==1
Sn(1)=[];
% 判断该孩子的正负符号
if Sn(1)==1
Sn(1)=[];
% 生成该孩子的系数值
DecodeMat(rO,cO)=1.5*2^N;
else
Sn(1)=[];
DecodeMat(rO,cO)=-1.5*2^N;
end
% 将该孩子添加到重要系数列表 LSP
LSP=[LSP;chO(r,:)];
else
% 如果不重要,则这个孩子的系数值为 0
DecodeMat(rO,cO)=0;
Sn(1)=[];
% 将该孩子添加到不重要系数列表 LIP
% 本级阈值下不重要的系数在下一级解码中可能是重要的
LIP=[LIP;chO(r,:)];
end
end
% 生成该表项的非直系子孙树
chL=coef_DOL(rP,cP,'L');
if ~isempty(chL)
% 如果‘L’型树非空,则将该表项添加到列表 LIS 的尾端等待扫描
LIS=[LIS;LIS(ls,:)];
% 表项类型更改为‘L’型
LisFlag=[LisFlag,'L'];
% 至此,该表项的‘D’型LIS扫描结束,在LIS中删除该项及其类型符
LIS(ls,:)=[];
LisFlag(ls)=[];
else
% 如果‘L’型树为空集
% 则该表项的‘D’型LIS扫描结束,在LIS中删除该项及其类型符
LIS(ls,:)=[];
LisFlag(ls)=[];
end
else
% 如果该表项的‘D’型子孙树不重要,则先删除读入的 Sn 值
Sn(1)=[];
% 然后将指针指向下一个 LIS 表项
ls=ls+1;
end
% 更新当前 LIS 的表长,转入下一表项的扫描
rlis=size(LIS,1);
case 'L'
% 对‘L’类表项,不需判断孩子的重要性
% 读入该表项的坐标值
rP=LIS(ls,1);
cP=LIS(ls,2);
% 判断该表项的‘L’型子孙树是否重要
if Sn(1)==1
% 如果该子孙树重要
Sn(1)=[];
% 则生成该表项的孩子树
chO=coef_DOL(rP,cP,'O');
% 将该‘L’类表项从 LIS 中删除
LIS(ls,:)=[];
LisFlag(ls)=[];
% 将表项的四个孩子添加到 LIS 的结尾,标记为‘D’类表项
LIS=[LIS;chO(1:4,:)];
LisFlag(end+1:end+4)='D';
else
% 如果该表项的‘L’型子孙树不重要,则先删除读入的 Sn 值
Sn(1)=[];
% 然后将指针指向下一个 LIS 表项
ls=ls+1;
end
% 更新当前 LIS 的表长,转入下一表项的扫描
rlis=size(LIS,1);
end
end
% 对 LIS 的扫描结束,将本级阈值的指数减1,准备进入下一级编码
N=N-1;
4、精细扫描解码程序
function DecodeMat=decRefine(DecodeMat,Rn,N,LSP_Old)
% 函数 DECREFINE()为精细解码程序,对上一级解码产生的重要系数列表LSP_Old,根据输入的
% 精细位流 Rn 提高重要系数值的重构精度
% 输入参数:DecodeMat —— 经排序扫描解码后的重构系数矩阵
% Rn —— 精细扫描输出位流
% N —— 本级解码阈值的指数
% LSP_Old —— 上一级解码产生的重要系数列表
% 输出参数:DecodeMat —— 提高重要系数精度后的重构矩阵
rlsp=size(LSP_Old,1);
if ~isempty(LSP_Old)
for r=1:rlsp
dMat=DecodeMat(LSP_Old(r,1),LSP_Old(r,2));
% 首先读取重构矩阵中重要系数的值 dMat
rMat=abs(dMat)+(-1)^(1+Rn(1))*2^(N-1);
% 对 dMat 的绝对值,如果 Rn = 1,则加上2^(N-1),否则减去2^(N-1),结果存入 rMat
if dMat<=0
rMat=-rMat;
end
% 如果 dMat 为负数,则 rMat 也转为负数
Rn(1)=[];
% 消去所读取的Rn信息
DecodeMat(LSP_Old(r,1),LSP_Old(r,2))=rMat;
% 将提高了精度的重要系数值返回重构矩阵中
end
end
OK!SPIHT算法的编码、解码程序到这就基本完成啦,下一篇文章我们就用这些程序来做个实例演示。
2、LIP扫描解码程序
function [DecodeMat,Sn,LSP,LIP]=lip_decode(DecodeMat,Sn,N,LSP,LIP)% 函数 LIP_DECODE() 根据排序位流 Sn,更新列表LIP、LSP和重构系数矩阵 DecodeMat% 输入参数:DecodeMat —— 上一级解码后生成的重构系数矩阵% Sn —— 本级解码排序位流% N —— 本级解码阈值的指数% LSP —— 上一级解码生成的重要系数列表% LIP —— 上一级解码生成的不重要系数列表% 输出参数:DecodeMat —— 本级LIP扫描后更新的重构系数矩阵% Sn —— 对LIP列表扫描后更新的排序位流% LSP —— 对LIP列表扫描后更新的重要系数列表% LIP —— 本级LIP扫描后更新的不重要系数列表rlip=size(LIP,1);
% r 是指向 LIP 当前读入表项位置的指针
r=1;
% 解码路径与编码路径基本一致,不过解码是根据排序位流 Sn 来判断系数是否重要
while r<=rlip
% 读入当前表项的坐标值
rN=LIP(r,1);
cN=LIP(r,2);
% 根据 Sn 判断该表项是否重要
% 根据 Sn 的生成原理,每次判断都是读入 Sn 的首位数,判断后立即删除这一位数
if Sn(1)==1
% 若Sn(1)=1,则表示当前表项是重要的
Sn(1)=[];
% 读入后即删除该位 Sn 数据,使 Sn(2)变为 Sn(1),进入下一次判断
% 这时的 Sn(1) 是正负符号位
if Sn(1)==1
% Sn(1)=1,则相应的系数为正数,其值为本级解码阈值的1.5倍
DecodeMat(rN,cN)=1.5*2^N;
Sn(1)=[];
else
% Sn(1)=0,则相应的系数为负数
DecodeMat(rN,cN)=-1.5*2^N;
Sn(1)=[];
end
% 将该表项添加到重要系数列表 LSP
LSP=[LSP;LIP(r,:)];
% 将该表项从 LIP 中删除
LIP(r,:)=[];
else
% 若不重要,则相应的系数值为 0
DecodeMat(rN,cN)=0;
Sn(1)=[];
% 将指针指向下一个表项
r=r+1;
end
% 判断当前 LIP 的表长
rlip=size(LIP,1);
end
3、LIS扫描解码程序
function [LSP,LIP,LIS,LisFlag,DecodeMat,N]=lis_decode(DecodeMat,N,Sn,LSP,LIP,LIS,LisFlag)% 函数 LIS_DECODE() 根据排序位流 Sn,更新列表LIP、LSP和重构系数矩阵 DecodeMat% 输入参数:DecodeMat —— 本级 LIP 扫描后更新的重构系数矩阵% N —— 本级解码阈值的指数% Sn —— 经本级 LIP 扫描截取后的排序位流% LSP —— 经本级 LIP 扫描后更新的重要系数列表% LIP —— 经本级 LIP 扫描后更新的不重要系数列表% LIS —— 上一级编码生成的不重要子集列表% LisFlag —— 上一级编码生成的不重要子集表项类型列表% 输出参数:LSP —— 本级 LIS 扫描后更新的重要系数列表% LIP —— 经本级 LIS 扫描处理后更新的不重要系数列表% LIS —— 本级 LIS 扫描后更新的不重要子集列表% LisFlag —— 本级 LIS 扫描后更新的不重要子集表项类型列表% DecodeMat —— 本级 LIS 扫描后更新的重构系数矩阵% N —— 下一级解码阈值的指数
分享到:
相关推荐
### SPIHT算法详解及其Matlab实现 #### 一、SPIHT算法概述 ##### 1.1 SPIHT算法与EZW算法的区别 SPIHT (Set Partitioning in Hierarchical Trees) 算法是一种高效的图像编码技术,它基于多级树集合分裂的思想。与...
**SPIHT算法详解** SPIHT,全称为Set Partitioning in Hierarchical Trees,即多级树集合分裂算法,是一种用于图像压缩的无损编码方法。它由Mallat和Zibulevsky在1990年代中期提出,主要用于高分辨率、高精度图像的...
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
ACM动态规划模板-区间修改线段树问题模板
# 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
本项目为Python语言开发的PersonRelationKnowledgeGraph设计源码,总计包含49个文件,涵盖19个.pyc字节码文件、12个.py源代码文件、8个.txt文本文件、3个.xml配置文件、3个.png图片文件、2个.md标记文件、1个.iml项目配置文件、1个.cfg配置文件。该源码库旨在构建一个用于表示和查询人物关系的知识图谱系统。
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
rtsp实时预览接口URL:/evo-apigw/admin/API/MTS/Video/StartVideo HLS、FLV、RTMP实时预览接口方式 :接口URL/evo-apigw/admin/API/video/stream/realtime 参数名 必选 类型 说明 data true string Json串 +channelId true string 视频通道编码 +streamType true string 码流类型:1=主码流, 2=辅码流,3=辅码流2 +type true string 协议类型:hls,hlss,flv,flvs,ws_flv,wss_flv,rtmp hls:http协议,m3u8格式,端口7086; hlss:https协议,m3u8格式,端口是7096; flv:http协议,flv格式,端口7886; flvs:https协议,flv格式,端口是7896; ws_flv:ws协议,flv格式,端口是7886; wss_flv:wss协议,flv格式,端口是7896; rtmp:rtmp协议,端口是1975;
Simulink永磁风机飞轮储能系统二次调频技术研究:频率特性分析与参数优化,Simulink永磁风机飞轮储能二次调频技术:系统频率特性详解及参数优化研究参考详实文献及两区域系统应用,simulink永磁风机飞轮储能二次调频,系统频率特性如下,可改变调频参数改善频率。 参考文献详细,两区域系统二次调频。 ,核心关键词: 1. Simulink 2. 永磁风机 3. 飞轮储能 4. 二次调频 5. 系统频率特性 6. 调频参数 7. 改善频率 8. 参考文献 9. 两区域系统 以上关键词用分号(;)分隔,结果为:Simulink;永磁风机;飞轮储能;二次调频;系统频率特性;调频参数;改善频率;参考文献;两区域系统。,基于Simulink的永磁风机与飞轮储能系统二次调频研究:频率特性及调频参数优化
MATLAB驱动的ASR防滑转模型:PID与对照控制算法对比,冰雪路面条件下滑移率与车速轮速对照展示,MATLAB驱动的ASR防滑转模型:PID与对照控制算法对比,冰雪路面条件下滑移率与车速轮速对照图展示,MATLAB驱动防滑转模型ASR模型 ASR模型驱动防滑转模型 ?牵引力控制系统模型 选择PID控制算法以及对照控制算法,共两种控制算法,可进行选择。 选择冰路面以及雪路面,共两种路面条件,可进行选择。 控制目标为滑移率0.2,出图显示车速以及轮速对照,出图显示车辆轮胎滑移率。 模型简单,仅供参考。 ,MATLAB; ASR模型; 防滑转模型; 牵引力控制系统模型; PID控制算法; 对照控制算法; 冰路面; 雪路面; 控制目标; 滑移率; 车速; 轮速。,MATLAB驱动的ASR模型:PID与对照算法在冰雪路面的滑移率控制研究
芯片失效分析方法介绍 -深入解析芯片故障原因及预防措施.pptx
4131_127989170.html
内容概要:本文提供了一个全面的PostgreSQL自动化部署解决方案,涵盖智能环境适应、多平台支持、内存与性能优化以及安全性加强等重要方面。首先介绍了脚本的功能及其调用方法,随后详细阐述了操作系统和依赖软件包的准备过程、配置项的自动生成机制,还包括对实例的安全性和监控功能的强化措施。部署指南给出了具体的命令操作指导,便于新手理解和执行。最后强调了该工具对于不同硬件条件和服务需求的有效应对能力,特别是针对云计算环境下应用的支持特点。 适合人群:对PostgreSQL集群运维有一定基础并渴望提高效率和安全性的数据库管理员及工程师。 使用场景及目标:本脚本能够帮助企业在大规模部署时减少人工介入时间,确保系统的稳定性与高性能,适用于各类需要稳定可靠的数据库解决方案的企业或机构,特别是在大数据量和高并发事务处理场合。 其他说明:文中还提及了一些高级功能如自动备份、流复制等设置步骤,使得该方案不仅可以快速上线而且能满足后续维护和发展阶段的要求。同时提到的技术性能数据也为用户评估其能否满足业务需求提供了直观参考。
房地产开发合同[示范文本].doc
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
工程技术承包合同[示范文本].doc
蓝桥杯开发赛【作品源码】