基于Phong模型的视频流体光照计算方法与流程

文档序号:11953663阅读:354来源:国知局
基于Phong模型的视频流体光照计算方法与流程

本发明涉及视频流体重仿真中光照计算的方法。采用Phong模型、利用流体视频样例帧高度计算的结果,利用线性拟合方法求取流体场景的环境光和漫反射成分,在此基础上,更新流体表面高度信息,进一步通过聚类方法得到场景的镜面反射指数,从而可以计算场景的镜面反射成分。



背景技术:

真实感流体重仿真目前已经广泛地被应用于游戏设计、流体动画仿真、电影的特效设计、流体军事仿真等领域,关于视频流体光照计算的研究已经取得了很多的成果。限于流体场景中粒子运动的复杂性,给视频流体光照计算的问题带来了复杂性,近些年人们开始从事于该问题的研究。怎样充分利用流体视频中的强度及流体表面几何信息,进一步有效地计算出视频流体光照参数,从而实现真实感绘制,这就是视频流体反向工程中亟待解决的问题。

近年来,一些研究工作是基于双向反射分布函数(BRDF)、Torrance–Sparrow光照模型,或者Phong模型的研究,但是,如何自动计算场景的光照仍是研究中的一个难点问题,特别是,流体运动的复杂性给场景光照问题的研究带来了难度。

目前人们在视频流体光照计算问题的研究中,存在的问题主要是:有些工作是利用优化的方法和手段得到流体场景的光照信息,这类研究措施对实际应用来说主要是不便使用,还有就是利用这些现有方法计算流体场景光照时,难以得到理想的结果。在最近出现的研究方法中,需要人们进行预处理,这不便于解决流体场景光照计算的问题。可见,快速方便地计算流体场景光照参数,仍然是一个亟待解决的实际问题,尤其是在视频流体反向工程问题的研究中,流体场景光照参数计算问题是至关重要的问题。



技术实现要素:

本发明的目的是针对现有技术的不足,并针对视频流体反向工程中真实感重仿真的需要,提供一种视频流体光照计算方法,利用该方法能够实现视频流体反向工程中流体重仿真的真实感光照效果。

实现本发明目的的具体技术方案是:一种基于Phong模型的视频流体光照计算方法,其特征在于,对于视频流体采用RGB色彩模型,将流体视频的样例帧F中任意像素P的颜色分量表示为R、G和B,那么根据Phong模型有:

<mrow> <mi>R</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>)</mo> </mrow> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>d</mi> </mrow> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msup> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>V</mi> <mo>)</mo> </mrow> <mi>&alpha;</mi> </msup> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>s</mi> </mrow> <mi>R</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>G</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>)</mo> </mrow> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>d</mi> </mrow> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msup> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>V</mi> <mo>)</mo> </mrow> <mi>&alpha;</mi> </msup> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>s</mi> </mrow> <mi>G</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>B</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>)</mo> </mrow> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>d</mi> </mrow> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msup> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>V</mi> <mo>)</mo> </mrow> <mi>&alpha;</mi> </msup> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>s</mi> </mrow> <mi>B</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

其中,和是环境光在RGB三个通道的分量,称和为环境光成分;

和是漫反射率,和分别是漫反射在RGB三个通道的强度;记为记为记为并称和为漫反射成分;

Lm是场景中任意一点到光源方向的单位法向量,N是流体表面任意一点的单位法向量,V是视线方向的单位向量,Lm与V之间角平分线方向为E,Rm是流体表面任意一点反射光方向的单位向量,V是视线方向的单位向量.根据V与Rm之间的夹角是N与E间夹角的两倍,利用计算公式(1)到(3)中Lm与N的点积Lm·N;和是镜面反射率,和分别是镜面反射在RGB三个通道的光强;α是镜面反射指数;记为记为记为称和为镜面反射成分;

利用像素P的高度hP代替公式(1)至(3)中Rm和V点积Rm·V,那么,由(1)到(3)得:

<mrow> <mi>R</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>G</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>B</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>

利用以下步骤有效计算流体场景的光照参数:

(1)、计算Phong光照模型的环境光成分及漫反射成分,具体地:

