一种虚拟手术中点光源实时采样方法及装置

文档序号:32653774发布日期:2022-12-23 20:34阅读:67来源:国知局
一种虚拟手术中点光源实时采样方法及装置

1.本发明涉及虚拟现实技术领域,特别涉及一种虚拟手术中点光源实 时采样方法及装置。


背景技术:

2.国外针对虚拟现实应用的研究起步较早,并针对虚拟现实中的光照 技术进行了相应的研究。2004年,k dmitriev等人在acm symposium onvirtual reality software&technology中提出了a cave system forinteractive modeling of global illumination in car interior,采用预计算辐射 度算法实现了封闭环境的全局光照的仿真,该方法支持动态光源和视角, 但是要求场景必须为静态。2007年j mortensen等人通过在gpu上构建 虚拟光场(vlf)的方法实现了洞穴场景的全局光照模拟,从而降低场景 的光照计算复杂度,但是该算法不支持动态场景及光源。同年,rogerhoang等人在international conference on computer graphics andinteractive techniques,siggraph 2010中提出exploring globalillumination for virtual reality,英伟达公司的optix上采用基于gpu的光 子映射实现了虚拟现实场景光照的搭建,实现了对动态场景和光源的支 持。j happa等人在vast 2009:the 10th international symposium onvirtual reality提出了the virtual reconstruction and daylight illuminationof the panagiaangeloktisti,通过获取一天之内光照的变化情况,并采用基 于图像的光照,将高动态范围环境贴图与实地获取的光照数据进行插值 实现了一些历史环境的虚拟重现。p lensing等人在ieee internationalsymposium on mixed and augmented reality提出了instant indirectillumination for dynamic mixed reality scenes,基于反射阴影图算法提出了 图像空间的全局光照算法,并结合一个rgb-d相机,实现了对虚拟场景 的一次间接光照的计算从而满足了系统对真实感的需求。
3.国内对虚拟现实场景的光照也进行了大量的研究,并应用到许多领 域当中。刘颖在用于室内虚拟漫游的辐射度光照模型的研究提出,辐射 度算法的基础上采用投影的方法来计算微面元和面片之间的形状因子, 并提出了一种网格模型双重简化算法来提升辐射度算法的效率,并将其 应用到虚拟室内漫游场景中。柳喆俊在高动态范围光照贴图在虚拟现实 中的应用中提出,将高动态范围光照贴图应用到虚拟现实中来近似全局 光照的作用,得以进一步提升场景的渲染质量,但是只适用于静态场景 及光源固定的场合中。吴文珍等人在油田虚拟现实系统中的光照模型算 法研究及应用中提出,以光线跟踪算法为基础,通过为场景中的复杂物 体添加包围体的,通过判断光线是否与包围体相交来决定是否进行光线 与物体的求交运算,从而实现了光线跟踪算法的加速并应用到油田虚拟 现实中。王理川在虚拟现实系统中全局光照实时渲染技术研究提出,利 用室内光源和基于物体自身的区域光源技术,同时结合半透明阴影技术, 在此基础上引入ambient occlusion来增强间接阴影,实现了对室内真实 感光照的模拟。张桂连在室内实时全局光照技术研究中提出,对室内的 主光源采用基于gpu加速的立即辐射度算法计算其全局光照,对非光源 采
用预计算光照图方式计算直接光照,实现了动态主光源及视角的实时 的室内全局光照仿真。
4.但是以上方法均存在着虚拟手术场景的真实感较差,而且光照计算 的效率低。


技术实现要素:

