一种3d模型的计算全息图快速生成方法

文档序号:6470680阅读:637来源:国知局
专利名称:一种3d模型的计算全息图快速生成方法
技术领域
本发明涉及利用全息技术取得光学图像的方法,具体是指一种3D模型的计算全息图的快速生成方法。

背景技术
目前,大部分三维物体的显示是通过投影到二维平面上实现的,丢失了景深信息,观察者只能通过遮挡关系等线索感知三维物体。三维立体显示技术的出现使真实再现三维场景成为可能。
通过给左、右眼呈现两幅不同的视差图像,可以提供视觉感知的深度信息,达到三维显示的目的。双色立体图、立体眼镜、偏光镜等都是采用“视差图像对”原理的立体显示技术,但都需要佩戴眼镜,使用不便;同时视差图像对生成时,对焦距等参数的选择也有一些限制,某些场景的三维表现不理想。
根据双眼的视角不同,多视图立体显示器通过双眼不同的观察角度获取具有视差的左右两幅图像而获得立体视觉感受。但它对观测区域有特定要求,头部的转动可能出现重影等问题。因此,该技术需要头部跟踪系统,相关技术复杂;并且该系统只适合单人收看。
全息图能同时记录物光波的强度和相位信息,可以逼真地再现物体的三维像,其应用范围覆盖了商品虚拟展示、广告、娱乐、教育及艺术等领域,显示了巨大的市场潜力。计算全息图的产生不需要复杂和精密的相干光设备,并且可以产生现实世界中并不存在的物体的全息图,且能非常容易地进行参数的调整。通过相干光照射,可以在空间再现原场景的光场分布,因此,其逼真度很高,观察者不需佩戴附属观察设备,可供多人观察。
在二维的物平面上,肉眼可观察尺寸物体的计算全息图需要接近光波波长量级采样,计算全息图要分别在物平面上和全息面上采样后计算产生。由于光波的波长相对肉眼可观察的尺寸要小很多,因此采样点数量很大,从而导致计算量非常巨大,需要耗费很长的时间。
很多软件工具可以创作3D模型,它可以仿真现实场景,在广告、游戏等领域已经广泛应用。计算全息图的优势之一是不需要实际场景,而3D模型作为一种虚拟场景,其计算全息图的生成技术目前较少且发展不成熟。通常的方法是将3D模型分层,按二维的方法分别计算全息图,然后叠加在一起获得三维物体的全息图。这样将进一步增加计算量。
综上所述,3D模型的计算全息图具有很大的实用价值,但现有的技术没有利用3D模型本身的构造特点来设计快速算法。其技术瓶颈在于计算量非常巨大,需要耗费的时间很长;同时,计算量巨大也相应地对硬件提出了更高的要求,导致计算设备的投资增加。


发明内容
本发明在于克服现有技术的缺点和不足,提供一种3D模型的计算全息图的快速生成方法。3D模型由三角面片组成,从其顶点控制其外观表现出发,通过推导建立了顶点参数与计算全息图之间的联系,得到一组生成计算全息图的公式。只要将3D模型各顶点的数据代入公式,就可以求出计算全息图,从而节省了计算量、适用性强、精度高、设备要求低,且可生成任意分辨率的计算全息图。
本发明的目的是通过以下方案实施的一种3D模型的计算全息图快速生成方法,包括以下步骤,如图9所示 (1)根据需要确定全息面的位置与大小,选择全息面上的各采样点的位置,即得到各采样点的坐标,则各采样点及其坐标表示为S(xs,ys,zs),置此时各采样点S(xs,ys,zs)的光场初值Us(xs,ys,zs)为0; (2)由于3D模型由三角面片组成,其顶点控制其外观表现,标记3D模型中通过“背面消隐”后保留的三角面片为0,表示其没被处理过。
使用“背面消隐”技术,可以确定3D模型中哪些三角面片的光场可以投射到全息面上。在3D模型中,根据各三角面片的顶点的排列顺序和3D模型的规定,可以确定三角面片的正面。一般3D模型中规定,通过三角面片的任意两边对应的矢量叉乘后得到其法线。该法线与全息面法线的点乘除以它们的模可得两法线夹角的余弦,如果该余弦非正,则背对全息面,标记为1,其它标记为0; (3)选择任意标记为0的三角面片,标记为1,在世界坐标系中,设标记为1的三角面片的三个顶点坐标分别是Aw(xwa,ywa,zwa)、Bw(xwb,ywb,zwb)和Cw(xwc,ywc,zwc),如图1,将该标记为1的三角面片△W中最长的边变换到x轴上,将最长边定为AwCw,这样将保持在第一象限和第二象限分别有一个子区域。计算空间任意两点(x1,y1,z1)和(x2,y2,z2)距离的公式为 对任意的三角形面片,根据其三个顶点的坐标,可以分别计算三条边的长度,这样可以确定边AwCw。
接下来要确定点BW至边AwCw的垂足V(xv,yv,zv),作为移动到原点的基点。将图1中各点看作从原点发出的向量终点,则直线AwCw可以表示为 其中

