三维物体

2024-08-16

三维物体(精选六篇)

三维物体 篇1

1.莫比乌斯圈的形成

莫比乌斯圈是由[德国]数学家莫比乌斯先生在150年前公布于世的.

随后, 科学家就把莫比乌斯圈定位在数学领域的拓扑学分支里, 其数学定义:单侧的、闭路的、反转定向的曲面.这样的莫比乌斯圈最终只剩下一个“表面”和一条“边缘”了. (见图1下部和图2)

2.莫比乌斯圈与普通环圈不同

经过观察不难发现:普通环圈和莫比乌斯圈除了在制作方法和制作过程上完全不同以外, 还表现在——如果在普通环圈和莫比乌斯圈的表面划线并沿线进行裁剪, 其裁剪结果竟会完全不同.

当对普通环圈的表面划线并沿线裁剪时, 能得到也只能得到——若干个与原圈等周长的“窄”普通环圈, 而不会得到其他种类的环圈.

当对莫比乌斯圈的表面划线并沿线裁剪时, 其裁剪结果却有两种:

(1) 在莫比乌斯圈表面划一条中线并沿线将该圈剪开, 会得到一个比原圈周长长一倍、比原圈宽度窄一半的普通环圈 (见图3) .

(2) 在莫比乌斯圈表面划2条平均分布的等距离线条并沿线条将该圈剪开, 则不仅能得到一个比原圈周长长一倍、比原圈宽度窄undefined的普通环圈, 同时还能在其中心部位再得到一个单独的、比原圈宽度窄undefined, 且周长与原圈等长的“窄”莫比乌斯圈 (见图4) .

(以上关于莫比乌斯圈的裁剪结果已经成为所有中外数学书籍里, 对莫比乌斯圈进行介绍的一部分) 唯此, 从莫比乌斯圈和普通环圈的制作方法与裁剪结果的不同可以说明, 它们并不是同类物体!

二、莫比乌斯圈不是三维物体

为了证明普通环圈与莫比乌斯圈不是同类物体, 下面通过两种不同的制作和生成该两种环圈的方法来比较并进一步证明.

1.第一种制作和生成方法

制作普通环圈的方法如前文 (1以及图1) 中描述的步骤进行.

而制作和生成莫比乌斯圈则需要通过两个相互关联的三维坐标系统 (下文称双重三维坐标体系) 来共同完成的.

首先, 看第一个三维坐标系 (xOy) (下文称主导三维坐标系) (见图5) .其原点位置为O, 该主导三维坐标系x-y平面上有一个以O为圆心的“正圆”.该“正圆”就是莫比乌斯圈表面中心位置的基本轨迹线.

其次, 看第二个三维坐标系 (x′O′y′) (下称从属三维坐标系) (见图6) .该从属三维坐标系的原点位置为O′, 处在主导三维坐标系内的“正圆”与x轴的交点上, 从属三维坐标系内x′—y′平面上的设定目标可以绕O′进行有规则运动.但该设定目标的有规则运动必须按照主导、从属两个三维坐标系之间相互依存, 对应旋转、位移、扭转的特殊函数关系进行.

必须明确的是:主导和从属三维坐标系在立体空间具体的相对位置关系上是相互平行或垂直的 (见图5, 6) , 其中 (xOy) 的三个参数 (xn, yn, zn) 为自变量, (x′O′y′) 的三个参数 (x′n, y′n, z′n) 为因变量, 且主体和从属三维坐标系之间应服从 (x′, y′) =F (x, y) 的对应关系.

这就建立了具有相互依存关系的双重三维坐标系统.在该系统里, 整个从属三维坐标系是主导三维坐标系里的一个整体运动单元, 随主体三维坐标系做有规律的运动——公转;而从属三维坐标系里运动单元自身的运动, 则与主导运动有着严格的对应受控运动关系——自转.因此, 处在该系统内设定目标的最终运动形式为合成运动. (既有公转, 又有自转)

图7是从属三维坐标系整体在 (xOy) x—y平面上, 沿“正圆”轨迹移动的示意图. (图中未画出0°~45°等处对应图形)

在图8里有一个左边带小圆圈的“⊥”形符号, 该符号中的竖直线是一条起始于O′点, 且垂直于x′轴, 同时, 它又是一条既平行于 (xOy) z轴, 也平行于 (x′O′y′) y′轴的直线.另外, 该符号中左边带小圆圈的横线是一条既平行于 (xOy) x轴, 也平行于 (x′O′y′) x′轴, 且属于该x′轴的一条直线, 并且该直线的中点过 (x′O′y′) 原点坐标O′, 且垂直y′轴的直线.

下面就以图8中“⊥”形符号作为基本单元来描述生成莫比乌斯圈的过程:当从属三维坐标系整体在 (xOy) x—y平面内绕O旋转2° (或1°) 的同时, (x′O′y′) 内x′—y′平面上过O′的直线也对应旋转1° (或0.5°) .当从属三维坐标系整体沿 (xOy) x—y平面上的基圆旋转、位移一周 (360°) 回到起始点O时, 左边带小圆圈的“⊥”形符号也在x′—y′平面上绕O′旋转半周 (180°) 回到起始位置O′, 此时该符号却正好被颠倒过来 (见图8) .如果将双重三维坐标体系中被逐渐位移、旋转的“⊥”形符号的空间中各点依次顺序连接起来, 就可以生成标准的莫比乌斯圈. (用“⊥”形符号的目的是使读者易于观察)

由此看出:生成莫比乌斯圈必须由相互依存的双重三维坐标体系共同完成, 单独的三维坐标系无法生成莫比乌斯圈. (理由一)

2.第二种制作和生成方法

制作和生成普通环圈可以用下面的方式:先在主导三维坐标系的x—y平面内生成以原点O为圆心的“正圆”, 然后在z轴的“正、负”方向上对“正圆”进行拉伸, 就可以制作和生成普通环圈 (见图9) .

制作和生成莫比乌斯圈可以这样完成:以x轴和“正圆”的交点为 (x′O′y′) 的原点O′, 将已生成的外表面是蓝颜色的、内表面是红颜色的普通环圈剪开.

在 (x′O′y′) 的x′—y′平面内, 以原点O′为扭转中心, 对普通环圈的一个端头进行有规律的对应扭转, 其对应扭转规律为: (x′O′y′) 沿 (xOy) 在X—Y平面内连续旋转的同时, 将 (x′O′y′) 内x′—y′平面上的普通环圈肌体的对应段进行对应扭转;当 (x′O′y′) 整体沿 (xOy) 基圆在x—y平面上旋转、位移一周 (360°) 回到起始点O时, 普通环圈的肌体也在x′—y′平面上绕O′扭转半周 (180°) 回到起始位置O′, 该环圈的肌体表面正好被翻转过来, 也就生成了莫比乌斯圈. (图10是电脑用此法生成的莫比乌斯圈)

从图10中可以看到:设定目标的运动结果是由双重三维坐标体系中各坐标轴参数之间相互影响、连续变化的结果.正是这个相互影响和连续变化, 才使得莫比乌斯圈的肌体上根本无法找到二维、三维线段或曲线.唯此足可以证明:莫比乌斯圈不是三维物体! (理由二)

三、莫比乌斯圈是“非三维”产物

下面用图5, 6, 7, 8, 9, 10来进一步证明莫比乌斯圈不是三维产物.

(1) 在图5的双重三维坐标体系中 (xOy) 的三个平面与 (x′O′y′) 的三个平面之间有着一一对应的关系.