5.(一)要解决的技术问题
6.为了解决现有技术的上述问题,本发明提供一种虚拟手术中点光源 实时采样方法及装置,能够提高虚拟手术场景的真实感和光照计算的效 率。
7.(二)技术方案
8.为了达到上述目的,本发明采用的一种技术方案为:
9.一种虚拟手术中点光源实时采样方法,包括步骤:
10.s1、分别获取反射阴影图信息和场景的光照信息;
11.s2、根据所述反射阴影图信息采样生成虚拟点光源,并进行插值重 建,得到完整的深度图;
12.s3、根据所述场景的光照信息进行场景的全局光照和阴影渲染计算, 得到所有的光照;
13.s4、根据所述完整的深度图和所有的光照对虚拟手术场景光照的优 化仿真。
14.为了达到上述目的,本发明采用的另一种技术方案为:
15.一种虚拟手术中点光源实时采样装置,包括存储器、处理器及存储 在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程 序时实现以下步骤:
16.s1、分别获取反射阴影图信息和场景的光照信息;
17.s2、根据所述反射阴影图信息采样生成虚拟点光源,并进行插值重 建,得到完整的深度图;
18.s3、根据所述场景的光照信息进行场景的全局光照和阴影渲染计算, 得到所有的光照;
19.s4、根据所述完整的深度图和所有的光照对虚拟手术场景光照的优 化仿真。
20.(三)有益效果
21.本发明的有益效果在于:通过分别获取反射阴影图信息和场景的光 照信息;根据所述反射阴影图信息采样生成虚拟点光源,并进行插值重 建,得到完整的深度图;根据所述场景的光照信息进行场景的全局光照 和阴影渲染计算,得到所有的光照;根据所述完整的深度图和所有的光 照对虚拟手术场景光照的优化仿真,提高了虚拟手术场景的真实感和光 照计算的效率。
附图说明
22.图1为本发明实施例的虚拟手术中点光源实时采样方法流程图;
23.图2为本发明实施例的虚拟手术中点光源实时采样装置的整体结构 示意图;
24.图3为ping-pong算法原理示意图;
25.图4为ping阶段采样过程示意图;
26.图5为pong阶段插值过程示意图;
27.图6为光照模型示意图。
28.【附图标记说明】
29.1:虚拟手术中点光源实时采样;
30.2:存储器;
31.3:处理器。
具体实施方式
32.为了更好的解释本发明,以便于理解,下面结合附图,通过具体实 施方式,对本发明作详细描述。
33.实施例一
34.请参照图1,一种虚拟手术中点光源实时采样方法,包括步骤:
35.s1、分别获取反射阴影图信息和场景的光照信息;
36.在本实施例中,步骤s1具体为:
37.s11、以每个光源为视角获取场景的反射阴影图信息,并保存至 g-buffer中;
38.s12、以相机为视角获取场景的光照信息,同样保存至g-buffer中。
39.s2、根据所述反射阴影图信息采样生成虚拟点光源,并进行插值重 建,得到完整的深度图;
40.在本实施例中,步骤s2具体为:
41.s21、根据所述反射阴影图信息采用halton序列采样生成虚拟点光源;
42.s22、采用抛物面映射为所述虚拟点光源生成相应的阴影图;
43.在本实施例中,步骤s22具体为:
44.若场景中有一个面向反射抛物面的正交相机,其中,抛物面的参数 化形式为:
[0045][0046]
则所述相机能够获取到中心点位于(0,0,0),方向为指向相机(0,0,1) 方向的半球区域内的场景的深度信息;为了采用抛物面来实现空间到平 面的映射,在抛物面上找到一点p=(x,y,z),该点将给定的入射方向朝着 方向d0=(0,0,1)反射出去,从上式可以得出p点处的法向量可表示 为:
[0047][0048]
若抛物面能精确进行反射,则只需求出半矢量就可在半矢量的基 础上通过乘于一个比例因子得到一个与相同的值,结合半矢量和上式可 以将的平面映射用以下函数进行表示:
[0049]
[0050]
通过以上推导得出,可通过抛物面映射来使用二维坐标(x,y)实现对 半球空间的参数化表示,并利用所述二维坐标进行深度值读取;因此, 在进行阴影映射时无需进行透视投影而可直接采用抛物面映射来进行替 代;其中,在获取场景深度值时,像素的深度值可采用场景表面的点到 该抛物面中心点(0,0,0)的距离来进行表示,从而获取到进行阴影映射 的所有相关信息;
[0051]
p表示虚拟点光源所在坐标系的中心点(0,0,0),m
light
表示变换矩 阵,m
model
表示模型矩阵;为了生成虚拟点光源的抛物面阴影图,首先将 场景点的坐标转换到虚拟点光源所在的坐标系中,记为p',然后除于场 景点的ω坐标值来进行归一化:
[0052]
p'=m
light
*m
model
*p
[0053]
p'=p'/p

