压缩位流
① 数字图像的无损压缩是指
答案是A,解压后重建的图像与原始图像完全相同。
虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比,即指使用压缩后的数据进行重构,重构后的数据与原来的数据有所不同,但不影响人对原始资料表达的信息造成误解。有损压缩适用于重构信号不一定非要和原始信号完全相同的场合。
图像和声音的压缩(因为其中包含的数据往往多于我们的视觉系统和听党系统所能接收的信息,丢掉一些数据而不至于对声音或者图像所表达的意思产生误解但可大大提高压缩比)。有损压缩广泛应用于语音,图像和视频数据的压缩。
2、无损压缩格式则是利用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为2:1到5:1。
这类方法广泛用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩。即指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同;无损压缩用于要求重构的信号与原始信号完全致的场合。
② 压缩空气流量怎么计算
压力为7kg/m3是的流速p=v2p/2
其中p是空气压力(帕)=700000帕
v是流速p为空气密度=1.2千克/立方米
计算的v=1080米/秒
以内径10厘米为例计算:由v=sv=1/4πd2v=1/4x3.14x0.1x0.1x1080=8.5立方米/秒=30600立方米/小时,注意这是在没有阻力情况下计算的,实际流量要小一些
流量计量
压缩空气是企事业单位重要的二次能源,大多由电能或热能经压缩机转化而来。当空气压力值要求较低时,则由鼓风机产生。对由大量能源转化而来的工质进行管理,以收到节约能源和提高设备管理水平的效果,是压缩空气流量计量的主要目的。
在化工等生产过程中,有一种重要的工艺过程氧化反应,它是以空气作原料,和另外某种原料在规定的条件下进行化学反应。空气质量流量过大和过小,都会对安全生产、产品质量和贵重原料的消耗产生关键影响。在这种情况下,空气流量测量精确度要求特别高,多半还配有自动调节。
以上内容参考:网络-压缩空气流量计
③ 压缩算法原理
哈夫曼
哈夫曼编码是无损压缩当中最好的方法。它使用预先二进制描述来替换每个符号,长度由特殊符号出现的频率决定。常见的符号需要很少的位来表示,而不常见的符号需要很多为来表示。
哈夫曼算法在改变任何符号二进制编码引起少量密集表现方面是最佳的。然而,它并不处理符号的顺序和重复或序号的序列。
2.1 原理
我不打算探究哈夫曼编码的所有实际的细节,但基本的原理是为每个符号找到新的二进制表示,从而通常符号使用很少的位,不常见的符号使用较多的位。
简短的说,这个问题的解决方案是为了查找每个符号的通用程度,我们建立一个未压缩数据的柱状图;通过递归拆分这个柱状图为两部分来创建一个二叉树,每个递归的一半应该和另一半具有同样的权(权是 ∑ N K =1 符号数 k , N 是分之中符号的数量,符号数 k 是符号 k出现的次数 )
这棵树有两个目的:
1. 编码器使用这棵树来找到每个符号最优的表示方法
2. 解码器使用这棵树唯一的标识在压缩流中每个编码的开始和结束,其通过在读压缩数据位的时候自顶向底的遍历树,选择基于数据流中的每个独立位的分支,一旦一个到达叶子节点,解码器知道一个完整的编码已经读出来了。
压缩后的数据流是 24 位(三个字节),原来是 80 位( 10 个字节)。当然,我应该存储哈夫曼树,这样解码器就能够解码出对应的压缩流了,这就使得该例子中的真正数据流比输入的流数据量大。这是相对较短的数据上的副作用。对于大数据量来说,上面的哈夫曼树就不占太多比例了。
解码的时候,从上到下遍历树,为压缩的流选择从左 / 右分支,每次碰到一个叶子节点的时候,就可以将对应的字节写到解压输出流中,然后再从根开始遍历。
2.2 实现
哈夫曼编码器可以在基本压缩库中找到,其是非常直接的实现。
这个实现的基本缺陷是:
1. 慢位流实现
2. 相当慢的解码(比编码慢)
3. 最大的树深度是 32 (编码器在任何超过 32 位大小的时候退出)。如果我不是搞错的话,这是不可能的,除非输出的数据大于 2 32字节。
另一方面,这个实现有几个优点:
1. 哈夫曼树以一个紧密的形式每个符号要求 12 位(对于 8 位的符号)的方式存储,这意味着最大的头为 384 。
2. 编码相当容易理解
哈夫曼编码在数据有噪音的情况(不是有规律的,例如 RLE )下非常好,这中情况下大多数基于字典方式的编码器都有问题。
④ 如何设置流媒体压缩比特率,使视频最清晰
用格式工厂吧
压成 FLV 第二代
H.264编码 默认的比特率就行了
PS: FLV 第二代 比第一代(优酷,薯仔上的) 好的多 而其支持高清 因为用了H.264编码 方式
⑤ 图像压缩的图像压缩原理
1.图像压缩的概念
减少表示数字图像时需要的数据量
2.图像压缩的基本原理
图像数据之所以能被压缩,就是因为数据中存在着冗余。图像数据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。数据压缩的目的就是通过去除这些数据冗余来减少表示数据所需的比特数。由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。
信息时代带来了“信息爆炸”,使数据量大增,因此,无论传输或存储都需要对数据进行有效的压缩。在遥感技术中,各种航天探测器采用压缩编码技术,将获取的巨大信息送回地面。
图像压缩是数据压缩技术在数字图像上的应用,它的目的是减少图像数据中的冗余信息从而用更加高效的格式存储和传输数据。
3。图像压缩基本方法
图像压缩可以是有损数据压缩也可以是无损数据压缩。对于如绘制的技术图、图表或者漫画优先使用无损压缩,这是因为有损压缩方法,尤其是在低的位速条件下将会带来压缩失真。如医疗图像或者用于存档的扫描图像等这些有价值的内容的压缩也尽量选择无损压缩方法。有损方法非常适合于自然的图像,例如一些应用中图像的微小损失是可以接受的(有时是无法感知的),这样就可以大幅度地减小位速。
无损图像压缩方法有:
行程长度编码
熵编码法
如 LZW 这样的自适应字典算法
有损压缩方法有:
将色彩空间化减到图像中常用的颜色。所选择的颜色定义在压缩图像头的调色板中,图像中的每个像素都用调色板中颜色索引表示。这种方法可以与 抖动(en:dithering)一起使用以模糊颜色边界。
色度抽样,这利用了人眼对于亮度变化的敏感性远大于颜色变化,这样就可以将图像中的颜色信息减少一半甚至更多。
变换编码,这是最常用的方法。首先使用如离散余弦变换(DCT)或者小波变换这样的傅立叶相关变换,然后进行量化和用熵编码法压缩。
分形压缩(en:Fractal compression)。
4.图像压缩的主要目标就是在给定位速(bit-rate)或者压缩比下实现最好的图像质量。但是,还有一些其它的图像压缩机制的重要特性:
可扩展编码 (en:Scalability) 通常表示操作位流和文件产生的质量下降(没有解压缩和再压缩)。可扩展编码的其它一些叫法有 渐进编码(en:progressive coding)或者嵌入式位流(en:embedded bitstreams)。尽管具有不同的特性,在无损编码中也有可扩展编码,它通常是使用粗糙到精细像素扫描的格式。尤其是在下载时预览图像(如浏览器中)或者提供不同的图像质量访问时(如在数据库中)可扩展编码非常有用 有几种不同类型的可扩展性:
质量渐进(en:Quality progressive)或者层渐进(en:layer progressive):位流渐进更新重建的图像。
分辨率渐进(en:Resolution progressive):首先在低分辨率编码图像,然后编码与高分辨率之间的差别。
成分渐进(en:Component progressive):首先编码灰度数据,然后编码彩色数据。
感兴趣区域编码,图像某些部分的编码质量要高于其它部分,这种方法可以与可扩展编码组合在一起(首先编码这些部分,然后编码其它部分)。
元数据信息,压缩数据可以包含关于图像的信息用来分类、查询或者浏览图像。这些信息可以包括颜色、纹理统计信息、小预览图像以及作者和版权信息。
5.图像压缩目前的标准
经典的视频压缩算法已渐形成一系列的国际标准体系,如H.26x系列建议,H.320系列建议以及MPEG系列建议等。
6.图像压缩效果的评估
压缩方法的质量经常使用峰值信噪比来衡量,峰值信噪比用来表示图象有损压缩带来的噪声。但是,观察者的主观判断也认为是一个重要的、或许是最重要的衡量标准。
⑥ 霍夫曼 解压缩
哈夫曼编码(Huffman Coding)是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。 在计算机信息处理中,“哈夫曼编码”是一种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。这种方法是由David.A.Huffman发展起来的。 例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。
本文描述在网上能够找到的最简单,最快速的哈夫曼编码。本方法不使用任何扩展动态库,比如STL或者组件。只使用简单的C函数,比如:memset,memmove,qsort,malloc,realloc和memcpy。
因此,大家都会发现,理解甚至修改这个编码都是很容易的。
背景
哈夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。哈夫曼压缩属于可变代码长度算法一族。意思是个体符号(例如,文本文件中的字符)用一个特定长度的位序列替代。因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。
编码使用
我用简单的C函数写这个编码是为了让它在任何地方使用都会比较方便。你可以将他们放到类中,或者直接使用这个函数。并且我使用了简单的格式,仅仅输入输出缓冲区,而不象其它文章中那样,输入输出文件。
bool CompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
bool DecompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
要点说明
速度
为了让它(huffman.cpp)快速运行,我花了很长时间。同时,我没有使用任何动态库,比如STL或者MFC。它压缩1M数据少于100ms(P3处理器,主频1G)。
压缩
压缩代码非常简单,首先用ASCII值初始化511个哈夫曼节点:
CHuffmanNode nodes[511];
for(int nCount = 0; nCount < 256; nCount++)
nodes[nCount].byAscii = nCount;
然后,计算在输入缓冲区数据中,每个ASCII码出现的频率:
for(nCount = 0; nCount < nSrcLen; nCount++)
nodes[pSrc[nCount]].nFrequency++;
然后,根据频率进行排序:
qsort(nodes, 256, sizeof(CHuffmanNode), frequencyCompare);
现在,构造哈夫曼树,获取每个ASCII码对应的位序列:
int nNodeCount = GetHuffmanTree(nodes);
构造哈夫曼树非常简单,将所有的节点放到一个队列中,用一个节点替换两个频率最低的节点,新节点的频率就是这两个节点的频率之和。这样,新节点就是两个被替换节点的父节点了。如此循环,直到队列中只剩一个节点(树根)。
// parent node
pNode = &nodes[nParentNode++];
// pop first child
pNode->pLeft = PopNode(pNodes, nBackNode--, false);
// pop second child
pNode->pRight = PopNode(pNodes, nBackNode--, true);
// adjust parent of the two poped nodes
pNode->pLeft->pParent = pNode->pRight->pParent = pNode;
// adjust parent frequency
pNode->nFrequency = pNode->pLeft->nFrequency + pNode->pRight->nFrequency;
这里我用了一个好的诀窍来避免使用任何队列组件。我先前就直到ASCII码只有256个,但我分配了511个(CHuffmanNode nodes[511]),前255个记录ASCII码,而用后255个记录哈夫曼树中的父节点。并且在构造树的时候只使用一个指针数组(ChuffmanNode *pNodes[256])来指向这些节点。同样使用两个变量来操作队列索引(int nParentNode = nNodeCount;nBackNode = nNodeCount –1)。
接着,压缩的最后一步是将每个ASCII编码写入输出缓冲区中:
int nDesIndex = 0;
// loop to write codes
for(nCount = 0; nCount < nSrcLen; nCount++)
{
*(DWORD*)(pDesPtr+(nDesIndex>>3)) |=
nodes[pSrc[nCount]].dwCode << (nDesIndex&7);
nDesIndex += nodes[pSrc[nCount]].nCodeLength;
}
(nDesIndex>>3): >>3 以8位为界限右移后到达右边字节的前面
(nDesIndex&7): &7 得到最高位.
注意:在压缩缓冲区中,我们必须保存哈夫曼树的节点以及位序列,这样我们才能在解压缩时重新构造哈夫曼树(只需保存ASCII值和对应的位序列)。
解压缩
解压缩比构造哈夫曼树要简单的多,将输入缓冲区中的每个编码用对应的ASCII码逐个替换就可以了。只要记住,这里的输入缓冲区是一个包含每个ASCII值的编码的位流。因此,为了用ASCII值替换编码,我们必须用位流搜索哈夫曼树,直到发现一个叶节点,然后将它的ASCII值添加到输出缓冲区中:
int nDesIndex = 0;
DWORD nCode;
while(nDesIndex < nDesLen)
{
nCode = (*(DWORD*)(pSrc+(nSrcIndex>>3)))>>(nSrcIndex&7);
pNode = pRoot;
while(pNode->pLeft)
{
pNode = (nCode&1) ? pNode->pRight : pNode->pLeft;
nCode >>= 1;
nSrcIndex++;
}
pDes[nDesIndex++] = pNode->byAscii;
}
⑦ 你认为图像压缩的方式有哪些
但是,观察者的主观判断也认为是一个重要的、或许是最重要的衡量标准。无损压缩的基本原理是相同的颜色信息只需保存一次。压缩图像的软件首先会确定图像中哪些区域是相同的,哪些是不同的。包括了重复数据的图像(如蓝天) 就可以被压缩,只有蓝天的起始点和终结点需要被记录下来。但是蓝色可能还会有不同的深浅,天空有时也可能被树木、山峰或其他的对象掩盖,这些就需要另外记录。从本质上看,无损压缩的方法可以删除一些重复数据,大大减少要在磁盘上保存的图像尺寸。但是,无损压缩的方法并不能减少图像的内存占用量,这是因为,当从磁盘上读取图像时,软件又会把丢失的像素用适当的颜色信息填充进来。如果要减少图像占用内存的容量,就必须使用有损压缩方法。无损压缩方法的优点是能够比较好地保存图像的质量,但是相对来说这种方法的压缩率比较低。但是,如果需要把图像用高分辨率的打印机打印出来,最好还是使用无损压缩几乎所有的图像文件都采用各自简化的格式名作为文件扩展名。从扩展名就可知道这幅图像是按什么格式存储的,应该用什么样的软件去读/写等等。
⑧ 压缩空气流量如何计算
兄弟 可能你都不会信,昨天回去翻了一下书,公式简单的要死
P=0.5ρV2
ρ---密度
V2---速度平方
P--静压(作用于物体表面)
压缩的啊,那我就不大晓得了,我这是风管内
⑨ 我想要JPEG2000编码基本原理及其应用的有关文献,请问那里可以找到谢谢
JPEG2000图像压缩标准及其关键算法
周 宁 汤晓军 徐维朴
(西安交通大学人工智能与机器人研究所西安710049)
摘 要:JPEG2000是为适应不断发展的图像压缩应用而出现的新的静止图像压缩标准。阐述了JPEG2000图像编码系统的实现过程, 对其中采用的基本算法和关键技术进行了描述,介绍了这一新标准的特点及应用场合,并对其性能进行了分析。�
关键词:JPEG2000; 图像压缩;离散小波变换; 速率控制;感兴趣区域��
1 引言�
随着多媒体应用领域的快速增长和网络的不断发展,传统的JPEG压缩技术已无法满足人们对数字化多媒体图像资料的要求,一种功能更强大、效率更卓越的静止图像压缩标准被提到制定日程上,这就是JPEG2000。�
JPEG(Joint Photographic Experts Group)是在国际标准化组织(ISO)领导之下制定静态图像压缩标准的委员会,第一套国际静态图像压缩标准ISO 10918-1(JPEG)就是该委员会制定的。由于JPEG优良的品质,使他在短短几年内获得了极大的成功,被广泛应用于互联网和数码相机领域,网站上80%的图像都采用了JPEG压缩标准。然而,目前的JPEG静止图像压缩标准,具有中端和高端比特速率上的良好的速率畸变特性,但在低比特率范围内,将会出现很明显的方块效应,其质量变得不可接受。JPEG不能在单一码流中提供有损和无损压缩,并且不能支持大于64×64 K的图像压缩。同时,尽管当前的JPEG标准具有重新启动间隔的规定,但当碰到比特差错时图像质量将受到严重的损坏。�
针对这些问题,自1997年3月起,JPEG图像压缩标准委员会开始着手制定新一代的图像压缩标准以解决上述问题。2000年3月的东京会议,确定了彩色静态图像的新一代编码方式JPEG2000图像压缩标准的编码算法。�
JPEG2000系统分为下列7个部分:�
①JPEG2000图像编码系统;�
②扩充(给①的核心定义添加更多的特征和完善度);�
③运动JPEG2000;�
④一致性;�
⑤参考软件(目前包含Java和C实现);�
⑥复合图像文件格式(用于文件扫描和传真应用程序);�
⑦对①的最小支持(技术报告)。�
①为完全被认可的ISO标准,定义了核心压缩技术和最小文件格式,②~⑥定义压缩和文件格式的扩充。其中,①已经制定完成,其余部分还在制定过程中。本文所讨论的JPEG2000标准就是基于第1部分的。
2 JPEG2000系统的特点�
JPEG2000以其特有的优点弥补了现行JPEG标准的不足。离散小波变换算法中,图像可以转换成一系列可更加有效存储像素模块的子带,因此,JPEG2000格式的图像压缩比可在现在的JPEG基础上再提高10%~30%,而且压缩后的图像显得更加细腻平滑。也就是说,在网上观看采用JPEG2000压缩的图像时,不仅下载速率比采用JPEG格式的快近30%,而且品质也将更好。对于目前的JPEG标准,在同一个压缩码流中不能同时提供有损和无损压缩,而在JPEG2000系统中,通过选择参数, 能够对图像进行有损和无损压缩,可满足图像质量要求很高的医学图像、图像库等方面的处理需要。现在网络上的JPEG图像下载时是按"块"传输的,因此只能逐行地显示,而采用JPEG2000格式的图像支持渐进传输(Progressive Transmission),这就允许图像按照所需的分辨率或像素精度进行重构,用户根据需要,对图像传输进行控制,在获得所需的图像分辨率或质量要求后,便可终止解码,而不必接收整个图像的压缩码流。由于JPEG2000采用小波技术,利用其局部分辨特性,在不解压的情况下,可随机获取某些感兴趣的图像区域(ROI)的压缩码流,对压缩的图像数据进行传输、滤波等操作。�
3 JPEG2000图像编解码系统�
本节主要介绍JPEG2000图像编解码系统。其编码器和解码器的框图如图1所示。�
在编码器中,首先对源图像进行前期预处理,对处理的结果进行离散小波变换,得到小波系数。然后对小波系数进行量化和熵编码,最后组成标准的输出码流(位流)。解码器是编码器的反过程,首先对码流进行解包和熵解码,然后是反向量化和离散小波反变换,对反变换的结果进行后期处理合成,就得到重构的图像数据。尽管JPEG2000编解码过程与JPEG类似,但是对于每一步的具体实现两者却有非常大的差异。编码过程的一般步骤如下:�
(1) 将有多个颜色分量组成的图像分解成单一颜色分量的图像。分量之间存在一定的相关性,通过分解相关的分量变换,可减少数据间的冗余度,提高压缩效率;�
(2) 分量图像被分解成大小统一的矩形片——图像片。图像片是进行变换和编解码的基本单元;�
(3) 每一个图像片进行小波变换。产生多级系数图像。这些不同级数的系数图像可以重构出不同分辨率的图像;�
(4) 多级分解的结果是由小波系数组成的多个子带。他们表示图像片中局部区域(而不是整幅图像)的频率特性;�
(5) 对系数子带进行量化,并且组成矩形数组的"码块";�
(6) 对一个码块中的系数位平面(也就是一个码块中整个系数中具有同样权值的那些位)进行熵编码;�
(7) 相对于图像的背景区域,可以对感兴趣区域进行更高质量的编码;�
(8) 通过在位流中加入掩码来增加抗干扰性;�
(9) 在每一个码流的最前部都有一个头结构,他描述的是源图像的属性,各种分解情况和编码风格。这个头结构可以用来进行定位、抽取、译码和重构图像,得到的图像可以具有所期望的分辨率、重现精度、感兴趣的区域或是其他特性。�
编码过程主要分为以下几个过程:预处理、核心处理和位流组织。预处理部分包括对图像分片、直流电平(DC)位移和分量变换。核心处理部分由离散小波变换、量化和熵编码组成。位流组织部分则包括区域划分、码块、层和包的组织。�
3.1 预处理�
(1)图像分片�
分片指的是把源图像分割成相互不重叠的矩形块——图像片,每一个图像片作为一个独立的图像进行压缩编码。编码中的所有操作都是针对图像片进行的。图像片是进行变换和编解码的基本单元。图像的分片降低了对存储空间的要求,并且由于他们重构时也是独立进行的,所以可以用来对图像的特定区域而不是整幅图像进行解码。当然,图像分片会影响图像质量。比较小的图像片会比大图像片产生更大的失真。图像分片在低比特率表示图像的时候所造成的图像失真会更加严重。
(2)DC电平位移�
在对每一图像片进行正向离散小波变换之前,都要进行直流电平位移。目的是在解码时,能够从有符号的数值中正确恢复重构的无符号样本值。直流电平位移是对仅有无符号数组成的图像片的像素进行的。电平位移并不影响图像的质量。在解码端,在离散小波反变换之后,对重构的图像进行反向直流电平位移。�
(3)分量变换�
JPEG2000支持多分量图像。不同的分量不需要有相同的比特深度,也不需要都是无符号或有符号数。对于可恢复(无损)系统,唯一的要求就是每一个输出分量图像的比特深度必须跟相应输入分量图像的比特深度保持一致。�
3.2 核心处理�
(1)小波变换�
不同于传统的DCT变换,小波变换具有对信号进行多分辨率分析和反映信号局部特征的特点。通过对图像片进行离散小波变换,得到小波系数图像,而分解的级数视具体情况而定。小波系数图像由几种子带系数图像组成。这些子带系数图像描述的是图像片水平和垂直方向的空间频率特性。不同子带的小波系数反映图像片不同空间分辨率的特性。通过多级小波分解,小波系数既能表示图像片中局部区域的高频信息(如图像边缘),也能表示图像片中的低频信息(如图像背景)。这样,即使在低比特律的情况下,我们也能保持较多的图像细节(如边缘)。另外,下一级分解得到的系数所表示图像在水平和垂直方向的分辨率只有上一级小波系数所表示的图像的一半。所以,通过对系数图像的不同级数进行解码,就可以得到具有不同空间分辨率(或清晰,或模糊)的图像。�
小波变换因其具有的这种优点被JPEG2000标准所采用。在编码系统中,对每个图像片进行Mallat塔式小波分解。经过大量的测试,JPEG2000选用两种小波滤波器:LeGall 5/3滤波器和Daubechies 9/7滤波器。前者可用于有损或无损图像压缩,后者只能用于有损压缩。�
在JPEG2000标准中,小波滤波器可以有2种实现模式:基于卷积的和基于提升机制的。而具体实现时,对图像边缘都要进行周期对称延伸,这样可以防止滤波器对图像边缘操作时产生失真。另外,为了减小变换时所需空间的开销,标准中还应用了基于行的小波变换技术。�
(2)量化�
由于人类视觉系统对图像的分辨率要求有一定的局限,通过适当的量化减小变换系数的精度,可在不影响图像主观质量的前提下,达到图像压缩的目的。量化的关键是根据变换后图像的特征、重构图像质量要求等因素设计合理的量化步长。量化操作是有损的,会产生量化误差。不过一种情况除外,那就是量化步长是1,并且小波系数都是整数,利用可恢复整数5/3拍小波滤波器进行小波变换得到的结果就符合这种情况。�
在JPEG2000标准中,对每一个子带可以有不同的量化步长。但是在一个子带中只有一个量化步长。量化以后,每一个小波系数有2部分来表示:符号和幅值。对量化后的小波系数进行编码。对于无损压缩,量化步长必须是1。�
(3)熵编码�
图像经过变换、量化后,在一定程度上减少了空域和频域上的冗余度,但是这些数据在统计意义上还存在一定的相关性,为此采用熵编码来消除数据间的统计相关。将量化后的子带系数划分成小的矩形单元——码块(code block)。
如图2所示,采用两层编码策略,首先使用基于上下文的算术编码器,每个码块进行独立的嵌入式码块编码,得到码块的嵌入式压缩位流。然后,根据率失真优化原则,采用PCRD(Post Compression Rate Distortion)优化算法思想,将所有码块的压缩位流适当截取,组织成具有不同质量级的压缩位流层。每一层上的压缩位流连同其前面的所有层的压缩位流,可重构出一定质量的图像。在分层组织压缩位流时,须对每个码块在每一层上的贡献信息进行编码,即对码块位流在该层的截断点信息等编码。由于图像采用小波变换,整个图像压缩码流具有分辨率可分级性,从而,压缩码流可同时具有质量上和分辨率上的可分级性。由于对码块进行独立编码,因此,可根据需要,随机获取并解码相应的码块压缩位流,重构出所需的图像区域。
①第一层编码算法�
与传统的依次对每个系数进行算术熵编码不同,JPEG2000编码系统把码块中的量化系数组织成若干个位平面,从最高有效位平面(MSB)开始,依次对每个位平面上的小波系数位进行算术编码。�
第一层编码可以看作2部分:上下文的生成(CF)和算术编码器(AE)。在上下文的生成中,以一定的顺序扫描码块中的所有位。在码块的每个位平面上,从左上角系数开始,从左到右,从上到下进行扫描,并为每一位生成一个上下文。算术编码器根据生成的上下文,对每一位进行编码。
在量化后,小波系数被转换为符号-振幅模式。在从MSB到LSB编码时,当遇到第一个为1的比特时,这个像素被称作是显着的,否则,为不显着的。所有比特的上下文都是由他们的邻域通过以下的4种方法产生:�
零编码(zero coding,ZC)用来编码非显着像素在当前的位平面中是否将变得显着;�
游程编码(run-length coding, RLC)用来编码位于同一列中的4个非显着性像素,如果他们的邻域都是非显着的;�
符号编码(sign coding, SC)当该位变得显着后,编码他的符号位;
幅度编码(Magnitude Refinement, MR)用来编码显着位。�
每个位平面都在3个编码通道中进行编码。通道1是重要性传播通道(Significance Propagation Pass),至少有一个重要性邻域的像素,在此通道进行编码,使用ZC和SC。通道2是幅度细化通道(Magnitude Refinement Pass),所有的重要位在此通道进行编码,使用MR。通道3是清除通道(Cleanup Pass),所有没有在上两个通道中进行编码的像素,在此通道中进行编码,使用ZC,LRC和SC。位平面中的每一位在3个通道中进行检查来确定是否应当被编码。
由编码通道得到的上下文和与其对应的数据一起,送至算术编码器进行编码。在这里,采用了自适应二进制算术编码〔1〕,主要是考虑到计算的复杂度以及实现的方便性。在进行算术编码后,对每一个码块,得到一个独立的嵌入式码块压缩位流。�
②第二层编码算法�
在第二层编码算法中,采用PCRD率失真优化算法思想〔1,2〕,对所有码块的嵌入式压缩位流进行适当的截取,分层组织,形成整个图像的具有质量可分级的压缩码流。第二层编码算法也可以看作两部分:速率控制和分层组织压缩位流。速率控制是指通过一定的编解码措施,获得给定压缩码率下的最佳重构图像质量。分层组织压缩位流根据编码参数所规定的分层层数以及每一层的编码速率,估算每一层的率失真门限,然后根据每一层估计出的率失真门限,按照码块率失真算法,找到每个码块嵌入式压缩位流在该层上的截断点,将截断的码块压缩位流进行打包,按照规定的格式存储,形成图像压缩码流。将码流分层组织,每一层含有一定的质量信息,在前面层的基础上改善图像质量。这样用户可以根据自己的需要,控制图像的传输,在取得满意的图像效果后,中止传输,在某种程度上缓解当前网络带宽有限而图像数据量大而造成的瓶颈问题。
3.3 位流组织�
为了适合图像交换,更好地应用JPEG2000压缩码流的功能,JPEG2000标准规定了存放压缩位流和解码所需参数的格式,把压缩码流以包为单元进行组织,形成最终的码流。
4 JPEG2000中的关键技术�
在这一节中,对JPEG2000中所使用的关键技术加以说明。�
4.1 离散小波变换�
JPEG2000与传统JPEG最大的不同在于他放弃了JPEG所采用的以离散余弦变换(DCT)为主的区块编码方式,转而采用以小波变换(DWT)为主的多解析编码方式。 �
余弦变换是经典的谱分析工具,他考察的是整个时域过程的频域特征或整个频域过程的时域特征,因此对于平稳过程,他有很好的效果,但对于非平稳过程,他却有诸多不足。在JPEG中,离散余弦变换将图像压缩为8×8 的小块,然后依次放入文件中,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息被丢弃的越多。在极端情况下,JPEG图像只保留了反映图像外貌的基本信息,精细的图像细节都损失了。小波变换是现代谱分析工具,他既能考察局部时域过程的频域特征,又能考察局部频域过程的时域特征,因此即使对于非平稳过程,处理起来也得心应手。他能将图像变换为一系列小波系数,这些系数可以被高效压缩和存储,此外,小波的粗略边缘可以更好地表现图像,因为他消除了DCT压缩普遍具有的方块效应。
4.2 速率控制算法�
JPEG2000通过采用速率控制方法来计算码流的理想截断点,从而获得给定压缩码率下的最佳重构图像质量。速率控制使用了PCRD率失真优化算法。率失真优化,即给定整个压缩码流的最大编码速率,找出每个码块压缩位流的适当截断点,在满足的条件下,使重构图像失真最小。从而使得嵌入式码块编码具有如下特点:生成的压缩位流可根据需要,被截断成不同长度的位流子集;将所有码块的截断位流组织起来,可重构出一定质量的图像。�
4.3 渐进传输特性�
现在网络上的JPEG图像下载时是按"块"传输的,因此只能逐行显示,而采用JPEG2000格式的图像支持渐进传输。JPEG2000中的渐进传输有2种,按照分辨率的渐进传输和按照质量的渐进传输。按照质量的渐进传输就是先传输图像轮廓数据,然后再逐步传输细节数据来不断提高图像质量,而按照分辨率的渐进传输则先传输分辨率较低的图像,后一幅图像在前一幅图像的基础上提高其分辨率。图像的渐进传输使得用户不需要像以前那样等图像全部下载后才决定是否需要,有助于快速地浏览和选择大量图片,从而有效的解决了网络传输的瓶颈问题。�
4.4 感兴趣区域压缩�
JPEG2000一个极其重要的优点就是ROI(Region of Interest,感兴趣区域)。用户可以任意指定图片上感兴趣的区域,然后在压缩时对这些区域指定压缩质量,或在恢复时指定某些区域的解压缩要求。这是因为子波在空间和频率域上具有局域性,要完全恢复图像中的某个局部,并不需要所有编码都被精确保留,只要对应他的一部分编码没有误差就可以了。在实际应用中,我们就可以对一幅图像中感兴趣的部分采用低压缩比以获取较好的图像效果,而对其他部分采用高压缩比以节省存储空间。这样就能在保证不丢失重要信息的同时又有效地压缩了数据量,实现了真正的"交互式"压缩。�
5 JPEG2000标准的应用�
随着科技的发展,网络已经渗透到每个人的生活之中。然而,受到网络带宽的限制,高质量的图像由于数据量很大,在网络上的传输延迟很大。因此,对于使用PC机、笔记本、掌上电脑或PDA,通过Modem接入因特网访问图像数据的用户来说,允许根据需要选择恰当的图像分辨率进行浏览和传输是非常必要的。�
在军事侦察和气象预报中,由卫星遥感得到的图像必须通过远距离无线信道传输,传输误码的出现不可避免。JPEG2000编码器特有的码流组织形式是输出码流具有有效抑制误码的能力。这样,码流通过无线卫星通讯信道发还给地面接收站后,地面接收站在解码过程中可以利用JPEG2000内部的码流组织形式来避免由于传输误码而造成的错误解码。�
此外,在安全确认、身份认证及医学领域,JPEG2000都有着其广泛的应用。可以预测,在不久的将来,JPEG2000将在以下领域得到广泛的应用:因特网、移动和便携设备、印刷、扫描(出版物预览)、数码相机、遥感、传真(包括彩色传真和因特网传真)、医学应用、数字图书馆和电子商务等。
6 结论�
JPEG2000旨在创建一个新的图像编码系统,该压缩编码系统的率失真和主观图像质量优于现有的JPEG标准,能够提供对图像的低码率的压缩,并且对压缩码流可进行灵活的处理,如随机获取部分压缩码流、图像的渐进传输、感兴趣区域的实现以及压缩码流较强的容错性能等,该标准将与现行JPEG标准兼容。JPEG2000图像压缩标准以其优秀的性能,必将在数码相机、遥感、传真、医疗以及电子商务等多个领域得到广泛的应用,成为21世纪的主流静态图像压缩标准。
参考文献
〔1〕JPEG 2000 Image Coding ystem.JPEG 2000 Final Committee Draft Version 1.0, 2000,16(3)�
〔2〕Taubman D. High Performance Scable Image Compression with EBCOT.IEEE Trans� Image Processing,1994,3(9):572~578�
〔3〕张晓娣,等.新一代的静止图像压缩标准 JPEG2000.电信科学,2001(5)�
〔4〕李冬梅.发展中的静止图像压缩标准JPEG2000.电视技术,2001(6)�
〔5〕王瑞轩.面向JPEG2000的二维DWT的VLSI设计与仿真,2002
wisher_lxy | 已被浏览119次 0 评论 | 引用(0) | 加入博采中心
最新发表
再别康桥
做人最重要的是积极!
无言
xml四种解析器及性能比较(转载)
JPEG2000综述 [转]
为什么人总是这么复杂?
从来不懂得放弃是种美丽!
我要一个人自由自在!
我要一个人自由自在!
生命如此之轻
最新回复
嘿嘿,复杂就复杂吧
Powered by BlogChina.com