一种实现高动态光照范围的方法及系统的制作方法

文档序号:6557592阅读:276来源:国知局
专利名称:一种实现高动态光照范围的方法及系统的制作方法
技术领域
本发明涉及图像处理领域,特别是涉及一种实现高动态光照范围的方法及系统。
背景技术
计算机在表示图像时,以及显示器显示图像时是用8bit(256)级来区分图像的亮度的,但显然以几百为单位的亮度级别是无法再现真实的光照情况的。例如未经过高动态光照范围(HDR)技术处理的普通图形文件中的每个像素限制在0至255的亮度范围内。一张普通的白天风景图片中,白云和太阳可能都呈现同样的亮度(都是纯白色),但实际上白云与太阳的亮度不可能一样。
HDR技术是一种图像处理技术。支持Direct X9.0标准的显卡可以采用HDR技术将源浮点纹理压缩为不低于64位的整数纹理。64位整数纹理(每个像素由64位来保存)有RGBA四个通道,分别占16位,并以整数值保存。通过公式R(16int)=R(float)/16int_max×65535对R通道进行压缩(其他通道相同),在CPU对源浮点纹理压缩前,任一通道在程序中都是0到65535的整数值;在压缩并输出到显卡中后,由显卡表示0到1的亮度值,其中0表示最暗,1表示最亮,精度为1/655535。例如R通道在程序中的值为18,则在显卡中它的值为18/655535。在显卡对压缩纹理解压后,可以在显示器上显示超出0到1的亮度范围。
应用HDR技术的目的是为了联合使用曝光技术,以达到更好的图像效果。曝光是对场景的整个颜色和亮度进行调整,曝光度E>0。对于非HDR进行曝光,则会产生色块或使整个场景变暗,得到的图像与现实不匹配;曝光对于HDR才有意义。
以下分别描述对进行过HDR处理的图像进行曝光,以及对32位纹理进行曝光的情况。
对进行过HDR处理的图像进行曝光。HDR在游戏中特指HDR特效,HDR特效是与Vertex Shader/Shader Model/Soft shadows/Parallax Mapping等并列的图像渲染特效。若要实现HDR特效,使用的显卡必须支持Direct X9.0标准,例如nVIDIA的显卡必须是Ge Force6系列或更高,ATI显卡至少是Radeon9500或以上。参见图1所示,为未曝光的HDR图像,参见图2所示,为曝光后的HDR图像,显然曝光后光影效果更好。
目前,还有一些显卡不支持Direct X9.0标准,即不支持HDR,只能采用32位纹理。32位纹理指纹理的每个像素由32位来保存,每个像素有RGBA四个通道,分别占8位,并以整数值保存,即其中任一通道在程序中都是0到255的整数值,而在显卡中表示0到1的颜色值,0表示最暗,1表示最亮,精度为1/255。例如R通道在程序中的值为16,则在显卡中它的值为16/255。参见图3所示,在非HDR的32位纹理图像中,若E=1,则可正常显示。但对32位纹理直接进行曝光,参见图4所示,E=0.3时,整个画面变暗;参见图5所示,E=5时,整个画面出现色块。
综上所述,若用户使用的是不支持Direct X9.0标准的显卡,则无法采用HDR技术对图像进行处理,进而无法采用曝光技术产生更加逼真的光影效果。

