JPEG标准

2024-08-06

JPEG标准(共8篇)

JPEG标准 篇1

0 引 言

为了有效地压缩图像信号, 必须着眼于信号的冗余度, 设法用某种方法将其变换为冗余度更小的信号。根据冗余度情况, 有许多不同的信号变换方法。其中, 离散余弦变换以其突出的相关性和成熟的快速算法而被广泛采用, 但是该算法将图像分成子块进行变换, 因此存在方块效应和蚊式噪声。虽然这种噪声可采用后滤波处理和自适应量化来减少, 但增加了计算的复杂性。

小波变换作为一种时频局部化分析方法, 用来对整个图像进行变换, 能有效地克服传统余弦变换编码的缺点, 容易实现多分辨率压缩。新的图像压缩标准JPEG2000的核心算法就建立在小波变换的基础上。JPEG2000作为一个新的标准正处于不断的发展中。它不仅能提供优于现行JPEG标准的失真率和图像压缩性能, 而且还可以提供一些JPEG标准不能有效实现甚至在很多情况下完全无法实现的功能和特性。过去人们使用的小波变换算法一般采用浮点运算, 由于浮点运算必须对数据进行舍取, 使得图像信息发生丢失, 所以它不能实现无损编码, 而且硬件实时实现的难度很大。本文介绍一种JPEG2000标准中适合硬件实现的基于整数小波提升算法的无损小波变换的实现方法。

1 JPEG2000小波提升算法

JPEG2000图像编码过程由小波变换、系数量化、系数位建模和算术编码等组成, 其中首要的步骤就是对原始图像做小波变换, 将图像信号由时间域 (空间域) 表示变换到小波域表示。利用小波变换的正交/双正交变换特性, 它能够解除图像像素间的相关性, 消除图像信号在空域的冗余, 并集中图像信号的能量, 为后面的系数量化、系数位建模、算术编码等提供前提, 为高效的图像编码奠定基础。在JPEG2000中, 小波变换具体是由小波提升算法来实现的。提升算法主要有3个步骤:分裂 (Split) 、预测 (Predict) 和更新 (Update) , 如图1所示。分裂是把输入序列S (n) 分为两个子序列, 即由其偶下标位置的元素组成的子序列S2i (n) , 和由其奇序号采样组成的子信号S2i+1 (n) 。预测是通过近似信号来计算细节信号。更新是通过细节信号来计算近似信号。其中, 预测和更新可以重复多次。最后还有可能再经过一个缩放步骤。这整个过程完成一次小波变换, 得到输入信号S (n) 的近似分量c (n) 和细节分量d (n) 。

(5, 3) 双正交小波在JPEG2000中用于无损压缩, 考虑到图像质量和数据的处理量, 作为用于无损压缩的整型小波变换, 分解端采用了由5抽头低通滤波器和3抽头高通滤波器组成的 (5, 3) 滤波器。下面介绍基于 (5, 3) 可逆滤波器的整型双正交小波变换。Daubechies (5, 3) 小波变换利用提升方式实现的具体算法描述如下:

对于正变换:

式中提升系数为:α=-0.5、β=0.25、K=1.149 6, S2i、S2i+1、Sundefined、dundefined、Sundefined、dundefined分别表示图像序列的偶数项、奇数项、偶数项、奇数项、一次小波提升 (变换) 后的偶项系数、一次小波提升 (变换) 后的奇项系数。为了便于硬件实现, 取K=1。利用提升算法, 不仅实现了从整数到整数的小波变换, 而且使小波变换进一步分解成几个1阶多项式的乘积, 使运算复杂度进一步减小, 因而使得目前的硬件有能力完成实时小波变换。

2 (5, 3) 小波变换算法

根据上述整型小波变换原理, 首先对偶地址的数据Sundefined进行滤波运算, 滤波后的数据加上奇地址的数据dundefined, 从而得到奇地址的高频子带数据dundefined, 然后对此奇地址的高频子带数据进行滤波运算, 滤波后的数据加上偶地址的数据Sundefined, 从而得到偶地址的低频子带数据Sundefined。

2维双正交小波变换可以分解为2个一维小波变换, 实现方法十分简单。如果将一行行顺序进行的一维小波变换称为“行变换”, 而一列列顺序进行的一维小波变换称为“列变换”。那么, 对于二维双正交小波正变换, 首先进行行变换, 然后进行列变换, 即可完成二维正变换。

一维小波行变换具体实现步骤如下:

a) 将信号按行信号进行一维小波变换。将总时钟CLK的上升沿作为奇数选项时钟CLKO, 下降沿 (反相) 作为偶数项时钟CLKE, 信号数据DATA[]在CLKO和CLKE作用下经2个D触发器分解为奇数 (d0, d1, d2, …, dk) 和偶数 (S0, S1, S2, …, Sk) 。

b) 在CLKO作用下, 每2个相邻偶数样本之和Sundefined+Sundefined (Sundefined要延时1个时钟周期再与Si+1求和) 用乘法器求α (Sundefined+Sundefined) (其中α=-0.5为滤波系数) , 再与中间的奇数样本dundefined相加 (要延时3个时钟周期才能对应) , 生成新的奇数样本dundefined。

c) 同样, 在CLKE作用下, 每2个新生成的奇数样本之和dundefined+dundefined乘小波变换参数β, 再与中间的偶数样本Sundefined相加, 生成新的偶数样本Sundefined。

一维小波列变换具体实现步骤如下:

a) 将信号按列信号进行一维小波变换, 分成偶数样本 (Sundefined, Sundefined, Sundefined, …, Sundefined) 和奇数样本 (dundefined, dundefined, dundefined, …, dundefined) 。

b) 每2个新生成的偶数样本之和Sundefined+Sundefined乘小波变换参数α, 再与中间的奇数样本dundefined相加, 生成新的奇数样本dundefined。

c) 每2个新生成的奇数样本之和dundefined+dundefined乘小波变换参数β, 再与中间的偶数样本Sundefined相加, 生成新的偶数样本Sundefined。

经过以上变换处理, 所得到的变换结果 (dundefined, Sundefined, dundefined, Sundefined, …, dundefined, Sundefined) 就是1层 (5, 3) 小波变换。多层小波变换是对前1层的变换结果继续进行同样的变换。

3 总体结构

设处理图像的大小为128×128。为算法提出的硬件结构如图2所示, 其中, “小波变换提升方法”为数据通道, 实现对一维信号 (图像的1行或1列数据) 的小波变换;“图像帧存储器”存储图像或图像的小波系数等数据;“SRAM”高速缓存1行或1列数据;“小波变换控制单元”控制协调其他单元的工作, 完成图像的二维小波变换。

4 边界问题

对信号边界问题的解决, 一般有以下4种方法: (1) 补零延拓; (2) 重复边界值; (3) 简单周期延拓; (4) 对称周期延拓 (包括偶对称和奇对称两种情况) 。在此我们采用对称周期延拓法, 它能保证信号的完全重构。因为我们使用的是 (5, 3) 小波滤波器, 滤波器长度是奇数, 所以需要采用奇对称的扩展方式。设计中把边界扩展交由存储器和控制单元实现。

5 设计的实现和验证

按上述方法进行的FPGA设计, 是针对 (5, 3) 小波进行变换的, 此方法已经设计完成, 并且在Quartus Ⅱ 5.1集成开发环境下用美国Altera公司的EPF10K200E集成电路进行了实验验证, 与软件实现的理论结果符合。部分仿真波形如图3所示。

6 结束语

本文讨论了 (5, 3) 小波提升的基本原理和基于该算法的硬件实现。该算法简单、计算量小、易于硬件实现。从实验结果看, 完全能够满足JPEG2000标准中无损压缩部分的要求。

参考文献

[1]兰旭光, 郑南宁, 吴勇, 等.JPEG2000二维离散小波变换高效并行VLSI结构设计[J].西安交通大学学报, 2004, 38 (2) :149-153.

[2]BOLIEK M, CHRISTOPOULOS C, MAJANI E.JPEG 2000, Part I:Final committee draft, Version 1.0[S].ISO/ETCJTC l/SC 29/WC l N1646.

