首页> 中国专利> 基于类小波变换和稀疏数据编码的多分辨率图像数据管理系统和方法

基于类小波变换和稀疏数据编码的多分辨率图像数据管理系统和方法

摘要

一种图像处理系统,按预定顺序处理片(168)。小波变换使用短滤波器应用于图像边界,以产生边缘系数。长滤波器用于内部位置的图像数据,以产生非边缘系数(172)。两种滤波器都是只应用于片内部的图像数据和较先变换数据组内部的变换系数。在客户机提供对应当解码器(180)。

著录项

  • 公开/公告号CN1479907A

    专利类型发明专利

  • 公开/公告日2004-03-03

    原文格式PDF

  • 申请/专利权人 皮克舍弗公司;

    申请/专利号CN01820364.7

  • 发明设计人 C·K·崔;H·Y·高;L·钟;

    申请日2001-10-11

  • 分类号G06K9/36;G06K9/46;

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人王岳;张志醒

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 15:09:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-30

    未缴年费专利权终止 IPC(主分类):G06K9/36 授权公告日:20060830 终止日期:20151011 申请日:20011011

    专利权的终止

  • 2015-07-22

    专利权的转移 IPC(主分类):G06K9/36 变更前: 变更后: 登记生效日:20150703 申请日:20011011

    专利申请权、专利权的转移

  • 2006-08-30

    授权

    授权

  • 2005-09-28

    专利申请权、专利权的转移专利申请权的转移 变更前: 变更后: 登记生效日:20050826 申请日:20011011

    专利申请权、专利权的转移专利申请权的转移

  • 2004-05-12

    实质审查的生效

    实质审查的生效

  • 2004-03-03

    公开

    公开

查看全部

说明书

发明领域

本发明总体上涉及在计算机系统、个人数字助理、数码相机和其它设备中图像的处理、压缩、传递以及存储,特别是一种图像管理系统和方法,其中经过数字编码的图像可以按任何特定的窗口大小和在多种分辨率下观看,并可以被打印、修剪或操作。

背景技术

图像可以按多种分辨率级存储。较低级分辨率的编码图像较小,因此,与较高分辨率相比,可以用较少的带宽传递,用较少的空间存储。当把图像存储为多种分辨率时,最好将图像数据分隔成有序的一组集合或子文件,其中每个附加的子文件提供从一个级到下一个级提高图像的分辨率所需的附加数据。此外,用特定的因子(例如4)提高图像分辨率时,最好使每个子文件中的图像数据量大致与相关的分辨率增加成正比。例如,如果每个分辨率级与其相邻级相差4倍(如:级0:32×32,级1:64×64,级2:128×128,等),则每个分辨率级的编码图像数据量应当大致等于下一个较高级分辨率的编码图像数据量的25%。从另一个观点看,用于从第一级到下一级提高图像分辨率的子文件中的数据量理想地是大约等于第一级的子文件中的数据量的三倍。

众所周知,图像的小波压缩自动产生若干分辨率级。特别地,如果对图像作用N“层”小波变换,则产生N+1个分辨率级的数据,其中数据的最后LL子波段包括最低分辨率级,而所有的子波段数据一起构成最高分辨率级。为方便起见,小波变换的“层”有时将称为“级”。在每个空间维度上,每个分辨率级与其相邻级相差因数2。我们可以将最低的拇指甲分辨率级标为0级,将最高分辨率级标为N级,这是最终或基本图像的分辨率。

本发明的第一方面基于两种观察。第一种是当使用传统的和大部分专用的数据压缩和编码方法时,由小波压缩产生的N级中的数据量往往以几何级数递减。例如,0级分辨率的数据量通常是1级分辨率数据量的80%,而理想地,其应当是1级分辨率数据量的25%。结果,0级分辨率的数据包含的数据显著多于显示0级图像所需的量。换句话说,0级数据给出0级低分辨率显示所不必要的高质量,因此,与只提供显示0级分辨率的图像所需的信息相比,所能获得的压缩率较低。

第二种观点是低分辨率图像数据系数量化为全分辨率显示,而不是低分辨率显示,因为这些数据系数不仅用于产生图像的低分辨率表示,还用于产生图像的较高分辨率表示。

根据本发明的该第一方面,如上所述,最好每个分辨率级的子阵列或子文件中的图像数据量大致正比于该分辨率级所关联的分辨率增加。

本发明的第二方面基于以下观点,即:小波变换传统上作用于图像的片或块的边界上,以避免再生的图像中的片或块边界假象。小波变换可以实现为具有相关长度的FIR(有限脉冲响应)滤波器。“长度”表示用于生成每个系数的数据样本数。小波变换一般关于中心对称,并且当实现小波变换的滤波器在片或块的边缘时,通常滤波器的一半或几乎一半将延伸到相邻的片或块内。结果,通常在小波变换图像的一个片的过程中必须不仅在存储器中保持相邻片的一部分,还必须在存储器中保持每级小波变换的相邻片的边界系数。这样,避免分片效应(也称为片边界效应或假象或边界假象)通常增加了执行对图像的小波变换的计算机或设备的存储要求,还会增加变换程序的复杂性,因为需要跟踪相邻的片或块的边界数据和系数的存储位置。根据本发明的第二方面,最好具有一种小波或类小波变换,其能够只作用于被处理的图像块的数据,而不必将该变换作用于相邻块中的数据,也不会产生明显的边界假象。这样的变换将降低存储器要求,并可以简化图像的小波压缩。

现有技术中众所周知,数字图像能够一次压缩一部分,而不是一次压缩全部,从而减少存储器要求。例如,用于图像的JPEG压缩和编码的DCT变换传统上用于8×8像素的片上。但是,对图像进行分片处理的一个公知问题是分片产生不期望的片边界效应。在JPEG图像中DCT分片的边界效应被认为是可以接受的,因为片的尺寸很小,使得分片效应对人眼比较不明显。

但是,当使用小波或类小波变换而不是DCT变换时,很小的片,如8×8像素不实用。类小波变换已经被证明比DCT变换提供优点更明显的数据压缩,因此,如果只利用中等量的工作存储器就能避免分片效应的话,最好使用类小波变换。

因此,最好提供一种图像处理系统和方法,其通过使用适度大小的片,如64×64或32×32或64×32像素的片的类小波变换,利用适量的工作存储器处理图像,同时避免产生不期望的分片(片边界)效应。

本发明的第三方面基于以下观点,即,应用于小波系数的最优量化级不仅在每个变换子波段之间不同,在图像的不同区域之间也不同。特别地,包含许多“特征”(其特征通常是水平或垂直线或边界)的图像区域比包含较少特征的区域更难压缩。即,在不导致从压缩数据再生的图像区域质量降低的情况下,这样特征密集的图像区域不能象特征较不密集的图像区域一样被压缩。因此,最好提供一种图像压缩和编码系统,其量化程序使用较小的量化因数量化特征密集的区域的小波系数,而使用较大的量化因数量化具有较少特征的区域的小波系数。

发明内容

概括地说,本发明是一种图像处理系统和方法,用于将一族预定的变换,如类小波变换,应用到图像的图像数据,以产生变换图像数据;还用于将数据压缩方法应用于该变换图像数据,以产生图像文件。该图像处理系统和方法对捕捉到的图像进行分片,按预定顺序处理这些片。片是图像数据不重叠的部分。每片图像数据通过将预定族的变换层应用于该图像数据片得到处理,从而产生连续的变换系数集。在一个优选实施例中,所述变换层是一族类小波分解变换的连续应用,包括应用于被处理的数据阵列边界处的数据的边缘滤波器和应用于数据阵列内部区域中的数据的内部滤波器。

由每个变换层处理的变换系数集包括位于变换系数集外部边界处的边缘系数和位于变换系数集内部位置处的非边缘系数。变换系数集包括由最后变换层产生的最后变换系数集和一个或多个较先的变换系数集。

所用的变换滤波器包括一个或多个边缘变换滤波器,其应用于片边界处的图像数据和位于每个较先的变换系数集靠近边界处的系数,以产生边缘系数;还包括一个或多个内部滤波器,其应用于片内部位置处的图像数据和较先的变换系数集内部位置处的系数,以产生非边缘系数。边缘变换滤波器的滤波支持比内部变换滤波器短,且边缘变换滤波器和内部变换滤波器都是只应用于片内的图像数据和较先的变换集内的变换系数。

边缘滤波器包括一个短而低的空间频率滤波器,其加权最靠近片边界的图像数据和最靠近每个较先的变换系数集边界的变换系数,从而能够从变换系数再生不带有边界假象的图像。

至少一些变换滤波器最好是非对称边界滤波器,向每个片的边界延伸第一长度,向远离片边界的方向延伸第二个较长的长度,但不超过片的边界。

在一个优选实施例中,内部变换滤波器包括一个中心滤波器,用于在被处理的数据阵列的中心或中心附近产生2-4个高通和2-4个低通系数。该中心滤波器作为滤波器开关。在该中心滤波器不同的侧面使用两种不同形式的内部滤波器。例如,在中心滤波器的一侧,内部滤波器的中心可能位于偶数数据位置,而在另一侧则可能位于奇数数据位置。

图像处理系统和方法还可以包括图像重构电路或程序,用于随后对图像文件应用数据解压缩方法和逆变换,以产生适合在图像观察器上显示的重构图像。

在本发明的第二方面,变换系数集对应于图像的空间频率子波段。这些子波段按照产生它们的变换层分组。对于一个或多个相应的子波段组,产生每个图像片的一个或多个参数,其值表示该片中图像特征的密集度。每个图像片被按照该一个或多个参数的值归入一组预定类中的一类。根据片的归类,选择该片的一组量化因数,然后用所选的量化因数将该片的变换系数按比例变换,以产生该片的一个量化变换系数集。

在本发明的第三方面,对量化的变换系数进行编码。在编码每组空间频率子波段的系数时,这些系数的最重要的位平面集存储在第一比特流中,最不重要的位平面集存储在第二比特流中。从另一观点看,其值超过预定阈值的编码系数部分(用于一组子波段)存储在第一比特流中,而剩余的编码系数部分存储在第二比特流中。当按照特定分辨率级从图像文件重构图像时,只有对应于该特定分辨率级的比特流被解码并用于重构该图像。对于一些分辨率级,不用的一个或多个比特流将包含子波段最不重要的部分(即,位平面),该子波段较重要的部分包含在用于在该分辨率级重构图像的比特流中。

附图简述

通过下列结合附图所做的详细说明和所附权利要求,本发明的其它目的和特征将更加明白。附图中:

图1是分布式计算机系统的框图,包括一个网络服务器和多个客户计算机,用于将多分辨率图像分布到客户计算机;

图2是根据本发明一个实施例的计算机系统的框图;

图3A简化示出将原始图像变换为变换图像阵列和将该变换图像阵列压缩为压缩图像文件的过程;图3B示出空间变换子波段到NQS子波段的映射,用于编码变换系数;

图4是代表一个图像的编码数据的概念表示,组织为帮助图像的多分辨率表示(即,按照多种分辨率级);

图5A、5B、5C、5D和5E示出图像存储数据结构;