表示直线AwCw方向向量 t表示一个(-∞,+∞)范围内的实数。由垂直关系,可知 即 将式(2)与式(3)代入上式,有 根据点Aw、Bw、Cw的坐标,得到各向量分量,代入上式后 即 (xwc-xwb)(xwa-xwc)+t·(xwa-xwc)2+(ywc-ywb)(ywa-ywc)+t·(ywa-ywc)2 +(zwc-zwb)(zwa-zwc)+t·(zwa-zwc)2=0 整理后得 这样就求出了t,将其代入式(2)可确定垂足V的坐标(xv,yv,zv),即 然后把垂足V移动到世界坐标系的原点0,同时对应地将整个三角面片△W进行移动,△W变换成△W1,对应的坐标为 则该标记为1的三角面片平移后三个顶点的坐标分别是A1(x1a,y1a,z1a)、B1(x1b,y1b,z1b)和C1(x1c,y1c,z1c),如图2; (4)对步骤(3)中平移后标记为1的三角面片△W1进行旋转 (4.1)将△W1绕z轴旋转α,使边A1C1旋转至x-z平面内,△W1变换成△W2,绕z轴旋转的矩阵为 其中 旋转后三角面片△W2如图3所示,△W2中各顶点坐标为 (4.2)然后三角面片△W2绕y轴旋转β,使边A2C2与x轴重合,△W2变换成△W3,绕y轴旋转的矩阵为 其中 旋转后三角面片△W3如图4所示,旋转后△W3中各顶点坐标为 (4.3)然后三角面片△W3绕x轴旋转γ至x-y平面内,△W3变换成△W4,绕x轴旋转的矩阵为 其中 旋转后三角面片△ABC如图5所示,旋转后其各顶点坐标为 则该标记为1的三角面片旋转后三个顶点的坐标分别是A(xa,ya,za)、B(xb,yb,zb)和C(xc,yc,zc)。这样,最后三角形面片便旋转到了x-y平面内,并以y轴为分界线分割成两个子区域,这里把图5所示三角面片在坐标系中的位置,称为“标准位置”,在该位置,整个三角面片在x-y平面内,因此没有指出z轴。
式(9)、式(11)、式(13)可合并为简洁的形式 世界坐标系中的任意三角面片经步骤(3)和步骤(4)的调整最终都可以达到“标准位置”。
(5)根据步骤(3)的V(xv,yv,zv)和步骤(4)中的M1、M2、M3,将全息面进行平移和旋转,使全息面与该标记为1的三角形面片的相对位置,在三角面片坐标变换后保持不变,具体的方法是 要计算的是全息面上各采样点的光场,因此,对全息面位置的变换,体现在对各采样点S(xs,ys,zs)位置的变换,该变换与该标记为1的三角形面片的变换完全相同,以保持全息面与该标记为1的三角形面片的相对位置不变。设变换后的采样点及其坐标为S′(u,v,η),则通过下式求变换后采样点的位置 (6)计算全息面上各采样点S′(u,v,η)的光场U(u,v,η),然后累加到全息面上各采样点原来的光场值Us(xs,ys,zs)上 ΔABC可看作一个衍射孔径,全息面可看作衍射屏,如图6。根据菲涅耳衍射积分公式 其中j2=-1,λ为波长,k为波数,定义为k=2π/λ,e为自然常数,U(x,y)是x-y平面内三角面片上的光场的分布。
三角面片上的相位分布不影响强度分布,而人眼对相位不敏感,因此想从计算全息图重建的是强度分布。可以让物光场U(x,y)的相位为

