JPEG 2000
JPEG 2000是基于小波变换的图像压缩标准,由联合图像专家小组创建和维护。JPEG 2000曾获认为是未来取代JPEG(基于离散余弦变换)的下一代图像压缩标准。JPEG 2000文件的副档名通常为.jp2,MIME类型是image/jp2。
扩展名 | .jp2 , .j2k , .jpf , .jpm , .jpg2 , .j2c , .jpc , .jpx , .mj2 |
---|---|
互联网媒体类型 | image/jp2 , image/jpx , image/jpm , video/mj2 |
统一类型标识 | public.jpeg-2000 |
开发者 | 联合图像专家小组 |
格式类型 | 图形文件格式 |
扩展自 | JPEG |
标准 | ISO/IEC 15444 |
自由格式? | 是 |
免费格式? | 参见§ JPEG 2000版权专利问题 |
网站 | jpeg |
JPEG 2000的压缩比更高,而且不会产生原先的基于离散余弦变换的JPEG标准产生的块状模糊瑕疵。JPEG 2000同时支持有损数据压缩和无损数据压缩。另外,JPEG 2000也支持更复杂的渐进式显示和下载。
JPEG 2000是国际标准化组织(ISO)发布的标准,文档代码为ISO/IEC 15444-1:2000。虽然JPEG 2000在技术上有一定的优势,但是到目前为止(2006年),互联网上采用JPEG 2000技术制作的图像文件数量仍然很少,并且大多数的浏览器仍然不支持JPEG 2000图像文件的显示。但是,由于JPEG 2000在无损压缩下仍然能有比较好的压缩率,所以JPEG 2000在图像品质要求比较高的医学图像的分析和处理中已经有了一定程度的广泛应用。
技术目标
JPEG 2000的目标不仅仅是性能要超越JPEG,而且增加和增强了如可缩放性和可编辑性这样的特性。JPEG 2000最大的特色在于,与JPEG等技术在数据编码上采取了不一样的思维,同样的数据编码可以使用多种手段解码以应付不同需求。JPEG 2000的编码内容具有可缩放性(Scaling)。其编码内容可以在任意位置截断,从头至此的编码片段可受解码回一张较低分辨率的图片。编码片段越长,解码后的分辨率越高(或说放大到相同分辨率时,其峰值信噪比(PSNR)较佳)。这意味了当需要更高压缩率时,直接丢弃后方的编码数据即可达成;或者,可以视需求只解码头一部分而得到缩图。不过这样的特征也使得编码、解码单元必须更复杂。
相关标准
已经发布的JPEG 2000标准包括ISO/IEC 15444-1:2000。另外,和JPEG 2000相关的一些额外标准也正在制定和讨论中,比如JPEG 2000安全图像传输(JPSEC)以及基于连接的JPEG 2000图像浏览(JPIP)等。
在JPEG 2000标准的几个其他部分存在;他们当中有ISO / IEC 15444-2:2000,JPEG 2000的扩展定义.jpx文件格式,具有例如网格量化,扩展的文件格式和附加的色彩空间, ISO / IEC 15444-4:2000年,参考测试和ISO / IEC 15444-6:2000,化合物的图像文件格式(.jpm),使化合物文本/图像图形压缩扩展安全图像传输,JPSEC(ISO / IEC 15444-8),为无线应用增强的纠错机制,JPWL(ISO / IEC 15444-11)和扩展体积图像编码,JP3D(ISO / IEC 15444-10 )也已经可以从ISO。
流媒体JPEG 2000图像JPIP协议
在2005年,一个JPEG 2000基于图像浏览协议,称为JPIP已出版作为ISO / IEC 15444-9。在此框架下,潜在的巨大图像的选定区域已受从图像服务器上的请求而发送一个客户端,从而减少所需的带宽。JPEG 2000的数据也可以使用ECWP和ECWPS协议ERDAS ECW / JP2的SDK中发现流。
Motion JPEG格式2000
主要文章:Motion JPEG格式2000 动态JPEG 2000,(MJ2),在ISO标准的第3部分最初定义为JPEG2000(ISO / IEC 15444-3:2002,)作为一个独立的文件,现在已经表达了ISO / IEC 15444-3:2002 / AMD 2:2003在ISO基格式方面,ISO / IEC 15444-12和在ITU-T建议T.802 它指定使用的JPEG 2000格式的影像定时序列(运动序列),可能结合音频,并组合成一个整体呈现。它还定义了文件格式,基于ISO基础媒体文件格式(ISO 15444-12)。档案格式为Motion JPEG格式2000的图片档案,像是RFC 3745的.mj2和.mjp2。
它是一个开放的ISO标准和先进的更新MJPEG(或MJ),这是基于传统的JPEG格式。不像普通的图片格式,如MPEG-4部分2,WMV和H.264,MJ2不采用时间或帧间压缩。相反,每个帧是由任一种有损或JPEG 2000及其物理结构的无损变体不依赖于时间顺序编码一个独立的实体,但它确实使用一个单独的配置文件,以补充数据。对于音频,它支持的LPCM编码,以及各种MPEG-4的变体,如“原始”或补充的内容
动态JPEG 2000(常引用为MJ2或MJP2)认为是数字档案格式,由美国国会图书馆。 2013年6月,从美国国会图书馆为纽约时报杂志,关于“小贴士归档家庭史”,就像FFV1编解码采访伯特伦里昂,H264或苹果公司的ProRes有提及,但JPEG 2000是没有的。
ISO基本媒体文件格式
ISO / IEC 15444-12相同与ISO / IEC 14496-12(MPEG-4第12部分),并且它定义了ISO基本媒体文件格式。例如,动态JPEG 2000文件格式,MP4文件格式或3GP文件格式也基于此的ISO基础媒体文件格式
GML JP2地理参考
开放地理空间联盟(OGC)定义的地理参考JPEG元数据标准2000的图像与使用地理标记语言(GML)格式嵌入的XML:在GML JPEG 2000地理编码影像(GMLJP2),1.0.0版。01-18 2.0版,题为GML在JPEG 2000(GMLJP2)编码标准第1部分:核心获批准2014-06-30。
含有GMLJP2标记JP2的JPX文件可以位于与显示在由一个合适的地理信息系统(GIS)上的地球表面上的正确位置,以类似的方式来的GeoTIFF图像。
JPEG 2000与原有技术比较
技术优势
较佳的压缩率及品质
尤其在低压缩比情形下,JPEG 2000优势尤其明显。主要因为其基于小波转换并搭配更强的熵编码:小波转换避免了离散余弦转换区块化时(如JPEG的8×8网格)造成的马赛克失真;熵编码也从JPEG的霍夫曼编码改用效能更佳的算术编码。(JPEG 2000在后续编码时仍需要区块化的动作,不过其区块通常都远比JPEG的8×8区块来的大。)
递进性与可缩放性
递进性(Progressive)与可适性(Scaling)在此可以算是一体的两面。JPEG 2000在编码技术上使用了不同的思维,类似于从低分辨率的资讯慢慢递进排列到高分辨率的资讯。
- 从递进性的角度来看,解码的过程会先去撷取前端低分辨率资讯,先解得低分辨率图片;再一步步撷取更多资讯,逐步增进分辨率。这代表了使用者可以视需求只解码部分而得到缩图,节省计算量。
- 从可适性的角度来看,其编码内容可以在任意位置截断,从头至此的编码片段可受解码回一张较低分辨率的图片。编码片段越长,解码后的分辨率越高(或说放大到同样分辨率时,其峰值信噪比(PSNR)较佳)。这意味了当需要更高压缩率时,直接丢弃后方的编码数据即可达成。
区域解码(Random Access)
JPEG 2000的编码除了在大小∕品质上有递进性或可适性,在图片的空间区域上也同样有特别的安排。当使用者只想解码取用图片中特定区域时,可以依特定规律找出该区域的编码数据,而不需预先解码整张图片。
重点区块处理(Region of Interest)
类似可适性与区域解码的综合结果,不同的区域可以挑选不同的压缩品质。通常图片中特定部分的重要性远大于其他部位,此时可利用重点区块处理达到差异化处理的效果。
失真与非失真压缩方法相同
JPEG 2000可以采用同一套编码方式产生失真或非失真的压缩结果。可以粗略想像为利用可缩放性直接把非失真的结果截断为失真的结果。而JPEG的失真压缩与非失真压缩作法差异较大。
错误容忍(Error Resilience)
JPEG 2000与JPG同样有错误容忍的特性。若传输过程中出现些许位元错误,由于在编码过程会切分许多阶层结构,可以避免该错误影响范围的扩大。
其他
支援高动态范围成像、支援图片透明度。
与JPEG比较
在有损压缩下,JPEG 2000一个比较明显的优点就是没有JPEG压缩中的马赛克失真效果。JPEG 2000的失真主要是模糊失真。模糊失真产生的主要原因是在编码过程中高频量一定程度的衰减。传统的JPEG压缩也存在模糊失真的问题。
就图像整体压缩性能来说,目前有一些文章可能夸大JPEG 2000的性能。事实上,在低压缩比情形下(比如压缩比小于10:1),传统的JPEG图像质量有可能要比JPEG 2000要好。JPEG 2000在压缩比比较高的情形下,优势才开始明显。整体来说,和传统的JPEG相比,JPEG 2000仍然有很大的技术优势,通常压缩性能大概可以提高20%以上。一般在压缩比达到100:1的情形下,采用JPEG压缩的图像已经严重失真并开始难以识别了,但JPEG 2000的图像仍可识别。有损压缩图像质量或失真程度一般用峰值信噪比(PSNR)指标来衡量。虽然峰值信噪比不能完全反映人类视觉效果,但是它仍是一个目前比较流行的量化指标。
与PNG比较
虽然JPEG 2000也支持无失真的编码方式,但是它并不企图完全取代今日主要的无失真影像档格式。例如图表之类的影像,如果图档之中有许多像素是同一颜色,那么PNG(Portable Network Graphics)格式仍然会有更小的储存空间,而且有一些JPEG 2000所没有的特殊压缩功能。
编码技术
概论
JPEG 2000为了达成可适性的效果,将图片的编码分为众多层级(由大至小):图片(Image)、区块(Tile)、频块(Sub-band)、编码区段(Code-block)、位元层(Bit-plane)、分流(Pass)。依照压缩编码动作可以粗略分为:
- 单元处理(Word Level Processing):负责图片、区块、频块层级,主要以“小波转换”将图片信号转换至频率世界,以利后续压缩。
- 位元处理(Bit Level Processing):负责编码区段、位元层、位元条层级,以“内嵌区段编码”方式压缩数据。以下将简单解释各个分段步骤
转换(Transform)
前处理
- 区块化(Tiling):对影像作分割,把完整的影像分割为数个相同大小(边界的区块除外)、彼此间没有重叠且为长方形的区块,作为小波转换的基本单位。此处的区块通常远大于JPEG的8×8区块,甚至整张图片也可作为一个区块。(JPEG 2000的区块大小非固定值)
- 零频位移(或翻直流位移,DC shifting):对于区块中的数据平移其数值,使区块内的数据(如色彩数值)成为以0为中心,带有正负号的数值数据。
- 色彩空间转换(Color Transformation):将传统的RGB(红绿蓝)色域转换至其他色彩空间。
- 对于失真压缩,采用不可完全回复色彩空间转换(Irreversible Color Transform),转换至一般熟悉的YCbCr色彩空间。
- 对于非失真压缩,采用可完全回复色彩空间转换(Reversible Color Transform),使用简化后的YCbCr色彩空间。理由是人眼对于明暗(YCbCr中的Y)较色度敏感(YCbCr中的CbCr),分开处理可以较单纯的RGB更有视觉上的意义。简化后的YCbCr色彩空间因为不需要小数计算,不会有运算上精确度的失真,但因为其系数较粗略,后续压缩效果可能会稍差一些。
离散小波转换(Discrete Wavelet Transform)
详见离散小波变换条目。
系以阶层式的采样(down sampling)、升采样(up sampling)、相减(取差异部分)的方式来取得阶层状的频率资讯。把影像区块分为多层次的高频频块和低频频块:其中低频频块是直接采样的结果,可以视为影像的近似,反映影像的大略情形;高频频块则是剩余部分,反映了影像的高频资讯,可以理解为影像的细节。此处的滤波器选择主要有两种:Daubechies 9-tap/7-tap filter(用于失真压缩)和Le Gall 5tap/3-tap filter(用于非失真压缩)。
量化(Quantization)
量化的意义在于将一组连续讯号对应到一组离散讯号,后续的离散讯号以单纯的位元表示,可达到压缩数据并数码化的条件。简言之为将频块带有小数的数据分段、近似,以较为单纯的位元表示。(从单元处理过渡到位元处理)
内嵌区段编码与最佳化(EBCOT)
此技术先将数据作好适当的切割、归类后,利用搭配统计分布模型的熵编码法压缩数据。由于数据经有条理的适当分割,具备可适性的特性,在最后可以衡量所需要的数据大小与品质,找出最佳分割点。舍弃该点以后的数据,仍保有高品质的特性。以下就三者分开描述
内嵌区段编码(Embedded Block Coding)
首先对数据作适当的切割、归类,如此有两大好处:其一不同类型的数据其0、1位元的统计特性不同,分开处理可以增进压缩效率;其二为依数据重要性的不同作出区隔,从最重要到不重要作排列,以达成可适性(Scaling)的效果。在切割归类上,有以下名词作为单位:
- 编码区段(Code-block):通常会将上一步动作算好的频块进一步切成32×32或64×64的区段,分开来平行运算,作为内嵌区段编码的对象。
- 位元层(Bit-plane):把编码区段内的数据依照位元深度,从高位元(MSB)到低位元(LSB)分成数个位元层(不同于图片水平、垂直方向,而是依位元深度的第三个维度)。如每笔数值利用P个位元(bit)来记录,将会从高位元到低位元受分解为P个位元层面。位元层较高的通常有认为比较重要(通俗想像:一般人觉得“百位数”比“十位数”或“个位数”重要)。
- 分流(Pass):每个位元层都再依“重要性”分为三个分流,分开套用内容统计模型(context modeling)处理。分流依据最高有效位元(对于正数,第一个从0变1的位置)的出现与否(以σ记,通俗想像:判断一个人究竟有“几十万”跟“几万”元的那个“几”),以及该位元邻近的八格范围内,是否有其他位置出现最高有效位元(以φ记,想像:邻近处出现了,自己也很可能会出现)。
- 分流一(Pass 1):最重要的数据,该处上一层还没出现过最高有效位元但邻近处出现者,将分流至此。
- 分流二(Pass 2):该位置已经出现过最高有效位元,对于较低位元继续记录其位元值。
- 分流三(Pass 3):该处上一层还没出现过最高有效位元,且邻近处也都不曾出现过。这些不同的分流还会依照与邻近的八格范围的关系,再分别查表套用不同的内容统计模型。大致上有以下四大类:
- 零编码(zero coding):用于分流一、三,纪录非最高有效位元者。
- 正负号编码(sign coding):用于分流一、三,纪录出现最高有效位元者。
- 精细编码(Magnitude refinement coding):用于分流二。
- 游程编码(Run-length coding):用于分流三,纪录全都不是最高有效位元的状况。
算术编码(Arithmetic coding)
详见算术编码条目。
算术编码是一种无损的熵编码法。算术编码把输入数据视为一种0~1之间的切割,根据内容统计模型决定这次输入数据的切割位置。当所有数据输入毕以后,可以得到一个0~1之间的小数,该小数的数值以数据形式表示(如位元)即为压缩编码后的结果。算术编码较其他的熵编码法(如哈夫曼编码)还要更接近熵编码法的数学理论极限。
最佳化
由于上述压缩后的数据,具备可适性的特性,在压缩的最后可以视需求衡量最后数据大小与品质,找出最佳分割点。舍弃该点以后的数据,仍保有在该需求的衡量下,最高品质的特性。做到良好的压缩率控制。
JPEG 2000缺点(相较于JPEG)
虽然避免了8X8区块克服了块状模糊的问题,不过也同时失去了8X8区块对于运算效率帮助的部分,造成需要运算时间加长,此外8X8区块也可以帮助减少硬件的需求(需要将全影像暂存的位置),JPEG2000就不得不面对这个问题。
JPEG 2000版权专利问题
JPEG 2000存在版权和专利的风险。这也许是目前JPEG 2000技术没有得到广泛应用的原因之一。JPEG 2000标准本身是没有授权费用,但是,因为编码的核心部分的各种算法被大量注册专利,所以一般认为,不太可能避开这些专利费用开发出免授权费的商用编码器。
且JPEG 2000是受专利保护,但贡献的公司和组织一致认为,其第一部分 - 核心许可证编码系统,所有贡献者可以免费得到。 该JPEG委员会指出:
一直以来,该委员会的JPEG其标准应该是可执行其基准形式不需支付使用费和特许费强大的目标......和未来的JPEG 2000标准已经沿着这些路线准备,并达成协议超过持有多项专利在这一领域,允许在不与支付许可费或使用费的标准连接使用其知识产权的20大机构。
然而,JPEG委员会已经承认,未申报的专利潜艇可能仍然存在危险: 当然,还是有可能的,其他组织或者个人不得声称影响执行标准的知识产权,任何实施者都敦促开展自己的搜索和调查在这个区域。