发明名称 一种基于小波变换的极低码率视频压缩编码方法
摘要 一种基于小波变换的极低码率视频压缩编码方法,该方法有三大步骤:步骤一:首先对GOF图像组进行三维小波分解,时间和空间分解根据图像组的大小和视频的格式CIF、QCIF、SIF选择合适的分解级数,分解后得到小波分解的系数矩阵;步骤二:对系数矩阵进行分树分块操作;首先对系数矩阵进行一级或是二级虚拟分解,然后对虚拟分解后的系数进行分块处理;步骤三:实现SPIHT编码过程。本发明改进了传统的视频小波3D-SPIHT算法,利用虚拟树与系数分块组织相结合的形式组织小波变换系数,采用多阈值子带编码优化方法,重要系数优先编码,达到用更少的比特数表示更多的有效信息的目的,可以提高压缩比,从而提高了压缩效率。
申请公布号 CN103024399A 申请公布日期 2013.04.03
申请号 CN201310019600.8 申请日期 2013.01.18
申请人 北京航空航天大学 发明人 修春娣;袁延荣;何宇;刘建伟
分类号 H04N7/26(2006.01)I;H04N7/50(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 1.一种基于小波变换的极低码率视频压缩编码方法,其特征在于:该方法的具体实施步骤如下:解码端与编码端过程相逆,在编码端:步骤一:首先对GOF图像组进行三维小波分解,时间和空间分解根据图像组的大小和视频的格式CIF、QCIF、SIF选择合适的分解级数,分解后得到小波分解的系数矩阵;现以GOF=8,CIF(352×288)格式的Foreman视频为例进行三级时间和空间分解,分解后各子带系数矩阵大小如表1所示表1小波分解后各子带系数矩阵大小<tables num="0001"><table><tgroup cols="5"><colspec colname="c001" colwidth="21%" /><colspec colname="c002" colwidth="17%" /><colspec colname="c003" colwidth="19%" /><colspec colname="c004" colwidth="21%" /><colspec colname="c005" colwidth="22%" /><tbody><row><entry morerows="1">子带</entry><entry morerows="1">LLL3</entry><entry morerows="1">LHL3</entry><entry morerows="1">LLH3</entry><entry morerows="1">LHH3</entry></row><row><entry morerows="1">系数矩阵大小</entry><entry morerows="1">44×36×1</entry><entry morerows="1">44×36×1</entry><entry morerows="1">44×36×1</entry><entry morerows="1">44×36×1</entry></row><row><entry morerows="1">子带</entry><entry morerows="1">-----</entry><entry morerows="1">LHL2</entry><entry morerows="1">LLH2</entry><entry morerows="1">LHH2</entry></row><row><entry morerows="1">系数矩阵大小</entry><entry morerows="1">-----</entry><entry morerows="1">88×72×2</entry><entry morerows="1">88×72×2</entry><entry morerows="1">88×72×2</entry></row><row><entry morerows="1">子带</entry><entry morerows="1">------</entry><entry morerows="1">LHL1</entry><entry morerows="1">LLH1</entry><entry morerows="1">LHH1</entry></row><row><entry morerows="1">系数矩阵大小</entry><entry morerows="1">------</entry><entry morerows="1">176×144×4</entry><entry morerows="1">176×144×4</entry><entry morerows="1">176×144×4</entry></row></tbody></tgroup></table></tables>表2小波分解后最低频分解帧各子带系数最大值<tables num="0002"><table><tgroup cols="6"><colspec colname="c001" colwidth="16%" /><colspec colname="c002" colwidth="16%" /><colspec colname="c003" colwidth="16%" /><colspec colname="c004" colwidth="16%" /><colspec colname="c005" colwidth="16%" /><colspec colname="c006" colwidth="20%" /><tbody><row><entry morerows="1">子带</entry><entry morerows="1">LLL3</entry><entry morerows="1">LHL3</entry><entry morerows="1">LLH3</entry><entry morerows="1">LHH3</entry><entry morerows="1">LHL2</entry></row><row><entry morerows="1">系数值</entry><entry morerows="1">2679.7</entry><entry morerows="1">404.5860</entry><entry morerows="1">629.6811</entry><entry morerows="1">289.2501</entry><entry morerows="1">282.4217</entry></row><row><entry morerows="1">子带</entry><entry morerows="1">LLH2</entry><entry morerows="1">LHH2</entry><entry morerows="1">LHL1</entry><entry morerows="1">LLH1</entry><entry morerows="1">LHH1</entry></row><row><entry morerows="1">系数值</entry><entry morerows="1">366.2796</entry><entry morerows="1">148.8928</entry><entry morerows="1">290.9120</entry><entry morerows="1">144.8454</entry><entry morerows="1">60.5448</entry></row></tbody></tgroup></table></tables>对Foreman进行三维小波分解后,时间低频子带的各个子带的小波系数最大值如表2所示,由此看出从最高分解级到最低分解级小波系数幅值逐渐降低,利用这一点在对小波系数编码时对重要的子带进行处理,以达到保护重要系数的目的;步骤二:对系数矩阵进行分树分块操作;首先对系数矩阵进行一级或是二级虚拟分解,然后对虚拟分解后的系数进行分块处理;以GOF为8时间空间三级分解为例,LLLt子带对最低频子带LL3以2×2分组,每组的1号在空间帧没有孩子,但是在LLHt相同位置有一个孩子,其余的2,3,4号分别在空间帧同分解级HL3,LH3,HH3的相同方向有四个孩子,在LLHt相同位置也有一个孩子;HL3、LH3和HH3的每个系数在下一分解级同方向都有一个2×2的系数块子女,其他帧的情况类似,对于LL3子带,除了LLLt和Ht,1、2、3、4号系数都在时间维下一分解级时间帧的相同位置有两个子女;若(i,j,k)为1号系数,则其子女为(i,j,k+1)或是(i,j,k+1)、(i,j,k+2);步骤三:SPIHT编码过程,其具体实现过程如下:HL3、LH3和HH3的每个系数在下一分解级同方向都有一个2×2的系数块子女,其他帧的情况类似,对于LL3子带,除了LLLt和Ht,1、2、3、4号系数都在时间维下一分解级时间帧的相同位置有两个子女;若(i,j,k)为1号系数,则其子女为(i,j,k+1)或是(i,j,k+1)、(i,j,k+2);其余的与图像系数组织类似,这样利于二维与三维相结合的形式;由于相邻的小波系数的相似性,利于利用分块进一步组织小波系数;将相邻的几个小波系数组织成一个块作为一个节点,可以是横向相邻的两个小波系数绑定为一个,或是纵向相邻的两个系数进行绑定,还可以是一个方块的四个小波系数,也可以是长条的四个小波系数,依次类推,不过小波系数越多,复杂度越高,只考虑两个或四个的情况;以四个块作为一组为例,剩下的组织形式与上面一致,就是相当于1,2,3,4分别代表一个2×2的系数块;具体分三个集合,LSP={};LIP={(i,j,k)(i,j,k)∈H,H为树根};LIS={(i,j,k)D(i,j,k)∈H,且有子孙};按如下初始化:LSP={};LIP={(1,1,1),(1,3,1),(3,1,1),(3,3,1)};LIS={(1,3,1)D,(3,1,1)D,(3,3,3)D};后续编码步骤与传统的SPIHT方式一致,有些节点的处理方式需要特别对待,若是小波系数块不重要,则用1个比特表示原先的四个小波系数;后续编码步骤如下:步骤1:初始化阈值和有序表,有序表按上面的初始化,阈值<img file="FDA00002750460400021.GIF" wi="501" he="102" />步骤2:排序扫描步骤2.1:顺次扫描LIP中的系数块(i,j,k);若系数块重要,即<img file="FDA00002750460400022.GIF" wi="396" he="100" />输出1且分别对这个块的每个系数进行重要性测试,若是重要的系数则输出1及其符号位,并将这个系数移动到LSP,若是不重要则输出0,若一个系数块的四个系数都处理完则将其从LIP删除;若是这个系数块不重要,输出0;步骤2.2:顺次处理LIS中的表项(i,j,k)D/L进行处理,对D型表项和L型表项分别进行不同的处理;步骤2.2.1:若是D型表项,判断重要性,若重要则输出1,并将D型表项分解成L型表项和四个系数子块,然后对四个系数子块依次处理:若系数子块重要,则输出1,并对系数子块的四个系数进行处理,若系数重要输出1和符号位,并将其添加至LSP尾部,若系数不重要则输出0;若系数块不重要,则输出0;对D型表分解的L型表项,判断其是否为空集,若为空说明(i,j,k)只有孩子节点,将其从LIS删除;若非空,则将其作为L表项移动到LIS表尾部;若D型表项不重要,输出0;步骤2.2.2:若是L型表项,判断其重要性,若重要输出1,并将其分解为四个D型表项,并添加到LIS尾部,将L型表从LIS删除;若不重要,则输出0;步骤3:精细扫描对LSP中的系数(i,j,k),若不是刚进进行的步骤2中添加的,则输出|C<sub>i,j,k</sub>|的二进制表示中的第N个重要的比特位,T=2<sup>N</sup>为阈值;步骤4:阈值更新将T=T/2,进行下一次排序扫描和精细扫描。
地址 100191 北京市海淀区学院路37号