图6是可以应用本发明的图像处理过程的高级流程图;

图7A、7B和7C用图形示出正向和反向类小波数据变换过程;

图8示出通过对图像数据阵列应用多层分解小波或类小波变换所产生的小波系数的空间频率子波段;

图9示出用于选择一个图像块的量化因数的块分类方法的流程图;

图10A和10B示出用于编码一个图像块的变换系数的程序的流程图;

图11A、11B和11C示出在一个优选实施例中称为最大位深度(MaxbitDepth)值的编码方法,其表示在编码图像的每个块和子块中编码变换系数所要求的位数;

图12是可以应用本发明的压缩图像重构过程的高级流程图;

图13A和13B示出用于解码图像的变换系数和用于从这些系数重构图像的程序的流程图;

图14是一个数码相机的框图,其中实现了本发明的一个或多个方面;

图15是一个概念流程图,表示客户计算机下载一个小图像,然后对图像放大,然后转到图像的新的部分。

优选实施例

本文件中,术语“小波”和“类小波”可以互换使用。类小波变换的空间频率特征大体上类似于传统的小波变换的空间频率特征,并可以无损地反变换,但滤波器较短,其计算效率更好。

本发明可以在处理图像的多种设备中实现,包括从高端工作站和服务器到低端客户计算机的多种计算机系统,也可以在特定的专用设备中实现,如数码相机。

用于编码和分布多分辨率图像的系统

图1示出一个分布式计算机系统,包括一个网络服务器140和多个客户计算机120,用于通过诸如因特网的全球通讯网络110或任何其它合适的通讯网络如局域网或企业内部网向客户计算机分布多分辨率的图像190。图像编码工作站150准备由网络服务器分布的多分辨率图像文件。在一些实施例中,网络服务器140也可以执行图像编码工作站150的图像编码任务。

典型的客户设备120应当是个人数字助理、个人计算机、工作站、或专用于特定任务的计算机控制的设备。客户设备120最好包括中央处理单元122、存储器124(包括高速随机存取存储器和非易失存储器如磁盘存储器)、以及用于通过通讯网络110将客户设备连接到网络服务器的网络接口或其它通讯接口128。存储器124典型地应当存储操作系统132、浏览器应用或其它看图应用134、图像解码模块180、和根据本发明编码的多分辨率图像文件190。在一个优选实施例中,浏览器应用134包括或耦合到一个JavaTM(Sun Microsystem公司的商标)虚拟机,用于执行Java语言程序,并且图像解码模块实现为JavaTM程序,其与图像文件190一起动态下载到客户设备,从而使浏览器能够解码图像文件用于观看。

网络服务器140最好包括中央处理单元142、存储器144(包括高速随机存取存储器和非易失存储器如磁盘存储器)、以及用于通过通讯网络110将网络服务器连接到客户设备和图像编码工作站150的网络接口或其它通讯接口148。存储器144典型地应当存储http(超文本传输协议)服务器模块146,用于响应http请求,包括多分辨率图像文件190的请求。网络服务器140还可以选择包括带有编码程序172的图像处理模块168,用于将图像编码为多分辨率图像。

计算机系统

参考图2,图像处理工作站150可以使用程序化的通用计算机系统实现。当网络服务器执行图像处理任务时,该图还可以表示网络服务器。计算机系统150可以包括:

一个或多个数据处理单元(CPU)152;

存储器154,其典型地包括高速随机存取存储器和非易失性存储器;

用户接口156,包括显示设备157,如CRT或LCD型显示器;

网络或其它通讯接口158,用于与其它计算机和其它设备通讯;

数据端口160,用于例如从数码相机接收图像和向数码相机发送图像(当然这样的图像传递也可以通过网络接口158来完成);和

一个或多个通讯总线161,用于将CPU 152、存储器154、用户接口156、网络接口158以及数据端口160互相连接。

该计算机系统的存储器154存储程序和数据,典型地包括:

操作系统162,用于提供基本的系统服务;

文件系统164,其可以是操作系统的一部分;

应用程序166,如用来观看和操作图像的用户级程序;

图像处理模块168,用于执行各种图像处理功能,包括作为本发明主题的那些功能;

图像文件190,表示各种图像;以及

临时图像数据阵列192,用于在图像处理和图像再生过程中产生的中间结果。

图像处理模块168可以包括一个图像编码模块170和图像解码模块180。图像编码模块170产生多分辨率图像文件190,其细节将在下面讨论。图像编码模块170可以包括:

编码控制程序172,其控制压缩和编码图像的过程(以原始图像阵列189开始,该阵列可以通过解码另一种图像文件格式的图像获得);

一组类小波变换程序174,用于将类小波滤波器应用于表示一个图像的图像数据;

块归类程序176,用于确定应用于图像的变换系数的每个块(或波段)的量化因数;

量化程序178,用于量化一个图像的变换系数;以及

稀疏数据编码程序179,也称为熵编码程序,用于编码由量化程序178产生的量化变换系数。

图像处理模块168中的程序在一组临时数据阵列192中存储部分变换的图像和其它临时数据。

图像解码模块180可以包括:

解码控制程序182,用于控制解码一个图像文件(或图像文件的一部分)的过程和再生由图像文件中的数据所表示的图像;

稀疏数据解码程序184,用于将存储在图像文件中的经过编码的量化变换系数解码为对应的量化变换系数阵列;

去量化程序186,用于去量化表示图像的一个片的一组变换系数;和

一组类小波反变换程序188,用于将类小波反向滤波器应用于表示图像的一个片的一组去量化的变换系数,以再生该片图像。

图像捕获和处理概述

参考图3,从数码相机的图像捕获机构(图14)或从图像扫描器或其它设备获得的原始图像数据200通过“对图像数据分片”而被处理。更具体地,原始图像数据被作为片202的阵列处理,每个片具有预定大小,如32×32或64×64(即64行64列)。在其它实施例中,可以使用其它的片大小,如32×32或16×32或128×128或64×128。片是图像数据不重叠的部分。用足够多的片以覆盖待处理的整个原始图像,即使一些片伸出原始图像的边缘。片的伸出部分在小波变换过程中用边界数据值的拷贝填充,或者用无效数据填充。片的位置相对于图像的左上角的原点确定,座标的第一项表示片(或片中的像素或系数)的Y位置,第二项表示片(或片中的像素或系数)的X位置。因此,位置0,128的片位于图像的顶部,其原点位于最上一行像素的第128个像素处。

小波或类小波分解变换连续应用于图像的每个片,将片中的原始图像数据转换为变换系数集。当类小波变换是应用于图像数据的二维阵列的一维变换时,该变换首先在一个方向上(如,水平方向)应用于图像数据,以产生中间系数集,然后该变换在另一方向上(如,垂直方向)应用于该中间系数集,以产生最终系数集。最终系数集是将类小波分解变换在水平和垂直方向上都应用于图像数据的结果。

片是按照预定的光栅扫描顺序处理的。例如,顶部行中的片是从一端(如,左端)到另一端(如,右端)处理,然后处理紧接着的下一行片,直到原始图像数据的底部行的片也被处理。

每一片的变换系数是通过连续应用类小波变换而产生的。对原始图像数据的初始二维阵列首先应用小波分解变换产生四组系数,表示为LL、HL1、LH1和HH1。随后的小波分解变换的每个应用只应用于由前一步小波变换产生的LL组系数,并产生四组新的系数,表示为LL、HLx、LHx和HHx,其中x表示小波变换“层”或迭代。在最后的小波分解变换迭代之后,只剩下一个LL组。产生的系数总数等于原始数据阵列中的数据样本数。由每次变换迭代产生的不同组系数有时称为“层”。一个图像所产生的小波变换层数通常是初始图像分辨率的函数。对于64×64或32×32大小的片,一般执行5个小波变换层,产生16个空间频率子波段数据:LL5、HL5、LH5、HH5、HL4、LH4、HH4、HL3、LH3、HH3、HL2、LH2、HH2、HL1、LH1、HH1。不同实现之间的变换层数可能不同,取决于所用的片的大小和可用的计算资源量。对于较大的片,可能使用附加的变换层,从而产生附加的数据子波段。执行的变换层数越多,通常将产生越好的数据压缩,其代价是增加的计算时间,但也可能产生增加的片边缘假象。

空间频率子波段按以下分组。子波段组0对应于LLN子波段,其中N表示作用于图像(或图像片)的变换层数。每个其它子波段组i包含三个子波段:LHi、HLi和HHi。以下将说明,当编码一个片的变换系数时,来自每组子波段的系数与其它组子波段的系数分开编码。在一个优选实施例中,产生一对比特流,以表示每组子波段中的系数。一个比特流表示该组子波段中的系数的最重要的位平面,而另一个比特流表示该组子波段的系数的其余的、最不重要的位平面。

由应用类小波变换所产生的小波系数最好通过用相应的量化值(也称为量化因数)除变换的片的每个子波段中的系数(由量化器178)来量化。在优选实施例中,为每个子波段指定一个独立的量化因数。更具体地,如下所述,一个块分类器176产生一个或多个值,表示每个图像片中的特征密集度,并且根据该一个或多个值,选择一个量化因数表,用于量化该片的不同子波段中的系数。

由量化器178产生的量化系数被稀疏数据编码器179编码,以产生每个图像片的一组编码子图像子文件210。

优选实施例中所用的类小波变换在下面详细描述。用于执行该优选实施例的类小波变换的电路与美国专利No.5,909,518“System andMethod for Performing Wavelet and Inverse Wavelet LikeTrans formation of Digital Data Using Only Add and Bit ShiftArithmetic Operation”(用于仅使用加和移位算法操作执行数字数据的小波和反向类小波变换的系统和方法)中描述的小波变换和数据量化方法非常相似,该专利在此引作参考。

优选实施例的稀疏数据编码方法称为嵌套二次分裂(NQS),在下面详细描述。该稀疏数据编码方法是美国专利No.5,949,911“Systemand Method for Scalable Coding of Sparse Data Sets”(用于稀疏数据集的可伸缩编码的系统和方法)中描述的NQS稀疏数据编码方法的改进版本,该专利在此引作参考。

图3B示出用于编码变换系数的从空间频率子波段到NQS子波段的映射。特别地,在一个优选实施例中,七个空间频率子波段(LL5、HL5、LH5、HH5、HL4、LH4和HH4)被映射到单个NQS子波段(子波段0),以编码这些子波段中的系数。换句话说,该七个空间频率子波段中的系数作为单个顶层块处理,以进行NQS编码。在一个优选实施例中,NQS子波段0、1、2和3作为四个顶层NQS块编码,其最重要的位平面存储在表示所述图像的最低分辨率级的比特流中。

图像分辨率级和子图像

参考图4,一个图像按照多种分辨率级0-N存储,通常每个分辨率级与其相邻的分辨率级相差因数4。换句话说,如果图像的最高分辨率表示法(分辨率级N)包含的信息量为X,则第二高分辨率表示法N-1包含的信息量为X/4,第三高分辨率表示法包含的信息量为X/16。图像文件中存储的分辨率级数将取决于图像的最高分辨率表示法的大小和拇指甲图像在最低分辨率级能够接受的最小分辨率。例如,如果全或最高分辨率图像是具有16百万像素(如4096×4096像素的图像)的高清晰画面,则7个分辨率级应当是合适的:4096×4096,2048×2048,1024×1024,512×512,256×256,128×128,64×64。

