一种墙体平面轮廓的识别方法

文档序号:6372173阅读:325来源:国知局
专利名称:一种墙体平面轮廓的识别方法
技术领域
本发明涉及模式识别和CAD技术领域,尤其涉及一种墙体平面轮廓的识别方法。
背景技术
国内外科研机构对于建筑图理解与重建的研究是从90年代初期开始的,它属于技术文档分析领域的一个子课题。同类子课题还包括机械图识别与三视图重建,电路图识别等。相比之下,针对建筑图的研究起步较晚,尚存在不少亟待解决的问题。UC Berkeley的WALKTHRU项目是引入矢量建筑平面图内容理解和三维重建的首个大型项目。为了解决由CAD建筑平面图重建三维模型耗时太长的问题,Lewis等人[Lewis1998]开发出一个原型系统 BMG (Building Model Generator)。该系统以 AutoCAD DXF 格式的建筑平面图为输入,根据用户设定自动输出图纸内容中的门、窗、墙体、房间和走廊信息,并能自动生成建筑物的三维场景模型。BMG以房间编号为切入点,将包围每个房间号的 闭合多边形识别为这个房间的地板轮廓,然后通过地板轮廓之间的开口(Porter)进行房间的连接,相连两个房间轮廓的平行相对的部分就是这个包围这个房间的墙体轮廓。Lewis等人使用该系统成功重建了 UC Berkeley的Soda礼堂三维模型并应用于火灾预演模拟系统CFAST中。然而,BMG的不足也是显而易见的,主要体现在输入平面图中的墙体、门、门侧柱、窗、窗侧柱以及房间编号都必须存储在不同的图层中,且每个图层的名称都是预先定义好的。如果给定平面图不满足这些要求,则需要人工修改满足约束后才能使用BMG。Park等人[Park 2004]提出一种基于尺寸标注延长线的主墙体平面轮廓识别方法。该方法首先识别给定平面图中的尺寸标注线,然后根据尺寸标注线或其延长线必然经过墙体轮廓的假设,计算出在一定距离范围内与尺寸标注线垂直的线段作为墙体轮廓线,最后根据墙体轮廓为闭合图形的规则计算出所有与之前墙体轮廓线相连的所有线段,得到的闭合轮廓则为主墙体的平面轮廓。Park等人的方法简单有效,不过文中提到仅能识别全局水平或垂直的墙体轮廓,而且这个方法要求组成墙体轮廓的线段彼此相连闭合。这些约束导致该方法的稳定性较差,图纸数据的常见噪声即会影响方法的准确性。路通等人[路通2005] [Lu 2005b]对矢量格式建筑图纸的内容理解问题进行深入研究,提出基于轴网的层次式自生长识别模型(Self-Incremental Axis-Net-basedHierarchical Recognition),简称SINEHIR模型。该模型以轴线符为识别起点,首先识别包围轴线交点的闭合轮廓为柱平面轮廓,记为种子节点。然后列举出种子节点与墙体轮廓相连的各种类型,计算满足这些连接类型的平行线对,记为种子段。最后根据论文列举的墙体轮廓彼此相连的类型,计算与种子段相连的平行线对,记为扩展段。所有识别出的种子段和扩展段轮廓即为墙体平面轮廓。这种方法是本文作者认为目前已发表的最好的墙体平面轮廓识别方法,具有较高的准确性。不过其稳定性有待提高,例如图纸缺少轴线信息或存在较多重叠线段时可能降低该方法的识别准确率。这种方法具有较高的墙体轮廓识别准确性,但仍然存在两个缺点第一,当处理的建筑平面图中缺少轴线符信息时,该方法将无法识别种子节点,从而无法完成墙体轮廓的识别。这样就限制了它无法使用在实际应用中常见的户型图,以及缺失了部分轴线信息的建筑平面图,导致该方法的适用范围缩小。第二,当处理的建筑平面图中墙体轮廓线段存在大量的重叠和部分重叠时,该方法的识别准确率将明显下降。这是由于该方法直接通过墙体轮廓线段的连接关系进行识另IJ,而线段的重叠和部分重叠会影响这种连接关系。在实际应用中,由于绘图者的人为因素或者图纸格式转换等原因,图纸中经常会生成重叠和部分重叠的线段。对于这类图纸,该方法的稳定性可能会降低,识别准确率可能显著下降
发明内容
本发明的目的在于提出一种墙体平面轮廓的识别方法,用以在缺少轴线信息、且允许存在大量线段重叠和部分重叠的情况下,准确识别建筑平面图中的墙体平面轮廓。为达此目的,本发明采用以下技术方案一种墙体平面轮廓的识别方法,该方法包括读取给定建筑平面图中的所有线段数据并将这些线段存储在一个线段数组Vl中;遍历Vl中的所有线段,将满足备选轮廓边条件的两条不相同的线段标记标识,设置为备选轮廓边,并将这两条线段作为一个备选轮廓存储在备选轮廓数组Vcc中;计算Vcc中的每个备选轮廓的轮廓中线,将这些中线存储于数组Vml中;遍历Vml,对其中任两条不同中线mli和mlj (i古j)进行优化;根据优化后的中线及对应的宽度还原墙体平面轮廓。所述Vl中的每条线段存储两个端点的坐标和一个类型标识,初始时所有线段的标识均为“普通线段”;若图纸中存储了多线段类型的数据,则根据每条多线段存储的顶点将其分割为多条普通线段并存储到Vl中;若图纸中存储了块/插入类型的数据,则将每个块/插入中的线段和多线段数据按照前面的方法处理后存储到Vi中。所述备选轮廓边条件包括但不限于两条线段中至少有一条线段的标识为“普通线段”;两条线段彼此平行;两条线段之间的距离在给定范围内;两条线段满足互投影比例要求;两条线段中间没有与其平行的其他的线段。所述两条线段满足互投影比例要求,根据如下步骤判断Al,分别记线段11和线段12的起点和终点为Si、el、s2和e2 ;计算经过si且与12垂直的直线与线段12的交点,如果这个交点在线段12上,则记该交点为sl_12 ;并计算el_12,s2_ll 和 e2_12 ;A2,如果得到 sl_12 和 el_12,则令 prol = sl_12, pro2 = el_12,执行步骤 A8 ;A3,如果得到 sl_12 和 s2_ll,则令 prol = sl_12, pro2 = s2_ll,执行步骤 A8 ;A4,如果得到 sl_12 和 e2_ll,则令 prol = sl_12, pro2 = e2_ll,执行步骤 A8 ;A5,如果得至Ij s2_ll 和 e2_ll,则令 prol = s2_ll,pro2 = e2_ll,执行步骤 A8 ;A6,如果得至Ij s2_ll 和 el_12,则令 prol = s2_ll,pro2 = el_12,执行步骤 A8 ;A7,如果得到 e2_ll 和 el_12,则令 prol = e2_ll, pro2 = el_12,执行步骤 A8 ;A8,计算prol和pro2的距离d,如果d与11和12中较短的线段长度的比值大于1/3,则认为11和12满足互投影比例要求,返回成功;否则,返回失败。
所述计算Vcc中的每个备选轮廓的轮廓中线,将这些中线存储于数组Vml中,包括重新调整左右两条平行轮廓边线段的起点和终点;如果终点的X坐标值小于起点的X坐标值,则交换起点和终点;如果起点和终点的X坐标值相等,判断如果终点的y坐标值小于起点的I坐标值,则交换起点和终点;计算左侧轮廓边起点和右侧轮廓边起点的中点,记为ms ;同理,计算左右两侧终点的中线,记为me ;连接ms和me得到的线段即为轮廓对应的中线ml,将这些中线存储于数组Vml中。所述遍历Vml,对其中任两条不同中线mli和mlj (i幸j)进行优化,包括
如果mli和mlj完全重叠,则从Vcc中删除对应的轮廓,然后从Vml中删除mlj ;如果mli和mlj部分重叠,则修改mlj在重合一端的顶点坐标为mli在重合一端的顶点坐标;如果mli和mlj相交,且mli或mlj存在与交点距离小于阈值th的顶点,则修改所述顶点的坐标为交点的坐标;如果mli和mljj不相交,但mli和mlj分别存在一个顶点满足这两个顶点的距离小于阈值th,则修改mlj对应的顶点坐标为mli对应顶点的坐标;如果mli和mlj不相交,但mli存在一个顶点到ml j的距离小于阈值th,则修改mli对应的顶点坐标为mli和mlj延长线交点的坐标;同理,对mlj的顶点做类似的计算。所述根据优化后的中线及对应的宽度还原墙体平面轮廓,包括遍历Vml,对每一条中线mli进行如下计算BI,计算与mli相连的其他中线,将这些相连的中线存储在Vcml中。如果Vcml为空,则执行步骤B2,否则执行步骤B3 ;B2,计算mli的起点si沿着与mli垂直的方向分别向两侧偏移wi/2后的顶点,得到的这两个顶点分别是Isi和rsi ;其中wi是mli对应的两条平行轮廓边之间的距离;对mli的终点ei做类似的计算得到Iei和rei ;依次连接si、lsi、lei、ei、rei和rsi得到的矩形即为mli对应的墙体平面轮廓ci,存储ci到数组Vc中;B3,将mli添加到Vcml中后对Vcml重新排序,按照Vcml中每条中线与X轴正向的夹角从小到大排序;B4,遍历Vcml,对每一条相连的中线cmli进行中线连接关系与轮廓更新顶点的对应关系计算,还原墙体平面轮廓。所述对每一条相连的中线cmli进行中线连接关系与轮廓更新顶点的对应关系计算,包括B41,如果i为数组最后一个元素的下标,则j = 0 ;否则j = i+1 ;如果cmli和cmlj平行,则执行步骤B42,否则执行步骤B43 ;B42,通过如步骤B2的计算得到矩形对应的顶点,然后用这些顶点更新表I中连接关系对应的顶点;B43,根据中线连接关系与轮廓更新顶点的对应关系找到连接关系对应的两条内侧边,计算两条内侧边的交点,再更新中线连接关系与轮廓更新顶点的对应关系中连接关系对应的顶点。
所述中线连接关系与轮廓更新顶点的对应关系包括中线连接关系si连接sj, si连接ej, ei连接sj, ei连接ej ;轮廓更新顶点lsi和 rsj, Isi 和 lej, rei 和 rsj, rei 和 Iej ;轮廓内侧边Iefti和 right j, Iefti 和 left j, right i 和 right j,right i 和 left j。
·
所述判断两条线段是否平行,包括判断两条线段之间的锐角夹角是否小于5度或预先设定的阈值。本发明的技术方案,通过轮廓中线的连接关系,而非直接使用轮廓边缘线段的连接关系进行墙体平面轮廓的识别,通过对轮廓中线的连接优化去除图纸中线段重合和部分重合带来的干扰,通过优化后的中线及距离恢复墙体的轮廓边缘,而非直接使用图纸中的轮廓边缘线段。采用了本发明的技术方案,在缺少轴线信息、且允许存在大量线段重叠和部分重叠的情况下,可以准确识别建筑平面图中的墙体平面轮廓。