这样式(16)简化为 |U(x,y)|表示一个0相位的光场,可以通过三角面片的顶点光场插值获得。由于接下来的分析不涉及U(x,y)的相位,因此以下不加区别地使用符号|U|与U。
任意一个三角型面片都可以旋转到图5的状态,它实际上由两个三角形组成,所以式(17)可以变形为 式(18)中U1(x,y)和U2(x,y)分别代表三角形△1和△2上的光场。
进一步地,设 则式(18)可表示为 如图7所示,已知三角形各顶点的坐标及光场,通过公式可推导出三角型中任一点的坐标与光场U1(x,y)、U2(x,y)的关系。这里点A、B、C的坐标分别是(xa,0)、(0,yb)、(xc,0),对应光场为Ua、Ub、Uc,U0是原点处光场,在对△1和△2的光场插值时使用 按y方向插值得到 光场Ur是为插值引入的中间变量,与其对应的点在y轴上,其y坐标与插值点的y坐标相等,Up、Uq对应三角形边上的点P、Q处光场。
根据三角形的比例关系,点P、Q的x坐标分别为 按x方向插值得到两个三角形的光场 为了计算式(19)和式(20),将二重积分转化成两个一重积分,先按x方向积分,再按y方向积分 根据式(28)可将式(19)转化为 根据式(29)可将式(20)转化为 (a)当u≠0且v≠0时,根据公式(30)、(31)求定积分后,将结果带入式(21)可得 将f1表示成u、v与η的三元多项式的形式,多项式的项分别为u4、u3·v、u3·η、u2·v2、u2·v·η、u·v3、u·v2·η与v3·η f1的多项式系数计算时,需要先计算其系数r1、r2、r3,其计算公式为 计算多项式项u4的系数时,需要先计算其系数f11、f12、f13,其计算公式为 计算多项式项u3·v的系数时,需要先计算其系数f14、f15、f16,其计算公式为 计算多项式项u3·η的系数时,需要先计算其系数f17、f18、f19,其计算公式为 计算多项式项u2·v2的系数时,需要先计算其系数f31、f32、f33,其计算公式为 计算多项式项u2·v·η的系数时,需要先计算其系数f34、f35、f36,其计算公式为 f35=j·λ·yb·(xa-xc)2·(Ua-2Ub+Uc) 计算多项式项u·v3的系数时,需要先计算其系数f37、f38,其计算公式为 计算多项式项u·v2·η的系数时,需要先计算其系数f41、f42,其计算公式为 计算多项式项v3·η的系数时,需要先计算其系数f43、f44,其计算公式为 f44=-f43 将f2表示成u与v的二元多项式的形式 f2=f21·u6+f22·u5·v+f23·u4·v2+f24·u3·v3+f25·u2·v4 多项式项u6的系数f21用下式计算 多项式项u5·v的系数f22用下式计算 多项式项u4·v2的系数f23用下式计算 多项式项u3·v3的系数f24用下式计算 多项式项u2·v4的系数f25用下式计算 作为公式(32-1)中的分子f2要求不为0,这里限定u≠0且v≠0来满足该条件。
公式(32-1)在使用时,需要引用上面计算系数r1、r2、r3、f11、f12、f13、f14、f15、f16、f17、f18、f19、f21、f22、f23、f24、f25、f31、f32、f33、f34、f35、f36、f37、f38、f41、f42、f43、f44的一组公式,称这一组公式为与公式(32-1)相关联的公式。对于某个三角面片,在计算所有采样点光场时,系数r1、r2、r3、f11、f12、f13、f14、f15、f16、f17、f18、f19、f21、f22、f23、f24、f25、f31、f32、f33、f34、f35、f36、f37、f38、f41、f42、f43、f44这些值只需要计算一次,因为它们的计算式中并不包含采样点的位置信息,它们只与三角面片本身相关,而与采样点的坐标无关。可见,引入这些系数符号,可以节约计算开销。
(b)当u=0且v≠0时,根据公式(30)、(31)求定积分后可得下列更简洁的形式 其中,r4、f3、f4、f5、f6及下面要使用的r5这些系数是为了方便计算引入的符号,它们的计算公式如下 f4=r5·(Ua+Uc-Ub),f5=r5·Ub,f6=2·(Ua+Uc)·(xc-xa)·π-1 公式(32-2)在使用时,需要引用上面的一组公式,称这一组公式为与公式(32-2)相关联的公式。对于某个三角面片,在计算所有采样点光场时,r5、f3、f4、f5、f6这些值只需要计算一次,因为它们也只与三角面片本身相关。
(c)当u=0且v=0时,根据公式(30)、(31)求定积分后可得下列更简洁的形式 在上述(a)、(b)、(c)各情形中,j2=-1,λ为波长,k为波数,定义为k=2π/λ,e为自然常数,Ua、Ub、Uc是x-y平面内三角面片三个顶点A、B、C的光场;上述公式(32-1)、公式(32-2)、公式(32-3)是在不同条件下用不同的形式计算同一个量,统称为公式(32),与公式(32-1)、公式(32-2)相关联的公式,统称为与公式(32)相关联的公式。若要求取衍射到空间任一点的光场,只要给出该点的坐标(u,v,η),以及三角面片顶点的坐标与顶点处的光场,然后利用以上的一组公式,就可以求出其光场U(u,v,η)。最后将U(u,v,η)对应累加到全息面上各采样点的原光场值Us(xs,ys,zs)上。
(7)判断是否有标记为0的三角面片,若有,转步骤(3);若无,则求各采样点S(xs,ys,zs)处参考光的光场,叠加到Us(xs,ys,zs)上,产生计算全息图。
为更好的实现本发明,步骤(7)中所述参考光为球面光时,设参考点光源所在位置为(xr,yr,zr),发出的参考光在(xs,ys,zs)处的光场为 其中,R(xs,ys,zs)表示坐标为(xs,ys,zs)的采样点的参考光光场,R0表示与所选光源相关的复常数,其模为点光源发出的初始球面光波振幅,相位为点光源发出的初始球面光波的相位。
步骤(7)中所述参考光为平面光时,也需根据平面光波的特点计算该参考光在(xs,ys,zs)处的光场。从光源发出平面光波,到达距离τ处的分布Rτ为 其中Rp表示与所选平面光源相关的复常数,其模为光源位置的平面光波的振幅,相位为光源位置的平面光波的初始相位。设平面光波的单位方向向量为

