一种基于光线追踪的计算全息遮挡处理算法制造技术

技术编号:18352050 阅读:56 留言:0更新日期:2018-07-02 02:25
本发明专利技术提出一种基于光线追踪的计算全息遮挡处理算法,属于全息立体显示、虚拟现实领域。首先通过对包围盒进行空间剖分构建KD‑Tree结构,控制KD‑Tree叶节点的大小,把物体之间的遮挡关系转化为KD‑Tree叶节点之间的遮挡关系问题,实现光线追踪过程。若干光线经过对KD‑Tree结构的追踪,根据返回值为非0的叶节点,得到每条光线追踪的可见物点;将不同视点下对应的子全息图按顺序组合得到最终的全息图,同时实现移动视差效果,根据最终的全息图得到给定的该物体的三维立体像图。本发明专利技术实现了全息成像中正确的物体遮挡效果,减少了遍历过程中的冗余计算,提高了光线追踪的效率,实现对点云模型进行光线追踪的快速求交计算。

【技术实现步骤摘要】
一种基于光线追踪的计算全息遮挡处理算法
本专利技术属于全息立体显示、虚拟现实领域,具体是一种基于光线追踪的计算全息遮挡处理算法。
技术介绍
我们生活在三维的立体世界之中,目前人们在三维信息的获取、储存、处理和传递等方面已经取得了很大的成就,然而把这些三维信息真实的显示出来却是面临的一个重大技术难题。能够反映真实世界的三维立体显示技术被认为是二十一世纪最伟大的革命之一,已经涉及到日常生活中的许多领域,如3D电影、娱乐表演、虚拟现实和军事训练等。三维显示目前已经成为一个前沿科技领域,吸引了许多科研工作者从事相关工作,也成为各国大力发展的下一代新型显示技术。全息三维显示由于其原理上的真三维特性,被业内人士普遍认为是终极三维显示技术。遮挡效果提供了三维空间中物体的深度信息,可以反应出物体之间的空间位置关系,是实现深度视觉最重要的因素,也是影响三维显示效果的重要因素。由于全息图计算过程本身就具有计算量大的特点,大多数全息图计算算法并没有考虑场景中物体之间以及物体自身遮挡效果的处理,这导致全息再现过程中物体的再现像无法还原出物体间正确的空间位置关系,呈现出“透明”的效果。
技术实现思路
本专利技术针对全息图计算中的遮挡处理问题,结合光线追踪算法内含的物体遮挡信息,同时考虑全息图具有的移动视差特点,将光线追踪应用于全息图计算,针对点云模型设计实现了具有遮挡效果的全息图计算算法,并通过数值实验和光学实验验证了算法的有效性;具体是一种基于光线追踪的计算全息遮挡处理算法;包括以下几个步骤:步骤一:针对某三维物体的点云模型,并将点云模型所在的空间包围盒进行剖分,建立KD-Tree加速结构;具体步骤如下:步骤101、计算给定点云模型的轴对称包围盒,该包围盒即为KD树的根节点。步骤102、计算当前节点在X、Y、Z坐标轴方向上的最大尺寸dmax=max(dx,dy,dz);当前节点的初始值为根节点;步骤103、判断最大尺寸dmax是否小于等于给定的阈值δ;如果是,则剖分结束。否则,进入步骤104;步骤104、沿最大尺寸dmax所在的轴对当前节点进行均匀等剖,新生成的子节点作为当前节点,返回步骤102;步骤105、剖分完成后,建立模型对应的KD-Tree结构,同时确定模型中各个物点和KD树叶节点之间的对应关系;对于模型中的任意一个物点,必定属于KD-Tree的某一个叶节点,同时KD-Tree的每个叶节点包含若干物点。步骤二、根据建立的KD-Tree结构,通过宽度优先遍历转换成线性存储结构,以便在GPU上进行存储和访问,实现光线追踪过程;具体步骤如下:步骤201、针对每条光线,判断该光线是否与当前节点相交,如果是,进入步骤202;否则,交点设为0并返回该交点值。当前节点初始值为根节点;步骤202、查询当前的遍历深度是否大于等于0,如果是,进入步骤203;否则,交点设为0并返回该交点值。步骤203、判断当前节点是否为叶子节点,如果是,进入步骤209;否则,获取当前节点的剖分轴,进入步骤204;步骤204、计算光线进入当前节点的交点在剖分轴上的分量inValue;步骤205、判断剖分轴的位置是否大于分量inValue,如果是,进入步骤206;否则,进入步骤207;步骤206、光线进入左子节点,光线射向右子节点,则把右子节点入栈;进入步骤208;步骤207、光线进入右子节点,光线射向左子节点,则把左子节点入栈;步骤208、遍历深度自增1,将光线进入的子节点作为当前节点,返回步骤203;步骤209、判断当前叶节点是否为空,如果是,进入步骤210;否则,交点设为0并返回该交点值。当前叶节点为空即不包含物点。步骤210、判断当前的遍历深度是否小于等于0,如果是,交点设为0并返回该交点值;否则,进入步骤211;步骤211、判断当前的遍历深度栈是否为空,如果是,则遍历深度减1,回退到当前节点的父节点,返回步骤210;否则,进入步骤212;步骤212、将当前节点的兄弟节点出栈,作为当前遍历节点;并判断光线是否与当前遍历节点相交,如果是,返回步骤202;否则,遍历深度减1,回退到当前节点的父节点,返回步骤210。步骤三、若干光线经过对KD-Tree结构的追踪,根据返回值为非0的叶节点,得到每条光线追踪的可见物点;返回值为0的交点忽略不计。步骤四、利用若干光线追踪得到的所有可见物点计算全息图;具体步骤如下:首先,初始人为设定全息图划分的子全息图个数;然后,对每个子全息图分别赋予一个独立的视点,根据光线追踪得到的所有可见物点,通过点源法计算每个子全息图中每个像素的值。计算公式如下:其中Omn表示第m行n列子全息图的复振幅分布,Nmn表示该子全息图可见的物点个数。Ap表示第p个点的振幅,j为虚数单位,k表示波数,rp为第p个点到当前全息图像素位置的距离,是第p个点的初始相位。最后,将不同视点下对应的子全息图按顺序组合得到最终的全息图,同时实现移动视差效果。步骤五、根据最终的全息图得到给定的该物体的三维立体像图。本专利技术的优点在于:(1)本专利技术一种基于光线追踪的计算全息遮挡处理算法,设计了一种虚拟栈结构,通过高效的二进制位运算,实现了GPU上栈的功能,解决了GPU对栈结构支持不完善的问题。(2)本专利技术一种基于光线追踪的计算全息遮挡处理算法,基于虚拟栈设计了GPU上KD-Tree的遍历算法,通过优化节点入栈的条件,减少了遍历过程中的冗余计算,提高了光线追踪的效率。(3)本专利技术一种基于光线追踪的计算全息遮挡处理算法,通过把全息图划分为子全息图,实现了全息成像的移动视差效果;同时设计了基于KD-Tree叶节点之间遮挡关系判断的光线追踪过程,实现了全息成像中正确的物体遮挡效果。(4)本专利技术一种基于光线追踪的计算全息遮挡处理算法,以KD-Tree叶节点包围盒和光线的相交关系作为该包围盒内物点和光线的相交关系,解决了传统把点作为面元处理计算效率低的问题,实现对点云模型进行光线追踪的快速求交计算。附图说明图1是本专利技术针对某点云模型进行空间剖分的二维视图;图2是本专利技术一种基于光线追踪的计算全息遮挡处理算法流程图;图3是本专利技术建立KD-Tree加速结构的剖分算法流程图;图4是本专利技术每个子全息图中的光线分布范围示意图;图5是本专利技术基于虚拟栈的KD-Tree遍历算法流程图;图6是本专利技术实施例中的节点入栈条件示意图;图7是本专利技术实施例中遮挡效果实验三维场景图;图8是本专利技术实施例中遮挡处理前后点云对比图;图9是本专利技术遮挡处理前后的数值和光学再现像对比图;图10是本专利技术移动视差实验场景三视图;图11是本专利技术不同视角下点云模型的再现像图。具体实施方式下面结合附图对本专利技术的具体实施方法进行详细说明。本专利技术设计了点云模型光线追踪的快速求交算法,通过对物体点云所在的空间包围盒进行剖分构建KD-Tree加速结构,控制KD-Tree叶节点的大小,把位于同一叶节点内的物点作为一个整体考虑,忽略内部各点之间的相互遮挡关系,从而物点之间的遮挡关系转化为KD-Tree叶节点之间的遮挡关系问题,这样就解决了光线追踪算法在用于点云模型时无法直接进行求交运算的问题,通过约束叶节点的大小实现比较精确的遮挡效果;同时使用KD树结构来进行光线追踪过程中场景遍历算法的加速。所述的一种基于光线追踪的计算全息遮挡处理算法,如本文档来自技高网...
一种基于光线追踪的计算全息遮挡处理算法

