一种户型图中门识别方法和系统与流程

文档序号:18414803发布日期:2019-08-13 19:14阅读:809来源:国知局
一种户型图中门识别方法和系统与流程

本发明涉及图形学和图像学技术,特别涉及利用图形学和图像学技术设计算法进行户型图单开门和双开门的检测。



背景技术:

随着房地产以及装修行业的发展,积累了大量的户型图,而仅仅有这些户型图,已不能满足公司和用户的需求。户型图识别技术可以把户型图中各个特定构件的位置识别出来,生成结构化的数据,从而可以在装修、设计、三维建模和vr体验上得到广泛应用。

目前,户型图识别严重依赖于人力,要识别户型图上单开门和双开门,只能依靠人力进行标注,而人工对像素级别的标注很难做到准确。而简单的图形学和图像学算法,比如霍夫变换并不能用来识别户型图的单开门和双开门。因此,需要一种能够自动、高效的识别户型图单开门和双开门的方法。



技术实现要素:

目前的户型图单开门和双开门识别严重依赖于人力,简单的图形学和图像学算法用来识别户型图的单开门和双开门效果很差。针对上述问题,本发明提供一种基于弧线检测的户型图单开门和双开门识别技术,具体来说,基于户型图中墙的识别结果确定圆心,首先对于图片计算梯度图增强弧线,然后计算由圆心和半径确定的弧线与梯度图上黑色像素点的距离,依据此距离衡量梯度图中的线与一段圆弧的近似程度,若距离小于阈值,则认为梯度图上有一条弧线,最后依据识别出的弧线和墙体,识别出户型图的单开门和双开门。

一种户型图中门识别方法,包括弧线检测步骤和门识别步骤;

所述的弧线检测步骤,包括:

s1,对户型图进行二值化处理;

s2,识别出户型图中的标尺和数字,计算出像素与户型大小的比例关系;

s3,识别出户型图中的墙体;

s4,识别出墙体上的拐点,将其作为圆心;

s5,获得门旋转过程当中的半径;

s6,以所述的圆心和半径画圆,判断户型图当中是否有与圆的距离在设定阈值内的弧线;

所述的门识别步骤,包括:

s7,如果s6存在所述的弧线,将这条弧线上与墙平行的半径作为门。

在一个实施方式中,所述的弧线检测步骤中还包括,s8,对户型图进行梯度化处理,得到梯度图,并对梯度图进行二值化处理,得到二值化后的梯度图,用于步骤s6的判断过程中。

在一个实施方式中,所述的门旋转过程当中的半径是通过门的大小与像素与户型大小的比例关系计算得到的。

在一个实施方式中,还包括,s9,如果门的两端都与墙相连,则判定为单开门;如果门的一端与墙相连,另一端与另一个门相连,则判定为双开门。

一种户型图中门识别系统,包括弧线检测模块和门识别模块;

弧线检测模块中包括:

二值化处理模块,用于对户型图进行二值化处理;

标尺和数字识别模块,用于识别出户型图中的标尺和数字,计算出像素与户型大小的比例关系;

墙体识别模块,用于识别出户型图中的墙体;

圆心识别模块,用于识别出墙体上的拐点,将其作为圆心;

半径判定模块,用于获得门旋转过程当中的半径;

弧线判定模块,用于以所述的圆心和半径画圆,判断户型图当中是否有与圆的距离在设定阈值内的弧线;

门识别模块用于判定如果s6存在所述的弧线,将这条弧线上与墙平行的半径作为门。

在一个实施方式中,还包括:梯度化处理处理模块,用于对户型图进行梯度化处理,得到梯度图,并对梯度图进行二值化处理,得到二值化后的梯度图,用于弧线判定模块的判断过程中。

在一个实施方式中,半径判定模块通过门的大小与像素与户型大小的比例关系计算门旋转过程当中的半径。

在一个实施方式中,门识别模块用于判定:如果门的两端都与墙相连,则判定为单开门;如果门的一端与墙相连,另一端与另一个门相连,则判定为双开门。

一种记载有可以运行上述的户型图中门识别方法的程序的计算机可读介质。

有益效果