朝向全息面,从坐标原点0到采样点S的向量为

则从S(xs,ys,zs)到光源所在平面的垂直距离为



的点积,将该距离作为τ代入公式(34),就得到了在点(xs,ys,zs)处的光场R(xs,ys,zs) 本发明的作用原理是相比较于将3D模型分层,然后分别在物面和全息面上采样的传统方法,本发明的特征是不对3D模型分层与采样,而是逐面片分别计算其全息面光场,然后将它们叠加在一起而得到计算全息图。由于3D模型由三角面片组成,其顶点控制其外观表现。每个三角面片可看成一个衍射孔径,然后可以利用菲涅耳衍射积分公式计算采样点的光场。由于三角面片内部的点光场由高洛德着色模式,通过双线性插值得到,因此,在该孔径上的光场分布可以表示为三个顶点的解析式,这样,全息面光场的分布仅取决于三角面片的三个顶点,本发明通过菲涅耳衍射积分公式推导出了全息面上任意一点光场与三角面片顶点光场间的关系,当计算全息面上采样点光场时,只要将特定三角面片顶点坐标和光场代入式(32)即可求出结果。但由于式(32)的推导是假设三角面片在“标准位置”的前提上进行的,因此,在世界坐标系中的三角面片需要变换到“标准位置”才可直接适用,同时,对三角面片实施的变换,同样在全息面上进行,使全息面与3D模型中三角形面片的相对位置,在坐标变换后保持不变。
本发明与现有技术相比,具有如下优点和有益效果 (1)极大地节省了计算量,用本发明生成3D模型的计算全息图,可以以0(1)的时间复杂度计算空间任意点的光场,从而极大地提高了计算速度。设3D模型由M片三角面片组成,用传统方法要分别在3D模型的物平面上和全息面上采样后计算生成,设物平面上和全息面上的采样点数量都为N,全息图上每一个采样点和3D模型上的所有点相联系,则要计算N*N次光场的叠加,时间为0(N*N);而用本发明,只要将特定三角面片顶点坐标和光场代入公式,就可以求出该面片在采样点的光场,时间为0(M),各面片的光场叠加后就得到了采样点的光场,时间为0(M*N)。由于M<<N,因此,新方法极大地节省了计算量。
(2)避免了物面的采样误差,从而有利于3D模型的精确重建。现有技术需要将3D模型分层,然后在各层次上按照二维物面全息图的方法计算。在二维的物面上,需要根据物面的实际大小与光波波长对其采样,然后用离散化的方法计算。采样点的光场表示受到表示方法的限制,必然有量化误差;在离散化的运算过程中,中间的计算步骤也必然伴随着舍入误差。而新方法不需要在物面采样,避免了量化误差;根据新方法的一组公式,可从3D模型的顶点信息直接计算全息面上各采样点的光强,因此计算过程是基于“连续”的方法,而不是“离散”的方法,避免了中间计算步骤的舍入误差。
(3)可渐进地生成任意分辨率的计算全息图。在现有技术中,当需要保持3D场景中物体的细节时,需要较高的物面采样率;反之可以用较低采样率。如果当前生成了低采样率的计算全息图,当需要获取高采样率的计算全息图时,物面的重采样导致低采样率下的计算结果难于利用。由于新方法不需要物面采样,可以先生成低分辨率的计算全息图,然后再计算更多的全息面采样点的光场,加入到低分辨率的计算全息图中,从而生成高分辨率的计算全息图。



