<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HE Qichen&#039;s Hackspace &#187; Academic</title>
	<atom:link href="http://heqichen.cn/wp/category/academic/feed/" rel="self" type="application/rss+xml" />
	<link>http://heqichen.cn/wp</link>
	<description>DE BH4CQF K</description>
	<lastBuildDate>Sun, 01 May 2022 11:50:39 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>EZW简析</title>
		<link>http://heqichen.cn/wp/ezw/</link>
		<comments>http://heqichen.cn/wp/ezw/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 20:15:36 +0000</pubDate>
		<dc:creator><![CDATA[heqichen]]></dc:creator>
				<category><![CDATA[Academic]]></category>

		<guid isPermaLink="false">http://gaishi.vicp.net/wp/?p=29</guid>
		<description><![CDATA[<p>EZW算法简析 何琪辰 上海大学计算机工程与科学学院 10720955 heqichen(a)gmail.com http://heqichen.cn 1．简介 EZW算法是1993年由Jerome M. Shapiro提出的基于小波变换的算法。该算法的结果能够经过熵编码后有很高的压缩效率。 E代表了Embedded。嵌入式编码就是渐进式编码。意思是先把最重要的部分进行编码，然后再将次要的部份进行编码。如果把一幅图像进行序列化，低频信号往往是占主要地位的。所以，进过小波变换之后的图像，把左上角放低频信号，右下角放高频信号。并且，编码的扫描线也是从左上方开始扫描，最后到右下角，这样来做到先将图像的重要信息进行编码。http://heqichen.cn W代表了wavelet transform。图像在进入EZW编码器之前先要进行小波变换，分离高低频信息。所以EZW是基于小波变换的算法。 Z代表了Zerotree。称之为“零数”。到目前为止，没有对零树有统一的严格的定义。零树是EZW作者为了方便阐述其算法思想而构造的一种数据结构。并认为，若一棵树能满足特定的几点特定要求，就称之为零树。因为原为中对零数要求在文章中分得十分散，都是用到了再讲，我也没有时间来整理这方面的内容所以零数的具体定义我也没能给出。 文中提到的教材指清华大学出版社的《多媒体技术基础（第3版）》林福宗编著。 2．EZW的算法过程 要进行EZW编码，首先要完成一幅多分辨率图像上的建树操作，以最左上角的一个数为根节点，将与其相关的次级高频信号作为它的子树进行建树操作。 父-子节点对应关系如图 1左侧所示。 图 1零树的结构与扫描方式[2] 然后按照图 1右侧的顺序依次扫描图像上的数值，并通过EZW算法进行编码。每次扫描都将送出数据，但是前一次扫描的数据会比后一次扫描得到的数据更重要，数据是否重要，在EZW算法中体现的就是和一个设定的阈值相比较，若大于阈值，则是重要的数据，反之则不重要。 二维图像扫描的顺序也有很多种，如图 2所示，就是两种比较常用的扫描方法，上侧的叫光栅扫描，下测的称之为迂回扫描。使用不同的扫描方法得到的EZW编码会略有不同，对于需要压缩较高的场合，要根据实际情况选择合适的扫描方法进行编码。后文中的例子使用迂回扫描的方法进行的。 图 2图像扫描顺序 在EZW中，每次扫描的阈值都比上一次小一半，也就是上一次的阈值除以二得到新的阈值。之所以是两倍两倍减少，是因为在计算机中二进制算法更为简单，更为高效。这样的编码方式也称平面编码（bitplane coding）[3]。那么，在第一次扫描的时候就必须要决定阈值Th这个值的大小（这里使用Th代表阈值，避免和EZW符号集中的零树T相冲突）。Th不能太大，因为如果太大了，要减小很多次才能真正开始发送数据。这样最开始的几次计算就会浪费计算资源、消耗计算时间。同时Th也不能设置的过小，若太小，则第一次扫描就会将大部分数据发送出去，对于编码而言就毫无意义，所以必须要有一个最合适的值。并且符合下列不等式。 其中表示图像上的所有数据值。显然，第一次扫描时一定会有数据被发送出去，所以，同时这个值也不能太小，若比Th更大一级的阈值就不能满足这个情况。那么Th的值就是合适的。符合这样的数值就能备取为阈值。阈值的计算公式如下。http://heqichen.cn [3] 由于Word的公式编辑器没法输入取下整符号，上面的公式我直接就拿人家的图片了，意思意思。 基于以上几个前提条件，就可以开始真正的EZW算法了。原文中的算法流程图指给出对于一个数值上来说输出符号的算法，没有整个算法的流程图，我这里给出这个算法的流程图。 图 3 EZW算法流程图 3．EZW效果 如图 4所示是JPEG算法和JPEG2000算法的比较，JPEG2000采用的就是EZW算法。当他们采用相同的比特率时，明显JPEG2000的图像质量要比JPEG的图像质量好很多。 图 5所示的是采用 EZW算法编码后的解码过程，可以很清楚地看到，由于EZW是渐进式的编码过程，当或得到一部分数据后就能够将图像显示出来，只是图像的清晰度比较低，因为数据最开始的部分都是粗糙的数据，而越后得到的数据是越细节的数据。可以看当或得到细节数据后，图像就能够被逐步还原。 图 4编码性能比较[2] 图 5采用EZW算法的解码过程[2] 4．算法过程实例 算法的大致过程可以参考书上，但是量化的那几幅图我觉得可能对于初学者来说表示的不是很明确，而我感觉EZW算法的原文作者在文章中阐述的比较清晰，我根据原文的想法，然后采用类似线段数的方式表示的。由于我这些想法最开始的时候都是形成在纸上，没有很好的格式，输入电脑又比较麻烦，实验室项目催得比较紧，我只能大致上描述一下。见谅。http://heqichen.cn 对于编码过程，可以参考图 6所示的内容。例如，在阈值初始值选取32的情况下，主扫描会将所有的系数范围分为两个部份，一个部分是[0,32)，另一个部分是[32, 64)。若系数落在红色的可能输出符号T或者Z，根据具体情况而定。若落在蓝色部份则可能输出P或者N，根据系数的符号而定。在辅助扫描后，会将输出P或N的系数在进行细分，输出的值可以见图 6树枝上的数值。以此类推，这样就最终就能将细节信息毫无保留的发送出去。但是若某些情况对于图像要求不是很高的情况，只要将前几次的扫描结果进行解码操作就能得到图像的粗糙信息，如图 5所示。 图 6 EZW编码示意图 [&#8230;]</p>
<p>The post <a rel="nofollow" href="http://heqichen.cn/wp/ezw/">EZW简析</a> appeared first on <a rel="nofollow" href="http://heqichen.cn/wp">HE Qichen&#039;s Hackspace</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;" align="center"><span lang="EN-US" style="font-size: 22.0pt; font-family: 黑体;">EZW</span><span style="font-size: 22.0pt; font-family: 黑体;">算法简析</span></p>
<p style="text-align: center;" align="center"><span style="font-family: 黑体;">何琪辰 上海大学计算机工程与科学学院<span lang="EN-US"> 10720955</span></span></p>
<p style="text-align: center;" align="center"><span lang="EN-US" style="font-family: 黑体;"><a href="mailto:heqichen(a)gmail.com">heqichen(a)gmail.com</a><br />
<a href="http://heqichen.cn/">http://heqichen.cn</a></span></p>
<h1><span lang="EN-US">1</span><span style="font-family: 宋体;">．简介</span></h1>
<p style="text-indent: 21.0pt;"><span lang="EN-US">EZW</span><span style="font-family: 宋体;">算法是</span><span lang="EN-US">1993</span><span style="font-family: 宋体;">年由</span><span lang="EN-US">Jerome M. Shapiro</span><span style="font-family: 宋体;">提出的基于小波变换的算法。该算法的结果能够经过熵编码后有很高的压缩效率。</span></p>
<p style="text-indent: 21.0pt;"><span lang="EN-US">E</span><span style="font-family: 宋体;">代表了</span><span lang="EN-US">Embedded</span><span style="font-family: 宋体;">。嵌入式编码就是渐进式编码。意思是先把最重要的部分进行编码，然后再将次要的部份进行编码。如果把一幅图像进行序列化，低频信号往往是占主要地位的。所以，进过小波变换之后的图像，把左上角放低频信号，右下角放高频信号。并且，编码的扫描线也是从左上方开始扫描，最后到右下角，这样来做到先将图像的重要信息进行编码。</span><span style="color: white; font-size: 1px;">http://heqichen.cn</span></p>
<p style="text-indent: 21.0pt;"><span lang="EN-US">W</span><span style="font-family: 宋体;">代表了</span><span lang="EN-US">wavelet transform</span><span style="font-family: 宋体;">。图像在进入</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">编码器之前先要进行小波变换，分离高低频信息。所以</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">是基于小波变换的算法。</span></p>
<p style="text-indent: 21.0pt;"><span lang="EN-US">Z</span><span style="font-family: 宋体;">代表了</span><span lang="EN-US">Zerotree</span><span style="font-family: 宋体;">。称之为“零数”。到目前为止，没有对零树有统一的严格的定义。零树是</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">作者为了方便阐述其算法思想而构造的一种数据结构。并认为，若一棵树能满足特定的几点特定要求，就称之为零树。因为原为中对零数要求在文章中分得十分散，都是用到了再讲，我也没有时间来整理这方面的内容所以零数的具体定义我也没能给出。</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">文中提到的教材指清华大学出版社的《多媒体技术基础（第</span><span lang="EN-US">3</span><span style="font-family: 宋体;">版）》林福宗编著。</span></p>
<p><span id="more-29"></span></p>
<h1><span lang="EN-US">2</span><span style="font-family: 宋体;">．</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">的算法过程</span></h1>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">要进行</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">编码，首先要完成一幅多分辨率图像上的建树操作，以最左上角的一个数为根节点，将与其相关的次级高频信号作为它的子树进行建树操作。</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">父</span><span lang="EN-US">-</span><span style="font-family: 宋体;">子节点对应关系如</span><span lang="EN-US"><b><span lang="EN-US" style="font-family: 宋体;"><span lang="EN-US">图</span></span></b><b><span lang="EN-US"><span lang="EN-US"> 1</span></span></b></span><span style="font-family: 宋体;">左侧所示。</span></p>
<p style="text-align: center; page-break-after: avoid;" align="center"><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image001.gif" width="431" height="191" border="0" data-pinit="registered" /></span></p>
<p style="text-align: center;" align="center"><a name="_Ref292374767"></a><a name="_Ref292374776"></a><b><span style="font-family: 黑体;">图</span> </b><b><span lang="EN-US">1</span></b><b></b><a name="_Ref292374771"></a><b><span style="font-family: 黑体;">零树的结构</span></b><b><span style="font-family: 黑体;">与扫描方式</span><span lang="EN-US">[2]</span></b></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">然后按照</span><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">1</span></b><span style="font-family: 宋体;">右侧的顺序依次扫描图像上的数值，并通过</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">算法进行编码。每次扫描都将送出数据，但是前一次扫描的数据会比后一次扫描得到的数据更重要，数据是否重要，在</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">算法中体现的就是和一个设定的阈值相比较，若大于阈值，则是重要的数据，反之则不重要。</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">二维图像扫描的顺序也有很多种，如</span><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">2</span></b><span style="font-family: 宋体;">所示，就是两种比较常用的扫描方法，上侧的叫光栅扫描，下测的称之为迂回扫描。使用不同的扫描方法得到的</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">编码会略有不同，对于需要压缩较高的场合，要根据实际情况选择合适的扫描方法进行编码。后文中的例子使用迂回扫描的方法进行的。</span></p>
<p style="text-align: center; page-break-after: avoid;" align="center"><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image002.jpg" width="156" height="156" border="0" data-pinit="registered" /></span></p>
<p style="text-align: center;" align="center"><a name="_Ref292397610"></a><b><span style="font-family: 黑体;">图</span> </b><b><span lang="EN-US">2</span></b><b></b><b><span style="font-family: 黑体;">图像扫描顺序</span></b></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">在</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">中，每次扫描的阈值都比上一次小一半，也就是上一次的阈值除以二得到新的阈值。之所以是两倍两倍减少，是因为在计算机中二进制算法更为简单，更为高效。这样的编码方式也称平面编码（</span><span lang="EN-US">bitplane coding</span><span style="font-family: 宋体;">）</span><span lang="EN-US">[3]</span><span style="font-family: 宋体;">。那么，在第一次扫描的时候就必须要决定阈值</span><span lang="EN-US">Th</span><span style="font-family: 宋体;">这个值的大小（这里使用</span><span lang="EN-US">Th</span><span style="font-family: 宋体;">代表阈值，避免和</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">符号集中的零树</span><span lang="EN-US">T</span><span style="font-family: 宋体;">相冲突）。</span><span lang="EN-US">Th</span><span style="font-family: 宋体;">不能太大，因为如果太大了，要减小很多次才能真正开始发送数据。这样最开始的几次计算就会浪费计算资源、消耗计算时间。同时</span><span lang="EN-US">Th</span><span style="font-family: 宋体;">也不能设置的过小，若太小，则第一次扫描就会将大部分数据发送出去，对于编码而言就毫无意义，所以必须要有一个最合适的值。并且符合下列不等式。</span></p>
<p style="text-align: center;" align="center"><span lang="EN-US"><sub><img alt="photo" src="/wp/wp-content/uploads/2014/01/image003.gif" width="144" height="24" border="0" /></sub></span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">其中</span><span lang="EN-US"><sub><img alt="photo" src="/wp/wp-content/uploads/2014/01/image004.gif" width="16" height="24" border="0" /></sub></span><span style="font-family: 宋体;">表示图像上的所有数据值。显然，第一次扫描时一定会有数据被发送出去，所以</span><span lang="EN-US"><sub><img alt="photo" src="/wp/wp-content/uploads/2014/01/image005.gif" width="104" height="24" border="0" /></sub></span><span style="font-family: 宋体;">，同时这个值也不能太小，若比</span><span lang="EN-US">Th</span><span style="font-family: 宋体;">更大一级的阈值就不能满足这个情况。那么</span><span lang="EN-US">Th</span><span style="font-family: 宋体;">的值就是合适的。符合这样的数值就能备取为阈值。阈值的计算公式如下。</span><span style="color: white; font-size: 1px;">http://heqichen.cn</span></p>
<p style="text-align: center;" align="center"><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image006.jpg" width="164" height="41" border="0" /></span><span lang="EN-US">[3]</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">由于</span><span lang="EN-US">Word</span><span style="font-family: 宋体;">的公式编辑器没法输入取下整符号，上面的公式我直接就拿人家的图片了，意思意思。</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">基于以上几个前提条件，就可以开始真正的</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">算法了。原文中的算法流程图指给出对于一个数值上来说输出符号的算法，没有整个算法的流程图，我这里给出这个算法的流程图。</span></p>
<p style="text-align: center; page-break-after: avoid;" align="center"><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image007.jpg" width="551" height="399" border="0" data-pinit="registered" /></span></p>
<p style="text-align: center;" align="center"><b><span style="font-family: 黑体;">图</span> </b><b><span lang="EN-US">3</span></b><b><span lang="EN-US"> EZW</span></b><b><span style="font-family: 黑体;">算法流程图</span></b></p>
<h1><span lang="EN-US">3</span><span style="font-family: 宋体;">．</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">效果</span></h1>
<p style="text-indent: 21.0pt;"><span style="font-size: 9.5pt; font-family: 宋体;">如</span><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">4</span></b><span style="font-size: 9.5pt; font-family: 宋体;">所示是</span><span lang="EN-US" style="font-size: 9.5pt;">JPEG</span><span style="font-size: 9.5pt; font-family: 宋体;">算法和</span><span lang="EN-US" style="font-size: 9.5pt;">JPEG2000</span><span style="font-size: 9.5pt; font-family: 宋体;">算法的比较，</span><span lang="EN-US" style="font-size: 9.5pt;">JPEG2000</span><span style="font-size: 9.5pt; font-family: 宋体;">采用的就是</span><span lang="EN-US" style="font-size: 9.5pt;">EZW</span><span style="font-size: 9.5pt; font-family: 宋体;">算法。当他们采用相同的比特率时，明显</span><span lang="EN-US" style="font-size: 9.5pt;">JPEG2000</span><span style="font-size: 9.5pt; font-family: 宋体;">的图像质量要比</span><span lang="EN-US" style="font-size: 9.5pt;">JPEG</span><span style="font-size: 9.5pt; font-family: 宋体;">的图像质量好很多。</span></p>
<p style="text-indent: 21.0pt;"><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">5</span></b><span style="font-size: 9.5pt; font-family: 宋体;">所示的是采用</span><span lang="EN-US" style="font-size: 9.5pt;"> EZW</span><span style="font-size: 9.5pt; font-family: 宋体;">算法编码后的解码过程，可以很清楚地看到，由于</span><span lang="EN-US" style="font-size: 9.5pt;">EZW</span><span style="font-size: 9.5pt; font-family: 宋体;">是渐进式的编码过程，当或得到一部分数据后就能够将图像显示出来，只是图像的清晰度比较低，因为数据最开始的部分都是粗糙的数据，而越后得到的数据是越细节的数据。可以看当或得到细节数据后，图像就能够被逐步还原。</span></p>
<p style="text-align: center; page-break-after: avoid;" align="center"><span lang="EN-US" style="font-size: 9.5pt;"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image008.gif" width="310" height="135" border="0" data-pinit="registered" /></span></p>
<p style="text-align: center;" align="center"><a name="_Ref292462584"></a><b><span style="font-family: 黑体;">图</span> </b><b><span lang="EN-US">4</span></b><b></b><b><span style="font-family: 黑体;">编码性能比较</span><span lang="EN-US">[2]</span></b></p>
<p style="text-align: center; page-break-after: avoid;" align="center"><span lang="EN-US" style="font-size: 9.5pt;"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image009.gif" width="347" height="235" border="0" data-pinit="registered" /></span></p>
<p style="text-align: center;" align="center"><a name="_Ref292462735"></a><b><span style="font-family: 黑体;">图</span> </b><b><span lang="EN-US">5</span></b><b></b><b><span style="font-family: 黑体;">采用</span><span lang="EN-US">EZW</span></b><b><span style="font-family: 黑体;">算法的解码过程</span><span lang="EN-US">[2]</span></b></p>
<h1><span lang="EN-US">4</span><span style="font-family: 宋体;">．算法过程实例</span></h1>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">算法的大致过程可以参考书上，但是量化的那几幅图我觉得可能对于初学者来说表示的不是很明确，而我感觉</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">算法的原文作者在文章中阐述的比较清晰，我根据原文的想法，然后采用类似线段数的方式表示的。由于我这些想法最开始的时候都是形成在纸上，没有很好的格式，输入电脑又比较麻烦，实验室项目催得比较紧，我只能大致上描述一下。见谅。</span><span style="color: white; font-size: 1px;">http://heqichen.cn</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">对于编码过程，可以参考</span><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">6</span></b><span style="font-family: 宋体;">所示的内容。例如，在阈值初始值选取</span><span lang="EN-US">32</span><span style="font-family: 宋体;">的情况下，主扫描会将所有的系数范围分为两个部份，一个部分是</span><span lang="EN-US">[0,32)</span><span style="font-family: 宋体;">，另一个部分是</span><span lang="EN-US">[32, 64)</span><span style="font-family: 宋体;">。若系数落在红色的可能输出符号</span><span lang="EN-US">T</span><span style="font-family: 宋体;">或者</span><span lang="EN-US">Z</span><span style="font-family: 宋体;">，根据具体情况而定。若落在蓝色部份则可能输出</span><span lang="EN-US">P</span><span style="font-family: 宋体;">或者</span><span lang="EN-US">N</span><span style="font-family: 宋体;">，根据系数的符号而定。在辅助扫描后，会将输出</span><span lang="EN-US">P</span><span style="font-family: 宋体;">或</span><span lang="EN-US">N</span><span style="font-family: 宋体;">的系数在进行细分，输出的值可以见</span><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">6</span></b><span style="font-family: 宋体;">树枝上的数值。以此类推，这样就最终就能将细节信息毫无保留的发送出去。但是若某些情况对于图像要求不是很高的情况，只要将前几次的扫描结果进行解码操作就能得到图像的粗糙信息，如</span><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">5</span></b><span style="font-family: 宋体;">所示。</span></p>
<p style="text-align: center; text-indent: 21.0pt; page-break-after: avoid;" align="center"><span lang="EN-US" style="color: black;"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image010.gif" width="520" height="302" data-pinit="registered" /></span></p>
<p style="text-align: center;" align="center"><a name="_Ref292464074"></a><b><span style="font-family: 黑体;">图</span> </b><b><span lang="EN-US">6</span></b><b><span lang="EN-US"> EZW</span></b><b><span style="font-family: 黑体;">编码示意图</span></b></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">在解码过程中，若已经得知初始的阈值，则可以通过</span><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">6</span></b><span style="font-family: 宋体;">所示的树得到某一位置上系数所属的范围，而在表现的时候，需要用一个值来代表这个范围，这个值就是这个范围的中间值，比如代表</span><span lang="EN-US">[48, 64)</span><span style="font-family: 宋体;">的值就是</span><span lang="EN-US">56</span><span style="font-family: 宋体;">。</span></p>
<p style="text-align: center; page-break-after: avoid;" align="center"><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image011.jpg" width="169" height="168" border="0" data-pinit="registered" /></span></p>
<p style="text-align: center;" align="center"><a name="_Ref292464747"></a><b><span style="font-family: 黑体;">图</span> </b><b><span lang="EN-US">7</span></b><b></b><b><span style="font-family: 黑体;">小波系数实例</span></b></p>
<p style="text-indent: 21.0pt;"><b><span style="font-family: 宋体;">图</span> <span lang="EN-US">7</span></b><span style="font-family: 宋体;">所示是</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">原文中给出的实例。通过计算，得到符号序列如</span><b><span style="font-family: 宋体;">表格</span> <span lang="EN-US">1</span></b><span style="font-family: 宋体;">所示。</span></p>
<p style="text-align: center;" align="center"><a name="_Ref292465306"></a><b><span style="font-family: 黑体;">表格</span> </b><b><span lang="EN-US">1</span></b><b><span lang="EN-US"> EZW</span></b><b><span style="font-family: 黑体;">编码输出</span></b></p>
<table style="border-collapse: collapse; border: none;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: center;" align="center"><b><span style="font-family: 宋体;">扫描名称</span></b></p>
</td>
<td style="width: 370.7pt; border: solid windowtext 3.0pt; border-left: none; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494">
<p style="text-align: center;" align="center"><b><span style="font-family: 宋体;">输出符号</span></b></p>
</td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">D1</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">PNZTPTTTTZTTTTTTTPTT</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">S1</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">1010</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">D2</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">ZTNPTTTTTTTT</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">S2</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">1001 10</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">D3</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">ZZZZZPPNPPNTTNNPTPTTNTTTTTTTTPTTTPTTTTTTTTTPTTTTTTTTTTTT</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">S3</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">1001 11 01111011011000</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">D4</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">ZZZZZZZTZTZNZZZZPTTPTPPTPNPTNTTTTTPTPNPPPPTTTTTPTPTTTPNP</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">S4</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">1101 11 11011001000001 110110100010010101100</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">D5</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">ZZZZZTZZZZZTPZZZTTPTTTTNPTPPTTPTTTNPPNTTTTPNNPTTPTTPPTTT</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">S5</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; background: #D9D9D9; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494"><span lang="EN-US">1011 11 00110100010111 110101101100100000000<br />
110110110011000111</span></td>
</tr>
<tr>
<td style="width: 55.4pt; border: solid windowtext 3.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="74">
<p style="text-align: right;" align="right"><span lang="EN-US">D6</span></p>
</td>
<td style="width: 370.7pt; border-top: none; border-left: none; border-bottom: solid windowtext 3.0pt; border-right: solid windowtext 3.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="494">
<p style="page-break-after: avoid;"><span lang="EN-US">ZZZTTZTTTZTTTTTNNTTT</span></p>
</td>
</tr>
</tbody>
</table>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">第</span><span lang="EN-US">6</span><span style="font-family: 宋体;">次没有辅助扫描，因为在第五次的辅助扫描中，每个分段的长度已经达到</span><span lang="EN-US">1</span><span style="font-family: 宋体;">了，已经能够确定每个系数的具体值，所以不需要进行辅助编码。</span></p>
<h1><span lang="EN-US">5</span><span style="font-family: 宋体;">．关于教材上不妥当的地方</span></h1>
<p style="margin-left: 18.0pt; text-indent: -18.0pt;"><span lang="EN-US" style="font-size: 9.0pt;">1.<span style="font: 7.0pt 'Times New Roman';"><br />
</span></span><span style="font-family: 宋体;">图</span><span lang="EN-US">8-5</span></p>
<p style="text-indent: 18.0pt;"><span style="font-family: 宋体;">图中</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">算法结构被描述成三个模块，但是根据文中也指出了，这张图是说明小波图像编码的结构，但是在图下的题注中却写成了“</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">算法结构”</span><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /></span><span style="font-family: 宋体;">。</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">只是对小波变换完成后的多分辨率图像进行编码，不包括小波变换和熵编码。</span><span style="color: white; font-size: 1px;">http://heqichen.cn</span></p>
<p style="margin-left: 18.0pt; text-indent: -18.0pt;"><span lang="EN-US" style="font-size: 9.0pt;">2.<span style="font: 7.0pt 'Times New Roman';"><br />
</span></span><span style="font-family: 宋体;">建树的过程</span></p>
<p style="text-indent: 18.0pt;"><span style="font-family: 宋体;">由于</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">原文中也有对建树的过程有形式化的描述，只是上下级相关的数作为书的子节点。但是根据图像的层次结构、逻辑上的关系以及编程实现上的观点，我得出的结论是，</span><span lang="EN-US">LL3</span><span style="font-family: 宋体;">对应</span><span lang="EN-US">HL3</span><span style="font-family: 宋体;">、</span><span lang="EN-US">LH3</span><span style="font-family: 宋体;">、</span><span lang="EN-US">HH3</span><span style="font-family: 宋体;">三个节点，然后每个节点都对应到下一层的四个节点。之所以说树的地一层只有三个节点，因为，树的根没有再次分离高低频信息，而其余的点都是分离了高低频信息的，只有根节点是混合所有信息的，所以对于这个节点来说需要特殊处理。而根据教材上的观点，根有四个，然后每个根又对三个子节点，然后子节点又对应到四个更子的节点。这样分法对于扫描三阶图像来说是没问题的，但是对于更高阶的图像来说，明显是毫无规律的，从逻辑上讲无法成立，编程上也无法实现。作者也没有给出为什么这样建树的理由。所以我认为，这样建树的过程是不妥当的。</span></p>
<p><span lang="EN-US">3. </span><span style="font-family: 宋体;">主扫描之后是否要排序</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">书上对主扫描之后的结果进行了排序，但是必须要说明排序的规则是什么，书上没有说。在</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">原文中，是这样阐述的“</span><span lang="EN-US">those magnitudes are reordered for future subordinate passes in the<br />
order(64, 49, 34, 47). Note that 49 is moved ahead of 34 because from the<br />
decoder’s point of view, the reconstruction values 56 and 40 are<br />
distinguishable. </span><span lang="EN-US">[1]</span><span style="font-family: 宋体;">”。没有说具体的排序规则，但是原文可以看出他是排序的。然而，排不排序实际上是无关紧要的，只要有一定规律就行了，比如用迂回扫描出的结果作为顺序，当然，这也是一种排序。但是书上写了一种莫名其妙的排序方法。</span><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /></span></p>
<p><span lang="EN-US">3. </span><span style="font-family: 宋体;">前一次扫描出的重要数值，是否需要再次扫描</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">这个问题的话，是可以扫描，也可以不扫描，但是我自己的出的结果是，扫描比不扫描能够节省编码的长度，因为出现零树的概率好像比较大，没有论证过，一旦出现零树，它的字节点就不需要再扫描了。而且，教材作者所参考的一篇文献中，也是对上一次结果扫描出的重要数值再次扫描的，仅仅认为是</span><span lang="EN-US">0</span><span style="font-family: 宋体;">而已。当然这个不是不妥当的地方，只是与教材作者所参考的文献不一致。</span></p>
<p><span lang="EN-US">4. </span><span style="font-family: 宋体;">第二次扫描的辅编码错误</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">在它第二次扫描之后，重新对数值进行了排序，然后对他辅助编码，出来的结果应该是</span><span lang="EN-US">1010 </span><span style="font-family: 宋体;">但是，他就直接写了</span><span lang="EN-US">1001</span><span style="font-family: 宋体;">，这个是完全错误的。</span><span lang="EN-US"><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /><img alt="photo" src="/wp/wp-content/uploads/2014/01/image012.gif" width="34" height="31" border="0" /></span></p>
<h1><span style="font-family: 宋体;">后记</span></h1>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">因为我平时杂事比较多，故此文行文仓促，未能将算法描述详尽，也不免有错误的地方，若有不当之处还请斧正。</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">在读教材的时候，</span><span lang="EN-US">EZW</span><span style="font-family: 宋体;">开篇就出现逻辑错误，我就开始搜集其它地方的资料。由于我们专业对于数学要求不高，先后查阅了</span><span lang="EN-US">Fourier</span><span style="font-family: 宋体;">的相关资料，小波变换的相关资料。问了许多同学老师，包括通信学院的张伟鹏，徐寅辰，都给了我很大的帮助。特别是兰州工业高等专科学校的邢教授，在百忙之中回答我的问题，并找了很多有关的资料给我。谢谢你们！</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">另外，教材上的傅立叶变换部分和小波变换部份都存在问题，无论是连续变换还是离散变换都有点问题。</span></p>
<p style="text-indent: 21.0pt;"><span style="font-family: 宋体;">本文章所用到的文献、图片、包括这篇文章本身都可以在</span><span lang="EN-US"><a href="http://heqichen.cn/">http://heqichen.cn</a></span><span style="font-family: 宋体;">上下载。</span></p>
<p style="text-indent: 21.0pt;"><span lang="EN-US"> </span></p>
<p style="text-align: right; text-indent: 21.0pt;" align="right"><span lang="EN-US">2011</span><span style="font-family: 宋体;">年</span><span lang="EN-US">5</span><span style="font-family: 宋体;">月</span><span lang="EN-US">6</span><span style="font-family: 宋体;">日</span></p>
<p style="text-align: right; text-indent: 21.0pt;" align="right"><span lang="EN-US"> </span></p>
<h2><span style="font-family: 黑体;">参考文献</span></h2>
<p style="margin-left: 18.0pt; text-indent: -18.0pt;"><a name="_Ref292465925"></a><span lang="EN-US">[1].<span style="font: 7.0pt 'Times New Roman';"><br />
</span></span><span lang="EN-US">J. M. Shapiro, “Embedded Image Coding Using<br />
Zerotrees of Wavelet Coefficients,” IEEE Trans. on Signal Processing, Vol. 41,<br />
No. 12, pp. 3445</span><span style="font-family: 宋体;">–</span><span lang="EN-US">3462, Dec. 1993.</span></p>
<p style="margin-left: 18.0pt; text-indent: -18.0pt;"><a name="_Ref292374798"></a><span lang="EN-US">[2].<span style="font: 7.0pt 'Times New Roman';"><br />
</span></span><span lang="EN-US">Xiaoyan Xu, “Embedded Zero Tree as Image Coding”[OL].<br />
</span><a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=7&amp;ved=0CEoQFjAG&amp;url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.92.1093%26rep%3Drep1%26type%3Dpdf&amp;rct=j&amp;q=Embedded%20Zero%20Tree%20as%20Image%20Coding&amp;ei=fVfCTcvSE4yivgPFht2zAQ&amp;usg=AFQjCNFDv5B0B_DI5nOhzBO6GhxkbVvBSg&amp;sig2=J3pameO8-HyxbRWZBxhj5w&amp;cad=rja"><span lang="EN-US">http://www.google.com/url?sa=t&amp;source=web&amp;cd=7&amp;ved=0CEoQFjAG&amp;url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.92.1093%26rep%3Drep1%26type%3Dpdf&amp;rct=j&amp;q=Embedded%20Zero%20Tree%20as%20Image%20Coding&amp;ei=fVfCTcvSE4yivgPFht2zAQ&amp;usg=AFQjCNFDv5B0B_DI5nOhzBO6GhxkbVvBSg&amp;sig2=J3pameO8-HyxbRWZBxhj5w&amp;cad=rja</span></a></p>
<p style="margin-left: 18.0pt; text-indent: -18.0pt;"><a name="_Ref292398269"></a><span lang="PT-BR">[3].<span style="font: 7.0pt 'Times New Roman';"><br />
</span></span><span lang="PT-BR">PolyValens, </span><a href="http://polyvalens.pagesperso-orange.fr/clemens/ezw/ezw.html"><span lang="PT-BR">http://polyvalens.pagesperso-orange.fr/clemens/ezw/ezw.html</span></a><span lang="PT-BR">[OL]</span></p>
<hr />
<p>相关下载：</p>
<ol style="list-style-position: inside;">
<li><a href="/download/ezw/EZW_heqichen.doc">该文章的Word版[1.3M]</a></li>
<li><a href="/download/ezw/EZW_heqichen.pdf">该文章的PDF版[992k]</a></li>
<li><a href="/download/ezw/EZW_xiaoyan.pdf">文献2[PDF, 413k]</a></li>
<li><a href="/download/ezw/EZW.pdf">EZW原文[PDF, 2.5M]</a></li>
</ol>
<div class="pvc_clear"></div>
<p class="pvc_stats" element-id="29">8,348&nbsp;total views, 8&nbsp;views today</p>
<div class="pvc_clear"></div>
<p>The post <a rel="nofollow" href="http://heqichen.cn/wp/ezw/">EZW简析</a> appeared first on <a rel="nofollow" href="http://heqichen.cn/wp">HE Qichen&#039;s Hackspace</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://heqichen.cn/wp/ezw/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