【技术保护点】
1.一种基于光线追踪的计算全息遮挡处理算法,其特征在于,包括以下步骤:步骤一:针对某三维物体的点云模型,并将点云模型所在的空间包围盒进行剖分,建立KD‑Tree加速结构;模型中的任意一个物点,必定属于KD‑Tree的某一个叶节点,同时KD‑Tree的每个叶节点包含若干物点;步骤二、根据建立的KD‑Tree结构,通过宽度优先遍历转换成线性存储结构,以便在GPU上进行存储和访问,实现光线追踪过程;具体步骤如下:步骤201、针对每条光线,判断该光线是否与当前节点相交,如果是,进入步骤202;否则,交点设为0并返回该交点值;当前节点初始值为根节点;步骤202、查询当前的遍历深度是否大于等于0,如果是,进入步骤203;否则,交点设为0并返回该交点值;步骤203、判断当前节点是否为叶子节点,如果是,进入步骤209;否则,获取当前节点的剖分轴,进入步骤204;步骤204、计算光线进入当前节点的交点在剖分轴上的分量in Value;步骤205、判断剖分轴的位置是否大于分量in Value,如果是,进入步骤206;否则,进入步骤207;步骤206、光线进入左子节点,光线射向右子节点,则把右子节点入栈;进入步骤208;步骤207、光线进入右子节点,光线射向左子节点,则把左子节点入栈;步骤208、遍历深度自增1,将光线进入的子节点作为当前节点,返回步骤203;步骤209、判断当前叶节点是否为空,如果是,进入步骤210;否则,交点设为0并返回该交点值;当前叶节点为空即不包含物点;步骤210、判断当前的遍历深度是否小于等于0,如果是,交点设为0并返回该交点值;否则,进入步骤211;步骤211、判断当前的遍历深度栈是否为空,如果是,则遍历深度减1,回退到当前节点的父节点,返回步骤210;否则,进入步骤212;步骤212、将当前节点的兄弟节点出栈,作为当前遍历节点;并判断光线是否与当前遍历节点相交,如果是,返回步骤202;否则,遍历深度减1,回退到当前节点的父节点,返回步骤210;步骤三、若干光线经过对KD‑Tree结构的追踪,根据返回值为非0的叶节点,得到每条光线追踪的可见物点;返回值为0的交点忽略不计;步骤四、利用若干光线追踪得到的所有可见物点计算全息图;步骤五、根据最终的全息图得到给定的该物体的三维立体像图。...