[3]WEEKS M, BAYOUMI M.Discrete wavelet transform:archi-tectures, design and performance issues[J].Journal of VLSISignal Processing, 2003, 35 (2) :155-178.

[4]KENNETHR.CASTLEMAN.Digital image processing[M].Pearson Education, 2003.

[5]ISO/IEC FCD 15444-1 JPEG2000 image coding system[S].2000.

[6]SWELDENS W.The lifting scheme:A construction of secondgeneration wavelets[J].SIAM Journal on Mathematical Anal-ysis, 1997, 29 (2) :511-546.

JPEG标准 篇2

1.解析RAW格式与JPEG格式

数码相机,是一种能够进行拍摄,并通过CCD或者CMOS等感光半导体传感器把光学信号转换成数字信号,即把拍摄到的景物转换成以数字格式存放的图像的特殊照相机[1]。目前大多数的数码相机图片存储格式主要为RAW、JPEG两种格式,其中最常见的是JPEG格式,虽然是一种有损压缩格式,但由于有文件量较小、压缩质量优秀的特点而被广泛地应用;RAW格式虽然文件量比JPEG格式大,同时又具备无损存储和后期有极大可塑性的特点,所以现在中、高档数码相机中都具备这种储存格式。

1.1 RAW格式

RAW在英语中的解释是:“生的,未煮过的”按照字面意思讲。RAW格式是一个数据包,并不包含图像信息,其中储存了数码相机感光元件在工作过程中每个感光单元记录下来的原始数据[2]。RAW格式是CCD/CMOS在将光信号转换为电信号时的电平高低的原始记录,它是单纯地将数码相机内部没有进行任何处理的图像数据,即CCD/CMOS等摄影元件直接得到的电信号进行数字化处理而得到的[3]。

RAW格式的文件在拍摄的过程中保留了最为丰富的图像信息,为后期的制作提供了最大的余地。但由于不同的相机生产厂家CCD/CMOS的排列和转换方式不同,RAW的记录方式不尽相同,一般只有通过厂家提供的转换程序或者专业的编辑软件转换成通用的图像格式,才能为图像处理软件所接受,这也是RAW格式使用上的不便之处。但由于它较高的品质和原汁原味的特点自出现以来一直受到很多专业摄影师的欢迎。

1.2 JPEG格式

JPEG是一种比较成熟的图像有损压缩格式,文件的扩展名为.JPG。是最常用的图像文件格式,是一种有损压缩格式,能够将图像压缩在很小的储存空间,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,如果追求高品质图像,不宜采用高的压缩比例。但是,人眼是一般分辨不出来这种差别的。JPEG图像存储格式既满足了人眼对色彩和分辨率的要求,又适当的去除了图像中很难被人眼所分辨出的色彩,在图像的清晰与大小中JPEG找到了一个很好的平衡点[4]。换句话说,就是可以用最少的存储器空间得到相对较好的图像品质。

JPEG格式是目前最为普及的一种图像文件格式。

1.3 RAW格式与JPEG格式的区别

数码相机和胶片相机相比最大的区别在于感光材料的改变,CCD/CMOS代替了传统的胶片。CCD/CMOS上面覆盖着一层彩色滤色片,它们以一定的规律整齐地排列着。CCD/CMOS感应到光线后会形成强弱不一的电流信号,这些电流信号在经过数万倍的放大之后,进入AD模拟数字转换器被软换为数字信号,这个数字信号被封装之后就是RAW格式的数字文件。如果这个数字信号继续被传递到DSP数字处理芯片,则将按照数码相机厂商设定的规则和算法进行真实色彩的合成处理,而且还同步进行了降噪、白平衡、反差、锐度、饱和度、压缩等诸多处理后得到JPEG格式的数字文件。

假如我们用两款不同品牌的数码相机拍摄同一个东西,采用相同的曝光参数,在都采用JPEG的保持格式下,最终得到的照片,其色彩和明暗层次并不是完全相同的,原因是每个厂商会根据自己对摄影师的理解,去设定DSP的算法。RAW格式图像文件,是一个数字信号封装包,它需要经过电脑处理才能显示出来,摄影师电脑加上专门的RAW格式图像解析软件就相当于数码相机内部的DSP数字信号处理器。

从上面分析不难看出RAW格式与JPEG格式的主要区别在于:

首先, RAW格式是一种无损缩格式,RAW格式文件将存储相机感光元件捕捉到的所有原始数据,因此比JPEG格式文件大[5],所以拍摄需要足够的储存空间和配备高速的储存卡才能满足拍摄的需要;JPEG格式是有损压缩格式,体积较小对设备的要求比较低。

其次RAW格式更加的原汁原味,没有经过相机本身过多的处理,留给后期摄影师更大的发挥空间。而JPEG格式是经过相机内部的DSP数字信号处理器大量的处理后得到的图像。

2.RAW格式与JPEG格式的实际应用

只有了解了RAW格式与JPEG格式最本质的优缺点,摄影师在拍摄中才能做出正确的选择,从而提高工作效率。

2.1 RAW格式与JPEG格式的优缺点

RAW格式的优点在于:

第一、RAW格式文件是没有经过相机处理而直接得到的文件格式,是一种无损压缩格式。而JPEG格式经过了相机本身大量的主观处理,而这些处理在很多时候并非摄影师想要的结果。

第二、RAW格式文件支持16位图像,在进行后期色调校正时可以使用更多的数据。JPEG格式文件是8位图像,只有256级灰阶,可进行色彩调整的范围有限。

第三、RAW格式采用了ProPhoto的色彩空间,这远远比AdobeRGB和sRGB色彩空间所能还原的色彩种类丰富的多,可以轻易获得准确的色彩还原而且在后期调整色彩的过程中不会对照片的质量带来影响。

第四、在使用RAW格式进行拍摄时,一般不用考虑白平衡、锐度、色彩饱和度等相关的参数设置,只需用设置相机的ISO感光度和曝光补偿就可以进行拍摄了,因为在后期软件代替了数码相机内部的DSP数字信号处理器,为摄影师提供了更为自主的操作空间。

JPEG格式的优点在于:

第一、JPEG文件中的数码较少,文件尺寸也较小,这就意味着对设备的要求比较低。在这里以佳能的5DII和4G的SanDiskCF存储卡为例,拍摄最大格式的RAW格式只能拍摄143张,而拍摄最大格式JPEG格式可以拍摄达到609张;佳能的5DII的连拍速度为3.9张/s,最大格式的RAW文件为23.7MB,如果要充分发挥相机的连拍功能那么存储卡的存储速度最少要达到92MB/s,目前市场上的高速存储卡的速度也只有90MB/s而且价格十分昂贵,最大格式的JPEG文件为6MB,对于3.9张/s的连拍速度,只要储存速度达到24MB/s就可以实现相机的连拍功能。

第二、JPEG格式兼容性比较好,几乎所以的工作平台和软件都可以读取编辑。RAW格式不是一种通用格式,不同的相机制造商有着不同的研发标准,例如佳能命名为CR2、尼康命名为NEF、索尼命名为ARW、松下命名为RAW、适马命名为X3f等等,这些不同名称的RAW文件都要通过专业的软件才能进行编辑,相对于JPEG格式来讲兼容性差。

2.2 RAW格式与JPEG格式的选择问题

经过对这两种格式的优缺点进行分析,可以得出一个结论, RAW格式在图像品质方面相对于JPEG格式有很多突出的优点,但缺点也很明显,文件体积过大,对设备的要求较高。在后期还需要经过专门的浏览器和软件才能正常浏览和使用,这样一来就会影响到工作效率。所以对于职业的摄影师并不是每一次拍摄都会选用RAW格式,而是要根据拍摄题材而定。

一般选择的原则是,对后期图片质量要求不高,追求工作效率,建议使用JPEG格式来进行创作,例如新闻摄影、会议记录、生活留念照等。RAW格式则应更多的用于广告摄影和艺术摄影创作上。

结语

RAW格式和JPEG格式是目前在数码相机上应用最为广泛的两种文件格式,这两种格式从记录原理、图像品质、文件大小、后期制作上都存在着一定的差异,经过分析发现各有优缺点。RAW格式图像质量高、体积大,但对硬件软件的设备要求高;JPEG格式体积小,适用范围广,但难以满足高品质摄影的要求。只有了解了这些最本质的差异后,摄影师才能在创作过程中准确的选择,以便于影像的后期制作管理与应用。

