物体三维模型的构建:3DSOM软件实现侧影轮廓方法
本文介绍基于3DSOM软件,实现侧影轮廓方法的空间三维模型重建。
从本文开始,我们将基于空间三维建模方面的相关原理、基本操作与结果分析等,通过几篇博客,对其加以尽可能详细的介绍与实战。
那么我们首先从侧影轮廓建模方法开始。本文我们将基于3D Software Object Modeler(3DSOM)这一软件,对上述方法加以完整的操作,并对结果加以分析。
本文所用到的数据包括马铃薯多角度图片若干与圣诞老人蜡烛多角度图片若干。其中,马铃薯图片数据并不是我自己拍摄的,而是他人拍摄后发给我的(也因此遗憾这一图像数据集不能一并提供给大家);为方便大家理解三维建模的基本操作,在对马铃薯加以建模后,在本文的2.2部分,我们重新从拍照这一基本环节开始,选取一个圣诞老人蜡烛这一新的物件,完整地走一遍三维建模流程,从而让整个操作方法更加明了。
1 背景知识
通过建立正确模型对不同事物各种属性加以描述和表现,是现代科学探索事物本身发展、运行规律的一个普遍而重要方法[1]。随着计算机软、硬件技术快速发展,三维立体建模作为一种于数字空间中对研究对象形状、位置、运动等属性加以再现的技术,逐渐在各领域研究中发挥重要作用。
本文第一部分——原理部分,由作物三维信息获取方法这一角度展开,并着重综合探讨侧影轮廓建模方法原理及其操作步骤。
1.1 三维信息获取方法
在接触方式角度,作物三维形态信息的获取可分为接触式(Contact-)方法与非接触式(Non-contact-)方法。依据相关文献[2],对上述两种三维信息获取方法加以讨论。
接触式方法依据采集过程不同,进一步可分为人工采集方法与三维数字化仪采集方法。其中,人工采集方法主要用于传统作物几何形态测量,借助卷尺、量角器等工具,以手工和肉眼观测为主。其观测方法的不精确导致研究效率低,所得结果受主观因素影响较大。目前,人工采集方法使用较少,主要作为一种补充测量手段。
三维数字化仪采集主要指通过传感器记录、跟踪探头于三维空间中的位置,从而实现目标物数字化。其常用仪器包括坐标测量机(Coordinate Measuring Machine,CMM)、机械臂式三维扫描仪与电磁式三维数字化仪等。三维数字化仪采集较之人工采集,效率相对有所提高,但其仍具有操作复杂、存取速度较慢与无法获取目标物表面纹理(探头仅仅可获得位置信息)等问题。因此,其在三维建模领域亦未发挥主要作用。
非接触式方法则随着计算机技术的飞速发展而产生。其依据测量原理不同,可进一步分为主动式方法与被动式方法。其中,主动式方法借助仪器主动发出的可控辐射(激光、超声波等,由这点看与主动遥感、被动遥感的定义有近似之处),依据目标物透射或反射特性,获取其三维空间特征。依据辐射源或计算原理,主动式方法可继续分为脉冲测距法、结构光与编码光法与CT(Computed Tomography,电子计算机断层扫描)和MRI(Magnetic Resonance Imaging,核磁共振成像)法。
被动式方法则无需主动面向目标物发射辐射,而仅收集目标物所反射的太阳辐射。其所需仪器相对较为简单,往往直接由目标物体对应图像(如本文中侧影轮廓方法所需物体的多角度图像)提取信息,以建立空间三维模型。依据提取信息基于的信息源,被动式方法可进一步分为单幅图像法、立体视觉法、基于侧影轮廓法、基于运动图像法与逐层切片恢复法等。
上述各类方法或所需仪器从属关系如图1所示。
图1 作物三维信息获取方法
1.2 侧影轮廓方法原理及其流程
前述各类作物三维形态信息获取方法中,侧影轮廓三维建模方法由于相对简便易行,运算速度快,稳定性高[2],因此广泛应用于农业等领域。本文便采用这一信息获取方法。将此方法原理与具体操作流程结合,探讨如下。
侧影轮廓为物体投影在成像平面上图像的外形线条[3],是理解物体几何形状的一条重要线索[4]。当以透视投影方式由多个视角观察某一空间目标对象时, 于各视角对应画面中均可得到一条该物体侧影轮廓线;此处侧影轮廓线与对应透视投影中心共同确定三维空间中一个一般形状的锥体,而所观察对象物体便位于这一立体锥体内部。以此类推,不断由不同方向增加对目标物体的观测视角数量,便可使得各对应锥体的外形不断逼近对象物体表面,从而对目标物体外形特征加以空间三维的可视化。上述这一由锥体的交构成的空间包络被称作物体的可见外壳(Visual Hull)[5]。
为获取更加逼近实际物体表面的可见外壳,使得三维建模效果更加准确,往往需要由多种方向入手,获取大量视角对应图像;这即为侧影轮廓方法的“多角度图像获取”步骤。该步骤为本方法基础数据来源,后期对目标物体进行三维建模所需信息均来源于上述多角度图像。而多角度图像在拍摄时需要通过旋转物体或旋转摄像机实现不同方位画面的采集,从而改变目标物体对应视角的方向与俯仰角度;而后期进行三维建模时需要将不同方向视角的图像建立联系并结合。因此,各图像之间空间位置的关系显得尤为重要。为实现这一重要步骤,需要对所获取多角度图像进行“相机定标”,从而确定各图像对应相机拍摄方位及其内部相关参数[3]。
相机定标具有多种实现方法。郑国威等[6]利用平面镜反射性质等理论,提出一种基于平面镜的相机内参标定方法;曹煜等[3]对平面镜定标加以改进,提出一种基于成角度平面镜装置的图像三维重建方法,通过几何方法实现相机标定;使用已标定的固定相机或标记点等标定装置进行辅助标定同样是一种常用的相机定标方法[7]。本文即采取标定装置的辅助相机定标方法,利用定标垫(Calibration Target)对各多角度图像拍摄方位加以确定[8]。定标垫如图2所示。
图2 3D S.O.M.软件定标垫
定标垫由15组点集合构成,每个点集合包含四个点,呈放射状排布;点分为大点和小点,不同大小分别代表不同得分;各点集合对应大点或小点个数均不一致,亦即各点集合对应得分不同,得分不同进而可以确定不同的点集合分布情况。3D S.O.M.软件将依据各图像中不同点集合的位置,从而确定对应图像的拍摄方位,并进一步将若干多角度图像位置关系加以求解。相机定标操作在图像导入3D S.O.M.软件时自动加以完成。
此外,各多角度图像还需进行噪声去除、畸变校正等基本图像操作的预处理过程。
结合前述锥体轮廓生成原理,3D S.O.M.软件通过“轮廓逼近、顶点分析、三角划分”(SAVANT)方法对模型加以建立。首先对所导入的若干多角度图像加以掩饰(Mask)处理,选择各图片中目标物体所处位置,并将与目标物体无关的背景、定标垫区域等加以识别;依据各多角度图像目标物体部分信息,获取若干多边形近似轮廓,并为每一个近似轮廓加以编号;随后由多边形轮廓计算得到三个顶点,并记录各顶点信息;最后,利用三角格网,将完整表面进行划分,从而勾勒出表面细节[8]。上述即为侧影轮廓方法的“轮廓提取”与“顶点计算及可视外壳生成”步骤的实现。至此,生成了目标物体的外形轮廓模型,但并未包含其具体外表纹理信息。其中,以马铃薯为例,所得三角格网体积模型如图3所示;所得外表面如图4所示。
此外,上述步骤中值得一提的是,在由三角格网生成初始表面(体积)后,还需对其加以体积优化、细化表面等进一步优化操作,方可得到最终的目标物体表面形态模型。
图3 马铃薯三角格网外表面
图4 马铃薯未纹理映射外表面
最终,还需依据上述所得三维表面轮廓模型对应方位信息特点,结合不同多角度图像方位信息,为三维模型表面进行纹理映射,从而使得模型具有更多可视化特征,更好描述实际物体特点。如图5所示。
图 5 马铃薯纹理映射外表面
在执行自动纹理映射后,可能存在部分目标物体表面区域仍未有纹理或纹理出现明显跳跃等现象;这多为多角度图像拍摄时因部分角度未拍摄而出现相关信息丢失导致。针对这一问题,可借助对应图像,面向相关纹理信息丢失方向进行纹理手动匹配,对细节部分的纹理信息加以补充。
将侧影轮廓方法具体操作流程整合,如图6所示。
图 6 侧影轮廓方法流程
2 三维模型制作
2.1 马铃薯三维模型制作
本部分以马铃薯为例,展示利用3D S.O.M.软件,借助侧影轮廓方法制作三维模型的具体流程。同时,对本文操作过程中出现或值得思考的问题、存在的不足等探讨附于本文第三部分。
2.1.1 多角度图像导入
在3D S.O.M.软件中,单击“File”→“New Project”,在弹出的文件选择窗口中选择马铃薯多角度图像,并选择“打开”。若需打开已有模型文件,可在前述“File”中选择“Open”。
2.1.2 图像掩饰
图像掩饰可通过两种方法进行。一是借助“Processing”菜单栏中“Mask All Images”模块加以批量掩饰,二是直接进入单张图像“Edit Masks”界面,借助“Auto Mask”模块中按钮加以单张掩饰。二者在具体掩饰效果方面并无差异,而若选择后者,则会自动打开掩饰阈值控制条。下图左侧为第一种掩饰方法执行后界面,右侧为第二种掩饰方法执行后界面。
掩饰时需要注意,不要对目标物体顶部与底部图像加以处理,以防止此类图像掩饰后与其他正常掩饰图像混杂并参与建模,从而导致结果错误或模型残缺等情况。
操作过程中,为防止软件崩溃带来的不便,可以及时对所做成果加以保存。保存默认格式为“.som”文件,该文件包含多角度图像及其掩饰、建模等全部信息。
在对自动掩饰结果进行完善过程中,可分别借助“Round Brush”与“Outline curve”对错分区域加以修改。在个人实际操作中发现,两种修改工具各有其利与弊——“Round Brush”方法对一些零散、细碎的错分小区域的修改效率较高,但相对较为容易触碰到无错区域(即将土豆表面错误修改为非土豆表面);而针对后者,“Outline curve”方法通过圈画区域的方式纠错,对较大错分区域的修改较为方便,但圈画过程自身整体较为耗时,对于零星存在的错分区域而言修改效率不如前者。下图所示分别为“Round Brush”修改方法与“Outline curve”修改方法。
分别对全部多角度图像(顶部与底部图像除外)进行同样操作,完成所有掩饰工作。
2.1.3 表面生成与优化
在3D S.O.M.软件中,单击“Processing”→“Generate Surface”,在弹出的选项窗口中选择第一项“线框生成”。该界面共有三个选项,其次分别为“表面优化”与“细分表面配置”;在生成表面过程中,需要依次执行上述三个选项所对应步骤。
其中,在生成原始外表面而未对其加以优化时,可以看到所得马铃薯表面具有明显尖锐部分,如同“刀痕”;而在对表面进行优化后,则可以观察到对应尖锐区域明显缓和,突出部位被削弱。由此可以看出优化表面步骤对所得模型加以了适当平滑处理。
下图分别展示出优化前马铃薯表面两处尖锐部分(前两图)及其优化后的结果(后两图)。
此外,在执行表面生成或优化步骤时,可以明显看到3D S.O.M.软件在操作时视图会随之发生及时的改变,方便用户实时根据建模过程中物体表面所发生的变化加以调整(如暂停或停止程序执行)。这一特点与我专业前期接触到的许多相关软件(ArcMap、ENVI等)有所不同。
下图即为执行表面优化时截图;执行时可以明显看到原本尖锐的区域转为平滑。
最终所得优化后的表面生成结果如下所示。可以看到,所得最终结果较之原始马铃薯外形十分接近,且其上尖锐部分得到充分平滑,视觉方面亦显得尤为逼真。
2.1.4 纹理映射
纹理映射即将原有目标物体表面颜色、形状分布等特点映射至前述步骤所得表面模型。
在3D S.O.M.软件中,单击“Processing”→“Generate Texture Maps”,配置相关参数后即可开始自动纹理映射。可以看到,在纹理映射操作执行过程中,马铃薯模型表面同样实时发生着变化。其变化以区域为单元,每次纹理映射或调整往往是区域性整体发生变化(如马铃薯某一方向表面瞬间整体出现纹理)。由这一变化规律或许可以推测,3D S.O.M.软件的纹理映射同样是基于多角度图像方位信息与前述所得模型已有位置信息,将某一方向拍摄图片的纹理映射至该方向对应表面模型位置。另一方面,随后的纹理手动匹配操作同样可以证明这一可能性。
纹理自动映射结束后,得到带有表面纹理信息的马铃薯空间三维模型;但同时,由于受到拍摄角度等影响,马铃薯纹理在其顶部与底部具有一定残缺或突变等,分别如下图所示。
显然,需要对上述纹理错误加以解决。而如前所述,多角度图像中顶部拍摄与底部拍摄对应图片均未参与建模;其作用之一即为为自动生成纹理后的模型表面加以细节区域或遮挡区域的纹理优化。
选中顶部或底部图片,右键选择“Align Images”选项,即可将此幅图像与所得模型同时显示于窗口中。当图片中马铃薯与模型马铃薯在位置、角度等方面均一致时,即可确定自动纹理映射操作。
同时,自动纹理映射模块具有许多操作选项。关于这些操作选项的尝试与结果对比,附于本文第三部分。
操作结束,分别查看马铃薯模型顶部与底部纹理情况,可以看到其原本突兀的残缺或突变均得以解决,整体效果良好。
2.1.5 模型检查
通过前述步骤,成功获得具有表面纹理特征的马铃薯空间三维模型。此时,还可对模型加以进一步检查,确定其表面是否具有明显体积错误或纹理残缺等问题。
在检查过程中,发现个人所得结果在马铃薯尖头位置处存在一块残缺。找到对应角度的图像,进行手动纹理匹配。所得结果虽有一定改善,但这一残缺依然存在。个人认为这一问题可能是由于掩饰过程中个别区域过掩饰导致的。
2.1.6 模型定性描述
结合所得模型,尝试对其加以一定定性描述。
外形方面,本文所得模型呈现出较为细长的椭圆形,整体较为规则(具体形状会随着模型观察角度发生一定变化);椭圆长轴两端所对应位置呈现出一端较粗、一端较细的分布特征,如下图所示。上述特点与市面上常见马铃薯十分接近。
表面纹理特征方面,所得模型整体颜色为土黄色,未观察到青色、微绿色等不健康颜色,由这一角度表明其较为新鲜,可食用。其中一面多数区域颜色较浅(但亦有部分颜色较深的小区域),另一面相对则较深;表面分布有较多黑斑,多数黑斑面积较小,但亦有个别面积较大黑斑。长期潮湿土壤掩埋、薯类重茬导致的晚疫病等均可能造成马铃薯黑斑,属于正常现象;而本模型对应马铃薯黑斑整体情况较好,但其小面积黑斑数量整体偏多,若食用还需加以注意。此外,由表面纹理、平滑等角度观之,可以看到马铃薯在拍摄多角度图像前经过一定清洗,并无土壤颗粒等杂物。
下图即为此马铃薯表面整体颜色偏暗、黑斑较多区域。
2.1.7 模型定量描述
借助尺子工具对马铃薯模型尺寸加以定量描述。
在3D S.O.M.软件中,单击“Model Tools”→“Measure Model”,即可通过鼠标选择模型中待测量点,并自动求出其对应距离。
此处需要注意的是,软件自动距离测量依赖于所选用定标垫的大小。由于此马铃薯多角度图像并不是我自己拍摄的,因此我也暂未无法获取其拍摄时对应定标垫半径大小,因此对于马铃薯模型的测量并未更改其单位长度。
测量得到,在默认单位距离条件下,这一马铃薯空间三维模型的长度(对应椭圆形的长轴)为78.71mm,宽度(对应椭圆形的短轴)为37.41mm。当然,此处未确定单位距离的定量数值并不具有实际意义。
在接下来的2.2部分,对个人自选物件进行空间三维建模后,所测定尺寸数据均已进行单位长度修改,具有实际意义。
2.2 圣诞老人蜡烛三维模型制作
本部分以第二个范例——圣诞老人蜡烛为例,展示利用3D S.O.M.软件,借助侧影轮廓方法制作三维模型的全部具体流程。同时,对操作过程中出现的问题、存在的不足等探讨附于本文第三部分。
另一方面,由于在这一圣诞老人蜡烛模型建立前,已先通过马铃薯对模型制作、软件使用等加以较为详细的介绍,因此本部分内容较之前者描述相对简洁明了。
2.2.1 多角度图像获取与导入
借助侧影轮廓方法建模时,其对物体的外形特征、拍摄光照与角度等具有一定的要求。在确定利用圣诞老人蜡烛进行空间三维建模前,曾分别多次尝试不同物体(包括不同颜色、不同外形、不同大小等)、不同拍摄环境(包括临近窗口、远离窗口等)与不同光照条件(包括纯日照、台灯光源、手电筒光源等)等图片的建模,并最终依据所得拍摄图像效果、图像掩饰效果等确定选用圣诞老人蜡烛所对应多角度图像进行后续操作。
其中,在选择目标物体、选择拍摄环境与实际拍摄过程中,具有较多需要注意之处。如在目标物体选择上,需要注意物体不要过于细微或复杂,不具有或较少具有透明部分,且不可以过大导致遮挡大部分定标垫点集合信息;在拍摄环境选取上,需注意背景(由于在家中完成本文,暂时未找到类似幕布的背景)不可过于繁杂,尤其需要与目标物体颜色具有较强区分度,且朝向目标物体的光线应当充足;在拍摄过程中,务必控制目标物体与定标垫之间位置不发生相对移动,且图片需要尽可能多地包含定标垫点集合。
圣诞老人蜡烛的多角度图像拍摄完毕后,将其导入软件,如下图(其中仅列出部分图像)。
下图即为部分圣诞老人蜡烛对应图像。
2.2.2 图像掩饰
依据本文2.1部分所示方法,对所导入的圣诞老人蜡烛多角度图像进行图像掩饰。
或许是由于家中图像拍摄效果不如实验室专业仪器拍摄效果,个人自选物件的多角度图像自动掩饰效果较之前述马铃薯等作物较差,图像中往往具有较大面积区域需要通过“Round Brush”与“Outline curve”工具加以处理。其中,一副自动掩饰效果相对较好的图像如下。
2.2.3 表面生成与优化
图像掩饰完毕后,运用前述方法对圣诞老人蜡烛图像分别进行线框生成、表面优化与细分表面配置。
考虑到本次自选物件的图像拍摄与掩饰效果较之前述马铃薯略差,因此在执行表面生成与优化步骤时亦曾担心所得效果可能不理想。而随着程序执行,可以看到圣诞老人的模型逐步显现。
下图为初始表面生成所得结果。
下图为表面生成并优化后所得结果。
下图为表面生成、优化并细分后所得结果。
可以看到,上述初始表面已具有一定圣诞老人形态,但其表面尖锐处相对较多;优化后将一些明显的尖锐或突变部分加以消除,但其依然存在一定数量的尖锐地带;最终细分结果则完全将模型外表面的不合理沟壑加以平滑,从而进一步加深了圣诞老人的原有形态。
2.2.4 纹理映射
依据前述方法,由多角度图像(包括顶部与底部图像)对圣诞老人蜡烛模型进行纹理映射。所得结果如下图(其中将软件View Model的背景颜色修改为蓝紫色)。
2.2.5 模型定性描述
依据所得模型最终结果,对其加以定性描述。
在颜色方面,可以看到模型颜色十分鲜艳,其红色外套、绿色手套、青色礼品袋、黄色脸颊与皮带扣,以及白色胡须与头发、黑色皮带与皮鞋等都表现得十分清晰。同时可以注意到,圣诞老人外形反光程度较为明显。究其原因,一是因为原始物件为蜡烛,自身原本反光较为明显;二是由于在拍摄时个人开启了手电筒作为光源,从而在照片中出现反光区域。而与此同时,在圣诞老人身体部位的侧方与后方,部分区域出现颗粒状、不均匀的颜色分布趋势;这一问题一方面是由于该物件原本颜色分布就有不均匀情况,另一方面猜测亦与拍摄时光照条件有关。
在外形方面,可以看到包括脸颊、胡须波动、衣摆在内的细节都被清晰刻画出。但同样在其身侧(右侧臂下,如下图)出现一定模糊部分。针对这一模糊情况,个人认为是由于其位于胳膊下方,在多角度图像中并未拍摄到具体信息;而底部图像则由于其脚掌较大,导致遮挡视线,同样不可以获取到圣诞老人臂下的信息。
2.2.6 模型定量描述
此处同样借助尺子工具对圣诞老人模型加以定量描述。
如前所述,在对模型进行测量时,需要首先明确所用定标垫的单位长度。通过测量,获知我在拍摄圣诞老人图像时对应定标垫半径长度为83.2mm,因此先将这一数据导入软件后进行测量。
经过测量,可知圣诞老人蜡烛空间三维模型高(由顶部蜡烛芯至底部皮鞋)为82.07mm,宽(由左手礼品袋至右手)为52.81mm,厚(由前胸位置至后背位置)为41.07mm。
3 问题与思考
前述操作部分已列举部分实践过程中自己的思考与理解,本部分则对前述未提及的问题加以探讨。
3.1 底部图片位置移动问题
如前所述,多角度图像在拍摄时,目标物体与定标垫之间不允许出现相对移动。而若需对物体底部加以拍摄,其往往需要改变物体位置(如将马铃薯原本朝下一面翻转至朝上、将圣诞老人蜡烛倒置等)。这似乎看上去不满足相对位置不移动的要求。
针对这一问题,查阅相关资料可知,顶部与底部图像并不属于“多角度图像”范畴,因此相对位置这一限定对其而言并无要求。此外,进一步思考还可以发现,在利用顶部与底部图片进行纹理手动匹配时,我们需要手动调整图像中目标物体与已有模型的相对位置——这一步在一些角度上可以认为是通过“人工”的方式进行了顶部或底部图像的“定标”;而之所以要求前述多角度图像相对位置不变正是由于软件需要借助其与定标垫的位置关系加以自动进行定标。因此,便可以解释底部图片(包括顶部图片)无需规定相对位置不变的原因。亦正因如此,在发现圣诞老人蜡烛无法自主倒立后,我尝试用手协助其自主倒立,且软件并未报错。
3.2 顶部与底部图片纳入建模问题
在使用马铃薯进行空间三维建模时,我尝试不剔除顶部与底部图片,而是将其纳入建模图片范围;原本希望观察这种操作可能会带来何种错误结果,但发现软件并未报错,且生成的模型无异常。
针对这一问题,目前个人认为,这是由于在掩饰过程中,我并未直接选择所有图像的批量掩饰,而是对其它角度的图像分别加以掩饰——即最终参与建模的图像分别为经过掩饰的多角度图像与未经过掩饰的顶部与底部图像。而建模时软件可能直接不考虑未掩饰的顶部与底部图像(或软件亦考虑顶部与底部图像,但由于其未经过掩饰,使得程序无法由这些图片中获取有用的信息),从而进一步得到了无错误的建模结果。
3.3 阈值对掩饰效果影响问题
在调整掩饰阈值控制条时发现,有些情况下阈值大小与掩饰效果似乎并无绝对关系。例如,在实践中,往往应当掩饰阈值控制条越大,过掩饰的可能性即越大(即目标物体被当作非目标物体的可能性越大),反之则反;而在一副马铃薯图像中发现,增大控制条反而可以得到较好的马铃薯图像掩饰结果,调小阈值控制条则使得马铃薯被过掩饰,仅剩余支撑架。如下所示,左图对应较大阈值控制条,右图为较小阈值控制条。
针对这一问题,目前暂未完全清楚;但个人认为是由于算法、阈值数值与对应这幅马铃薯图像像素分布特征综合导致的。
3.4 欠掩饰与过掩饰热点区域问题
对若干多角度图像执行自动掩饰,往往会出现欠掩饰与过掩饰现象。操作中发现,出现这类问题的区域往往是距离目标物件较近、与目标物件颜色较类似的区域,如下所示。
由此可知,3D S.O.M.软件的掩饰算法应当是借助于临近像元之间的像素差异及其关系等加以实现的。
3.5 纹理手动匹配配置问题
本文多次运用纹理手动匹配操作。在匹配前,需要调整对应图像与所建立模型之间的位置关系,这一步骤对应了软件中较多选项或配置。尝试对这些选项加以尝试。
首先,在界面中存在“Guess Orientation”选项。结合其英文解释与实际操作情况,个人判断这一选项是对图像与模型之间最有可能的位置关系加以遍历,并保存最为接近的位置关系,从而方便用户选择二者最匹配的空间位置。而在图像与模型位置相差较大时这一选项不可选。如下图。
而在二者位置相对较为吻合时,这一选项可选。如下图。
其次,这一步骤中还包括“Optimise Alignment”选项。同样结合英文说明与操作实际情况,个人认为这一选项是为了方便用户在将图像与模型结合后,依据图像对模型的几何形状加以完善。其所对应的三个选项可分别供用户选择更准确的几何对象(用以手动匹配纹理的图像更准确、已有的模型更准确、二者一样准确),并在后期执行操作时依据用户的选择加以适当调整。
如下图,可以看出图像中马铃薯的轮廓对原有马铃薯的几何表示优于已有模型的表达,因此选用第一个选项;则后续纹理匹配过程中若遇到问题,可能将优先以图像中的几何轮廓为准。
而这一选项下方的“Start”,则应为自动判断图像与模型几何孰优孰劣的按钮。如下图,图像与模型几乎严丝合缝;其执行“Start”后程序自动选中了“the same”选项。
此外,在配置完毕后,所弹出的窗口显示可进行的操作不单单是纹理匹配,还可以同时对几何表面加以完善,如下图所示。这或许可以进一步表明上述“Optimise Alignment”选项对模型的优化意义。
3.6 多角度图像横、竖状态问题
在本文实践过程中发现,由于借助手机拍摄多角度图像,部分图像可能会出现尺寸与其他图片不符合的情况,尤其是图像的横、竖状态不一致这一问题较为容易出现。
先后尝试修改照片属性、利用Windows照片应用编辑等操作均无果。随后发现,若在一个从未出现过异常尺寸图像的Project中,选择任意图像并替换,可以使得替换图像符合该Project原有尺寸,如下图。
将这幅原本横向的图片替换为一幅原本为竖向的图像“test.jpg”,可以看到进入Project的“test.jpg”自动变为横向。
而若Project在创建后出现过异常尺寸图像,则该方法无效。如下图,其中已含有竖向图像(打叉的三幅图),则无论怎样替换,进入的图像均不再自动调整为横向。
3.7 模型底部凸起问题
在制作圣诞老人蜡烛模型完毕后,发现所得模型下部(圣诞老人脚部)具有略微凸出部分,如下图红线内部。
个人认为,导致这一现象的原因是由于在拍摄多角度图像过程中,对其身体下侧角度的拍摄不够充分,从而软件对圣诞老人底部的建模更多是依据其侧身角度的图像加以完成,从而在底部出现一定偏差。
针对这一问题,目前发现两种解决方法。首先可以借助“Alignment”,直接依据其侧身图像手动对模型表面加以修改(如本文3.5部分);其次可以通过“Edit Geometry”模块“Move clip plane”与“Clip model”相结合的方式加以底部凸出部分裁剪。
首先,针对上述第一种解决方法,个人尝试后发现利用圣诞老人蜡烛的侧身图像对模型表面加以调节后,其建模效果似乎确实有所改变,但这一效果非常不明显——甚至怀疑其有所改变可能只是自己的心理作用导致;推测这一结果同样是由于我的拍摄照片整体角度过高(俯角偏大)导致的。因此随后尝试利用上述第二种解决方法。但发现,这一解决方法较之第一种,确实可以明显实现模型底部凸出部分的裁剪(如下图);但由于裁剪操作执行后需利用“Clip model”功能将裁剪应用至模型,而点击“Clip model”后其表面纹理将被自动抹去(若不点击“Clip model”,会出现如下下图所示情况),因此需要重新生成纹理;而在重新生成纹理的过程中,我的软件总是会在操作执行5%左右时停止片刻,并随后强制退出。尽管经过多次尝试,而这一纹理映射时强制退出的错误均未解决。
除上述操作之外,目前自己并未找到针对模型底部凸出部分的第三种解决方法。尽管这一问题并未得到良好解决,但自己加深了拍摄角度对侧影轮廓方法影响的认识。其原理亦十分简单,即多角度图像的拍摄角度、照片数量与质量等都将对物体的轮廓产生影响;而物体的侧影轮廓是这一三维模型重建方法的核心。因此,模型最终外表与多角度图像拍摄情况密切相关。
参考文献
[1] 栾悉道, 应龙, 谢毓湘, 等. 三维建模技术研究进展[J]. 计算机科学, 2008(02):208-210.
[2] 张建, 李宗南, 张楠, 等. 基于实测数据的作物三维信息获取与重建方法研究进展[J]. 华中农业大学学报, 2013,32(04):126-134.
[3] 曹煜, 陈秀宏. 基于侧影轮廓的图像三维重建方法[J]. 计算机工程, 2012,38(05):224-226.
[4] 刘钢, 彭群生, 鲍虎军. 基于图像建模技术研究综述与展望[J]. 计算机辅助设计与图形学学报, 2005(01):18-27.
[5] Laurentini A. The visual hull concept for silhouette based image understanding[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1994,16(2):150-162.
[6] 郑国威, 高满屯, 董巧英. 基于平面镜的摄像机内参数线性标定方法[J]. 计算机工程与应用, 2006(28):86-88.
[7] 谷月霞, 张维忠, 王晓燕, 等. 基于未标定图像的三维重建算法[J]. 计算机工程, 2010,36(08):214-216.
[8] Baumberg A, Lyons A, Taylor R. 3D S.O.M.—A commercial software solution to 3D scanning[J]. Graphical Models, 2005,67(6):476-495.