MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); 基于重复结构检测的三维建筑物精细模型重建
  软件学报  2016, Vol. 27 Issue (10): 2557-2573   PDF    
基于重复结构检测的三维建筑物精细模型重建
缪永伟1, 冯小红1, 于莉洁1, 陈佳舟1, 李永水2     
1. 浙江工业大学 计算机科学与技术学院, 浙江 杭州 310023 ;
2. School of Mechanical & Aerospace Engineering, Nanyang Technological University, Singapore 639798, Singapore
摘要: 基于单幅图像的城市建筑物建模是计算机图形学和计算机视觉的一个研究热点.针对具有显著重复结构特征的单幅城市建筑物输入图像,提出了一种通过简单交互方便、快速地生成建筑物三维模型中精细细节结构的方法.首先,根据用户的简单交互重建建筑物基本主体部分的三维几何模型;然后,根据输入图像,通过检测水平方向和垂直方向上的边界线自动检测建筑物各个墙面的重复结构,并对重复细节结构按照其包围盒的特征进行分类;其次,通过用户描绘细节结构的局部线画图,根据建筑物细节结构与基本主体部分的射影几何关系,恢复对应凹凸细节结构的几何模型;最后,根据检测得到的建筑物表面重复结构,分别自动生成相同类型的重复细节结构,得到三维建筑物精细模型.实验结果表明,该方法能够简单、便捷地重建出具有较强真实感的三维建筑物模型.
关键词: 单视图     三维重建     重复结构     交互式     建筑物     精细模型    
Repetition Detection Based 3D Reconstruction of Detailed Architectures
MIAO Yong-Wei1, FENG Xiao-Hong1, YU Li-Jie1, CHEN Jia-Zhou1, LEE Yong-Tsui2     
1. College of Computer Science and Technology, Zhejiang University of Technology, Hangzhou 310023, China ;
2. School of Mechanical & Aerospace Engineering, Nanyang Technological University, Singapore 639798, Singapore
Foundation item: Foundation item: National Natural Science Foundation of China (61272309, 61303138)
Abstract: In the literature of computer graphics and computer vision, single-image based 3D architecture modeling is a hot research topic. Focusing on repetition detection of urban architecture images, a novel algorithm for reconstructing detailed 3D architectures is presented for interactively generating large number of repetitive structures in an effective and convenient manner. The new approach consists of three steps. First, according to the parallel or vertical relations of sketch lines interactively drawn by the user, the coarse architectural model is reconstructed using an energy function optimization. Upon the texture information of the single input image, the horizontal and vertical repetitions on each architectural face are then detected and classified based on their bounding boxes. Next, according to the user inputted sketch lines of typical detailed structure, the 3D information of detailed concave or convex structures is calculated based on the projective relations between detailed structures and basic body of architecture. Finally, the other same type of repetitive structures are reconstructed automatically and their 3D detailed architectures can be generated. Experimental results show that the proposed method can conveniently and effectively reconstruct 3D detailed architectures from single image with high visual quality.
Key words: single view     3D reconstruction     repetitive structure     interactive modeling     architecture     detailed reconstruction    

随着遥感技术、三维扫描技术和虚拟现实等技术的快速发展, 各种针对三维建筑物和虚拟城市场景的建模应用, 包括从日常使用的谷歌地图、虚拟旅游导航、三维数字游戏到具有现实意义的城市规划、文化遗产保护等均深受人们的追捧, 同时也得到了学术界和工业界的广泛重视[1-3].然而, 在这些应用的开发过程中, 三维建筑物模型的构建往往还是借助3dMax、Maya、AutoCAD等专业建模软件.虽然这些建模软件能够生成用户需要的建筑物模型, 但其建模过程通常都较复杂、繁琐和耗时, 需要用户具备专业的操作技能, 无法满足普通用户对三维建模的实用性和便捷性要求.因此, 如何方便、快捷地生成虚拟城市场景中的建筑物精细模型成为计算机图形学和计算机视觉中的重要问题, 得到了研究人员的广泛重视.

已有的建筑物建模方法主要包括基于点云的建模方法和基于图像的建模方法等[2, 3].基于点云的建模方法虽然能够重建高质量的建筑物模型, 但需要借助三维激光扫描仪扫描庞大的建筑以获取建筑物对象的点云数据, 所需要的成本代价比较高, 一定程度上限制了该方法的实用性.基于图像的建筑物建模方法大致可以分为两类:基于多视图的建筑物建模[4-8]和基于单视图的建筑物建模[9-16].在基于多视图的建筑物建模中, 往往需要用户提供较多的输入图片, 并进行不同视图之间的精确配准, 其三维重建算法通常比较复杂.Pollefeys等人[4]利用固定姿势相机拍摄到的视频流, 先对相机进行标定, 再计算像素的深度信息来生成三维城市场景.根据输入的一组二维图像, Xiao等人[5, 6]提出的建筑物建模方法首先利用视图配准计算初始点云数据, 再根据得到的点云数据从模型库中匹配粗糙模型, 最后经过细化得到三维模型.Cohen等人[7]和Ceylan等人[8]利用建筑物的对称性和重复结构, 对传统SfM(structure from motion)重建技术进行了改进和优化以提高重建效果的准确度.基于单视图的建筑物场景建模方法是计算机图形学和计算机视觉的一个研究难点[2], 该类方法可以进一步细分为基于模型库的数据驱动建模方法[9-12]和基于几何的交互式建模方法[13-16].基于模型库的数据驱动建模方法需要预先建立一个建筑物模型库, 然后根据输入图像的特征描述匹配模型库中模型的特征, 最后将匹配得到的三维模型进行编辑组装生成相应的三维建筑物模型.Wu等人[9]提出了一种逆过程式的建模方法, 即根据输入的建筑物表面布局图像, 计算对应的分割语法并对表面的所有细节进行语义分析, 最后生成对应的三维模型.Bao等人[10]先将输入图像进行层次分割, 然后利用半自动方式对各个结构添加标签, 得到一个建筑物表面的外观布局, 然后再生成对应的三维模型.Nan等人[11]通过考虑细节结构内部元素的分布规律、纹理的覆盖率以及与相邻细节结构的相关性等因素来实现对二维建筑物图像中细节结构纹理信息与模型库中三维模型所对应的二维纹理图的匹配.吴等人[12]提出了一种基于特征线素的三维建筑表意性建模方法, 即先由用户交互输入特征线条, 再根据形状文法创建三维模型, 最后由用户调整部分特征线素, 通过轴向弹性约束形变编辑三维模型.虽然基于数据库的建模方法能够快速生成简单的建筑物模型, 但对于复杂建筑物需要建立更大的模型数据库, 匹配算法也将更加复杂, 以至于影响最终生成模型的速度和准确率.因而, 本文更倾向于基于几何的交互式建模, 针对输入图像中呈现的重复细节结构, 本文方法通过自动检测建筑物各墙面的重复结构, 根据细节结构与墙面的射影几何关系恢复其三维几何, 通过少量的用户交互方便、高效地生成精细的三维模型.