ω
[0054]
由于虚拟点光源的光照范围涵盖其法向量为(0,0,1)的半球区域,因 此在生成抛物面阴影图的过程中要进行逐像素剔除来舍去不相关的像素,可 以计算场景点的一个α值,p
′z表示场景点的z坐标值,z
scale
表示自定义的常 数;该α值可以由场景点的z坐标值乘于一个自定义的常数进行缩放,然后 加上0.5得到,在抛物面阴影图生成过程中,则α值大于0.5的像素就可以 剔除掉:
[0055][0056]
lenth
p'
表示p'到虚拟点光源所在坐标系的中心点(0,0,0)的距离:
[0057]
lenth
p'
=||p'||
[0058][0059]
在此过程中,由于存在深度缓存的精确度问题,因此需要进行缩放并加 上一个偏差值d0:
[0060]
p'=p'+d0[0061]
虚拟点光源所在坐标系的中心点(0,0,0)到p'的距离记为p
′z,更新场 景点映射到抛物面的p

x
和p
′y的坐标值:
[0062][0063]
同时,为了防止造成自阴影现象,还需要将z分量值加上一个偏差值z
bias

[0064][0065]
其中,由于深度缓存存在精确度的问题,所以z分量存在误差,z
near
表示z分量的最小值,z
far
表示z分量的最大值。
[0066]
s23、根据所述阴影图采用图像空间ping-pong算法对缺失深度值进 行插值重建,得到完整的深度图。
[0067]
s3、根据所述场景的光照信息进行场景的全局光照和阴影渲染计算, 得到所有的光照;
[0068]
在本实施例中,步骤s3具体为:
[0069]
s31、根据所述场景的光照信息进行交叉采样生成次缓存;
[0070]
在本实施例中,步骤s31具体为:
[0071]
交叉采样通过采用一个n
×
m大小的交叉采样方式对所述场景的光照 信息进行采样,生成多个大小为n
×
m的次缓存,再依次为每个次缓存采用 延迟渲染技术计算光照,由此可将多光源的逐像素的光照计算转换为对 每个次缓存进行一次光照计算,提升了光照计算的效率。
[0072]
其中,经过交叉采样后,坐标(x,y)处的像素将成为次缓存g
i,j
中位于 坐标(s,t)处的像素,其中:
[0073]
i=mod(x,n)
[0074]
j=mod(y,m)
[0075]
s=x/n
[0076]
t=y/m
[0077]
其中,g
i,j
表示次缓存中横坐标为i,纵坐标为j的一个像素点。
[0078]
s32、根据所述次缓存采用延迟渲染进行场景的全局光照和阴影渲染 计算,得到所有的光照。
[0079]
在本实施例中,步骤s32具体为:
[0080]
采用lambert光照模型计算直接光照中的漫反射分量,记漫反射光 为l
lambert
,则有:
[0081]
l
lambert
=kdi
l
cosθ
[0082]
其中,i
l
为光源所发出的入射光强度,kd为物体表面的漫反射率,θ 为入射光与物体表面法向量之间的夹角,场景表面点x处的法向量为n
p
, 点x到光源的单位向量为l,则上式可表示为如下的向量形式:
[0083]
l
lambert
=kdi
l max{0,《n
p
|l》}
[0084]
其中《|》为点乘;
[0085]
其次,根据光的反射定律,反射光线和入射光线对称地分布于物体 表面法向的两侧,当物体表面为纯镜面时,入射光将严格遵循光的反射 定律而单向地被反射出去,记单位反射方向为r,则有:
[0086]
r=2n
p
《n
p
|l》-l
[0087]
由于一般的物体的表面实际上是由许多具有不同朝向的微平面组成, 因此物体的镜面反射光线将分布在理想镜面反射方向r的周围,根据 phong光照模型,记反射光亮度为l
specular
,则有:
[0088]
l
specular
=i
l
w(θ)cosnα
[0089]
其中,w(θ)为物体表面的镜面反射率,为入射角θ和入射光波长的函 数,通常将其取为常数ks,0≤ks≤1;n为镜面高光指数,表示镜面反射光 在空间的汇聚程度,β为景物表面可见点处的单位视线向量v与单位镜面 反射向量r之间的夹角;
[0090]
由于phong光照模型是一个纯几何的光照模型,因此反射光强度仅 与视β有关,则有:
[0091]
cosα=max{0,《v|r》}
[0092]
l
specular
=i
lks
(max{0,《v|r》})n[0093]
因此,虚拟手术场景的直接光照分量l
direct
可表示为:
[0094]
l
direct
=l
lambert
+l
specular
[0095]
进行虚拟手术场景的间接光照计算;记以相机为视角获取的场景点的深 度值为d
p
,世界空间坐标为x
p
,表面法向量为n
p
,反射的辐射通量为φ
p