(a)利用流体视频样例帧F中的所有满足(7)式的像素构造集合L;

Dp≤TL (7)

Dp是像素P的强度,Dp计算为:

Dp=0.299*R+0.587*G+0.114*B (8)

式(7)中TL是强度阈值,其计算为TL=(Dmax-Dmin)*2/9+Dmin,Dmax和Dmin分别是F中所有像素强度的最大值和最小值;

(b)利用集合L,计算流体场景的环境光及漫反射成分,具体地:

对于L中任意一个像素Q,根据公式(4)到(6)可得:

<mrow> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>Q</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>-</mo> <msubsup> <mi>I</mi> <mi>Q</mi> <mi>R</mi> </msubsup> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>Q</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>-</mo> <msubsup> <mi>I</mi> <mi>Q</mi> <mi>G</mi> </msubsup> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>Q</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>-</mo> <msubsup> <mi>I</mi> <mi>Q</mi> <mi>B</mi> </msubsup> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> </mrow>

其中,和是Q在RGB三个通道的强度分量;

计算流体表面高度hQ,并利用L中的所有像素的信息,对于(9)、(10)和(11)中环境光成分和以及漫反射成分和采用线性拟合方法求解;

(2)、更新流体表面高度信息

将步骤(1)中得到的R通道的环境光成分及漫反射成分代入公式(9),重新计算每个粒子高度hQ,将hQ记为hR;将G通道的环境光成分及漫反射成分代入公式(10),重新计算每个粒子高度hQ,将hQ记为hG;将B通道的环境光成分及漫反射成分代入公式(11),重新计算每个粒子高度hQ,将hQ记为hB;最后,粒子的高度信息更新为hn=(hR+hG+hB)/3;

(3)、镜面反射指数及镜面反射成分计算

(a)利用F中的所有满足(12)式的像素构造集合H;

Dp≥TH (12)

TH是强度阈值,计算为TH=(Dmax-Dmin)*8/9+Dmin

(b)利用H计算镜面反射指数及镜面反射成分

对于H中任两个像素P1和P2,如果P1的颜色为R1、G1和B1,P2的颜色为R2、G2和B2,P1的高度假设为h1,P2的高度假设为h2;根据Phong光照模型:

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mn>1</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>R</mi> <mn>1</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mn>2</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>R</mi> <mn>2</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>14</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mn>1</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mn>1</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>15</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mn>2</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mn>2</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>16</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mn>1</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>17</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mn>2</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> </mrow>

由式(13)和(14)能够从R通道得到镜面反射指数的结果αR

<mrow> <msub> <mi>&alpha;</mi> <mi>R</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mi>lg</mi> <mrow> <mo>(</mo> <msub> <mi>f</mi> <mn>1</mn> </msub> <mo>/</mo> <msub> <mi>f</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <mi>lg</mi> <mrow> <mo>(</mo> <msub> <mi>h</mi> <mn>1</mn> </msub> <mo>/</mo> <msub> <mi>h</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>19</mn> <mo>)</mo> </mrow> </mrow>

其中

利用H中任意一对像素计算能够得到一个R通道的镜面反射指数;取NR对像素,然后利用(13)、(14)及(19),得到NR个R通道的计算结果并构成集合NR是自然数,1000≤NR≤5000;采用k-means方法进行聚类得到R通道的镜面反射指数具体地,对于任意一对SR中任意两个元素和如果满足:

<mrow> <mo>|</mo> <msubsup> <mi>&alpha;</mi> <mi>R</mi> <mi>U</mi> </msubsup> <mo>-</mo> <msubsup> <mi>&alpha;</mi> <mi>R</mi> <mi>V</mi> </msubsup> <mo>|</mo> <mo>&lt;</mo> <msubsup> <mi>T</mi> <mi>R</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>20</mn> <mo>)</mo> </mrow> </mrow>

那么和被聚为同一类;和是集合中的两个不同的元素,U和V是序号,并且满足0≤U≤NR-1,0≤V≤NR-1,同时U≠V;为镜面反射指数之间差异的阈值;最后,将聚得样本最多的类中所有镜面反射指数的均值作为c表示聚类;