发明内容
本发明提供一种实现高动态光照范围的方法及系统,用以解决不支持Direct X9.0标准的显卡无法采用高动态光照范围技术对图像进行处理的问题。
本发明方法用于进行图像处理,包括下列步骤在压缩时,将源浮点纹理压缩为高位整数纹理,并将该高位整数纹理等分成低位整数纹理;在解压时,将各个低位整数纹理合并为高位整数纹理,以实现高动态光照范围的效果。
所述整数纹理和源浮点纹理均包括4个通道,在高位整数纹理被等分后,其任一通道均包括由高至低的N个通道片段,所述任一通道的各个通道片段的整数纹理为R(0)=0; 2≤n≤(N-1); 其中,R(H)为最高位的通道片段的整数纹理;R(FLOAT)为源浮点纹理的任一通道;16int_max为解压后亮度的最大值;h为高位整数纹理每一通道的位数;l为低位整数纹理每一通道的位数;n的取值由小到大分别表示由高到低的通道片段;R(L)为最低位的通道片段的整数纹理。
将64位整数纹理等分成2个32位整数纹理后,其任一通道均包括由高至低的2个8位通道,其中,任一通道的高8位通道片段的整数纹理为 低8位通道片段的整数纹理为 将128位整数纹理等分成4个32位整数纹理后,其任一通道均包括由高至低的4个8位通道,其中,任一通道的各个通道片段的整数纹理为
所述将各个低位整数纹理合并为高位整数纹理是对4条通道分别进行合开。
通过下述公式对4个通道分别进行合并,并解压缩R=[Σm=1N(R(m)/2^[h-(N-m+1)l])]×16int_max;]]>其中,m的取值由小到大分别表示由高到低的通道片段。
将2个32位整数纹理合并为64位整数纹理,该64位整数纹理的任一通道合并并解压后为R=[Σm=12(R(m)/2^[16-(2-m+1)8])]×16int_max.]]>将4个32位整数纹理合并为128位整数纹理,该128位整数纹理的任一通道合并并解压后为R=[Σm=14(R(m)/2^[32-(4-m+1)8])]×16int_max.]]>本发明的实现高动态光照范围的系统,包括压缩单元,用于将源浮点纹理压缩为高位整数纹理;解压单元,用于对高位整数纹理解压缩;分割单元,用于将所述压缩单元输出的高位整数纹理等分成低位整数纹理;合并单元,用于将分割单元输出的低位整数纹理合并为高位整数纹理,并输出到解压单元。
所述高位整数纹理最低为64位整数纹理。
本发明有益效果如下本发明方法在用户使用的显卡不支持Direct X9.0标准时,先通过CPU将源浮点纹理压缩为高位整数纹理(64位以上);之后,将该高位整数纹理等分成用户使用的显卡可以支持的低位整数纹理,例如将64位整数纹理等分成32位整数纹理;在显卡对整数纹理解压缩时,再将各个低位整数纹理合并,以模拟64位整数纹理。这样不支持Direct X9.0标准的显卡也可模拟处理64位整数纹理,并支持HDR技术,从而可以对处理后的图像进行曝光,以达到更好的光影效果。
为了支撑本发明方法,本发明还提供了一种实现高动态光照范围的系统,包括压缩单元,用于将源浮点纹理压缩为高位整数纹理;解压单元,用于对高位整数纹理解压缩;分割单元,用于将所述压缩单元输出的高位整数纹理等分成低位整数纹理;合并单元,用于将分割单元输出的低位整数纹理合并为高位整数纹理,并输出到解压单元。