图1是世界坐标中的三角面片示意图; 图2是三角面片移动到坐标系原点的示意图; 图3是三角面片绕Z轴旋转至X-Z的示意图; 图4是三角面片绕Y轴旋转至A2C2与X轴重合的示意图; 图5是三角面片绕X轴旋转至X-Y平面的示意图; 图6是三角面片上光场的衍射示意图; 图7是在三角面片上插值的示意图; 图8是3D模型通过本发明生成计算全息图的示意图; 图9是本发明3D模型的计算全息图产生的流程图。

具体实施例方式 下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例 如图8所示,3D模型由4个面构成,分别是△ABC、△ABD、△ACD、△BCD。点A的坐标为(-0.85,0,-0.68),点B的坐标为(0,0,-0.34),点C的坐标为(-0.22,0.36,0.46),点D的坐标为(-0.63,0.95,0),坐标系的刻度单位为毫米。相应各顶点的光场振幅A点为32,B点为85,C点为172,D点为40,这里光场振幅的单位为伏特/米,以下在没有指明的情况下都取该单位。这里选取的参考光为点光源,发出球面光波,R0=0.001,波长为625nm,位置坐标为(0,1,300)。全息面到世界坐标系中的原点距离为500毫米,全息面上一个采样点的S(0.6,0.3,500)的光场Us(0.6,0.3,500)初值为0。以该点的光场计算为例,其它各采样点的计算过程相同。
使用“背面消隐”技术,确定3D模型中哪些三角面片的光场可以投射到全息面上。在3D模型中,根据各三角面片的顶点的排列顺序,可以确定三角面片的正面,通过三角面片的任意两边对应的矢量叉乘后得到其法线。该法线与全息面法线的点乘除以它们的模可得两法线夹角的余弦,如果该余弦非正,则背对全息面,标记为1。其它标记为0。本3D模型全息面法线向量为(0,0,1),求得△ABC、△ACD、△ABD、△BCD的法线向量分别为(0.122,0.759,-0.306)、(0.838,0.178,-0.519)、(-0.323,-0.503,0.808)、(-0.638,-0.429,0.018),它们与全息面法线夹角的余弦分别为-0.372、-0.518、0.804、0.023。因此,只有△ABD、△BCD需要进行计算,标记为0,而△ABC、△ACD标记为1。
先选择三角面片△BCD进行处理,根据步骤(3)对三角面片△BCD进行平移。将其标记为1。根据式(1)计算三条边的长度,分别为BD=1.190、CB=0.904、CD=0.853,单位为毫米,其中长边为BD,其上垂足根据式(6)确定,为(-0.335,0.505,-0.159),这是进行移动的基点。根据式(7)平移后,点B、C、D的坐标分别为(0.335,-0.505,-0.181)、(0.115,-0.145,0.619)、(-0.295,0.445,0.159)。
然后根据步骤(4)旋转到标准位置,这需要三次旋转,其旋转矩阵为 根据式(14)旋转△BCD的三个顶点后的坐标依次分别为(-0.633,0,0)、(0,0.646,0)、(0.557,0,0)。至此,△BCD位于标准位置。
根据步骤(5),全息面各采样点S(xs,ys,zs)作同样的平移和旋转,变换后的全息面上各采样点坐标为S′(u,v,η),使变换后的各采样点与标准位置的△BCD的相对位置同原采样点与初始3D模型中△BCD的相对位置保持不变。全息面采样点S(0.6,0.3,500)作同样的平移和旋转,将上面求出的△BCD的平移基点坐标与旋转矩阵代入式(15),可得变换后的采样点S′的坐标(142.299,479.366,-10.919)。
根据步骤(6),将处于标准位置的△BCD及采样点S′(u,v,η)的相关参数代入公式(32-1)及相关联公式,可以计算出三角面片△BCD作用在全息面上任意采样点S′(u,v,η)的光场U(u,v,η)。这里,点D、C、B分别对应公式中的A、B、C。先计算出下列与△BCD参数相关的数值,见表一 表一 将上述值及采样点S′的坐标(142.299,479.366,-10.919)代入公式(32)及其相关联公式,可求出U(142.299,479.366,-10.919)=-1.001×10-5+7.581×10-6j。
最后把全息面上各采样点S′(u,v,η)的光场U(u,v,η)累加到全息面旋转前各采样点的光场值Us(xs,ys,zs)上,此刻完成了对△BCD的处理。将U(142.299,479.366,-10.919)累加到全息面上采样点S(0.6,0.3,500)的原光场值Us(0.6,0.3,500)上,即Us(0.6,0.3,500)=-1.001×10-5+7.581×10-6j。
根据步骤(7)判断,还需再处理三角面片△ABD,将其标记为1。根据步骤(3)对三角面片△ABD进行平移。根据式(1)计算三条边的长度,分别为BD=1.120、AB=0.916、AD=1.189,单位为毫米,其中长边为BD,其上垂足根据式(6)确定,为(-0.187,0.282,-0.239),这是△ABD及采样点进行移动的基点。根据式(7)平移后,点A、B、D的坐标分别为(-0.663,-0.282,-0.441)、(0.187,-0.282,-0.101)、(-0.443,0.668,0.239)。
然后根据步骤(4)旋转到标准位置,这需要三次旋转,其旋转矩阵为 根据式(14)旋转△ABD的三个顶点后的坐标依次为(0,0.845,0)、(-0.353,0,0)、(0.837,0,0)。至此,△ABD位于标准位置。
根据步骤(5),全息面采样点的S(0.6,0.3,500)与△ABD作同样的平移和旋转,以保持相对位置不变。将上面求出的△ABD的平移基点与旋转矩阵代入式(15),可得采样点S′的坐标为(142.579,-261.730,401.757)。
根据步骤(6),将处于标准位置的△ABD及采样点S′(u,v,η)的相关参数代入公式(32-1)及相关联公式,先计算出下列与△ABD本身相关的数值,见表二 表二 计算出全息面上各采样点S′(u,v,η)的光场U(u,v,η),然后累加到全息面上各采样点旋转前的光场值Us(xs,ys,zs)上,此刻完成了对△ABD的处理。将上述值及采样点S′(142.579,-261.730,401.757)的坐标代入公式(32)及相关联公式,可求出U(142.579,-261.730,401.757)=-0.0024-0.0002j。最后将U(142.579,-261.730,401.757)累加到全息面上采样点S(0.6,0.3,500)的原光场值Us(0.6,0.3,500)上,即Us(0.6,0.3,500)=-0.00241-0.000193j。
根据步骤(7)判断,所有三角面片都标记为1,没有需要处理的三角面片了。接下来叠加参考光。因为这里选取的参考光为点光源,发出球面光波,R0=0.001,所以将点光源R的坐标(0,1,300)与采样点S的坐标(0.6,0.3,500)代入公式(33),计算出在点S(0.6,0.3,500)处的参考光场为-0.00404+0.00294j。将其叠加到Us(0.6,0.3,500)上,最后获得计算全息图上的一个采样点S(0.6,0.3,500)的光场-0.00645+0.00281j。
在全息面上设置若干采样点,都按上述步骤计算其在计算全息图上的光场,就得到了计算全息图。
分别利用本发明与现有方法生成计算全息图的时间对比,见表三,新方法与传统方法均用C语言实现,并运行于Athlon xp 2500+CPU上,内存为256M。
从表三可以看出,新方法的速度比传统方法快2个数量级,并且随着现有技术中3D模型采样间距的减小,其优势更加明显。其原因是新方法计算过程与3D模型采样间距并无直接联系,它通过“连续”函数的积分,直接得到了全息图上采样点的数值。
表三 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求
1、一种3D模型的计算全息图快速生成方法,包括以下步骤
(1)根据需要确定全息面的位置与大小,选择全息面上的各采样点的位置,得到各采样点的坐标S(xs,ys,zs),置此时各采样点S(xs,ys,zs)的光场初值Us(xs,ys,zs)为0;
(2)标记3D模型中通过“背面消隐”后保留的三角面片为0,表示其没被处理过,其具体方法是在3D模型中,根据各三角面片的顶点的排列顺序和3D模型的规定,确定三角面片的正面,通过三角面片的任意两边对应的矢量叉乘后得到其法线;该法线与全息面法线的点乘,除以它们的模可得两法线夹角的余弦,如果该余弦非正,则三角面片背对全息面,标记为1,其它标记为0;
(3)选择任意标记为0的三角面片,标记为1,在世界坐标系中,设标记为1的三角面片的三个顶点坐标分别是Aw(xwa,ywa,zwa)、Bw(xwb,ywb,zwb)和Cw(xwc,ywc,zwc),其中最长边为AwCw,点BW到边AwCw的垂足为V(xv,yv,zv),则根据下列公式对该标记为1的三角面片进行平移,使垂足V移动到世界坐标系的原点0
则该标记为1的三角面片平移后三个顶点的坐标分别是A1(x1a,y1a,z1a)、B1(x1b,y1b,z1b)和C1(x1c,y1c,z1c);
(4)根据下列公式对步骤(3)中平移后标记为1的三角面片进行旋转
M1为绕z轴旋转的矩阵,M2为绕y轴旋转的矩阵,M3为绕x轴旋转的矩阵,其中α是该三角面片绕z轴旋转至其最长边到x-z平面内的角度,β是该三角面片绕y轴旋转至其最长边与x轴重合的角度,γ是该三角面片绕x轴旋转至x-y平面内的角度;
则该标记为1的三角面片旋转后三个顶点的坐标分别是A(xa,ya,za)、B(xb,yb,zb)和C(xc,yc,zc);
(5)根据步骤(3)的V(xv,yv,zv)和步骤(4)中的M1、M2、M3,对全息面中各采样点S(xs,ys,zs)进行平移和旋转,以保持全息面与该标记为1的三角形面片的相对位置在三角面片坐标变换后保持不变;
设变换后的采样点及其坐标为S′(u,v,η),则通过下式求变换后采样点的位置
(6)根据下列公式计算该标记为1的三角面片作用到全息面上各采样点S′(u,v,η)的光场U(u,v,η),然后累加到全息面上各采样点旋转前的光场值Us(xs,ys,zs)上
(a)当u≠0且v≠0时
将f1表示成u、v与η的三元多项式的形式,多项式的项分别为u4、u3·v、u3·η、u2·v2、u2·v·η、u·v3、u·v2·η与v3·η
f1的多项式系数计算时,需要先计算其系数r1、r2、r3,其计算公式为
计算多项式项u4的系数时,需要先计算其系数f11、f12、f13,其计算公式为
计算多项式项u3·v的系数时,需要先计算其系数f14、f15、f16,其计算公式为
计算多项式项u3·η的系数时,需要先计算其系数f17、f18、f19,其计算公式为
计算多项式项u2·v2的系数时,需要先计算其系数f31、f32、f33,其计算公式为
计算多项式项u2·v·η的系数时,需要先计算其系数f34、f35、f36,其计算公式为
计算多项式项u·v3的系数时,需要先计算其系数f37、f38,其计算公式为
计算多项式项u·v2·η的系数时,需要先计算其系数f41、f42,其计算公式为
计算多项式项v3·η的系数时,需要先计算其系数f43、f44,其计算公式为
f44=-f43
将f2表示成u与v的二元多项式的形式
f2=f21·u6+f22·u5·v+f23·u4·v2+f24·u3·v3+f25·u2·v4
多项式项u6的系数f21用下式计算
多项式项u5·v的系数f22用下式计算
多项式项u4·v2的系数f23用下式计算
多项式项u3·v3的系数f24用下式计算
多项式项u2·v4的系数f25用下式计算
(b)当u=0且v≠0时
其中,r4、f3、f4、f5、f6及下面要使用的r5这些系数是为了方便计算引入的符号,它们的计算公式如下
f4=r5·(Ua+Uc-Ub),f5=r5·Ub,f6=2·(Ua+Uc)·(xc-xa)·π-1
(c)当u=0且v=0时
在上述(a)、(b)、(c)各情形中,j2=-1,λ为波长,k为波数,定义为k=2π/λ,e为自然常数,Ua、Ub、Uc是x-y平面内三角面片三个顶点A、B、C的光场;
(7)判断是否有标记为0的三角面片,若有,转步骤(3);若无,则求各采样点S(xs,ys,zs)处参考光的光场,叠加到Us(xs,ys,zs)上,产生计算全息图。
2、根据权利要求1所述的一种3D模型的计算全息图快速生成方法,其特征在于步骤(7)中所述参考光为球面光,设参考点光源所在位置为(xr,yr,zr),发出的球面参考光在(xs,ys,zs)处的光场为
其中,R(xs,ys,zs)表示坐标为(xs,ys,zs)的采样点的参考光光场,R0表示与所选光源相关的复常数,其模为点光源发出的初始球面光波振幅,相位为点光源发出的初始球面光波的相位。
3、根据权利要求1所述的一种3D模型的计算全息图快速生成方法,其特征在于步骤(7)中所述参考光为平面光,在点(xs,ys,zs)处的光场R(xs,ys,zs)为
其中,设平面光传播的单位方向向量为
朝向全息面,Rp表示与所选平面光源相关的复常数,其模为光源处平面光波振幅,相位为光源处平面光波的初始相位。
全文摘要
本发明公开了一种3D模型的计算全息图快速生成方法,在世界坐标系中的三角面片经过平移和一系列的旋转后,变换到“标准位置”,同时,对三角面片实施的变换,同样在全息面上进行,使全息面与物面中的三角面片的相对位置在三角面片坐标变换后保持不变。通过菲涅耳衍射积分公式推导出全息面上任意一点光场与三角面片顶点光场间的关系,然后将特定三角面片顶点坐标和光场代入公式求出全息面上各采样点光场。本发明极大地节省了计算量、避免了物面的采样误差且可生成任意分辨率的计算全息图。
文档编号G06T15/00GK101458822SQ20081022061
公开日2009年6月17日 申请日期2008年12月30日 优先权日2008年12月30日
发明者军 李, 李艳辉, 武建华 申请人:暨南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1