[0096]
其中,φ
p
为虚拟点光源的亮度,n
p
为虚拟点光源的辐射特性;
[0097]
场景中的一个虚拟点光源p,则其向场景中方向为ω的辐射强度为i
p
, 则有:
[0098]ip
(ω)=φ
p max{0,《n
p
|ω》}
[0099]
该虚拟点光源向场景中法向量为n的一点x的光辐射e
p
可表示为:
[0100][0101]
场景点x接收到所有虚拟点光源的间接光照e
p
(x,n)可表示为:
[0102][0103]
综上所述,记虚拟手术场景的全局光照为l
global
,则有:
[0104]
l
global
=l
direct
+e(x,n)
[0105]
最后,分别记光源1到光源4的全局光照为l
global1
、l
global2
、l
global3
、l
global4
, 则场景获取到的所有光照l
scene
可表示为:
[0106]
l
scene
=l
global1
+l
globa2
+l
global3
+l
global4
[0107]
其中,l
global1
、l
global2
、l
global3
和l
global4
表示以场景原点为中心,在其正 上方以十字对称方式放置4个光源。
[0108]
s4、根据所述完整的深度图和所有的光照对虚拟手术场景光照的优 化仿真。
[0109]
在本实施例中,步骤s4具体为:
[0110]
根据所述完整的深度图和所有的光照进行抗锯齿处理,对虚拟手术 场景光照的优化仿真。
[0111]
实施例二
[0112]
本实施例和实施例一的区别在于,本实施例将结合具体的应用场景, 进一步说明本发明上述虚拟手术中点光源实时采样方法是如何实现的:
[0113]
step1分别以每个光源为视角获取场景的反射阴影图信息并保存在 g-buffer中,以相机为视角获取场景的光照信息,同样保存于g-buffer 中。
[0114]
具体地,采用opengl的多目标渲染技术获取场景点的材质、世界 空间坐标和法向量信息,然后将获取到的光照信息采用渲染到纹理技术 保存到g-buffer中。同时,采用opengl的可编程渲染管线,通过利用 其多目标渲染功能,只需渲染场景一次便获取到场景的反射阴影图信息, 并将获取到的信息采用渲染到纹理技术保存g-buffer上。
[0115]
step2根据所述反射阴影图信息采用halton序列采样生成虚拟点光 源,接着采用抛物面映射为所述虚拟点光源生成相应的阴影图,随后根 据所述阴影图采用图像空间ping-pong算法对缺失深度值进行插值重建, 得到完整的深度图。同时,对保存在g-buffer中的所述场景的光照信息, 进行交叉采样生成次缓存,在此基础上采用延迟渲染进行场景的全局光 照和阴影渲染计算,得到所有的光照。
[0116]
step3对保存在纹理中的光照结果进行抗锯齿处理,最终通过累加4 个光源的光
照实现对虚拟手术场景光照的优化仿真。
[0117]
step2为并行的两个步骤,分别称为step2.1和step2.2。
[0118]
step2.1分为三步,分别称为step2.1.1,2.1.2和2.1.3。
[0119]
step2.1.1halton序列产生的过程可表述如下:首先,任意选择一个 素数作为halton序列的基数,以基数2为例,然后利用2这个基数将(0,1) 区间反复进行二分,则会得到1/2,1/4,1/8,5/8,3/8,7/8,1/16,9/16这样一个序 列。采用halton序列来采样生成虚拟点光源采样坐标,实现对反射阴影 图的采样。每个光源采样生成100个虚拟点光源,并采用素数2和3作 为基数生成采样点的和坐标值并保存为纹理并将生成的采样坐标的和值 分别编码为rgb颜色的rg分量。
[0120]
step2.1.2本发明中每个虚拟点光源的间接光照辐射范围为其法向所 指的半球形区域。因此采用传统的阴影映射算法来获取场景深度图时存 在着视景体大小不足的问题。若场景中有一个面向反射抛物面的正交相 机,其中,抛物面的参数化形式为:
[0121][0122]
则所述相机能够获取到中心点位于(0,0,0),方向为指向相机(0,0,1) 方向的半球区域内的场景的深度信息;
[0123]
为了采用抛物面来实现空间到平面的映射,在抛物面上找到一点p=(x,y,z),该点将给定的入射方向朝着方向d0=(0,0,1)反射出去, 从上式可以得出p点处的法向量可表示为:
[0124][0125]
若抛物面能精确进行反射,则只需求出半矢量就可在半矢量的基 础上通过乘于一个比例因子得到一个与相同的值,结合半矢量和上式可 以将的平面映射用以下函数进行表示:
[0126][0127]
通过以上推导得出,可通过抛物面映射来使用二维坐标(x,y)实现对 半球空间的参数化表示,并利用所述二维坐标进行深度值读取;因此, 在进行阴影映射时无需进行透视投影而可直接采用抛物面映射来进行替 代;其中,在获取场景深度值时,像素的深度值可采用场景表面的点到 该抛物面中心点(0,0,0)的距离来进行表示,从而获取到进行阴影映射 的所有相关信息;
[0128]
p表示虚拟点光源所在坐标系的中心点(0,0,0),m
light
表示变换矩 阵,m
model
表示模型矩阵;为了生成虚拟点光源的抛物面阴影图,首先将 场景点的坐标转换到虚拟点光源所在的坐标系中,记为p',然后除于场 景点的ω坐标值来进行归一化:
[0129]
p'=m
light
*m
model
*p
[0130]
p'=p'/p

