专利名称:基于图像的场景再照明方法
技术领域:
本发明涉及的是一种基于图像的再照明方法,特别是一种快速有效的基于图像的场景再照明方法,属于计算机运用领域。
背景技术:
基于图像的再照明技术(IBL)是为了解决计算机图形学中基于图像的建模和场景生成技术(IBMR)中光线控制的难题而提出的,它的主要思路是给定某个方向的平行光照射条件,通过插值预先采样的参考图像可以获得相应的场景图像。这种技术很好地解决了IBMR中的光线控制,但同时它也带来了新的技术挑战。由于场景生成的质量直接取决于预采样图像的数目,因而IBL技术需要的原始数据量非常大。为了保证生成图像没有重叠,沿经线和纬线的采样总数往往要大于12000,也即要采集12000幅图像。如此庞大的数据量对于存储和传输所带来的负担之重是显而易见的。所以需要设计一个有效快速的数据压缩和提取的算法。经文献检索,目前只有一种基于球谐波的压缩方法出现而且是IBL(基于图像的再照明技术)技术提出者黄田津提出的,T.T.Wong,C.W.Fu,P.A.Heng and C.S.Leung.The Plenoptic IlluminationFunction.(光照全光函数)IEEE Trans.on Multimedia,4(3),pp.361-371,2002,该文主要利用球谐波方法来压缩IBL中的海量数据,该方案存在最大问题是无法处理大批量数据。因为球谐波是一种全局基,提取它们需要同时处理所有数据,这在实际应用中往往无法做到,同时这种方法无法反应数据的局部变化和多尺度特点。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于图像的场景再照明方法,该方法是基于整数变换形式的球小波变换和整数小波变换技术的IBL数据压缩方法(简称SWT-IWT IBL),使其能处理大批量数据,并在此基础上实现快速有效的场景再照明。
本发明是通过以下技术方案实现的,本发明首先对原始数据进行YIQ格式(Y亮度(Luninance),I(Inphase)代表颜色,Q(Quad-rature)代表颜色)变换,再进行全光函数值初始化,其次采用球小波变换技术对采样图像进行在位变换,然后对系数图像进行比特分配,接着用小波变换技术对球小波变换系数图像进行压缩,最后基于压缩文件的场景再照明方法生成最终的场景图像。本发明的核心是数据压缩部分。
以下对本发明方法作进一步的说明,具体内容如下1、对原始数据进行YIQ变换。
利用以下公式将RGB格式的原始图像转换为YIQ格式的图像文件YIQ=0.2990.5870.1440.596-0.275-0.3210.212-0.5230.311RGB---(1)]]>2、全光函数值初始化。
在YIQ变换后,接着进行球面三角形中心点位置对应的光照条件对应的全光函数值初始化,对所有象素点而言也就是图像重采样。首先根据采样图像数N确定单位球面三角形分解的最大层次d,使得20×4d与N的差的绝对值最小。然后通过表征球面三角形分解的数据结构,将球面正20面体进行d层等级均匀分解,每分解一次,当前的球面三角形被均匀划分为四个球面三角形,中间位置的小三角形称为T0,其它三个依次称为T1,T2和T3,从而得到较高精确度的下一级球面近似方案。较低的分辨率对应较小的分解层次,最低分辨率时球面由20个三角形构成,对于d级分解的球面,一共有20×4d个小球面三角形。
对球面的三角形分解过程,本发明设计了一个表征球面三角形分解的数据结构,它的成员变量包括三角形的顶点、中心点位置,父节点指针,子节点指针,三角形中心点对应的函数值以及一些操作函数。对基于三角形分解的球面来说,存在许多这样的数据结构。为了便于操作和管理,对球面正二十面体各个面都分配一个编号从0到19。每进行一次分解,对所出现的球面小三角形也进行顺序编号,分解前编号为t的三角形它的四个子三角形T0,T1,T2和T3的编号分别为4t,4t+1,4t+2,和4t+3,比如编号为3的三角形进行一次分解时,它的四个子三角形分别编号为12,13,14和15。利用这些编号和分解层次就可以定位某一个球面三角形了。对应这个编号,设计了一个线性链表结构。开始时,链表中保存的是最小分辨率下的20个球三角形的数据结构指针,每进行一次分解(所有三角形都进行相同层次的分解),链表元素就要进行更新,所有元素都是新的一次分解后的球面小三角形的数据结构指针。各元素的插入顺序和球三角形的编号规则一样,即编号为t的三角形的四个子三角形的数据结构的指针在链表中的位置依次为4t,4t+1,4t+2,和4t+3。这样球小波分解和重构就完全可以根据这个链表的结构关系来进行。20×4d个球三角形对应的图像值可以利用各三角形的中心位置作为插值点在原始数据中插值来得到。对沿经线和纬线均匀间隔采样的原始数据的重采样可以采用双线性插值方法;对非均匀采样则可以采用散布点插值方法来完成。
在球面分解的过程中还需建立各个球面的数据结构之间的邻接关系。为此用组合的四叉树结构来表征球三角形等级分解(又称为金字塔形分解)中的这些关系。每个树节点是一个球三角形的数据结构指针,如前面所说这个树节点的数据结构包含该三角形的各顶点以及中心点的数据结构、父节点和子节点的指针以及在四叉树中的当前位置深度。各顶点数据结构包含该节点的空间位置。正二十面体的每个表面(球三角形)对应为一个四叉树的根节点(根节点的深度为0),一共有20个四叉树,合在一起形成组合的四叉树结构。为了建立邻接关系和避免重复生成某个节点的数据结构,程序初始化时,应对20个最顶层的三角形数据结构,即20个四叉树根节点之间进行点边匹配,如果有两个三角形的两个顶点是重合的则各自定义对方为自己的一个邻居。对一个三角形进行均匀分解需要生成3个新的顶点,也即该三角形三边的中点,在生成之前要先查询这个三角形的邻居中是否已生成了这3个顶点,如果没有则生成新的顶点数据结构对象,有则返回相应的顶点指针,然后利用这3个新生成或查询到的顶点指针和原有3个顶点指针来生成4个下一级球三角形数据结构对象,将它们的父节点指针指向分解前的大三角形,它们的子节点指针置0,每个子三角形的深度设置为父节点深度加1。
3、采用球小波变换技术对采样图像进行在位变换。
本发明中采用了Bio-Haar小波变换。初始状态对应0级球小波分解状态或最大分辨率状态,在获得初始的20×4d幅图像后,根据用户指定的最大球小波分解深度d′(d′<d)从最大分辨率d开始进行球小波分解一直分解到d-d′级为止,每一级别的球小波分解都是从线性链表头开始,从第一个元素开始依次扫描到最后一个元素,依次提取4幅系数图像(为了便于理解,以下称IBL中的原始图像球小波变换的中间值为系数图像,在0级球小波分解时,系数图像就是原始图像),每个图像的文件名编号间隔为4j(j为当前分解级别,d-d′≤j≤d),对这四个元素对应的系数图像进行球小波分解,然后存入各自原来的位置。这样直到第j级分解全部完成。重构步骤与这刚好相反,对应某一级(设为第j级)的重构时,从第一个元素开始依次扫描到最后一个元素,每次提取4个元素对应的上一级重构对应的系数,各元素符号之间的间隔为4d-j。对这四个元素对应的上一级重构后的系数进行球小波重构,然后存入各自原来的位置。这样直到第j级重构全部完成。在球小波分解和重构过程中都是用整幅图像为基本单位,数据的存放是根据最大分解层次时的球三角形的编号按顺序进行的。每一次球小波分解的关系如下式所示λj,*=(ΣI=03λj+1,l)/4---(2)]]>γj,l=λj+1,l-λj,*]]>其中l=1,2,3(3)其中λj+1,l(l=0,1,2,3)表示读入的第j+1级分解的系数图像, 表示一次小波分解后(第j级小波分解系数图像)的近似部分系数图像,γj,l(l=1,2,3)表示细节部分系数图像,在算法实现中, 与λj+1,0使用同一个变量,γj,l(l=1,2,3)与λj+1,l(l=1,2,3)使用相同的变量,也即变换是“在位进行”的,分解完毕将分解图像存入原来读入的位置,然后读入下面4幅图(或上一级球小波分解图)进行球小波分解,直到当前级别球小波分解全部完成。
相应的球小波重构算法用以下两式来描述λj+1,l=γj,l+λj,*]]>其中l=1,2,3 (4)λj+1,0=4λj,*-Σl=13λj+1,l---(5)]]>4、对系数图像进行比特分配。
在球小波分解完毕后,根据给定比特率,对每个四叉树对应的N=4d个系数图像,进行以下的比特分配过程。首先计算每个分解系数系列的方差,利用下式来求取各分解系数序列的给定比特率Ri=R+0.5log2(αiσi2)-{1NΣj=1N0.5log2(αjσj2)}---(6)]]>其中R为目标比特率,Ri为第i个数据源所获得的比特分配结果,α为一常数,对编号为N的整数倍的分解系列取α值为2.7其它编号的分解系列取αi为4.5。
5、用小波变换技术对球小波变换系数图像进行压缩。
根据上述步骤获得的比特分配数,接下来对分解系列进行整数小波变换和嵌入式零树小波编码。整数小波变换可以采用5/3整数小波变换或者9-7整数小波变换。前者运算步骤少所需存储空间也小,但性能比后者略差。5/3整数小波变换形式为 逆变换为 其中d表示细节部分,s表示近似部分。9-7整数小波变换形式为 相应的逆变换形式为 对球小波变换图像进行整数小波变换后,再利用嵌入式零树小波(EZW)编码方法根据比特分配结果进行最终编码。
6、基于压缩文件的场景再照明方法生成最终的场景图像。
最后使用最近邻插值法来生成最终的场景图像。对任意单位球面位置(θk,φk),通过计算球面德拉内(Delaunay)三角形可以找到N′个最近邻点,先对这些近邻点对应的压缩文件进行小波解压缩,然后进行球小波重建以及YIQ到RGB的反变换得到相应的恢复图像,然后I(θk,φk)可以计算如下Ik=Σj=1N′Ijγkj2Σj=1N′1γkj2---(19)]]>因为考虑的是三角形的均匀分割情况,所以该过程可以简化为对单位球面上的某个点寻找与它所在的小三角形共某个顶点的所有邻接三角形,其中这个顶点是它所在三角形的三个顶点中离它最近的点。在原始采样数非常大以及相应的球面三角形分解深度越来越大时,最近邻点数目可以相应地减少甚至只取给定点所在的三角形即可。这样给定某个光照条件,利用上述压缩方法压缩的数据来生成相应的场景图像时,首先重建最近邻点对应的采样图像,然后对重建图像进行插值就可以得到想要的场景图像。对球小波分解深度为d的压缩数据,重建某幅图像需要解压缩1+3*d幅压缩的球小波变换图像,实际上许多邻居点都拥有相同的父节点或祖父节点或曾祖父节点,只要两个邻居点位于同一个四叉树下,重建这两个邻居点对应的采样图像时就必然要重复解压缩某些压缩数据以及重复进行球小波逆变换,为了减少这种重复劳动,在IBL过程中应该记录一些中间变量。为此设计了一个辅助的数据结构用来指明哪些中间变量需要记录以及哪些中间变量已经记录。最近邻点都已确定后,下一步是确定有几个主树(要涉及的四叉树)以及哪些近邻点属于哪个主树,然后对每个涉及到的四叉树(这里称为主树)生成一个辅助树。辅助树也是一个四叉树,它的分解深度和节点数与主树相同。对每个要涉及到的主树,确定哪些节点需要重建,哪些节点的数据需要保留(当两个以上近邻点重建时都需要重建的节点数据需要保留),分别就这些状态对辅助树的节点设置一些标识。然后再根据辅助树来重建所有近邻点,对每个辅助树的近邻点重建而言,在重建过程中每涉及到一个节点都要先查询该节点的状态,如果该节点已经被重建过,则直接取出堆栈中的数据跳到下一步,如果没有被重建,则分别读出该节点的兄弟节点的压缩数据进行解压缩,然后进行球小波组合,如果该节点需要保留中间变量,则开辟堆栈空间,存储球小波重构后的结果供下一个近邻点重建时使用。
本发明与基于球谐波技术的压缩方法相比,主要区别有1、采用球小波技术对采样数据进行变换,能量重新分配。因为球小波变换技术是局部变换,所以它与采样数据多少无关,球谐波技术则是全局变换无法对海量数据进行操作,又由于球小波变换的局部性,使得它能有效地表达采样数据的局部突变,而球谐波方法中,原始数据的局部变化会导致全部的球谐波系数改变,不能利用少量的球谐波来有效表达这种变化。2.采用整数小波变换技术对整数球小波变换图像进行压缩,压缩技术是基于嵌入式小波零树结构的,该技术具有很高的压缩性能比。同时由于方法的全部运算都是基于整数变换的,所以在压缩速度上远远优于球谐波方法,选用合适的插值方法,场景生成速度也可以与球谐波方法接近。而且本发明方法的初始化时间非常短暂,场景生成要使用的数据都是实时解压缩的,因而需要的内存空间消耗极小,球谐波的方法则需要一个很长的初始化时间以及很大的内存开销。在球小波变换中,设计了3个全新的数据结构,第一个是表征球面三角形分解的数据结构,第二个是基于球小波分解的光照可调全光函数组成的图像的存储和提取数据结构(隐藏树结构),球面分解过程的组合四叉树结构,完全表示了球面的三角形近似方案的空间拓扑结构,可以用在其它相关的三维物体表面建模方案中;用线性链表方式隐藏了球面三角形等级分解的拓扑关系,使得球小波分解和重构可以不依赖于表征球面三角形分解过程的组合四叉树结构而进行。无需将每个象素的全光函数单独提出。第三个是场景生成时的辅助树结构,指明记录场景生成时需要使用的某个四叉树中的相应节点以及哪些中间变量需要保留,从而减少重复解压缩和重构所带来的时间和资源浪费。
本发明具有实质性特点和显著进步,对平滑或非平滑光照条件下的场景数据压缩,使用本发明方法都能获得很高的压缩/重建性能比,它能快速有效地压缩光照可调节的全光函数数据,能快速生成任意光照条件下的场景图像,从而调节IBMR技术中的光照条件。
具体实施例方式
结合本发明方法的内容提供实施例,具体内容如下根据本发明方法,对两组光照可调节的图像数据进行了压缩和图像生成实验,作为比较,同时使用了JPEG算法进行了压缩和生成。第一组数据的场景是一个香炉,沿经线和纬线的采样数分别为30和40,一共1200幅图像,每幅图像大小为512×512。进行SWT-IWT压缩时,最大球面分解深度选为3,球面三角形分解后,最大分辨率时一共有20×43=1280个小三角形,用双线性插值法获取各小三角形的图像值(设每个小三角形内各点对应方向的场景图像都一样,也即球面三角形对应的函数值相同),这个重采样的结果可以获得1280幅图像,根据前面所描述的各三角形的编号顺序给它们编号并存盘,然后进行3级球小波分解,再进行比特分配和EZW编码。第二组数据是一个阁楼场景,沿经线和纬线的采样数分别为15和20,一共300幅图像。最大球面分解深度选为2,球面三角形分解后,最大分辨率时一共有20×42=320个小三角形,同样地对它们进行球小波分解和小波压缩。
为了评价方法的性能,随机给定100个不同光照条件,利用不同目标比特率的压缩数据生成了100幅场景图像,并利用未压缩数据生成相应的100幅图像,用基于未压缩的图像作为参考图像,计算基于压缩的场景图像的峰值信噪比作为评价算法压缩性能的标准。实验结果如下当目标比特率为0.5bit时,第一组数据的压缩率为62∶1,生成图像平均PSNR为37.25 dB,第二组数据的压缩率为48∶1,生成图像平均PSNR为34.27 dB。而且无论从压缩率还是从图像生成质量上看,SWT-IWT算法都比JPEG算法要优越。
权利要求
1.一种基于图像的场景再照明方法,其特征在于首先对原始数据进行YIQ格式变换,再进行全光函数值初始化,其次采用球小波变换技术对采样图像进行在位变换,然后对系数图像进行比特分配,接着用小波变换技术对球小波变换系数图像进行压缩,最后基于压缩文件的场景再照明方法生成最终的场景图像。
2.根据权利要求1所述的基于图像的场景再照明方法,其特征是,所述的全光函数值初始化,具体如下在YIQ变换后,进行球面三角形中心点位置对应的光照条件对应的全光函数值初始化,对所有象素点而言即为图像重采样,首先根据采样图像数N确定单位球面三角形分解的最大层次d,使得20×4d与N的差的绝对值在所有的d中最小;然后通过表征球面三角形分解的数据结构,将球面正20面体进行d层等级均匀分解,每分解一次,当前的球面三角形被均匀划分为四个球面三角形,最低分辨率时球面由20个三角形构成,对于d级分解的球面,一共有20×4d个小球面三角形;对球面正二十面体各个面都分配一个编号,每进行一次分解,对所出现的球面小三角形也进行顺序编号,通过这些编号和分解层次定位某一个球面三角形,对应编号,设计一个线性链表结构,球小波分解和重构根据线性链表结构关系来进行,20×4d个球三角形对应的图像值利用各三角形的中心位置作为插值点在原始数据中插值来得到;对沿经线和纬线均匀间隔采样的原始数据的重采样采用双线性插值方法;对非均匀采样则采用散布点插值方法。
3.根据权利要求2所述的基于图像的场景再照明方法,其特征是,表征球面三角形分解的数据结构,它的成员变量包括三角形的顶点、中心点位置,父节点指针,子节点指针,三角形中心点对应的函数值以及操作函数。
4.根据权利要求2所述的基于图像的场景再照明方法,其特征是,对应编号的线性链表结构,开始时,链表中保存的是最小分辨率下的20个球三角形的数据结构指针,每进行一次分解,链表元素就进行更新,所有元素都是新的一次分解后的球面小三角形的数据结构指针,各元素的插入顺序和球三角形的编号规则一样。
5.根据权利要求2所述的基于图像的场景再照明方法,其特征是,在球面分解的过程中采用组合的四叉树结构来表征球三角形等级分解中各个球面的数据结构之间的邻接关系,每个树节点是一个球三角形的数据结构指针,这个树节点的数据结构包含该三角形的各顶点以及中心点的数据结构、父节点和子节点的指针以及在四叉树中的当前位置即深度,各顶点数据结构包含该节点的空间位置,正二十面体的每个表面对应为一个四叉树的根节点,根节点的深度为0,一共有20个四叉树,合在一起形成组合的四叉树结构。
6.根据权利要求2或5所述的基于图像的场景再照明方法,其特征是,为了建立邻接关系和避免重复生成某个节点的数据结构,程序初始化时,应对20个最顶层的三角形数据结构,即20个四叉树根节点之间进行点边匹配,如果有两个三角形的两个顶点是重合的则各自定义对方为自己的一个邻居;对一个三角形进行均匀分解需要生成3个新的顶点,也即该三角形三边的中点,在生成之前要先查询这个三角形的邻居中是否已生成了这3个顶点,如果没有则生成新的顶点数据结构对象,有则返回相应的顶点指针,然后利用这3个新生成或查询到的顶点指针和原有3个顶点指针来生成4个下一级球三角形数据结构对象,将它们的父节点指针指向分解前的大三角形,它们的子节点指针置0,每个子三角形的深度设置为父节点深度加1。
7.根据权利要求1所述的基于图像的场景再照明方法,其特征是,所述的采用球小波变换技术对采样图像进行在位变换,具体如下采用Bio-Haar小波变换,初始状态对应0级球小波分解状态或最大分辨率状态,在获得初始的20×4d幅图像后,根据用户指定的最大球小波分解深度d′,d′<d,从最大分辨率d开始进行球小波分解一直分解到d-d′级为止,每一级别的球小波分解都是从线性链表头开始,从第一个元素开始依次扫描到最后一个元素,依次提取4幅系数图像或上一级球小波变换的图像,每个图像的文件名编号间隔为4j,j为当前分解级别,d-d′≤j≤d,对这四个元素对应的系数图像或上一级分解后的系数进行球小波分解,然后存入各自原来的位置,这样直到第j级分解全部完成;重构步骤与这刚好相反,对应某一级,设为第j级的重构时,从第一个元素开始依次扫描到最后一个元素,每次提取4个元素对应的上一级重构对应的系数,各元素符号之间的间隔为4d-j,对这四个元素对应的上一级重构后的系数进行球小波重构,然后存入各自原来的位置,这样直到第j级重构全部完成;在球小波分解和重构过程中都是用整幅图像为基本单位,数据的存放是根据最大分解层次时的球三角形的编号按顺序进行的。
8.根据权利要求1所述的基于图像的场景再照明方法,其特征是,所述的对系数图像进行比特分配,具体如下在球小波分解完毕后,根据给定比特率,对每个四叉树对应的N=4d个系数图像,进行比特分配过程首先计算每个分解系数系列的方差,再利用公式求取各分解系数序列的给定比特率。
9.根据权利要求1所述的基于图像的场景再照明方法,其特征是,所述的用小波变换技术对球小波变换系数图像进行压缩,具体如下根据获得的比特分配数,对分解系列进行整数小波变换和嵌入式零树小波编码,整数小波变换采用5/3整数小波变换或者9-7整数小波变换;对球小波变换图像进行整数小波变换后,再利用嵌入式零树小波编码方法根据比特分配结果进行最终编码。
10.根据权利要求1所述的基于图像的场景再照明方法,其特征是,所述的基于压缩文件的场景再照明方法生成最终的场景图像,具体如下使用最近邻插值法来生成最终的场景图像,对任意单位球面位置,通过计算球面德拉内三角形找到N′个最近邻点,先对这些近邻点对应的压缩文件进行小波解压缩,然后进行球小波重建以及YIQ到RGB的反变换得到相应的恢复图像;为减少重复解压缩和重构所带来的时间和资源浪费,设计了一个辅助的数据结构,记录场景生成时需要使用的某个四叉树中的相应节点以及哪些中间变量需要保留,辅助树也是一个四叉树,它的分解深度和节点数与主树相同。
全文摘要
一种基于图像的场景再照明方法属于计算机运用领域。本发明首先对原始数据进行YIQ格式变换,再进行全光函数值初始化,其次采用球小波变换技术对采样图像进行在位变换,然后对变换图像进行比特分配,接着用小波变换技术对球小波变换图像进行数据压缩,最后基于压缩文件的场景再照明方法生成最终的场景图像。本发明方法对平滑或非平滑光照条件下的场景数据压缩,使用本发明方法都能获得很高的压缩/重建性能比,它能快速有效地压缩光照可调节的全光函数数据,能快速生成任意光照条件下的场景图像,从而调节IBMR技术中的光照条件。
文档编号G06T9/40GK1441388SQ0311629
公开日2003年9月10日 申请日期2003年4月10日 优先权日2003年4月10日
发明者王泽 , 朱贻盛 申请人:上海交通大学