(2) 当图6里 (x′O′y′) 的x′—y′平面上y′轴的数值发生变化时, 必然会影响并导致 (xOy) 的x—z平面上z轴的数值产生变化 (其余轴类推) , 最终导致整个双重三维坐标体系内所有数轴上的数值发生变化.

(3) 当图7中 (xOy) 的x—y平面上, 以原点O为圆心旋转, 则 (x′O′y′) 里z′轴上的数值就会发生变化, 这就必然导致 (xOy) 里各个数轴上的各数值直接或间接参与了、或发生了变化!

(4) 当图8中的“⊥”形符号整体沿x—y平面上绕O旋转360°的同时, 还在x′—y′平面内绕O′对应扭转180°, 如果连接该符号在空间相互对应的各个点, 就会产生一种空间弧线. (该空间弧线不能产生于单独的三维坐标体系.因为在单独的三维坐标体系产生的空间弧线一定是某种对称旋转体表面的对称母线, 而该空间弧线则需经受六个维度上的扭曲变形.) (理由三)

(5) 这里假设图9所生成的普通环圈外表面是蓝颜色的, 内表面是红颜色的.按照图10的方式对其进行剪断 (假设剪断处位于从属三维坐标系的原点O′) , 将该环圈的各对应部分在双重三维坐标系统内进行有规律的绕O旋转360°和绕O′扭转180°, 并最终回到O′.此时, 该普通环圈已经被变化成莫比乌斯圈.唯此可以证明:“非三维”物体可以由三维物体演变而来, 条件是双重三维坐标系统内各个维度上的具体参数必须全部相互影响并参与变化.这是任何一个三维物体所无法具备的. (理由四)

由于莫比乌斯圈是在双重坐标体系内生成的, 当在三维环境里对莫比乌斯圈进行裁剪时, 其被裁剪下来的部分就解除了该坐标体系对它的“非三维”约束, 其表现为被裁剪下来的是“窄”普通环圈;而剩余部分仍保留原“非三维”物体的基本形态, 其表现为“窄”莫比乌斯圈.或者说:在莫比乌斯圈的肌体内将同时存在两种状态——普通环圈 (三维状态) 和莫比乌斯圈 (“非三维”状态) , 这种状态会永久存在, 且无法用人为干预的方式将其改变! (相关内容请查阅论文《莫比乌斯圈的反常现象》) (理由五)

最后引述数学泰斗谈祥柏先生的判断来证明莫比乌斯圈不是三维物体.谈老曾在《数学广角镜》P118中明确指出:在现实世界中克莱因瓶是无法被制造出来的! (其实该论点的本质是:克莱因瓶不是三维物体) 数学家已证明:每个克莱因瓶是由两个莫比乌斯圈组合而成的.而莫比乌斯圈通体圆润, 浑身都是空间曲线, 没有一条二维直线、曲线以及三维直线、曲线.因此, 莫比乌斯圈不是三维物体, 而是“非三维”物体! (理由六)

四、结 论

莫比乌斯圈不是三维物体, 而是人类没有完全认知的“非三维”物体!

五、莫比乌斯圈里仍有未解之谜

是的, 莫比乌斯圈里仍然存有许多鲜为人知的奥秘, 莫比乌斯圈、莫比乌斯现象及其莫比乌斯原理也没有得到学术界的认可, 但并不影响我发表一孔之见, 我将在专题论文《莫比乌斯圈的反常现象》和《重新认识莫比乌斯圈》里进一步阐述和探讨莫比乌斯圈的相关问题.

当然, 提交本文的真实目的是渴望能得到您对莫比乌斯圈、现象和原理作出更权威的准确诠释和更睿智的思想升华!

摘要:本文通过对莫比乌斯圈和普通环圈的制作过程与生成机理的比较后发现:莫比乌斯圈不是三维物体;再通过对生成莫比乌斯圈的不同方式的叙述, 最终得出莫比乌斯圈不是三维物体的结论;如果能够确定莫比乌斯圈不是三维物体, 对正确认识莫比乌斯圈有现实意义. (因为我国正在小学教育阶段推进介绍和认识莫比乌斯圈)

关键词:莫比乌斯圈,主体坐标系,从属坐标系,双重三维坐标,非三维物体,合成运动

参考文献

[1][德]莫比乌斯 (1790—1868) , 数学家、天文学家, 1858年公布莫比乌斯圈.

[2][苏联]伏·巴尔佳斯基.拓扑学奇趣.长沙:湖南教育出版社, 1999:43.

[3]华应龙.神奇的莫比乌斯带.北京第二实验小学精品课程, 2005 (1) :11-15.

[4]周康玲.上帝的骰子.发明与革新, 2001年连载.

三维空间物体任意移动算法研究 篇2

关键词:三维空间,物体移动算法

0 引言

随着计算机图形学的发展,计算机运算能力、硬件性能的提升以及图形硬件GPU的普及,传统的基于二维的界面已无法满足用户日益开拓的思维,而3D建模以及可视化,成为发展趋势。

在研究3D界面人机交互技术时,发现由于在三维环境中多了深度信息,反映到坐标系上就增加了Z方向的坐标值,从而使得一些在二维空间交互的简单问题到三维空间就变得非常复杂[1]。利用鼠标、触摸板等二维输入设备得到的输入信息只具有X和Y方向的二维信息,要实现在二维屏幕下控制三维环境下的3D模型进行移动,首先需要解决就是将二维屏幕上的鼠标点坐标转换为三维场景中的三维坐标,然后根据算法利用鼠标的二维移动位置计算模型的三维移动轨迹,因此,算法的好坏直接影响到物体的移动精度。

本文总共涉及三种三维空间中物体任意移动算法,其中第一种算法是在宋继红等人提出的基于平面的移动算法基础上进行总结的,后两种算法是经过做课题过程中的不断思索、实践,最终得以形成的。

1 相关知识

1.1 渲染管线

渲染:根据透视原理把3D场景中的所有3D物体在2D的显示器上显示出来,这个过程称为渲染[2]。

一个世界空间中的3D物体,要在二维的显示器上显示出来,必须顺序经过世界变换、视图变换、投影变换和屏幕转换,顺序经过这四个变换并在显示器屏幕上显示的过程,称为渲染管线,具体如图1所示。

1.2 射线

射线由两部分组成,射线位置以及射线方向。鼠标在屏幕显示器上点击的位置在世界坐标系下的坐标即为射线点击的位置,射线点击的位置与摄像机位置坐标形成射线的方向[3]。

根据渲染管线得知,在世界坐标中的向量VectorOP,需要先经过摄像机空间坐标转换,然后经过投影矩阵变换,最后乘以屏幕矩阵才得到其在屏幕上的坐标位置,其公式如下:

其中,Vector OPP向量表示屏幕上的坐标,ScreenMatrix矩阵为屏幕变换矩阵,ScaleMatrix矩阵为缩放矩阵;将等式进行逆变换,得到:

如图2所示,屏幕上的坐标点P通过屏幕变换矩阵可以转换到摄像机投影窗口上的S点,根据两个坐标系中的一一线性对应关系,可得:

将(3)式简化可得:

根据摄像机投影矩阵的设置可知,摄像机投影视口在此处(x=1)对应的Z值为:

其中,表示摄像机视角。根据式(4)和式(5)计算Sx、Sy、Sz已经完成了Vector OPP*Screen Matrix-1*Scale Matrix-1*projectionMatrix-1的计算,所以剩下只需要将Sx、Sy和Sz所形成的向量与视图矩阵的逆矩阵相乘,即可得到P点在世界坐标系下的坐标,即射线的位置。

1.3 拾取对象