ω
[0131]
由于虚拟点光源的光照范围涵盖其法向量为(0,0,1)的半球区域, 因此在生成抛物面阴影图的过程中要进行逐像素剔除来舍去不相关的像 素,可以计算场景点的一个α值,p
′z表示场景点的z坐标值,z
scale
表示自 定义的常数;该α值可以由场景点的z坐标值乘于一个自定义的常数进行 缩放,然后加上0.5得到,在抛物面阴影图生成过程中,则α值大于0.5 的像素就可以剔除掉:
[0132][0133]
lenth
p'
表示p'到虚拟点光源所在坐标系的中心点(0,0,0)的距离:
[0134]
lenth
p'
=||p'||
[0135][0136]
在此过程中,由于存在深度缓存的精确度问题,因此需要进行缩放 并加上一个偏差值d0:
[0137]
p'=p'+d0[0138]
虚拟点光源所在坐标系的中心点(0,0,0)到p'的距离记为p
′z,更新场 景点映射到抛物面的p

x
和p
′y的坐标值:
[0139][0140]
同时,为了防止造成自阴影现象,还需要将z分量值加上一个偏差值z
bias

[0141][0142]
其中,由于深度缓存存在精确度的问题,所以z分量存在误差,z
near
表示z分量的最小值,z
far
表示z分量的最大值。
[0143]
step 2.1.3ping-pong算法分为ping/pong两个阶段;
[0144]
其中,ping阶段进行图像的pull操作,pong阶段进行push操作。 该算法需要两个纹理对象,这两个纹理对象交叉地扮演着保存pull/push 操作生成的层级图像和将指定层级图像输入进行pull/push操作的作用。 假设得生成的原始阴影图为a1并保存在纹理a上,再另外创建一张纹理 记为b,将a1进行第一次pull操作的结果b1保存在纹理b的空白区域上, 然后输入纹理b中的层级图像b1进行第二次pull操作,将得到的结果a2保 存在纹理a的其他空白区域上,然后再输入a2进行第三次pull操作将结 果b2保存在b的其他空白区域上,以这种方式依次进行,如图3所示。
[0145]
进行完ping阶段的所有操作后要将两张纹理中相互缺失的层级图像 复制给对方,完成复制操作后两张纹理图上都保存了所有的层级图像, 如图3所示。随后开始进行push操作。首先将纹理b中分辨率最低的两 张层级图像b3、b4进行push操作然后保存生成的图像覆盖在纹理a上的 a3图像,然后纹理a利用a3这张层级图像同分辨率更高的层级图像a2进 行push操作生成的图像覆盖纹理b上的b2图像,以此方式依次进行,最 终得到一张完整的深度图。
[0146]
与图3所示的操作对应,以两次ping/pong处理为例,其ping阶段 过程中阴影图的变化情况如图4所示:
[0147]
与其ping阶段相对应,在其pong阶段处理过程中阴影图的变化情况 如下图5所示。从图5中可以看出经过两次ping/pong处理后,阴影图中 的许多缺失的深度值已经得到重建,因此,只需在此基础上增加ping/push 处理的次数便可获得一张完整的深度图。
[0148]
step2.2分为三步,分别称为step2.2.1和step2.2.2。
[0149]
step2.2.1采用延迟渲染技术进行光照计算时,需要对屏幕的每个像 素逐像素进行光照计算,因此当场景中有多个光源时会带来很高的填充 率。交叉采样通过采用一个n
×
m大小的交叉采样方式对所述场景的光照信 息进行采样,生成多个大小为n
×
m的次缓存,再依次为每个次缓存采用延 迟渲染技术计算光照,由此可将多光源的逐像素的光照计算转换为对每 个次缓存进行一次光照计算,提升了光照计算的效率。
[0150]
其中,经过交叉采样后,g-buffer中一个位于坐标(x,y)处的像素将成 为次缓存g
i,j
中位于坐标(s,t)处的像素,其中:
[0151]
i=mod(x,n)
[0152]
j=mod(y,m)
[0153]
s=x/n
[0154]
t=y/m
[0155]
其中,g
i,j
表示次缓存中横坐标为i,纵坐标为j的一个像素点。
[0156]
step2.2.2采用lambert光照模型计算直接光照中的漫反射分量,其中 lambert光照模型亦称为lambert余弦定律,它定义了理想漫发射表面在 光源照射下的反射规律。根据lambert余弦定律,理想漫反射面产生的漫 反射光强度与入射光同物体表面法向的夹角的余弦成正比,且与视角无 关,记漫反射光为l
lambert
,则有:
[0157]
l
lambert
=kdi
l
cosθ
[0158]
其中,i
l
为光源所发出的入射光强度,kd为物体表面的漫反射率,θ 为入射光与物体表面法向量之间的夹角,场景表面点x处的法向量为n
p
, 点x到光源的单位向量为l,则上式可表示为如下的向量形式:
[0159]
l
lambert
=kdi
l
max{0,《n
p
|l》}
[0160]
其中《|》为点乘;
[0161]
其次,根据光的反射定律,反射光线和入射光线对称地分布于物体 表面法向的两侧,当物体表面为纯镜面时,入射光将严格遵循光的反射 定律而单向地被反射出去,记单位反射方向为r,则有:
[0162]
r=2n
p
《n
p
|l》-l
[0163]
由于一般的物体的表面实际上是由许多具有不同朝向的微平面组成, 因此物体的镜面反射光线将分布在理想镜面反射方向r的周围,根据 phong光照模型,记反射光亮度为l
specular
,则有:
[0164]
l
specular
=i
l
w(θ)cosnα
[0165]
其中,w(θ)为物体表面的镜面反射率,为入射角θ和入射光波长的函 数,通常将其取为常数ks,0≤ks≤1;n为镜面高光指数,表示镜面反射光 在空间的汇聚程度,β为景物表面可见点处的单位视线向量v与单位镜面 反射向量r之间的夹角;
[0166]
由于phong光照模型是一个纯几何的光照模型,因此反射光强度仅 与视β有关,则有:
[0167]
cosα=max{0,《v|r》}
[0168]
l
specular
=i
lks
(max{0,《v|r》})n[0169]
因此,虚拟手术场景的直接光照分量l
direct
可表示为:
[0170]
l
direct
=l
lambert
+l
specular
[0171]
实现了虚拟点光源的采样之后,便可进行虚拟手术场景的间接光照 计算;记以相机为视角获取的场景点的深度值为d
p
,世界空间坐标为x
p
, 表面法向量为n
p
,反射的辐射通量为φ
p