[1]陆晓玲.数码摄影清晰度研究[J].长春:成功之路2007.21

[2]金振乾.余飞跃.RAW文件浅析[J].北京:中国科技信息2009.17

[3]王毅栋.数码照片的常用格式 [J].北京:科技情报开发与经济2007.5

[4]冯彦辉.基于JPEG图像文件格式的研究[J].太原:山西电子技术 2009.1

JPEG标准 篇3

随着互联网和多媒体技术的发展,人们对于远程监视的需求也日益增加(如:矿区,煤田,医院等)。而在这些地方,人们对数字图像在质量、大小和应用上提出了更高的要求,本文结合JPEG2000图像标准和TCP/IP协议来进行的远程监视。由于采用JPEG2000静止图像作为媒体流,从而避免了类似H.263等流媒体,在网络环境恶劣的情况下,出现帧同步丢失而造成用户端的解码失败,而使得用户端不能实时的观察到相应监视点的情况。并且由于JPEG2000标准中加入了感兴趣区域(Region of Interest)压缩和无损压缩特征,这对于监视系统来说是非常重要的优点。系统框架如右图:

从图1中可以看出客户和监视点是多对多的关系,使得系统可以灵活的适应更种场合。

2 JPEG2000的原理和特征

JPEG2000标准与JPEG相比提供了许多新的特征,这些特征在实际的应用中,有着更丰富的选择。它包含有四种模式(顺序模式,渐进模式,无损模式和分层模式)。在编码端以最大的压缩质量(包括无失真压缩)和最大的图像分辨率压缩图像,它的最主要的特征如下:

(1)高压缩率:由于在离散子波变换算法中,图像数据可以转换成一系列更加有效存储像素模块的“子波”。因而,JPEG2000格式的图片压缩率比JPEG图片基础上再提高10%~30%,而且压缩后的图像显得更加细腻平滑,这一特征在互联网和遥感等图像传输领域有着广泛的应用。

(2)无损压缩和有损压缩:JPEG2000提供无损和有损两种压缩方式,无损压缩在许多领域是必须的,例如监视系统中发现异常时,要求清晰的再现监视场景的情况。再如图像档案中为了保存重要的信息无损的图像质量是必须的。

(3)感兴趣区域压缩:可以指定图片上感兴趣区域(Region of Interest),然后在压缩时对这些区域指定压缩质量,或在恢复时指定某些区域的解压缩要求。这是因为子波在空间和频率域上具有局域性,要完全恢复图像中的某个局部,并不需要所有编码都被精确保留,只要对应它的一部分编码没有误差就可以了。

JPEG2000主要是规定了一系列对连续色调、二值、灰度或彩色数字静止图像的无失真或有失真编解码方法[1]。JPEG2000的基本系统结构框图[3]如图2所示。

可见,JPEG2000改变了JPEG标准以DCT变换为核心的变换方法,采用了具有能量特性更为集中的小波变换以及率失真优化截取的内嵌码块编码算法(EBCOT)。

3 系统原理分析

监视系统采用JPEG2000格式图像数据作为的数据流,而当中的JPEG2000压缩编码采用小波变换为基础,且在系统中采用了JPEG2000中的感兴趣区域(ROI:regions of interest)特征。下面描述小波变换和ROI的原理。

3.1 小波变换原理

3.1.1 小波与小波变换——定义1

定义1设L2(R)是一个可测的、平方可积的一维函数矢量空间,R为实数集。小波是由满足的函数ψ(x)通过平移和缩放而产生的一个函数族ψa,b(x):

ψa,b(x)称作分析小波(Analyzing Wavelet)或连续小波,当且仅当母小波函数ψ(x)的Fourier变换ψ(ω)满足以下可容性(admissibility)条件:

这里,a被称作伸缩因子,b为平移因子。

3.1.2 小波与小波变换——定义2

定义2在定义1的基础上,函数f(x)在L2(R)上的连续小波变换定义如下:

小波变换的实质在于将L2(R)空间中的任意函数f(x)表示成为在ψa,b(x)的不同伸缩和平移因子上的投影的叠加,与Fourier变换不同的是,小波变换将一维时域函数映射到二维“时间-尺度”域上,因此f(x)在小波基上的展开具有多分辨率的特性。通过调整伸缩因子a和平移因子b,可以得到具有不同时频宽度的小波以匹配原始信号的不同位置,达到对信号的局部化分析。

相对于传统的DCT块变换,小波变换具有以下优点:

1)小波变换具有熵保持特性,能够有效地改变图像的能量分布,同时不损伤原始图像所包含的信息;

2)小波分解后大部分能量集中在低频子图的少量系数上;而大量的高频子图系数值普遍较小,且存在明显的相关性,有利于获得较高的编码效益;

3)小波变换作用于图像的整体,既能去除图像的全局相关性,又可将量化误差分散到整个图像内,避免了方块效应的产生;

4)多级分解后形成的不同分辨率和频率特性的子带信号,便于在失真编码中综合考虑视觉特性,同时有利于图像的渐进传输。

3.2 图像感兴趣区编码

在甚低比特率进行图像压缩时,往往会丢失一些细节信息,而其中有些细节信息是人们感兴趣的。例如人物头肩图像的视觉敏感区域,航空图像中携带重要信息的小目标区域,医学图像中病灶区域等等,这些区域可以统称为感兴趣区域(ROI:regions of interest)。

3.2.1 ROI图像编码

ROI图像编码就是要提高ROI系数的的编码优先级别,使ROI系数能优先传输,从而获得优于背景区域的压缩性能。通常采用两种途径改变ROI系数的优先级别。由于内嵌比特平面编码首先传输的是幅值最大的量化系数的位信息,所以一种方法是对ROI系数的幅度值进行比特平面提升(需要进行移位运算),再进行常规的比特平面编码。另一种是首先进行通常的比特平面编码(ROI系数必须独立编码),最后在码流组织时,优先传输ROI系数的比特流并分配更多的码率。

JPEG2000标准中采用的比特平面提升方法是完全提升方法(Max Shift),如图3(b)所示。编码器扫描所有的量化系数,找到一个s,使提升后的ROI系数的最小值大于背景区域系数的最大值。s要传送给解码端,解码后的系数若大于2s,则进行比特平面降低,因此这种方法无需传送ROI的坐标信息,解码器也无需计算ROI模板。

3.2.2 实验结果与分析

下面以标准测试图像Lena(512×512×8比特)为例,给出了实验结果。在编码之前,图像经过5级(9,7)小波分解。

在表1中,我们给出压缩比为8倍时(1.0bpp)不同提升比特平面s所对应的峰值信噪比PSNR比较。其中当s=0时,表示无ROI编码。实验结果表明,对图像ROI区域进行优先编码后,恢复图像的ROI信噪比能大幅度提高,但这是以背景部分信噪比降低为代价的。ROI的信噪比随s增大而相应提高,背景区及整体图像的信噪比则随s增大而逐渐降低。加权信噪比则和主观视觉基本保持一致,当ROI的比特平面提升1位时,感兴趣区信噪比明显提高,而背景部分的恢复质量下降,但基本不影响视觉效果,所以加权信噪比也明显提高;当s继续增大时,背景的恢复质量下降了近3dB,严重影响了主观视觉效果,所以加权信噪比也随之降低。图4所示为在甚低比特率0.1bpp压缩时的恢复图像比较,可以看出无ROI编码时(s=0),ROI和背景部分都有着严重的视觉失真,而ROI系数经过提升后能够保持良好的视觉质量。

4 系统软件结构

由于JPEG2000格式图像比JPEG格式图像在压缩率上大约有30%的提高且可以进行ROI的选择和渐进显示。而相对比于流媒体H.263等,由于JPEG2000采用帧内编码,所以不存在帧间同步的问题,例如在无线网络中,客户端接收数据由于网络环境的变化而出现较长时间的延时,如果采用H.263等就可能由于帧间失去同步,而造成解码的困难。而利用JPEG2000图像,在保证数据量小的情况下,也可以保证客户可以看到监视点的情况,只是此时的图像数据显示的速率可能会慢一些,而不会出现由于网络环境恶劣的情况下,不能观察到相应的监视场景。所以系统中采用JPEG2000格式作为相应的传输数据流,而没有采用流媒体H.263等的原因。