本发明的技术构思是:在户型图当中墙体的形状较为规则,在识别的过程当中,识别准确率较高,因此,可以采用墙作为识别单开门和双开门的基础,并通过门的半径大小,来对图形中的弧线进行检测,并以此来判定出是单开门或者是双开门。通过墙体的识别结果,利用墙的识别结果确定弧线的圆心位置,从而大大减少检测弧线的搜索范围,节省了大量计算时间。

与现有技术相比,本发明所提供的一种基于弧线检测的户型图单开门和双开门识别技术,实施过程中可以自动、高效、准确地识别户型图中的单开门和双开门,节省人力成本。

附图说明

图1为本发明实施例的弧线检测步骤工作流程图;

图2为本发明实施例的单开门和双开门识别步骤工作流程图;

图3为本发明实施例的户型图原始图片;

图4为本发明实施例的二值化后的梯度图;

图5为本发明实施例的霍夫变换检测弧线的效果图;

图6为本发明实施例的本发明检测弧线的效果图,红色标示出的为弧线的半径;

从图5中可以看出,霍夫变换识别弧线的效果很差,不能用来识别户型图的单开门和双开门,而利用本发明中的算法,可以准确地检测出弧线。

图7为本发明实施例的本发明户型图单开门和双开门识别的效果图。

从图7中可以看出,本发明可以根据弧线检测的结果准确识别出户型图中的单开门和双开门。

图8用于说明在墙上寻找圆心的过程;

图9用于说明寻找弧线的像素点的过程;

图10用于说明寻找与半径相同的弧线的过程;

图11用于说明对单开门的确认步骤;

图12用于说明对双开门的确认步骤。

具体实施方式

为了更清楚地说明本申请的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。应当理解,给出这些示例性实施例仅是为了使相关领域的技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。

如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。

虽然本申请对根据本申请的实施例的系统中的某些系统、模块或单元做出了各种引用,然而,任何数量的不同模块可以被使用并运行在客户端和/或服务器上。所述模块仅是说明性的,并且所述系统和方法的不同方面可以使用不同模块。

同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。

发明提供一种基于弧线检测的户型图单开门和双开门识别技术,具体来说,基于户型图中墙的识别结果确定圆心,首先对于图片计算梯度图增强弧线,然后计算由圆心和半径确定的弧线与梯度图上黑色像素点的距离,依据此距离衡量梯度图中的线与一段圆弧的近似程度,若距离小于阈值,则认为梯度图上有一条弧线,最后依据识别出的弧线和墙体,识别出户型图的单开门和双开门。

具体来说,上面的识别方法如下:

如图1所示,包括弧线检测步骤和单开门/双开门识别步骤;

如图2所示,所述的弧线检测步骤,包括:

步骤100,原始图片二值化;图3为本发明实施例的户型图原始图片;所述图片二值化的方法不止一种,而是针对每个任务设计二值化的方法,包括直接通过阈值的二值化以及通过直方图统计后二值化。

步骤101,识别标尺和数字;本步骤中,识别标尺和数字的目的是为了获得图中的像素值与实际室内大小之间的转换比例,获得这一信息之后,通过标尺和数字可以知道图片中像素和实际距离的转换,从而确定门的大小对应图片中的几个像素,与后面的识别过程形成关联。

步骤102,识别承重墙和非承重墙;

步骤104,计算原始图片的梯度图,在本步骤中计算梯度图是为了让图像区域更清楚,可以确认出图片中哪些地方为黑色、哪些地方为白色;

步骤105,梯度图二值化;这里的步骤的目的是对梯度化后的图像进行二值化处理,进而进行开始后续的识别工作;对于图片噪声较多,不够清晰的情形,计算梯度图之后,可以让弧线更明显,然后再识别弧线。图4为本发明实施例的二值化后的梯度图;通过梯度图可以看出,原始图片中比较模糊的弧线,在梯度图中得到了增强。利用梯度图识别弧线可以显著提升准确率。

