发明名称 基于GPU编程的红外反射特性仿真方法
摘要 本发明公开了一种基于GPU编程的红外反射特性仿真方法,主要解决现P有技术存在的反射效应仿真的物理真实感不高,实时性差的不足。其实现过程是:获得后缀为DDS的太阳直射辐射纹理D、天空背景辐射纹理S、大气路径辐射纹理L和大气透过率纹理T;获得计算BRDF需要的材质参数M;利用材质参数M,根据简化的Schlick BRDF反射模型,计算不同像素点对太阳直射辐射的反射量E<sub>1</sub>和对天空背景辐射的反射量E<sub>2</sub>;将DDS纹理写入材质脚本的纹理单元中,生成能仿真红外反射效应的材质脚本,并通过GPU完成对材质脚本的解析和编译并载入显存中;运行这些脚本程序,实时模拟红外反射效应。本发明具有仿真真实感强、实时性高等优点,可应用于红外成像系统的研发、测试与评估。
申请公布号 CN102968521B 申请公布日期 2015.04.22
申请号 CN201210415035.2 申请日期 2012.10.25
申请人 西安电子科技大学 发明人 黄曦;张建奇;杨倩;刘德连;何国经;王晓蕊
分类号 G06F17/50(2006.01)I;G06T17/00(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 王品华;朱红星
主权项 一种基于GPU编程的红外反射特性仿真方法,包括如下步骤:(1)用大气辐射传输计算软件Atmosphere获得后缀为压缩纹理图像格式DDS的太阳直射辐射纹理D、天空背景辐射纹理S、大气路径辐射纹理L和大气透过率纹理T;(2)通过实验或测量仪器测量,获得计算BRDF需要的所有材质参数M;(3)利用材质参数M,根据简化的Schlick BRDF反射模型,计算不同角度下不同像素点对太阳直射辐射的反射量E<sub>1</sub>:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>E</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>,</mo><mi>v</mi><mo>,</mo><msup><mi>v</mi><mo>&prime;</mo></msup><mo>,</mo><mi>w</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>&rho;</mi><mrow><msub><mi>&lambda;</mi><mn>1</mn></msub><mo>-</mo><msub><mi>&lambda;</mi><mn>2</mn></msub></mrow></msub><mi>D</mi><mrow><mo>(</mo><mi>t</mi><mo>,</mo><mi>v</mi><mo>,</mo><msup><mi>v</mi><mo>&prime;</mo></msup><mo>,</mo><mi>w</mi><mo>)</mo></mrow><msub><mi>E</mi><mi>s</mi></msub><mi>v</mi><mo>,</mo></mrow>]]></math><img file="FDA0000638118760000016.GIF" wi="743" he="87" /></maths>其中,<img file="FDA0000638118760000017.GIF" wi="110" he="62" />为波段λ<sub>1</sub>~λ<sub>2</sub>内的波段反射率,E<sub>s</sub>为材质表面处迎着太阳方向上太阳直射辐射的辐照度,v=cos(θ),v′=cos(θ′),t=cos(α),<img file="FDA0000638118760000018.GIF" wi="256" he="66" />θ为太阳入射光线与材质表面法线的夹角,θ′为视点方向与材质表面法线的夹角,α为材质表面法线与半角向量的夹角,<img file="FDA0000638118760000019.GIF" wi="53" he="58" />为材质表面的切向量与半角向量在平面内的投影向量的夹角,D(t,v,v′,w)为方向特征因子,其公式如下,<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>D</mi><mrow><mo>(</mo><mi>t</mi><mo>,</mo><mi>v</mi><mo>,</mo><msup><mi>v</mi><mo>&prime;</mo></msup><mo>,</mo><mi>w</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mn>1</mn><mo>-</mo><mi>G</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mi>G</mi><mrow><mo>(</mo><msup><mi>v</mi><mo>&prime;</mo></msup><mo>)</mo></mrow></mrow><mi>&pi;</mi></mfrac><mi>A</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>+</mo><mfrac><mrow><mi>G</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mi>G</mi><mrow><mo>(</mo><msup><mi>v</mi><mo>&prime;</mo></msup><mo>)</mo></mrow></mrow><mrow><mn>4</mn><mi>&pi;v</mi><msup><mi>v</mi><mo>&prime;</mo></msup></mrow></mfrac><mi>Z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mi>A</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000638118760000011.GIF" wi="1163" he="134" /></maths>其中,<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>Z</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mi>r</mi><msup><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msup><mi>rt</mi><mn>2</mn></msup><mo>-</mo><msup><mi>t</mi><mn>2</mn></msup><mo>)</mo></mrow><mn>2</mn></msup></mfrac><mo>,</mo></mrow>]]></math><img file="FDA0000638118760000012.GIF" wi="461" he="142" /></maths><maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>A</mi><mrow><mo>(</mo><mi>w</mi><mo>)</mo></mrow><mo>=</mo><msqrt><mfrac><mi>p</mi><mrow><msup><mi>p</mi><mn>2</mn></msup><mo>-</mo><msup><mi>p</mi><mn>2</mn></msup><msup><mi>w</mi><mn>2</mn></msup><mo>+</mo><msup><mi>w</mi><mn>2</mn></msup></mrow></mfrac></msqrt><mo>,</mo></mrow>]]></math><img file="FDA0000638118760000013.GIF" wi="548" he="174" /></maths><maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mi>v</mi><mrow><mi>r</mi><mo>-</mo><mi>rv</mi><mo>+</mo><mi>v</mi></mrow></mfrac><mo>,</mo></mrow>]]></math><img file="FDA0000638118760000014.GIF" wi="394" he="129" /></maths><maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><msup><mi>v</mi><mo>&prime;</mo></msup><mo>)</mo></mrow><mo>=</mo><mfrac><msup><mi>v</mi><mo>&prime;</mo></msup><mrow><mi>r</mi><mo>-</mo><msup><mi>rv</mi><mo>&prime;</mo></msup><mo>+</mo><msup><mi>v</mi><mo>&prime;</mo></msup></mrow></mfrac><mo>,</mo></mrow>]]></math><img file="FDA0000638118760000015.GIF" wi="405" he="149" /></maths>r∈[0,1]为材质的粗糙因子,p∈[0,1]为材质的各向同性因子;(4)利用材质参数M,根据简化的Schlick BRDF反射模型,计算不同角度下不同像素点对天空背景辐射的反射量E<sub>2</sub>:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>E</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>&theta;</mi><mi>r</mi></msub><mo>,</mo><msub><mi>&phi;</mi><mi>r</mi></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>&rho;</mi><mrow><msub><mi>&lambda;</mi><mn>1</mn></msub><mo>-</mo><msub><mi>&lambda;</mi><mn>2</mn></msub></mrow></msub><msubsup><mo>&Integral;</mo><mn>0</mn><mi>&pi;</mi></msubsup><msubsup><mo>&Integral;</mo><mn>0</mn><mfrac><mi>&pi;</mi><mn>2</mn></mfrac></msubsup><mi>D</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mi>i</mi></msub><mo>,</mo><msub><mi>&phi;</mi><mi>i</mi></msub><mo>,</mo><msub><mi>&theta;</mi><mi>r</mi></msub><mo>,</mo><msub><mi>&phi;</mi><mi>r</mi></msub><mo>)</mo></mrow><msub><mi>L</mi><mi>s</mi></msub><mrow><mo>(</mo><msub><mi>&theta;</mi><mi>i</mi></msub><mo>,</mo><msub><mi>&phi;</mi><mi>i</mi></msub><mo>)</mo></mrow><mi>cos</mi><msub><mi>&theta;</mi><msup><mi>i</mi><mo>&prime;</mo></msup></msub><mi>sin</mi><msub><mi>&theta;</mi><mi>i</mi></msub><mi>d</mi><msub><mi>&theta;</mi><mi>i</mi></msub><mi>d</mi><msub><mi>&phi;</mi><mi>i</mi></msub><mo>,</mo></mrow>]]></math><img file="FDA0000638118760000021.GIF" wi="1298" he="119" /></maths>其中,θ<sub>i</sub>为天顶角,<img file="FDA0000638118760000022.GIF" wi="56" he="60" />为方位角,L<sub>s</sub>(θ<sub>i</sub>,φ<sub>i</sub>)为以天顶角θ<sub>i</sub>、方位角φ<sub>i</sub>方向观察到的天空背景辐亮度,θ<sub>i'</sub>为天空背景小面元辐射入射光与表面法线的夹角,θ<sub>r</sub>为被观察面法线的天顶角,φ<sub>r</sub>为被观察面法线的方位角;(5)利用图形编程语言Cg将太阳直射辐射纹理D、天空背景辐射纹理S、大气路径辐射纹理L、大气透过率纹理T写入材质脚本的纹理单元中,在片段程序中利用太阳直射辐射的反射量E<sub>1</sub>和天空背景辐射的反射量E<sub>2</sub>,生成能仿真红外反射效应的材质脚本;(6)通过可编程图形处理单元GPU完成材质脚本的解析和编译并载入显存中,形成可编程图形处理单元GPU的执行代码,利用这些代码实时模拟红外反射效应。
地址 710071 陕西省西安市太白南路2号