同样道理,能够得到G通道和B通道的镜面反射指数和

在计算三个通道镜面反射指数和时,镜面反射指数之间差异的阈值为一个设定值,设为0.1;

最后,镜面反射指数计算为:

<mrow> <mi>&alpha;</mi> <mo>=</mo> <mrow> <mo>(</mo> <msubsup> <mi>&alpha;</mi> <mi>R</mi> <mi>C</mi> </msubsup> <mo>+</mo> <msubsup> <mi>&alpha;</mi> <mi>G</mi> <mi>C</mi> </msubsup> <mo>+</mo> <msubsup> <mi>&alpha;</mi> <mi>B</mi> <mi>C</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <mn>3</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>21</mn> <mo>)</mo> </mrow> </mrow>

对于F中任意像素P,按照以下方法计算镜面反射成分和

由公式(4)、(5)和(6)得:

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <mi>R</mi> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>-</mo> <mo>(</mo> <mrow> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>22</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <mi>G</mi> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>-</mo> <mo>(</mo> <mrow> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>23</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <mi>B</mi> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>-</mo> <mo>(</mo> <mrow> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>24</mn> <mo>)</mo> </mrow> </mrow>

对所有像素计算的R通道镜面反射成分的平均值作为的结果,类似的,能够得到G通道镜面反射成分的结果以及B通道中镜面反射成分的结果

(4)重仿真中的应用

在流体重仿真中,对于流体仿真中的每一帧,获取任意流体粒子的高度hr,运用(25)到(27)计算粒子的颜色分量Rr,Gr和Br

<mrow> <msub> <mi>R</mi> <mi>r</mi> </msub> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>r</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mi>r</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>25</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>G</mi> <mi>r</mi> </msub> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>r</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mi>r</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>26</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>B</mi> <mi>r</mi> </msub> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>r</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mi>r</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>27</mn> <mo>)</mo> </mrow> </mrow>

利用视频流体光照计算的有效方法,能在流体重仿真中实时得到真实感的光照结果。

本发明具有简单、实用的特点,能够有效实现视频流体光照计算,克服了现有光照参数计算的研究中需要用户干预以及复杂度高的问题,进一步实例证明了本发明的有效性。可以实现流体场景的重仿真中重光照问题,并且所研究的光照计算的方法,适用于包括平流及海浪等多种流体类型。

附图说明

图1为本发明实施例流体场景光照计算的结果图;

图2为本发明实施例流体场景重光照结果图,在重仿真中测试得到;

图3为本发明实施例流体场景重光照结果图,在重仿真边界测试中得到的。

具体实施方式

实施例

下面结合附图对本发明进一步说明。

本实施例采用DynTex动态纹理库中的流体视频(例如54ab110等流体视频)进行流体场景光照计算。在PC机上Windows7操作系统下进行实施,其硬件配置是2.66GHz Intel Core(TM)2Duo CPU、4GB RAM。

基于Phong模型的视频流体光照计算,特点是:对于视频流体采用RGB色彩模型,将流体视频的样例帧F中任意像素P的颜色分量表示为R、G和B,那么根据Phong模型有:一种基于Phong模型的视频流体光照计算方法,其特征在于,对于视频流体采用RGB色彩模型,将流体视频的样例帧F中任意像素P的颜色分量表示为R、G和B,那么根据Phong模型有:

<mrow> <mi>R</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>)</mo> </mrow> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>d</mi> </mrow> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msup> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>V</mi> <mo>)</mo> </mrow> <mi>&alpha;</mi> </msup> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>s</mi> </mrow> <mi>R</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>G</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>)</mo> </mrow> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>d</mi> </mrow> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msup> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>V</mi> <mo>)</mo> </mrow> <mi>&alpha;</mi> </msup> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>s</mi> </mrow> <mi>G</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>B</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>N</mi> <mo>)</mo> </mrow> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>d</mi> </mrow> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>k</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msup> <mrow> <mo>(</mo> <msub> <mi>R</mi> <mi>m</mi> </msub> <mo>&CenterDot;</mo> <mi>V</mi> <mo>)</mo> </mrow> <mi>&alpha;</mi> </msup> <msubsup> <mi>i</mi> <mrow> <mi>m</mi> <mo>,</mo> <mi>s</mi> </mrow> <mi>B</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