但是,如图4所示,本发明的一个特征或方面是当多分辨率图像具有多于3或4个分辨率级时,该图像被编码和存储在多个“基本图像”文件中,每个文件包含2-4个分辨率级的数据。可选地,所有的基本图像可以存储在单个文件中,每个基础图像存储在该图像文件内的不同基础图像子文件或子文件数据结构中。

每个基础图像文件(或子文件)包含重构“基础图像”和1到3个子图像(较低分辨率级)所需的数据。例如,在图4所示例子中,图像存储在三个文件中,第一个文件存储三个分辨率级的图像,包括最高分辨率和两个较低的分辨率,第二个文件存储另外三个分辨率级的图像(第四、五和六高分辨率级),第三个文件存储两个最低分辨率级的图像,一共有8个分辨率级。通常,每个后续的文件比下一个较大的文件小大约为22X的因子,其中X是较大文件中的分辨率级数。例如,如果第一个文件具有三个分辨率级,则下一个文件通常比该文件小一个因子64(26)。

结果,表示一组较低分辨率级的图像文件将比包含全分辨率图像数据的图像文件小得多,且因此可以更快地传输给客户计算机。例如,客户计算机的用户可以先以最低分辨率级(如32×32或64×64)检查一组小图像,要求客户计算机只检查最小的三个图像文件,其将典型地包含最高分辨率图像文件的大约0.024%数据。当用户请求在较高分辨率观看图像时,客户计算机可以接收第二个较大的图像文件,包含最低分辨率图像文件64倍的数据。该第二文件可能包含三个分辨率级(如,512×512,256×256,128×128),这对用户来说可能足够了。当用户需要更高分辨率时,将发送最高分辨率文件。根据使用该系统的环境,图像的提供者可以收取附加的费用来允许下载更高分辨率的图像文件。

应当注意,许多图像文件不是正方形,而是矩形,且上述例子中使用的正方形图像尺寸不应认为是对本发明范围的限制。尽管由图像处理模块处理的信息的基本单元是片,通常是64×64或32×32的像素阵列,但任何特定的图像可以包含这样的片的任意大小的阵列。此外,图像不必要是片大小的偶数倍,因为不管是否合适,边缘片都将被截去。

将特定分辨率级的图像指定为“拇指甲”图像可以取决于图像所发送到的客户设备。例如,发给具有很小显示器的个人数字助理或移动电话的拇指甲可以比发给个人计算机的拇指甲小得多(例如,16分之1),发给具有大的高清晰屏幕的拇指甲可以比发给具有普通大小和清晰度的个人计算机的拇指甲大得多。当图像潜在地用于不同客户设备时,产生附加的基本图像,使得每种设备都能首先接收到适当大小的拇指甲图像。

当图像首先被客户设备请求时,该客户设备可以在其对拇指甲图像的请求中说明其窗口大小,或者服务器可以通过在向客户设备下载拇指甲图像之前查询客户设备来判断客户设备观看窗口的大小。结果,每种客户设备接收到适合该设备的最小分辨率拇指甲。

图像文件数据结构

参考图5A-5E,当图像的全部片都被变换、压缩和编码后,产生的编码图像数据作为图像文件190被存储。图像文件190包括标题数据194和一个基本图像数据结构序列,有时称为基本图像子文件196。每个基本图像子文件196通常包括用于在两个或更多个分辨率级显示图像的数据。此外,每个基本图像支持不同的分辨率级范围。多个基本图像和它们各自的子图像一起提供图像的全范围分辨率级,如图4所示。尽管在优选实施例中由基本图像支持的分辨率级相互不重叠,但是在可选实施例中,由一个基本图像文件支持的分辨率级可能与由(同一个初始全分辨率图像的)另一个基本图像文件支持的分辨率级重叠。

在优选实施例中,每个图像文件190是一个html文件或类似格式的网页,包含到小程序199(如JavaTM小程序)的链接198,如对象标签或小程序标签,当该文件下载到客户计算机时,小程序199自动被调用。标题194和选定的一个基本图像196用作输入嵌入的小程序199,其对图像解码并在用户的个人数字助理或计算机的显示器上显示。小程序的运行对用户是透明的,用户只看到其计算机显示器上显示的图像。可选地,该小程序可以向用户提供一个选项菜单,包括图像文件中包括的图像子文件所能获得的分辨率级、可以从服务器获得的附加的基本图像子文件、以及其它选项,如图像剪切选项。

在一个可选实施例中,客户工作站包括一个应用,如插入应用,用于以本发明的文件格式解码和显示图像。此外,每个图像文件210具有对应于该插入应用的相关数据类型。图像文件210与html(超文本链接标示语言)或类似格式的网页一起下载,该网页包括指向该图像文件的嵌入标签或对象标签。结果,当网页被下载到客户工作站时,该插入应用自动被客户计算机调用并执行。结果,图像文件就被解码和显示,插入应用的运行对用户透明。

图5A所示图像文件190-A表示存储多分辨率图像的一种可能的方式,特别适合在服务器上存储多分辨率图像。在客户计算机中,图5B所示的图像文件190-B可以只包含一个基本图像196。此外,图像文件190的客户版可以包括指向服务器上的图像文件190-A的链接201。链接201用于使客户计算机的用户能够下载同一图像的其它基本图像(其它分辨率级)。可选地,链接201是JavaTM(Sun Microsystem的商标)脚本,用于从网络服务器请求包括任何较高分辨率基本图像的图像文件。如果获得较高分辨率的图像文件要付费,则该脚本将调用服务器程序,以获得请求用户的费用。

在另一个可选实施例中,多分辨率图像可以在服务器上存储为一组独立的基本图像文件190-B,每个文件具有图5B所示的格式。这样做的好处是提供不必修改就能下载到客户计算机的图像文件190-B。

参考图5A,图像文件的标题194包括访问不同的基本图像子文件196所需的信息。特别地,在优选实施例中,标题194存储:

服务器中的图像文件的标识符或URL;

表示该文件中的基本图像子文件数(或者在每个基本图像文件存储在一个独立文件中的实施例中,是基本图像文件数)的参数值;

每个基本图像数据结构的大小;和

指向每个基本图像数据结构的偏移指针(或者在每个基本图像文件存储在一个独立文件中的实施例中,是指向每个基本图像文件的指针)。

每个基本图像子文件196具有标题204和一个比特流206的序列。这些比特流表示为1a、1b,一直到N,其中N是所述基本图像支持的分辨率级数。标号“1a”等的意义在以下解释。每个比特流206中的信息在下面详细描述。每个基本图像子文件的标题数据204包括表示以下意义的域:

基本图像子文件的大小(即,由基本图像子文件占据的存储空间);

用于将基本图像分片的片的大小(如,像素的行和列数),其中每个片分别被变换和编码,如下所述;

为这些基本图像子文件存储的颜色通道分量;

用于分解基本图像的变换滤波器(如,不同组的变换滤波器可以用于不同的图像);

为该基本图像编码的空间频率子波段数(即,基本图像的每片);

由基本图像支持的分辨率级(也称为子图像)数;

为基本图像编码的比特流数(即,基本图像的每片);和

每个比特流的信息。

基本图像子文件中的每个比特流的信息可以包括:

指向比特流,以指示其在图像文件中(或基本图像子文件中)的位置的偏移指针;

比特流的大小(比特流中有多少数据);

比特流中包括的空间频率子波段的范围;

比特流中的颜色通道数;

比特流中包括的位平面的范围,其表示子波段中的系数的位平面如何划分为重要、不重要、以及可能的中等重要部分;和

指向比特流中的片208的偏移指针表。

每个比特流206包括一个片子阵列208的序列,每个片子阵列包含图像的相关片的第i个比特流。比特流206可选地还包括标题209,具有用于忽略由基本图像标题204为基本图像制定的参数的域。当图像文件包含剪切图像时,图像文件中包括的片子阵列208的组限于那些需要表示该剪切图像的。

在一个优选实施例中,图像文件标题194还包括表示“剪切图像边界”的参数。这有助于只包含图像的剪切部分的数据的图像文件的局部拷贝,当客户计算机用于执行图像的缩小或放大操作时非常有用。例如,用户可能只请求整个图像的一小部分,但分辨率很高。在该情况下,只有显示图像的剪切部分所需的图像的片将被包括在发送给用户的客户计算机的图像文件中,剪切图像边界信息用于向在客户计算机上显示该图像的程序传达该信息。两类图像剪切信息由图像文件标题194提供:应用于整个图像文件的剪切,和应用于具体的子图像的任何进一步剪切。例如,当客户计算机首先接收图像时,其可能只接收到特定基本图像的最低分辨率子图像,该子图像一般不被剪切(与全图像相比)。当客户机以特定的较高分辨率放大图像的一部分时,只有产生将在客户计算机上观看的图像部分所需的数据片将被发送到客户计算机,从而新的剪切参数将被添加在客户计算机中存储(或缓存)的图像文件的标题上,以指示根据客户机的图像放大指令下载到客户计算机的子图像级或子图像的剪切边界。

指向基本图像的每个比特流的基本图像标题中包括的片的偏移指针的表还在放大和缩小过程中使用。特别地,参考图15,当图像文件第一次被客户计算机或设备下载时(240),较高级的比特流可能空缺,从而偏移指针表将初始包括无效值。当客户设备的用户放大图像时,如果需要,较高级比特流的各种片的数据被下载到客户设备(242),且指向片的偏移指针表更新,以反映其数据被下载到客户计算机的片。当客户机进一步以放大的或较高的分辨率级全景观看图像时,如果需要,附加片的信息被发送到客户计算机,图像文件标题194中的剪切信息和基本图像标题中的偏移信息再次被更新,以反映为每个比特流存储的数据的片。

参考图5A-5E,图像文件和基本图像子文件标题中的信息使得可以快速检索文件的任何部分,这使得计算机或其它设备能够在任意分辨率级定位图像的任何部分的开头或结尾,而不必解码图像文件190的任何其它部分内容。这在截取图像文件190,以产生较低图像质量版本的文件或剪切图像版本的文件,用于例如通过通讯网络向另一个计算机或设备发送时,非常有用。

下文中,术语“子图像”和“差分子图像”将相对于比特流206使用。总体上,基本图像的任何子图像将包括从比特流1a到具体的最后一个比特流如比特流3的全部比特流。这组连续的比特流构成以特定分辨率级重构图像所需的数据,此处称为子图像。“差分子图像”包含将图像分辨率从一个子图像级提高到下一个子图像级所需的附加比特流。例如,比特流1c、2b和3一起可以称为一个差分子图像,因为这些比特流包含将从比特流1a-2a产生的子图像的分辨率加倍所需的数据。