软件部分采用模块化设计,并充分的利用多线程(Multi Thread)和Intel CPU P4中的SSE2指令,利用SSE2指令对其中的JPEG2000的解码程序进行了相应的优化,使得解码的速率比用C语言的解码速率提高了7倍,这样就使得网络速率成为了最终的瓶颈。

软件结构包含有客户端和服务端,分别都采用多线程来实时的响应事件的请求。每个客户可以同时进行16路的监视,而服务端在理论上可以同时为无数的客户端服务,可实际的系统资源有限,要根据实际的情况来处理。

服务端单元采用COM技术封装了双线程来实现一个客户端的连接,来进行后台相应的服务处理,当中有相应的编码,解释请求控制字和传输。客户端单元同样也采用了多线程进行相应的服务请求,在界面上进行人机交互的请求,而在后台利用工作线程进行相应的处理。

程序流程如下:

当客户有ROI需求时,发出带有坐标的控制字到服务端,由服务端进行相应的命令解释,对相应的坐标区域进行相应的无损压缩后传输,而对于客户不关心的区域可以不处理,这样进一步减小了相应的网络所需的带宽了,可以提高服务端的系统资源利用。

渐进需求时,当网络环境恶劣时,由于使用TCP/IP协议会出现丢包率增加,对于服务端来说会反复的重传数据,而导致的就是使得客户端不能即时的看到监视场景的情况,所以在出现网络环境恶劣情况下,结合采用JPEG2000当中的分辨率渐进方法来进行相应的传输,进一步减少传输所需要的数据量,而使得客户可以实时的观察到相应的监视场景。

5 测试结果

图像数据源采用24倍压缩后进行硬件编码。经过实际的Internet网络实验,每次数据都取2小时的平均值,这样减少由于网络环境的因素影响。可得实验数据测得如下:

在局域网的测试中,利用1点对4点进行监视时,在320*240彩色的分辨率的情况下,可达到23.572frame/s基于上达到了监视系统的要求,而在实际的网络中,由于网络问题,存在一定的延时,但图像质量和ROI请求都满足监视系统的要求。

6 结论

本文提出了基于JPEG2000格式的监视系统,并充分利用了JPEG2000中的ROI特点,从实验结果看,效果可以满足大多数监视应用要求。整个系统已经通过了实际网络测试,完全达到项目要求。

参考文献

[1]JPEG2000Part I Final Committee Draft Version1.0,ISO/IEC JTC1/SC29/WG1N1646R,March2000.

[2]D.Taubman,“High Performance Scalable Image Compression with EBCOT,”[J]IEEE Trans.Image Processing,vol.9,no.7,pp.1158-1170,July2000.

[3]C.Christopoulos,A.Skodras,and T.Ebrahimi,“The JPEG2000Still Image Coding System:An Overview,”[J]IEEE Trans.Consumer Electronics,vol.46,no.4,pp.1103-1127,Nov.2000.

[4]D.Taubman,E.Ordentkich,M.Weinberger,and G.Seroussi,“Embedded Block Coding in JPEG2000,”[J]HPL-2001-35,HP Labs,Palo Alto,Feb.2001.

[5]D.Taubman,E.Ordentlich,M.Weinberger,G.Seroussi,I.Ueno,and F.Ono,“Embedded Block Coding in JPEG2000,”[J]IEEE Int.Conf.Image Processing,vol.2,pp.33-36,Sep.2000.

[6]李云松,“实时军事图像编码研究”,西安电子科技大学博士论文,2002.

[7]陈军,“高效图像内嵌编码技术研究”,西安电子科技大学博士论文,2002.

JPEG标准 篇4

关键词:JPEG2000,医学图像压缩,潜入式块状编码

1 医学图像压缩的必要性

医学图像数据量极大,CT和MRI等成像技术一般是在512×512象素的分辨率,12位灰度级下对断层扫描图像信息进行数字化采集的。每次采集40或80帧层位片。每帧图像为512×512点,40帧总长约20M,80帧长40M。实际应用中,常将1024称为“1 k”;一帧2k×2k×12位的胸片(以2Byte字为单位存储)约需8M存储容量。各种医学图像容量如表1。

医学图像的容量很大而医院的带宽往往十分有限,造成传输速度很慢,有些医院已经建成了小型的PACS系统,但没有投入使用,究其原由就是太慢了,还不如过去拿片子。

怎么解决这些问题呢?我们设想将图像压缩技术引入临床,在不影响诊断的前提下对医学图像进行压缩和解压缩,试验证明这种办法能大大提高图像的传输效率,特别对窄带宽情况下的医学图像传输及远程医疗等都具有重要意义。

2 JPEG2000的特点

JPEG 2000 与传统 JPEG 最大的不同,在于它放弃了 JPEG 所采用的以离散余弦变换(Discrete Cosine Transform) 为主的区块编码方式,而采用以小波转换(Wavelet Transform) 为主的多解析编码方式。此外JPEG2000还将彩色静态画面采用的JPEG编码方式与2值图像采用的JBIG编码方式统一起来,成为对应各种图像的通用编码方式。简单原理图1所示。

JPEG2000标准有下面几大适合医学图像压缩的特征:

(1)高压缩率: JPEG2000格式的图片压缩比可在现在的JPEG基础上再提高10%~30%.

(2)无损压缩和有损压缩:JPEG2000提供无损和有损两种压缩方式。无损压缩在医学图像中是必须的。

(3)感兴趣区域压缩:可以指定图片上感兴趣区域(Region of Interest),然后在压缩时对这些区域指定压缩质量。

(4)容错性:在码流中提供容错性有时是必要的,例如在无线等传输误码很高的通信信道中传输图像时,没有容错性是让人不能接受的。

鉴于JPEG2000在编解码方面的优异表现,在2001年11月DICOM标准委员会发布了第61号补充规定,使JPEG2000成为医学图像传输的国际标准。

3 JPEG2000的基本框架和实现

JPEG2000编码器的结构框图如图2(a)所示,首先对源图像数据进行离散小波变换,然后对变换后的小波系数进行量化,接着对量化后的数据熵编码,最后形成输出码流。解码器是编码器的逆过程,如图2(b)所示,首先对码流进行熵解码,然后解量化和小波反变换,最后生成重建图像数据。

JPEG2000的处理对象不是整幅图像,而是把图像分成若干图像片(image tiles),对每一个图像片进行独立的编解码操作。在对每个图像片进行小波变换之前,通过减去一个相同的数量值对所有的图像片进行水平移位,在解码时应相应进行反“平移”。如图3所示。

编码器的最后使用了算术编码器,在JPEG2000中使用的是MQ编码器,MQ编码器在本质上与JPEG中的QM编码器很相似。

整个JPEG2000的编码过程可概括如下。

(1)把图像和它的各个成分分解成矩形图像片。图像片是原始图像和重建图像的基本处理单元。

(2)对每个图像片实施小波变换。

(3)对分解后的小波系数进行量化并组成矩形的编码块(code-block)。

(4)对在编码块中的系数“位平面”熵编码。

(5)为使码流具有容错性,在码流中添加相应的标识符(Maker)。

4 JPEG2000中的核心算法

JPEG2000标准的核心算法是EBCOT。EBCOT算法与早期的嵌入式图像压缩算法关系非常紧密,这些算法包括Shapiro的EZW(embedded zero-tree wavelet compression)算法、Said 和 Pearllman 的SPIHT(Set Partitioning in Hierarchical Trees)算法、Taubman 和 Zakhor的LZC(Layered Zero Coding)算法。与这些算法相似,EBCOT算法也是用小波变换进行子带采样,然后对小波系数进行量化和编码。与EZW和SPIHT算法不同的是,EBCOT算法并没有使用零树结构而是使用编码块(Code-Block)同时提出了一种称为“压缩后率失真优化”(Post-compression Rate-distortion Optimization,PCRD-opt)的算法,基于这种思想使产生的码流具有上面所提到的各种特性。

5 程序实现过程

5.1 程序的功能