图I是本发明具体实施方式
中墙体平面轮廓的识别方法原理流程图。
具体实施例方式下面结合附图并通过具体实施方式
来进一步说明本发明的技术方案。本发明技术方案中,输入数据是矢量格式的建筑平面图,例如AutoCADDWG/DXF格式的图纸文件;输出是一组墙体平面轮廓,每个轮廓为闭合的一组线段。如图I所示,为本发明实施例提供的墙体平面轮廓的识别方法原理流程图,其中,步骤10,读取给定建筑平面图中的所有线段数据并将这些线段存储在一个线段数组Vl中。Vl中的的每条线段存储两个端点的坐标和一个类型标识,初始时所有线段的标识均为“普通线段”。如果图纸中存储了多线段类型(POLYLINE)的数据,则根据每条多线段存储的顶点将其分割为多条普通线段并存储到Vl中。如果图纸中存储了块/插入类型(BLOCK/INSERT)的数据,则将每个块/插入中的线段和多线段数据按照前面的方法处理后存储到Vl中。步骤20,遍历Vl中的所有线段,将满足备选轮廓边条件的两条不相同的线段标记标识,设置为“备选轮廓边”,并将这两条线段作为一个备选轮廓存储在备选轮廓数组Vcc中。备选轮廓边条件包括但不限于两条线段中至少有一条线段的标识为“普通线段”;两条线段彼此平行;两条线段之间的距离在给定范围内;两条线段满足互投影比例要求;两条线段中间没有与其平行的其他的线段。两条线段满足互投影比例要求,根据如下步骤判断Al,分别记线段11和线段12的起点和终点为Si、el、s2和e2 ;计算经过si且与12垂直的直线与线段12的交点,如果这个交点在线段12上,则记该交点为sl_12 ;并计算el_12,s2_ll 和 e2_12 ;A2,如果得至Ij sl_12 和 el_12,则令 prol = sl_12, pro2 = el_12,执行步骤 A8 ;A3,如果得至Ij sl_12 和 s2_ll,则令 prol = sl_12, pro2 = s2_ll,执行步骤 A8 ;
A4,如果得到 sl_12 和 e2_ll,则令 prol = sl_12, pro2 = e2_ll,执行步骤 A8 ;A5,如果得至Ij s2_ll 和 e2_ll,则令 prol = s2_ll,pro2 = e2_ll,执行步骤 A8 ;A6,如果得至Ij s2_ll 和 el_12,则令 prol = s2_ll,pro2 = el_12,执行步骤 A8 ;A7,如果得至Ij e2_ll 和 el_12,则令 prol = e2_ll,pro2 = el_12,执行步骤 A8 ;A8,计算prol和pro2的距离d,如果d与11和12中较短的线段长度的比值大于1/3,则认为11和12满足互投影比例要求,返回成功;否则,返回失败。步骤30,计算Vcc中的每个备选轮廓的轮廓中线,将这些中线存储于数组Vml中。重新调整左右两条平行轮廓边线段的起点和终点;如果终点的X坐标值小于起点的X坐标值,则交换起点和终点;如果起点和终点的X坐标值相等,判断如果终点的y坐标 值小于起点的I坐标值,则交换起点和终点;计算左侧轮廓边起点和右侧轮廓边起点的中点,记为ms ;同理,计算左右两侧终点的中线,记为me ;连接ms和me得到的线段即为轮廓对应的中线ml,将这些中线存储于数组Vml中。步骤40,遍历Vml,对其中任两条不同中线mli和mlj (i幸j)进行优化。如果mli和mlj完全重叠,贝U从Vcc中删除对应的轮廓,然后从Vml中删除ml j ;如果mli和mlj部分重叠,则修改mlj在重合一端的顶点坐标为mli在重合一端的顶点坐标;如果mli和mlj相交,且mli或mlj存在与交点距离小于阈值th的顶点,则修改所述顶点的坐标为交点的坐标;如果mli和mlj不相交,但mli和mlj分别存在一个顶点满足这两个顶点的距离小于阈值th,则修改mlj对应的顶点坐标为mli对应顶点的坐标;如果mli和mlj不相交,但mli存在一个顶点到ml j的距离小于阈值th,则修改mli对应的顶点坐标为mli和mlj延长线交点的坐标;同理,对mlj的顶点做类似的计算。步骤50,根据优化后的中线及对应的宽度还原墙体平面轮廓。遍历Vml,对每一条中线mli进行如下计算BI,计算与mli相连的其他中线,将这些相连的中线存储在Vcml中。如果Vcml为空,则执行步骤B2,否则执行步骤B3 ;B2,计算mli的起点si沿着与mli垂直的方向分别向两侧偏移wi/2后的顶点,得到的这两个顶点分别是Isi和rsi ;其中wi是mli对应的两条平行轮廓边之间的距离;对mli的终点ei做类似的计算得到Iei和rei ;依次连接si、lsi、lei、ei、rei和rsi得到的矩形即为mli对应的墙体平面轮廓ci,存储ci到数组Vc中;B3,将mli添加到Vcml中后对Vcml重新排序,按照Vcml中每条中线与X轴正向的夹角从小到大排序;B4,遍历Vcml,对每一条相连的中线cmli进行中线连接关系与轮廓更新顶点的对应关系计算,还原墙体平面轮廓。特别的,对每一条相连的中线cmli进行中线连接关系与轮廓更新顶点的对应关系计算,包括B41,如果i为数组最后一个元素的下标,则j = 0 ;否则j = i+1 ;如果cmli和cmli平行,则执行步骤B42,否则执行步骤B43 ;
B42,通过如步骤B2的计算得到矩形对应的顶点,然后用这些顶点更新表I中连接关系对应的顶点;B43,根据中线连接关系与轮廓更新顶点的对应关系找到连接关系对应的两条内侧边,计算两条内侧边的交点,再用改交点的方法更新中线连接关系与轮廓更新顶点的对应关系中连接关系对应的顶点。中线连接关系与轮廓更新顶点的对应关系包括中线连接关系si连接sj, si连接ej, ei连接sj, ei连接ej ;轮廓更新顶点lsi和 rsj, Isi 和 lej, rei 和 rsj, rei 和 Iej ;轮廓内侧边Iefti和 right j, Iefti 和 left j, right i 和 right j,right i 和 left j。具体参见表一。表一
权利要求
1.一种墙体平面轮廓的识别方法,其特征在于,该方法包括 读取给定建筑平面图中的所有线段数据并将这些线段存储在一个线段数组Vl中;遍历Vi中的所有线段,将满足备选轮廓边条件的两条不相同的线段标记标识,设置为备选轮廓边,并将这两条线段作为一个备选轮廓存储在备选轮廓数组Vcc中; 计算Vcc中的每个备选轮廓的轮廓中线,将这些中线存储于数组Vml中; 遍历Vml,对其中任两条不同中线mli和mlj (i ^ j)进行优化; 根据优化后的中线及对应的宽度还原墙体平面轮廓。
2.如权利要求I所述的方法,其特征在于,所述Vl中的每条线段存储两个端点的坐标和一个类型标识,初始时所有线段的标识均为“普通线段”;若图纸中存储了多线段类型的数据,则根据每条多线段存储的顶点将其分割为多条普通线段并存储到Vl中;若图纸中存储了块/插入类型的数据,则将每个块/插入中的线段和多线段数据按照前面的方法处理后存储到Vl中。
3.如权利要求I所述的方法,其特征在于,所述备选轮廓边条件包括但不限于两条线段中至少有一条线段的标识为“普通线段”;两条线段彼此平行;两条线段之间的距离在给定范围内;两条线段满足互投影比例要求;两条线段中间没有与其平行的其他的线段。
4.如权利要求3所述的方法,其特征在于,所述两条线段满足互投影比例要求,根据如下步骤判断 Al,分别记线段11和线段12的起点和终点为sl、el、s2和e2 ;计算经过si且与12垂直的直线与线段12的交点,如果这个交点在线段12上,则记该交点为sl_12 ;并计算el_12,s2_ll 和 e2_12 ; A2,如果得到 sl_12 和 el_12,则令 pro I = sl_12, pro2 = el_12,执行步骤 A8 ; A3,如果得到 sl_12 和 s2_ll,则令 prol = sl_12, pro2 = s2_ll,执行步骤 A8 ; A4,如果得到 sl_12 和 e2_ll,则令 prol = sl_12, pro2 = e2_ll,执行步骤 A8 ; A5,如果得到 s2_ll 和 e2_ll,则令 prol = s2_ll, pro2 = e2_ll,执行步骤 A8 ; A6,如果得到 s2_ll 和 el_12,则令 prol = s2_ll, pro2 = el_12,执行步骤 A8 ; A7,如果得到 e2_ll 和 el_12,则令 prol = e2_ll, pro2 = el_12,执行步骤 A8 ; A8,计算prol和pro2的距离d,如果d与11和12中较短的线段长度的比值大于1/3,贝U认为11和12满足互投影比例要求,返回成功;否则,返回失败。
5.如权利要求I所述的方法,其特征在于,所述计算Vcc中的每个备选轮廓的轮廓中线,将这些中线存储于数组Vml中,包括 重新调整左右两条平行轮廓边线段的起点和终点;如果终点的X坐标值小于起点的X坐标值,则交换起点和终点;如果起点和终点的X坐标值相等,判断如果终点的y坐标值小于起点的I坐标值,则交换起点和终点; 计算左侧轮廓边起点和右侧轮廓边起点的中点,记为ms ;同理,计算左右两侧终点的中线,记为me ; 连接ms和me得到的线段即为轮廓对应的中线ml,将这些中线存储于数组Vml中。
6.如权利要求I所述的方法,其特征在于,所述遍历Vml,对其中任两条不同中线mli和mlj (i ^ j)进行优化,包括 如果mli和mlj完全重叠,贝U从Vcc中删除对应的轮廓,然后从Vml中删除ml j ;如果mli和mlj部分重叠,则修改mlj在重合一端的顶点坐标为mli在重合一端的顶点坐标; 如果mli和mlj相交,且mli或mlj存在与交点距离小于阈值th的顶点,则修改所 述顶点的坐标为交点的坐标; 如果mli和mlj不相交,但mli和mlj分别存在一个顶点满足这两个顶点的距离小于阈值th,则修改mlj对应的顶点坐标为mli对应顶点的坐标; 如果mli和mlj不相交,但mli存在一个顶点到mlj的距离小于阈值th,则修改mli对应的顶点坐标为mli和mlj延长线交点的坐标;同理,对mlj的顶点做类似的计算。
7.如权利要求I所述的方法,其特征在于,所述根据优化后的中线及对应的宽度还原墙体平面轮廓,包括 遍历Vml,对每一条中线mli进行如下计算 BI,计算与mli相连的其他中线,将这些相连的中线存储在Vcml中。如果Vcml为空,则执行步骤B2,否则执行步骤B3 ; B2,计算mli的起点si沿着与mli垂直的方向分别向两侧偏移wi/2后的顶点,得到的这两个顶点分别是Isi和rsi ;其中wi是mli对应的两条平行轮廓边之间的距离;对mli的终点ei做类似的计算得到Iei和rei ;依次连接si、Isi、lei、ei、rei和rsi得到的矩形即为mli对应的墙体平面轮廓ci,存储ci到数组Vc中; B3,将mli添加到Vcml中后对Vcml重新排序,按照Vcml中每条中线与X轴正向的夹角从小到大排序; B4,遍历Vcml,对每一条相连的中线cmli进行中线连接关系与轮廓更新顶点的对应关系计算,还原墙体平面轮廓。
8.如权利要求7所述的方法,其特征在于,所述对每一条相连的中线cmli进行中线连接关系与轮廓更新顶点的对应关系计算,包括 B41,如果i为数组最后一个元素的下标,则j = O ;否则j = i+1 ;如果cmli和cmlj平行,则执行步骤B42,否则执行步骤B43 ; B42,通过如步骤B2的计算得到矩形对应的顶点,然后用这些顶点更新表I中连接关系对应的顶点; B43,根据中线连接关系与轮廓更新顶点的对应关系找到连接关系对应的两条内侧边,计算两条内侧边的交点,再更新中线连接关系与轮廓更新顶点的对应关系中连接关系对应的顶点。
9.如权利要求8所述的方法,其特征在于,所述中线连接关系与轮廓更新顶点的对应关系包括 中线连接关系si连接sj, si连接ej, ei连接sj, ei连接ej ; 轮廓更新顶点lsi和rsj, Isi和lej, rei和rsj, rei和Iej ;轮廓内侧边lefti 和 right j, Iefti 和 left j, righti 和 right j, righti 和 left j
10.如权利要求3、5、7、8或9任一所述的方法,其特征在于,所述判断两条线段是否平行,包括 判断两条线段之间的锐角夹角是否小于5度或预先设定的阈值。
全文摘要
本发明公开了墙体平面轮廓的识别方法,包括读取给定建筑平面图中的所有线段数据并将这些线段存储在一个线段数组V1中;遍历V1中的所有线段,将满足备选轮廓边条件的两条不相同的线段标记标识,设置为备选轮廓边,并将这两条线段作为一个备选轮廓存储在备选轮廓数组Vcc中;计算Vcc中的每个备选轮廓的轮廓中线,将这些中线存储于数组Vml中;遍历Vml,对其中任两条不同中线mli和mlj(i≠j)进行优化;根据优化后的中线及对应的宽度还原墙体平面轮廓。采用了本发明的技术方案,在缺少轴线信息、且允许存在大量线段重叠和部分重叠的情况下,可以准确识别建筑平面图中的墙体平面轮廓。
文档编号G06K9/62GK102750553SQ20121021562
公开日2012年10月24日 申请日期2012年6月28日 优先权日2012年6月28日
发明者李挺, 李淳芃, 王兆其 申请人:北京中科广视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1