基于路径追踪的室内阴影去除数据集生成方法
- 国知局
- 2024-07-31 23:26:30
本发明涉及计算机视觉领域,特别是涉及基于路径追踪的室内阴影去除数据集生成方法。
背景技术:
1、阴影是一种普遍存在的现象,可以在直接和间接照明下由遮挡产生。在室内场景中,由于光照条件的复杂性,阴影的处理尤为困难。室内场景通常包含多种直接和间接的光源,这些光源与物体的相互作用产生各种阴影效果,包括硬阴影、软阴影以及由于光线反射和折射产生的复杂阴影。
2、在计算机视觉和图形学领域,阴影的去除非常重要,因为它可以增强各种计算机视觉任务的性能,例如对象分割和跟踪、内在分解和3d重建。
3、现有的阴影去除技术主要依赖于深度学习方法,这些方法需要大量的有标签数据集进行训练。然而,现有的数据集往往存在以下问题:
4、1、数据集的不足和噪声:公开的数据集可能包含不准确或不完整的阴影标签,这会导致训练出的模型在实际应用中性能下降。
5、2、阴影标签的歧义:在室内场景中,阴影与非阴影区域之间可能存在视觉上的相似性,这使得自动生成准确的阴影标签变得困难。
6、3、光照条件的单一性:大多数现有数据集集中在直接照明条件下的阴影,缺乏对间接照明条件下阴影的考虑,这限制了模型在处理室内复杂光照场景时的泛化能力。
7、4、场景的多样性和真实性:现有的三维场景数据集可能在物体布局、家具多样性以及光照条件方面存在局限性,这影响了数据集的多样性和真实性,从而限制了训练数据的质量和模型的适用性。
8、5、渲染技术的局限性:传统的渲染技术可能无法准确模拟光线在室内环境中的传播和相互作用,特别是在处理多光源、复杂材质和空间布局时。
9、上述数据集问题导致现有的阴影去除方法有如下缺点:
10、(1)对于室外的复杂场景,间接阴影去除的效果不理想;
11、(2)对于室内场景,直接和间接阴影去除的效果很不理想。
12、同时,虽然目前存在开源的大型三维场景数据集,但是这些数据集在某些方面存在某些问题,比如房间过于空旷、家具和家具之间相交和灯具悬浮在空中等问题,会导致室内场景阴影去除的效果不好。
技术实现思路
1、本发明提出了一种基于路径追踪的间接阴影定义,并创建了一个新的阴影去除/检测数据集,该数据集考虑了间接阴影。该合成数据集包含超过20000个有阴影和无阴影图像对。实验结果表明,本方法的室内阴影去除数据集生成方法,可以生成适用于各种室内环境的高质量阴影去除数据集,解决了背景技术中披露的问题。
2、为了解决上述技术问题,本发明所采用的技术方案是:
3、1、场景分析和家具处理:对开源的三维室内场景数据集进行预处理和清洗,以消除数据噪声和不一致性;
4、2、相机参数选取:根据场景的三维信息筛选合适的房间,并为所选房间确定至少一个相机的外参,包括位置和方向;
5、3、灯光设置:根据相机光轴与场景的交点位置动态设置光源,以模拟室内照明条件下的阴影生成;
6、4、路径追踪算法:使用路径追踪算法和间接阴影的定义来渲染生成包含阴影和无阴影的图像对,以构建阴影去除训练数据集。
7、为了达到上述目的,本发明采用以下技术方案,包括以下步骤:
8、步骤一:获取三维场景数据集,去除数据集中每个场景中家具的自相交问题,得到一个没有物体碰撞的场景布局信息,对于家具的自相交问题的解决方案如下:
9、(1-1)遍历三维场景数据集中每个房间,得到每个房间里家具的包围盒和与之对应位置信息。
10、(1-2)对房间ri里的所有家具根据包围盒的体积进行升序排列,组成一个集合fall。
11、(1-3)建立待检查碰撞的集合fcheck=fall。
12、
13、(1-4)从fcheck中选体积最小的家具f,然后和fall进行xy平面经行包围盒的碰撞检查,假如包围盒碰撞,进行下一步检测。否则从fcheck中删除家具f,直到fcheck为空。
14、(1-5)使用公开计算几何算法库cgal中的polygon_mesh_processing::do_intersect()函数进行碰撞检测,假如没有发生碰撞,从fcheck中删除家具f,跳到步骤(1-4)。假如发生了碰撞,进行步骤(1-6)去除家具之间的碰撞。
15、(1-6)通过步骤(1-1)得到的当前家具f的位置信息,以该位置为中心,逆时针分别向右、上、左、下循环向外移动以检测碰撞,具体实施步骤如下:
16、初始化步长为0.05米,移动次数为一步。家具f先往右移动一步,然后经行碰撞检测。假如碰撞,则往上移动一步,继续进行碰撞检测。此时经过半轮,每经过半轮移动次数增加一次,假如碰撞,往左移动两步。发生碰撞继续往下移动两步。以上过程完成了一轮判断,假如依旧碰撞,重复上述操作,直到移动次数增加为10次,也就是移动了0.5米。假如最终没有发生碰撞,修改步长为0.025米,从当前位置逐步往回移动,直到发生碰撞,最终物体的位置取发生碰撞的前一步所在位置。然后从fcheck中删除家具f,跳到步骤(1-4)。假如依旧碰撞,进行步骤(1-7)。
17、(1-7)在以上移动之后,先把家具f移动到原来的位置。假设和目前家具f发生碰撞的家具的集合为fcollsion,然后从fcollsion中选取出体积最小的家具fc与fall进行上述的碰撞检测。假如fc在第(1-6)步之后依旧发生了碰撞,那么将从fall中删除家具f,把移动fc移回它之前的位置,跳到(1-4),否则继续fcollsion的家具碰撞检测。假如fcollsion中所有的家具移动之后没有碰撞,那么从fcheck中删除家具f,跳到第(1-4)步。
18、通过上述步骤一最终得到一个没有物体碰撞的场景布局信息。
19、步骤二:根据给定的场景si∈s,首先遍历场景si中每个房间的具体信息(房间的大小、包含的物体和每个物体的位置信息等)。然后在场景si中的每个房间找出n个相机外参cparm。相机外参包括位置、旋转、朝向。
20、首先在房间的包围盒内随机选取一个三维位置tn(x,y,z),其中z的取值范围介于1.2米和1.8米之间。相机的翻滚角roll设置为0°,俯仰角pitch和航向角yaw随机取值,俯仰角pitch的取值范围介于70°到90°之间,航向角yaw的取值范围介于0°到360°之间。
21、之后选取符合以下要求的相机外参cparm,不符合条件的直接抛弃:
22、(2-1)假设相机光轴与场景的交点为pintersection,该交点必须和相机处于同一个房间,并且相机到交点pintersection的距离介于3到5米之间。
23、(2-2)家具在整个相机视角中的占比介于35%到70%之间。
24、(2-3)单个家具物体在视角中的占比不超过30%。
25、其中家具不包括天花板,墙壁和地面。
26、步骤三:根据步骤二中获取的相机位置来设置光源,房间内的光源进行设置的步骤如下:
27、(3-1)首先根据每个房间的信息找到房间中光源的信息,同时选择步骤二中的一个相机外参cparm。
28、(3-2)计算相机的光轴与房间交点pintersection与房间中每个光源lk的距离。对于距离小于2.5米(该距离是xy二维平面距离)的光源设置为开启,否则关闭该光源。光源的亮度根据当前开启光源的数量和光源与交点pintersection之间的距离来自适应设置。
29、(3-3)假如在交点pintersection的2.5米内没有任何开启的光源,程序将在以pintersection点为圆心,半径为2.5米的xy平面上的圆内采样一个点并在该点上插入一个光源,并设置该光源的z值和天花板对齐,亮度设置如步骤(3-2)所述。
30、(3-4)在生成以上光源之后,开始使用阴影图去判断该光源产生的阴影是否足够。
31、具体步骤如下:
32、①在光源上面随机采样10个左右的位置,然后使用模型矩阵、视角矩阵和透视矩阵把相机转移到其中的一个光源位置p_light,然后从这个方向生成一张深度图dl。
33、②选取的相机外参,然后根据相机外参同样生成一张深度图dc,然后把深度图dc的每个像素转换得到它在光源空间坐标下的纹理坐标,然后从dl取出该点的深度值,然后通过dc中逐像素对比得到一张阴影图v。
34、其中i,j是像素的坐标。
35、③通过对每个光源上采样的位置生成的深度图dli th和dc对比之后得到的阴影图vi th,然后计算vi th中阴影的比例p_shadowi th,然后把所有阴影图的p_shadowi th加起来取平均得到最终的阴影占比p_shadowfinal,然后设置一个阈值,假如大于这个阈值就保留这个光源的位置,否则丢弃该光源位置,跳到步骤(3-3),采样一个新的光源位置。假如重复若干次之后依旧没有找到符合要求的光源位置,那么丢弃该相机外参cparm,选择一个新的相机外参。
36、(3-5)在距离交点pintersection 2到4米之内的距离,采样一个位置,并且该位置在相机视角之外的地方,然后在这个位置随机的选择一个点光源或者面光源放置到该位置。假如是面光源,以交点pintersection为圆心的一个圆里面采样一个点p',光源的朝向是指向点p'。这个两种的光源的亮度是基准亮度istanderd的五分之一。
37、步骤四:在得到步骤一中的场景物体布局信息、步骤二中的相机外参和步骤三中的光源信息之后,使用修改后的路径追踪算法来渲染图像。该算法主要用于生成没有阴影的直接光照图和没有阴影的间接光照图,其中间接光照图中的阴影叫做间接阴影。间接阴影的定义如下:
38、着色点pshading在周围有遮挡的情况下亮度比没有遮挡的时候更加暗。
39、如下定义两个函数来描述渲染的过程,函数如下:
40、函数estimatedirectlighting(x,ωo,with_shadow)用于计算直接光照的辐射度,直接光照图使用该函数来生成,该函数具体执行步骤如下:
41、假设当前着色点为点pshading,光线的出射方向为ωo,当with_shadow设置为true时,假如入射光线来源于光源并且光源与着色点之间有遮挡,那么将丢弃该光线的辐射度l'。当with_shadow设置为false时,将不考虑光源和着色点pshading之间的遮挡,从而生成没有阴影的直接光照图。其中计算总辐射度的公式如下:
42、lemit=pshading.emittedlight(ωo)
43、l=(l'·bsdf·cos(θ)/pdf)+lemit,
44、其中,bsdf表示着色点pshading的双向散射分布函数pshading.emittedlight(ωo)表示着色点pshading往ωo发射出的辐射度,假如着色点pshading是光源,那么该值不为0。ωi是采样得到的入射光线的方向,从着色点pshading指向光源。θ是ωi与着色点pshading法线的夹角,pdf是采样入射光线时所用采样方法的概率密度函数。
45、函数estimateindirectlighting(x,ωo,with_shadow,ray_length,bounce)用于计算间接光照的辐射度,该函数具体执行步骤如下:
46、假设当前x的输入为着色点为点pshading,光线的出射方向为ωo,ray_length为着色点pshading到相机的距离,bounce用于计数该光线与表面相交的次数,初始输入为0。采样的入射光线的方向为ωi,从着色点pshading指向次级光源,与次级光源的交点为p'shading,同时设置变量trans_depth用于计算光线穿过透明表面的次数。该函数将会被递归调用来追踪光线的路径,下一次调用该函数时着色点将会变为p'shading,光线的出射方向变为-ωi,ray_length为点pshading到点p'shading的距离,bounce将会加1。该函数递归终止条件为:最后一次递归过程中光线击中光源和被俄罗斯轮盘赌随机的终止。
47、由于该函数是计算间接光照,当bounce≤1时该光线的路径有打到了光源的话,那么该条光线的辐射度lemit将直接设置为0,否则返回光源的辐射度lemit。
48、当with_shadow设置为false,光线的bounce为1时,假如符合:ray_length小于阈值r、trans_depth为奇数。
49、那么交点p'shading将会被认为是透明的,即设置交点p'shading处的bsdf为1。然后递归的计算间接光照辐射度l,得到没有阴影的间接光照图。
50、其中计算总辐射度l的公式如下:
51、
52、其中ωi是采样得到的入射光线的角度,θ是ωi与着色点pshading法线的夹角,pdf是采样入射光线时所用采样方法的概率密度函数,bsdf是着色点pshading材质的bsdf,cpdf是俄罗斯轮盘赌设置的一个概率。
53、其中渲染图像的步骤如下:
54、(1)根据路径追踪算法生成有阴影的原图is。
55、(2)使用estimatedirectlighting()函数来生成没有阴影的直接光照图
56、
57、(3)使用estimateindirectlighting()函数来生成图像然后在和is中取最大值来得到x是相机发射方向为ωo的光线与场景的交点。
58、
59、
60、(4)把没有阴影的直接光照图和没有阴影的间接光照图在线性空间相加得到原图is的无阴影图。
61、本发明的有益效果在于:
62、构建了一套完整的室内阴影去除数据集生成流程,该流程能够利用现有的三维室内场景数据集,通过路径追踪渲染技术,有效地生成包含阴影和无阴影的图像对。这种方法不仅提高了阴影去除算法的训练效率,而且增强了算法在处理复杂室内照明条件下的鲁棒性;
63、通过精确控制光源设置和相机外参的选择,本发明能够生成高质量的阴影去除数据集,这些数据集能够真实地反映室内环境中的光照变化和阴影特性,从而为阴影去除网络提供更丰富、更真实的训练样本;
64、利用本发明中的方法生成的数据集训练的阴影去除网络,能够使网络有效地去除室内场景中的直接阴影和间接阴影,特别是在复杂的室内环境中,如多物体遮挡和光线反射等情况,网络仍然能够表现出色,提供高质量的阴影去除效果;
65、本发明的方法具有高效性,能够快速生成大量的阴影去除训练数据,从而加速了阴影去除算法的研发和优化过程。同时,由于采用了路径追踪算法,生成的图像质量高,为阴影去除网络的训练和评估提供了可靠的基础。
本文地址:https://www.jishuxx.com/zhuanli/20240730/197575.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。