其中,和是环境光在RGB三个通道的分量,称和为环境光成分;

和是漫反射率,和分别是漫反射在RGB三个通道的强度;记为记为记为并称和为漫反射成分;

Lm是场景中任意一点到光源方向的单位法向量,N是流体表面任意一点的单位法向量,V是视线方向的单位向量,Lm与V之间角平分线方向为E,Rm是流体表面任意一点反射光方向的单位向量,V是视线方向的单位向量.根据V与Rm之间的夹角是N与E间夹角的两倍,利用计算公式(1)到(3)中Lm与N的点积Lm·N;和是镜面反射率,和分别是镜面反射在RGB三个通道的光强;α是镜面反射指数;记为记为记为称和为镜面反射成分;

利用像素P的高度hP代替公式(1)至(3)中Rm和V点积Rm·V,那么,由(1)到(3)得:

<mrow> <mi>R</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>G</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>B</mi> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>

利用以下步骤有效计算流体场景的光照参数:

(1)、计算Phong光照模型的环境光成分及漫反射成分,具体地:

(a)利用流体视频样例帧F中的所有满足(7)式的像素构造集合L;

Dp≤TL (7)

Dp是像素P的强度,Dp计算为:

Dp=0.299*R+0.587*G+0.114*B (8)

式(7)中TL是强度阈值,其计算为TL=(Dmax-Dmin)*2/9+Dmin,Dmax和Dmin分别是F中所有像素强度的最大值和最小值;

(b)利用集合L,计算流体场景的环境光及漫反射成分,具体地:

对于L中任意一个像素Q,根据公式(4)到(6)可得:

<mrow> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>Q</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>-</mo> <msubsup> <mi>I</mi> <mi>Q</mi> <mi>R</mi> </msubsup> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>Q</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>-</mo> <msubsup> <mi>I</mi> <mi>Q</mi> <mi>G</mi> </msubsup> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>Q</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>-</mo> <msubsup> <mi>I</mi> <mi>Q</mi> <mi>B</mi> </msubsup> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> </mrow>

其中,和是Q在RGB三个通道的强度分量;

计算流体表面高度hQ,并利用L中的所有像素的信息,对于(9)、(10)和(11)中环境光成分和以及漫反射成分和采用线性拟合方法求解;

(2)、更新流体表面高度信息

将步骤(1)中得到的R通道的环境光成分及漫反射成分代入公式(9),重新计算每个粒子高度hQ,将hQ记为hR;将G通道的环境光成分及漫反射成分代入公式(10),重新计算每个粒子高度hQ,将hQ记为hG;将B通道的环境光成分及漫反射成分代入公式(11),重新计算每个粒子高度hQ,将hQ记为hB;最后,粒子的高度信息更新为hn=(hR+hG+hB)/3;

(3)、镜面反射指数及镜面反射成分计算

(a)利用F中的所有满足(12)式的像素构造集合H;

Dp≥TH (12)

TH是强度阈值,计算为TH=(Dmax-Dmin)*8/9+Dmin

(b)利用H计算镜面反射指数及镜面反射成分

对于H中任两个像素P1和P2,如果P1的颜色为R1、G1和B1,P2的颜色为R2、G2和B2,P1的高度假设为h1,P2的高度假设为h2;根据Phong光照模型:

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mn>1</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>R</mi> <mn>1</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mn>2</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>R</mi> <mn>2</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>14</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mn>1</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mn>1</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>15</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mn>2</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mn>2</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>16</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mn>1</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>B</mi> <mn>1</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>17</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mn>2</mn> <mi>&alpha;</mi> </msubsup> <mo>=</mo> <msub> <mi>B</mi> <mn>2</mn> </msub> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>-</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> </mrow>

由式(13)和(14)能够从R通道得到镜面反射指数的结果αR