参考图5C,表示基本图像的编码数据190-C首先按“片顺序”存储。图像文件190-C包括标题222和一组片子文件220。参考图5D,每片子文件220包含标题224,表示用于编码该片的量化表,还包含指向子文件中的比特流的偏移指针以及其它信息。每个片的片子文件220还包含一组比特流子阵列226。每片比特流子阵列226包含编码数据,表示该片的相关组NQS子波段(见图3)的最重要的位平面、最不重要的位平面、或中等位平面。下表示出位平面到比特流子阵列的映射的例子:

     NQS子波段号分辨率    0-3    4,5,6    7,8,9     16×16    S     32×32    S+MS    S     64×64    S+MS+IS    S+IS    全部

该表中,对应于S、MS和IS的位平面在每个NQS子波段中都不同。这些位平面范围在基本图像子文件的标题中说明。例如,对于NQS子波段0-3,S可能对应于位平面16-7,MS可能对应于位平面6-4,IS可能对应于位平面3-0;而对于NQS子波段4-6,S可能对应于位平面16-5,IS可能对应于位平面4-0。

比特流1a、1b和1c包含分别表示NQS子波段0、1、2和3的最重要、中等重要、和最不重要的位平面的编码数据。比特流2a和2b包含分别表示NQS子波段4、5和6的最重要和最不重要的位平面的编码数据,其对应于LH2、HL2和HH2子波段。比特流3包含表示分别对应于LH1、HL1和HH1子波段的NQS子波段7、8和9的编码数据全部位平面。

片子文件220可以被认为是“临时”文件,因为编码的片数据随后从图5C和5D所示的文件格式重组为图5A所示的文件格式。

图5E示出基本图像子文件196的一个具体例子,表示为196A。该基本图像子文件包含12个比特流206,用于产生基本图像和两个较低分辨率子图像。基本图像利用五层小波变换进行了变换,产生16个空间频率子波段数据,这些数据已经被编码和组织为三个子图像,包括基本图像。子图像数在一定程度上是任意的,因为由5个变换层产生的子波段可以用于产生多达6个子图像。但是,使用该基本图像子文件产生很小的子图像在存储器空间利用方面不是很高效,因此,通常优选利用较小的基本图像子文件产生较小的子图像。

图5E中,基本图像用5个变换层处理,但是产生的数据只是组织为3个子图像级,而不是6个。实际上,将子波段LL2转换为10个子波段(LL5、LH5、HL5、HH5、LH4、HL4、HH4、LH3、HL3、HH3)的最后三层变换不是用于产生额外的子图像级,而只是用于产生更好的数据压缩。

如图5E所示,当图像数据的5个变换层映射到3个子图像时,比特流数据阵列206到子图像的映射如下:

子图像0,最低级子图像,对应于比特流子阵列206-1a,其包含NQS子波段0-3的最重要的位平面(见图3B);

子图像1,对应于比特流206-1a、206-1b和206-2a;和

子图像2,基本图像,对应于基本图像子文件中的全部比特流206。

当变换层映射到比图5E所示例子中更多的子图像(子图像级)时,第一子图像206-1a将包括较少的空间频率子波段。

一种稀疏数据编码技术用于编码每片的每组子波段的变换系数,使得只用很少的数据就可以表示大部分包含零值的数据阵列。通常,变换的量化图像数据的较高频率部分(即,子波段)包含的零值比非零值多,且大部分非零值的绝对值较小。因此,许多片的较高级位平面将包含很少的非零值。

分片的小波变换方法

参考图6,当一个图像被图像捕获设备捕获时,产生图像文件的过程开始(步骤250)。如果图像大小可变,则判断所捕获的图像的大小以及覆盖图像数据所需的片的行数和列数(步骤252)。如果图像大小恒定,则步骤252不需要。

然后,通过在水平方向和垂直方向上对图像中每个片应用类小波分解变换,对所有的片按预定顺序进行处理,例如按光栅扫描顺序,然后对产生的变换系数进行量化,最后使用稀疏数据压缩和编码程序对量化的变换系数进行编码(步骤254)。每个片的编码数据存储在临时文件或子文件中,例如按图5D所示的格式。

当图像中的全部片都被处理后,包含所有编码片的多分辨率图像文件被存储在非易失性存储器中(步骤256)。更具体地,来自临时文件的编码片数据按照分辨率相反顺序和图5A所示格式被写入输出比特流文件中。“分辨率相反顺序”意味着图像文件存储在文件中时,最低分辨率比特流先存储,然后是次最低分辨率比特流,依此类推。

用于步骤254的类小波分解在下面参考图7A、7B和7C进行更详细的描述。量化和稀疏数据编码步骤也在下面详细描述。

初始图像被处理、编码和存储为多分辨率图像文件后,通常包含2-4个分辨率级,如果一个以上基本图像要包括在图像文件中(257),原始图像被下采样和反失真(anti-aliased),以产生新的基本图像(258),其每个维度都小一个因子2X,其中X是先前产生的多分辨率图像文件中的子图像级数。这样,新的基本图像将比基本图像的最小的、最低分辨率的子图像小一个因子4。然后按照与前一个基本图像同样的方式对新的基本图像进行处理,以产生附加的但小得多的编码多分辨率基本图像加到图像文件上。如果初始基本图像具有足够高的分辨率,可以通过执行第二轮下采样和反失真来形成第三基本图像,第三编码多分辨率基本图像文件可以存储在图像文件中。最后的编码基本图像可能比其它基本图像包含较少的子图像级,在一些实施例中,可能只包含一个分辨率级,在该情况下,图像文件实际上就是一个拇指甲图像文件。

在一个可选实施例中,每个编码基本图像存储在独立的图像文件中,这些图像文件通过存储在图像文件标题中的信息或通过html(或类html)链接相互链接。

在一个优选实施例中,下采用滤波器是一维FIR滤波器,首先应用于图像的行,然后应用于列,或相反。例如,如果图像要在每个维度上用因子4进行下采样(对于分辨率来说是降低因子16),则该FIR滤波器可以具有以下滤波器系数:

滤波器A=(-3 -3 -4 -4 10 10 29 29 29 29 10 10 -4 -4 -3 -3)1/128。

这些示范实施例一次应用于一组14个样本,以产生一个下采样值,然后移位4个样本,然后再应用。重复这一过程,直到产生L/4个下采样值,其中L是初始样本数(即,像素值)。在图像数据阵列的边缘,镜像数据用于延伸超出图像数据边缘的滤波器系数。例如,在阵列的左边(或顶边),前6个系数应用于镜像数据值,4个“29/128”系数应用于被滤波的行(或列)中的前4个像素,最后6个系数应用于该行(或列)中下6个像素。

如果要用因数8下采样一个图像,则应用上述滤波器来用因数4下采样,然后,应用第二滤波器来用另一个因数2进一步下采样图像数据。在一个优选实施例中,该第二滤波器是FIR滤波器,具有如下滤波器系数:

滤波器B=(-3 -4 10 29 29 10 -4 -3)1/64。

可选地,可以使用更长的滤波器以实现通过一个滤波器用因数8下采样。

以上描述的下采样滤波器具有以下特征:它们是低通滤波器,截止频率分别位于奈奎斯特(Nyquist)频率的四分之一和一半处;每个滤波器系数由一个简分数定义,其中,分子是整数,分母是2的正整数倍(即,2N形式的数,其中N是正整数)。这些滤波器特征的结果使得可以非常高效地执行下采样,同时保护图像的空间频率特征,避免失真效果。

尽管下采样滤波器滤波器应用于图像数据阵列的顺序(即,先行后列或相反)会影响产生的具体下采样像素值,但对像素值的影响不大。在本发明的其它实施例中,可以使用其它的下采样滤波器。

使用边缘、内部和中心变换滤波器的类小波分解

图7A-7C简单示出对一组图像数据X0-X2n-1执行类小波分解以产生一组系数L0-Ln-1和H0-Hn-1的过程,其中L系数表示图像数据的低空间频率分量,而H系数表示图像数据的高空间频率分量。

在优选实施例中,所应用的类小波变换实际上是两个滤波器。第一个滤波器T1称为边缘滤波器,用于产生所产生的变换系数行或列中的前两个和后两个系数。第二个滤波器T2称为内部滤波器,用于产生所产生的变换系数行或列中的所有其它系数。边缘滤波器T1是短滤波器,用于变换片或块边缘的数据,而内部滤波器T2是长滤波器,用于变换远离片或块边缘的数据。边缘滤波器和内部滤波器都不用片或块外部的数据。结果,与现有技术系统相比,将本发明的类小波变换应用于图像数据阵列所要求的工作存储器较小。同样,与现有技术系统相比,用于实现本发明的类小波变换的电路和/或软件的复杂性也较低。

在优选实施例中,边缘滤波器包含第一个很短的滤波器(其“支持”覆盖2-4个数据值),用于产生最先和最后的系数,还包括第二个滤波器,用于产生第二和第二到最好的系数。第二边缘滤波器的滤波器支持延伸超过3-6个数据值,因此,比第一边缘滤波器长一些,但比内部滤波器T2短。产生其它系数的内部滤波器具有7个以上数据值的滤波器支持。边缘滤波器,特别是用于产生最先和最后高空间频率系数值的第一边缘滤波器设计为最小化边缘假象,而不使用相邻片或块中的任何数据。换句话说,本发明的边缘滤波器设计为保证被处理的数据阵列的边缘值的准确重构,其在再生由该数据这列表示的图像时,又会最小化边缘假象。

在优选实施例中,应用于数据阵列的类小波分解变换包括第1层类小波变换,其与执行第2-N层变换时使用的类小波变换不同。特别地,第1层类小波变换使用较短的滤波器,比用于第2-N层的滤波器的滤波器支持短。第1层使用不同的类小波变换(即,一组变换滤波器)的原因之一是通过对第1层使用短滤波器来最小化边界假象。第1层使用不同于其它层的类小波变换(即,一组变换滤波器)的另一个原因是最小化由于加上大量标准值而引入的舍入误差。舍入误差主要在第1层变换过程中过滤原始图像数据时发生,有时会引起从编码图像数据再生的图像质量明显下降。

下面列出用于优选实施例中的类小波变换的公式:

第1层正向类小波变换:

T1和T2正向变换(低频):

Yk=X2k-X2k-1                   k=0,1,...,n-1 >>>L>k>>=>>X>>2>k>->1>>>+>[>>>Y>>k>+>1>>>2>>]>=>>>>X>>2>k>>>+>>X>>2>k>+>1>>>+>1>>2>>->->->k>=>0,1>,>.>.>.>,>n>->1>>>

T1正向变换(边缘滤波器-高频): >>>H>0>>=>>Y>0>>+>[>>>->>L>0>>+>>L>1>>+>1>>2>>]>>> >>>H>1>>=>>Y>1>>+>[>>>->>L>0>>+>>L>2>>+>2>>4>>]>>> >>>H>>n>->2>>>=>>Y>>n>->2>>>+>[>>>->>L>>n>->3>>>+>>L>>n>->1>>>+>2>>4>>]>>> >>>H>>n>->1>>>=>>Y>>n>->1>>>+>[>>>->>L>>n>->2>>>+>>L>>n>->1>>>+>1>>2>>]>>>