在基于单视图的建筑物建模中, 传统的建模途径是利用相机标定方法或通过优化方法获取对应二维输入图像各个顶点的三维信息[13-16], 但是, 由于根据单幅图像很难准确估计相机的内外参数, 同时难以精确检测各个建筑物平面以及它们之间的几何关系, 所以不可避免地需要用户一定的交互或对图像的获取方式进行某些约束才能顺利完成建模工作.Guillou等人[13]提出了利用灭点原理(principle of vanishing point)对单幅输入图像进行相机标定并生成粗糙建筑物模型的方法, 但该方法需要对输入图像的获取进行较多的约束, 包括相机屏幕的横纵比固定、主点位于图像中心位置及输入图像至少存在两个灭点等.Oh等人[14]提出利用深度图表示一个三维场景, 并根据基于梯度约束的优化方法确定场景深度值, 但该方法需要用户较多的交互以得到精确的重建效果.在假设输入视图中两条正交线段在实际三维空间中长度比例已知的前提下, Wang等人[15]利用灭点原理恢复相机的外部参数和投影矩阵, 并利用投影矩阵以及场景约束对建筑物可见部分进行三维重建.Jiang等人[16]充分利用了建筑物的对称特性, 根据输入的单幅图像生成较为复杂的三维模型, 方法首先要求用户在输入图像中标记一个截头锥体进行相机标定, 在随后的建模过程中需要对建筑物的各个部件(如墙壁、屋顶等)分别进行标记以实现交互式三维重建, 但该方法对于具有大量重复结构的建筑物重建, 需要用户的交互工作量非常繁多.对于具有显著重复结构特征的建筑物, Schindler等人[17]利用SIFT特征检测建筑物墙面的重复结构, 即先对图像中的SIFT特征描述符进行聚类, 再随机选取相似的特征描述符获取对应的单应矩阵, 并根据单应矩阵对图像中的主要顶点进行变换找到对应重复结构的格子布局, 该方法适合于墙面重复结构比较单一的情形.对于同一墙面中存在多种类型的重复结构情形, Wu等人[18, 19]首先根据图像中检测到的灭点将透视图像进行校正预处理, 然后分别沿水平、垂直方向进行特征匹配以获取重复间距集合和对称轴集合, 最后根据所获取的重复结构区域, 通过计算重复质量评估值进行分解, 得到最终的重复结构分布状况.虽然该方法能够检测出不同的重复结构, 但对于面积较小的重复结构难以进行有效的检测, 而是将距离较近的细节结构作为一整块区域进行检测, 故该方法并不适用于重建具有不同尺度下精细结构的复杂建筑物场景.

针对具有显著重复结构特征的单幅城市建筑物输入图像, 本文提出了一种以简单交互的方式快速生成建筑物精细模型的方法, 从而方便用户将拍摄到的任意一张具有重复结构的建筑物图像重建为对应的三维建筑物模型.本文方法的主要贡献在于:(1) 提出了一种直接针对透视图像中建筑物各个墙面进行重复结构自动检测和分类的方法, 极大地减少了用户在重建建筑物模型过程中的交互工作量; (2) 利用建筑物细节结构与基本主体的射影几何关系, 提出了计算建筑物凹凸细节结构深度信息的理论, 使生成的三维建筑物模型更加精确; (3) 算法对建筑物图像的获取方式不进行任何约束, 重建过程简单、快捷, 具有广泛的实用性.

1 三维建筑物重建框架

考虑到本文方法处理的对象是任意获取的建筑物图像, 并且建筑物通常具有大量的重复结构, 故本文通过优化方法预先重建建筑物基本轮廓的三维模型, 而并不是采用传统的利用相机标定方法来建模[13, 15, 16, 20].在传统的利用相机标定方法重建建筑物三维模型时, 由于单幅图像所包含的信息量有限, 为了准确重建建筑物模型, 不可避免地需要对输入图像的获取进行一定的约束, 如相机主点位于图像中心位置[16]等, 以获取足够信息计算相机的内外参数, 无法满足本文对方法广泛实用性的需求.同时, 为了减少用户的交互量, 对输入的建筑物图像中的重复结构进行自动检测和分类, 并根据重复的细节结构与建筑物基本轮廓之间的空间几何关系, 对建筑物细节结构进行精细建模.本文方法主要包含如下3个步骤.

(1) 基于优化方法生成六面体建筑物墙面.在以单幅建筑物图像为背景的画布上, 用户通常需要描绘建筑物六面体可见墙面的二维轮廓线, 即两个四边形平面.根据用户输入的线画图, 系统将自动识别并提取线画图中线条之间的平行、垂直和共面关系, 建立一个基于几何约束的能量函数, 通过将能量函数极小化来获取线画图中所有顶点的三维坐标, 并根据对称关系得到其他的对称面片以完善建筑物基本轮廓的三维模型.

(2) 建筑物重复结构的自动检测和分类.由于建筑物体墙面的细节结构, 如窗户、阳台等在一般情况下都具有在水平、垂直方向上对齐的特点, 同时, 通过透视投影拍摄到的图像, 细节结构位置顶点仍对齐于水平、垂直方向上的灭点位置.根据此特点, 本文对用户所要重建的建筑物墙面分别进行逐行逐列检测, 并通过比较包围每个重复结构的四边形包围盒来对建筑物墙面的重复结构进行筛选和分类, 最终将得到每个墙面上所有重复结构的位置信息和类别信息.

(3) 基于射影几何关系重建建筑物细节结构.由于建筑物墙面中的细节结构与其六面体墙面之间存在相对的位置关系, 可以利用射影几何原理根据建筑物六面体墙面的三维信息恢复各墙面中细节结构的深度信息.具体地说, 首先将建筑物三维模型进行平移和旋转变换, 使当前细节结构所在平面垂直于Z轴方向, 然后利用射影变换计算XY坐标, 再利用灭点原理以及射影几何原理计算深度值.一旦恢复某一细节结构的三维模型, 系统就会自动搜索与该位置结构类型相同的其他重复结构的位置, 通过平移、复制的方法快速重建当前墙面中其他类型相同的重复结构的三维模型.

2 基于优化方法生成六面体建筑物墙面

一般来说, 城市建筑物的基本主体都是六面体墙面, 而且该六面体墙面中相邻墙面相互正交, 同一墙面中的各个顶点位于同一平面.因此, 在建筑物基本墙体中, 各条边界要么相互平行, 要么相互正交.利用建筑物六面体墙面的这些特性, 本文提出了一个基于几何约束的能量式来对用户所描绘的线画图中各个顶点的三维坐标进行优化, 得到结构稳定的三维面片.该能量方程式定义如式(1)所示.

$ E(x, y, z) = {\lambda _1}{E_{{\rm{parallel}}}}(x, y, z) + {\lambda _2}{E_{{\rm{verticality}}}}(x, y, z) + {\lambda _3}{E_{{\rm{planarity}}}}(x, y, z) $ (1)

式中, 参数λ1λ2λ3表示对应各项的权重, EparallelEverticalityEplanarity E 分别表示基于边缘线的平行关系、垂直关系以及共面关系约束的能量函数式, 具体表示如公式(2)~公式(4)所示.其中, 在通过优化方法获取线画图中各顶点理想的三维坐标之前, 其初始坐标的获取是直接将图中的二维坐标赋值给对应顶点在三维空间中的xy坐标值, 而z坐标值的获取是通过检测线画图的一个立方角, 然后根据立方角理论[21]并结合顶点的平面性计算所得.

