当前位置: 焊接设备 >> 焊接设备前景 >> 基于EinScanS软件的编码结构光方
之前的一篇文章3DSOM软件实现基于侧影轮廓方法的空间三维模型重建详细介绍了基于3DSOM的侧影轮廓方法物体空间三维模型重建;接下来,本文我们将在一款新的空间模型建立软件——EinScan-S中,完成一种新的空间三维模型重建方法——编码结构光方法。
需要注意的是,基于EinScan-S软件完成空间三维模型重建,可以分为前期的数据扫描工作与后期的上机建模工作;而本文直接基于扫描后所得数据,仅对上机建模工作加以详细介绍。
本文所用数据为某品牌清透防晒霜罐、番茄以及曼妥思罐等三种实际物体的初始图像若干。由于所用的图像数据并不是我的,因此遗憾不能将这一数据一并提供给大家;但是依据本篇博客的思想与对操作步骤的详细解释,大家用自己手头的图片,可以将相关操作与分析过程加以完整重现。
本文所用软件为EinScan-Sseries_v2.7.0.6软件、Microsoft照片软件。
1相关原理随着高清晰度、高速图像传感器出现,以及计算机运算能力提升,三维成像技术得到迅速发展[1],已广泛应用于新型农业、三维表面修复、三维空间测量、人脸识别、人机交互与航空航天等多领域[2-5]。
在本文开头提及的文章中提到,三维信息获取方法在具体接触方式角度,可分为接触式方法与非接触式方法两种[2]。而由信息获取时所依据辐射原理,其亦可分为主动方法与被动方法[3];前者需要对目标物体进行能量辐射,后者则借助物体图像,通过分析物体对环境光的反射加以完成[1,3]。在上述博客中的基于侧影轮廓方法物体空间三维模型重建即为一种被动方法;这一建模方法具有便捷、原理易于理解与模型所模拟轮廓较为细致等优势。而另一方面,侧影轮廓方法仅仅获取目标物体表面轮廓信息与纹理信息,对物体表面可能存在的内陷部分(如茶杯的内部、番茄顶部与底部的凹槽等)建模效果则较为不理想。
编码结构光方法则可解决这一问题。本文依据这一方法,依据若干目标物体投影图像,建立其三维模型。
1.1编码结构光成像原理完整的编码结构光系统由摄像机、投影仪与计算机系统组成[3]。在已知投影仪与摄像机位置的情况下,利用三角法原理即可获取物体位置信息。不考虑计算机系统,简化编码结构光系统如图1所示。
图1简化编码结构光成像示意图
其中,L为摄像机位置,S为投影仪位置,H为投影仪至物体表面距离,ABCDEF为目标物体表面,BCDE位置为物体表面凸起,p为投影仪发出光线与物体交汇处,pL为投影仪经过物体后进入相机光线,pm与pn分别为两光线直线的延长线。
由数学关系可知:
其中,LS为系统已知参数,mn可依据光栅位移求解,H在投影成像时由设备自动求出;由此即可得出物体表面凸起厚度pm。针对物体表面的凹陷深度求解同理。
上述为简化后的编码光成像示意图,可以看到投影仪光线与物体表面为垂直状态。若将其进一步拓展至一般情况,依据相关文献[3],得到结构光三维视觉模型如图2所示。
图2结构光三维视觉模型
其中,左侧摄像机与右侧投影仪分别具有一个对应坐标系,在某一空间物体表面点对应投影仪坐标与摄像机坐标均确定的情况下,即可求解得到这一点的空间坐标(世界坐标,WorldCoordinate)。上述过程在不同结构光三维系统中可能所使用具体公式不同,但其所依据原理均为三角化[1]。
此处值得一提的是,立体(双目)视觉与结构光三维成像系统光学模型与成像原理较为类似——前者对视差进行三角化,从而计算物体的深度;后者中投影仪光学模型与摄像机光学模型基本一致,仅在方向上具有区别[1],即可视作将“双目”其中一只“目”更改为投影仪。
因此,为实现目标物体点位的空间坐标,需要将投影仪所产生光线图案与摄像机所得到投影图像相结合。这一过程即需要对投影仪投影图案加以编码——先将投影仪“编码”,再利用摄像机“解码”,从而将编码视作投影仪与摄像机之间信息沟通的“桥梁”。
1.2编码结构光编码方式依据不同角度,可将结构光投影图案所对应多种编码方法加以类别区分。依据文献[3],由编码策略角度,将结构光的编码方法分为时间编码、空间编码与直接编码。
图3编码结构光编码方式
时间编码方法依据时间顺序依次产生多种投影图案,并以像元为单位分别对其加以编号;其可进一步分为二值编码、n值编码、时间编码与相移法结合,以及混合编码等四类。其中,二值编码还可继续分为普通二值码(以m个图案编码2m个条纹)与格雷码(减少普通二值码条纹边界数);n值编码需建立一张码值表,码值与特定RGB颜色或灰度对应,是对二值编码的泛化;时间编码与相移法结合可获得较高空间分辨率,且对像元编码准确;混合编码则可在投影图案数量较少时获得较高的精度。时间编码方法整体实现过程简单,空间分辨率较高;但其执行过程中需投影多幅图案,故只适合于静态场景测量。
空间编码方法中各点码字由其周围临近点像素值、形状等信息得到;其可进一步分为非正式编码、基于德布鲁因(deBruijn)序列编码与基于M-阵列编码三类。其中,非正式编码依据各区域信息(如条纹间隔信息)产生码字;基于德布鲁因序列编码借助欧拉圈或哈密顿圈[6],生成deBruijn序列作为编码;基于M-阵列编码利用并圈剪接法、代数生成法等获得M-阵列,从而获取各点码值。空间编码方法只需一副投影图案,适用于动态场景的三维信息获取;而其空间分辨率较之时间编码方法较低,且在解码阶段,可能由于空间邻近点信息丢失而导致误差产生。
直接编码方法则对各像元分别加以编码;其可进一步分为灰度直接编码与彩色直接编码两类。其中,灰度直接编码依据图像中各像元像素值与其在均匀强度光照下像素值之比实现编码;彩色直接编码则利用彩虹图案编码模式对前者加以改进。直接编码方法需利用较多颜色或周期性以得到高分辨率投影图案;而其编码图像各像元间色差较小,对噪声敏感;且图像颜色易受到测量表面颜色影响,其应用往往局限于中性颜色或灰、白色物体。
编码结构光不同编码方式从属关系如图3所示。
除上述内容外,结构光编码方式还有许多其他分类方法,如依据像元取值可分为二值编码、灰度编码与彩色编码;依据编码周期可分为周期编码与绝对编码等[3]。
1.3编码结构光与侧影轮廓方法比较通过学习、理解与查阅相关文献,可以感受到编码结构光与侧影轮廓方法的异同。
在三维信息获取方法层面,编码结构光方法与侧影轮廓方法均属于非接触式方法,即二者在执行时均无需直接与目标物体接触,而是采取利用一定仪器设备拍摄物体图像的方式(或许其亦可以视作一种广义的遥感)获取信息;其中,前者由于需要自身投影仪作为光源,因此属于主动方法;后者由于直接利用目标物体的多角度图像,即直接运用成像时太阳光或其它外部光源等,因此属于被动方法。
在模型建立方法原理层面,如前所述,编码结构光方法利用摄像机获取投影仪所发射出光线在目标物体表面的分布特征,并通过对不同的光线分布方式加以编码,由此建立物体位置、投影仪坐标与摄像机坐标之间的联系,进而利用三角化方法求解目标物体当前位置所处的空间坐标信息;如前所述,这一原理与双目视觉基本原理(即对视差进行三角化进而求解物体深度)较为近似[1]。而侧影轮廓方法则借助可见外壳(VisualHull)——即当以透视投影方式由多视角观察目标对象时,各视角对应画面均可得到一条该物体侧影轮廓线,此侧影轮廓线与对应透视投影中心共同确定三维空间中一个一般形状锥体,而所观察对象物体便位于这一立体锥体内部。不断由不同方向增加目标物体的观测视角数量,可使得各对应锥体外形不断逼近对象物体表面,从而对目标物体外形特征加以空间三维可视化。
在所获取物体信息层面,编码结构光方法依据所拍摄图像,分别获取目标物体外形细节与纹理信息,其中外形细节包括物体表面的内陷部分等;外形细节通过光线在物体表面的弯曲、形变等信息获取,纹理信息则直接由普通拍摄方式所得图像中物体纹理获取。侧影轮廓方法则直接依据目标物体多角度图像,分别获取物体表面形状与纹理信息。由于侧影轮廓方法对物体表面形状的获取是依据不同多角度图像的目标区域边缘(即目标物体区域与背景等非目标区域交界处)加以实现,因此其难免会丢失物体表面部分内陷区域信息。
在操作流程层面,编码结构光方法与侧影轮廓方法均需要“定标操作”;这是由于两种方法均需依据所拍摄图像对目标物体位置加以确定。而侧影轮廓方法定标操作较为简单,仅需对拍摄多角度图像所用相机加以定标,目前已有基于平面镜的相机内参标定方法、基于几何的成角度平面镜装置相机标定方法等。而对于编码结构光方法,除了需要对相机定标外,还需要对投影仪的亮度、几何等加以定标[1]。这是由于其编码往往与投影仪所辐射出光线的亮度、颜色或位置分布等具有关系。
1.4编码结构光方法流程进行编码结构光方法的执行,需要首先搭建一个完整的编码结构光系统,即由摄像机、投影仪与计算机系统三者所组成的整体。编码结构光系统的视觉模型示意图如图2所示。
搭建完成后,需要对系统进行标定,定标的结果直接决定三维系统的重建精度。其中,定标包括相机定标与投影仪定标,投影仪定标又可继续分为投影仪亮度定标与投影仪几何标定[1]。相机定标即建立传感器中点与空间中过光心的直线之间对应关系,如平板定标算法[7];投影仪亮度定标将使得系统实际所得投影图像亮度与投影仪投影图像的亮度值满足线性关系,从而使得亮度值可被用来恢复该点在投影仪成像平面的坐标;投影仪几何标定用以确定目标物体表面某点空间位置与投影仪平面像素点的对应关系。
定标完成后,依据所选择策略生成编码图像。如前所述,图像具有多种编码方式,如时间编码、空间编码、直接编码等。图像编码后,将其导入投影仪中,并由投影仪将其投射至目标物体表面。同时,由摄像机拍摄投影后的目标物体,通过解码方式获取原有编码图像在目标物体表面各位置的分布情况,从而获取能够反映目标物体表面特征的点云文件。以本文所用EinScan-Sseries_v2.7.0.6软件为例,可以看到其所得到的目标物体模型表面亦为由点云组成的实体,如图4所示。
图4点云示意图
获取点云文件后,对其进行相关后处理操作,对所生成目标物体表面进行后续补充、优化等,并最终显示建模结果。
编码结构光方法流程如图5所示。
图5侧影轮廓方法流程
2三维模型制作2.1防晒霜罐三维模型制作本部分以某品牌清透防晒霜罐为例,展示利用EinScan-S软件,借助编码结构光方法制作三维模型的具体流程。同时,对本文操作过程中出现的问题、存在的不足以及值得注意的地方等探讨附于本文第三部分。
2.1.1前期准备工作如本文开头部分所述,我们本次未涉及EinScan-SE扫描头、转台、标定板等硬件设备与前期目标物体对应的拍摄、扫描图片获取工作;但是要了解,在我们开始本文的上机实际操作前,还需进行硬件安装、标定、白平衡测试(若选择纹理扫描)、物体扫描(包括固定扫描与旋转扫描模式,本文需同时选中纹理扫描)、亮度调节与保存数据等线下实际操作。经过上述操作后,方可得到本文中我们开始操作时所用的目标物体模型初始图像数据。
2.1.2软件配置与数据导入打开EinScan-S软件,选择“EinScan-SE”选项,单击“下一步”,随后可以看到软件左上角出现“EinScan-SE”字样;若尝试选择“EinScan-SP”选项,则界面将呈现灰色,如下图,且软件左上角出现“EinScan-SP”字样。由此判断,这一软件全名应为“EinScan-S”,其后“SE”与“SP”取决于用户选择,而这一用户选择则取决于所使用的扫描设备;本次我们已知所使用的扫描设备为EinScan-SE,因此在此选择“EinScan-SE”选项。
选择“固定扫描”工作模式,单击“下一步”。在可获取设备的情况下,应选择“新建工程”,从而开始扫描工作;而本文中,我们直接使用扫描后的模型开始操作,因此选择“打开工程”,并选择对应的目标物体文件。
2.1.3手动拼接通过上述操作,目标物体原始模型数据已导入EinScan-S软件中。
但由预览图可以看出,这一初始模型数据依然具有一定问题——在防晒霜罐模型底部,其底层区域与邻近的柱状区域在拼接时出现了未完全重合的错误,如下图所示。
因此,需要通过手动调整的方式对这一问题加以处理。在软件右侧菜单栏选择“手动拼接”模块,在左侧弹出的A、B视口中分别确定三个点,软件将依据三对点的位置自动将两部分拼接。
其中,需要注意的是,由于防晒霜罐体这一目标物体整体多呈现圆柱形,尤其是在需要拼接的两部分交界处为较为标准的圆形;因此需要借助其表面的纹理特征对上方圆柱形罐体与下方原型底面盖子加以相对位置的确定,否则可能会出现二者的位置偏离,即盖子与罐体发生相对旋转。这需要在确定三对拼接点时注意结合罐体文字、图案与底面盖子注塑口、脱模工艺槽等位置,从而确定出二者原始相对位置。
例如下图,即可利用罐体灰色长方形图案位置与罐体底部吹口(即红线区域内部,但可看到这一吹口可能由于部分位置未被图像拍摄到导致出现缺口)位置进行二者相对位置的确定。
确定三对拼接点后,若所得结果仍不满意,可以再次选择右侧菜单栏“手动拼接”模块,重新选取拼接点。这里同样需要注意,若对某次拼接结果不满意而重新生成拼接点时,停留在软件视图中的物体为刚刚自己不满意的拼接结果所对应模型,若需要重新选择拼接点,不可以再按照软件中目前存在的模型确定二者相对位置,往往需要将模型文件删除后重新解压对应压缩包以得到原始模型。这一问题亦在本文第三部分有所讨论。
多次重复,直到得到满意结果。最终我所得到结果如下第一幅图所示;其中,可以看到底面盖子与罐体之间依然具有一定空隙,如下第二幅图所示。但在空隙对侧,盖子并没有超过罐体范围,由下第三幅图亦可看出底部盖子与罐体连接较好。因此,推断这一空隙可能是由于图像拍摄时部分角度未拍摄到或拍摄时光线较暗等导致的。
此外,在执行手动拼接这一过程时并不是一帆风顺,前后也多次出现很多问题。其中一些问题附于本文第三部分。
2.1.4封装处理由上述图片与分析可知,此时所得模型并不属于真正意义上的模型,而是由数以万计的点及其形成的细小面片所组成的实体,如下图所示即为模型所包含点数与面片数。
因此,需要对此时所得模型表面加以封装处理,即将当前由点集合组成的模型表面转换为密闭的实体。
封装分为“封闭模型”与“非封闭模型”,其中前者会将模型表面均完全密闭,后者则不会对原始模型表面未紧密连接的部分进行封闭。本文选择“封闭模型”,并在随后弹出的窗口中选择“高细节”以保留目标物体更多细节。选择后软件即开始自动执行封装操作。
其中,第一次得到的封装结果中防晒霜罐底面盖子出现位置错误,其与圆柱形罐壁的侧面相连接,如下图所示;而封装前的手动拼接结果应该是没有问题的。因此猜测,这一问题可能是由于个人操作或软件运行问题导致封装时未使用正确拼接结果导致的。
再次执行封装操作,得到正确结果,分别如以下两图所示。
在封装结束弹出的窗口中,可以选择是否需要对所得模型表面加以简化。顾名思义,简化即为对当前所得目标物体模型细节加以舍取,丢弃部分细节信息,减少模型所具有的三角面片数量;简化后的文件大小将随之降低。在这里,考虑到数据质量与大小、电脑空间等,此处将简化比例选择为,即简化后模型信息为原有模型信息的%,亦即不进行任何简化。因此,可以看到对应数据文件的大小将不发生任何变化。简化与不简化的效果对比附于本文第三部分。
此处选中“纹理展开优化”与“锐化”选项。其中,“纹理展开优化”适用于后续操作有望继续对纹理加以编辑的场合;“锐化”又称为“高通滤波”,其可增强图像高频分量,增强图像轮廓,使得图像更为清晰,同时亦会部分增加图像噪声;“平滑”则与之相反:其过滤高频分量,降低图像噪声,同时会使得图像较为模糊。
在这里,考虑到防晒霜罐表面原有纹理较为细致,为使得最终模型包含有更多细节信息,因此选择“锐化”;平滑与锐化处理的效果对比附于本文第三部分。
2.1.5模型定性描述通过前述步骤,即可开始数据后处理操作。同前述操作一致,后处理操作过程中可对模型加以移动、旋转等变化操作,如下首图。
得到最终结果后,对模型结果加以检查,查看是否出现残缺、纹理丢失等情况。模型结果如下后三幅图所示。
外形方面,可以看到所建立防晒霜罐模型与实际照片中物体外形十分接近。其下部分呈现出较为标准的圆柱状,而圆柱上方喷嘴处粗细变化明显可见;其上部具有较为明显的条纹特征,喷嘴口处凹陷区域明显(如下图);底部凹槽明显,注塑口等特征突出;顶部弯曲明显,且此处具有部分黑色区域,结合所用初始数据材料中防晒霜罐图像看,可能为拍摄时角度较低导致;放大观看,可以看到罐体侧壁所具有的粗糙凹陷。
表面纹理特征方面,可以看到防晒霜罐表面字体较大部分均可辨认,如罐体正面的红色品牌标志与中、英文产品说明,以及罐体背面的生产日期等均可识别;而罐体较小字体,如“清透防晒霜”下部英文单词、罐体背面下侧英文与数字注释等,需结合产品特质、相关英文知识等才可辨认;而“清透防晒霜”左侧灰色纹理图案(如下图),以及罐体背面中部英文说明等辨识程度相对更低。
另一方面,可以看到罐体与罐底交界处具有多处明显黑色部分,因而具有一种“焊接”效果。针对这一问题,查看本文所用原始数据中防晒霜罐初始拍摄图片,发现图片中并不存在这一黑色区域;而在本文所用文件贴图(result.jpg文件)中同样发现了这一问题。因此,个人认为这一问题或许是软件对纹理进行贴图时导致。
2.1.6模型定量描述与本文开头所提及的那篇博客借助3DS.O.M.软件尺子工具对所生成模型尺寸加以定量描述不同,本文所用EinScan-S软件将定量描述模块放置于“保存”阶段。
完成上述操作,在对模型亮度与对比度加以进一步适当调整后,选择“保存数据”功能;配置好文件名与路径等信息后,即可看到模型所对应长、宽、高尺寸数据。
如下所示,本次所制作防晒霜罐空间三维模型长度(由罐体正面至罐体背面)为41.91mm,宽度(由罐体左侧至罐体右侧)为35.93mm,高度(由罐体顶部至罐体底部)为.74mm(此处长、宽、高三者与软件所给三个尺寸数值的匹配方式依据后期曼妥思罐这一长、宽、高数值分明的物体模型尺寸得到)。
完成尺寸读取后,即可选择缩放比例并保存缩放。本文不设置缩放,将缩放比例设置为。
2.2番茄与曼妥思罐三维模型制作完成上述晒霜罐这一目标物体的空间三维模型建立后,为进一步展示空间三维模型可观的建立结果,我们再对番茄、曼妥思罐等两个目标物体进行空间三维模型建立。同时,对本部分操作过程中出现的问题、存在的不足等探讨附于本文第三部分。
2.2.1番茄三维模型制作依据前述同样方法,建立番茄的三维模型。
其中,程序运行过程中出现如下图所示错误;随后发现,点击确定后软件将继续运行,并无影响。
得到结果如下所示。
其中,可以明显看到番茄模型在上下两部分具有“断层”般错误。个人认为这一问题更多应是来自手动拼接过程。因此不断调整上下两部分的拼接方式,争取获得较为合适的结果。其中,亦尝试了“非封闭模型”这一封装方法,如下所示。
最终得到结果如下所示。
可以看到,此时番茄的建模结果在外形上较之前者有了明显提升,但其两部分对应颜色依然具有较大差距。进一步结合本文所用番茄初始图像与贴图图像(如下图)分析,可能是由于拍摄图像整体角度偏低,仅得到番茄中间部分与顶部信息,而缺少二者相接触位置信息,导致番茄三维模型中部与顶部衔接出现问题,造成这一现象。
2.2.2曼妥思罐三维模型制作依据前述同样方法,建立曼妥思罐的三维模型。
得到结果如下。
3操作问题与思考前述操作部分已列举部分实验过程中自己的思考与理解,本部分则对前述未提及的问题加以探讨。
3.1圆形模型拼接时相对旋转问题在对防晒霜罐进行手动拼接时注意到,由于其底部与罐体分别为圆形与圆柱形,二者相接触位置为圆形;因此其可能会发生相对位置移动。如下所示,原始模型(即依据结构光与所拍摄图像生成的模型)中底部盖子尽管与罐体具有不重合问题,但在修正这一问题时需要确保盖子与罐体不发生转向,即底部盖子在手动拼接时只平移,不旋转。若不注意这一点,即使盖子也会和罐体完美匹配,但是由于其发生相对旋转,与原始目标物体之间具有差别,因此严格来说这样的模型也是错误的。
为实现这一目标,不断对模型加以手动拼接;若拼接效果不理想,则需要将其舍弃并重新定位三对拼接点;直至获取一个二者紧密拼接且未发生明显相对旋转的模型。
3.2是否简化问题在封装结束后可以选择是否对模型加以简化。为探究简化可能带来的影响,分别对防晒霜罐模型加以无简化处理与50%简化处理,得到结果分别如下左侧图与右侧图所示。
暂不讨论两个模型亮度差异(亮度不同是由于自己所设置亮度数值不同),而由模型表面粗糙程度来看,放大后可明显看到右图所具有的粗糙纹理信息少于左图,即右侧模型表面相对更加光滑。由此可以看到,选择对模型加以简化后,软件会自动舍弃一些细节纹理从而实现数据的精简。选择更多细节特征还是更精简的数据,需要依据实际建模对象加以考虑。
3.3平滑与锐化问题在封装结束后可以选择是否对模型加以平滑和锐化。为探究二者可能带来的影响,分别对防晒霜罐模型加以锐化与平滑处理。其中值得一提的是,两次所建立模型对应尺寸具有一定细微差异,如下所示。
其中,左侧为锐化后模型,右侧为平滑后模型。上述二者所具有的尺寸差异或许可以表明三维空间模型的建立具有一定不确定性,或是是由平滑过程中物体模型表面的微小形变导致的。
两种方法得到防晒霜罐空间三维模型对比如下图所示。其中,左侧为平滑处理后模型,右侧为锐化处理后模型。由二者对比可以发现,平滑与锐化处理似乎对防晒霜罐这一模型的最终效果影响并不是很大,即二者之间的差距确实难以观察。
3.4软件操作撤销问题通过本文中EinScan-S软件的使用,结合上述博客中对3DS.O.M.软件的使用,可以感受到二者具有一定不同。其中,后者或许更多已成为一款通用的侧影轮廓三维模型重建软件,相关功能较之前者较为完善;而前者可能更多是为适配EinScan-SE这款扫描硬件设备而开发的辅助软件,实现由拍摄至建模一系列连续的过程,因此部分功能相对简单。
以撤销操作为例:在本文开始前对EinScan-S软件加以熟悉过程中,无意删除了模型部分区域,如下所示。
随后发现,在软件中并未找到可以撤销这一步操作的模块或功能;进一步尝试将软件退出并重新进入,导入这一工程后发现其依然具有此处残缺——由此或许可以看出,此软件中针对模型的每一步操作在执行后往往将直接作用于数据文件,且无撤销方式(其中手动拼接操作可通过再次拼接从而覆盖原有拼接结果,但每次拼接结果将原始模型覆盖后亦无法撤销)。为此,需要提前准备原始数据的备份。
3.5多个模型对比问题在进行所得空间三维模型简化与否、锐化与平滑等不同操作效果对比过程中发现,EinScan-S软件在同一计算机中只能同时运行一个程序,即仅能打开一个工程。经过尝试,发现可以使用软件安装后得到的“FilePreviewTool”模块加以实现。
如上图所示,可以先将第一个制作好的空间三维模型导入“FilePreviewTool”模块,并在EinScan-S软件制作第二个模型。随后,分别利用二者视窗,即可方便实现不同模型的对比。
PS:利用EinScan-S软件提供的三维数据共享网站(
转载请注明:http://www.aideyishus.com/lkcf/4379.html