T2正向变换(内部滤波器-高频): >>>H>k>>=>>Y>k>>+>[>>>>>3>L>>>k>->2>>>->22>>L>>k>->1>>>+>>>22>L>>>k>+>1>>>->>>3>L>>>k>+>2>>>+>32>>64>>]>->->->k>=>2>,>.>.>.>,>n>->3>>>

第1层反向类小波变换

T1反向变换(边缘滤波器-高频): >>>Y>0>>=>>H>0>>->[>>>>>->L>>0>>+>>L>1>>+>1>>2>>]>>> >>>Y>1>>=>>H>1>>->[>>>>>->L>>0>>+>>L>2>>+>2>>4>>]>>> >>>Y>>n>->2>>>=>>H>>n>->2>>>->[>>>>>->L>>>n>->3>>>+>>L>>n>->1>>>+>2>>4>>]>>> >>>Y>>n>->1>>>=>>H>>n>->1>>>->[>>>>>->L>>>n>->2>>>+>>L>>n>->1>>>+>1>>2>>]>>>

T2反向变换(内部滤波器): >>>Y>k>>=>>H>k>>->[>>>>>3>L>>>k>->2>>>->>>22>L>>>k>->1>>>+>>>22>L>>>k>+>1>>>->>>3>L>>>k>+>2>>>+>32>>64>>]>->->->k>=>2>,>.>.>.>,>n>->3>>> >>>X>>2>k>+>1>>>=>>L>k>>->[>>>>Y>k>>+>1>>2>>]>->->->k>=>0,1>,>.>.>.>,>n>->1>>>

X2k=Yk+X2k+1                 k=0,1,...,n-1

正向类小波变换:第2-N层

下面示出变换级2-N(即,除级1之外的全部)的正向类小波分解变换的优选实施例的公式。注意,“2n”表示以数据样本测量的由该变换处理的数据的宽度;“n”假设为正整数。边缘滤波器T1由H0、Hn>、L0和Ln-1的公式表示,其滤波器支持比内部滤波器T2短。

在一个可选实施例中,同样的类小波分解变换用于所有的层。例如,此处所示的用于第2-N层的类小波分解变换滤波器也可以用于第1层分解(即,用于滤波原始图像数据)。 >>>H>0>>=>>X>1>>->[>>>>X>0>>+>>X>2>>+>1>>2>>]>>>(边缘滤波器) >>>H>k>>=>>X>>2>k>+>1>>>->[>>>9>>(>>X>>2>k>>>+>>X>>2>k>+>2>>>)>>->>X>>2>k>->2>>>->>X>>2>k>+>4>>>+>8>>16>>]>->->->k>=>1>,>.>.>.>,>n>/>2>->3>>> >>>H>>>n>2>>->2>>>=>>X>>n>->3>>>->[>>>>X>>n>->4>>>+>>X>>n>->2>>>+>1>>2>>]>>>(边缘滤波器) >>>H>>>n>2>>->1>>>=>>X>>n>->1>>>->[>>>11>>X>>n>->2>>>+>>>5>X>>>n>+>1>>>+>8>>16>>]>>>(边缘滤波器) >>>H>>n>2>>>=>>X>n>>->[>>>>>5>X>>>n>->2>>>+>>>11>X>>>n>+>1>>>+>8>>16>>]>>>(边缘滤波器) >>>H>>>n>2>>+>1>>>=>>X>>n>+>2>>>->[>>>>X>>n>+>1>>>+>>X>>n>+>3>>>+>1>>2>>]>>>(边缘滤波器) >>>H>k>>=>>X>>2>k>>>->[>>>9>>(>>X>>2>k>->1>>>+>>X>>2>k>+>1>>>)>>->>X>>2>k>->3>>>->>X>>2>k>+>3>>>+>8>>16>>]>->->->k>=>n>/>2>+>2>,>.>.>.>,>n>->2>>> >>>H>>n>->1>>>=>>X>>2>n>->2>>>->[>>>>X>>2>n>->3>>>+>>X>>2>n>->1>>>+>1>>2>>]>>>(边缘滤波器) >>>L>0>>=>>X>0>>+>[>>>>H>0>>+>2>>4>>]>=>>>>>7>X>>0>>+>>>2>X>>1>>->>X>2>>+>3>>8>>>>(边缘滤波器) >>>L>1>>=>>X>2>>+>[>>>>H>0>>+>>H>1>>+>2>>4>>]>>>(边缘滤波器) >>>L>k>>=>>X>>2>k>>>+>[>>>2>>(>>H>>k>->1>>>+>>H>k>>)>>->>H>>k>->2>>>->>H>>k>+>1>>>+>8>>16>>]>->->->k>=>1>,>.>.>.>,>n>/>2>->3>>> >>>L>>>n>2>>->2>>>=>>X>>n>->4>>>+>[>>>>H>>>n>2>>->3>>>+>>H>>>n>2>>->2>>>+>2>>4>>]>>>(边缘滤波器) >>>L>>>n>2>>->1>>>=>>X>>n>->2>>>+>[>>>>>2>H>>>>n>2>>->2>>>+>2>>H>>>n>2>>->1>>>+>>H>>n>2>>>+>4>>8>>]>>>(边缘滤波器) >>>L>>n>2>>>=>>X>>n>+>1>>>+>[>>>>>2>H>>>>n>2>>+>1>>>+>>>2>H>>>n>2>>>->>H>>>n>2>>->1>>>+>4>>8>>]>>>(边缘滤波器) >>>L>>>n>2>>+>1>>>=>>X>>n>+>3>>>+>[>>>>H>>>n>2>>+>1>>>+>>H>>>n>2>>+>2>>>+>2>>4>>]>>>(边缘滤波器) >>>H>k>>=>>X>>2>k>>>->[>>>9>>(>>X>>2>k>->1>>>+>>X>>2>k>+>1>>>)>>->>X>>2>k>->3>>>->>X>>2>k>+>3>>>+>8>>16>>]>->->->k>=>n>/>2>+>2>,>.>.>.>,>n>->3>>> >>>L>>n>->2>>>=>>X>>2>n>->3>>>+>[>>>>H>>n>->2>>>+>>H>>n>->1>>>+>2>>4>>]>>>(边缘滤波器) >>>L>>n>->1>>>=>>X>>2>n>->1>>>+>[>>>>H>>n>->1>>>+>2>>4>>]>=>>>>>7>X>>>2>n>->1>>>+>>>2>X>>>2>n>->2>>>->>X>>2>n>->3>>>+>3>>8>>>>(边缘滤波器)

上述分解变换公式的基本形式只有当n至少等于10时才应用。当n小于10时,用于边缘和中间项目之间的项目的一些公式被略去,因为要产生的系数太少,不需要这些公式。例如,当n=8时,用于产生Lk的两个公式将被忽略。

变换滤波器的属性说明

注意,产生L0和Ln-1的边缘变换滤波器T1在输入数据阵列的边缘具有正好三个输入样本的滤波器支持,并进行加权,使得这些系数的70%可归因于被滤波的数据阵列边界处的边缘值X0或X2n-1。边缘输入数据(即,最靠近阵列边界的样本)的加重使得图像可以从变换系数重构,且基本上没有片边界假象,尽管当生成片的变换系数时,边缘和内部滤波器仅应用于片内部的数据。产生L0和Ln-1的第1层边缘变换滤波器T1加权为使得这些系数值的50%归因于被滤波的数据阵列边界处的边缘值X2n-1

在优选实施例中,内部变换滤波器在整个被滤波的数据阵列内部不是以统一的方式应用。此外,内部滤波器包括一个中心滤波器,用于在被滤波数据阵列的中心或附近生成4个高通和4个低通系数。在其它实施例中,该中心滤波器可以产生少至2个低通和2个高通系数。该中心滤波器用于在内部滤波器左边和右边(或上边和下边)部分之间转换。内部滤波器两种形式之间的转换在此处称为“滤波切换”。内部滤波器的一半,不包括中心滤波器,以偶数编号的数据或系数位置为中心,而内部滤波器的另一半的中心位于奇数数据位置的数据上。(当然,阵列的偶数和奇数数据位置可以互换)。尽管以上公式将中心滤波器置于阵列中心,但中心滤波器可以位于数据阵列内任意位置,只要边缘滤波器与内部滤波器之间的过渡平滑。当然,必须定义反向变换滤波器,使得在与正向变换滤波器相同的位置上具有反向中心滤波器。

第2-N层的小数据阵列变换公式

当n=4时,要执行的变换可以表示为:

(X0,X1,X2,X3,X4,X5,X6,X7)→(L0,L1,L2,L3;H0,H1,H2,H3)

且上述通用变换公式集简化为如下所示: >>>H>0>>=>>X>1>>->[>>>>X>0>>+>>X>2>>+>1>>2>>]>>> >>>H>1>>=>>X>3>>->[>>>>>11>X>>2>>+>>>5>X>>5>>+>8>>16>>]>>> >>>H>2>>=>>X>4>>->[>>>5>>X>2>>+>>>11>X>>5>>+>8>>16>>]>>> >>>H>3>>=>>X>6>>->[>>>>X>5>>+>>X>7>>+>1>>2>>]>>> >>>L>0>>=>>X>0>>+>[>>>>H>0>>+>2>>4>>]>>> >>>L>1>>=>>X>2>>+>[>>>>>2>H>>0>>+>>>2>H>>1>>->>X>2>>+>4>>8>>]>>> >>>L>2>>=>>X>5>>+>[>>>>>2>H>>3>>+>>>2>H>>2>>->>H>1>>+>4>>8>>]>>> >>>L>3>>=>>X>7>>+>[>>>>H>3>>+>2>>4>>]>>>

当n=2时,要执行的变换可以表示为:

(X0,X1,X2,X3)→(L0,L1;H0,H1)

且上述通用变换公式集简化为如下所示: >>>H>0>>=>>X>1>>->[>>>>X>0>>+>>X>3>>+>1>>2>>]>>> >>>H>1>>=>>X>2>>->[>>>>X>0>>+>>X>3>>+>1>>2>>]>>> >>>L>0>>=>>X>0>>+>[>>>>H>0>>+>2>>4>>]>>> >>>L>1>>=>>X>3>>+>[>>>>H>1>>+>2>>4>>]>>>

反向类小波变换:第2-N层