在三维场景中,经常要选取某个物体对象,然后获得该对象的相关信息,根据前面介绍的射线,通过判断射线与3D模型对象是否相交可以判断鼠标是否选取该模型[4]。在DirectX中Mesh类提供了一个Intersect方法用于判断射线是否与模型相交,如:

其中,RayPos表示射线的位置,RayDir表示射线的方向,CheckMesh是要拾取的模型,PI为射线与模型相交的交点信息,返回值为bool类型,如果射线与模型相交则返回true,否则返回false。

2 三种三维空间任意移动物体算法的研究与实现

2.1 第一种算法:基于平面的移动算法

算法的基本思想:该算法总体分为两个部分:第一部分,通过建立鼠标射线拾取物体,建立一个物体的可移动平面,实现物体在二维平面的移动。第二部分,对平面进行移动,使得鼠标射线可与移动平面的交点可以到达三维空间中的任意位置,完成物体在三维空间中的移动。这样就把复杂的三维空间的移动问题先转化为在一个平面二维空间上的移动,然后通过移动平面达到在三维空间移动的效果,把复杂问题简单化处理。

算法的实现:

(1)通过建立鼠标射线拾取物体,可以获得当前物体的重心位置信息,这里设物体重心点为P1,P1的坐标为(xp1,yp1,zp1)。

(2)建立物体的移动平面。通过3点可确定一个平面,该移动平面需要满足:平面经过物体重心点P1;平面垂直于XZ平面;平面垂直于视线在XZ平面的投影。已知P1为物体重心点,设该重心点垂直上方点为P2,其坐标为(xp1,yp1+10,zp1);由于平面必须垂直于视线在XZ平面的投影,故取XZ平面上的一点,设为P3,可得向量A(P1,P3);P3在X轴上的坐标不能与P1点重合,Y轴坐标为0,因此设P3的坐标为(10000,0,zp3),zp3为未知量;令视线在XZ平面上的投影为向量B(povEye,povLook),向量A,B满足A×B=0,由此可以得出:

此时,P1,P2,P3三点的坐标均已知,由此可以确定唯一的移动平面。

(3)鼠标控制物体在移动平面内上下左右移动。在本文中,以按下鼠标左键事件为触发事件,根据鼠标点击位置来计算所对应的射线。如图3所示,在显示器平面上点击鼠标左键,首先形成从摄像机出发与平面1相交于A点的射线,然后移动鼠标到B点点击,射线与平面1相交于B点,由数学知识得知,一条直线与一个平面相交,交点唯一[5]。由于该平面已由上一步确定,射线位置可以根据鼠标点击位置计算求出,因此,A、B点位置是可以唯一确定的。在实际应用中,A点可以作为3D模型的重心点,通过鼠标的移动事件把模型移动到B点,即模型移动后的重心点为B点。由此可以得到物体移动后的新坐标,装入渲染管线可重新渲染图形,完成对物体的移动。

(4)对平面进行移动,使物体能在深度方向移动。上一步中,物体只能够在一个平面上移动,要实现物体能够在三维空间移动,还需要将平面在视线方向上向前或向后移动。如图3所示,平面1在视线方向上向后移动到平面2的位置,平面1上A点对应的移动到平面2上A'点的位置。上述中,平面1是由P1、P2、P3三点确定的,同样,我们可以根据移动后P1、P2、P3的坐标确定平面2。如图4所示:图中d为平面移动距离;视线方向向量OE=(povEyepovLook);角α为向量OE与X轴的夹角;已知平面1上P1、P2、P3的坐标,由图可得移动后,在平面2上,P1=xp1+dcosα,yp1,zp1+dsin()α;P2=xp2(+dcosα,yp2,zp2+dsin)α;P3=xp3+dcosα,yp3,zp3(+dsinα)。同样,根据P1、P2、P3的坐标求出新的移动平面的方程式,然后根据鼠标射线计算与移动平面的交点,然后将计算出的新的坐标信息装入渲染管线,重新渲染图形,完成物体在三维空间的移动。图3中,A、B、C、A'可看作同一个物体在三维空间中移动的位置信息。

算法总结:该算法中从建立移动平面出发,先保证物体在一个平面内可以自由移动,然后通过移动平面的位置使物体到达三维空间中的任意位置。在将该算法具体实现过程中,利用鼠标点击以及移动来生成不同的射线,通过滑动鼠标滚轮来控制移动平面在视线方向上向前或向后移动,保证了物体移动的速度和精度,实际应用证明此算法切实可行。

2.2 第二种算法:基于坐标轴平面的移动算法

算法的基本思想:在DirectX中,三维空间由X、Y、Z轴构成,该算法将物体在三维空间中的移动方向按X、Y、Z轴构成的平面划分为三类:在XY平面移动、YZ平面移动以及XZ平面移动。每次拾取到一个物体,再选取需要移动的平面,然后根据选择的平面移动物体。这样就把复杂的三维空间的移动问题转换成为在三个二维平面上的移动问题,方法简便有效。

算法的实现:

(1)拾取物体。通过建立鼠标射线拾取物体,可以获得当前物体的重心位置信息,根据重心建立以重心为原点的坐标系以及三个透明的平面作标示,meshObjXYZ[0]作为XY标示平面,mesh ObjXYZ[1]作为YZ标示平面,mesh ObjXYZ[2]作为XZ标示平面;同时,在XY平面、YZ平面以及XZ平面建立三个巨型的透明的平面,用以移动物体,对应的,三个平面用checkface[0]、checkface[1]、checkface[2]来表示。

(2)选择移动平面。以鼠标移动事件为触发事件,根据鼠标移动位置建立射线,若射线与标示平面相交,标示平面变为灰色,表示被选中。这里设一个整形变量selected来记录选择的是哪一个平面,selected的初始值设为9999(足够大的一个整数)。如图5所示,选中物体后,选择XY标示平面,即meshObjXYZ[0],此时selected的值即为0,也就是选择表示XY平面的checkface[selected]作为移动平面。

(3)根据选择的移动平面移动物体。首先,定义一个DX中Vector3类型的lastmove变量来记录物体在移动之前或者上一次移动的位置,为移动之前或者上一次移动时鼠标的点击位置建立的射线与所选移动平面的交点,这里用DX中IntersectInformation类型的变量pointhit表示交点信息,于是lastmove=new Vector3(pointhit.V,pointhit.U,0);其次,以鼠标移动事件作为触发事件,根据DirectX中的方法:bool result=checkface[selected].Intersect(RayPos,RayDir,out pointhit),其中result表示鼠标射线是否与移动平面相交,即鼠标是否操控物体在移动平面上移动,值为true;checkface[selected]为所选移动平面;RayPos,RayDir分别为鼠标射线位置以及鼠标射线方向,可以根据鼠标点击位置用算法求出;pointhit为鼠标射线与平面的新的交点,也就是物体新的位置信息,可以得到物体的位移:

在图5中,选择XY平面作为移动平面,那么移动后,物体的位置信息为:

meshPosition=Matrix.Translation(xx*1000,yy*1000,0f)*meshPosition同样可推出选择YZ平面,物体的位移:

mesh Position=Matrix.Translation(0f,yy*1000,xx*1000)*meshPosition选择XZ平面,物体的位移:

其中,1000为移动系数,值越大移动速度越快[6]。

算法总结:该算法把三维空间物体的移动问题巧妙转换为三个二维平面上物体的移动问题,通过至少两次选择坐标轴平面对物体进行移动,使物体可以到达三维空间的任意位置,并且可以设置移动系数来控制物体的移动速度,实际应用证明此算法保证了物体移动的速度与精度,切实有效可行。

2.3 第三种算法:自由移动算法