实现基本的jpeg2000图像压缩和解压缩。

能够与其他格式的图像进行转换。

压缩比可调,以便根据实际情况选择压缩比。

软件支持的文件格式:bmp,jpg,jp2(JPEG2000压缩后的图像格式)。

程序的调试环境:vc6.0 win2000/xp。

5.2 软件编解码系统准备

我们认为JPEG2000编码中几个关键环节的编程思路依次为:基本图像处理类库;小波变换;量化。

(1)基本图像处理类库

由于vc并没有将常用的图像处理的API 函数进行封装,所以在程序中我建立了一个Cdib图像类库,对程序中经常要用到的图像存取函数进行了封装:

class CDib{

public:

CDib();

~CDib();

BOOL Load( const char * );//打开文件函数,对不同类型图像的打开在相应的类中,进行了函数重载

BOOL Save(const char * );//保存图像文件函数

BOOL Draw( CDC *,int nX = 0,int nY = 0,int nWidth = -1,int nHeight = -1 ); // 图像绘制函数,对读进来的图像进行屏幕显示

BOOL SetPalette( CDC * );设置图像调色板

// for other format images,such as jpg,jp2

BOOL LoadFrom( const char *pszFilename);

BOOL SaveAs( const char *pszFilename,int ratio );int SaveJppFile( const char* szFileName);

BOOL ReadJppFile( const char * szPathName );

/ /jpg load and save,using IJG code and JpegFile

void LoadJpg(CString fileName);

void SaveJpg(CString filename,BOOL color,int quality);

void SaveJpgWithTonyLib(CString filename,BOOL color,int quality);

void SaveJpgWithIJGLib(CString filename,BOOL color,int quality);

void LoadJpgWithTonyLib(CString fileName);

void LoadJpgWithIJGLib(CString fileName);

UINT mwidth,mheight,mrowbytes;

private:

DWORD mdwDibSize;//not include file header

unsigned char *mpDib,*mpDibBits;

BITMAPINFOHEADER *mpBIH;//以下为bmp文件格式的数据;

CPalette mPalette;

RGBQUAD *mpPalette;

int mnPaletteEntries;

CString mtmpFile;

};

该类库实现了基本的图像文件的输入、输出、存储、显示。

反向变换:

(2)小波变换

前向变换:

在该环节我们将图像分成64×64的图像数据块,而后对数据块进行小波变换,将图像从空域转换到频域,小波变换大大减小了空域中像素间的相关性,而且变换后的小波系数都比较小,有利于后续步骤的量化和编码。本程序中进行小波变换所使用的小波是(5,3)小波,其正相变换流程为。

本程序中反向小波变换的流程图与正向变换的相反,只需将输入输出颠倒,将箭头翻转即可。

(3)系数量化

系数量化的主要任务是对小波变换后的系数进行量化,量化公式为:

undefined,

其中Sm,n 表示小波变换后的系数;Wm,n表示量化后的结果。Sign(x)的返回结果为x的绝对值;[x]运算符表示对x取小于或等于x的最大整数。该量化步骤将小波变换后的浮点小数量化为整数。量化结果图5所示。

在图5中我们用黑线表示区域分割线。我们对第一级小波变换后的区域进行了量化,并对量化后的结果进一步分割为12个小区,如图中所标示。在本程序中,我们没有将量化单独进行,而是将量化和熵编码合为一体,用一个函数实现两者的功能。

这样我们就完成了JPEG2000的编码的大致流程,本程序对JPEG2000的编解码程序进行了DLL封装,提高了程序效率,减小了程序体积。同时为了有个对比,本程序也引入了网右Tony lin的jpeg类库,使得本程序还可以实现jpeg的便解码。另本程序压缩比可调,对jpeg格式的压缩可以实现1-100倍的压缩比;对jpeg2000格式的压缩可以实现[1,2,3,4]倍可调。

6 试验结果

通过利用自己编写的JPEG2000编解码程序进行了试验,并与JPEG标准进行了比较。实验所用图像包括10幅腹腔CT、10幅头颅CT、X线片、MRI,另外为了检验方案对图像的适应性并与其他方法比较,也使用了LENA图像。试验结果表明,JPEG2000比JPEG在压缩比、PSNR、主观图像质量等很多方面都优于JPEG.以X线片为甚,这主要是因为X线片的区域分割最明显。对CT图像,压缩比在20时,X线片压缩比在60倍时,解码恢复图像灰度层次清晰,基本没有人眼可以觉察得失真。由于对同类的CT图像压缩效果相近,我们给出了其中一幅腹腔CT、头颅CT图像以及X线片、MRI和LENA的解码恢复图像(如下图6)和客观指标的比较(表2)。

从上面的试验结果我们可以看出,在相同压缩比的情况下,使用JPEG2000进行压缩的图片无论是PSNR还是图像的主观质量均优于JPEG。在参考文献中作者指出,对CT、MRI、超声图片在压缩比为20∶1~30∶1的情况下不会影响临床医生的诊断,同时使用JPEG2000压缩后的图片直方图都得到了平滑。

参考文献

[1]G.K.Wallace,“The JPEG Still Picture Compression Stan-dard”,IEEE Trans.Consumer Electronics,Vol.38,No 1,1992.

[2]Proposal of the Arithmetic Coder for JPEG2000,ISO/IECJTC1/SC29/WG1 N762,Mar,Oct,1998.

[3]何斌.Visual C++数字图像处理[M].北京:邮电出版社,15-40.

JPEG码流快速解析与研究 篇5

JPEG文件格式,即JFIF,允许对图片的压缩质量与文件压缩大小进行折中,这样便能够产生高压缩比同时也不至损失过多信息。然而当很多绘图,图像处理软件处理JPEG图片时,已经属于二次压缩文件,通常会使图片质量大幅度减弱,同时这样二次压缩也会造成色彩失真。因此对JPEG文件进行初始化获取量化信息,重要文件参数对图片优化是十分必要的。

2 JPEG码流快速解析

主要对基于优化后的量化表、哈夫曼表编码JPEG文件格式进行了深入解析研究,实验研究表明优化过的码流比原始码流要节省2.4%-27.8%的文件长度。同时,提出的快速定位方法就是根据JPEG快速解码算法中获取的抽样系数参数以及图片相关系数计算产生的。通过图片显示、网格功能、输入MCU块号等这些途径,更加清晰地显示出了每一块MCU的系数情况以及具体解码流程详解过程。

基于优化后的量化表,哈夫曼表编码JPEG码流解析是在基于优化码流的基础上产生的。其优化码流解析以blue_01.jpg图像为例,如图1所示,其尺寸为130×100,可以分割成221个8×8的压缩子块。

图1(a)是没有优化前的JPEG图片影像,图1(b)是优化后的JPEG图片影像,经过本文快速码流解析研究,图1(b)图像的哈夫曼表结构如下。

(1)图1(b)文件中的亮度DC表(如表1所示)。

该表的编码字节总数为8。相对于标准亮度DC表12字节而言节省4字节。

(2)图1(b)文件中的色度DC表(如表2所示)。

该表的编码字节总数为7。相对于标准色度DC表12字节而言节省5字节。

(3)图1(b)文件中的亮度AC表(如表3所示)。

该表的编码字节总数为39。相对于标准亮度AC表162字节而言节省123字节。

(4)图1(b)文件中的色度AC表(如表4所示)。

该表的编码字节总数为24。相对于标准亮度DC表162字节而言节省138字节。实验表明:图1(b)图像比图1(a)的标准哈夫曼表结构总共节省270个字节,其优化过的码流比原始码流要节省17.8%。

3 基于MCU块解析的快速定位

JPEG是一个典型的对静态图片进行8x8块分割,对每一个8*8块分别进行变换编码和熵编码,从而实现图像压缩。解码程序先从JPEG文件中读出采样系数,得出MCU大小,算出整个图像的MCU个数。解码程序再循环逐个对MCU解码,一直到检查到EOI标记。通过解码过程中对MCU块信息进行获取解码,并且将每个MCU中的亮度色度信息分别获得呈现,方便对解码系统流程的统一认知,并为之后的优化、恢复等过程研究提供了有利的信息和帮助。通过图片显示、网格功能、输入MCU块号这些途径,图文并茂更加透彻清晰的显示出了每一块MCU的系数情况以及具体解码流程详解过程。