下面示出优选实施例中使用的第2-N变换层(即,除第1层之外的全部)的反向类小波变换。上述变换公式的基本形式只有当n至少等于10时才应用。当n小于10时,用于边缘和中间项目之间的项目的一些公式被略去,因为要产生的系数太少,不需要这些公式。 >>>X>0>>=>>L>0>>->[>>>>H>0>>+>2>>4>>]>>> >>>X>2>>=>>L>1>>->[>>>>H>0>>+>>H>1>>+>2>>4>>]>>> >>>X>>2>k>>>=>>L>k>>->[>>>5>>(>>H>>k>->1>>>+>>H>k>>)>>->>H>>k>->2>>>->>H>>k>+>1>>>+>8>>16>>]>>> >>k>=>2>,>.>.>.>,>>n>2>>->3>>> >>>X>>n>->4>>>=>>L>>>n>2>>->2>>>->[>>>>H>>>n>2>>->3>>>+>>H>>>n>2>>->2>>>+>2>>4>>]>>> >>>X>>2>k>+>1>>>=>>L>k>>->[>>>5>>(>>H>k>>+>>H>>k>+>1>>>)>>->>H>>k>->1>>>->>H>>k>+>2>>>+>8>>16>>]>>> >>k>=>>n>2>>+>2>,>.>.>.>,>n>->3>>> >>->>X>>n>->2>>>=>>L>>>n>2>>->1>>>->[>>>>>2>H>>>>n>2>>->2>>>+>>>2>H>>>>n>2>>->1>>>->>H>>n>2>>>+>4>>8>>]>>> >>>X>>n>+>1>>>=>>L>>n>2>>>->[>>>>>2>H>>>>n>2>>+>1>>>+>>>2>H>>>n>2>>>->>H>>>n>2>>->1>>>+>4>>8>>]>>> >>>X>>n>+>3>>>=>>L>>>n>2>>+>1>>>->[>>>>H>>>n>2>>+>1>>>+>>H>>>n>2>>+>2>>>+>2>>4>>]>>> >>>X>>2>n>->3>>>=>>L>>n>->2>>>->[>>>>H>>n>->2>>>+>>H>>n>->1>>>+>2>>4>>]>>> >>>X>>2>n>->1>>>=>>L>>n>->1>>>->[>>>>H>>n>->1>>>+>2>>4>>]>>> >>>X>1>>=>>H>0>>+>[>>>>X>0>>+>>X>2>>+>1>>2>>]>>> >>>X>>2>k>+>1>>>=>>H>k>>+>[>>>9>>(>>X>>2>k>>>+>>X>>2>k>+>2>>>)>>->>X>>2>k>->2>>>->>X>>2>k>+>4>>>+>8>>16>>]>>> >>k>=>1>,>.>.>.>,>>n>2>>->3>>> >>>X>>n>->3>>>=>>H>>>n>2>>->2>>>+>[>>>>X>>n>->4>>>+>>X>>n>->2>>>+>1>>2>>]>>> >>>X>>n>->1>>>=>>H>>>n>2>>->1>>>+>[>>>>>11>X>>>n>->2>>>+>>>5>X>>>n>+>1>>>+>8>>16>>]>>> >>>X>n>>=>>H>>n>2>>>+>[>>>>>5>X>>>n>->2>>>+>>>11>X>>>n>+>1>>>+>8>>16>>]>>> >>>X>>n>+>1>>>=>>H>>>n>2>>+>1>>>+>[>>>>X>>n>+>1>>>+>>X>>n>+>3>>>+>1>>2>>]>>> >>>X>>2>k>>>=>>H>k>>+>[>>>9>>(>>X>>2>k>->1>>>+>>X>>2>k>+>1>>>)>>->>X>>2>k>->3>>>->>X>>2>k>+>3>>>+>8>>16>>]>>> >>k>=>>n>2>>+>2>,>.>.>.>,>n>->2>>> >>>X>>2>n>->2>>>=>>H>>n>->1>>>+>[>>>>X>>2>n>->3>>>+>>X>>2>n>->1>>>+>1>>2>>]>>>

当n=8时,上述通用反向变换公式集简化为如下所示: >>>X>0>>=>>L>0>>->[>>>>H>0>>+>2>>4>>]>>> >>>X>2>>=>>L>1>>->[>>>>H>0>>+>>H>1>>+>2>>4>>]>>> >>>X>4>>=>>L>2>>->[>>>>H>1>>+>>H>2>>+>2>>4>>]>>> >>>X>6>>=>>L>3>>->[>>>>>2>H>>2>>+>>>2>H>>3>>->>H>4>>+>4>>8>>]>>> >>>X>9>>=>>L>4>>->[>>>>>2>H>>5>>+>>>2>H>>4>>->>H>3>>+>4>>8>>]>>> >>>X>11>>=>>L>5>>->[>>>>H>5>>+>>H>6>>+>2>>4>>]>>> >>>X>13>>=>>L>6>>->[>>>>H>6>>+>>H>7>>+>2>>4>>]>>> >>>X>15>>=>>L>7>>->[>>>>H>7>>+>2>>4>>]>>> >>>X>1>>=>>X>0>>+>[>>>>X>0>>+>>X>2>>+>1>>2>>]>>> >>>X>3>>=>>H>1>>+>[>>>9>>(>>X>2>>+>>X>4>>)>>->>X>0>>->>X>6>>+>8>>16>>]>>> >>>X>5>>=>>H>2>>+>[>>>>X>4>>+>>X>6>>+>1>>2>>]>>> >>>X>7>>=>>H>3>>+>[>>>>>11>X>>6>>+>>>5>X>>9>>+>8>>16>>]>>> >>>X>8>>=>>H>4>>+>[>>>5>>X>6>>+>>>11>X>>9>>+>8>>16>>]>>> >>>X>10>>=>>H>5>>+>[>>>>X>9>>+>>X>11>>+>1>>2>>]>>> >>>X>12>>=>>H>6>>+>[>>>9>>(>>X>11>>+>>X>13>>)>>->>X>9>>->>X>15>>+>8>>16>>]>>> >>>X>14>>=>>H>7>>+>[>>>>X>13>>+>>X>15>>+>1>>2>>]>>>

当n=4时,要执行的反向变换可以表示为:

(L0,L1,L2,L3;H0,H1,H2,H3)→(X0,X1,X2,X3,X4,X5,X6,X7)

且上述通用反向变换公式集简化为如下所示: >>>X>0>>=>>L>0>>->[>>>>H>0>>+>2>>4>>]>>> >>>X>2>>=>>L>1>>->[>>>>>2>H>>0>>+>>>2>H>>1>>->>H>2>>+>4>>8>>]>>> >>>X>5>>=>>L>2>>->[>>>2>>H>3>>>>+>2>H>>2>>->>H>1>>+>4>>8>>]>>> >>>X>7>>=>>L>3>>->[>>>>H>3>>+>2>>4>>]>>> >>>X>1>>=>>H>0>>+>[>>>>X>0>>+>>X>2>>+>1>>2>>]>>> >>>X>3>>=>>H>1>>+>[>>>>>11>X>>2>>+>>>5>X>>5>>+>8>>16>>]>>> >>>X>4>>=>>H>2>>+>[>>>>>5>X>>2>>+>>>11>X>>5>>+>8>>16>>]>>> >>>X>6>>=>>H>3>>+>[>>>>X>5>>+>>X>7>>+>1>>2>>]>>>

当n=2时,要执行的反向变换可以表示为:

(L0,L1;H0,H1)→(X0,X1,X2,X3)

且上述通用反向变换公式集简化为如下所示: >>>X>0>>=>>L>0>>->[>>>>H>0>>+>2>>4>>]>>> >>>X>3>>=>>L>1>>->[>>>>H>1>>+>2>>4>>]>>> >>>X>1>>=>>H>0>>+>[>>>>X>0>>+>>X>3>>+>1>>2>>]>>> >>>X>2>>=>>H>1>>+>[>>>>X>0>>+>>X>3>>+>1>>2>>]>>>

在优选实施例中,在每层反向变换过程期间,偶数位置的系数(即,X2i值)必须在奇数位置的系数(即,X2i+1值)之前计算。

在替换实施例中,短的T1分解变换用于对全部数据滤波,而不是边缘数据。仅使用短的T1分解变换缩短了计算时间,降低了复杂性,但降低了数据压缩率,因此,图像文件较大。仅使用短的T1分解变换还缩短了解码包含使用本发明编码的图像的图像文件的计算时间,因为在图像重构过程中,只使用对应的短的T1重构变换。

自适应块方式量化

参考图3,由类小波分解变换产生的每个小波系数被量化: >>ver>>x>^>>q>>=>sign>>(>x>)>>[>>(>>>|>x>|>>q>>+>>3>8>>)>>]>>>

其中q是量化因数,并去量化: >ver>>x>^>>=>q>ver>>x>^>>q>>.>>>

根据本发明,使用一个量化表来为每个小波系数的子波段指定一个量化因数,从而控制压缩质量。如果执行亮度值的5层小波变换(执行色度值的4层),在分解中有16个亮度值子波段:

LL5,HL5,LH5,HH5,HL4,LH4,HH4,HL3,LH3,HH3,HL2,LH2,HH2,HL1,LH1,HH1

和13个色度值子波段:

LL4,HL4,LH4,HH4,HL3,LH3,HH3,HL2,LH2,HH2,HL1,LH1,HH1

一个可能的量化表是用于亮度值的:

q=(16,16,16,18,18,18,24,24,24,36,46,46,93,300,300,600)

和用于色度值的:

q=(32,50,50,100,100,100,180,200,200,400,720,720,1440)。

但是,在优选实施例中,量化因数q是根据片中图像特征的密集度,针对图像的每个不同的片自适应选择的。参考图8,我们将子波段LHk,HLk和HHk的入口分别标为uij(k),vij(k)和wij(k)。参考图9,块分类器模块为该片的每个变换层(例如,k=1,2,3,4,5)计算一组块分类值: >>>Y>k>>=>>Σ>ij>>|sup>>u>ij>>(>k>)>sup>>|>>> >>>V>k>>=>>Σ>>i>,>j>>>|sup>>v>ij>>(>k>)>sup>>|>>> >>>W>k>>=>>1>2>>>Σ>>i>,>j>>>|sup>>w>ij>>(>k>)>sup>>|>>>

      Bk=max{Uk,Vk,Wk} >>>S>k>>=>>>1>2>>{sup>>U>k>2sup>>+sup>>V>k>2sup>>+sup>>W>k>2sup>>->>1>3>>>(>>U>k>>+>>V>k>>+>>W>k>>)>>}>>>>

原始图像中的水平和垂直线大部分将分别由uij(k)和vij(k)表示。如果原始图像(即,由块分类器估算的片中)包含许多特征(如,边缘和纹路),则Bk往往较大。因此,Bk值越大,要压缩图像而不产生压缩假象将越难。

使用2类模型,提供两个量化表:

Q0=(16,16,16,18,18,18,36,36,36,72,72,72,144,300,300,600),

Q1=(16,32,32,36,36,36,72,72,72,144,144,144,288,600,600,1200)

其中Q0用于“难以”压缩的块,Q1用于“容易”压缩的块。

根据一个或多个Bk值与一个或多个对应的阈值的比较,内部片(即,不在图像边界上的片)各自被分类为“难”或“易”压缩。例如,如图9所示,一个片的B1可以与第一阈值TH1(如,65)比较(步骤271)。如果B1大于该阈值,则该片被分类为“难”(步骤272)。另外,B5与第二阈值TH2(如,60)比较(步骤273)。如果B5大于该阈值,则该片被分类为“难”(步骤274),否则,将其分类为“易”(步骤275)。然后利用由对应于块(即,片)分类的量化表指定的量化因数将该片的小波系数量化。

在优选实施例中,通过比较B1与另一个高阈值TH1B,例如85,来将边界片分类。B1值大于该阈值的边界片分类为“难以”压缩,否则分类为“容易”压缩。

