为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

二维图像转三维图像

2017-09-19 9页 doc 312KB 42阅读

用户头像

is_594886

暂无简介

举报
二维图像转三维图像二维图像转三维图像 一、二维图像转三维图像的问题清理 1.3D显示屏采用何种三维显示技术? 2. 3D显示屏需要哪些设备支持(如显卡等)? 3.需要显示的图片格式是什么? 一、二维图像转三维图像的方法 (一)3dmax将二维图形转为三维几何体的方法 1.放样     这是最传统的转换二维图形到三维几何体的方法 2.利用常见的一些编辑器     比如旋转、拉伸、轮廓倒角等 3.NURBS曲面建模 先在“创建”面板下的“图形”按钮下的“NURBS”曲线,再利用“挤压”“旋转”“封盖”等多种方法创建曲面。 (二)AUTOCAD将二维...
二维图像转三维图像
二维图像转三维图像 一、二维图像转三维图像的问清理 1.3D显示屏采用何种三维显示技术? 2. 3D显示屏需要哪些设备支持(如显卡等)? 3.需要显示的图片格式是什么? 一、二维图像转三维图像的方法 (一)3dmax将二维图形转为三维几何体的方法 1.放样     这是最传统的转换二维图形到三维几何体的方法 2.利用常见的一些编辑器     比如旋转、拉伸、轮廓倒角等 3.NURBS曲面建模 先在“创建”面板下的“图形”按钮下的“NURBS”曲线,再利用“挤压”“旋转”“封盖”等多种方法创建曲面。 (二)AUTOCAD将二维图形转为三维 1. 运用立体空间三维软件的平面化,在上面绘制之后通过拉伸或挖切后可得到三维立体图形 (三)Microsoft Expression Studio 2.0 1.在“项目”面板的“文件”下,右键单击图像文件的名称,然后单击“插入”。 图像文件将作为 Image 对象进行添加,可以在美工板上调整其大小或加以修改。 2.在“工具箱”中,单击“选择”,然后选择刚才插入的图像。 3.在“工具”菜单上,单击“生成三维图像”。 Image 对象将转换为 Viewport3D 对象。Viewport3D 对象中包含照相机和光的容器。默认情况下,将创建远景相机、环境光和定向光。 附件: 三维显示技术介绍 目前的三维立体显示技术共可以分为分光立体眼镜 (Glasses-based Stereoscopic)、自动分光立体显示 (Autostereoscopic Displays)、全息术 (Hologram)和体三维显示 (Volumetric 3-D Display)4大类。 其中的前两类应该都是大家很熟悉的技术了,它们都采用了视差的方式来给人以3D显示的感觉:分别为左眼和右眼显示稍有差别的图像,从而欺骗大脑,令观察者产生3D的感觉。由于人为制造视差的方式所构造的3D景象并不自然,它加重了观察者的脑力负担,因此看久了会令人头痛。而全息术则利用的并不是数字化的手段,而是光波的干涉和衍射,它一般只能生成静态的三维光学场景,并且对观察角度还有要求,所以就目前而言,它对于人机交互应用而言还并不适合。 体三维显示则与前三者不同,它是真正能够实现动态效果的3D技术,它可以让你看到科幻电影中一般“悬浮”在半空中的三维透视图像。体三维显示技术目前大体可分为扫描体显示 (Swept-Volume Display)和固态体显示 (Solid-Volume Display)两种。其中,前者的代作是Felix3D和Perspecta,而后者的代表作则名为DepthCube。 Felix3D拥有一个很直观的结构框架,它是一个基于螺旋面的旋转结构,如下图所示,一个马达带动一个螺旋面高速旋转,然后由R/G/B三束激光会聚成一束色度光线经过光学定位系统打在螺旋面上,产生一个彩色亮点,当旋转速度足够快时,螺旋面看上去变得透明了,而这个亮点则仿佛是悬浮在空中一样,成为了一个体象素(空间象素,Voxel),多个这样的voxel便能构成一个体直线、体面,直到构成一个3D物体,过程很直观,不是么? Perspecta可能是扫描体3D显示领域最令人瞩目的成就了,它采用的是一种柱面轴心旋转外加空间投影的结构,如下图所示,与Felix3D不同,它的旋转结构更简单,就一个由马达带动的直立投影屏,这个屏的旋转频率可高达730rpm,它由很薄的半透明塑料做成。当需要显示一个3D物体时,Perspecta将首先通过软件生成这个物体的198张剖面图(沿Z轴旋转,平均每旋转2°不到截取一张垂直于X-Y平面的纵向剖面),每张剖面分辨率为798×798象素,投影屏平均每旋转2°不到,Perspecta便换一张剖面图投影在屏上,当投影屏高速旋转、多个剖面被轮流高速投影到屏上时,我们便会发现,一个可以全方位观察的自然的3D物体出现了! 从上面可以看出,Perspecta的投影帧频达到了198×730/60=2409fps,这个速度足够哄骗我们的眼睛,利用视觉暂留效应生成真实的3D场景;由于其每一帧需要798×798象素,以24位真彩色计,每秒钟需要的数据量竟高达(2409×798^2×3)/1024^3=4.286GB!鉴于普通激光器的激发时间受限,Felix3D是无法提供这么高的带宽和帧频的,Felix中一副3D图像最多只能达到1万体象素,而Perspecta则能显示将近10亿个体象素。为实现如此高的显示精度,Perspecta采用了名为空间光处理(Digital Light Processing)的技术,其核心是三块基于微机电系统(MEMS)的DLP光学芯片,每块芯片上均布设了由百万个以上数字化微镜像器件(Digital Micro-Mirror)组成的高速发光阵列,这三块DLP芯片分别负责R/G/B三色图像,并被合成为一副图像,由经底座中的固定光学系统以及随马达同步旋转的光中继镜片的反射,最终被投影至屏幕上面。值得一提的是,Perspecta在PC上几乎是即插即用的,它能够与3DS Max、OpenGL很好地兼容。 尽管几近完美的3D显示能力和简单的结构令Perspecta的制造成本大为减少,成为目前最有可能率先进入电子消费市场的体显示设备,但是,它和其他所有的扫描体显示技术一样存在着致命的弱点—“亮度”和“旋转”。全向开放外加投影的显示结构流明值较低,容易受到背景光影响;而高速的旋转则使得Perspecta对安置平台的平稳程度要求较高,其摆放的桌面不能随意晃动,否则将导致体象素显示模糊,甚至完全无法成像,因此它不能使用在宇航器、航空器及其航海船只等场合。为解决这一问题,聪明的人们又提出了固态体显示技术。 早期的固态体显示技术,如solidFELIX,主要采用一整块立方体水晶作为显示介质,在水晶中掺杂了稀土元素,当两束相干红外线激光在水晶内部的某空间点处相交时,它们将激发该点发光,目前这套系统仍处于实验室阶段。而DepthCube系统则代表了目前固态体显示技术的最高成就,它采用了一种很特别的方式:层叠液晶屏幕方式来实现三维体显示,它的外形就像一台80年代的电视机一样,其结构如上图所示,DepthCube的显示介质由20个液晶屏层叠而成,每一个屏的分辨率为1024×748,屏与屏之间间隔约为5mm;这些特制屏体的液晶象素具有特殊的电控光学属性,当对其加电压时,该象素的液晶体将像百叶窗的叶面一样变得平行于光束传播方式,从而令照射该点的光束透明地穿过,而当对其电压为0时,该液晶象素将变成不透明的,从而对照射光束进行漫反射,形成一个存在于液晶屏层叠体中的voxel。在任一时刻,有19个液晶屏是透明的,只有1个屏是不透明的,呈白色的漫反射状态;DepthCube将在这20个屏上快速的切换显示3D物体截面从而产生纵深感,它还采用了一种名为“三维深度反锯齿”(3D Depth Anti-Aliasing)的显示技术来扩大这20个屏所能表现的纵深感,令1024×748×20的物理体空间分辨率实现高达1024×748×608的显示分辨率;和Perspecta一样,DepthCube也采用了DLP成像技术;由于DepthCube的观察角度比较单一,主要是在显示器的正面,因此并不需要像Perspecta一样高的帧频,其每秒钟仅需显示1200个截面即可产生足够的体显示效果。 最后要说的是,所有的体显示技术均只能产生半透明的3D透视图,而无法显示不透明的三维物体,这是因为一束光线并不能遮挡住另一束光线的传播,因而也就没有必要采用二维3D显示技术中复杂的不可见面消隐对3D图形进行额外的z深度处理。此外,目前在国内,浙大的光学仪器国家重点实验室也正在积极开展体显示技术的相关研究工作,并已经取得了可喜的进展。 基于立体显示器的立体视觉实现 20世纪60年代Julesz对人的立体视觉的生理机制研究发现,山双目视差(binocular disparity)产生立体视觉。麻省理工学院的R.Robert把过去的二维图像分析推广到二维景物分析,完成了三维景物分析研究,这标志着立体视觉技术的诞生[1]。现在,立体视觉也成为计算机科学的一个重要分支,其在医学领域的应用也得到极大发展,已经显示出了极大的应用前景[2,3] 1  人眼立体视觉原理与人工立体视觉   由眼的神经机制研究可得出立体视觉的形成过程主要包括两个阶段[4]:第一阶段是抽取双眼物像中的某种基元,然后进行基元匹配并检测出视差信息;第二阶段是从获得的视差信息中感知深度信息。被观察的外界目标由于双眼位置差异双眼视网膜上形成的物像也略有差异,经过立体成像的两阶段山大脑皮层对视差图像融合产生立体视觉。根据人的立体视觉原理,实现人工立体视觉必须具备以下3个条件[5]:首先所观察的两幅影像必须有一定的左右视差;其次左右两眼必须分别观察左右各一幅图像,即实现左右分像;最后是两幅影像所放置的位置必须使响应视线成对相交。根据投影面、人眼以及观察对象之间的相对位置,可有零视差、负视差、正视差和发散视差之分[6,7]。 2  立休视觉的传统实现方法   总体来讲,立体成像的方法有两类,一是激光全息照相,二是根据双目视差立体视觉原理实现立体成像。前者利用激光相干特性原理,经过适当处理得到的全息图不同于传统二维图像,而是原物体准确的再现[8]。运用该技术必须借助激光装置上才能再现原物体的影像,目前还不便于推广普及。目前应用较广的立体成像,本质上就是把具有一定视差的两幅图像分别投影到双眼视网膜,最后根据双目立体视差实现立体视觉,这就是根据双目视差的立体视觉原理实现立体成像[5,6,9]。分光法、补色法和场分割法是目前常用的立体成像技术。 2.1  分光法   即把视差两幅图像显示在计算机屏幕上的不同位置或两个屏幕上,借助光学设备使左右眼分别只看到对应的图像,实现立体视觉成像,典型的应用是棱镜分光和立体头盔式显示器(HMD)。棱镜由于其采用光学分光而不便于控制立体视差范围;立体头盔式显示器由计算机输出的两幅视差图像分别显示在两块独立的液晶显示屏上,实现立体视觉,其优点是能方便控制视差图像、便携和便宜等优点,但由于与眼睛距离太近且容易沾上水蒸气而影响观察,且目前其的分辨率很低。 2.2  补色法   所谓补色法,就是将视差图像用红绿等两种补色同时显示出来并用相应的补色观察,其原理与多倍仪立体观察一样。该方法简便易行,除补色眼镜外无须其他硬件设备,但它影响彩色图像的立体观察。 2.3  场分割法   场(幅)分隔法,也称时分制法。该方法是指将视差图像按场(幅)序交替显小,用场同步信号分别把视差图像投影到双眼视网膜。根据其显示模式可以分为交错显小(Interlacing)、画面交换(Page一Flipping)、线遮蔽(Line -Blanking),画面同步倍频(Sync一Doubling)。目前由于传输带宽与分辨率之间的矛盾,该方法在改善画质和消除闪烁等方面也还有待改进的地方。当前常用的3D立体眼镜正是基于这一技术。 3  基于立体显示器的立体视觉实现   基于场分割法的立体成像技术到目前为止是一种技术原理上最成熟、应用也最广泛的立体成像方法。已有采用这一技术研制的立体显示器,用户只需利用微软公司软件DX接口编程实现将已有的三维模型转换成后缀名为.x文件实现立体视觉显示[10]。本研究要实现的是在基于SHARP公司的立体显示器程序实现三维模型的显示。 3.1  基于立体显示器的立体视觉硬件实现技术   立体显示器由液晶显示层(liquid crystal display)和位于其后的照明板(illumination plate)两层构成,照明板上的双凸镜能形成均匀、明亮的垂直细条纹(light lines),液晶显示层上像素(pixs)实现分光(见图1)。液晶显示器以每秒60帧的频率分别在奇、偶列像素上交替显示左、右眼图像,由于采用了精确的分光,左/右眼只能分别看到奇/偶数列像素上的图像。根据使用者的个体差异,调整照明层与显示层的距离α,即可实现最佳的立体视觉。由上图不难看出,该显示器还可供多人同时观察(如图2)。严格意义上讲,该显示器结合了分光法和场分割法的研究特点,继承了其优点。     3.2  基于立体显示器的立体视觉编程   由于临床和科研需要将二维图像或计算机绘制的二维模型实现其立体显示,但以往也仅是将采用各种重建的三维图像投影到2维平面上显示,并不能真正实现三维立体显示。而该类显示器采用通用行业标准,它们能在Windows 95/98/Me1NT/2k/XP等操作系统下运行,除能将单幅图片构造出双目视差的立体图像外,还能将运用其它三维软件制作的三维图像转换成扩展名为.x的三维图像格式文件直接显示,因此我们需要做的仅仅是将各种三维图像数据转换为扩展名为.x文件,并在该立体显示器上显示该三维图像(见图3)。    3.2.1  模型转换  目前器官二维模型制作的常用表面绘制法[12-14],首先是用CT扫描器官获取其轮廓,也常见采用X光片提取器官轮廓,然后用专用的三维软件根据其轮廓制作三维器官模型.正是由于三维软件的多样性造成三维模型的数据格式多样性,在本显示器实现立体显示以前,必须将各种数据格式转化为X文件所默认的数据格式。X文件是Direct3D默认的模型和动画数据的存储格式[15],同各种二维建模软件的数据文件存储了二维模型的顶点坐标、颜色、法线向量和纹理坐标等信息一样,有相似的数据结构(如图4)。    三维模型转换为.x格式数据文件是实现采用立体显示器实现立体显示的关键步骤。本研究拟采用第三方软件conv3d,通过以下命令   conv3ds file.3ds   将3DSMAX软件采用的表面绘制法制作的舰关节三维模型转换为X格式文件;当然也可以编译DX9.0的软件开发包中提供的3DSMAX的模型输出外挂程序XskinExp.dle的项目文件Xskinexp.dsw生成外挂程序而直接在三维造型软件中将三维模型转换为X格式数据文件。 3.2.2  读三维数据  由于VC6.0中集成了文件读写功能[11],在程序中设置数据缓冲区,打开文件,读取X格式数据文件中的数据,并存入预先设置的数据缓冲区。用以下编程语言实现:   ……   //设置数据缓冲区   LPD3DXBUFFER pD3DXMtrlBuffer;   //载入X格式数据文件file.x   D3DXLoadMeshFromX("file.x",   D3DXMESH_SYSTEMMEM,   g_pd3dDevice,NULL,   &pD3DXMtrlBuffer,NULL,   &g_dwNumMaterials,   &g _pMesh);   // pD3DXMtrlBuffer指向三维模型数据   D3DXMATERIAL* d3dxMaterials=   (D3DXMATERIAL*)pD3DXMtrlBuffer一>   GetBufferPointe();   g_pMeshMaterials=   new D3DMATERIAL9[]dwNumMaterials];   for  (DWORD  i =O;i Clear(0,NULL,   D3DCLEAR_TARGET   | D3DCLEAR_ZBUFFER,   D3DCOLOR_XRGB(0,0,255),1.of,0);   //开始绘制图像   g _pd3dDevice->BeginScene() ;   //设置世界、视图和投影矩阵   SetupMatrices();   //将三维网格数据写入显存设备   for(DWORD i=0;i< g _dwNumMaterials; i++)   {//为每个网格分别设置材质和贴图   g _pd3dDevice一>SetMaterial(& g _pMeshMaterials [i]);   g _pd3dDevice->SetTexture(0,g _pMeshTextures[i]);   //绘制网格单元   g _pMesh->DrawSubset( i);}   //结束显存设备写入   g _pd3dDevice->EndScene();   //在立体显示器上实现立体显示   g _pd3dDevice->Present( NULL,NULL,NULL,NULL); 4   结果与讨论   采用以上研究步骤将髓关节的三维模型显示在该立体显示器上(见图5),并且不同位置看可观察到立体效果。    该显示器与以上几种技术方法相比具有以下优点:不依赖任何外部设备,且成像质量高、观察范围广且允许多人同时使用;只要有足够的照片,它还能形成3600全景图;由于采用微软公司的接口技术,为其推广奠定了坚实的基础。然而,由于其目前技术工艺限制,该显示器的成本较高,离市场要求还有一定差距。   计算机立体视觉是一门新兴、有着广阔应用前景的学科,随着计算机技术和光电子技术的发展,该立体技术将不断发展,并逐步实用化,相信在不久的将来,其在医学、教育和制造业等方面将起重要作用。
/
本文档为【二维图像转三维图像】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索