$ {{E}_{\text{parallel}}}(x,y,z)=\sum\limits_{{{l}_{1}},{{l}_{2}}\in L且{{l}_{1}}//{{l}_{2}}}{\text{ }\!\![\!\!\text{ }{{({{x}_{{{l}_{1}}}}\cdot {{y}_{{{l}_{2}}}}-{{y}_{{{l}_{1}}}}\cdot {{x}_{{{l}_{2}}}})}^{2}}+{{({{y}_{{{l}_{1}}}}\cdot {{z}_{{{l}_{2}}}}-{{z}_{{{l}_{1}}}}\cdot {{y}_{{{l}_{2}}}})}^{2}}\text{+}{{({{x}_{{{l}_{1}}}}\cdot {{z}_{{{l}_{2}}}}-{{z}_{{{l}_{1}}}}\cdot {{x}_{{{l}_{2}}}})}^{2}}\text{ }\!\!]\!\!\text{ }} $ (2)
$ {{E}_{\text{verticality}}}\text{(}x,y,z\text{)=}\sum\limits_{{{l}_{1}},{{l}_{2}}\in L且{{l}_{1}}\bot {{l}_{2}}}{{{({{x}_{{{l}_{1}}}}\cdot {{x}_{{{l}_{2}}}}+{{y}_{{{l}_{1}}}}\cdot {{y}_{{{l}_{2}}}}+{{z}_{{{l}_{1}}}}\cdot {{z}_{{{l}_{2}}}})}^{2}}} $ (3)
$ {E_{{\rm{planarity}}}}(x, y, z) = \sum\limits_{{l_{ij}} \in {f_i}, {f_i} \in F} {{{\left( {\left| {\begin{array}{*{20}{c}} {{x_{{l_{i1}}}}}{{y_{{l_{i1}}}}}{{z_{{l_{i1}}}}}\\ {{x_{{l_{i2}}}}}{{y_{{l_i}_2}}}{{z_{{l_{i2}}}}}\\ {{x_{{l_{ij}}}}}{{y_{{l_{ij}}}}}{{z_{l{i_j}}}} \end{array}} \right|} \right)}^2}} $ (4)

需要指出的是, 虽然单幅建筑物图像一般仅显示两个建筑物墙面信息, 但根据建筑物的对称性特点, 可以对已获得的三维墙面面片进一步完善以补全其余墙面面片.具体地说, 根据矩形面的中心对称关系, 由其中3个顶点坐标便可确定对应矩形面的第4个顶点坐标.从而, 在得到两个稳定的矩形面片后, 算法遍历已知面片的每一条边缘线, 一旦检测到存在只共享于一个面片的边缘线时, 利用矩形面片的中心对称特性由3个顶点坐标可以计算其余第4个顶点的三维坐标, 组成新的面片.算法通过循环遍历已生成的三维面片直至所有边缘线都共享于两个面片, 最终得到完整的三维粗糙模型, 如图 1所示.

Fig. 1 Generation of hexahedral architectural facade 图 1 六面体建筑物墙面的生成

3 建筑物重复结构的自动检测和分类

建筑物表面通常存在大量的重复结构, 即形状大小完全相同、纹理近似的细节结构(如窗户、阳台等), 如果简单地通过交互方式直接对这些建筑物细节结构进行建模, 用户的工作量无疑非常庞大, 而且用户在描绘时不可避免地存在偏差, 这将会造成所有的重复结构并不能保持形状、位置与实际情况完全一致, 影响最终重建得到三维模型的精确性.因此, 对建筑物表面的重复结构进行自动检测具有十分重要的意义.目前已有的重复结构自动检测算法, 如Wu等人[18]对具有显著边界建筑物图像的重复结构检测和Bao等人[10]对墙面细节结构布局进行检测中, 往往需要先将输入图像进行校正预处理, 然后再利用对应的特征描述符检测重复结构的分布.与已有方法不同, 本文提出的重复结构检测算法可以直接对原始图像的重复结构进行检测而无需对图像进行校正预处理, 同时将相同类型的重复结构聚为一类并获取它们的相对位置信息.需要强调的是, 由于在上一节重建六面体建筑物墙面时, 已经得到了用户描绘的墙面线画图, 从而确定了建筑物墙面区域.在检测建筑物重复结构时, 可以充分利用建筑物墙面区域信息, 避免对无关冗余信息进行检测, 提高了算法的效率.

3.1 同类型重复结构的判定依据

一般而言, 针对城市建筑物墙面中的重复结构, 可以直接比较其形状和大小来进行简单分类以区别不同类型的结构, 如不同大小的窗户、阳台等.因此, 假设建筑物墙面的每个细节结构都用一个简单四边形格子表示(在本文算法中用四边形包围盒表示各个重复细节结构), 通过比较包围盒的长宽便可确认所检测的细节结构形状大小是否相同.然而, 在实际建筑物图像中, 由于透视投影的存在, 真实环境中具有相同类型、相同大小的重复结构投影到二维成像平面后其大小具有明显的差别.研究者通常将待检测图像进行校正预处理[18]或要求拍摄得到的建筑物墙面尽可能地接近正交投影[9], 以使得相同类型结构大小尽量保持一致.与传统方法不同, 本文算法间接地借助射影矩阵对图像中待检测的细节结构进行分类, 使得具有相同形状大小的细节结构聚为一类.其中, 细节结构的特征描述包括两项, 一项是由初始顶点指向水平灭点方向的边长(如图 2中边P1P2的长度), 另一项是由初始顶点指向垂直灭点方向的边长(如图 2中边P1P4的长度).

Fig. 2 Diagram of repetitive structures (two yellow quadrilaterals mean structures and red lines represent their feature lengths) 图 2 重复结构示意图(黄色框四边形表示细节结构, 红色方向边长表示其特征长度)

由于一个平面墙面中最多只存在两个灭点, 当墙面中的细节结构均表示为简单平面矩形时, 在透视投影作用下必定存在一个射影变换矩阵可以恢复所有细节结构边界的平行关系[22].受该结论启发, 我们可以通过射影矩阵变换、平移变换、射影矩阵逆变换将任意四边形包围盒变换到指定位置, 从而得到该四边形包围盒在任意指定位置的透视投影效果.如图 2所示, 算法在比较同一墙面中两个细节结构box1和box2时, 先对box1进行射影矩阵变换、平移变换以及射影矩阵逆变换, 得到位于box2相应位置处的box1′, 再对box1′与box2进行特征匹配以判断这两个细节结构是否属于同一类型.具体地说, 首先根据结构box1的4个顶点确定一个射影变换矩阵, 该射影变换矩阵K满足如下关系:

$ \left[ \begin{array}{l} \begin{array}{*{20}{c}} {{\rho _1}x({P_1})}&{{\rho _2}x({P_2})}&{{\rho _3}(x({P_2}) + x({P_4}) - x({P_1}))}&{{\rho _4}x({P_4})} \end{array}\\ \begin{array}{*{20}{c}} {{\rho _1}y({P_1})}&{{\rho _2}y({P_2})}&{{\rho _3}(y({P_2}) + y({P_4}) - y({P_1}))}&{{\rho _4}y({P_4})} \end{array}\\ \begin{array}{*{20}{c}} {{\rho _1}}&{{\rho _2}}&{{\rho _3}}&{{\rho _4}} \end{array} \end{array} \right] = \left[ {\begin{array}{*{20}{c}} {{k_{11}}}&{{k_{12}}}&{{k_{13}}}\\ {{k_{21}}}&{{k_{22}}}&{{k_{23}}}\\ {{k_{31}}}&{{k_{32}}}&{{k_{33}}} \end{array}} \right]\left[ \begin{array}{l} \begin{array}{*{20}{c}} {x({P_1})}&{x({P_2})}&{x({P_3})}&{x({P_4})} \end{array}\\ \begin{array}{*{20}{c}} {y({P_1})}&{y({P_2})}&{y({P_3})}&{y({P_4})} \end{array}\\ \begin{array}{*{20}{c}} 1&1&1&1 \end{array} \end{array} \right] $ (5)

其中, P1P2P3P4为结构box1的4个顶点.公式(5)中包含13个未知量和12个方程, 通过求解该方程式可以得到关于某未知量(本文中选为ρ1, 不妨取值为1.0)唯一确定的解, 即可获取变换矩阵K中所有参数.然后, 对顶点P1P2P4Q1进行如下射影矩阵变换:

$ \left[{\begin{array}{*{20}{c}} {{{P'}_1}}\\ {{{P'}_2}}\\ {{{P'}_4}}\\ {{{Q'}_1}} \end{array}} \right] = K\left[{\begin{array}{*{20}{c}} {{P_1}}\\ {{P_2}}\\ {{P_4}}\\ {{Q_1}} \end{array}} \right] $

得到变换后的4个顶点P1′、P2′、P4′和Q1′; 并根据顶点P1′和Q1′, 得到平移距离T=Q1′-P1′; 再对顶点P1′、P2′和P4′进行射影矩阵逆变换, 即:

$ \left[{\begin{array}{*{20}{c}} {{{P''}_1}}\\ {{{P''}_2}}\\ {{P_4}^{\prime \prime }} \end{array}} \right] = T{K^{ - 1}}\left[{\begin{array}{*{20}{c}} {{{P'}_1}}\\ {{{P'}_2}}\\ {{{P'}_4}} \end{array}} \right]. $

最终得到的点P1′′、P2′′和P4′′即为图 2中结构box1在box2相应位置处的顶点坐标, 从而再对变换后box1′; 与结构box2进行特征匹配, 即可辨别出这两个细节结构是否形状相同.在理想状态下, 如果box1与box2属于相同类型, 则变换后, 结构box1′; 的特征长宽与结构box2的特征值长宽完全一致.需要强调的是, 当待检测墙面接近正交投影时, 水平方向和垂直方向灭点均在无穷远处, 但是, 由于在重复结构检测和分类中仅仅需要灭点方向, 因而该情况并不影响本文算法的检测和分类效果.

3.2 重复结构自动检测和分类

根据上述同类型重复结构的判定依据, 本文的重复结构自动检测算法主要包括对细节结构的候选位置进行检测以及对候选项分类筛选这两步(其中水平边界线和垂直边界线的交叉位置细节都被选定为候选项).在对细节结构的候选项位置进行检测时, 算法先对当前墙面区域逐行逐列检测, 以找到所有的边界线集合, 然后确定所有水平边界线与所有垂直边界线的交叉位置集合.一般情况下, 墙面的所有细节结构所在位置均包含在这些交叉位置中, 因此本文将得到的交叉位置集合视为候选项所在位置的集合.在对检测得到的候选项进行分类和筛选时, 首先根据每个候选项的初始位置提取其特征信息, 将每个细节结构用四边形包围盒表示, 并根据第3.1节中的同类型重复结构判定方法对当前墙面中的所有重复结构候选项进行分类, 再对初步分类结果进一步优化并排除分类结果中细节结构大小极小的异常情况, 最终得到重复结构的检测和分类结果.

针对图 3中的建筑物输入图像, 算法先将墙面区域内图像进行二值化处理得到图像Igray(一般来说, 建筑物墙面二值化后的理想图像是白底黑色图, 相反情况时可以对图像进行取反处理), 计算二值化图像Igray中黑色像素点所在比例Th0;再利用图像腐蚀操作得到粗糙的边缘图像Iedge, 在此基础上分别对每个墙面进行重复结构检测.在对每一个墙面进行重复结构检测时, 见算法1.首先对垂直方向边界线进行检测, 找到既满足在边缘图像中黑色像素点个数占所在列总像素个数的比值大于阈值Th1(图 3Th1=Th0, 左右墙面分别取为0.473和0.494)且满足二值图像中其左右像素差值大于0的像素点个数占所在列总像素个数的比值大于阈值Th2的列作为垂直方向边界线(图 3Th2=0.8·Th0, 左右墙面的Th2值分别取为0.378和0.395).这里设定像素差值大于0是为了提高候选重复结构位置的检测准确率, 避免找到重复的位置, 即在左上角、右上角、左下角、右下角4个位置中统一选定左上角位置作为细节结构的相对位置.同样地, 在水平方向上进行类似操作以获取水平方向上的边界线集合.从而, 可以取水平方向边界线与垂直方向边界线的交叉位置为待检测墙面中重复结构的候选位置.然后, 算法根据二值化图像Igray将每个候选点位置用一个四边形包围盒表示, 该包围盒的两对边均指向灭点方向.利用第3.1节中判断同类型重复结构的方法, 对所有候选重复结构进行初步分类得到如图 3(b)所示的初步分类结果.这里需要强调的是, 受噪声、遮挡等因素影响, 一般很难得到理想的二值图像, 故在对细节结构进行准确匹配时, 我们设定了一定的误差范围Th3(实验中Th3取为0.3).为了提高分类结果的准确率, 排除不理想的二值化效果影响重复结构分类的最终结果, 算法对得到的初步分类结果进一步优化.优化过程中首先逐列统计所有细节结构类型, 细节结构的类型判断出错往往存在于相同类型的细节结构数目较少的情况, 故需将相同类型总数较少的细节结构类型与附近相同类型总数最多的细节结构类型再次进行判别; 类似地逐行进行优化, 并对墙面所有细节结构的类型标签进行重定义, 得到如图 3(c)所示的分类结果(图中不同的颜色表示不同的细节结构类型).

Fig. 3 Automatic detection and classification of repetitive structures 图 3 重复结构的自动检测和分类

算法 1. 垂直方向边界线检测.

输入:待检测墙面区域, 二值化图像Igray和边缘图像Iedge;

输出:垂直方向边界线集合EV={e1, e2, …, en}.

算法过程:

1) 计算垂直方向上的灭点PV;

2) 沿灭点PV方向, 逐列对边缘图像Iedge进行检测;

WHILE待检测列ei位于墙面区域内DO

  3) 统计边缘图像Iedge中列ei上黑色像素点个数占该列总像素个数的比例ratio1;

  IF ratio1≥Th1 THEN

    4) 统计二值化图像Igray中列ei上所有像素点中其左右像素差值大于0的像素点个数占该列像素总数的比例ratio2;

    IF ratio2≥Th2 THEN

      5) 将边界线ei放入垂直方向边界线集合EV中;

    END IF

    END IF

END WHILE

4 基于射影几何重建建筑物细节结构

除不规则建筑物外, 根据射影几何理论[22, 23], 一般城市建筑物表面的细节结构与其墙面整体结构的二维视图信息和其对应的三维结构之间存在一定的几何关系.然而, 已有的建筑物表面细节结构重建方法仍以优化为主[10, 11, 24], 主要可分为3种:第1种是通过检测判断局部与整体的相对位置关系(如平行和正交等)进行优化求解, 计算细节结构顶点的深度信息, 如Yang等人[24]提出的利用线画图进行三维重建方法; 第2种是预先建立细节结构的数据库, 然后通过细节纹理等信息进行匹配的方法来恢复细节结构的三维信息[10]; 第3种是融合前两种方法重建细节模型[11].由于细节结构类型复杂多样, 第1种方法生成的三维模型由于考虑的约束条件有限, 往往导致深度信息计算并不十分稳定; 而通过模型匹配的方法来重建三维模型虽然能够生成稳定的三维模型, 但要提高重建精度就不可避免地需要加大数据库中模型的存储量, 这无疑会增大匹配过程的复杂度, 降低算法效率.本文提出了一种准确计算建筑物凹凸细节结构深度的方法, 以快速恢复建筑物表面细节结构的三维信息, 该方法充分利用了建筑物细节结构与墙面的几何射影关系, 从而能够简单、高效地重建三维精细模型.

4.1 建筑物凹凸细节结构的深度计算

凸细节结构的深度计算.假设建筑物细节结构在实际空间中与建筑物墙面垂直, 如图 4所示, 用户初始描绘的两个墙面face0和face1的边缘线为墙面主体结构的边缘线, 随后描绘的边缘线均属于细节结构部分的边缘线, 由墙面边缘线可以得到3个方向的灭点:VP, LP, RP.已知图中所有顶点的二维坐标以及墙面顶点的三维坐标, 计算墙面face0处细节结构的深度L3D(V1, V2)的方法为:首先延长线段LP V1与边V5V4交于点V7, 然后计算线段V7RP与线段V2LP交于点V8, 再计算线段V8VP与线段V4V6交于点V9, 根据灭点原理[18], 在实际三维空间中满足如下平行关系:

Fig. 4 Depth calculation of convex structures 图 4 凸细节结构深度值计算

$ {({V_2}{V_8})_{3D}}//{({V_1}{V_7})_{3D}} $ (6)
$ {({V_1}{V_2})_{3D}}//{({V_7}{V_8})_{3D}} $ (7)

由公式(6)和公式(7)可知, 四边形V1V2V8V7在三维空间为平行四边形, 因此得到如下关系:

$ {L_{3D}}({V_1}, {V_2}) = {L_{3D}}({V_7}, {V_8}) $ (8)

同样地, 根据三维空间中的平行关系, 四边形V4V9V8V7在实际三维空间也为平行四边形, 故线段V7V8V4V9满足:

$ {L_{3D}}({V_7}, {V_8}) = {L_{3D}}({V_4}, {V_9}) $ (9)

由公式(8)和公式(9)易知, 线段V1V2与线段V4V9在三维空间中的关系为

$ {L_{3D}}({V_1}, {V_2}) = {L_{3D}}({V_4}, {V_9}). $

因此, 一旦求得线段V4V9在实际三维空间中的长度, 即可获得该细节结构的深度值.其中, 点V9V4V6为位于同一条线段上的3个点.在文献[22]中提到, 共线三点的简比在仿射变换下保持不变.在三维到二维的透视投影中, 经过实验发现, 共线三点的简比在三维空间中与二维投影平面上也近似相等.另一方面, 由于在建筑物图像中, 如图 5所示, 建筑物墙面上的所有细节结构D1~D6的深度远小于它们所在墙面的深度, 也就是说, 细节深度与墙面深度的比值将非常小, 如果利用共线三点的简比近似相等来计算细节结构的深度值, 其误差较小.因此, 本文在计算建筑物墙面的细节结构深度, 即图 4的三维空间中长度L3D(V4, V9)时, 可利用共线三点的简比近似相等, 即:

Fig. 5 Detailed structures of the architecture image 图 5 建筑物图像的细节结构

$ \frac{{{L_{2D}}({V_4}, {V_9})}}{{{L_{2D}}({V_4}, {V_6})}} \approx \frac{{{L_{3D}}({V_4}, {V_9})}}{{{L_{3D}}({V_4}, {V_6})}}, $

亦即

$ {L_{3D}}({V_4}, {V_9}) \approx \frac{{{L_{2D}}({V_4}, {V_9})}}{{{L_{2D}}({V_4}, {V_6})}} \times {L_{3D}}({V_4}, {V_6}) $ (10)

其中, 二维线段长度L2D(V4, V9)和L2D(V4, V6)可从输入图像上直接获取, 三维线段长度L3D(V4, V6)也已在六面体墙面重建算法中求得, 故三维长度L3D(V4, V9)可以通过公式(10)直接计算.

凹细节结构的深度计算.凹细节结构的深度计算与凸细节类似, 如图 6所示, 已知墙面face0和face1的三维信息以及图中所有顶点的二维信息, 线段V0V4在实际三维空间中的长度值就是面face0上细节结构的深度值, 具体计算深度V0V4的方法为:延长边V0V1与边V5V6交于点V8, 再计算线段V8RP与线段V4LP的交点V9最后计算线段V9VP与线段V5V7的交点V10由灭点原理[18]可知, 在实际三维空间中,

Fig. 6 Depth calculation of concave structures 图 6 凹细节结构深度值计算

$ {({V_0}{V_4})_{3D}}//{({V_8}{V_9})_{3D}}, $
$ {({V_0}{V_8})_{3D}}//{({V_4}{V_9})_{3D}}. $

故在三维空间中满足关系:

$ {L_{3D}}({V_0}, {V_4}) = {L_{3D}}({V_8}, {V_9}) $ (11)

同样地, 线段V5V10与线段V8V9三维空间中以下关系等式:

$ {L_{3D}}({V_8}, {V_9}) = {L_{3D}}({V_5}, {V_{10}}) $ (12)

由公式(11)和公式(12)可以得到, 在三维空间中线段V0V4与线段V5V10的关系如下:

$ {L_{3D}}({V_0}, {V_4}) = {L_{3D}}({V_5}, {V_{10}}). $

因此, 图 6中面face0上的细节结构深度与线段V5V10的三维长度值相等.与上述求凸细节结构的深度值理论依据相同, 由于一般建筑物的凹细节结构深度远小于其对应的灭点距离, 故可以通过共线三点的近似简比求得线段V5V10的三维长度值, 即:

$ {L_{3D}}({V_5}, {V_{10}}) \approx \frac{{{L_{2D}}({V_5}, {V_{10}})}}{{{L_{2D}}({V_5}, {V_7})}} \times {L_{3D}}({V_5}, {V_7}) $ (13)

其中, 二维线段长度L2D(V5, V10)和L2D(V5, V7)可以从输入图像上直接获取, 三维线段长度L3D(V5, V7)表示面face1中顶点V5V7的实际三维距离, 其在六面体墙面重建算法中已经获得, 故凹细节结构的深度值可以通过公式(13)直接计算出来.

4.2 建筑物细节结构的重建算法

在恢复细节结构的三维信息时, 算法主要分为两个步骤.首先利用二维空间中墙面顶点x坐标和y坐标与三维空间中墙面顶点X坐标和Y坐标之间的映射关系初步求得用户在画布中描绘的细节结构顶点坐标XY, 并将部分与墙面不在同一墙面上的顶点按某一方向进行平移变换得到真实的XY坐标; 然后, 根据具体细节结构的凹凸特性, 利用第4.1节中的方法计算其深度值.为了简化计算, 算法在计算细节结构的三维坐标时, 预先对已经生成的三维几何模型进行旋转变换, 使得当前细节所在的墙面与画布平行, 也就是说, 假定当前墙面与XOY面平行.

由于在透视投影中, 平行平面所指向的灭点是相同的, 所以在已知其中一个平面的映射规则的前提下, 可以通过该映射规则恢复其他平行平面中线段间的平行关系.算法在计算细节结构顶点的XY坐标时, 以图 7为例, 首先根据墙面4个顶点的二维坐标与三维空间中对应顶点XY坐标的映射关系, 计算对应的射影变换矩阵H.然后, 将线画图中细节结构的顶点V0~V6进行射影矩阵变换, 并根据下式:

Fig. 7 Reconstruction of convex structure 图 7 凸细节结构重建过程

$ \rho \left[{\begin{array}{*{20}{c}} {X(P)}\\ {Y(P)}\\ 1 \end{array}} \right] = H\left[{\begin{array}{*{20}{c}} {x(P)}\\ {y(P)}\\ 1 \end{array}} \right] $

初步计算细节结构线画图中各顶点的XY坐标值.在计算细节结构各顶点的Z坐标时, 由于已有三维模型中当前细节所在墙面平行于XOY面, 算法先将它们的Z坐标值初步设为与墙面顶点Z坐标值一致, 再分凸、凹两种细节结构具体计算细节结构各顶点的三维坐标.这里需要说明的是, 在重建凸细节结构时, 用户的交互工作是描绘当前细节的可见部分面(实验中一般包括3个面信息), 而在重建凹细节结构时, 用户的交互工作仅仅是一个面和一条表示深度的边缘线.

建筑物凸细节结构的三维坐标求解.初步计算得到的三维凸结构效果等价于将细节结构平行投影到其所在墙面上的效果, 这里需要对凸结构的凸出面所在顶点坐标作进一步矫正.如算法2所示, 首先找到一条表示细节结构深度的边缘线, 并按边缘线所表示的向量将凸出面所在顶点进行平移变换, 这样做是为了保证在当前墙面与Z轴方向垂直的视角下细节结构的凸出面与墙面对齐, 校正细节结构的XY坐标.然后校正凸出面所在顶点的深度值, 根据第4.1节中凸细节结构深度计算方法求得细节结构的深度值depth, 将凸出面顶点平移向量(0, 0, -depth).如图 7(a)所示, 初步计算得到细节结构三维坐标后, 由于顶点V0~V3是细节结构凸出部分, 并不在建筑物墙面上, 故这4个顶点经射影矩阵H变换后得到的XY坐标值并不是真实的坐标值, 而是真实坐标值经向量$\overrightarrow {{V_4}{V_1}} $平移后的结果, 因此, 算法需要对细节结构的凸出部分的顶点进行矫正处理.根据算法2, 首先找到细节结构的凸出部分即顶点V0~V3, 然后找到立方角所在顶点V2, 并找到与之相邻的位于墙面的顶点V5, 得到向量$\overrightarrow {{V_2}{V_5}} $, 将凸出部分的顶点按照向量$\overrightarrow {{V_2}{V_5}}$进行平移操作以矫正其X坐标和Y坐标, 最后利用公式(10)计算凸出部分顶点的Z坐标.在得到凸细节结构的部分面片后, 算法利用细节结构的对称性完善其他面片, 得到如图 7(b)图 7(c)所示的不同视角下的三维重建模型.

Fig. 8 Reconstruction of concave structure 图 8 凹细节结构重建过程

建筑物凹细节结构的三维坐标求解.与凸结构求解不同, 由于用户在描绘凹细节结构时只包含墙面上的一个面和一条表示深度的边缘线, 如图 8(a)所示, 故在初步计算凹细节结构的三维信息后, 算法只需要矫正表示深度的顶点.由于此时凹细节结构所在墙面已旋转到与Z轴方向垂直, 故首先将表示深度的顶点坐标设为与其相邻的顶点一致, 即可保证表示深度的该对顶点位置往Z轴方向对齐.然后根据第4.1节中凹细节结构深度计算方法计算凹结构的深度值depth, 将深度顶点按(0, 0, -depth)平移变换, 得到三维空间中深度顶点的实际坐标.以图 8为例, 在求解凹细节结构的三维坐标过程中, 只需要矫正表示细节结构深度的顶点V4即可.根据用户描绘的深度边缘线V0V4, 先将顶点V4的三维坐标平移到顶点V0的三维坐标位置, 然后再利用公式(13)计算深度顶点V4Z坐标值.最后, 利用该深度顶点通过复制平移以补全该细节结构的其他面片, 得到如图 8(b)图 8(c)所示的不同视角下的三维重建模型.

算法 2. 凸细节结构的三维坐标计算.

输入:二维凸细节结构线画图和墙面三维信息;

输出:凸细节结构的三维坐标信息.

算法过程:

1) 计算当前墙面f的二维灭点VhorizontalVvertical;