<mrow> <msub> <mi>&alpha;</mi> <mi>R</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mi>lg</mi> <mrow> <mo>(</mo> <msub> <mi>f</mi> <mn>1</mn> </msub> <mo>/</mo> <msub> <mi>f</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <mi>lg</mi> <mrow> <mo>(</mo> <msub> <mi>h</mi> <mn>1</mn> </msub> <mo>/</mo> <msub> <mi>h</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>19</mn> <mo>)</mo> </mrow> </mrow>

其中

利用H中任意一对像素计算能够得到一个R通道的镜面反射指数;取NR对像素,然后利用(13)、(14)及(19),得到NR个R通道的计算结果并构成集合NR是自然数,1000≤NR≤5000;采用k-means方法进行聚类得到R通道的镜面反射指数具体地,对于任意一对SR中任意两个元素和如果满足:

<mrow> <mo>|</mo> <msubsup> <mi>&alpha;</mi> <mi>R</mi> <mi>U</mi> </msubsup> <mo>-</mo> <msubsup> <mi>&alpha;</mi> <mi>R</mi> <mi>V</mi> </msubsup> <mo>|</mo> <mo>&lt;</mo> <msubsup> <mi>T</mi> <mi>R</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>20</mn> <mo>)</mo> </mrow> </mrow>

那么和被聚为同一类;和是集合中的两个不同的元素,U和V是序号,并且满足0≤U≤NR-1,0≤V≤NR-1,同时U≠V;为镜面反射指数之间差异的阈值;最后,将聚得样本最多的类中所有镜面反射指数的均值作为c表示聚类;

同样道理,能够得到G通道和B通道的镜面反射指数和

在计算三个通道镜面反射指数和时,镜面反射指数之间差异的阈值为一个设定值,设为0.1;

最后,镜面反射指数计算为:

<mrow> <mi>&alpha;</mi> <mo>=</mo> <mrow> <mo>(</mo> <msubsup> <mi>&alpha;</mi> <mi>R</mi> <mi>C</mi> </msubsup> <mo>+</mo> <msubsup> <mi>&alpha;</mi> <mi>G</mi> <mi>C</mi> </msubsup> <mo>+</mo> <msubsup> <mi>&alpha;</mi> <mi>B</mi> <mi>C</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <mn>3</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>21</mn> <mo>)</mo> </mrow> </mrow>

对于F中任意像素P,按照以下方法计算镜面反射成分和

由公式(4)、(5)和(6)得:

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <mi>R</mi> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>-</mo> <mo>(</mo> <mrow> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>22</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <mi>G</mi> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>-</mo> <mo>(</mo> <mrow> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>23</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <mi>B</mi> <mo>-</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>B</mi> </msubsup> <mo>-</mo> <mo>(</mo> <mrow> <mn>2</mn> <msubsup> <mi>h</mi> <mi>p</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>)</mo> </mrow> <mo>/</mo> <msubsup> <mi>h</mi> <mi>P</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>24</mn> <mo>)</mo> </mrow> </mrow>

对所有像素计算的R通道镜面反射成分的平均值作为的结果,类似的,能够得到G通道镜面反射成分的结果以及B通道中镜面反射成分的结果

(4)重仿真中的应用

在流体重仿真中,利用现有方法计算视频第一帧的2D运动速度,然后,对Lattice Boltzmann Methods(LBM)初始化,在流体重仿真的推演过程中,对于每一帧计算流体粒子的高度hr,运用(25)到(27)计算粒子的颜色分量Rr,Gr和Br

<mrow> <msub> <mi>R</mi> <mi>r</mi> </msub> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>r</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>R</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>R</mi> </msubsup> <msubsup> <mi>h</mi> <mi>r</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>25</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>G</mi> <mi>r</mi> </msub> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>G</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>r</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>G</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>G</mi> </msubsup> <msubsup> <mi>h</mi> <mi>r</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>26</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>B</mi> <mi>r</mi> </msub> <mo>=</mo> <msubsup> <mi>C</mi> <mi>a</mi> <mi>R</mi> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <mn>2</mn> <msubsup> <mi>h</mi> <mi>r</mi> <mn>2</mn> </msubsup> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <msubsup> <mi>C</mi> <mi>d</mi> <mi>B</mi> </msubsup> <mo>+</mo> <msubsup> <mi>C</mi> <mi>s</mi> <mi>B</mi> </msubsup> <msubsup> <mi>h</mi> <mi>r</mi> <mi>&alpha;</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>27</mn> <mo>)</mo> </mrow> </mrow>