算法的基本思想:在前两种算法的实现中,第一步就是将鼠标在屏幕上点击的位置转换为三维空间中的射线,通过判断射线与3D模型是否相交来判断鼠标是否选取该模型。仔细分析,鼠标射线既然能拾取三维空间中的任何模型,也就是表明鼠标射线可以到达三维空间中的任意位置[7]。该算法根据鼠标射线的这一特性,在拾取物体之后,把鼠标在二维屏幕上点击的位置转换为三维空间中射线的位置,根据相邻两条射线位置之间的位移移动物体,使物体能够在三维空间中自由移动。

算法的实现:

(1)拾取物体,计算当前射线位置。同样,通过建立鼠标射线拾取物体,并根据当前鼠标在屏幕上的点击位置计算出三维空间中射线的位置信息[8]。利用鼠标点击事件作为触发事件,设一个Vector3类型变量beforemove记录当前射线的位置信息。

(2)计算位移。鼠标射线的位置随着鼠标的移动不断改变,通过鼠标移动事件,根据鼠标移动后在屏幕上的位置计算出射线位置信息,这里用同样为Vector3类型的变量aftermove来记录,由此可以得出鼠标射线在三维空间中的位移:X轴方向:xx=aftermove.X-beforemove.X;Y轴方向:yy=aftermove.Y-beforemove.Y;Z轴方向:ZZ=aftermove.Z-beforemove.Z[9]。

(3)确定移动系数factor。如图6所示,上一步中所求得的位移即显示器屏幕上A点到B点的位移,但是在图像渲染过程中,物体根据与观察者的距离投影在与屏幕显示器XY平面平行的平面上,图中,物体1在移动前投影在A点位置,移动后投影在B点位置。仔细观察图形会发现,物体移动的位移并不等于屏幕上A点到B点的位移,存在移动系数,根据三角形相似定理可得:factor=d1/d2,其中d1为观察者到屏幕鼠标点击位置的距离;d2为观察者到所选物体之间的距离。

(4)确定物体移动后位置。物体移动之前位置信息为meshPosition,根据求得的鼠标射线的位移以及移动系数,计算出物体移动后的位置为:mesh Position=Matrix.Translation(xx*factor,yy*factor,zz*factor)*meshposition。将计算出的新的坐标信息装入渲染管线,重新渲染图形,完成物体在三维空间的移动。

算法总结:该算法充分利用鼠标射线可以到达三维空间任意位置这一特性,通过计算相邻两次点击鼠标生成的不同射线之间的位移移动物体,使物体能够在三维空间中自由移动。实践证明,采用该算法移动物体,不仅用户操作简单方便,并且物体移动位置精准,速度快捷。

3 结束语

实践证明,三种算法虽都有效保证了三维空间中物体移动的速度和精度,但在实际应用中有所差别。第一种算法中,移动平面的移动是通过操控鼠标滚轮来实现的,每次物体在视线方向上向前或向后移动都必须先滑动鼠标滚轮,然后操作鼠标左键进行在平面上的移动,显然,该算法在物体的移动速度方面有所欠缺。此外,滚轮多被用作于放大或缩小图形,或者是滚动页面,显然滚轮被用作于控制移动平面的移动与大多用户习惯相悖,且操作不便,同时又没有其他合适的输入设备来替代鼠标滚轮,因此,算法的适用性有限。

第二种算法中,以坐标轴平面作为移动平面,保证物体每次移动只改变两个坐标轴方向的坐标,因此,该算法特别适用于物体平移等情况。但是,该算法至少需要选择两次坐标轴平面移动才能保证使物体可以到达三维空间的任意位置,因此该算法在物体的移动速度方面有待改进。

相比前两种算法,第三种算法在实际应用中操作简单,物体移动速度快,并且在精度方面也毫不逊色,显然,第三种算法效率更高。

参考文献

[1]宋继红,李凤龙,徐全生.基于平面的三维空间物体任意点移动算法[J].计算机辅助工程,2009,18(3):83-86,91.