2) 判断墙面f的位置:如果Vhorizontal·x < 0则flag_left为真, 否则flag_left为假;

3) 判断图像是否为仰视图:检测位于墙面f上方的一个角θ, 如果θ < 90°, 则flag_up为真, 否则, flag_up为假;

4) 对细节结构的3个平面索引值进行排列:比较3个面的中心点位置, 如果flag_up为真, 则索引值df0df1df2对应面左右下位置, 否则对应左右上位置;

5) 找到细节结构的凸平面fconvex:如果flag_left为真, 则fconvex=df0, 否则fconvex=df1;

6) 遍历面df2s, 找到仅与其他面共享一个顶点的边缘线, 得到平移向量$ \vec n{\rm{ }} $;

7) 将凸平面fconvex的顶点坐标进行平移变换, 其中平移向量为$ \vec n{\rm{ }} $;

8) 根据flag_left为真和为假时两种情况分别计算细节结构的深度值depth;

9) 将凸平面fconvex的所有顶点Z坐标平移depth距离.

5 实验结果及讨论

本文提出的基于重复结构检测的三维建筑物精细模型重建算法已经在2.93 GHz Intel(R) Core(TM) 2 Duo PC机器上, 使用Microsoft Visual Studio 2005开发环境实现, 其中图形的渲染使用了OSG(open scene graph).本文方法涉及的用户交互包括描绘建筑物六面体墙面可见部分的线画图, 以及在模型细节结构重建中描绘每种重复结构的其中一个代表性结构可见部分的线画图, 这些交互操作对用户来说通常非常容易执行.在建筑物重建过程中, 无需用户具备任何专业知识和技能, 只需要根据输入图像进行简单交互, 即可高效地生成对应的三维建筑物模型.