图1是光照计算的结果,其中第一列是原视频的样例帧(取第一帧作为样例帧);第二列是本发明中光照计算的结果,运用计算得到的环境光成分、漫反射成分、镜面反射成分及镜面反射指数获得流体表面的重光照强度。从图1的图示可以看出,本发明视频流体光照计算方法是很有效的,重新计算的光照与样例帧的外观很接近。

将本发明方法与现有方法进行比较:为了验证本发明中,视频流体光照计算方法的有效性,与Thiago研究的光照参数计算的方法进行对比。采用以下方法分别计算本发明和Thiago方法光照参数计算的误差:

<mrow> <msub> <mi>E</mi> <mi>a</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mn>0.299</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mo>|</mo> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>-</mo> <msubsup> <mi>R</mi> <mi>i</mi> <mi>r</mi> </msubsup> <mo>|</mo> <mo>+</mo> <mn>0.587</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mo>|</mo> <msub> <mi>G</mi> <mi>i</mi> </msub> <mo>-</mo> <msubsup> <mi>G</mi> <mi>i</mi> <mi>r</mi> </msubsup> <mo>|</mo> <mo>+</mo> <mn>0.114</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mo>|</mo> <msub> <mi>B</mi> <mi>i</mi> </msub> <mo>-</mo> <msubsup> <mi>B</mi> <mi>i</mi> <mi>r</mi> </msubsup> <mo>|</mo> <mo>)</mo> </mrow> <mo>/</mo> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>28</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>E</mi> <mi>r</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mn>0.299</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mo>|</mo> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>-</mo> <msubsup> <mi>R</mi> <mi>i</mi> <mi>r</mi> </msubsup> <mo>|</mo> <mo>+</mo> <mn>0.587</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mo>|</mo> <msub> <mi>G</mi> <mi>i</mi> </msub> <mo>-</mo> <msubsup> <mi>G</mi> <mi>i</mi> <mi>r</mi> </msubsup> <mo>|</mo> <mo>+</mo> <mn>0.114</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mo>|</mo> <msub> <mi>B</mi> <mi>i</mi> </msub> <mo>-</mo> <msubsup> <mi>B</mi> <mi>i</mi> <mi>r</mi> </msubsup> <mo>|</mo> </mrow> <mrow> <mn>0.299</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>+</mo> <mn>0.587</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>G</mi> <mi>i</mi> </msub> <mo>+</mo> <mn>0.114</mn> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>p</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>B</mi> <mi>i</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>29</mn> <mo>)</mo> </mrow> </mrow>

其中,Np是场景中像素个数,Ri,Gi和Bi是样例帧中第i个像素在RGB色彩空间的颜色分量,和是根据光照模型重新计算的光照结果,i是非负整数,取值范围为0≤i≤Np-1。

表1两种不同方法光照计算的误差比较

表1是对比误差的结果,表中结果中第一列是流体样例的名称;第二及第三列分别是Thiago研究方法以及本发明的绝对误差Ea;第四及第五列分别是Thiago研究方法以及本发明的相对误差Er。与现有的方法相比,本发明的误差结果具有明显偏小的特点,并且无论绝对误差Ea还是相对误差Er都很明显地表明本发明中光照计算方法的有效性。

流体重仿真中重光照的验证:将本发明提出的光照参数计算的方法运用到流体重仿真的应用中。

利用现有方法计算视频第一帧的2D运动速度,然后,对Lattice Boltzmann Methods(LBM)模型初始化,在流体重仿真的推演过程中,根据每一帧流体粒子的高度,运用本发明对仿真流体进行重光照,图2是重光照的结果。从图中重光照效果可以看出,本发明中光照计算方法非常有效,可以应用于流体重仿真过程,并且方便实用。

本发明中光照计算方法在重仿真的重光照的应用:将本发明应用于流体重仿真的边界测试的过程,得到了满意的光照结果。从图3可以看出本发明的有效性。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1