提出的快速定位方法是根据JPEG快速解码算法中获取的抽样系数参数以及图片相关系数计算产生的。其算法主要分为两步:

步骤1:计算MCU的物理相对位移,即MCU[Mcu_x,Mcu_y],以及根据抽样系数算出MCU块长度。首先,从码流中获取的抽样系数,求出MCU块宽度。令水平抽样因子为hfactor,垂直抽样因子为vfactor,则MCU块长度为mcuHeight=8×hfactor,MCU块宽度为mcuWidth=8×vfactor。

图片MCU块的总数数量mcuNum则是根据最小8x8为单位来划分的,如果图片长度与宽度不能被8整除,则解码时,算法会自动补充长度与宽度,使其能够调整到8的倍数。所以,求mcuNum之前要先求得长度方向和宽度方向MCU块个数做一个长宽度调整判断,若是不能够被8整除,即图片长宽将会自动扩增至8的倍数,调整之后的长度方向/x方向的MCU块个数num_x_line,宽度方向/y方向的MCU块个数num_y_line即为所求。

计算的MCU块总数mcuNum=num_x_line×num_y_line。

根据所需要查询的MCU块来计算MCU块的物理相对位移。令需要查询的块号为findMcuBlockNum,MCU块的X方向物理位移为Mcu_x,Y方向物理位移为Mcu_y。

则:Mcu_x=findMcuBlockNum/num_x_line;

Mcu_y=findMcuBlockNum%num_y_line。

步骤2:计算MCU快坐标。具体的MCU快坐标计算如下图2所示。

4 结语

解析JPEG码流算法对JPEG图片进行优化分析具有十分重要的意义,通过将实验不同码流格式的JPEG图片,选取优化格式图片码流进行分析,并且对JPEG图片进行进一步的优化研究,实验证明,优化码流后的图片要节省2.4%-6.8%的文件长度,有效地提高了压缩比。

参考文献

[1]G.K.Wallace.The JPEG Still Picture Compression Standard[M].Commun.ACM,1991,34(4):30-44.

[2]JPEG.JPEG2000 requirements and profiles versiov6.3[M].ISO/IECJTC1/SC29WGN 1803,2000,7.

[3]刘玮,王红星.图像的无损压缩编码方法及JPEG标准模式[J].现代电子技术,2002,5:7-10.

[4]严剑.Huffman算法及其在数据压缩中的应用[J].计算机与现代化,1996,48:15-20.

[5]S.W.Golomb.Run-length encoding[J].IEEE Trans.on Infor-mation Theory,1966,12:399-401.

JPEG标准 篇6

关键词:JPEG,离散余弦变换,FPGA

1 概述

由于FPGA高可靠性、开发周期短、高速、具有在线可重构性等优点, 使得其在数字信号领域得到广泛应用。数字图像含有大量数据, 利用FPGA进行数字图像处理与传统的DSP芯片相比, 能够提高数量级的速度, 且具有更高的可靠性, 本文探讨基于FPGA的静态图像压缩标准的JPEG的实现技术。

JPEG是广泛应用的静态图像压缩标准, JPEG的实现过程为:首先对图像进行离散预先变换, 将图像的空间域表达转换为频率域的表达;其次, 选择合适的加权函数对DCT系数进行量化, 得到含有大量0变换系数, 实现压缩;最后, 对量化的系数进行编码, 利用系数之间的相关性, 进一步降低数据量, 如图1所示。JPEG的解压缩过程与压缩过程的逆过程, 如图2所示。

2 离散余弦变换 (DCT) 的实现

离散余弦变换首先将灰度图像或彩色图像分为8×8的图像块, 通过二维DCT变换, 将图像中的低频分量集中在左上角, 忽略高频分量, 达到压缩的目的。DCT变换的公式为:

undefined

其中, 当u, v=0时, undefined;当u, v≠0时, C (u) , C (v) =1;

f (i, j) 为数据图像矩阵内 (i, j) 位置上的像素值, 利用Matlab软件提取图像的像素值, F (u, v) 为变换系数。为了减少工作量, 将二维的DCT转换为一维的DCT变换, 首先对8×8的图像块进行8×1的行变换, 再对其进行1×8的列变换, 得到二维的DCT系数, 如图3所示。

利用硬件实现DCT算法时, 通常采用定点数的运算方式, 由于公式 (1) 可以写成矩阵形式Y=CXCT, 为了提高JPEG压缩的速率, 在一维DCT的变换中采用分布式算法, 其原理如图4所示。输入数据利用查找表得到的值, 然后进行移位, 再将B次查表的结果进行累加, 最后得到输出Y, 减少乘法器与加法器的个数, 优化资源, 然后通过乒乓存储技术实现DCT1D与DCT2D之间的数据传递, DCT2D仍利用分布式计算输出最后的二维变换的结果, 将能量集中在图像的左上角。

3 量化

实际上, DCT变换本身并不能实现码率的压缩, 8×8的图像块经过变换后仍得到64个系数。量化是通过对变换后的系数按比例缩小, 并取其最接近的整数值, 同时, 在保证图像质量的前提下, 丢弃不重要的信息, 达到压缩的目的。量化也是影响图像质量的主要因素。

JPEG采用线性均匀量化器, 量化步长由量化表决定。量化表为8×8矩阵, 与DCT变换系数一一对应。量化公式如式 (3) 所示。

undefined

其中, Fuv, Fquv分别为量化前与量化后的DCT系数;Quv为量化步长;

由于人眼对亮度信号和色差信号敏感度不同, JPEG推荐了两种量化表。因为人眼对低频分量图像比对高频分量图像更为敏感, 因此表中左上角的量化步长比右下角的量化步长小。

量化的硬件实现过程如图5所示:将64DCT系数除以量化步长, 并四舍五入取整。

(1) 将亮度或色度表的值设为Quv, DCT系数值为Fuv。

若0.5 Quv

(2) 不符合以上条件的, 采用累加和移位相结合的方法进行除法计算。

首先对除数进行循环移位, 使其最高位移到第一个1, 将此位记为Qs, 并记录移位的次数;扩展被除数至15个比特位, 其中最高位为借位标志位。然后开始计算此时最高位与原来除数最高位之间的差值, 若为1或0, 得到量化输出结果的最高位1, 并将相减的结果存入标志位寄存器, 反之, 量化输出结果的最高位为0, 并将被除数向左移一位, 最高位移位至借位标志位, 并对本次计算计数, 然后进行下一次的计算, 直到计算到计数次数大于移位次数加上3时, 设此时余数为Rn, 如果0.5Qs

4 Z字型扫描

从DCT的输出可以看出, 随着水平方向与垂直方向频率值的增加, 量化系数为零的机会越来越大。为了增加连续零的个数, 及零的游程长度, JPEG采用“Z”字型扫描, 如图5所示。其中1处的系数代表DC系数, 其余的为AC系数, 对DC系数组和AC系数组分别采用不同的编码方法以获取最佳的压缩效率。由于DCT变换后的DC系数比较大, 且相邻的8×8图像块的DC系数变化不大, JPEG采用差分脉冲编码调制 (DPCM) 技术。而AC系数中含有大量的“0”系数, JPEG对其采用游程长度编码 (RLE) 。Z字型扫描的实现流程如图6所示。

5熵编码

为了对扫描后的数据进行进一步的压缩, JPEG采用Huffman编码, 具体的实现分为两步:首先对于AC系数, 用两个符号表示, 符号1为行程和尺寸, 符号2为非零AC系数的幅值;其次, 对符号1和符号2分别进行编码, 符号1采用给定的哈夫曼表编码, 符号2进行变长整数编码。对于DC系数也有两个符号表示, 符号1为DC系数的尺寸, 符号2为其幅度值。编码的实现与AC类似。

6综合设计

根据以上的设计, 我们将JPEG的设计分为以下几个模块:DCT模块、量化模块、Z扫描模块和时钟控制模块, 硬件采用cyclone II系列中的EP2C8Q208C8芯片, 对设计结果使用一幅256×256的灰度图像进行检测, 压缩比与其它一般的JPEG编码系统没有很大区别, 压缩效果较好。