[0172]
其中,φ
p
为虚拟点光源的亮度,n
p
为虚拟点光源的辐射特性;
[0173]
场景中的一个虚拟点光源p,则其向场景中方向为ω的辐射强度为i
p
, 则有:
[0174]ip
(ω)=φ
p
max{0,《n
p
|ω》}
[0175]
该虚拟点光源向场景中法向量为n的一点x的光辐射e
p
可表示为:
[0176][0177]
场景点x接收到所有虚拟点光源的间接光照e
p
(x,n)可表示为:
[0178][0179]
综上所述,记虚拟手术场景的全局光照为l
global
,则有:
[0180]
l
global
=l
direct
+e(x,n)
[0181]
最后,分别记光源1到光源4的全局光照为l
global1
、l
global2
、l
global3
、l
global4
, 则场景获取到的所有光照l
scene
可表示为:
[0182]
l
scene
=l
global1
+l
globa2
+l
global3
+l
global4
[0183]
其中,l
global1
、l
global2
、l
global3
和l
global4
表示以场景原点为中心,在其正 上方以十字对称方式放置4个光源。
[0184]
本发明提出以多光源全局光照的方式实现虚拟手术场景光照的仿真。 但是全局光照计算量巨大,如果采用较多的光源模拟光照会加剧这一问 题,虽然近年来计算机的计算能力得到了极大的提升,但是现阶段还无 法做到透镜多孔式手术无影灯那样采用多达数十个光源,并为其计算其 全局光照方式来实现对虚拟手术场景光照的仿真。因此,本发明以以下 几条准则为准,实现虚拟手术场景光照模型的设计:
[0185]
1.由于全局光照的计算量会随着场景光源数量的增加而快速增长,因 此为了保证虚拟手术系统的交互性特征,必须严格控制场景中的光源数 量。
[0186]
2.由于手术光照要求光照必须保持较高的显色性,因此每个光源的光 照强度应当限制在一定范围内,否则场景会被过度光照而使得器官组织 发生色差。
[0187]
3.由于手术光照要求光照应当具备均匀分布的特性,因此在保证每个 光源光照强度相同的前提下,所有光源应当在同一平面上以它们之间的 中心点为原点互相对称分布。
[0188]
4.由于必须限制场景中光源的数量,因此要求场景中的每个光源的光 照辐射角要足够大,这样才能保证在场景拥有最少光源的情况下,能够 实现对手术区域的360度光
照覆盖。
[0189]
5.为了采用最少的光源实现对虚拟手术场景光照的模拟,在保证光源 相互对称的前提下,适当设置各个光源之间的距离和光源照射场景的倾 角,使得每个光源产生的影子不会互相重叠,否则在相同的光照强度下, 相互重叠的阴影需要更多的光源光照才能减弱消除。
[0190]
综上讨论,本发明提出了以场景原点为中心,在其正上方以十字对 称方式放置4个光源,并依据虚拟手术场景的规模大小设置光源之间的 距离和照射场景的倾角,以此作为虚拟手术场景光照仿真模型,其中, 该光照仿真模型的示意图如图6所示:
[0191]
step3根据所述完整的深度图和所有的光照进行抗锯齿处理,对虚拟 手术场景光照的优化仿真。
[0192]
为了加速光照计算,本发明采用了交叉采样延迟渲染技术。为了使得最 终的渲染效果与采用非交叉采样方式的渲染效果相近,需要获取光照结果中 相邻像素的一致性信息,并以此为依据采用高斯滤波对光照结果进行抗锯齿 处理。首先设定一个不连续阈值。然后读取场景的法向量缓存来生成一个模 糊参数,用于判断场景中的某个点是否是一个不连续点。设法向量中的一点 x,可以通过累加该点周围指定数目的像素点到该点的距离来生成模糊值。 如果模糊参数大于设定的阈值,则该像素点即为不连续点。然后将判断的结 果保存在一个不连续缓存中。设场景中位于(u,v)处点的模糊参数为 factor
blur
(u,v),则有:
[0193][0194]
其中,offset[]用来查找周围像素的查找表。
[0195]
采用高斯滤波来消除场景的锯齿感。为了加速运算,将高斯滤波分为分 成x方向和y方向先后进行。在进行高斯滤波之前,首先读取不连续缓存来 判断当前像素是否是一个不连续点:
[0196]
1.如果该像素不是不连续点,则从该像素所处位置的x轴正负两个方 向需找指定数目的相邻像素进行滤波处理。如果在x轴的某个方向上查找 到的相邻像素也是一个非连续点,则不再往这个方向继续查找相邻像素。
[0197]
2.如果该像素是一个不连续点,则像素(x0+1,y0)、(x0,y0+1)、 (x0+1,y0+1)的值与像素(x0,y0)不相关,因此,只要分别往x轴和y轴方向查 找像素进行滤波处理,直到遇到另一个不连续点为止。
[0198]
实施例三
[0199]
请参照图2,一种虚拟手术中点光源实时采样装置1,包括存储器2、 处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所 述处理器3执行所述程序时实现实施例一中的各个步骤。
[0200]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围, 凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用 在相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1