[2]耿肇英.Direct 3D和XNA游戏开发基础(C#语言版)[M].北京:清华大学出版社,2009.

[3]Fletcher Dunn,Ian Parberry.3D Math Primer for Graphics and Game Development[M].北京:清华大学出版社,2005.

[4][EB/OL].http:∥blog.csdn.net/hawk86104/article/details/5736163.

[5]Cai Jian-ping,Liu Qian,Yu Xue-jun.Research and realization of shadowgraph performance technology based on Direct X[C].International Conference on Graphic and Image Processing(ICGIP),2011.

[6]罗浩.基于Direct X的三维建模[D].吉林:吉林大学,2012.

[7]万鸣,方康玲.基于Direct3D的三维图形几何信息演示系统设计与实现[J].现代电子技术,2012,35(11):143-144.

[8]胡世东,赵翠莲,李成梁,等.面向虚拟训练的Direct X可视化仿真系统开发[J].计算机应用与软件,2012(9):129-132.

三维物体 篇3

随着计算机图像处理技术的发展,三维重构技术已经成为计算机辅助设计与计算机图形学中的一个重要研究领域。在诸多工程实践和现实生活中,人们往往需要能直观的看到一些物体表面的大概轮廓,本文提出的三维物体近似表面模型的构建方法是采用可视化软件系统,对以一定的方式获得的三维散乱点集(如点云数据,采集得到的离散数据等),首先根据数据处理要求进行预处理,而后进行求凸包运算获取物体表面极值点,最后利用这些点生成物体表面的多面体模型,进行各种后处理(如平滑等),并在计算机上显示、进行人机交互的过程。

VTK(Visualization Tool Kit)是针对计算图形学,可视化和图象处理的一个源码开放,面向对象的软件系统。随着科学可视化这一技术被人们越来越多的应用于医学、产品设计、地球科学、流体力学等各个领域,VTK作为一个优秀的可视化工具包,为各级研究人员和机构提供了强大的支持。

2 VTK概述

VTK是Willliam Schroeder等人利用C++语言开发的集3D图形学、图象处理以及可视化于一体的软件系统。该软件系统由两个子系统构成,一个是通过编译生成的C++类库;另一个是用Tcl、JAVA和Python语言来使用编译过的C++类的解释器包。这种做法的优势在于即可以在编译过的语言C++类中创建效率比较高的算法,同时又能够使用解释型语言进行快速的应用程序开发。

VTK是一个面向对象的系统,由图形模型和可视化模型两种对象模型构成。

2.1 图形模型

图形模型通过几个主要的C++类有机的组合在一起生成一幅图象。

在VTK软件系统中,vtk Prop或vtk Prop3D的子类表示一幅图象中的可见物体;vtk Light类封装了有关图形光线处理的方法,包括光线开关状态、位置、颜色等;vtk Camera类封装了关于视点操作的方法,包括观察者的位置、焦点的调整等;vtk Property与vtk Property2D这两个类可以控制显示图形的属性;vtk Abstract Mapper及其子类是可视化模型和图形模型的接口;利用vtk Transform类可以对图形中显示的物体进行平移、旋转、缩放等操作;vtk Scalars To Colors及其子类可以将映射数据转变成不同的颜色来表达,是图象处理中的关键技术;vtk Render和vtk Render Window这两个类用来管理图形引擎与计算机窗口系统之间的接口;vtk Render Window Interactor类封装了窗口系统与数据之间交互相关的方法。

2.2 可视化模型

VTK采用数据流方法将输入的原始数据转变成图形数据,该方法涉及数据对象(vtk Data Object)和流程对象(vtk Process Object)两个基本的对象类型。

在VTK软件系统中,数据对象用来表达各种类型的数据,它支持5种不同的数据类型,分别是:直线网格(vtk Rectilinear Grid)、结构网格(vtk Structured Grid)、非结构网格(vtk Unstructured Grid)、多边形数据(vtk Poly Data)及图象数据(vtk Image Data)。流程对象通过对数据对象进行操作产生新的数据,体现了系统的运算法则。流程对象和数据对象通过可视化流水线相连,在数据流动过程中对数据进行操作。流程对象又可以细分为源对象(vtk Source)、过滤器对象(vtk Filter)及映射对象(vtk Mapper)。源对象是整个可视化流程的起点,它既可以在程序内部通过一定的法则产生,也可以直接从文件中读取;过滤器对象接受数据对象的输入,产生一个或多个数据对象输出,由于运算法则的不同,过滤器对象输出的数据类型可能与输入的数据类型不同;映射对象接受源对象或者过滤器对象输入的数据并把数据映射成基本图元。

数据对象和流程对象的有机结合就产生了可视化流程,如图1所示:

3 三维凸包模型重建算法简介

凸包是数学和计算几何的重要内容之一,它是包含给定点集中所有点的最小凸域的边界。很多的工程实际问题最终都可以归结为凸包问题,比如Delaunay三角剖分、Voronoi图、功率图、halfspace intersection等。这些结构在科学研究和工程实践中有着非常广泛的应用,如图象处理、碰撞检测、城市规划、文件检索、数值积分、冶金学、统计学等。

凸包的定义:在一个实数向量空间V中,对于给定集合X,所有包含X凸集的交集S被称为X的凸包。

X的凸包可以用X内所有点(x1,…,xn)的线性组合来构造。

计算三维凸包的算法有很多种成熟的算法,包括随机增量法,Graham扫描法,Jarvis步进法,分治法和快速算法(Quickhull算法)等。每种算法都有各自的特点,本文采用的是运算效率比较高的快速算法。它由随机增量算法改进得到,其时间复杂度与输出的凸包顶点数k有关,为Ο(n log k)。该算法的优点是无需存放额外结果,能够做并行处理,其空间复杂度与时间复杂度都比较低。图2为快速算法的伪代码:

说明:p在F的上方当且仅当p到F的有符号距离d>0;

明暗界限H是边R的集合,R满足它的两个邻接面一个可见,一个不可见(点在面的上方称为该面可见,反之则不可见)。

4 算法实现

本文以Visual C++6.0为平台,使用C++语言和可视化类库VTK对所得的三维散乱点集进行表面轮廓重建。三维凸包用组成凸包的三维顶点和二维平面来表示,凸包的顶点为输入点集的极值点,组成凸包的平面包括三个点集合,三个邻接面集合和一个平面方程。程序求取凸包通过类CHull_Alg来实现:

算法由函数Get Hull输出,输出项为:x,凸包顶点;pts,二维平面(每个面保存了三个顶点的索引值);nv,顶点数;nf,平面数。该输出方便之处是可直接进行可视化显示,而不需要再进行三角剖分。图3是程序整体框图。

可视化处理部分程序:

图4是原始的离散数据点集,重建后的表面多面体模型如图5所示。

5 结论

本文采用效率较高的计算凸包的快速算法(Quickhull算法),以Visual C++6.0为开发平台,在VTK类库的基础上构建了三维凸包的表面模型。这一方法简单、快捷,可以很方便的应用在各个需要获得物体近似表面模型的领域,具有很大的现实意义。

摘要:该文提出了一种以凸包为基础来表达物体表面近似轮廓模型的方法。通过对由各种方式所得的散乱点集进行预处理,然后进行凸包运算,求得物体表面轮廓极值点,再依据这些点进行物体表面的三维重建。该文以Visual C++6.0为开发平台,采用可视化类库VTK,对这一方法进行计算机仿真,取得了较为理想的效果。

三维物体主菲涅尔波带全息成像法 篇4

人类对现实世界的感知中, 80%的信息来源于双眼的视觉, 而目前占据主流地位的显示技术仍是二维显示技术, 虽然二维显示技术能满足大部分日常生活需求, 但与三维显示相比, 缺乏临场感和视觉冲击感。随着科学技术的飞速发展, 三维立体显示技术越来越成熟, 逐渐成为研究的热点[1,2,3,4]。目前三维立体显示技术主要分两种, 一种是基于双目视差的立体显示技术, 如眼镜/头盔式三维立体显示和光栅式自由立体显示[5,6,7,8]、合成成像立体显示[9,10,11,12,13]、体三维显示[14,15]等各种三维显示技术, 这些技术都是通过提供具有一定视差的图像, 使观察者形成一定的深度印象, 从而达到三维立体显示的目的。另外一种则是显示真实立体物体影像的技术, 如全息技术, 它通过干涉完整地记录了物体的强度、相位等信息, 再现像是真正意义的空间立体图像, 再现图像可以直接进行裸眼观察, 被大多数人认为是未来三维显示最理想的方案[16,17,18,19]。

目前采用全息技术显示三维物体的方法主要有光学全息、数字全息和计算全息。其中计算全息具有噪声低、可重复性好、可实现虚拟物体的实体化等特点。但由于三维物体复杂的数学描述和有限的计算机运算能力, 计算效率成为了限制计算全息发展的瓶颈。研究者在不提高计算机硬件的前提下, 研究了很多简化三维物体的计算全息算法, 以达到提高计算速度的目的:Waters提出通过分别计算单个点光源在全息平面上的复振幅以叠加编码成计算全息图[20];Leseberg将三维物体各个平面的菲涅尔全息图累和组成具有全息图[21];张晓洁等人提出了主菲涅尔波带法[22,23,24], 在点物散法的基础上, 通过规整同一深度下的所有采样物点来提高运算速度;李勇等研究者对全息图进行变量分离[25,26], 以达到减少计算量, 提高运算效率的目的。

本文改进了主菲涅尔波带法以进一步提高全息图生成效率:将分离变量原理[17,18,19]与主菲涅尔波带法相结合, 从主菲涅尔波带的计算公式中分离出关于两个轴上的独立分量, 以独立分量代替主菲涅尔波带, 并获取其他采样物点轴上的分量, 最后通过计算得到各个菲涅尔波带。与传统主菲涅尔波带法相比, 改进后的算法不仅补全了文献[23]中丢失的高频信息, 而且计算量进一步减少, 运算速度得到较大提高。将生成的计算全息图采用DMD进行光电再现得到了高质量的三维物体再现图像。

1 原理

1.1 主菲涅尔波带法

若采用平面波垂直照射, 对于给定衍射距离上的所有采样物点, 它们完整的菲涅尔衍射波带都具有相同的衍射图样, 只是菲涅尔波带的中心位置不同, 根据这一特性, 主菲涅尔波带法只需计算其中一个点的菲涅尔衍射波带, 其他采样点的菲涅尔波带可以通过平移操作获得, 这个需要计算的点称之为主点, 一般取物平面中央位置的采样点, 主点的全息图则称之为主菲涅尔波带, 所有采样点的菲涅尔波带叠加得到全息图。

在满足奈奎斯特采样定理的前提下, 主菲涅尔波带法物平面像素间隔 (Δx, Δy) 和接收面像素间隔 (Δξ, Δη) 关系另外还满足:

式中, λ为光源波长;MH×NH为接收面像素数目;z为垂直衍射距离。依据人眼的分辨率, Δx和Δy同样也有个上限值, 不同的衍射距离有不同的上限值。本文从计算方便出发, 物平面和接收面的像素间隔都选取下限值[27]。

从理论角度出发, 主菲涅尔波带大小可以任意设置, 假设主菲涅尔波带大小与接收面一致, 如图1所示, 全息图的接收面限制在:

点O和A分别位于物平面的中心位置和右上角边缘位置, 分别与衍射面上主菲涅尔波带中心O′和A′相对应。平移主菲涅尔波带求A点的菲涅尔波带时, 主菲涅尔波带中心O′平移的总长度d, 其中x轴和y轴平移长度分别为:

由图1可见, 平移之后, 以A′为中心的主菲涅尔波带只有很少一部分信息被接受面接收, 而大部分高频信息都丢失了。为了获得高质量的再现像, 主菲涅尔波带必须设置的足够大, 才能保证全息图的信息量, 即平移后以A′为中心的主菲涅尔波带恰好能完整覆盖接收面, 设此时主菲涅尔波带在ξ轴和η轴的长度分别为xf和yf, 由几何关系可得:

根据两平面间采样间隔关系, 将距离换算成像素数目, 主菲涅尔波带的像素数目最小应满足:

式中, M和N的值通常不是整数, 常取比其值大的最小整数。

1.2 改进算法

在主菲涅尔波带法的基础上, 利用分离变量原理做了相应改进, 基本思路是利用主菲涅尔波带在ξ轴和η轴上的独立分量代替主菲涅尔波带, 以达到减少内存空间占用和计算量, 提高计算效率的目的。根据菲涅尔的基本衍射公式, 主菲涅尔波带在ξ轴和η轴上的独立分量x和y的离散形式分别满足以下公式:

式中:m∈[1, M];n∈[1, N]的正整数。

改进算法的基本思路如图2所示。按上述公式计算得到主菲涅尔波带的独立分量x和y, 将平移操作的对象从主菲涅尔波带转换为x和y, ξ轴, η轴上的接收窗口分别限制在ξ∈[-ξh, ξh]和η∈[-ηh, ηh]以匹配显示器件的分辨率, 按坐标相对位置平移得到其他采样点在ξ轴独立分量MH×1的独立分量xn和η轴1×NH的独立分量yn, 通过矩阵乘法即可得到每个采样点的菲涅尔波带, 叠加组合成全息图。

计算模拟运算中, 以双精度类型将M×N的主菲涅尔波带保存到内存中, 需要内存连续空间size=8MN/1 0243GB, 改进的算法以独立分量x和y代替主菲涅尔波带, 此过程仅需要消耗内存连续空间size′=8 (M+N) /1 0243GB, 与未改进相比, 减少了内存占用空间Δsize=8 (MN-M-N) /1 0243GB, 共少计算了 (MN-M-N) 个元素的值。当实验条件确定时, 改进前后内存占用空间与衍射距离的关系如图3所示。由图3可知, 衍射距离越远, 改进后的算法在内存占用和计算量上越有优势。

2 实验

2.1 计算全息图

国际象棋中的“国王”、“皇后”和全息图的位置关系如图4 (a) 所示, “皇后”和“国王”分别位于全息图0.3 m处和0.5 m处, 共有12 994个采样物点。实验中采用532 nm的半导体绿色激光器作为光源, 计算像素数目为1 024×768的全息图, 以匹配DMD的分辨率。设定原始物图大小为47 mm (H) ×47 mm (V) , 像素数目为512×512, 接受面像素数数目为1 024×768, 像素间隔为3.45μm (H) ×3.45μm (V) 。

根据公式 (8) 计算0.3 m处的主菲涅尔波带, 满足要求的主菲涅尔波带的像素数为28 672×21 504, 以双精度类型存储, M×N的主菲涅尔波带需要4.59 GB的内存连续空间, 受限于实验室电脑 (3 GB内存) 内存空间的限制, 无法将如此庞大的单个矩阵数组存放到内存中, 故未改进的主菲涅尔波带法的程序无法顺利模拟, 而改进后的算法, 28 672×1的独立分量x和1×21 504独立分量y仅占用0.383 MB的内存连续空间, 完全满足运行环境。改进后算法用时150 s得到如图4 (b) 所示的全息图, 并进行了DMD光电再现实验。

2.2 DMD光电再现

DMD再现实验采用如图5所示的光路, 对图4 (b) 的全息图进行了再现, 图中采用532 nm的半导体绿色激光器, 实验采用的DMD分辨率为1 024 (H) ×768 (V) , 单个微镜的尺寸为10.8μm (H) ×10.8μm (V) , 镜面之间的间隙为1μm。激光经扩束准直后, 照射到DMD上, 全息图通过计算机加载到DMD上, 分别在离DMD距离[21,22,23]为3.5 m和5.85 m处获得如图6所示的再现像。

当接收屏与DMD相距3.5 m时, 皇后的像清晰可见而国王模糊不清, 如图6 (a) 所示;当相距5.85 m时, 远处的国王像清晰可见而近处的皇后模糊不清, 如图6 (b) 所示, 不同衍射距离得到相应位置物体的清晰再现像。

3 结语

本文对主菲涅尔波带法进行改进, 将二维全息图信息变换到一维空间分别进行运算合成以提高计算效率, 依据再现器件要求进行尺寸匹配, 得到适合的计算全息图。实验结果表明:本文方法具有快速高效生成三维物体全息图的优点, 再现图像质量较高, 对于三维物体动态显示具有很好的应用前景。

注:本文通讯作者为顾济华。

摘要:为了提高三维物体计算全息图的生成速度, 在主菲涅尔波带法的基础上提出了一种改进算法。首先依据衍射距离将二维主菲涅尔波带转换为两组一维波带;然后依据实际应用情况与显示装置进行尺寸匹配;最后将得到的波带叠加获得三维物体全息图。该算法与改进前相比, 内存空间的占用较小, 运算速度得到显著提高, 生成的全息图经由DMD再现获得高质量的三维物体再现图像。

三维物体 篇5

采用正弦条纹投影的光学三维传感技术在工业检测、质量控制、机器视觉、影视特技和生物医学等领域有广泛的应用[1,2,3,4]。在该技术中,图像平面上每一像素的相位都可以准确求解,进行三维恢复。而其它精度接近的结构光投影三维传感技术(如网格投影、二值编码投影等),要实现网格的区分、识别或解码通常需要6个以上像素,而且只有条纹中心或边缘能够准确获得,进行三维恢复。因此,采用正弦条纹投影的光学三维传感技术可以获得更高密度的三维数据。高速三维数据采集是目前光学三维测量技术的发展趋势之一。实现高速测量主要有两类方法。一类是投影一幅条纹图案,采用傅里叶变换法[5,6]、小波变换法[7]或其它分析方法求解变形条纹的相位。如Takeda提出的傅里叶变换轮廓术[5],投影一幅罗奇光栅到被测物体上,采用傅里叶变换、频域滤波及逆傅里叶变换获得变形条纹的相位。由于该方法要求基频与零频及其它高次谐波分离,被测物体的高度变化率不能太大。陈[8]等提出的用颜色编码两幅π相移的正弦光栅,利用傅里叶变换法求解相位(π相移FTP)。π相移FTP消除了零频,正弦光栅消除了高次谐波,使得测量范围扩大到与相位测量轮廓术相同,但是其测量精度受物体表面颜色影响较大。Huang[9]等提出的用颜色将三幅有相移的正弦光栅编码到一幅彩色图案中,利用相移法求解相位。同样这种方法的测量结果受物体表面颜色影响较大。Guan[10]等提出采用不同频率的光栅调制多幅相互有一定相移且与其正交方向的正弦光栅构成复合光栅。测量时先通过滤波来恢复各幅光栅的强度,再利用相移法求解相位,实现动态物体实时测量。由于测量系统的信息量是有限的,每幅光栅的对比度会下降,导致测量精度下降。同时由于采用了滤波,测量的分辨率也将下降。Su[11]提出了将正弦条纹、颜色及二值编码复合到一幅图案中,采用傅里叶变换法求解条纹相位,颜色确定条纹所在的区域,二值编码确定条纹在区域中的位置,从而实现绝对相位测量。该方法实现了孤立动态物体的测量,但是受物体表面颜色、条纹本身对比度不一致等影响,测量精度不高。另一类方法是投影多幅正弦条纹,采用相移法求解变形条纹相位。如Huang[12]等提出利用数字微镜器件高速投射三幅有相移的正弦光栅,实现高速、高分辨率测量。Zhang[13]等对上述方法进行改进,在光栅中编码一个小圆点作为标记,实现绝对坐标测量,并取得了较好的结果。但是复杂场景的相位展开依然是这类方法的难点。极端的情况是对于由空间孤立物体构成的场景,其相位展开无法进行。Karpinsky[14]等提出三步相移加一幅灰度呈台阶变化的图案来实现孤立物体实时测量。由于物体表面反射率变化、图像传感器量化级别有限等因素,对反射率分布复杂或整体较低的物体该方法测量结果可信度低。

综上所述,目前的高速三维测量方案中采用单幅图案投影的对硬件要求低,但存在分辨率不高或测量精度、可靠性等受物体表面反射率影响大等问题。而采用多幅图案投影的方案测量精度、可靠性高,但对硬件要求也高。同时,要实现含孤立物体三维场景高密度测量及同时获取高质量物体表面纹理对目前的高速三维测量方案是富有挑战性的问题。投影一幅图案难以实现含孤立物体场景高密度三维形貌及高质量纹理的高速采集。为此我们提出采用π相移正弦条纹加一幅编码图案的方法,以投影尽可能少的图案实现上述目标。同时利用改装的DLP投影仪配合高速摄像机搭建了高速测量系统,实现最高120 fps的三维面形采集。实验证明该方案是可行的。

1 原理

1.1 系统构成

图1为正弦条纹投影三维测量系统示意图。它主要由投影仪和摄像机构成。由投影仪投出正弦光栅,摄像机在另一位置拍摄被物体表面形貌调制的变形条纹。通过求解条纹相位,获得对应的投影仪图像平面上的坐标。在只对投影仪图像平面的一个坐标编码时,可以根据式(1)计算得到物体采样点的三维坐标[15]。

其中:u,v是摄像机像素坐标,Δup是被测表面与参考平面的投影仪像素坐标差,a1、a2、b1、b2、kn为与摄像机像素坐标有关的常数。通常N取5就可以得到足够的精度。

1.2 π相移FTP原理

π相移FTP是对FTP的改进,由于消除了背景光的影响,它扩展了FTP测量范围。拍摄的变形条纹为

其中:Ie(x,y)与环境光照有关,a(x,y)与条纹平均亮度有关,b(x,y)是条纹的对比度,f0是条纹的频率,φ(x,y)是高度h(x,y)对条纹的相位调制量。式(2)减去式(3)可得:

对式(4)作傅里叶变换得:

其中:Q(f,y)是q(x,y)=b(x,y)exp(iφ(x,y))的傅里叶变换。对式(5)进行滤波,滤除Q*(f,y)并作逆傅里叶变换可得:

求出式(6)的辐角就得到了变形条纹的相位分布。同时由式(2)、式(3)可以看出,只要将它们相加即可得到物体表面纹理:

1.3 编码原理

为测量空间孤立物体形貌,我们采用绝对相位测量方法。提出了全场空间编码图案来确定正弦条纹的级次,获得变形条纹的绝对相位。图2是该图案的例子,它由一系列竖条构成。竖条的宽度与正弦条纹的周期相同。一共采用三个灰度级(0对应黑,1对应灰,2对应白)对竖条进行编码。编码规则为:沿竖条方向灰度无变化,分为一类编码,三个灰度级对应三个码;沿竖条方向灰度二值变化,分为另一类码,三个灰度级两两组合对应三个码。因此,一共可以编六个码。为实现全场编码,采用这六个码构造伪随机序列。将与这六个码对应的竖条伪随机序列的顺序进行排列,构造出编码图案。伪随机序列满足下面两点要求:1)在序列中任意具有规定长度(窗口宽度)的子序列唯一;2)在这些子序列中无重复代码。例如用“A”∼“F”表示6个代码(其中“A”代表全白竖条,“B”代表全灰竖条,“C”代表全黑竖条,“D”代表黑白变化竖条,“E”代表灰白变化竖条,“F”代表灰黑变化竖条),序列“ABDECFADBEFDBECDABFECBDEFBDCEABCDAECFBDE”中任意长度为4的相邻代码构成的子序列是唯一的,而且子序列中无重复代码。我们采用在有向图中搜索哈密顿回路的方法构造伪随机序列[16]。

