发明名称 一种基于动态光照图的增强现实系统光照算法
摘要 为实现增强现实系统中光照的实时准确性,提出了一种基于动态光照图的快速光照算法。该方法通过采集视频图像中校准物体的像素亮度,计算出摄像机的信号放大量和信号偏置,并利用动态更新的光照图所记录的环境光照信息实现虚、实场景之间的一致光照,且能够适应光照变化的场景。
申请公布号 CN101710429B 申请公布日期 2012.09.05
申请号 CN200910044517.X 申请日期 2009.10.12
申请人 湖南大学 发明人 陈浩;孙建华;赵黎明;张西广;谭茗;曾平
分类号 G06T15/50(2006.01)I;G06T15/60(2006.01)I 主分类号 G06T15/50(2006.01)I
代理机构 代理人
主权项 1.一种基于动态光照图的增强现实系统光照计算方法,该方法通过采集视频图像中校准物体的像素亮度,计算出摄像机的信号放大量和信号偏置,并根据光照图所记录的各个法线方向上的环境光照情况生成虚拟物体的表面明暗贴图,然后计算光源所在的方位,生成增强现实(AR,Augmented Reality)场景的阴影,以实现视频图像中的场景与虚拟物体的一致光照,且根据每一帧图像对光照图进行更新,从而能够适应光照变化的场景,其特征在于包括以下步骤:步骤1、创建场景的光照模型,具体包括以下步骤:1.1、所选择的校准图案是具有漫反射表面的,它向各个方向上反射的光线是相同的,在时刻t,校准图案上的某个点所反射的光线数量取决于该点的表面法线方向n<sub>t</sub>;1.2、为了能够准确的计算法线方向,以某个点为中心的一个小面片π来代替该点,则面片π在时刻t所接收的光能为:<img file="FSB00000815461300011.GIF" wi="705" he="149" />(式1)其中,Ω<sub>l</sub>表示光源L的能量,d<sub>l</sub>表示它的方向;1.3、在已经计算得到校准图案表面各点的反射系数的情况下,用式2来表示面片π在t时刻的象素亮度I(π,t):I(π,t)=gρ<sub>π</sub>x<sub>t</sub>+b    (式2)其中,ρ<sub>π</sub>表示面片π上各点的反射系数的平均值,用π上的平均亮度来计算,g和b分别表示摄像机的信号放大量和信号偏置;步骤2、动态光照图的生成,具体包括以下步骤:2.1、要计算出面片π的亮度,就必须先计算光能Ω,空间中某个位置,以该位置为中心的某个球面上的每个点的法线方向上所接收到的光能与法线方向n有关,将式1中的x<sub>π,t</sub>看成是n的函数,用一个光照图M(n)来表示该位置的光照情况,在这种情况下,虚拟物体表面的象素亮度表示成:I(v,t)=gρ<sub>v</sub>M<sub>t</sub>(n<sub>v</sub>)+b    (式3)式中的ρ<sub>v</sub>表示虚拟物体表面的反射系数,在虚拟物体建模时定义;2.2、由式3知,要得到虚拟物体表面的亮度,就必须先求出摄像机的g和b,通过式2求得,式2中有三个未知量,即g、b和x<sub>t</sub>,令g′=1/g,b′=1/b,则式2表示为-I(π,t)g′+ρ<sub>π</sub>x<sub>t</sub>+b′=0    (式4)2.3、将不同时刻所得到的式4放在一起就形成了一个方程组,如式5: <img file="FSB00000815461300021.GIF" wi="1125" he="284" />(式5)2.4、方程组式5表述成式6,为简化表达式,用I<sub>tn</sub>表示式5中的I(π,t<sub>n</sub>):<img file="FSB00000815461300022.GIF" wi="1309" he="282" />(式6)2.5、将方程组式6转化成矩阵形式如式7:<img file="FSB00000815461300023.GIF" wi="1070" he="413" />(式7)解式7得到多个特征值和多个特征向量,而与最小特征值相对应的特征向量就是要求的值,解向量中的(x<sub>t1</sub>,x<sub>t2</sub>,...,x<sub>tn</sub>)即为形成M(n)所需的各个法线方向的光能值;步骤3、动态光照图的更新,具体包括以下步骤:3.1、当校准物体的空间位置变化或者光源发生改变的时候,虚拟物体的光照情况也会随之改变,因此,必须对光照图进行及时的更新,以适应环境光照的变化,令M<sub>t</sub>(n)为t时刻的光照图,则t+1时刻的光照图用下面的等式来表示:M<sub>t+1</sub>(n)=(1-f(n))M<sub>t</sub>(n)+f(n)x<sub>t+1</sub>    (式8)其中,<img file="FSB00000815461300024.GIF" wi="1237" he="233" />(式9)3.2、式8中的x<sub>t+1</sub>是t+1时刻所观察到的法线方向为n<sub>t+1</sub>的面片所接收的光能,式9中的s是一个模糊常量,事实上,当光照突然发生变化时,该方法不能够及时地更新整个光照图,而是每一帧都只能采样到一个法线方向并更新该法线方向上的光能值,而其它法线方向上的光能值保持不变,因此,在建立了光照图以后,对每一个新的帧都要进行更新,从而最大程度的达到及时更新的效果;步骤4、光源位置分析,具体包括以下步骤:4.1、当真实环境中只有一个光源的时候,能够很容易模拟出光源的位置信息,扫描整个光照图,找出与最大光能值相对应的法线方向n<sub>s</sub>,确定该方向就是光源所在的方向;4.2、当真实环境中存在不只一个光源的时候,用多个虚拟光源来模拟真实光源,给定一个较大的亮 度值I<sub>c</sub>作为临界亮度值,当某个法线方向上的光能值大于或等于I<sub>c</sub>时,就认为该方向上可能存在一个光源;反之,则认为该方向上不存在光源;4.3、对于每个可能存在光源的法线方向n,进行如下操作以确定该方向上是否真的存在光源:首先定义一个较小的角度ε来表示临界角度;然后逐个扫描光照图中的法线方向,当某个法线方向n′与法线方向n的夹角<img file="FSB00000815461300031.GIF" wi="145" he="78" />小于临界角度ε时,将n′看作是n的邻近法线方向;最后,判断各个邻近法线方向上的光强度是否小于n上的光强度,如果所有邻近法线方向上的光强度都小于n上的光强度,则法线方向n上必定存在光源,否则,不存在光源,这个过程用式10表示:<img file="FSB00000815461300032.GIF" wi="1047" he="200" />其中,I、I<sub>n</sub>、I<sub>n′</sub>分别表示环境中的光能、法线方向n上的光能和法线方向n上的光能;步骤5、阴影生成,具体包括以下步骤:5.1、所用的虚拟物体是由许多三角形面片组成的,每一个面片对应着三个顶点v<sub>1</sub>(x<sub>1</sub>,y<sub>1</sub>,z<sub>1</sub>)、v<sub>2</sub>(x<sub>2</sub>,y<sub>2</sub>,z<sub>2</sub>)、v<sub>3</sub>(x<sub>3</sub>,y<sub>3</sub>,z<sub>3</sub>),这三个顶点确定空间中一个唯一的平面:ax+by+cz+d=0    (式11)其中,a=y<sub>1</sub>*(z<sub>2</sub>-z<sub>3</sub>)+y<sub>2</sub>*(z<sub>3</sub>-z<sub>1</sub>)+y<sub>3</sub>*(z<sub>1</sub>-z<sub>2</sub>);b=z<sub>1</sub>*(x<sub>2</sub>-x<sub>3</sub>)+z<sub>2</sub>*(x<sub>3</sub>-x<sub>1</sub>)+z<sub>3</sub>*(x<sub>1</sub>-x<sub>2</sub>);c=x<sub>1</sub>*(y<sub>2</sub>-y<sub>3</sub>)+x<sub>2</sub>*(y<sub>3</sub>-y<sub>1</sub>)+x<sub>3</sub>*(y<sub>1</sub>-y<sub>2</sub>);d=-(x<sub>1</sub>*(y<sub>2</sub>*z<sub>3</sub>-y<sub>3</sub>*z<sub>2</sub>)+x<sub>2</sub>*(y<sub>3</sub>*z<sub>1</sub>-y<sub>1</sub>*z<sub>3</sub>)+x<sub>3</sub>*(y<sub>1</sub>*z<sub>2</sub>-y<sub>2</sub>*z<sub>1</sub>));5.2、假设光源的位置为(x<sub>p</sub>,y<sub>p</sub>,z<sub>p</sub>),则在确定了某个面片的平面参数后,利用式12来判断该面片是否正对着光源:S=a*x<sub>p</sub>+b*y<sub>p</sub>+c*z<sub>p</sub>+d    (式12)若计算出的S值大于0,则该面片正对着光源;否则,该面片背对着光源;5.3、逐个扫描虚拟物体中的三角形面片,当某个三角形面片正对着光源时,依次判断它的三条边是否为临界边:如果与某条边相邻的面片不存在,或者背对着光源,那么这个边就是临界边;否则,该边不为临界边;5.4、所有的临界边构成了虚拟物体上能够投射阴影的区域的边界,在已知场景中其它物体的3D结构后,利用计算机图形学中的阴影体方法生成该物体投射到其它物体上的阴影,阴影体方法产生阴影有两个步骤:首先连接光源与各个临界边的两个端点,并延长至较远处,这样就形成由临界边的两个端点和延长线的末端所确定的半无限四边形,所有这样的四边形构成了物体的阴影体;然后根据阴影体与场景中其它物体的交线确定物体投射到其它物体上的阴影区域。 
地址 410082 湖南省长沙市岳麓山