【技术特征摘要】
1.一种基于光线追踪的计算全息遮挡处理算法,其特征在于,包括以下步骤:步骤一:针对某三维物体的点云模型,并将点云模型所在的空间包围盒进行剖分,建立KD-Tree加速结构;模型中的任意一个物点,必定属于KD-Tree的某一个叶节点,同时KD-Tree的每个叶节点包含若干物点;步骤二、根据建立的KD-Tree结构,通过宽度优先遍历转换成线性存储结构,以便在GPU上进行存储和访问,实现光线追踪过程;具体步骤如下:步骤201、针对每条光线,判断该光线是否与当前节点相交,如果是,进入步骤202;否则,交点设为0并返回该交点值;当前节点初始值为根节点;步骤202、查询当前的遍历深度是否大于等于0,如果是,进入步骤203;否则,交点设为0并返回该交点值;步骤203、判断当前节点是否为叶子节点,如果是,进入步骤209;否则,获取当前节点的剖分轴,进入步骤204;步骤204、计算光线进入当前节点的交点在剖分轴上的分量inValue;步骤205、判断剖分轴的位置是否大于分量inValue,如果是,进入步骤206;否则,进入步骤207;步骤206、光线进入左子节点,光线射向右子节点,则把右子节点入栈;进入步骤208;步骤207、光线进入右子节点,光线射向左子节点,则把左子节点入栈;步骤208、遍历深度自增1,将光线进入的子节点作为当前节点,返回步骤203;步骤209、判断当前叶节点是否为空,如果是,进入步骤210;否则,交点设为0并返回该交点值;当前叶节点为空即不包含物点;步骤210、判断当前的遍历深度是否小于等于0,如果是,交点设为0并返回该交点值;否则,进入步骤211;步骤211、判断当前的遍历深度栈是否为空,如果是,则遍历深度减1,回退到当前节点的父节点,返回步骤210;否则,进入步骤212;步骤212、将当前节点的兄弟节点出栈,作为当前遍历节点;并判断光线是否与当前遍历节点相交,如果是,返回步骤202;否则,遍历深度减1,回退到当前节点的父节点,返回步骤210;步骤三、若干光线经过...

【专利技术属性】
技术研发人员:李妮魏辉刘霜婷
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1