1.4 解码算法

在解码前首先要对拍摄的编码图案进行预处理。编码图案光强可表示为

其中Ip(x,y)与投影图案亮度有关。式(8)包含了环境光照、投影仪光照和物体表面反射率。要正确解码,必须去除环境光和物体表面反射率影响。由式(2)、(3)、(6)和式(8)可得仅与编码图案亮度成比例的分布:

对这一分布进行三值量化后即可以进行解码。具体解码方法如下:首先找出截断相位图中相位跳变绝对值大于π的点。通常这些点连成线,我们称之为跳变线。图3为三值量化后的编码图案例子,其中的亮线就是跳变线对应的位置。然后在编码图案中沿跳变线对应的位置检测像素的灰度值及其变化情况,根据编码规则就可以得到对应的代码。由于实际测量系统是一个低通系统,在两种灰度的边界附近存在缓变区域。对于用相邻灰度编码(如1、2和2、3)的竖条三值化后不会出现第三种灰度;而对于用有间隔的灰度编码(如1、3)的竖条三值化后则会出现第三种灰度,即中间灰度。根据这一特点,通过统计跳变线对应的位置上各种灰度的点数所占比例,就能实现解码。最后将水平方向空间相邻的三条跳变线上的代码组成子序列,在伪随机序列中搜索其位置k。这样就得到了对应条纹的级次,则该周期条纹的绝对相位可以用下式求出。