参考文献

[1]薛以辉.基于FPGA的嵌入式系统的设计与实现[D].长沙:国防科学技术大学, 2003.

[2]穆荣, 焦继业.基于JPEG图像解码的高速Huffman解码电路[J].现代电子技术, 2007 (20) .

[3]洪志良.JPEG静止图像压缩解压缩标准的硬件实现及其改进算法的研究[D].上海:复旦大学, 2002.

[4]求是科技.CPLD/FPGA应用开发技术与工程实践[M].北京:人民邮电出版社, 2005.

[5]张太怡.基于JPEG国际标准的图像压缩方法的研究[J].重庆大学学报, 1994 (9) .

JPEG标准 篇7

1 遥感图像的特点

遥感图像分辨率较高,目标物体所占的像素较少,图像中所含的高频信息和纹理信息较多,空间频率的局部变化较快,图像的不连续性较强。

为了从空间相关性来分析遥感图像数据之间的特征,文中采用图像的自相关函数r(l,k)来衡量

r(l,k)=∫∫f(x,y)f(x+l,x+k)dxdy (1)

其中,f(x,y)为图像的灰度函数。对上式进行归一化和离散化处理,有

R(l,k)=x=1Μy=1Ν[f(x,y)-uf]×[f(x+l,y+k)-uf]x=1Μy=1Ν[f(x,y)-uf]2(2)

其中,图像的大小为M×N,uf为图像亮度的平均值。即

uf=1Μ×Νx=1Μy=1Νf(x,y)(3)

当l=k=1时,即表示相邻两个像素之间的自相关函数值R(1,1),称为自相关系数。

在对遥感图像进行3层小波分解后,除LL子带集中了主要的低频信息,其它所有高频子带近似遵循零均值Gamma 分布。分析表明,除极少数纹理较强的局部区域之外,绝大多数纹理不太强的区域近似服从广义Gaussian 分布,特别是平坦区域,均值大多约为0。遥感图像的这些特性为采用JPEG2000中的算法提高图像压缩效率提供了理论依据。

2 遥感图像高频子带分级量化方案

遥感图像进行JPEG2000整数小波变换后,编码系统需要对分量中的每个拼接块(Tile-component)中的系数进行量化。量化的关键是根据变换后图像的系数特征、重构图像质量要求等因素设计合理的量化步长。其中高频子带影响较小,只作粗量化编码;低频子带对重建过程影响较大,可进行精细量化编码。

2.1 基于纹理特征的高频子带分级量化方案设计

本方案的具体步骤如下[1,2]:

(1) 对图像进行n层小波分解,将遥感图像分解成3n+1个子带,将子带进行层次划分,依次分成LLn,LHn-HLn,HHn-LHn-1,…,HH2-LH1-HL1和HH1,如图1所示;

(2) 将LLn子带直接送入编码器进行EBCOT 编码和算术编码;

(3) 依次将除LLn子带之外的高频子带小波系数划分为4×4的块,设定阈值T1>T0>0。将方差<T0的子块划分为平坦区,方差>T0且<T1的子块划分为次纹理区,方差>T1的子块划分为纹理区;

(4) 将LHn-HLn层中的小波系数分别进行分级量化。取量化步长1≤Δ1(n)2(n)Δ3(n)分别对子带中各区域进行量化。对块内方差<T0(n)的平坦区,采用量化步长Δ3(n)对小波系数进行粗量化;对块内方差>T1(n)且<T1(n)的次纹理区域,采用量化步长Δ2(n)对小波系数进行量化。对块内方差>T1(n)的纹理区域,采用量化步长Δ1(n)对块内小波系数进行精细量化;

(5) 将HHn-LHn-1-HLn-1层中的小波系数进行分级量化。依次对HHn,LHn-1,HLn-1进行区域量化处理,其量化步长分别为Δ1(n-1)<Δ2(n-1)<Δ3(n-1)Δ1(n)Δ1(n-1)。设定其阈值为T1(n-1)>T0(n-1)>0,具体的处理过程与步骤(3)相同;

(6) 将HH1子带中的小波系数进行量化。由于HH1子带所含的能量极少,可以直接取量化步长Δ(0)(Δ1(1)Δ(0))对其小波系数进行量化处理,或对该子带做清零处理;

(7) 在完成上述步骤后,将获得的系数进行舍入处理整数化,获得新的小波系数。再将其划分为编码块(Code-block)送入Ebcot和算术编码器中进行编码;

(8) 将各高频子带对应的量化步长依次写入相应的拼接块(tile)标头的QCDQCC字段中,各子带的阈值T0和T1也依次写入相应拼接块的标头com字段中,最终形成JPEG2000码流格式。

在解码器端,由于采用本方法压缩后,码流组织为JPEG2000码流结构,可以将其直接进行JPEG2000解码,获取恢复图像[3]。

2.2 关于阈值和量化步长的选取

(1) 阈值T0,T1的选取。

阈值的选取可以有两条途径:一是通过对遥感图像进行实验可以获得各个阈值与压缩系统性能指标峰值信噪比和压缩比的关系,由用户根据需要交互地给出,或由系统给出一个较优的缺省值;另一种方法是通过对小波分解子图进行统计分析后自适应获得[2,4]。

(2) 量化步长的选取。

量化步长的选取可以根据子带的统计特性和最小失真,计算出量化步长的最优值;实际应用中可先选取初始量化器,根据实际图像压缩过程,验证各量化步长与压缩性能指标PSNR和CR(峰值信噪比和压缩比)的关系,经过多次调整量化步长最终确定较优值。

3 仿真结果及分析

选取卫星遥感图像中截取的512×512,8 bit灰度图像作为测试图像。其中图2(a)为航拍遥感图像,图2(b)为卫星遥感图像,如图2所示。

小波变换滤波器为Daubechies(5/3)滤波器组,进行3级离散小波变换。在分级量化方法中还附加条件如下

T1=2×T0 (4)