本文方法在重建过程中构建优化函数计算六面体墙面可见部分顶点坐标时, 引进了参数λ1λ2λ3这3个权值以加权边缘线的不同几何约束, 由于本文处理的六面体墙面均为普通的长方体形状, 该类形体具有相邻面两两正交且相邻线段两两正交的特点, 因此表示垂直约束关系的权重λ2比较大.实验中, 这3个权重系数分别取0.09, 0.82, 0.09时重建效果较稳定.在建筑物重复结构检测中, 算法引进了4个阈值参数Th0、Th1、Th2和Th3, 其中, 阈值Th0表示当前墙面黑色像素点个数占整个墙面像素点总数的比值, Th1表示当前列(行)所在黑色像素点个数占整列(行)像素点总数的比值, Th2表示当前列(行)左右(上下)像素点差值大于0的像素点个数占整列(或行)像素点总数的比值, 这3个参数用于检测垂直方向和水平方向边界线, 而Th3表示重复结构特征匹配的误差允许范围.对于一般情况, 即Th0≤0.5时, 阈值Th1等于阈值Th0, 阈值Th2取为0.8·Th0;当阈值Th0 < 0.5即墙面重复结构排列非常紧密且占墙面面积比例较大时, 实验中对每列进行重复结构检测时将Th2直接下调到0.15.算法在进行重复结构匹配时允许的误差范围阈值Th3取为0.3.