由于解码是沿跳变线进行的,其上跳变点的准确、成功获取直接影响绝对相位的可信度。跳变点的准确性由相位测量的准确性确定,实际中由于噪音、采样不足等原因造成跳变点错误或无法获取。由噪音引起的跳变点通常是孤立的,可以通过滤波的方法去除,不影响绝对相位的恢复。而采样不足导致的跳变点丢失会造成编码码字局部缺失。另外,由于阴影、遮挡等原因也会导致码字局部缺失,导致局部绝对相位无法恢复(子序列匹配失败)或恢复错误(子序列匹配错误)。根据编码原理,至少有3个连续码字才能进行子序列匹配。如果码字缺失严重,导致无法构成正确子序列则解码失败。如果码字缺失部位在正确子序列前面或后面则问题区域被限制在2个条纹周期内。如果码字缺失部位在孤立子序列中,则问题区域被限制在4个条纹周期内。

2 实验及结果

常见的DLP投影仪采用顺序颜色的方式实现彩色图像投影,即在时间上按顺序投影红、绿、蓝三色图像,利用视觉暂留现象使观测者看到彩色图像。投影仪实际投影图像的速度是一幅彩色图像刷新速度的三倍。我们对DLP投影仪进行了改装,去掉色轮并用白光LED作为光源。这样,投影仪最快每秒可以投出360幅灰度图像。然后设计了同步电路,在投影仪投出对应于红、绿、蓝三色的图像时发出同步信号,控制摄像机采集。图4为测量系统照片。我们采用的高速摄像机型号为RM6740GE;伪随机序列为“ABDECFACDCEFBEADFEBCAEDAFDBFCBAD EFCABEDCF”,窗口宽度为3。