图1为未曝光的HDR图像;图2为曝光后的HDR图像;图3为非HDR的32位纹理未曝光的图像;图4为非HDR的32位纹理,以E=0.3曝光后的图像;图5为非HDR的32位纹理,以E=5曝光后的图像;图6为本发明的系统结构示意图;图7为本发明方法步骤流程图;图8为源浮点纹理效果图;图9为方法实例一中,64位整数纹理被等分成两个32位整数纹理示意图;图10为方法实例一中,高8位通道片断效果图;图11为方法实例一中,低8位通道片断效果图;图12为方法实例一中,合并并解压后,以E=0.1曝光后的效果图;图13为方法实例一中,合并并解压后,以E=0.5曝光后的效果图;图14为方法实例一中,合并并解压后,以E=1.0曝光后的效果图;图15为方法实例一中,合并并解压后,以E=2.0曝光后的效果图;图16为方法实例一中,合并并解压后,以E=5.0曝光后的效果图。
具体实施例方式
为了使不支持Direct X9.0标准的显卡可以采用高动态光照范围HDR技术对图像进行处理,从而结合曝光技术达到更好的光影效果,本发明提供了一种实现高动态光照范围的系统,参见图6所示,其包括依次相连的压缩单元、分割单元、合并单元和解压单元。
所述压缩单元,设置在CPU中,用于将源浮点纹理压缩为高位整数纹理。为了支持HDR技术,所述高位整数纹理为64位整数纹理,也可为128位整数纹理或更高。
所述分割单元,可以设置在CPU中,用于将所述压缩单元输出的高位整数纹理等分成低位整数纹理。所述低位整数纹理根据用户使用的显卡而定,通常为32位整数纹理。
所述合并单元,可以设置在显卡中,用于将分割单元输出的低位整数纹理合并为高位整数纹理,并输出到解压单元。
所述解压单元,设置在显卡中,用于对高位整数纹理解压缩,以实现HDR效果。
应用上述系统,本发明提供了一种实现高动态光照范围的方法,参见图7所示,包括下列主要步骤S1、将源浮点纹理压缩为高位整数纹理。
S2、将高位整数纹理等分成低位整数纹理。
S3、将各个低位整数纹理合并为高位整数纹理。
S4、对高位整数纹理解压缩。
以下通过两个实例具体描述本发明方法。
方法实例一将64位整数纹理等分成32位整数纹理。
S101、将源浮点纹理压缩为高位整数纹理。
CPU从程序中获取源浮点纹理(源浮点纹理效果,参见图8),并通过压缩单元将源浮点纹理压缩为64位整数纹理。源浮点纹理和整数纹理均包括RGBA四个通道,每个通道的压缩处理过程均相同,以下以R通道为例。
压缩单元利用公式R(FLOAT)/16int_max将源浮点纹理的R通道纹理R(FLOAT),压缩为64位整数纹理中的R通道整数纹理(16位)。其中16int_max为解压后亮度的最大值,通常取100。
S102、将高位整数纹理等分成低位整数纹理。
CPU通过分割单元将64位整数纹理等分成两个32位整数纹理,参见图9所示,64位整数纹理的每一个16位通道均被等分成两个8位通道片断。每个通道的分割处理过程均相同,以下以R通道为例。
分割单元利用下述公式等分R通道R(0)=0; 2≤n≤(N-1); 其中,R(H)为最高位的通道片段的整数纹理;R(FLOAT)为源浮点纹理的R通道;16int_max为解压后亮度的最大值;h为高位整数纹理每一通道的位数;l为低位整数纹理每一通道的位数;n的取值由小到大分别表示由高到低的通道片段;N为高位整数纹理的任一通道包括的通道片段数量;R(L)为最低位的通道片段的整数纹理。
本例中,h=16,l=8,N=2;由于本例中只存在R(H)和R(L)两个通道片段的整数纹理,所以将h、l和N的值带入相应的公式得到 参见图10所示,为16int_max=100时,R(H)的纹理效果图;参见图11所示,为16int_max=100时,R(L)的纹理效果图。
S103、将各个低位整数纹理合并为高位整数纹理。
CPU将所述两个32位整数纹理输出到显卡中。显卡通过合并单元对4条通道分别进行合并。每个通道的合并处理过程均相同,以下以R通道为例。
合并单元通过公式Σm=1N(R(m)/2^[h-(N-m+1)l])]]>将R通道合并。其中,m的取值由小到大分别表示由高到低的通道片段。本例中合并后的64位整数纹理的R通道为Σm=12(R(m)/2^[16-(2-m+1)8]).]]>至此得到了模拟64位整数纹理的4条通道。
S104、对高位整数纹理解压缩。
显卡通过解压单元对4条通道分别进行解压缩。每个通道的解压处理过程均相同,以下以R通道为例。
解压单元将合并单元输出的R通道纹理与16int_max相乘,即R=[Σm=12(R(m)/2^[16-(2-m+1)8])]×16int_max,]]>得到解压后的输出纹理。
之后,可采用曝光技术对输出的纹理进行曝光,参见图12、图13、图14、图15和图16所示,分别为E=0.1、E=0.5、E=1.0、E=2.0和E=5.0的效果图。
方法实例二将128位整数纹理等分成32位整数纹理。
S201、将源浮点纹理压缩为高位整数纹理。
CPU从程序中获取源浮点纹理,并通过压缩单元将源浮点纹理压缩为128位整数纹理。源浮点纹理和整数纹理均包括RGBA四个通道,每个通道的压缩处理过程均相同,以下以R通道为例。
压缩单元利用公式R(FLOAT)/16int_max将源浮点纹理的R通道纹理R(FLOAT),压缩为128位整数纹理中的R通道整数纹理(32位)。
S202、将高位整数纹理等分成低位整数纹理。
CPU通过分割单元将128位整数纹理等分成4个32位整数纹理后,128位整数纹理的每一个32位通道均包括由高至低的4个8位通道片断。每个通道的分割处理过程均相同,以下以R通道为例。
分割单元利用下述公式等分R通道
R(0)=0; 2≤n≤(N-1); 其中,R(H)为最高位的通道片段的整数纹理;R(FLOAT)为源浮点纹理的R通道;16int_max为解压后亮度的最大值;h为高位整数纹理每一通道的位数;l为低位整数纹理每一通道的位数;n的取值由小到大分别表示由高到低的通道片段;N为高位整数纹理的任一通道包括的通道片段数量;R(L)为最低位的通道片段的整数纹理。
本例中,h=32,l=8,N=4;所以将h、l和N的值带入相应的公式得到 S203、将各个低位整数纹理合并为高位整数纹理。
CPU将所述4个32位整数纹理输出到显卡中。显卡通过合并单元对4条通道分别进行合并。每个通道的合并处理过程均相同,以下以R通道为例。
合并单元通过公式Σm=1N(R(m)/2^[h-(N-m+1)l)]]>将R通道合并。其中,m的取值由小到大分别表示由高到低的通道片段。本例中合并后的128位整数纹理的R通道为Σm=14(R(m)/2^[32-(4-m+1)8]).]]>至此得到了模拟128位整数纹理的4条通道。
S204、对高位整数纹理解压缩。
显卡通过解压单元对4条通道分别进行解压缩。每个通道的解压处理过程均相同,以下以R通道为例。
解压单元将合并单元输出的R通道纹理与16int_max相乘,即R=[Σm=14(R(m)/2^[32-(4-m+1)8])]×16int_max,]]>得到解压后的输出纹理。
之后,可采用曝光技术对输出的纹理进行曝光。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种实现高动态光照范围的方法,用于进行图像处理,其特征在于,包括下列步骤在压缩时,将源浮点纹理压缩为高位整数纹理,并将该高位整数纹理等分成低位整数纹理;以及在解压时,将各个低位整数纹理合并为高位整数纹理,以实现高动态光照范围的效果。
2.如权利要求1所述的方法,其特征在于,所述整数纹理和源浮点纹理均包括4个通道,在高位整数纹理被等分后,其任一通道均包括由高至低的N个通道片段,所述任一通道的各个通道片段的整数纹理为R(0)=0; 2≤n≤(N-1); 其中,R(H)为最高位的通道片段的整数纹理;R(FLOAT)为源浮点纹理的任一通道;16int_max为解压后亮度的最大值;h为高位整数纹理每一通道的位数;l为低位整数纹理每一通道的位数;n的取值由小到大分别表示由高到低的通道片段;R(L)为最低位的通道片段的整数纹理。
3.如权利要求2所述的方法,其特征在于,将64位整数纹理等分成2个32位整数纹理后,其任一通道均包括由高至低的2个8位通道,其中,任一通道的高8位通道片段的整数纹理为 低8位通道片段的整数纹理为
4.如权利要求2所述的方法,其特征在于,将128位整数纹理等分成4个32位整数纹理后,其任一通道均包括由高至低的4个8位通道,其中,任一通道的各个通道片段的整数纹理为
5.如权利要求2所述的方法,其特征在于,所述将各个低位整数纹理合并为高位整数纹理是对4条通道分别进行合并。
6.如权利要求5所述的方法,其特征在于,通过下述公式对4个通道分别进行合并,并解压缩R=[Σm=1N(R(m)/2^[h-(N-m+1)/])]×16int_max;]]>其中,m的取值由小到大分别表示由高至低的通道片段。
7.如权利要求6所述的方法,其特征在于,将2个32位整数纹理合并为64位整数纹理,该64位整数纹理的任一通道合并并解压后为R=[Σm=12(Rm/2^[16-(2-m+1)8])]×16int_max.]]>
8.如权利要求6所述的方法,其特征在于,将4个32位整数纹理合并为128位整数纹理,该128位整数纹理的任一通道合并并解压后为R=[Σm=14(R(m)/2^[32-(4-m+1)8])]×16int_max.]]>
9.一种实现高动态光照范围的系统,包括压缩单元,用于将源浮点纹理压缩为高位整数纹理;解压单元,用于对高位整数纹理解压缩;其特征在于,所述系统还包括分割单元,用于将所述压缩单元输出的高位整数纹理等分成低位整数纹理;合并单元,用于将分割单元输出的低位整数纹理合并为高位整数纹理,并输出到解压单元。
10.如权利要求9所述的系统,其特征在于,所述高位整数纹理最低为64位整数纹理。
全文摘要
本发明公开了一种实现高动态光照范围的方法及系统,用以解决不支持DirectX9.0标准的显卡无法采用高动态光照范围技术对图像进行处理的问题。本发明方法包括在压缩时,将源浮点纹理压缩为高位整数纹理,并将该高位整数纹理等分成低位整数纹理;在解压时,将各个低位整数纹理合并为高位整数纹理,以实现高动态光照范围的效果。通过本发明的实施,不支持DirectX9.0标准的显卡也可模拟处理64位整数纹理,并支持HDR技术,从而可以对处理后的图像进行曝光,以达到更好的光影效果。
文档编号G06T9/00GK101038660SQ200610065760
公开日2007年9月19日 申请日期2006年3月14日 优先权日2006年3月14日
发明者刘皓 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1