{Δ1(3)=1Δ2(i+1)=Δ(i)Δj+1(i)=Δj(i)×2

其中,i∈{0,1,…,3},j∈{1,2,3} (5)

表1给出了上述两幅遥感图像采用JPEG2000无损压缩后的测试数据。由于无损压缩,图像可以完全重构,PSNR趋近于无穷大。所以采用压缩重构时间、压缩比为图像压缩的评价标准,具体数据,如表1所示。

表2给出了以上两幅遥感图像采用高频子带分级量化后的测试数据。采用分级量化方案对遥感图像进行压缩,由于高频子带采用>1的量化步长,势必产生一定的失真;另外,分级量化后的参数整数化处理也引入了部分失真。因此,在评价此方案的压缩性能时采用压缩和重构时间、峰值信噪比和压缩比为评价标准。

由表1和表2可知,与JPEG2000无损压缩方法相比,分级量化方法在图像压缩性能上有了明显提高,不同图像压缩比提高了20%左右;尽管引入了部分高频子带系数的失真,峰值信噪比有所下降,但是采用文中方案重建的图像质量均可达到40 dB,人眼很难分辨出图像的失真。因此,本方案能满足遥感图像压缩的要求。

采用分级量化方法对遥感图像进行高保真压缩和重构,运算时间均有所增加。由于在编码过程中,将高频子带分块,计算每个子块的方差并对其进行量化;解码过程中,需要判断高频子带子块的纹理属性,也通过计算方差并与阈值进行比较。因此,此方法在一定程度上增加了算法的复杂度。

4 结束语

文中在JPEG2000无损压缩的框架上,增加了一种遥感图像高频子带分级量化方案,实验表明其实现简单,压缩效果良好。可见,该方法在遥感图像高保真压缩方面具有良好的效果。

摘要:介绍了JPEG2000静态图像压缩标准的基本情况;对遥感图像的相关性以及小波变换域统计特性进行了分析,得出遥感图像的特点。针对其特点,设计了基于JPEG2000无损压缩的高频子带分级量化高保真压缩方案。实验结果表明,此方案在对遥感图像进行压缩时取得了较好的效果。

关键词:遥感图像,图像压缩,小波变换

参考文献

[1]Chao H,Fisher P.An Approach of Integer Reversible Wave-let Transform for Image Compression[J].The Wavelet Di-gest,1996,5(8):19-38.

[2]万登峰.基于JPEG2000遥感图像压缩的应用研究[D].上海:上海交通大学,2006.

[3]王达生.ISO/IEC/JTC1/SC29/WG11第53次会议将召开[J].计算机辅助设计与图形学学报,2000,12(5):374-380.

JPEG标准 篇8

JPEG(Joint Photographic Experts Group)是为连续色调、多级灰度或彩色、静止图像的数字图像压缩编码而制定的标准, 它具有压缩比例高、失真小的特点,应用非常广泛。近年来随着数码相机、手机、MPM(Portable Media Player)等多媒体消费电子产品的普及,高速高效低成本JPEG解码器的设计已经成为电子科学领域的研究热点之一。ZEVIO 1030处理器是LSI逻辑推出的一款基于ZEVIO架构的双核芯片,包含ARM926EJ-S通用处理内核和ZSP400多媒体处理内核,具备低功耗、更高级图像和数字音/视频处理功能。本文主要讨论了基于双核嵌入式处理器ZEVIO 1030的JPEG解码系统的设计与实现。

1 JPEG解码算法简介

JPEG算法包括基于DPCM(差分脉冲编码调制)、DCT(离散余弦变换)和Huffman编码的有损压缩算法两个部分。前者不会产生失真,但压缩比小;后者利用人类视觉对图像中的某些频率成分不敏感的特性进行压缩使信息在有一定损失的情况下换取较大的压缩比[1]。

JPEG解码算法解码过程主要包括Huffman 解码、反量化、反离散余弦(IDCT)变换[2]。

1.1 JPEG图像解码算法的实现

JPEG图像解码需要从JPEG图像文件中提取解码需要的各种信息和压缩数据。JPEG图像文件大体上可分为两个部分:压缩数据和标记码。压缩数据是以MCU(最小编码单元)形式存储的经过压缩编码后的数据。标记码给出了图像长度、宽度、量化表、Huffman 表等重要信息, 而这些信息都包含在不同类型的标记码中。预处理算法识别不同的标记码,并提取标记码中的有用信息。当进入SOS标记码并开始读取压缩数据时, 预处理任务结束,开始进入解码阶段[3]。

JPEG文件中的压缩数据是以最小编码单元形式存储的,因此,解码过程必须以MCU为单元来实现,即不断对MCU单元进行循环解码,直到取完所有压缩数据为止。

1.1.1 Huffman解码

利用MCU进行Huffman解码,需分别进行亮度分量和色度分量解码。对一个8×8数组来说,Huffman解码包括直流解码和交流解码。对数组第一个元素的解码称为直流解码,对剩下的63个元素的解码称为交流解码。JPEG文件中一般包含4个Huffman表,即亮度DC表、AC表,色度DC表、AC表。对不同的数据进行解码需要调用不同的Huffman表。DC解码出的数据称为DC值,但最终的DC值是直接解码出的DC值与该数组紧跟的前面一个数组的DC值之和。AC解码一般会得到多个数据,包括一些连续0数据和一个非0数据。

1.1.2 反量化

JPEG文件里包含1个亮度分量量化表和1个色度分量量化表。反量化是对Huffman解码所得的系数矩阵与相应量化矩阵相乘。反量化公式如下:

F(u,v)=C(u,v)×Q(u,v)

式中:C(u,v)为Huffman解码输出,Q(u,v)为相应的量化矩阵。

为进行IDCT变换,需要将完成反量化后的数组进行Z字型变换,将1维数组转换成2维数组。

1.1.3 IDCT变换

JPEG解码实时性的关键在于IDCT的计算速度。IDCT是将数据从频率域变换为空间域,若用2维IDCT公式,计算量很大,影响JPEG解码速度,可将其转换为两个1维IDCT:

undefined

这样对8×8的二维数组进行IDCT的计算就转化为先对该数组的行分别进行8次一维IDCT,再对列分别进行8次一维IDCT,简化了计算复杂度,提高了计算速度[4]。以8×8的数据块为例,块中的每个像素有64次乘法和63次加法,对整个块中的64个像素值共有4096次乘法和4032次加法。转化为两个1维IDCT后,计算64个像素值只需1024次乘法和896次加法,平均每个像素需要16次乘法和14次加法,大大提高了运算速度。

1.1.4 颜色空间变换

输出位图数据一般要求RGB表示,因此须进行颜色空间变换,变换公式为:

每个像素由YCrCb分量变换为RGB分量的计算中,需要进行4次乘法和6次加法运算。对于整个图像来说,计算量较大。

2 JPEG解码算法实现

2.1 双核通信机制

ZEVIO 1030通过两种方式来支持内部双核间的通信。其一是通过双核共享邮箱寄存器来实现,双核间可以互相中断或轮询,并通过Mailbox来传递少量的数据。其二是启用DMA来实现,即通过ARM对ZSP存储器管理单元的设置,将ZSP的外部存储空间映射到ZEVIO 1030系统存储资源中,由ZSP来完成双核间数据的搬移。

方式1传输数据量小,但传递信息可靠及时,适合在双核通讯中完成握手联络。方式2适合在双核之间传输大量数据。

2.2 ZEVIO 1030解码过程

2.2.1 ZEVIO 1030解码工作原理

JPEG图像数据存入SDRAM中,ARM进行头文件解码,得到图像长度、宽度、量化表、Huffman 表等重要信息;ARM将头文件信息传递到Buffer中,SDRAM中数据以MUC为单位,用DMA方式依次传递到 Buffer中,供DSP解码;DSP完成一个MCU解码之后,通过DMA方式将数据传递到显示Buffer中,供LCD显示所用[5]。

2.2.2 ZEVIO 1030解码流程

ZSP和ARM解码流程如图1、图2所示。

3 JPEG解码优化

3.1 解码过程优化

由于现行嵌入式系统内存较小,在解码高像素JPEG图片时,若全部解码完成再显示需要占用较大内存空间。可以采用部分解码的形式,即同时进行解码与显示。每次要解码MCU个数为图像横向MCU个数,可以减少解码需内存空间。

3.2 双核通信方式优化

ZEVIO 1030内部双核间的两种通信方式各有特点,在不同的数据传输中使用不同的通信方式可以提高解码效率。ARM解完JPEG头文件后,需将头文件信息传送给ZSP400,供ZSP400解码使用。数据传送是一次性的,采用Mailbox方式;在解码过程中ARM需要不断将解码数据传送给ZSP400,采用DMA方式。

3.3 颜色空间变换优化

YCbCr颜色分量转化成RGB颜色分量时,需要进行乘法运算,由于输入和输出都是0~255之间数值,所以可以先将0~255的输入对应的输出值计算出来,存在数组中。在颜色空间变换时只需要进行查表,不需要进行乘法运算。采用查表法每个像素由YCrCb分量变换为RGB分量的计算中,只需要进行4次加法运算,相比直接计算运算量减少,可以提高计算效率。

4 结束语

针对ZEVIO 1030双核处理器构架的特点,设计并在其上实现了JPEG图像解码,并对解码程序进行了优化。针对双核间不同数据传输采用不同的双核通信方式;比较耗时的2维IDCT变换过程先转换为1维IDCT变换,再采用AA&N算法;颜色空间变换过程采用查表法,高效的完成了高像素JPEG图像解码。本设计可以应用到数码相框、媒体播放器、电子玩具、导航系统嵌入式产品中。由于目前嵌入式处理器能力大幅上升, 今后JPEG,MPEG4,MP3等标准的实时编解码很可能需要由软件完成,对JPEG软件解码的研究有一定参考价值。

参考文献

[1]阴国富,李云飞.基于JPEG标准的静止图像压缩[J].科学技术与工程,2008,8(11):3001-3003.

[2]ISO 10918.JPEG Digital Compression and Coding of Continuous-tone Still Image Draft[S].

[3]吴嘉慧.JPEG图像解码方案[J].现代计算机:下半月版,2007(3):49-53.

[4]文涛,黄俊伟.用ARM926EJ-S处理器实现JPEG图像软件解码[J].电视技术,2008,32(7):31-33.

上一篇:安全阀结构调试要求下一篇:管理类课程教学模式