在另一实施例中,可以指定3个或更多的块类别,并可以定义一组对应的阈值。根据B1和/或其它Bi值与这些阈值的比较,将一个片分类为指定的一种类别,然后选择对应的量化表,以确定要应用于片内的子波段的量化值。如果原始图像包含许多特征,则Sk也往往较大,因此,在一些实施例中,用Sk代替Bk来分类图像片。

划分重要部分与不重要部分的稀疏数据编码

参考图10A和10B,产生了基本图像的一个片的变换系数并量化后,下一步就是编码所产生的片的系数。对每个NQS子波段重复一组计算步骤280。通过编码每个NQS子波段产生的比特流由位平面划分,然后组成一组,以形成存储在图像文件中的比特流,如以上参考图5A-5E所描述。

最大位深度掩码

参考图10A,编码程序或装置确定要被编码的NQS子波段中的数据块的最大位深度(286),这是编码该块中的任何系数值所需的最大位数,此处称为最大位深度。最大位深度值通过计算编码该块中的任意数据值的绝对值所需的最大位数来确定。特别地,最大位深度等于int(log2V)+1,其中V是该块中任意元素的最大绝对值,“int( )”表示具体值的整数部分。每个顶层块的最大位深度存储在对应的比特流中(如,其系数被编码的子波段组的重要比特流)。然后,对当前块调用块程序(288)。块程序的伪码表达示于表2中。

每个块包含4个子块(见图11A)。如图11B所示,块程序确定当前块的每4个子块的最大位深度(300)。然后,其产生并编码最大位深度掩码(301)。该掩码具有4位:m1,m2,m3,m4,分别设置为只有当对应子块的最大位深度等于当前块(父块)的最大位深度m0时等于预定值(如,1),否则设置为等于0。该掩码的数学表达如下:

掩码=(m0==m1)+(m0==m2)+(m0==m3)+(m0==m4)

其中,“+”表示级联。

例如,掩码1000表示只有子块1的最大位深度等于当前块的最大位深度。掩码的值总是在1-15之间。

最大位深度掩码最好用15个标记的霍夫曼(Huffman)表(见表1)编码。从表中可见,对应于最普通掩码型式的4个掩码值只用3个位编码,其中只有一个子块的最大位深度等于父块的最大位深度。

表1编码最大位深度掩码的Huffman表

  掩码  Huffman代码  0001  111  0010  101  0011  1001  0100  011  0101  0010  0110  10000  0111  01001  1000  110  1001  01000  1010  0001  1011  00110  1100  0101  1101  00111  1110  0000  1111  10001

编码子块最大位深度值

此外,步骤301包括对于其最大位深度等于当前块的最大位深度m0的每个子块编码最大位深度值。例如,如图11A和11B所示,如果当前块的最大位深度值为

m1,m2,m3,m4=5,0,3,2

则需要被编码的最大位深度值只有m2,m3和m4,因为从最大位深度掩码和先前存储和编码的当前块的最大位深度m0的值已知最大位深度值m1

应当注意,如果m0=1,则不需要编码子块的最大位深度值,因为从最大位深度掩码可以完全知道那些值。

如果m0不等于1,则对于每个不等于m0的mi,程序如下编码mi值:

mi=0,则程序输出一串长度为m0-1的0;和

否则,程序输出一串长度为m0-mi-1的0,最后是一个1。

例如,如果m0=5,且m1=0,则m1被编码为一串4个0:0000。如果m0=5,且m1=3,则m1被编码为一串(5-3-1=1)1个0,最后是1:01。

以上{m1,m2,m3,m4}={5,0,3,2}的例子中,最大位深度值编码为:

    掩码    m2子块    M3子块    m4子块    111    0000    01    001

然后,如果被编码的NQS子波段的系数要存储在两个或多个比特流中,则该块的最大位深度的编码表达被划分为两部分或更多,每一部分包含特定范围的位平面的信息内容。为了解释容易,我们将解释最大位深度值和掩码以及系数如何被划分为两部分,此处称为重要部分和不重要部分。同样的技术可以用于将这些值划分为对应于重要、中等重要和不重要(最不重要)部分的三个位平面范围。

对于每个NQS子波段,不包括最后一组NQS子波段,系数位平面被划分为两个或三个范围。当具有两个位平面范围时,选择或预定一个划分该两个范围的位平面阈值。每个“系数值”(包括其最大位深度值)小于该位平面阈值的“不重要”部分存储在“不重要”比特流206中(见图5D),其它系数存储在对应的重要比特流206中。位平面范围的选择通常是根据经验进行的,但使用不同的位平面范围编码大量图像,然后选择一组位平面范围,从而平均起来实现根据不同分辨率级的比特流对数据的特定划分。例如,所述特定划分可以是将数据大约相等地在第一分辨率级与第二分辨率级的比特流之间划分。可选地,所述特定划分可以要求第二分辨率级的比特流包含第一(较低)分辨率级的比特流4倍的数据。

首先,我们将说明将最大位深度值划分为重要和不重要部分,然后,说明编码和划分最小块的系数值。

如果一个块的最大位深度m0小于阈值,则该子块最大位深度掩码和最大位深度值的每一位存储在基本图像子文件的不重要部分中。否则,最大位深度掩码存储在重要部分中,然后,每个编码子块最大位深度值被划分为重要和不重要部分。该划分如下进行:如果mi≥阈值,则整个编码最大位深度值mi被包括在子图像子文件的重要部分中。否则,除mi=m0外,每个最大位深度值mi的最先的m0-阈值个位存储在子图像子文件的重要部分中,而每个mi的其它位(如果有)存储在子图像子文件的不重要部分中。

如果要将系数的位平面划分为三个范围,则选择或预定两个位平面阈值,并使用与上述相同的技术将最大位深度掩码和值分配在三个比特流中。

编码最小块的系数值

然后,如果当前块的大小(即,当前块中的系数值数量)不是预定的最小数(302-否),例如,4,则对当前块的每4个子块调用块程序(303)。这是递归程序调用。对子块调用块程序的结果,该子块的最大位深度掩码和值被编码并插入被编码的子波段组的一对比特流中。如果子块不是预定的最小尺寸,则对其子块递归调用块程序。

当预定最小尺寸的块被块程序处理时(302-是),该块的最大位深度和子块的最大位深度值被编码后(301),该块的系数被编码,编码值划分为重要和不重要部分(304)。

不等于0的每个系数包括一个POS/NEG位,以指示其符号,以及数量为最大位深度的附加位。此外,除了符号位外,每个非0系数的MSB(最重要位)已经从该系数的最大位深度值已知,实际上等于1。因此,该MSB不需要编码(或从另一个观点,其已经用最大位深度值进行了编码)。

对于每个最小块的系数,如果该系数的最大位深度小于阈值,则该系数的全部位,包括其符号位,在不重要部分中。否则,符号位在重要部分中,而且,如果有的话,最不重要位(LSB)的阈值数以上的最重要位(MSB)也包括在重要部分中。换句话说,底部“阈值”数的位分配到不重要部分中。但是,如果最大位深度等于阈值,则符号位仍然分配到重要部分中,而其它位分配在不重要部分中。

此外,如上所述,因为每个系数的绝对值的MSB已经从最大位深度掩码和值已知,该位不存储。同样,值为0的系数也不被编码,因为它们的值从该系数的最大位深度值完全已知,所述最大位深度值为0。

例如(见图11C),考虑一个块的4个系数{31,0,-5,-2}和一个阈值3。该块的值用二进制表示为POS 11111,0,NEG 101,NEG 10。首先,0值系数的非0系数的MSB被排除掉,从而得到:POS 111,NEG01,NEG 0。然后,阈值数量的最不重要位(除了符号位)被分配到不重要部分,剩下的分配到重要部分:

重要部分:POS 1,NEG

不重要部分:111,01,NEG 0。

重要部分包含系数值31和-5的最重要的位,而不重要部分包含系数值31和-5的其它位以及系数值-2的全部位。

表2

块编码程序的伪代码

//Encode MaxbitDepth mi for each subblock i:Determine MaxbitDepth mi for each subblock i=1,2,3,4mask=(m0==m1)+(m0==m2)+(m0==m3)+(m0==m4)//where the“+”in the above equation represents concatenationEncode and store mask using Huffman tableFor i=1 to 4{ If mi≠m0{  if mi=0{   output a string of m0 O′s}  else{ //mi≠0   output a string of m0-mi 0′s,followed by a 1}  }}//Divide the encoded MaxbitDepth mask and MaxbitDepth between significant and//insignificant portions as follows:								If m0<threshold{ output the MaxbitDepth mask and MaxbitDepth values to insignificant bitstream}else{ output the MaxbitDepth mask to significant bitstream; for i=1 to 4{  if mi=m0{output nothing for that mi}  else{  if mi≥threshold{output mi to significant bitstream}   else{  output the first m0-threshold bits of mi to the significant bitstream  and output the remaining bits of mi(if any)in the insignificant  bitstream}  }   } }//Encode Coefficient values if block is of minimum sizeIfsize of current block is>minimum block size{ //coefficient values are denoted as ci for i=1 to 4{   Call Block(subblock i);   } else{ //size of current block is≤minimum block size  C=number of coefficients in block;//ifblock size is already known,skip this step  for i=1 to C{  if mi<threshold{   output all bits of ci to insignificant bitstream;   }  else{  output sign(ci)to the significant bitstream;   if mi>threshold{  #M=mi-threshold-1;//#M≥0  output the #M most significant bits to the significant bitstream;  }   output all remaining least significant bits of ci to the insignificant bitstream;   }  }//endof coefficient processing loop   } //end of main else clause  }//end of procedureReturn

如上所述,如果系数的位平面要划分为3个范围,则选择或预定2个位平面阈值,且使用上述相同的技术将编码的系数值在3个比特流之间分配。

图像重构

要以等于或低于一个图像文件中的基本图像被编码的分辨率级从该图像文件重构图像,则该图像文件在所述分辨率级以下的每个比特流都被解压缩和去量化。然后,以逐片形式对重构的变换系数进行反向变换,从而以特定的分辨率级重构图像数据。

参考图12,图像重构过程根据从图像文件接收的图像数据重构一个图像(320)。执行图像重构的程序或设备的用户,或者代表用户的控制程序操作,选择或指定一个等于或低于图像数据中包含的最高分辨率级的分辨率级R(322)。读取该图像数据文件的标题以确定图像中的片的数量和排列(L,K),以及图像重构程序可能需要的其它信息(323)。步骤324和326以给定的分辨率级重构图像,并且在步骤328,重构的图像被显示或存储在存储设备中。图13A和13B提供了该程序的更详细视图,用于在特定子图像级解码特定片的数据。

在一个优选实施例中,如图12所示,与指定分辨率级相关的图像文件中的数据首先被重组为一片接一片的子文件,每个片子文件包含该片的比特流(324)。然后,每片的数据被处理(326)。读取标题信息,以确定该片的每个顶层子波段块的最大位深度、用于量化每个子图像子波段的量化因数等。以指定分辨率级重构图像所需的每个NQS子波段的变换系数按照子波段顺序被解码。解码任意一个NQS子波段中的系数的解码过程的细节将在下面参考图13B讨论。通过应用每个子波段的量化因数(从基本图像标题中标识的Q表获得),对所获得的解码系数进行去量化。然后,对产生的去量化系数应用反向变换。注意,从去量化的变换系数重构图像的类小波反向变换已经在上面描述过。

