oniios view做圆周运动怎么做三维重构

三维建模,最全面的三维建模文章 - 电子工程世界网
在电子工程世界为您找到如下关于“三维建模”的新闻
三维建模资料下载
,其中动画框架扩展AFX5对自然场景规定了新的格式,同时AFX也提供了新的工具来对自然图像中的场景对象使用表面光场和深度图像绘制技术进行建模等[4]。本文从计算机图形学、计算机视觉和经典媒体的角度,结合ISO/MPEG的相关研究,对三维真实场景视频的建模、编码、绘制技术及相关的应用进行详细的分析和介绍。在本文的第二部分,根据应用场景的不同,首先对交互式三维视频进行分类,并介绍它们各自的特点;第三部...
10.7.5建模与条件设置392
10.7.6求解介质球散射场的源程序394
10.8三维有限差分法对线馈矩形微带天线的分析422
10.8.1用三维有限差分法分析线馈矩形微带天线422
10.8.2用时域有限差分法分析线馈矩形微带天线424
10.8.3分析线馈矩形微带天线的源程序426
10.9利用有限差分法分析光纤光栅特性447
10.9.1光纤光栅耦合模方程的数值模型的研究447...
笔者首先分析了三维人脸建模技术背景意义和研究现状;其次论证了各种三维人脸建模技术的优缺点;最后对三维人脸建模技术的应用领域进行了详细介绍并进一步展望了今后三维人脸建模方向。...
三维重构建模是计算机视觉技术的主要内容之一。相机内外参数的标定、图像特征点的提取以及特征点的立体匹配是三维重构建模的技术核心。本文总结了近来三维重构建模的研究成果和计算方法,并提出了一些观点,对三维重构建模的难点和发展趋势作了说明。关键字 计算机视觉;三维重构;相机标定;立体匹配人类感知外界信息的80%是通过视觉得到的。人类通过眼睛与大脑来获取、处理与理解视觉信息。周围环境中的物体在可见光的照射...
提出基于部件分解的三维服装人体建模方法,通过去噪处理和人体特征点识别使三维人体扫描数据分解为若干部件,对各个部件进行曲线拟合插值处理,将其组合成完整人体模型。利用该方法建立的三维服装人体模型库为非接触人体测量和体型分析、三维服装设计与模拟展示等电子化量身定制应用提供了支持。关键词:人体建模;去噪;部件分解;电子化量身定制...
倒圆角特征建模范例 实例 13 倒角特征建模范例 实例 14 壳特征建模范例 实例 15 线性阵列特征建模范例 实例 16 旋转阵列特征建模范例 实例 17 &填充&阵列特征建模范例 实例 18 可变剖面扫描特征建模范例 实例 19 扫描混合特征建模范例 实例 20 三维扫描特征建模范例 实例 21 螺旋扫描特征建模范例 实例 22 边界混合曲面特征建模范例 实例 23 多边...
汽车驾驶模拟器新一代实时场景系统的开发:本论文总结了汽车驾驶模拟器新一代实时场景系统的设计和开发工作。汽车驾驶模拟器新一代实时场景系统是汽车驾驶模拟器的重要组成部分,是一个全新的视景仿真和场景管理系统。它应用了先进的三维实体建模技术,视景仿真技术和虚拟现实技术,大大提高了视景仿真的质量。为建立新一代实时场景系统,本论文主要做了以下几个方面的工作:1. 应用了三维建模软件 MultiGen...
介绍客车车身三维建模的方法及常用软件, 用实例说明客车车身三维实体建模的过程。关键词: 客车车身 实体 三维建模Abstract: Th is paper introducesmethods and common softw ares of the 3D modelling for the bus bodies. Moreover, the modelling p rocedure has...
ArBa3d 3.1.2 三维建模工具简单说明:ArBa3d是一个三维建模工具,可以利用一套物体不同角度的照片建立相应的三维模型。它支持 OBJ、DirectX、VRML,可以在网上展示,可以对编辑窗口界面进行定制。&...
摘要:在传统的城市规划设计中,大多是采用平面设计软件如AutoCAD和PHOTDSHOP等软件来进行设计的.3S集成技术、虚拟现实技术以及数据库技术的高度发展为三维城市规划软件的开发提供了很好的技术支持.在软件开发过程中,三维地物的建模技术是关键,因此必须提出一种新的快速建模方法.本文首先介绍了快速建模的构想,然后阐明了快速建模的方法及其实现.城市规划是根据城市...
三维建模相关帖子
三家公司签署非约束性采购意向备忘录,金额高达120亿美元,高通将在今后三年向这三家手机制造商销售零部件。高通3D深度传感器利用红外线接受三维深度数据,形成高分辨率的深度数据,可以准确识别人脸,在低光环境下也能进行三维重建。高通的3D深度感测设备的目标市场还将进一步扩大至汽车、无人机、机器人以及虚拟现实等领域。
机构认为,人工智能时代,拍照摄像和三维建模是人机交互的两大核心问题,3D深度视觉进入...
的TANGO项目开发三维建模和实时定位软件。
  在向记者展示的视频中,CityFlyer微型四旋翼飞行器一边自主导航,一边创建三维地图,并安全地到达了预先设定的室内目标。肖博士介绍说,微型旋翼机器人在反恐执法、军事侦察、城市巷战、治安和民用等领域具有广阔的应用前景。例如,装备有摄像头的警用微型旋翼机器人可以低空飞入危险小巷,近距离监视和拍摄犯罪分子的行为;也可以从窗户飞入高层建筑物内部,帮助...