步骤106,通过墙的识别结果确定弧线的圆心,如图8所示,在门与墙相交的位置,是会存在着墙的拐点,并且门的旋转面是以某个拐点作为圆心的,因此,在确定了墙的位置之后,通过遍历墙上出现的拐点来寻找圆心;在图8中可以看出,由于门旋转的地方是和墙相连的,对于图上的这段墙,根据墙的拐点(图上多个实心拐点)作为圆心来找弧线;接下来,需要确定门的大小,门的大小是根据实际确定的,比如门是0.8到2米,根据标尺和数字得到一个像素是0.1米,那么门的大小在图片上就是8到20个像素;根据门的大小确定弧线半径的范围;

步骤107,对于一个圆心和半径所确定的弧线,可以判定在这个弧线上是否存在着图中的像素点,以此来判定是否存在着符合要求的门;如图9所示,在图中的门的附近存在显示出来的黑色像素点;计算此弧线与梯度图上的黑色像素点的距离,若小于阈值,则检测出梯度图上一条弧线。对于一个圆心,半径遍历一个范围的所有值,利用圆心和半径确定的弧线坐标,计算其与梯度图上黑色像素点的坐标的距离,若距离小于阈值,则检测出梯度图上一条弧线。可以设定要检测的弧线的弧度大小,因此可以检测出的弧线不限于1/4圆弧。

如图10,用于说明如何识别弧线,当确定圆心和半径的范围后,对于一个圆心和半径,计算一个标准的圆,比如图11的a圆和b圆,可以看出,对于a圆,梯度图上有黑色的点与它很接近,会计算圆弧到它最近的黑色点的距离,如果这个距离小于某个阈值,就可以判定为弧线。如果圆上的一段圆弧都有与它很近的黑色点,比如a圆的左上的90度圆弧,就可以认为这个地方有一段弧线,而b圆则没有找到弧线。

步骤200,输入弧线与墙的识别结果

步骤201,根据检测出的弧线,若一条弧线的两端与墙相邻,并且不与其他弧线相邻,则识别为单开门;若两条弧线相邻,并且各自的一端与墙相邻,则识别为双开门。在识别单开门和双开门识别步骤中,通过判断弧线是否与墙相邻来识别门,可以增加识别门的正确率。

在确定了所有的门之后,需要对单开门和双开门进行判定。如图11所示,识别完弧线以后,弧线上会存在圆的两条半径,其中一条半径是与所在的墙平行,如果这条与墙平行的半径两端都是墙,说明是单开门。如图12所示,如果找到两条与墙平行的半径,并且这两条半径相互连接,就像图12上的两条半径,说明有两段圆弧,并且这两个半径分别有一端与墙相邻,说明是双开门。

基于以上的方法,本发明还提供了一种户型图中门识别系统,包括弧线检测模块和门识别模块;

弧线检测模块中包括:

二值化处理模块,用于对户型图进行二值化处理;

标尺和数字识别模块,用于识别出户型图中的标尺和数字,计算出像素与户型大小的比例关系;

墙体识别模块,用于识别出户型图中的墙体;

圆心识别模块,用于识别出墙体上的拐点,将其作为圆心;

半径判定模块,用于获得门旋转过程当中的半径;

弧线判定模块,用于以所述的圆心和半径画圆,判断户型图当中是否有与圆的距离在设定阈值内的弧线;

门识别模块用于判定如果s6存在所述的弧线,将这条弧线上与墙平行的半径作为门。

在一个实施方式中,还包括:梯度化处理处理模块,用于对户型图进行梯度化处理,得到梯度图,并对梯度图进行二值化处理,得到二值化后的梯度图,用于弧线判定模块的判断过程中。

在一个实施方式中,半径判定模块通过门的大小与像素与户型大小的比例关系计算门旋转过程当中的半径。

在一个实施方式中,门识别模块用于判定:如果门的两端都与墙相连,则判定为单开门;如果门的一端与墙相连,另一端与另一个门相连,则判定为双开门。

本发明还提供了一种记载有可以运行上述的户型图中门识别方法的程序的计算机可读介质。

此外,本领域技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。

计算机可读信号介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读信号介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。

本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb.net、python等,常规程序化编程语言如c语言、visualbasic、fortran2003、perl、cobol2002、php、abap,动态编程语言如python、ruby和groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(saas)。

此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1