建筑物重复结构的检测分类主要可分为对每个墙面区域所有细节结构的位置检测和对所有候选重复结构通过特征匹配进行分类这两个步骤.图 9给出了本文建筑物重复结构检测算法的实验效果, 其中图 9(a)中黄色线框为用户描绘的待测墙面, 同一墙面的不同颜色圆点表示不同类型的重复结构, 而不同墙面的细节结构即使所显示的类型颜色相同也不属于相同类型; 图 9(b)显示了对应二值图像上重复结构的分布情况.图 9中第1行的例子是检测北京饭店建筑物图像的重复结构, 用户描绘4个墙面的线画图, 从左到右分别包含2, 0, 1, 1种类型的重复结构.图 9中第2行的例子是普通的写字楼照片, 图中用户描绘两个墙面的线画图, 从左到右均包含1种类型的重复结构, 在左边墙面中, 由于有部分窗户被完全遮挡, 故算法难以有效识别.而在右侧墙面中, 由于窗户仅被部分遮挡, 故算法能够有效地检测所有窗户.图 9中第3行的例子中建筑物图像包含的重复结构类型较多, 用户描绘两个墙面的线画图, 算法可对每个面上的所有重复结构进行有效检测.从实验效果可以看出, 本文所提出的重复结构检测算法可以克服较少的遮挡情况, 并能快速、有效地检测并识别出建筑物墙面不同类型的重复结构, 从而大大减少了用户的交互量.