参考图13A,为了以指定的分辨率级解码一个片t的数据,重复一组步骤340,以解码该片的每个NQS子波段,不包括该指定分辨率级所不需要的NQS子波段,也不包括该指定分辨率级所不需要的包含解码系数值的位平面的任何比特流。参考图5D和5E,只有该指定分辨率级所需要的基本图像的比特流被解码。对于被解码的片的特定顶层块(对应于一个NQS子波段),该顶层块的最大位深度或者从片阵列的标题(如果数据已经被重组为片阵列)确定,或者从该子波段的起始比特流的数据确定(346),然后,调用解码块程序,以解码当前块的数据(348)。

特定子波段的数据解码后,该子波段的解码变换系数可以利用相应的量化因数被去量化(350)。可选地,去量化可以在全部子波段的全部系数都解码后再执行。

一旦NQS子波段的全部系数都去量化,就执行反向变换,以再生特定分辨率级的当前片t的图像数据。

在一个可选实施例中,图12的步骤S324不使用,且图像文件中的数据不被重组为片阵列。相反,逐个子波段组对图像数据进行处理,要求恢复的全部片的变换系数在初始重构步骤中被累计和存储。解码特定子波段组的特定片的一个顶层块的数据的步骤340对每个片重复。特别地,对于特定子波段组的特定片的特定顶层块,该顶层块的最大位深度或者从该片阵列的标题,或者从子波段组的比特流的起始数据来确定(346),然后调用解码块程序来解码当前块的数据(348)。

参考图13B,解码块程序(其可以用于前述段落中的优选实施例和可选实施例)首先解码可应用的编码数据阵列中的最大位深度数据,以确定当前块的每个子波段的最大位深度(360)。根据被解码的NQS子波段,一个块的最大位深度数据可能在一个比特流中,也可能被分割在两个或三个比特流中,如上所述,因此,来自所有要求的比特流中的可应用最大位深度数据位将被读取和解码。如果当前块的大小大于预定的最小块大小(362-否),则对当前块的每个子块调用解码块程序(363)。这是递归程序调用。对子块调用解码块程序的结果,该子块的最大位深度值被解码。如果该子块不是预定的最小尺寸,则对其子块递归调用解码块程序,依此类推。

当由解码块程序处理了预定最小尺寸的块时(362-是),该块的系数被解码。根据被解码的子波段组,一个块的解码系数可能在一个比特流中,也可能被分割在两个或三个比特流中,如上所述,因此,来自所有要求的比特流中的可应用数据位将被读取和解码。

参考图13A,对于指定分辨率级中包括的全部NQS子波段,再生每片的量化变换系数。当这些系数被去量化后,对每个片应用反向变换(352),这已经描述过。

使用非交替的水平和垂直变换的实施例

在另一个优选实施例中,图像的每个片首先通过多个(如,5个)水平分解变换层处理,然后通过类似数目的垂直分解变换层处理。等价地,垂直变换层可以先于水平变换层应用。在本发明的图像变换方法的硬件实现中,变换层的这一顺序变换具有下列优点:(A)减少数据阵列旋转的次数,或(B)避免对于在工作图像阵列中切换行和列的角色的电路的需要。当执行随后的水平变换时,第二水平变换应用于由第一水平变换产生的低频系数的最左阵列,第三水平变换应用于由第二水平变换产生的低频系数的最左阵列,依此类推。这样,第二至第N水平变换应用的数据就是水平和垂直变换交替的变换方法中的数据的两倍。但是,该额外的数据处理在硬件实现上基本上不带来任何附加的处理时间,因为在这样的实现中,水平滤波器同时应用于工作图像阵列的全部行。

垂直变换连续地应用于工作图像阵列的连续较小的子阵列。当图像数据被所有变换层(水平和垂直)变换后,上述的量化和编码步骤被应用于产生的变换系数,以完成图像编码过程。

如上所述,不同的(通常是较短的)变换滤波器可以应用于靠近被处理的阵列边缘的系数,通常较长的变换滤波器应用于远离这些阵列边缘的系数。在中心使用较长的变换滤波器提供了比较长滤波器更好的数据压缩,而较短的变换滤波器消除了对相邻片的数据和系数的需求。

数码相机结构

参考图14,示出根据本发明的数码相机系统400的一个实施例。该数码相机系统400包括图像捕获设备402,如CCD传感器或任何其它适合捕获图像作为数字编码信息阵列的机构。假设图像捕获设备包括一个模数转换(ADC)电路,用于将模拟图像信息转换为数字值。

工作存储器404通常是随机存取存储器,从图像获取设备402接收数字编码的图像信息。更普遍地,它用于在相机的数据(即,图像)处理电路406对图像进行变换、压缩和处理期间,存储数字编码的图像。数据处理电路406在一个实施例中包括硬件逻辑和一组状态机,用于执行一组预定的处理操作。

在可选实施例中,数据处理电路406可以部分或全部实现为快速通用微处理器和一组软件程序。但是,至少使用2000年可用的技术,很难以足够快的速度处理和存储全分辨率图像(例如,具有1280×840像素的全色图像),使相机能够每秒摄取比如20个画面,这是一些商业产品所要求的。如果通过并行处理技术或良好设计的软件,低功率的通用图像数据微处理器能够支持数码相机需要的快速图像处理,那么数据处理电路106可以使用这样的通用微处理器实现。

经过数据处理电路406处理后,每个图像通常在非易失性存储设备408中被存储为“图像文件”,设备408通常用“闪”(即,EEPROM)存技术实现。非易失性存储设备408最好实现为活动存储器卡。这允许相机用户拔掉一个存储器卡,插入另一个,然后继续拍照。但是,在一些实施例中,非易失性存储设备408不是活动的,在这种情况下,相机通常具有一个数据接入端口410,使相机能够与其它设备相互传递图像文件,如通用台式机。具有非易失性存储设备408的数码相机也可以包括数据接入端口410。

数码相机400包括一组按钮412,用于给出相机指令。除了图像获取按钮,通常还有若干个其它按钮,用于选择下一个要拍摄的画面质量级、滚动存储器中的图像以便在相机的图像观察器414上观看、从非易失性存储设备408中删除图像、以及调用相机的其它功能。这样的其它功能可能包括使用闪光灯、与计算机之间传递图像文件。在一个实施例中,这些按钮是机电接触开关,而在其它实施例中,至少部分按钮可以实现为用户接口显示器416或图像观察器414上的触摸屏按钮。

用户接口显示器416通常实现为(A)与图像观察器414独立的LCD显示设备,或(B)图像观察器414上显示的图像。菜单、用户提示、以及关于存储在非易失性图像存储器408中的图像的信息可以显示在用户接口显示器416上,不管该显示是如何实现的。

图像被获取、处理并存储在非易失性存储设备408中后,可以从存储器408中检索出相关的图像文件,以便在图像观察器上观看。更具体地,图像文件由其变换的压缩形式转换回到适合在帧缓冲器418中存储的数据阵列。帧缓冲器中的图像数据显示在图像观察器414上。日期/时间电路420用于跟踪当前的日期和时间,存储的每个图像都打上拍摄图像的日期和时间戳。

还参考图14,数码相机400最好包括数据处理电路406,用于执行一套预定的基本操作,如执行将变换应用于一定量的图像数据所需的乘法和加法操作,以及一组状态机430-442,用于控制数据处理电路,以执行一组预定的图像处理操作。在一个实施例中,数码相机中的状态机如下:

一个或多个状态机430,用于变换、压缩和存储从相机的图像获取机构接收的图像。该图像有时称为“取景器”图像,因为被处理的图像通常是相机的图像观察器414上看到的图像。该组状态机430是初始产生存储在非易失性存储设备408中的每个图像文件的状态机。在拍摄之前,用户使用相机的按钮412来选定图像要存储的质量级。在一个优选实施例中,图像编码状态机430实现本发明的一个或多个特征。

一个或多个状态机432,用于解压缩、反变换和在计算机的图像观察器上显示存储的图像文件。由解压缩、反变换和去量化图像数据产生的重构图像存储在相机的帧缓冲器418中,使其能够在图像观察器414上观看。

一个或多个状态机434,用于更新和显示存储在非易失性存储设备408中的图像数目的计数。该图像计数最好显示在用户接口显示器416上。该组状态机434通常还将指示非易失性存储设备408未被图像文件占用的百分比,或相机进一步存储图像的能力的其它指示。如果相机没有独立的接口显示器416,这些存储器状态信息可以显示在图像观察器414上,如,叠加在图像观察器414中显示的图像上,或显示在图像观察器414上独立于主要的观察器图像的一个区域中。

一个或多个状态机436,用于实现相机的“取景器”模式,其中当前由图像获取机构402“看见”的图像显示在图像观察器414上,使得用户可以看见按下图像获取按钮后将被存储的图像。这些状态机可能在执行适当的修补步骤以改善原始图像数据后,将从图像获取设备402接收的图像传输到相机的帧缓冲器418。

一个或多个状态机438,用于从非易失性存储设备408向外部设备如通用计算机下载图像。

一个或多个状态机440,用于从外部设备如通用计算机向非易失性存储设备408上载图像。这使得相机可以用作看图设备,以及用作传输存储器卡上的图像文件的设备。

可选实施例

总的来说,在可用工作存储器不足以将整个图像作为单个片来处理时,或者在产品必须在不同的环境中,包括低存储器环境中工作时,或者在图像需要通过低带宽通信通道传递时,或者在必须或最好提供不同分辨率级的图像时,本发明在任何这样的“节约存储”环境中将是有用的。

在流型数据实现中,如接收使用本发明编码的压缩图像的网络浏览器中,一个图像的子图像可能被匆忙解码和解压缩,因为该图像的其它更高级子图像的数据正被接收。结果,压缩图像的一个或多个较低分辨率级版本可能在通过通信通道接收到(和/或解码)图像的最高分辨率版本的数据之前被重构并显示。

在另一个可选实施例中,可以使用不同于上述类小波变换的变换。

在可选实施例中,图像片可以按照不同顺序处理。例如,图像片可以从右到左处理,而不是从左到右处理。同样,图像片可以从底部行开始,逐步向着顶部行处理。

本发明可以实现为计算机程序产品,包括嵌入计算机可读存储介质中的计算机程序。例如,该计算机程序产品可以包含图2所示的程序模块。这些程序模块可以存储在CD-ROM、磁盘存储产品、或任何其它计算机可读数据或程序存储产品中。计算机程序产品中的软件模块还可以通过互联网或通过用载波传输计算机数据信号(其中嵌入所述软件模块)来以电子方式分布。

尽管参考几个具体实施例对本发明进行了描述,但上述说明只是示例性的,不应认为是对本发明的限制。本领域的技术人员可以进行各种修改而不偏离由所附权利要求定义的本发明的主旨和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号