`
womendu
  • 浏览: 1530935 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

讨论:一种基于状态位图的SPIHT算法(1)

阅读更多


今天在维普下载了一篇SPIHT算法改进的论文,(耿兴云,《基于改进SPIHT的静态图像编码》,电脑知识与技术:学术交流-2007年5期),我根据该文提出的改进算法,用Matlab来实现,却发现改进算法的程序运行速度比原算法还要慢,希望有兴趣的朋友进来看看,评论一下原因。文章指出SPIHT 算法有两个缺点:

(1)忽略了基于同频带内相邻小波系数值往往相近的兄弟相关性。SPIHT算法中采用的零树结构依然存在一些冗余信息,因为对于每个量化门限,尤其是初始门限,最低频子带内的所有系数都被编码。至少需输出每点的像素信息和集合信息.即对所有根节点的系数都进行独立编码。

(2)最低频子带系数并非同时都是重要的,SPIHT中,当排序扫描过程利用集合链表LIP和LIS确定小波系数重要性时.仅有一小部分比特用于编码重要信息.尤其在低比特率下:必然导致恢复图像质量的下降。

于是作者就引入提升小波变换、重新定义零树结构、改进扫描编码顺序,利用了LZC算法的状态位图思想,具体方法是:

(1)兄弟相关性的假设
在父节点系数值一般大于子节点系数值的同时,兄弟节点系数值又往往相近,这种由树结构体现的父子相关性和兄弟相关性是小波变换域内的两种主要相关性。基于同频带内相邻小波系数值往往相近的兄弟相关性,作者提出Shapiro假设外的另一个假设,即在最低频子带中一个系数相对于门限T是不重要的,则其邻近的系数相对于门限T也是不重要的。

(2)重新定义零树结构
其实就是把SPIHT零树结构改回采用EZW算法的零树结构。SPIHT算法中LL_N是没有孩子的,这篇文章沿用了SPIHT算法关于C(i,j)、D (i,j)和L(i,j)的定义,不同在于O(i,j)的定义,在改进零树中所有具有直接后续的节点(i,j)的孩子集合O(i,j)定义如下:

若(i,j)=C(0,0),则O(i,j)={(0,1)(1,0),(1,1)};
若(i,j)≠C(0,0),则O(i,j)={(2i,2j)(2i,2j+1),(2i+1,2j),(2i+1,2j+1)}。

(3)引入状态位图思想
采用位图FC、FD来分别表示系数C(i,j)和集合D(i,j)的重用性,同时增加D(i,j)的重要性,同时增加了位图FL来控制当前门限下子集是否进行编码。如果FL(i,j)=1,则D(i,j)或L(i,j)必须进行重要性判断;如果FL(i,j)=0,表示D(i,j)和L(i,j)不必进行重要性判断或已经在前一个门限判断过了。位图FC(i,j)的大小与原图像大小相同,而FD、FL的大小仅为原图像大小的1/4,即图像一级分解LL_1 的区域。

改进算法步骤(原文步骤有误,且印刷也有出错,我把自己改动的地方用红色标示出来):


(1) 初始化,输出 n=floor(log2(max{|C(i,j)|})).清空状态矩阵FC、FD和FL,并初始化FL(O,0)=1。

(2) 对系数C(0,0)单独编码
(a) 如果FC(0,0)=1,输出C(0,0)的第n个比特位;
(b) 否则,输出Sn(C(0,0)),如果Sn(C(0,0))=1
① 输出C(0,0)的符号位;
② 置FC(0,0)=1;

(3) 扫描FD,如果FD(i,j)=1,则对每个(k,l)∈O(i,j)
(a) 如果FC(k,l)=1,输出C(k,1)的第n层比特位;
(b) 否则,输出Sn(C(k,l)),如果Sn(C(k,l))=1
① 输出C(k,l)的符号位
② 置FC(k,l)=1;

(4)扫描FL,如果FL(i,j)=1
(a)如果FD(i,j)=O,输出Sn(D(i,j)),如果Sn(D(i,j))=1
① 置FD(i,j)=1;
② 对每个(k,l)∈O(i,j),输出Sn(C(k,l)),如果Sn(C(k,l))=1,输出C(k,l)的符号位并置FC(k,l)=1;
% ③ 如果L(i,j)是空集,置FL(i,j)=0,否则转而执行(b)。
% (b)如果FD(i,j)=O,输出Sn(L(i,j)),如果Sn(L(i,j))=1
%(蓝色标记的是原文算法步骤可能错误的地方,我修改如下)
③ 如果L(i,j)是空集,置FL(i,j)=0,
否则输出Sn(L(i,j)),如果Sn(L(i,j))=1:
① 置FL(i,j)=l
② 对每个(k,L)∈O(i,j),置FL(i,j)=1;

(5)量化步长;更新n=n-1,转(2)。

分享到:
评论

相关推荐

    基于小波变换的SPIHT算法源码

    SPIHT(小波域中的分层树结构分割)是一种基于小波变换的高效图像压缩算法。它的核心思想是利用小波系数的自适应排序和阈值处理,优先保留重要的系数,以实现高压缩比的同时保持图像质量。 1. **熵编码**:SPIHT...

    图像压缩SPIHT算法

    SPIHT(Set Partitioning in Hierarchical Trees,分层树集划分)算法是一种高效的无损图像压缩方法,由Sheikh、Said和Wolfe在1996年提出。它是基于小波变换的,尤其适合处理高精度图像,能够保持原始图像的细节和...

    SPIHT算法的软件实现

    SPIHT(Set Partitioning in Hierarchical Trees,分层树集划分)算法是一种高效的图像压缩算法,主要用于无损或近无损的数据压缩。该算法由Sheikholeslam、Fattal和Rabbani在1996年提出,是基于小波变换的熵编码...

    在matlab中实现了对SPIHT算法的编写_实现了对SPIHT算法的编写_在matlab中_

    SPIHT(Set Partitioning In Hierarchical Trees,分层树集划分)算法是一种高效的无损图像压缩方法,由Maleki和Donoho在1997年提出。它基于小波变换和熵编码,尤其适用于高精度图像和医疗图像的压缩。在MATLAB中...

    spiht算法的MATLAB源代码

    SPIHT(Set Partitioning In Hierarchical Trees,分层树集划分)算法是一种高效、无损的图像压缩技术,尤其在医疗成像、遥感和高质量图像存储等领域有广泛应用。MATLAB作为一款强大的数学计算和仿真软件,是实现...

    spiht 算法的实现

    SPIHT(Set Partitioning In Hierarchical Trees,分层树集划分)算法是一种高效的图像压缩方法,主要用于无损或近无损的数据压缩。该算法基于小波变换,由Sheila K. Natarajan在1993年提出。SPIHT算法在保持图像...

    使用VC++实现的SPIHT算法

    SPIHT(Set Partitioning In Hierarchical Trees,分层树集划分)算法是一种高效的图像压缩算法,主要用于无损或近无损的数据压缩。该算法由Loic P. Martineau和Yves J. Roiché在1996年提出,其核心是基于小波变换...

    spiht算法的matlab实现

    SPIHT(Set Partitioning In Hierarchical Trees,分层树集划分)算法是一种高效的离散小波变换编码方法,尤其适用于图像压缩。MATLAB是广泛应用于数值计算和信号处理的编程环境,非常适合用来实现SPIHT算法。以下是...

    matlab开发-SPIHT算法图像压缩

    SPIHT(Set Partitioning In Hierarchical Trees,分层树集划分)算法是一种基于小波变换的无损图像压缩方法,由Mallat和Zhang在1993年提出。在MATLAB环境中开发SPIHT算法,可以充分利用其强大的数学计算能力和图形...

    SPIHT_Matlab_Demo.rar_DEMO_SPIHT_SPIHT图像_SPIHT算法_spiht matlab

    SPIHT(Set Partitioning in Hierarchical Trees)是一种高效的小波图像压缩算法,由Said和Pearlman在1996年提出。该算法利用小波分析的多分辨率特性,将图像分解为不同频率成分,然后对这些成分进行有损压缩,以...

    SPIHT 算法原始程序

    SPIHT(Set Partitioning in Hierarchical Trees,分层树集划分)算法是一种高效、高压缩比的图像压缩标准,尤其适用于医学成像和遥感等领域。该算法基于小波变换,利用了图像数据的统计自适应特性,能够在保持较高...

    SPIHT算法_SPIHT算法_

    SPIHT,全称为Set Partitioning in Hierarchical Trees,即多级树集合分裂算法,是一种用于图像压缩的无损编码方法。它由Mallat和Zibulevsky在1990年代中期提出,主要用于高分辨率、高精度图像的压缩,特别是在医学...

    spiht算法小波图像编码算法

    SPIHT(Set Partitioning in Hierarchical Trees,分层树集划分)算法是一种高效的小波图像编码方法,主要用于无损图像压缩。SPIHT算法基于小波变换的特性,将图像数据分解为不同频率成分,然后利用小波系数的重要性...

    SPIHT.rar_SPIHT_SPIHT algorithm_SPIHT算法_sp压缩档位

    SPIHT(Set Partitioning in Hierarchical Trees,分层树集划分)是一种用于图像压缩的算法,尤其在医学影像处理领域广泛应用。SPIHT算法基于小波变换,它利用小波分析的多分辨率特性来高效地表示图像数据。SPIHT...

    SPIHT算法源代码 MATLAB

    SPIHT(Set Partitioning in Hierarchical Trees,分层树集划分)算法是一种高效的图像压缩算法,主要用于无损或近无损的数据压缩。该算法由Sheikholeslam、Fattal和Rabbani在1996年提出,是基于小波变换的编码技术...

Global site tag (gtag.js) - Google Analytics