Fig. 9 Detection results of architectural repetitions 图 9 建筑物重复结构检测

图 10给出了利用本文重建算法实现的若干实例, 其中, 图 10(a)为输入的建筑物图像, 图 10(b)表示用户重建三维建筑物模型时的所有交互操作, 其中, 黄色线段为用户根据单幅图像的纹理信息描绘的线画图, 不同颜色的小圆点表示系统在读取用户描绘的细节结构线画图后从重复结构检测到的结果中找到类型相同的细节结构的相对位置.由于单幅图像信息量有限, 障碍物会影响重复结构的检测结果, 针对未检测到的重复结构, 需要用户标记它们的相对位置, 并用黄色大圆点表示, 通过平移、复制即可实时地得到被遮挡的细节结构.图 10(c)图 10(d)分别给出了不同视角下的三维建筑物重建模型.其中, 在第1行的例子中, 用户描绘9个面, 包含35条边和34个顶点, 生成的三维模型包含341个面片, 1 340条边和1 332个顶点; 在第2行的例子中, 用户描绘8个面, 标记了6个表示重复结构位置的点, 总共包含25条边和26个顶点, 生成的三维模型包含762个面片, 1 524条边和1 016个顶点.在第3行的例子中, 用户描绘5个面, 3条表示细节结构深度的边以及4个表示相同重复结构位置的点, 交互操作总共包括5个面, 22条边和25个顶点, 生成的三维模型包含336个面片, 672条边和448个顶点.在第4行的例子中, 用户描绘7个面, 2条表示细节结构深度的边以及2个表示相同重复结构位置的点, 交互操作总共包括7个面, 26条边和25个顶点, 生成的三维模型包含60个面片, 120条边和80个顶点.表 1列出了对应于图 10中的例子在建模过程中各阶段所用的时间, 本文算法在用户交互过程中能够实时地显示生成的三维模型, 建筑物细节结构重建算法所花费的时间较少.这些实验结果及数据表明, 本文提出的重复结构自动检测算法具有较高的检测效率, 从而大大减少了用户的交互量, 用户能够通过少量交互就能快速生成具有较好真实感的三维建筑物精细模型.此外, 本文算法所处理的建筑物图像并不需要对它的获取方式进行任何限制, 具有广泛的适用性.同时, 用户在建模的过程中并不需要具备任何专业技能, 算法的实用性较强.

Fig. 10 3D architecture modeling based on repetitive structure detection 图 10 基于重复结构检测的三维建筑物建模

Table 1 Time statistics of 3D architecture modeling 表 1 建筑物建模过程的时间统计

图 11给出了本文提出的重复结构检测方法与Wu等人[18]提出的重复结构检测方法的比较.Wu等人[18]提出的重复结构算法需要先对输入图像进行校正预处理, 然后计算水平和垂直方向上的SIFT特征值, 再通过特征匹配获取重复结构间距和对称轴, 最后通过优化方法进一步得到如图 11(a)所示的检测效果.本文所涉及的重复结构算法首先需要将原图像进行二值化处理, 并通过逐行逐列检测细节结构的边界线, 然后将每个细节结构用四边形包围盒表示并通过它们的长宽特征值进行分类, 最后根据相邻间重复结构的特征值进一步优化分类结果, 如图 11(b)所示.从实验结果可以看出, 建筑物正面墙面有3列重复结构, Wu等人[18]提出的重复结构检测算法只能检测出其中的2列, 而本文所提出的检测算法能够完整地检测出3列重复结构.

Fig. 11 Experimental comparison of detecting repetitive structures 图 11 重复结构检测方法的实验比较

图 12给出了本文提出的基于简单交互的建筑物模型重建算法与Wu等人[19]提出的基于密集重复结构的单视图重建算法的比较.针对输入的单幅建筑物图像, Wu等人[19]在假设相机中心位于图像中心的前提下, 利用重复结构的间距相等特性和对称性, 基于优化方法计算原图像的间隔图, 得到如图 12(b)所示的三维重建效果; 而本文方法主要利用细节结构与建筑物墙体的射影几何特性来计算细节结构的三维信息, 重建生成的三维模型如图 12(c)图 12(d)所示, 从重建效果可以看出, 本文提出的重建算法生成的三维建筑物模型更加精细, 具有更好的真实感效果.图 13给出了本文算法与Zheng等人[25]提出的基于模型库建模方法的效果比较, 针对输入图像(如图 13(a)所示), Zheng等人[25]通过模型匹配从已有库中找到如图 13(b)所示的粗糙模型, 图 13(c)是利用本文方法交互生成的模型.由于Zheng等人[25]所建立的模型库较小, 根据输入图像匹配得到的模型与真实建筑物具有一定的差异, 而本文算法重建的模型更加接近输入图像的真实效果.与具有复杂模型库的数据驱动建模方法相比(如文献[10]), 本文算法的重建效果并不理想, 但在重建过程中, 由于无需进行模型搜索, 故本文算法的效率较高, 在重建时间上具有明显的优势.需要指出的是, 在文献[9, 10]中, 算法可以仅利用建筑物墙面的正面纹理信息, 通过纹理匹配重建出对应的建筑物三维模型, 然而, 由于本文算法是借助细节结构与建筑物墙面的射影几何关系恢复其三维信息, 仅根据输入建筑物的正面图像信息难以准确重建出对应的精细三维模型.

Fig. 12 Experimental comparison of 3D model reconstruction 图 12 三维模型重建方法的实验比较

Fig. 13 本文方法与基于模型库匹配方法[25]的实验比较 图 13 Experimental comparison of 3D model reconstruction between ours and database-based method[25]

6 结语

针对具有显著重复结构特征的单幅城市建筑物输入图像, 本文提出了一种通过简单交互方便、快速地生成建筑物三维模型中精细细节结构的方法.该方法首先根据用户交互描绘的六面体墙面可见部分的线条图, 建立一个基于几何约束关系的能量方程式, 通过优化方法重建建筑物六面体墙面的三维模型; 然后, 根据建筑物图像的边缘线检测两个墙面的所有重复结构, 并对其进行分类; 最后, 根据细节结构与墙面的射影几何关系以及灭点原理, 恢复细节结构的三维几何模型.同时, 根据已检测到的重复结构, 自动地得到其他与之类型相同的重复结构模型, 最终得到精细的三维建筑物模型.实验结果表明, 本文方法在重建建筑物三维模型的过程中需要的用户交互量较少, 操作简单、方便, 无需具备任何专业技能, 生成的三维模型真实感效果较好, 实用性较强.另外, 本文算法所处理的建筑物图像并不需要对它的获取方式进行任何限制, 具有广泛的适用性.

本文方法根据单幅建筑物图像能够快速生成对应的三维建筑物模型, 并且用户交互量较少, 可应用于三维软件构建虚拟的城市建筑场景.然而, 本文方法重建的物体仅局限于具有六面体墙面的建筑物, 对于其他情形, 将考虑添加更多的几何约束条件通过优化来实现非规则建筑物.同时, 对于墙面纹理比较复杂的建筑物图像, 本文所提出的自动检测重复结构算法并不能完全识别, 需要用户进一步手动标记, 未来将进一步考虑对复杂纹理融入超像素分割等方法来改善重复结构检测算法的实用性.