与飞行器间数据链实物终端的半实物联合仿真
• 仿真中整合了虚拟战场仿真(基于Presagis Stage)、三维视景仿真(基于Presagis VapsXT),实现了虚拟战场-自组织网络-三维视景相结合的体系化仿真
• 仿真中整合了无线信道模拟与通信干扰模拟,针对真件间的空口传输模拟了真实复杂电磁环境,使得网络仿真更为真实
& && &nbsp...
,首先只采用Dymola软件搭建太阳能热水器系统模型。
一维系统模型架构如右图所示:管路长度设置精确到1m,储水罐在划分成10个水平温度区域。
& && &&&基于Dymola热流体库和ANSYS CFD软件搭建太阳能热水器系统模型,并在TISC仿真环境中进行了软件联合仿真。
三维储水罐模型建模要求:
地貌,相比声纳测量技术,测量效率和测量质量都远远提高。
利用激光雷达脉冲波的穿透性,可以对森林领域进行探索。通过分析脉冲波的回波波形数据,可以得到森林地形的三维结构,测算林木高度、冠层结构等重要参数,估算森林生物数量,还可以发觉地下墓冢、建筑物等等,为其他林业研究、考古研究提供基础数据。
激光雷达方向性强、角分辨高、工作波短,能对距离、速度、角度等参量完成精确测量,且空间无大气衰减和散射...
研发到商业化,到如今广泛被市场认可,花了不到10年时间,而真正国内新能源汽车销量的爆发又集中在最近3年。
成熟的无人驾驶方案离不开激光雷达
激光雷达(LiDAR)是无人驾驶汽车中最强大的传感器之一。它可以区分真实移动中的行人和人物海报、在三维立体的空间中建模、检测静态物体、精确测距。
它是通过发射激光束来探测目标位置、速度等特征量的雷达系统,具有测量精度高、方向性好等优点, 在军事领域以及民用...
应用案例VAPS XT 在无人机智能算法验证中的应用
& && &&&无人机的特点是拥有一定程度的智能性,而这些智能性都是由其智能决策算法来实现。这就给无人平台的测试提出了新的要求。由VAPS XT 制作的人机交互终端能够显示无人机的各种飞行参数、飞行路线、以及无人机传感器的三维可视化信息。VAPS XT 的应用实现了算法功能测试...
生命周期管理功能。
•&&混合建模技术
包括设计对象的混合建模、变量及参数化混合建模、几何与智能工程混合建模的相关技术,使复杂产品在整个设计周期内修改方便,易于创新并最大化产品开发效率。
•&&模块全相关性
CATIA 各模块基于统一的数据平台,各模块存在着全相关性,三维模型的修改,能完全自动映射至二维,模拟分析,模具...
EDEM和PFC都是基于离散元算法,所以在原理上其实并无太大不同,主要是在应用上有差别。
1)、EDEM具有非常友好的图形用户界面,无论是前处理建模还是后处理获得各种数据图表,都非常方便;而PFC主要还是采用命令的操作方式。
2)、EDEM是全三维的离散元求解器,当然,如果想简化成二维也是可以的;PFC则是分为2D和3D两个版本。
3)、EDEM能够方便的进行各种非球形颗粒建模,采用球面...
的工程师“透视”到焊缝中来检查温度分布和微结构的变化。Colegrove博士和他的研究小组还编写了一个带有图形界面的仿真工具,这样空客的工程师可以直接提取材料的热力属性以及焊缝极限强度。 在这个摩擦搅拌焊接的模拟过程中,将三维的传热分析和二维轴对称的涡流模拟耦合起来。 传热分析计算在刀具表面施加热流密度后,结构的热分布。可以提取出刀具的位移,热边界条件,以及焊接处材料的热学属性。接下来将刀具表面处...
三维建模视频
你可能感兴趣的标签
热门资源推荐当前位置: &
1,319 次阅读 -
作者:刘峰 来自: 深度学习大讲堂
三维人脸重建的目标是根据某个人的一张或者多张二维人脸图像重建出其三维人脸模型(此处的三维人脸模型一般仅指形状模型,定义为三维点云)。今天我们只讨论由单张二维图像重建三维人脸的问题。这个问题本身其实是个病态(ill-posed)问题,因为在将人脸从三维空间投影到二维平面上形成我们看到的二维人脸图像的过程中,人脸的绝对尺寸(如鼻子高度)、以及由于自遮挡而不可见的部分等很多信息已经丢失。在不掌握相机和拍摄环境的相关参数的情况下,这个问题其实是没有确定解的。
为了解决这一病态问题,一个直接思路是借助机器视觉中的Shape-from-Shading(SFS)方法。但是该方法依赖于光照条件和光照模型的先验知识,而未考虑人脸结构的特殊性,在任意拍摄的人脸图像上效果一般。后来,Kemelmacher-Shizerman和Basri [1] 引入了平均三维人脸模型作为约束条件对传统的SFS方法进行了改进,取得了不错的效果。然而,重建结果往往都接近平均模型,缺少个性化特征。另一个常用思路是建立三维人脸的统计模型,再将该模型拟合到输入的二维人脸图像上,利用拟合参数实现三维人脸的重建。这类方法基本都是基于Blanz和Vetter提出的三维形变模型(3D Morphable Model,简称3DMM) [2]。由于3DMM采用主成分分析(PCA)方法构建统计模型,而PCA本质上是一种低通滤波,所以这类方法在恢复人脸的细节特征方面效果仍然不理想。此外,上述两类方法在重建过程中对每幅图像都需要求解优化问题,因而实时性较差。
受到近年来回归方法在人脸对齐中的成功应用的启发,我们最早试图建立二维人脸图像上的面部特征点(包括眼角、鼻尖、嘴角等)与人脸三维模型之间的回归关系。这一思路的基本出发点是面部特征点是反映人脸三维结构的最直观依据。我们尝试根据二维特征点的偏差直接预测三维人脸形状的调整量。这就好比我们知道二维特征点是由三维人脸形状投影得到的,如果我们发现二维特征点存在偏差,那么根据这一线索我们就应该能够计算出三维人脸形状应该做怎样的调整。而这个计算过程可以用事先训练好的二维特征点偏差与三维形状调整量之间的回归函数来实现。基于这样的思路,我们成功地设计实现了在给定输入二维人脸图像上的特征点的条件下实时重建其三维模型的新方法。相关结果发布在Arxiv [3]。
沿着上述思路,基于2D人脸特征点和3D人脸形状之间很强的相关性,我们进一步尝试将二维人脸图像特征点检测(即人脸对齐)与三维人脸重建过程耦合起来,在回归的框架下同时实现这两个任务。这就是我们今天要介绍的发表在ECCV2016上的工作 [4] (以下称ECCV2016方法)。扯了这么多(希望不是那么远^_^),下面正式进入正题。
如上图所示,之前研究者大都将2D特征点定位和3D人脸重建两个过程割裂开来解决,而这两个工作本质是一个“鸡生蛋、蛋生鸡”问题。一方面,2D特征点 U 可由中性3D人脸 S 经过表情(FE )、姿态变换( FP)及投影( FC)得到,即
另一方面,2D特征点携带有丰富的几何信息,这也是3D重建方法的基础。
现有的2D特征点检测方法大部分是基于2D人脸形状建模的,主要存在以下几个问题:i)很难去刻画3D平面外旋转的人脸特征点;ii)在人脸姿态不是很大的情况下,通过变化人脸轮廓特征点语义位置来解决自遮挡的情况,这样会导致不同姿态下检测的特征点语义信息不一致 [5](如上图,人脸图像中蓝色点所示);iii)在更大姿态下,尤其是yaw方向超过60度以后,人脸区域存在近一半自遮挡,遮挡区域的纹理特征信息完全缺失,导致特征点检测失败。
现有的利用2D特征点来恢复3D人脸形状的方法也存在以下几个问题:i)需要第三方2D特征点检测算法或者手动得到2D特征点;ii)不同姿态下检测的特征点语义信息不一致,难以确定3D点云中与其对应的点 [6];iii)只生成与输入人脸图像同样姿态和表情的3D人脸,而这样的3D人脸,相对于姿态和表情归一化的3D人脸而言,显然并不有利于人脸识别。
ECCV2016方法的整体框架如下:
为了在一个框架内处理2D特征点定位和3D人脸重建,我们利用两组级联的线性回归,一组用来更新2D特征点,另一组用来更新3D人脸形状。在每一次迭代中,先用SDM[7]方法得到特征点更新量,基于方法[3]再用特征点的更新量去估计出3D人脸形状的更新量。新的3D人脸一旦更新就可以粗略地计算出3D-to-2D投影矩阵,同时再利用3D人脸对特征点进行修正,尤其是自遮挡区域的特征点位置及特征点可见性信息。整个过程2D特征点、3D人脸形状、3D-to-2D投影矩阵的更新都是一个由粗到精的估算过程。
我们先给出利用训练好的回归模型检测任意一张二维人脸图像上的特征点,并重建其三维模型的过程。
值得指出的是:Step 5中,从3D人脸投影得到2D特征点对人脸形状和姿态都有很强的约束。而Step 2中,特征点是通过纹理特征指导得到的,其中自遮挡区域由于纹理信息的缺失,回归得到的特征点常常是不准确的。通过此步骤3D投影来修正能够有效地提高特征点检测的准确度。
在训练过程中,为了得到上述回归模型,需要提供成对的标定好特征点的二维人脸图像及其对应的三维人脸数据
为了更好地处理任意姿态、任意表情的二维人脸图像,训练数据中需要包括尽量多不同姿态和不同表情的人脸,而对应的三维人脸则都是中性表情的、且已经稠密对齐的点云数据。下面我们重点介绍一下用于人脸对齐的2D特征点回归的目标函数和用于三维人脸重建的3D形状回归的目标函数。
该目标函数建立当前2D特征点周围的纹理特征与其距离真实位置的偏移量之间的回归关系。我们训练所用2D特征点是从3D形状投影得到的,因而确保了语义上的一致性。同时为了处理大姿态人脸图像,如果某个特征点被判定为不可见点,那这个点的SIFT特征向量置为0。
3D形状回归建立的是2D特征点修正量与3D形状修正量之间的关系。所有训练3D人脸都进行了稠密对齐,且2D特征点之间也作好了对齐,所以并不需要增加额外的平滑约束,同时也尽量保持了3D人脸的个性化差异。训练数据中的3D形状是姿态-表情归一化(Pose and Expression Normalized,简称PEN)3D人脸,如此重建得到的PEN 3D人脸更适用于人脸识别。
在公开测试集上的实验结果证明了在统一的回归框架下同时解决人脸对齐和三维重建的有效性。ECCV2016论文中还进一步证明了重构出来的姿态与表情归一化的三维人脸在提升人脸识别准确率方面的有效性。最后,我们展示利用ECCV2016方法得到的人脸对齐和三维重建的几个典型结果。
[1] Kemelmacher-Shlizerman, I., Basri, R.: 3D face reconstruction from a single image using a single reference face shape. TPAMI (2011).
[2] Blanz, V., Vetter, T.: A morphable model for the synthesis of 3D faces. In: SIGGRAPH (1999).
[3] Liu, F., Zeng, D., Li, J., Zhao, Q.: Cascaded regressor based 3D face reconstruction from a single arbitrary view image. arXiv preprint arXiv: (2015 Version)
[4] Liu F, Zeng D, Zhao Q, Liu X.: Joint face alignment and 3D face reconstruction. In: ECCV (2016).
[5] Jourabloo, A., Liu, X.: Pose-invariant 3D face alignment. In: ICCV (2015)
[6] Qu C, Monari E, Schuchert T. Fast, robust and automatic 3D face model reconstruction from videos. In: AVSS, 113-118 (2014)
[7] Xiong X, De la Torre F. Supervised descent method and its applications to face alignment. In: CVPR. 532-539 (2013)
注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。
相关文章!
不用想啦,马上 发表自已的想法.
做最棒的数据科学社区
扫描二维码,加微信公众号
联系我们:2015年4月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第三2015年3月 移动开发大版内专家分月排行榜第三2014年10月 移动开发大版内专家分月排行榜第三
2015年4月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第三2015年3月 移动开发大版内专家分月排行榜第三2014年10月 移动开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。当前位置: >>
基于单幅二维图形的三维重建系统的研究与实现
北京工业大学 硕士学位论文 基于单幅二维图形的三维重建系统的研究与实现 姓名:许磊 申请学位级别:硕士 专业:信号与信息处理 指导教师:孙光民
摘要摘要随着计算机图形学以及虚拟现实等技术的迅速发展,迫切需要三维形体的设 计更加快捷、简便,传统的通过三维建模软件设计形体的方法由于操作复杂,专 业化强的缺点已经日益不能满足设计人员创作的需要,因此对三维重建领域的研 究已经成为计算机图形学的研究热点。由二维图形直接重建三维形体正是快速、 有效获得三维模型数据的重要手段之一。 本课题的研究目标是对单幅手绘输入的二维图形通过重建算法实现三维形体的设计,以具备手写笔输入功能的平板电脑作为系统硬件平台,在VCH开发环境下结合Open Inventor以及OpenGL三维图形库开发一套三维重建系统。该系统可实现两个方面的三维重建:一是通过形体二维轮廓图形实现规则形体的重建,二是对特殊曲面的重建。在对规则形体的重建方面,提出针对输入图形提取有效的特征,然后利用小 波神经网络实现二三维空间之间的非线性映射关系,以避免直接恢复三维形体的 多解性与病态性问题。在特征选取方面,经过实验分析,提取基于曲率的角点特 征以及图形的组合矩特征,这些特征都具有旋转、平移、尺度的不变性。 在对不规则三维曲面形体重建部分,实现思路如下:针对输入图形建立数据 结构存储轮廓的线条信息,并利用距离变换的方法生成基于输入轮廓的灰度图 像,然后利用基于单幅图像重建三维信息中采用的SFS(Shape From Shading)算法 生成轮廓的高度信息,最后利用Delaunay三角面片法由高度数据生成三维曲面形体。以上两种方法在系统中整合在一起,实现了一个由简单手绘图形来完成3D 形体设计的思路,可用于在设计复杂三维形体前的简单原型设计,对生成的模型 数据加以整合处理可导入到三维建模软件中做进一步精细加工,具有一定实用价值。关键词:三维重建;特征提取;网;小波神经网络SFS算法;Open Inventor技术;Delaunay三角 曼!曼!曼曼曼鼍曼曼曼曼曼皇曼曼曼曼曼!曼苎曼曼曼曼曼曼曼皇!曼!皇曼皇曼!!曼舅!!曼!量苎曼!曼曼蔓!!曼!曼曼曼曼曼量!!曼!曼曼曼曼曼曼Ill!曼!曼!!曼AbstractAbstractWiththe rapid development of computer graphics and virtual reality,the method of how todesign three―dimensional that design 3Dnotobjectfaster and more simply is badly needed.The traditional methodcarlobjectsby modeling software is too specialized and complex to implement andonmeet the need of designer.Therefore the researchathree?dimensional reconstruction hasbecome to algorithms.hotspot.3Dobjectreconstruction from 2D sketch isjustoneof the fast and efficientThe aim of this issue is to develop single 2D hand―drawnasoftware system to reconstruct 3Dobjectsdirectly fromgraphics.Wechoose the HP tablet PC with handwriting input equipment鹊the system hardware platform and develop the 3D reconstruction system by Visual C++with Open Inventor and OpenGL library.The system outline sketch of regularCallrealize 3D reconstruction in two aspects:One is the of 3D specialobjectsreconstruction,the other is the reconstructioncurved surfaCCS. In the regular extractingconnectobjectsreconstruction,a new scheme is proposed with the method that firstly then the wavelet neural network is usedtoeffective features on the graphics andthe 2D axis with 3D axis SO the ill-posed problem can be avoided as a result.Conner basedoncharactercurvature and Moment characterarechosen as the features duetotheirinvariance in In therotation,translation,scaling.acurved surface reconstruction,the scheme is∞follows:Firstly establishstore contourdatastructuretostokesonin the graphicsandthen use thedistancetransformation togenerate the gray image based usingthe input contour.The next step is creating the height data by and finally obtain 3D surface model with DelaunaySFS(shape from shading)algorithmsTriangle?law algorithms. The above two schemes are integrated together in this system which achieve the idea that obtain 3Dobjects easilyfrom 2Dhand-drawngraphics.This systemcanbe used in prototypecalldesigning before making complex 3D models.The data generated by prototype modelsbeaedited in professional modeling software to make further processing.In conclusion it will be of certain practical value.Keywords:3DDelaunayreconstruction;feature extraction;Shape fromShading(SFS);OpenInventor;Triangle―lawalgorithms;wavelet neural networkII 独创性声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人 已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构的 学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。关于论文使用授权的说明本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。 (保密的论文在解密后应遵守此规定)躲‘湃磊导师躲抓狐嘞。7.6.3 第l章绪论第1章绪论1.1课题研究意义计算机辅助设计(CAD)技术Ⅲ的出现使人们摆脱了以往用丁字尺、绘图板等 工具手工设计三维图纸的操作,而利用专业软件作为开发工具,从而大大减少了 设计人员的工作量,工业设计从此进入了一个新的时代。随着虚拟现实技术【21、 设计自动化、制造自动化、地形绘制、车辆导航、考古、艺术品复原、军事侦察、 智能机器人等学科的发展,迫切需要快速的三维物体建模方法,因此,如何快速 有效地获得三维模型一直是计算机图形学及计算机视觉领域的研究人员努力的 目标。计算机技术的不断发展和人类对数字化信息的需求不断增加,使人们迫切 地希望能突破现有数字计算机的信息处理能力,将其扩展为能处理多维信息的智 能计算机系统。但是,尽管人们已在该领域进行了大量的工作,计算机视觉的发 展仍处于初级阶段。 在实际的产品设计中,概念设计阶段目前最常用的CAD方法是通过三维建 模软件实现。现在市场上有许多优秀的建模软件,如3DS Max,AutoCAD,Maya 等pJ,它们都有良好的建模效果和场景渲染效果,但是这些软件的操作都十分复 杂,以3DS Max为例,其中包括百余个基本操作以及数倍于此的扩充功能,如 各种插件。这些操作分散在许多菜单、工具条中,同时还要求用户填写大量的参 数,这也令这种方法的自动化程度低;由于操作复杂,使得建模周期长,同时需要熟练的操作人员。人们常常以勾勒、涂鸦的方式保存思维的轨迹或和与他人交流看法。相比文 字表达,绘图往往能更加快捷和简明的描述三维外形或空间关系。虽然绘画工具 的使用方式都比较简单,但这些简单的方式在人类长时间的绘画实践中灵活组合 最终形成丰富的绘画经验。可是绘画的实践经验很少被用到除二维绘制或基于图 像绘制以外的计算机图形学领域。同时由于快速建模与原型工具的缺失,实际中 艺术家只有当他们需求确定和构思成熟的时候才会求助于计算机辅助系统,因此传统的建模工具不适合用于灵感形成阶段。如何才能从本质上减少三维设计中大量烦琐的操作,使设计人员能集中精力 于那些富有创造性的高层次思维活动一直是许多科研工作者的目标。本课题正是 基于这个目的出发来研究从二维图形实现三维重建,将由设计人员绘出的二维图 形送入计算机处理,使计算机由二维图像信息认知三维信息,如此真正实现计算 机辅助设计的智能化与自动化。 由二维图形实现三维重建的意义主要有以下几个方面: 北京工业大学1=学硕:仁学位论文1)三维重建技术在人工智能领域中的应用 三维重建是一个模拟人工读图的过程,涉及到机器理解和推理问题.在基于 二维工程图的三维重建【4。‘7】中,由于二维信息与空间信息是“一对多"的关系, 不同于基于单个投影视图的线图理解,它必须符合工程制图的投影规则,重建结 果必须满足许多隐式和显式约束条件,因此对视图的解释过程更加复杂。如何充 分、准确、合理地解释工程视图信息为机器理解和推理提供了新的课题。在智能装配机器人的研究中,三维重建技术在积木世界为机器人装配作业提供了由三视图提示的目标理解功能,从而为机器人视觉提供了一种目标理解方法。在基于特定人脸的三维真实感重建研究中,通过提取人脸的正、侧面照片的特征与中性 人脸模型库做匹配处理,从而重建人脸的三维模型。在石油地质图象、医学图像 分析中,由实体的多幅切片图像序列来恢复其三维数据模型。2)三维重建技术在CAD/CAM中的应用尽管随着计算机图形学、几何造型及相关领域的技术的不断发展,许多具 有造型功能的商业软件相继推出,但是目前在工程领域,尤其是在逆向工程以及 计算机辅助设计与制造中,三维重建技术的研究仍具有相当高的理论和实用价 值,其主要体现在以下几个方面: ①工程图纸到CAD/CAM三维模型的转化; ②CAD/CAM系统的图形输入; ③CAD/CAM系统中不同层次模型之间的转换。 三维重建技术还可以使二三维一体化CAD系统采用统一模型数据源,因此 二三维之间是一致的、相互关联的。当任何一方模型改变时,系统将向另一方发 送消息,然后自动同步更新。对于设计人员来说,当需要在设计后期细化、更正 自己的设计意图,或进行变异设计时,三维重建系统的建立和研究就越发凸显出重要的意义。.1.2三维重建领域的研究现状基于二维图形的三维信息重建技术,其主要任务就是以形体的二维投影视图为输入,获得其中的二维信息(包括几何信息、拓扑信息和语义信息等),根据二 维和三维的投影匹配关系生成三维信息,对这些信息进行分类处理后,在三维空 间重新构造出二维视图所对应的三维形体,逐步恢复形体的点、线、面的几何信 息及拓扑结构,实现形体的重建。三维重建技术与2D到3D的三维建模技术是 两个不同的概念,三维建模技术是已知物体的三维几何信息和拓扑信息来构建空 间形体,而三维重建技术是人工智能领域的研究课题,是通常的几何作图或者摄影成像过程的逆过程。 自七十年代以来,人们在三维重建方面进行了大量的研究工作。根据重建算 法所采用的重建策略及重建形体所使用的表示形式,迄今为止已经发表的三维形体重建方法大致分为两类:派生法和创生法。1)派生法。其基本思想是将复杂的三维形体描述成一系列预定义的体素的 组合,并将所有预定义的体素的三维特征及其三视图投影特征描述定义成一系列 的模式,构成描述体素的模型。三维形体就是由这些体素通过各种变换运算和布 尔运算来构成,这类方法使用自顶向下的重建策略。其代表性的方法主要如下: Aldefedt副首先提出了基于模型引导的重建方法,采用自顶向下的重建策略。 他将整个形体看作是由若干个基本形体组成,根据各个基本形体在二维正投影图 中的特定模式来识别这些形体,再通过启发式搜索得到形体的解,构造出了均匀 厚度子体的识别模型,实现了此类子体的识别。但是只能处理等厚体且只能处理 简单的形体,处理稍微复杂的形体就会导致算法的失败。Masatoshi Ito和Atsushi Moilt91在其文章中运用了基于体切削的重建思想。首先以某一视图内实体目标投影的外轮廓为底面构造一个柱体,以其它视图内的图 形中不包含在前一视图内的第三个坐标的最大值和最小值来确定柱体的高度和 位置。该柱体完全包含了真正的实体目标。然后对这个实体根据三视图作进一步 的切削、挖,直到得到的结果完全符合要识别的三视图。但算法没有更进~步的 描述和全面的实现。只能识别一些特殊的平面体,也不能处理多解和病态解。BinHo[io]给出的重建算法以交互式借助数字化仪从图纸中直接输入体素的描述,包括体素的类型、实虚性,以及有关体素的5个坐标参数。当输入一个体素的三视图描述时,系统根据其类型构造出相应的子体三维结构,并利用给出的子体虚实性来构造CSG树,体素包括立方体、棱锥、圆柱、圆锥和球体等:另 一个显著的特点是它还能处理其轴线倾斜于两个投影面的体素,由这些体素构成 的复合实体均可识别。虽然交互识别能识别很复杂的视图,但是过多的依赖用户 来识别,因此识别的成功与否在一定程度上取决于使用者的知识和技巧。Kasturi等【1¨,Kim等【121,Katsuhiro和Makoto[I 31,Geng Weidong等【Ⅲ,陆 国栋等【15】,高玮等【161,江涛等f17】也对基于派生策略的三维重建方法做了大量研 究工作。2)创生法。所谓创生法就是一种几何元素分层重建方法,依据视图图形的 几何元素(点、线等)的投影对应关系和求解规则直接由二维信息构造三维信息。 基于创生策略的重建方法主要是对几何元素的解释,这种解释不是基于数据,而是基于过程的,这类重建方法基本上是采用自底向上,分层构造的策略,重建过 程可能会产生大量不属于三维形体的点、边和面的假元。其代表性的方法如下:Idesawa[1sl在七十年代用数学方法研究了三维形体的重建过程,首先提出白 北京工业大学工学硕士学位论文底向上,分层构造的策略,它根据投影与反投影描述了一般的重建问题,产生了 先构造线框模型后形成立体的算法。这一方法首先在不同视图中标识相应的顶 点,在构造面时,要根据一系列条件进行边的搜索:一个平面所有的边组成一个 封闭的环,要对选择到的边做进一步处理,任何一条对构成该面无作用的边都被 认为是假边,需要被删除。Idesawa算法被认为是有创造性的,从那以后,有关 该领域的问题激起了许多人的兴趣,他所提出的自底向上的思想被其他人所采 纳,这方面的研究工作也不断的深入,产生了许多有代表性的方法。Wesley和Markowsky[19】算法是基于创生策略的重要重建算法,常被对比、 引用。他们为研究由线框表示的多面体所有可能解阐述了一个完整算法,随后又将这一算法扩展到正投影三视图的情况。算法使用B.rep模型作为重建的基础模 型,基于代数拓扑和严格的几何实体定义,列举所有可能解并消除所有假元。该 算法的不足主要是适用范围窄、运算量大。算法仍只适用于多面体,没有考虑投影中出现虚线的情况,且重建每一步操作中都要进行大量地运算来判断和去除假 元。辜凯宁【20】等人提出的算法对Wesley.Markowsky算法加以改进和补充。算法 首先从三维点直接生成三维边,然后生成三种类型的面方程,为消除病态情况引 入了切割点与切割边。在生成面环和子体时,提出了面域基(基环)、体域基概念, 仅存储有界环,以期提高效率,节省存储量。算法可以排除病态解,并能在多解情况下求出全部解。Yanl2I】基于图形投影的规律,提出了适合平面体的从三视图构造实体模型的 重建算法,在算法中使用了实线和虚线所提供的深度信息来减少可能的面环和体 环的数目,并采用决策树技术加快了三维边的生成速度。但是,对虚线的处理自 然会增加对平面体处理的复杂度。 Shint22】以Wesley等和Yan等的多面体重建算法以及Sakurai的曲面体重建算 法为基础,充分利用几何基元的几何性质和拓扑关系,进一步扩展了三维形体的 重建算法。这一算法可用于重建平行于某坐标轴的二次曲面。Shin继承了Sakurai 顶点分类的思想,进一步细分了顶点和边的类型,对于不同类型的基元采用不同 的重建方法,加快了算法的处理速度。但是该算法的数据结构和预处理过程比较 复杂,并且要求二次曲面的轴必须平行与某坐标轴。 Devauxl231,Masuda和Numaoi241,Ablameyko等【25】,Oh和Kimi261,陶涛等 【27】,董建甲等【28】也都给出了基于创生策略的三维重建方法,这些方法各具特色,不在一一讨论。虽然三维重建的应用取得了一定的进展,但是主要集中在基于二维投影视 图的三维重建上,而本文主要研究基于二维自由手绘图形的三维重建和基于灰度 第l章绪论图的三维自由曲面的重建。1.3本文的研究内容及组织结构1.3.1课题研究内容自然界的物体都是三维的,三维数据中蕴藏着丰富细腻的物体结构,人类通 过双眼获得物体的三维立体信息。但一般的摄影系统只能把三维的物体以二维的 形式保存、记录下来,丢掉了大量的三维信息。三维重建就是要从二维信息,如 图像中恢复出三维形体,为应用服务。物体表面重建的任务是要恢复出蕴藏在三 维物体数据中的物体结构的几何信息,以便更加方便地对物体进行定量分析、处理和显示。目前的三维重建方法主要集中在基于多幅图形匹配的三维重建上,而本课题 主要研究基于单幅二维图形的三维重建,以平板电脑的手写、手绘设备作为系统硬件平台,在VC++开发环境下结合Open Inventor以及OpenGL三维图形库研发一套三维重建系统。该系统可实现两个方面的三维重建,一是对规则形体的线框 图进行三维拓扑结构重建,要求设计人员在屏幕绘图区绘出有三维意象的二维轮 廓图形,然后系统将根据输入图形进行轮廓预处理,提取角点特征和矩特征,利 用神经网络的识别能力重建三维形体;另一种是针对不规则三维曲面形体的重 建,提出一种用距离变换结合改进的SFS算法的方法将手绘轮廓恢复为有高度 的曲面形体,这种方法可用于基于手势的三维形体设计开发中。通过系统重建出 的三维形体,可以在三维视图中进行交互操作、编辑,对于三维数据,经过处理 整合后能导入主流三维建模软件(3DS Max)中进行纹理、灯光、等外观效果的渲染。工业设计、动画制作等对几何模型的要求不存在精度问题,只有象与不象的 问题,由高精度测量法得到的模型数据量过大,反成为累赘,因此基于图像的建模结果则更符合要求。1.3.2论文的组织结构全文分为六个部分,结构安排如下: 第一章为绪论,综述课题研究的背景、国内外研究现状、实际意义、三维重 建领域内存在的问题以及本文的研究内容。第二章主要介绍二维图形的绘制技术以及三维图形的显示技术。首先介绍了Windows下二维图形绘制的设计,其次介绍了OpenGL和Open Inventor的基础以及利用Open Inventor和OpenGL设计三维交互操作的主要技术,最后给出了 二、三维数据的读取、存储方法。 北京T业大学工学硕士学位论文第三章主要研究了由单幅轮廓图重建三维曲面的算法。首先介绍了从明暗恢 复形状(SFS)常用算法,并用变分法对SFS问题的求解做了详细仿真研究;其次 提出利用距离变换结合SFS算法生成高度信息,并结合Delaunay三角网的方法 构建三维形体的方案。 第四章详细介绍了规则形体的重建算法,提出利用输入线框图的有效特征, 即角点特征和组合矩的特征用于神经网络的训练识别,较好地避免病态问题的出 现。特征提取时选择具有旋转、平移和尺度不变性的特征,以满足输入图形较灵活的特点。第五章重点介绍软件系统的实现思路、系统架构、主要数据结构的设计等。 系统采用面向对象设计的思想。首先给出了系统的设计方案,然后阐述了系统的 软件架构和类库的设计,最后给出了系统的测试结果。 最后一章为结束语。总结了本文所作的工作以及存在的问题,并对未来的工进行展望。..6. 第2章二维图形输入设计与三维形体显示技术课题采用两种不同的方案来实现三维形体重建系统,一种为规则形体的三维重建,利用输入二维图形上的特征信息结合神经网络的方法:另一种方案是不规 则曲面形体的三维重建,利用图形轮廓信息结合从明暗恢复形状的方法,通过三 角面片的方式重建出空间曲面。这两种方案实现的软件环境都是Windows下 VC++6.O平台,分别采用了OpenGLp9】和Open Inventor[30l(OIV)---"维[]建和形体显示技术的研究。 2.1库。本章将重点介绍所用到的主要技术,包括二维图形输入部分的设计和三维视窗的创Windows下二维图形输入部分的设计.图形输入部分是整个系统形体创作的关键部分,在系统设计中利用的是Windows中负责图形输出的接El,即Graphics Device Interface(图形设备接口,简称GDI)。GDI提供应用程序可调用的多种服务,这些服务一起构成了一种强大 和通用的图形编程语言,其丰富的功能足可与一些第三方图形库相比。MFC(Microsoff Foundation Class)在图形API(Applieation Programming Interface)基础上工作,并用表示Windows GDI各成员【3IJ的C++类将接口转化为程序代码。2.1.1MFC中的设备描述表类GDI使用一种简单机制保证在窗口中画图的各种程序遵守Windows绘图的规则,这种机制即为设备描述表(Device Context,简称DC)。当Windows程序在图2-1 CDC类继承关系图Figure 2―1 The hierarchy chart of CDC class 北京工业大学工学硕士学位论文屏幕、打印机或其他输出设备上画图时,它并不是将像素直接输出到设备上,而 是将图绘制到由设备描述表表示的逻辑意义上的“显示平面”上去。设备描述表是一种深寓于Windows中的一种数据结构,它包含GDI需要的所有关于显示平面情况的描述字段,包括相连的物理设备和各种各样的状态信息。MFC的CDC 类将Windows设备描述表和获取设备描述表句柄的GDI函数封装在一起,使用 起来更加方便。表2-1专门用途的设备描述表Table 2-1 The Device Context for specialuse类名CPaintDC CClientDC描述 用于在窗口客户区绘图(仅限于OnPaim处理程序) 用于在窗口客户区绘图(除OnPaint外的任何处理程序)CWindowDC CMetaFileDC用于在窗口内任意地方绘图,包括非客户区用于向GDI元文件绘图通过CDC的成员函数可进行一切绘图操作。CDC提供成员函数进行设备描 述表的基本操作,使用绘图工具,选择类型安全的图形设备结构,以及色彩,调色板。除此之外还提供成员函数获取和设置绘图属性,映射,控制视口,窗体范围,转换坐标,区域操作,裁减,划线以及绘制简单图形(椭圆,多边形等)。成 员函数也提供绘制文本,设置字体,打印机换码,滚动, 处理元文件。MFC的CPaintDC类是CDC类的一个派生类,允许在窗口客户区绘图。它用于响应Windows消息WM PAINT的成员函数的设备环境。在这个类中可以使用CDC中的所有函数,一般用在OnPaint()函数中,以响应WM PAINT消息,WM PAINT消息是当窗口的某个区域需要重绘时所激发的。CClientDC类创建了可在OnPain外使用的用户区域设备描述表。 CWindowDC类和CClientDC类相类似,但它允许用户在非客户区(标题栏、窗El 边框等)绘图。程序员也可以用CWindowDC类来创造特殊效果,如用户自己绘 制标题栏和带圆角的窗口。 在MFC应用程序中获取设备描述表的一种方法是调用CWnd::GetDC,它返回指向表示CWnd::GetDC获取的设备描述表指针。在绘图完毕时,要用 CWnd::ReleaseDC释放由GetDC获取的设备描述表指针。2.1.2图形绘制函数的设计二维图形的输入设计主要利用MFC的GDI函数完成,系统中设计的二维输 入端类似于Windows的画图板程序,可以绘制点、直线、椭圆、曲线、弧等基 本图元,为每一类图元设计一种数据结构来存储,每类图元都有颜色、线宽、坐 标值等属性,如可用起点和终点的两个坐标值来存储一条直线,用四个点坐标值-8. 来存储矩形、椭圆,这样就可先定义一个基本图形类CShape类,包含颜色、线 宽等公有参数,定义串行化Serialize和绘图Drawing两个虚函数用于图形的保存 和重绘,然后从CShape类派生上述各二维图形类:Cline、CAre、CSplinr、CCirle、 CElipse、CRectangle和CPolygon等,在每一个二维图形类中定义自己的几何数 据,定义构造函数以便生产各自的图形对象,重载串行化Serialize和绘图Drawing 函数。各类图元的数据设计如下: (1)绘制点、直线绘制点的CDC类的成员函数为SetPixel,函数声明图下:COLORREFSetPixel(POINTpoint COLORREFcrColor)参数point表示逻辑坐标系下所绘制点的坐标,参数crColor表示绘制点的颜 色。绘制直线也只用到两个有关的CDC类的成员函数:CDC幸pDC=GetDC(); pDC―’>MoveTo(m_pold); pDC’’>LineTo(point);’在画线时,总存在一个称为当前位置的特殊位置,每次画直线都是以当前位 置为起始点,画直线操作结束以后,直线的结束位置又成为当前位置,设置当前 位置是为了提高划线操作的效率。(2)绘制矩形 绘制矩形主要是调用CDC类的成员函数Rectangle,函数声明如下:BOOLRectangle(int xl,int yl,int x2,int y2);参数xl和y1,x2和y2分别代表所要绘制的矩形的左上角顶点坐标值和右下角顶点坐标值。 (3)绘制椭圆 绘制椭圆及圆的成员函数为Ellipse,函数声明如下:BOOLEllipse(int xl,int yl,int x2,int y2);参数x1和y1,x2和y2分别代表所要绘制的椭圆的边界矩形的左上角顶点坐标值,参数x2和y2制定了所绘制椭圆的边界矩形的右下角顶点坐标值。 (4)绘制圆弧 画弧函数用边界矩形来定义弧的大下。边界矩形是隐藏的,用于描述弧的位 置和大小。画弧使用CDC的成员函数Are,函数原型为: BOOLArc(int xl,int yl,int x2,int y2,int x3,int y3,int x4,int y4);边界矩形由参数(xl,y1)和(x2,y2)定义,(X1,y1)是边界矩形的左上角坐标, (x2,y2)是边界矩形的右下角坐标。(X3,y3)是弧的起始点,(x4,”)是弧的终止点。(5)绘制贝塞尔曲线 北京工业大学工学硕士学位论文CDC的成员函数PolyBezier用于画一个或多个贝塞尔样条曲线。函数原型为:BOOLPolyBezier(eonstPOINT木lpPoint,intnCount)参数lpPonts为指向包含样条曲线的终点和控制点的POINT结构数组。 nCount指定lpPoints数组中的点数。该值必须大于欲画样条曲线数量的三倍。因 为每个贝塞尔曲线需要两个控制点和一个终点,初始的样条曲线还需要一个起点。2.1.3鼠标消息的捕获输入图形的绘制由鼠标来完成,鼠标信息处理函数封装类CWnd类中,这些 函数都是虚函数,返回值类型为void,两个参数为:(1)CPoint (2)UNITpointpoint参数代表鼠标光标的坐标位置,point.x为横坐标,point.Y为纵坐标。nFlags包含了鼠标和键盘最和使用标志,用来描述鼠标信息产生时鼠标与Ctrl、Shift键的组合状态。表2.2 Windows下常用鼠标消息Table 2.2 Mouse messages inWindows消息 WM WMLBUTToNDO、VN LBUTroNUP触发条件鼠标左键按下鼠标左键释放鼠标右键按下 鼠标右键释放 鼠标移动 鼠标左键双击WM RBUTrl了NDOWN WMRBUTrONUPWM MOUSEMOVE、ⅣM LB UTToNDBLCLK系统中主要通过鼠标左键按下开始记录坐标起始信息,而当鼠标移动时捕获 移动轨迹坐标进行绘图,当按键释放则结束绘图。调用Cwnd的成员函数SetCaprure就可以捕捉鼠标,而调用全局函数ReleaseCapture则可以释放对鼠标 的捕获。CWnd的成员函数SetCapture用来捕获鼠标。当调用此函数以后,无论光标 位于何处,所有的鼠标输入消息都被发送给应用程序的当前窗口对象。当该窗口 对象不再需要所有的鼠标输入时,应用程序应调用ReleaseCapture函数来释放捕 获,以便应用程序的其它窗口能够接受鼠标输入信息。2.2OpenGL与Open Inventor基础OpenGL和Open Inventor是目前做三维软件底层开发研究比较常用的工具。 第2章二维图形输入设计与三维形体显示技术OpenGL经过多年的发展已经成为一种工业标准,而且近年来发展迅速,先后推 出了1.2、1.3、1.4和2.0版,以其开源的特性以及良好的可移植性获得广泛应用。而Open Inventor是比OpenGL更为高级的三维图形库,它是在OpenGL基础上经过封装、扩展而来,可应用于更为复杂的三维软件的开发,目前最新的版本为 7.0。下面就介绍一下这两种技术的基础知识。2.2.1OpenGL相关知识OpenGL是目前用于开发可移植的、可交互的2D和3D图形应用程序的首 选环境,也是目前应用最广泛的计算机图形标准。OpenGL是SGI公司开发的一 套的计算机图形处理系统,是图形硬件的软件接i:1,GL代表图形库(Graphics Library)。OpenGL具有可移植性,任何一个OpenGL应用程序无须考虑其运行 环境所在平台与操作系统,在任何一个遵循OpenGL标准的环境下都会产生相同的可视效果。OpenGL被设计成独立于硬件,独立于窗口系统,在运行各种操作系统的各 种计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处 理、科学计算等高端应用领域的标准图形库。利用OpenGL可以创作出具有照片 质量的、独立于窗IZl系统(Windows System)、操作系统(Operating System)和硬件 平台的三维彩色图形和动画。OpenGL的核心库包括100多个用于3D图形操作 的函数,主要负责处理对象外形描述、矩阵变换、灯光处理、着色、材质等和三 维图形图像密切相关的事情。OpenGL工具库所包含的辅助函数是OpenGL基本 函数的补充。这些函数的功能相对高级,可以用于处理坐标变换、错误处理、绘 制球体、锥体、柱体、曲线、曲面等图形实体。 计算机硬件性能的提高和OpenGL本身的不断发展,使得OpenGL不再只属 于专用图形工作站。如今,开发人员可以在各种硬件平台利用OpenGL进行图形 软件开发。OpenGL可以运行在当前各种流行操作系统之上,如MacOS,Unix,Windows95/98,WindowsNT/2000,Linux等。各种流行的编程语言都可以调用OpenGL中的库函数,如C,C++,Fortran,Java。OpenGL完全独立于各种网络 协议和网络拓扑结构。在OpenGL三维图形加速卡和微机图形工作站推出后,人 们可以在微机上实现CAD设计、仿真模拟、三维游戏等,从而使得应用OpenGL 及其应用软件来创建三维图形变得更为方便。 OpenGL的原理是在帧缓冲区中精确的绘制2D和3D的物体。这些物体被 描述为顶点或像素的序列。OpenGL形成若干处理步骤,将这些数据转化成像素,并在帧缓冲区中形成最终的影像。OpenGL作为独立于窗口系统、操作系统和硬件平台三维图形处理技术必然包括:图形处理、交互、窗口、仿真设备驱动几个 北京工业大学T学硕士学位论文方面。整个OpenOL的基本工作流程如图2-2:}帧缓冲区_t―●●_●●●●●●i●图2-2 OpenGL的基本工作原理框图Figure 2-2 The basic working process of OpenGL其中几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程 图的上部,包括运算器、逐个顶点操作等;图像数据包括象素集.、影像集、位图 集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同的,但它们都 经过光栅化、逐个片元(Fragment)处理直至把最后的光栅数据写入帧缓冲器。 在OpenGL中的所有数据包括几何顶点数据和象素数据都可以被存储在显示列 表中或者立即可以得到处理。OpenGL中,显示列表技术是一项重要的技术。 OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶 点计算操作都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎 片;对于象素数据,象素操作结果被存储在纹理组装用的内存中,再象几何顶点 操作一样光栅化形成图形片元。整个流程操作的最后,图形片元都要进行一系列的逐个片元操作,这样最后的象素值送入帧缓冲器实现图形的显示。2.2.2 OpenInventor的概念和框架OpenInventor是目前世界上应用最为广泛的面向对象和交互式的三维图形开发软件包。它是在OpenGL的基础上开发而成的,是一种相对独立的窗121系统, 可方便的移植到使用不同窗口系统的硬件平台上。由于Open Inventor通过“搭 积木”的方式来构造复杂的三维场景,使得用户只需花费很少的时间就可以构造 出复杂、优美的三维场景。另外,Open Inventor还完美支持VRML97、三维音 效、三维纹理和多处理器的并行渲染。 在底层,Open Inventor完全以OpenGL为基础。在使用Open Inventor进行 第2章二维图形输入设计与三维形体显示技术图形程序开发的过程中,虽然渲染操作是以面向场景对象的形式完成的,但是在底层,Open Inventor使用OpenGL完成自己的最终渲染。在OpenGL流水线中,OpenGL直接对底层的图元(顶点、线段、多边形)进行操作,直接将需要显示的 图形存入帧缓存中以进行显示,而Open Inventor程序中则将需要显示的对象存 入相应的场景数据库中,具体帧缓存的操作则由底层完成。如图2.3所示,Open Inventor及其扩展包位于系统的API一级,位于系统的底层绘图硬件和相应的软 件驱动程序层之上,封装TOpenGL并对其余的底层图形显示方式予以支持。利用Open Inventor的组件包可以轻松的开发其上层的应用程序,这种逐层封装的 面向对象的思想正是Open Inventor开发人员必须具备的。图2-3OpenInventor组织架构图Figure 2-3 System structure of Open InventorOpenInventor目前支持的程序开发语言有CH和Java两种,但同时遵循C图2-4 IVF类的结构关系图Figure 2-4 The hierarchy chart of classes in IVF 北京工业大学T学硕士学位论文调用约定,这意味着在C或C++语言的编程环境下可以方便地调用OpenInventor库中的API函数。在Windows操作系统中,Open Inventor提供了对SoWinAPI封装的IVF(Interactive MFC(MicrosoflVisualFramework)类库,类似于对Win3 2API封装的FoundationClasses)类库,包含了450多个类库,以及简易的编程使用界面。同时,IVF应用程序框架、IVF类库和MFC的应用程序框架、MFC类库很好地集成在一起,支持三维立体图形显示,能很方便地在VC++平 台上开发。ⅣF框架结构如图2-4所示,可以看出它和MFC的框架结构非常相似,它继承了MFC方便的文档/视图模式和消息处理机制。 此外,Open Inventor的扩展体系结构允许开发者增添自己的功能。TGS提 供这一个扩展工具包,允许它与开发者自己所必要的开发包“混合或匹配”使用, 这种扩展可供开发者(甚至OpenGL的编程人员)快速开发应用程序的新功能。2.3三维视窗创建的设置在实际的开发过程中,创建三维视窗是一项基本的工作,系统中三维形体的显示、渲染等操作都在三维视图中进行,下面分别介绍如何在OpenGL和OpenInventor环境下创建三维视图窗口。2.3.1Windows环境下对OpenGL编程的设置Windows环境下OpenGL的绘图功能是通过显示驱动程序(display driver)与 图形显示硬件共同实现,由显示驱动程序直接控制图形显示硬件。实现Windows下OpenGL的应用是通过调用OpenGL函数、Windows的GDI函数,以及其他一系列函数来实现的。 OpenGL的绘图方式与Windows的一般绘图方式不同,GDI是通过设备描述表(Device Context,简称DC)来绘图,而OpenGL则需要绘制描述表(RenderingContext,简称RC)。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL 使用当前绘制环境RC。一旦在一个线程中指定了一个当前RC,在此线程中其 后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个 RC,但在单一线程中只有一个当前RC。产生一个OpenGL RC并使之成为当前 RC,分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。下面说明 在VC环境下的MFC中OpenGL框架搭建: 1.首先创建工程 用AppWizard产生一个MFC EXE项目,其他默认即可。 2.将此工程所需的OpenOL文件和库加入到工程中 在工程菜单中,选择”Build”下的”Settings”项。单击”Link”标签,选择”General” 目录,在Object/Library Modules的编辑框中输入¨opengl32.1ibglu32.1ib glut.1ibglaux.1ib”,选择”OK”结束。然后打开文件”stdafx.h”,加入下列头文件:#include<gl\91.h> #include<gl\glu.h>3.创建一个RC并设置像素格式 像素格式决定了像素颜色的设置与DC和RC相关联的辅助缓冲区像素格式 的设置,其内容是OpenGL调用与Windows绘制操作之间的中间设置。因此要 在Windows环境下实现OpenGL的函数功能,必须先设定像素格式。在系统里设置像素格式的代码如下: PIXELFORMATDESCRIPTOR pfd= < sizeof(PIXELFORMATDESCRIPTOR),l, PFD//pfd结构的大小 //结构版本号DRAWTOWINDOW l I//支持在窗口中绘图//支持OpenGL //双缓存模式 //RGBA颜色模式PFD SUPPORT OPENGL PFD DOUBLEBUFFER, PFD TYPE RGBA, 24,.//24位颜色深度//忽略颜色位 //没有非透明度缓存 //忽略移位位.O,O,0,0,0,0, O, 0, O, 0,0,0,0, 32, 0, 0, PFD O, 0,0,0//无累加缓存 //忽略累加位//32位深度缓存//无模板缓存 //无辅助缓存 MAIN。// ENALP.层主//保留 //忽略层,可见性和损毁掩模);int pixelformat;pixelformat=::ChoosePixelFormat(m__pDC一>GetSafeHdc0,&pfd);//选择像素格式 ::SetPixelFormat(m_pDC->GetSafeHdc0,pixelformat,&pfd);//设置像素格式绘制描述表(I屺)的象素格式设置为:PIXELFORMATDESCRIPTOR pfd;PIXELFORMATDESC对PTOR是一个Win32定义的结构体,该结构包含了 26个属性信息,如绘图模式(是否支持屏幕绘图,是否支持内存绘制位图,是否 支持双缓存等),调色板信息,象素颜色模式,缓存区位数等等。定义了pfd格式后,就可以设置DC的象素格式。但由于与具体DC所支持 北京I业大学I学硪I:学位*i的象素格式不一定相同,凶此必须选择和当前DC所支持的较接近的象素格式。SctPiexleFormat(hDC,pixelformat,&pfd): 4.图形绘制在绘图前,需要将OnCreate()中创建的RC句柄置为当前RC,然后调用肝J 户绘制函数.将当前RC置空.最后交换前后缓冲区。本操作一般在OnDraw()函数中完成。 wglMakeCurrent(hDC,hglrc): MyDraw();Ⅳ绘图函数wglMakeCurrent州ULLSwapBuffers(hDC): 5绘图资源释放rNULL):由于OpenGL的绘图资源需要分配大量内存.而且在Windows下足堆分配 的,程序推出时不会自动回收,所以必须手工删除,调用该函数可以重载OnDestroy(1函数【”I。 wgIMakeCurrem(NULL.bIULU; 将当前RC置空。 wglDeleteContext019irt);删除RC资源。 图2-5显示了一个在MFC下生成的OpenGL视窗@幽2-5 MFC r刨建的OpenGL二维视窗Figure 2-5AOpenGL 3DView createdbyMFC2 3 2Windows环境下创建OpenInventor视窗的设置在Visual c++中,创建一个Open Inventor工程可以有多种方法:1使用IVF 乏:薹三兰詈盏竺金兰錾耋三量丝至呈尘圣:程序向导。即通过IVF提供的程序框架来创建一个新工程,然后在所生成的部分 源文件中添加自己的源代码,然后编译后即可得到相应的程序。2通过已存在的Open Inventor工程文件创建所需的新工程;3通过在VC工程中添加OpenInventor支持的方式刨建新工程。当然这些都是建立在完整的编译环境基础之上。下面将介绍如何设置Open Inventor的工程。田2q5VC向导界面新增IVF选项Figure2-6A鹏w opotiortoflVFinVCwizardinterface在安装好Open Inventor开发包之后,有关IVF组件包的内容就已经被加载 在VC的安装环境下了,在VC新建工程的宙ra下会新增了一项内容:IVFApp图2―7一个OIV三维显示窗口示意图Figure 2-7A standardOIV 3Dviewwindow 北京工业大学工学硕士学位论文Wizard 6.0(在本机系统中同时安装了5.0和6.0两个版本,故有两个IVF选项),如图2-6所示。用户可利用此项IVF向导来创建工程了,具体操作步骤和用MFC 向导创建工程基本一样,即选择如图中的IVF AppWizard 6.0(exe)选项,然后为 新建工程起一个名字,点击”OK'’后下一步选择“单文档”或“多文档”之后其他默认,这样就完成了一个IVF的工程的创建。之后需要在生成的view.cpp文 件中的OnlnitialUpdate()函数中做一些初始化设置,然后在OnDraw(CDC牛pDC)函数中添加相应的三维形体创建代码就可以显示三维实体了。显示窗口如图2.7所示。 另一种创建Open Inventor视窗的方法是在程序中手动添加OIV必要的头文件以及窗口设置代码,使得用MFC所建的工程中或Win32 Console控制台程序 中也可以调用显示三维窗口。下面的程序示例在一个控制台程序中手动创建一个OIV窗口并显示一个圆锥的代码:#include”stdafx.h”#include<Inventor\Win\SoWin.h>∥窗口初始化组件头文件. //材质组件头文件#include<Inventor\Win\viewers\SoWinExaminerViewer.h>//三维视窗组件头文件#include<Inventorhmdes\SoMaterial.h>#include<Inventorknodes\SoSeparator.h>∥节点组件头文件intmain(int,char木木argv){ HWND myWindow=SoWin::init(argv[0]); if(myWindow==NULL)exit(1);SoSeparator幸root=new SoSeparator;//注册窗口类root->ref0;SoCone*myCone=new SoCone;//glJ建一个圆锥指针//设置圆锥底面半径myCone->bottomRadius.setValue(2.0); myCone一>height.setValue(4.o); root―’>addChild(myCone);//设置圆锥高//'OIJ建并初始化视窗类SoWinExaminerViewer?myViewer=new SoWinExaminerViewer(myWindow): myViewer-->setSceneGraph(root); //设置场景 //设置背景myViewer-->setBackgroundColor(SbColor(0.7f,O.8f,1.0f)); myViewer-->show0; myViewer-->viewAll0; SoWin::show(myWindow); //显示窗口 SoWin::mainLoopO;return O:}程序初始包含了图形场景显示所需的支持类头文件。其中,Win类是Open Inventor提供的Windows下的窗口显示工具,它使用init()方法初始化图形场景的 窗口,使用mainLoop方法实时更新窗口内的显示内容,使用show方法载入图形场景的根结点。SoWin类对象执行了它的init()方法。SoWinExaminerViewer是SoWin类的子类,它把SoWin类生成的窗口上加入Open Inventor默认的内置浏览 器,并在随后为用户设置了窗口背景。SoCone是创建圆锥的类,创建完之后将其加载根节点SoSeparatorqb,然后用设置场景函数setSceneGraph()放入场景 SoWinExaminerViewer中即可。2.4图形数据的存储2.4.1二维图形的存储通过鼠标绘制的二维图形要进行存储以进行图像预处理。为了方便图像预处 理的编程实现,考虑采用BMP位图文件格式作为图形存储格式。BMP文件是 Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像 数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其 文件扩展名为BMP,故称为BMP文件格式,简称BMP文件。 BMP图像文件被分成4个部分:位图文件头(Bitmap或Data Body)。FileHeader)、位图信息Bits头(Bitmap Info Header)、颜色表(Color Map)和位图数据(即图像数据,Data第l部分为位图文件头BITMAPFILEHEADER,是一个结构体类型,该结构的长度是固定的,为14个字节。其定义如下:typedef struct tagBITMAPFILEHEADER{ WORDbfType;DWORD bfSize; WORD bfReserved l;WORDbfReserved2; bfOffBits;DWORD}BITMAPFILEHEADER,FAR+LPBITMAPFILEHEADER,卑PBITMAPFILEHEADER;第2部分为位图信息头BITMAPINFOHEADER,也是一个结构体类型的数 北京工业大学工学硕七学位论文据结构,该结构的长度也是固定的,为40个字节(WORD为无符号16位整数, DWORD为无符号32位整数,LONG为32位整数)。其定义如下:typedef structtagBITMAPINFOHEADER{ DWORDLONG biSize;biWidth;LONG biHeight;WORD WORDbiPlanes; biBitCountDWORD biCompression;DWORD biSizelmage;LONG LONGbiXPelsPerMeter; biYPelsPerMeter;DWORD biClrUsed;DWORD biClrlmportant; }BITMAPINFOHEADER,FAR?LPBITⅣ认PINFOHEADER,木PBITMAPINFOHEADER;第3部分为颜色表。颜色表实际上是一个RGBQUAD结构的数组,数组的 长度由biClrUsed指定(如果该值为零,则由biBitCount指定,即2的biBitCount 次幂个元素)。RGBQUAD结构是一个结构体类型,占4个字节,其定义如下:typedef structtagRGBQUAD{BYTE rgbBlue;. BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved;}RGBQUAD;第4部分是位图数据,即图像数据,其紧跟在位图文件头、位图信息头和颜 色表之后,记录了图像的每一个像素值。对于有颜色表的位图,位图数据就是该 像素颜色在调色板中的索引值;对于真彩色图,位图数据就是实际的R、G、B 值(三个分量的存储顺序是B、G、R)。 按照BMP文件的格式可以编写存储函数,函数的声明如下:BOOLSaveBitmapToFile(HBITMAPhBitmap,CStringlpFileName)..20- 第2章二维图形输入设计与三维形体显示技术2.4.2三维数据的存取IV数据格式是Open InventorI!I身特有的三维数据格式,每当对一个node,path或path list执行一个写操作时,输出数据就以这种格式写出。可以将这种格式的 数据读入Inventor scene数据库。这种数据格式也可以用来转换三维模型,并在过程之间交换数据。 IV数据格式是通过三维模型表面的三角网格化获得的。Open Inventor的数 据格式有两种形式:ASCII码形式和二进制形式。二进制形式的数据格式容量较小但不易阅读理解,ASCII码形式的数据格式便于阅读分析,通常OpenInventor默认保存为ASCII码形式。ASCII码格式的IV数据格式主要由文件头部、节点(域)信息、域关系、引擎数据、全局变量等部分构成,其中文件头部用来说明数据格 式的类型和版本信息,其它部分为IV数据格式的内部节点信息说明。以下为一IV 数据格式ASCII码形式的示例:捍Inventor V21 l asciiSeparator{Separator{ Translation{translation Cone{) ) Annotmion{ LightModel{model BASE―COLOR’ DrawStyle{style LINES) Cube{) > )0 5O)将一幅场景或形体保存为IV格式的文件可利用如下代码:void OnSaveFile0{//TODO:Add your command handler code here root=newSoSeparatorO;//创建一个新节点root――>ref0;root一>addChild(scene0);//将场景加载到节点中myViewer-->setSceneGraph(root);myViewer->show(); myViewer->viewAll0;SoOutput out; 北京丁业大学工学硕士学位论文out.openFile(”..\\output.iv”); out.setBinary(FALSE); SoWriteAction writeAction(&out); writeAction.apply(root);out.closeFile;读取一个IV格式的文件代码如下:SoSeparator母readFile(const char牛filename) {Solnput myScenelnput;if(!mySceneInput.openFile(filename)) {retum NULL;} SoSeparator母myGraph=SoDB::readAll(&myScenelnput); if(myGraph==NULL) {retum NULL;}myScenelnput.closeFile O; retum myGraph;}2.5本章小结本章主要介绍二维图形输入的设计以及三维形体显示技术的研究。首先介绍 了MFC下绘图程序的设计,包括各种基本图元的绘制以及鼠标捕获程序的设计 等。其次详细阐述了三维程序设计工具OpenGL与Open Inventor的相关技术, 如在Windows环境下加载OpenGL与Open Inventor三维视窗的方法,三维形体 交互显示技术的研究等,最后介绍了二维和三维数据的存储。 第3章由单幅轮廓图重建三维曲面算法研究第3章由单幅轮廓图重建三维曲面算法研究通常采用的三维表面重构的手段主要有两种:一种是采用双目或多目视觉的 方法,该方法用两个或多个相互位置固定的摄象机对同一目标场景摄取多幅图 象,物体上同_位置会在这几幅图象上产生位置上的视差,利用三角测量的原理来计算该位置的高度,称为立体视觉法【3列(Stereo Vision);另一种是试图仅利用一幅图象上灰度的明暗变化,在单一的光源条件为已知或可推测的条件下,来恢 复三维物体表面的形状及表面方向,称为Shape法,简称SFS)。From Shadingt331(明暗恢复形状本章主要对基于单幅灰度图形和手绘图形重建三维曲面进行研究。由图像重 建物体表面的三维形状是计算机视觉领域当中的重要研究内容,属于低级视觉的 范畴。它是机器视觉中其它高级功能的基础,为这些功能提供所必须的一些信息。 这些信息包括物体表面的高度、形状以及表面方向。SFS方法主要利用物体表面 每一点在图像中相应像素点的亮度值,来重构物体三维表面的。其考察的特征是 最细尺度上的细节特征,因此利用该特征所重构的三维信息能够体现物体表面形 状的细节信息。本章将先从SFS问题本身的特性以及存在的问题出发,对算法 进行实验仿真,并提出一种由SFS算法结合距离变换的方法来重建基于轮廓的 自由曲面,曲面的构建采用Delauney三角面片的方法,并将此方法应用在三维重建系统中。3.1几种典型的SFS算法分析与评价由明暗恢复形状是一种根据物体图像灰度的变化来求解物体表面三维形状 的方法,最早是Homf34】为了解决月球表面的重构问题于上世纪七十年代提出的。 近些年来,随着计算机视觉技术、辐射度学和光度学理论的发展,SFS问题的求 解算法取得了一定的进步。与传统的非接触式测量方法不同,该方法利用光照模 型对图像辐照度方程进行逆向求解,所以只需要单幅图像就可以解决表面重构问 题,成为了近年来研究的热点。其原理是利用单幅图象中物体表面的明暗变化来 恢复其表面各点的相对高度或表面法方向等参数值,为进一步对物体进行三维重 构奠定基础。但对于实际图象而言,其表面点图象亮度受到了许多因素,如光源、 物体表面材质和形状,以及摄像机位置和参数等的影响,为简化问题,传统SFS方法均进行了如下假设: (1)光源为无限远处点光源;(2)反射模型为朗伯体表面反射模型【35](Lambertian (3)成象几何关系为正交投影。SurfaceModel); 北京工业大学工学硕士学位论文所谓朗伯体反射是指曲面对光照具有纯漫反射(perfectly diffuse)的特性,即 当从任意角度观测时,曲面上同一点的亮度应该是相同的,同时这种特性与光源 类型无关,这样的曲面反射了入射光的所有能量,既没有光的吸收,也没有光的透射。当满足以上三条假设时,物体表面点图象亮度E仅由该点光源入射角8的余弦 决定,即,=cos6/,若以摄像机坐标系为参照系,并将物体表面高度表示为z=z @,Y),则物体表面法方向可由其表面各点法向量”=(nl,n2,/'/3)、表面梯度p,g)或表面倾角7和偏角f表示,它们之间的关系如下:P-3(豢=q,祟:2q i,2 il) 1)P=一n_L,q=一鱼以3(3―2)愧其中,,为表面点法向量的模,这样朗伯体表面反射模型就可以表示为:或m川=褊2丽等嚣精(3-4,n03 n03nI=lsin7cosr,他=lsin7sinr,n3=/cosy(3―3),(x,少)=尺(P(x,y),g(x,少))2了i季亏iP露oP亏i+弋q左oq尹+雨1(3-5)其中,以尹(nOl,Fr02,疗∞)或(一pD,-q0,1)表示光源方向,显然由式(3―2)有‰:一鱼,吼:一鱼(3-6)I(x,y)为归一化的图象亮度,尺p,g)为反射函数。一般情况下,仅由该模型 所确定的SFS问题是病态的,为消除其病态性,并建立相应的正则化模型,必 须对其表面形状进行约束,现有的SFS算法基本上都假设所研究的对象均为光 滑表面物体,即认为物体表面高度函数C2(或至少是C1)是连续的,实际上, 通过建立物体的光滑表面模型这种假设,已对其表面形状进行了约束,这样,将 上述物体表面反射模型与物体的光滑表面模型相结合,再利用一些已知条件(如 关于物体表面形状的初边值条件),就构成了SFS问题的正则化模型。 根据建立正则化模型方式的不同,常用的SFS算法可以分为四类【36】,即:最小化方法(minimization approaches)、演化方法(propagation approaches)、局部方 法(10cal approaches)及线性化方法(1inear approaches)。 第3章由单幅轮廓图重建三维曲面算法研究3.1.1最小化方法最小化方法充分考虑了在图像成像过程中各种可能的约束,这些附加约束和 原亮度方程联立求解时,能够产生较为稳定和精确的解,但是算法在搜索最小值 时,若初始条件未知,容易陷入局部极小值;若使用遮挡边界条件作为初始值时 的解具有凹二义性,即认为被恢复的表面具有局部凹性;若使用奇异点(图像亮 度值最大点)作初始条件,虽然可以避免凹二义性,但奇异点易与噪声混淆,导 致恢复的图像与期望值有较大的差异。而且最小值的方法使用泛函变分和松弛迭 代法求解,导致收敛速度过慢,需找到一些加快收敛速度的算法。3.1.2演化的方法演化方法借用动力系统的优化控制理沦。它从图像中一组已知方向或高度的 参考点出发,逐步演化出整个曲面的形状信息。该算法的一个关键步骤是找到图 像中唯一确定形状的某一点或某些点,并从这些点出发,或者通过迭代方式,或 者沿着图像中特定的直线或曲线路径积分,进而求得整个表面的解。常用的演化方法有:特征线(characteristic strips)方法、粘稠解(viscosity solution)方法、等值线 (1evel sets)方法。演化方法的求解过程利用了优化控制的各种理沦,通常可以找到全局最优 值。还可以使用各种算法,如遗传算法和模拟退火算法加快收敛速度,另外由于 它是把光滑性假设融入算法中而不是作为单独的惩罚函数,可以避免由于引入二 阶微分而导致的过光滑问题。但这种方法的计算复杂性过高,并随着计算图像的 增大而增加,而且对先验知识的要求比较严格,比如最小下山法和等值线的方法 利用了图像的奇异点,这样对于实际图像含有噪声的情况则会产生较大的误差, 导致演化过程不稳定。因此,演化法不适用于复杂物体和实际的含噪图像。3.1.3局部分析法局部分析的方法将反射模型与假设的物体表面局部形状相结合构成关于物体局部形状参数的线性偏微分方程组,再利用已知的边界条件来求得该方程组的唯一解,这样就可以直接确定物体的局部三维表面形状。Pentland[37j首先假设物体表面局部具有球面片特征,接着利用图像灰度及其一阶和二阶导数恢复表面形 状。基于同样的假设,Lee和Rosenfeld[3s]使用灰度的一阶导数计算出表面的倾 角和偏角,然后恢复出三维表面。这种方法简单直观,对于具有光滑表面的合成 图像恢复效果较好,但是当被恢复物体表面不具有局部球面片特征时,算法不是十分的好。 北京丁业大学工学硕士学位论文3.1.4线性化方法SFS问题的线性化方法认为在非线性反射函数中,低阶项占主要部分,因此 将反射函数做Taylor展开,忽略非线性项的影响,只保留线性项并认为这是对 原反射函数的一个极好的近似。Pentland在此基础之上采用傅立叶变换的方法, 并在频率域中找出表面梯度的傅立叶表示和表面高度的傅立叶表示之间的线性 关系,通过傅立叶反变换得出表面高度值。因为这种方法不需要光滑性约束,所 以适用于复杂的自然地表的重构,但是,对于反射函数中二次项和高阶项较大的 图像,这种线性化方法的误差较大。Tsai和Shah的方法首先使用了表面梯度的 离散近似,并针对表面高度值线性化反射函数,这样,在图像中的每一点的灰度 值可以由邻域内像素点的线性函数表示,通过雅可比迭代法求解整个线性系统。但是,当存在自阴影(self-shadow)时,邻域像素点的灰度受到噪声影响,算法就 会失效。局部分析的方法和线性化的方法同属于局部化方法,可以看出,算法都是基 于一些特定的假设,因此只能通过稳定收敛的算法得到一个近似解。但是算法比 较简单,不需要正则化过程,也因为}

我要回帖

更多关于 webview做离线本地ios 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信