首先测量了人脸表情变化过程。测量时要求被测对象作面部表情变化和动作,同时记录其三维形貌。三维数据记录速度为60 fps,分辨率为640×480。图5为用三维网格表示及贴上纹理后的部分三维形貌恢复结果。

然后测量了泡沫板在压力下断裂的过程。三维数据记录速度为120 fps,分辨率为320×240。图6为其中7个时刻泡沫板的三维形貌。图7为板中一条线上的高度变化过程。由测量结果可见,该系统很好地记录了缓慢变化的动态过程。

最后测量了由若干空间孤立物体构成的场景。图8为场景照片和三维恢复结果,分辨率为640×480。由实验结果可知,只要有足够多的条纹(本例中至少3个周期)投影到孤立物体上,就可以获得其三维形貌和空间位置。图中背景到头像后部的距离约690 mm,测量的总景深约750 mm。背景实际已经部分离焦模糊,即使在这种状态下还可以正确恢复代码。可见提出的编码方案有较强的鲁棒性。

由于阴影、遮挡等原因,各孤立物体之间没有条纹。而傅里叶变换是一种全局分析方法,在采样该方法求解变形条纹相位时会在条纹不连续的边缘处出现较大的误差。为减少这类误差,可以采用局域性能较好的小波变换、加窗傅里叶变换法求解相位或采用迭代的方法先将条纹往外延拓再用傅里叶变换法求解相位。但是数据处理的时间会明显增加。

结束语

为实现含孤立物体场景三维高密度形貌及高质量纹理的高速采集,提出了π相移FTP加编码图案的方法。采用了三值编码,并且编码图案中每个竖条内的灰度最多二值变化,解码的难度低,可靠性较高。由于只需要两幅正弦条纹测量物体形貌,第三幅编码图案即使位置有变化,只要不超出半个正弦条纹周期,测量结果不受动态变化影响。与其它投影相同数量图案的测量方法相比,该方案的测量结果受物体动态变化的影响更小。另外,采用改装的DLP投影仪和高速摄像机搭建了高速测量系统。实现了640×480分辨率下60 fps和320×240分辨率下120 fps的三维数据记录速度。如果采用分辨率更高的高速摄像机,则可以进一步提高测量分辨率。本方法同样适用于相位测量轮廓术,实现孤立物体测量。

摘要:提出了一种用于采集含空间孤立物体场景的高速、高密度三维面形采集方法。该方法将三幅图案高速投影到被测物体上并同步采集图像,从而实现场景三维形貌及纹理的高速记录。其中两幅图案是互相具有π相移的正弦条纹,采用傅里叶变换法求解变形条纹相位。将拍摄到的两幅变形条纹图相加可得到物体表面纹理。另一幅图案用来确定条纹级次,实现绝对相位测量,解决高速形貌采集中孤立物体相位展开难题。它由一系列宽度与正弦条纹周期相同的竖条构成,采用三种灰度对竖条编码。每个竖条由单一灰度或两种在竖直方向上周期性分布的灰度构成,这样可编6个码。将竖条按由这些码构成的伪随机序列排列,得到编码图案。测量时,对拍摄的编码图案解码,通过子序列匹配来确定对应正弦条纹的级次。设计了采用DLP投影仪及高速摄像机的高速测量系统。采用提出的方法实现了640×480分辨率下每秒60帧和320×240分辨率下每秒120帧的三维形貌及纹理采集。

三维物体 篇6

3D打印技术已经成为当今研究的热门技术之一,它带动了逆向工程的蓬勃发展。传统的三维物体表面测量系统均采用PC机和图像采集卡的方式实现[1,2],整个系统体积大, 价格高, 灵活性差, 适应性差。近年来, 针对传统的三维物体表面测量系统的不足,人们逐渐采用嵌入式技术和网络技术相结合的方式实现。

本文利用PHY芯片88E111和FPGA实现了千兆以太网[3], 并将其成功应用于激光三维物体测量中, 通过vs2013编写了上位机软件。该激光三维物体测量实现了采集数据的远程传输。由于采用FP GA为核心的嵌入式系统取代了计算机, 使得本文设计的图像采集处理系统具有体积小、成本省、功耗低的特点,能够很好的解决目前三维物体表面测量系统体积大、成本高等在实际应用问题, 具有显著的社会经济效益和广阔的应用前景。

2系统设计

本文研究并实现基于FPGA的千兆以太网三维图像传输模块,实现数据的高速传输,缩短整个三维测量系统的测量时间。千兆以太网一端与CM O S图像传感器连接,实现数据采集及输入,另一端与计算机相连,将三维数据高速传输给计算机进行后续处理[4,5],如图1所示。

在FPGA的内部的软件实现上,采用NIOS II软核作为基础。Nios Ⅱ嵌入式处理器是ALTERA公司推出的采用哈佛结构、具有3 2位指令集的第二代片上可编程的软核处理器, 其最大优势和特点是模块化的硬件结构, 以及由此带来的灵活性和可裁减性。 其设计核心是千兆以太网控制器, F P GA内部实现如图2所示。

3千兆以太网控制器实现[4,5,6]

本部分设计从系统整体要求出发,充分考虑硬件设计原则, 采用模块化设计思想, 自上向下逐步将所要设计的内容细化,将网卡控制器模块(nic_controller)主要划分为网卡初始化(nic_init)、数据发送(packet_tx)和数据接收(packet_rx)等子模块,然后再进行相应的细化,图3给出了千兆网卡控制器的整体示意图。

控制发送与接收数据显然是网卡必须的功能, 通过Eth_tx和Eth_rx模块可以实现相应的功能。又针对本系统所采用的MAC和PHY芯片在上电开始工作时必须初始化这一特点,需添加Eth_init模块来达到要求。为了确保高速传输数据的实现, 以太网控制还设计了FIFO。

4实验结果

针对开发的千兆以太网,本文在vs 20 13下设计了上位机软件, 软件界面如图4所示。上位机软件采用SOCKET实现了UDP协议通信。该软件可以通过本文千兆以太网获取图像、控制步进电机运动以及激光头的开关。

为了测试本文设计的千兆以太网以及整个三维激光测量系统的性能, 在实验室环境下对人体模型的头部进行了测量,整个测量过程仅需要2分钟。图5为测量所获取的图像数据中的两帧。为了达到最佳测量效果, 背景颜色及人体模型都处于相对较暗的环境中, 图中的亮线为线型激光打到人体模型产生变形的像。应用相关的图像处理方法产生的人体模型头部的点云数据如图6所示。图中,a)为从测量系统角度看的点云数据及打光后的结果图,b)为点云数据旋转一定角度后及打光的结果图。从测试结果看, 本文所设计的千兆以太网能够满足激光三维测量系统对其数据传输实时性和可靠性的要求。

5结束语

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【三维物体】相关文章:

三维物体的重建方法论文提纲11-15

物体体积07-03

物体提取08-14

观察物体教案04-21

观察物体二05-14

运动物体检测05-02

物体打击处理方法05-25

观察物体用范文05-19

观察物体反思范文05-26

观察物体名师范文05-26

上一篇:例文学习下一篇:下腔滤器置入