参考文献
[1] Tong G, Qin K. Visibility preprocessing and interactive walkthroughs for architectural CAD. Ruan Jian Xue Bao/Journal of Software, 1996, 7 (9) :521–525(in Chinese with English abstract). [doi:10.13328/j.cnki.jos.1996.09.002] http://www.jos.org.cn/ch/reader/view_abstract.aspx?flag=1&file_no=19960902&journal_id=jos
[2] Musialski P, Wonka P, Aliaga DG, Wimmer M, van Gool L, Purgathofer W. A survey of urban reconstruction. Computer Graphics Forum, 2013, 32 (6) :146–177. [doi:10.1111/cgf.12077]
[3] Ning XJ, Wang YH. 3D reconstruction of architecture appearance:A survey. Journal of Computational Information Systems, 2013, 9 (10) :3837–3848. https://www.researchgate.net/publication/288108855_3D_reconstruction_of_architecture_appearance_A_survey
[4] Pollefeys M, Nistér D, Frahm J-M, Akbarzadeh A, Mordohai P, Clipp B, Engels C, Gallup D, Kim S-J, et al. Detailed real-time urban 3D reconstruction from video. Int'l Journal of Computer Vision, 2008, 78 (2) :143–167. [doi:10.1007/s11263-007-0086-4]
[5] Xiao JX, Fang T, Tan P, Zhao P, Ofek E, Quan L.Image-Based facade modeling.ACM Trans.on Graphics, 2008, 27(5):Article No.161. [doi:10.1145/1409060.1409114]
[6] Xiao JX, Fang T, Zhao P, Lhuillier M, Quan L.Image-Based street-side city modeling.ACM Trans.on Graphics, 2009, 28(5):Article No.114. [doi:10.1145/1618452.1618460]
[7] Cohen A, Zach C, Sinha S, Pollefeys M.Discovering and exploiting 3D symmetries in structure from motion.In:Proc.of the IEEE Conf.on Computer Vision and Pattern Recognition (CVPR).Chicago, 2012.1514-1521. [doi:10.1109/CVPR.2012.6247841]
[8] Ceylan D, Mitra NJ, Zheng Y, Pauly M.Coupled structure-from-motion and 3D symmetry detection for urban facades.ACM Trans.on Graphics, 2014, 33(1):Article No.2. [doi:10.1145/2517348]
[9] Wu F, Yan DM, Dong W, Zhang X, Wonka P.Inverse procedural modeling of facade layouts.ACM Trans.on Graphics, 2014, 33(4):Article No.121. [doi:10.1145/2601097.2601162]
[10] Bao F, Schwarz M, Wonka P.Procedural facade variations from a single layout.ACM Trans.on Graphics, 2013, 32(1):Article No.8. [doi:10.1145/2421636.2421644]
[11] Nan L, Jiang C, Ghanem B, Wonka P. Template assembly for detailed urban reconstruction. Computer Graphics Forum, 2015, 34 (2) :217–228. [doi:10.1111/cgf.12554]
[12] Wu KL, Zhang HX, Li YS, Qian BL.Fe-Wires:An approach of expressive 3D architecture modeling.Ruan Jian Xue Bao/Journal of Software, 2010, 21(Suppl.):75-85(in Chinese with English abstract).
[13] Guillou E, Meneveaux D, Maisel E, Bouatouch K. Using vanishing points for camera calibration and coarse 3D reconstruction from a single image. The Visual Computer, 2000, 16 (7) :396–410. [doi:10.1007/PL00013394]
[14] Oh BM, Chen M, Dorsey J, Durand F.Image-Based modeling and photo editing.In:Proc.of the 28th Annual Conf.on Computer Graphics and Interactive Techniques (ACM SIGGRAPH).Los Angeles, 2001.433-442. [doi:10.1145/383259.383310]
[15] Wang G, Tsui H-T, Hu Z, Wu F. Camera calibration and 3D reconstruction from a single view based on scene constraints. Image and Vision Computing, 2005, 23 (3) :311–323. [doi:10.1016/j.imavis.2004.07.008]
[16] Jiang N, Tan P, Cheong L-F.Symmetric architecture modeling with a single image.ACM Trans.on Graphics, 2009, 28(5):Article No.113.[doi:10.1145/1618452.1618459]
[17] Schindler G, Krishnamurthy P, Lublinerman R, Liu Y, Dellaert F.Detecting and matching repeated patterns for automatic geo-tagging in urban environments.In:Proc.of the IEEE Conf.on Computer Vision and Pattern Recognition (CVPR).Anchorage, AK, 2008.1-7.[doi:10.1109/CVPR.2008.4587461]
[18] Wu C, Frahm J-M, Pollefeys M.Detecting large repetitive structures with salient boundaries.In:Proc.of the European Conf.on Computer Vision (ECCV).Heraklion, 2010.142-155.[doi:10.1007/978-3-642-15552-9_11]
[19] Wu C, Frahm J-M, Pollefeys M. Repetition-Based dense single-view reconstruction. Journal of Computer Research and Development, 2010, 47 (3) :549–560. http://www.academia.edu/2737812/Repetition-based_dense_single-view_reconstruction
[20] Shu B, Qiu X, Wang Z. Survey of shape from image. Journal of Computer Research and Development, 2010, 47 (3) :549–560(in Chinese with English abstract). http://www.cnki.com.cn/Article/CJFDTOTAL-JFYZ201003025.htm
[21] Lee YT, Fang F. 3D reconstruction of polyhedral objects from single parallel projections using cubic corner. Computer-Aided Desigh, 2011, 43 (8) :1025–1034. [doi:10.1016/j.cad.2011.03.008]
[22] Hartley RI, Zisserman A. Multiple View Geometry in Computer Vision. Multiple View Geometry in Computer Vision. 2003 : 151 -236.
[23] Yao J, Ren Q, Sun H. Geometry. Beijing: Publishing House of Electronics Industry, 2010 (in Chinese with English abstract).
[24] Yang L, Liu J, Tang X. Complex 3D general object reconstruction from line drawings. In: Proc. of the IEEE Int’l Conf. on Computer Vision (ICCV). Australia, 2013. 1433−1440. [doi: 10.1109/ICCV.2013.181]
[25] Zheng X, Zhang X, Guo P. Building modeling from a single image applied in urban reconstruction. In: Proc. of the 10th Int’l Conf. on Virtual Reality Continuum and Its Applications in Industry. Hong Kong, 2011. 225−234.[doi: 10.1145/2087756.2087789]
[1] 童格亮, 秦开怀. 建筑CAD及其实时漫游技术. 软件学报, 1996,7 (9) :521–525. [doi:10.13328/j.cnki.jos.1996.09.002] http://www.jos.org.cn/ch/reader/view_abstract.aspx?flag=1&file_no=19960902&journal_id=jos
[12] 吴康乐, 张宏鑫, 李嫄姝, 钱博磊.基于特征线素的三维建筑表意性建模.软件学报, 2010, 21(增刊):75-85.
[20] 束搏, 邱显杰, 王兆其. 基于图像的几何建模技术综述. 计算机研究与发展, 2010,47 (3) :549–560. http://www.cnki.com.cn/Article/CJFDTOTAL-JFYZ201003025.htm
[23] 姚金江, 任庆军, 孙红春. 几何学. 北京: 电子工业出版社, 2010 .