一种墙体图像识别方法及其装置与流程

文档序号:15165249发布日期:2018-08-14 17:24阅读:411来源:国知局

本发明涉及一种图像处理方法及其装置,尤其是涉及一种墙体图像识别方法及其装置。



背景技术:

随着计算机技术的应用普及,在建筑设计领域,越来越多的建筑设计工作通过在计算机上的计算机辅助设计(computer-aideddesign,cad)应用程序完成。现有技术中,如中国专利申请:申请号:cn201610556348,公开了一种墙体识别方法及其装置,所述方法包括:获取用户上传的户型图;对所述户型图进行栅格化;向用户显示栅格化后的户型图;获取用户选择的属于墙体区域的位置点;根据所述位置点的信息,由所述栅格化后的户型图中识别墙体区域;所述装置包括:户型图获取模块,用于获取用户上传的户型图;栅格化模块,用于对所述户型图进行栅格化;户型显示模块,用于向用户显示栅格化后的户型图;位置点获取模块,用于获取用户选择的属于墙体区域的位置点;识别模块,用于根据所述位置点的信息,由所述栅格化后的户型图中识别墙体区域。又如中国专利申请,申请号:cn201410211041,公开一种户型图中墙体的识别方法及户型图长度比例自动校正方法,墙体识别方法包括:对户型图进行预处理,检测户型图的外形轮廓,采用墙体阈值分割方法对户型图进行处理,对二值图进行腐蚀和膨胀、边缘检测,对边缘图像进行hough变换得到直线坐标信息,根据直线坐标信息获取墙的坐标信息。其中墙体阈值分割方法中的分割阈值t由墙体的平均灰度值和墙体以外区域的平均灰度值决定。根据墙体坐标信息获得整个户型图的每像素的长度值,用于校正整个户型图。

虽然上述现有技术各自存在其优点,诸如:申请号为:cn201610556348其优点为:提供的墙体识别方法及装置通过网页前端与后台服务器进行简单的交互,实现对建筑墙体的识别,不仅计算过程简单,而且具有更好的识别准确率;申请号:cn201410211041公开的技术方案,其优点为:本发明识别率高、能准确识别出墙体,可校正得到真实尺寸比例的户型图,以便为在进一步转为三维户型模型时提供准确的基础信息。然而,现有技术并没有实现与建模工具结合可实现二维房型到三维房型的快速转换,以提高创建三维房型图的效果。



技术实现要素:

本发明的目的是可以从像素图片中提取房型的矢量信息,用于三维数字建模,以解决现有技术中不足。

其技术方案如下:

一种墙体图像识别方法,其特征为:包括如下步骤:

步骤1:对墙体图像进行预处理;

步骤2:提取墙体图像颜色;

步骤3:提取墙体图像矢量轮廓线;

步骤4:处理矢量轮廓线。

优选为:所述步骤1进一步包括:将房型图转化为单通道灰度图;对灰度图进行形态学操作获得灰度背景图;利用灰度背景图进行过滤,得到剔除背景后的灰度图。

优选为:所述步骤2进一步包括:分别按行,列扫描剔除背景后的灰度图,并根据扫描结果计算外墙宽度;利用已知墙宽和边界处满足墙宽的边界区域,生成一系列用于过滤像素的矩形。扫描原图,将原图中处于矩形区域内的像素取出,求平均值得出墙体近似颜色。

优选为:所述步骤3进一步包括:使用墙体近似颜色从原图中提取墙体区域;过滤小面积非连通区域;对结果进行一次“腐蚀”操作以增强墙体特征;提取墙体边界,获得墙体矢量轮廓线。

优选为:所述步骤4进一步包括:剔除超出阈值的短线段,连接距离接近并且共线的直线段;内外墙轮廓线合并,得到墙体中线;对齐墙体中线,剔除连接点无效延伸段;计算端点之间的位置关系,并根据位置关系进行线段连接。

一种墙体图像识别方法的装置,包括:对墙体图像进行预处理的处理模块;提取墙体图像颜色的模块;提取墙体图像矢量轮廓线的模块;处理矢量轮廓线的模块。

有益效果:提高创建三维房型图效率。与建模工具结合可实现二维房型到三维房型的快速转换。

附图说明

图1为本发明步骤1中将彩色图转变为单通道灰度图。

图2为本发明膨胀操作示意图。

图3为本发明膨胀效果示意图;其中左边(a)图是原图,右边(b)图是膨胀计算后的结果。

图4为本发明对灰度图进行形态学操作获得灰度背景图像。

图5为本发明利用图4产生的二值图。

图6为本发明图5与图1所示结果进行过滤,得到剔除背景后的灰度图。

图7为本发明步骤2分别按行,列扫描剔除背景后的灰度图,并根据扫描结果计算外墙宽度的结果图。

图8为本发明步骤2中利用已知墙宽和边界处满足墙宽的边界区域,生成一系列用于过滤像素的矩形图。

图9为本发明步骤3提取墙体图像矢量轮廓线中二值化的墙体图。

图10为本发明步骤3剔除离散像素点,并增强墙体特征后的墙体图。

图11为本发明步骤3利用边界识别算法从墙体图提取的矢量轮廓图。

图12为本发明步骤4中剔除矢量轮廓图中的短线段后得到墙体的轮廓线段图。

图13为本发明步骤4中对墙体内外轮廓线段合并后得到的墙体中线图。

图14为本发明步骤4对墙体中线图进一步处理,去除无效延伸段得到的优化结果。

图15为本发明步骤4连接墙算法中,用于描述计算线段端点“最近点”方法的示意图。

图16为本发明步骤4连接算法中,用于描述两端点互为“最近点”的示意图。

图17为本发明步骤4连接算法中,用于描述两端点没有互为“最近点”的示意图。

图18为本发明步骤4连接算法最终产生的连接结果示意图。

图19为将本发明提取的墙体矢量图,运用到三维建模软件,快速产生户型模型的示例图。

具体实施方式

一种墙体图像识别方法,其特征为:包括如下步骤:

步骤1:对墙体图像进行预处理;

步骤2:提取墙体图像颜色;

步骤3:提取墙体图像矢量轮廓线;

步骤4:处理矢量轮廓线。

实施例1

1、对图像预处理方法做进一步说明:

将要处理的彩色图片作为本方案的输入。

step1:把原图转换为灰度图。

单通道灰度图是指每个像素点只能有有一个值表示颜色,它的像素值在0到25间,0是黑色,255是白色,中间值是一些不同等级的灰色。

调用opencv的cvtcolor函数来做图像格式转换:

cvtcolor(srclmage,graylmage,cv_bgr2gray,1);

opencv是一个基于bsd许可(开源)发行的跨平台计算机视觉库,可以运行在linux、windows和macos操作系统上。它轻量级而且高效——由一系列c函数和少量c++类构成,同时提供了python、ruby、matlab等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。该opencv在图像处理领域属于本领域常常采用的一种跨平台计算机视觉库,属于现有技术。

该cvtcolor函数需要传入四个参数。其中第一个参数为输入图片,第二个参数为输出图片,第三个参数指定转换方式,cv_bgr2gray表示转换为灰度图,第四个参数指定输出图片的像素通道个数,因为是灰度图,所以通道数为1。

通过该步骤得到图1所示将彩色图转变为单通道灰度图。

step2:对灰度图(图1)进行形态学操作获得灰度背景图像。

形态学,即数学形态学(mathematicalmorphology),是图像处理中应用最为广泛的技术之一,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质<最具区分能力-mostdiscriminative>的形状特征,如边界和连通区域等。同时像细化、像素化和修剪毛刺等技术也常应用于图像的预处理和后处理中,成为图像增强技术的有力补充。

其中腐蚀和膨胀是两种最基本也是最重要的形态学运算,它们是多高级形态学处理的基础,很多其他的形态学算法都是由这两种基本运算复合而成的。

按数学方面来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,我们称之为a)与结构元素(我们称之为b)进行卷积。结构元素(structureelement)可以是任何的形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点(anchorpoint)。多数情况下,结构元素是一个小的中间带有参考点和实心正方形或者圆盘。

参见图3是膨胀效果示意图,其中左边(a)图是原图,右边(b)图是膨胀计算后的结果。膨胀是求局部最大值的操作,结构元素b与图形卷积,计算出结构元素b覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐增长。如图2所示,这就是膨胀操作的初衷。

膨胀的数学表达式:

dst(x,y)=maxsrc(x+x’,y+y’)

(x’,y’):element(x’,y’)≠0

图3所示是膨胀效果示意图,其中左边(a)是原图,右边(b)是膨胀计算后的结果。此步骤计算背景图的方法正是使用了形态学中的黑帽算法(blackhat)来对灰度图进行处理。黑帽算法本质上是对图片先膨胀后腐蚀得到结果图再与原图像求差。该算法的特点是能够得出周边细小黑色干扰区域,比如房型周边的尺寸信息。

调用opencv形态学处理函数morphologye进行计算。该函数需要传入四个参数,其中第一个参数为输入图片,第二个参数为输出图片,第三个参数指定计算方式,选用morph_blackhat,第四个参数是结构元素,本方案中使用的是3x3的矩形。将计算结果取反后得到如图4所示的背景图。

step3:利用图4产生的二值图与图1所示结果进行过滤,得到剔除背景后的灰度图。

二值图是指图片像素的取值只有两种选择:非黑即白。转化二值图的方法为:扫面单通道图片,像素小于阈值的设为黑色(0),大于阈值的设为白色(255),参数可调,默认阈值为20。转换后得到如图5所示的二值图;

过滤背景的方法为:扫描图1所示的灰度图,假设灰度图中任一像素点a位置为(x,y)其中x为行数,y为列数,取图5二值图中同样位置的像素b,如果b为白色(255)则灰度图中像素a保持不变,否则将a设为白色(255)。过滤后的的结果,如图6所示。

实施例2

提取墙体颜色方法做进一步说明:

step1:分别按行,列扫描图6所示灰度图,并根据扫描结果计算外墙宽度(单位为像素)。方法为:四个方向(从左到右,从右到左,从上到下,从下到上)分别扫描图片,每次扫描都记录出现在边界位置的连续黑色像素的个数,取出现次数最多的连续像素个数为外墙宽度值。例如图7所示,由于在多个行活着列的边界处都找到了宽度为10的连续像素,故取10个像素为墙宽。

step2:利用已知墙宽和边界处满足墙宽的边界区域,生成一系列用于过滤像素的矩形,如图8所示。

扫描原图,将原图中处于矩形区域内的像素取出,求平均值得出墙体近似颜色。

实施例3

提取墙体矢量轮廓线的方法进一步包括如下步骤:

step1:使用步骤2中提取到的墙体近似颜色,从原图中提取墙体区域。

方法为:按行扫描原图上的像素点,如果该像素颜色在rgb色彩空间内与墙体颜色距离小于阈值则认为像素点有效,将其设为黑色(0),否则设为白色(255)。其中颜色距离的阈值参数可设置,默认值为30。计算两个像素点之间距离的方法为:

最终得到二值化的墙体图,如图9所示。

step2:过滤小面积非连通区域。采用方法为:分别计算横向和纵向连续像素个数,将连续像素少于阈值的区域设置为白色。其中像素数量阀值可调,默认为墙体宽度的0.25倍。

step3:对结果进行一次”腐蚀”操作以增强墙体特征,具体方法为调用opencv提供的erode函数。该函数需要传人三个参数,其中第一个参数为输入图片,第二个参数为输出图片,第三个参数是结构元素,本方案中使用的是3x3的矩形。

以上两部处理后得到如图10所示结果。

step4:对图10所示墙体图提取边界,获得墙体矢量轮廓线。

提取墙体边界需分两步处理:

第一步,先用canny边缘检测算子获取像素边界。

canny边缘检测算子是johnf.canny于1986年开发出来的一个多级边缘检测算法。更为重要的是canny创立了边缘检测计算理论(computationaltheoryofedgedetection),解释了这项技术是如何工作的。canny边缘检测算法以canny的名字命名,被很多人推崇为当今最优的边缘检测的算法。

canny边缘检测的步骤包括如下:

1.消除噪声。一般情况下,使用高斯平滑滤波器卷积降噪。

2.计算梯度幅值和方向。梯度方向近似到四个可能角度之一(一般为0,45,90,135)。

3.非极大值抑制。这一步排除非边缘像素,仅仅保留了一些细线条(候选边缘)。

4.滞后阈值。canny使用了滞后阈值,滞后阈值需要两个阈值(高阈值和低阈值):

a.如果某一像素位置的幅值超过高阈值,该像素被保留为边缘像素。

b.如果某一像素位置的幅值小于低阈值,该像素被排除。

c.如果某一像素位置的幅值在两个阈值之间,该像素仅仅在连接到一个高于高阈值的

像素时被保留。

本方案使用opencv提供的canny函数进行边缘检测计算,具体调用方法为:

canny(image,image,threshold1,threshold2)

前两个参数分别表示出入图片和输出图片。后两个参数为滞后性阈值,前一个为低阀值,用于边缘连接;后一个为高阀值,用来控制强边缘的初始段,推荐的高低阈值比在2∶1到3∶1之间。高低阀值作为输入参数可调,本方案默认取值分别为90和270。

由于canny算法属于现有技术,在此不再详细阐述该方法,本发明仅仅是采用该算法,如需对该算法做进一步连接,可参考论文:

canny,j.,acomputationalapproachtoedgedetection,ieeetrans.patternanalysisandmachineintelligence,8(6):679698,1986.

第二步,在得到像素轮廓图之后,使用opencv提供的findcontours函数计算矢量轮廓线。

findcontours(input,contours,cv_retr_external,

cv_chain_approx_simple);

该函数需要四个参数:第一个参数为出入图片,第二个参数为输出的矢量线段数组,第三个参数指定轮廓检索模式,这里采用的是外轮廓的模式,第四个参数指定轮廓的近似方法,这里采用的是压缩方式,只用端点来表示,比如矩形只存储四个点。

opencv的findcontours函数使用了suzuki85算法,由于suzuki85算法属于现有技术,在此不再详细阐述,该方法该算法的引用出处为:

[suzuki85]suzuki,s.andabe,k.,topologicalstructuralanalysisofdigitizedbinaryimagesbyborderfollowing.cvgip301,pp32-46(1985)

经过以上两步计算得到如图11所示的矢量轮廓。

实施例4

处理矢量轮廓线的方法做进一步说明:

step1:剔除超出阈值的短线段,连接距离接近并且共线的直线段,得到如图12所示结果。其中短线段长度的阀值可调,默认值为墙宽的一半。

step2:内外墙轮廓线合并,得到墙体中线,如图13所示。

step3:对齐墙体中线,剔除连接点无效延伸段,如图14所示。

step4:运用特定关系匹配算法进行线段连接,连接算法的原理为:

a.分别计算每条线段与其它线段或延长线的交点。取与线段端点同侧的交点,并按距离排序。

如图15所示,点a求交点后得到交点集(a,a,a,a,p,o,p,m)

和结果集(b,c,d,e,f,g,h,m),两者一一对应。结果集的产生规则为:如果交点在线段上则取交点(如点m),如果交点在线段延长线上则取离交点最近的线段端点(b,c,d,e,f,g,h)。

为描述简单,结果集中交点与点a距离最近的点简称为“最近点”。以点a为例,结果集中b,c,d,e的交点离点a的距离都为0,因而四个点都是“最近点”。

b.对于两条线段共线的线段端点,如果两点之间距离小于任何一个最近点距离,则直接相连,比如图16中的点j和点k。如果存在其它最近点,距离小于两者距离,则需进一步判断。比如点c和点d,其中点c的最近点为i(距离为0,小于cd之间的距离)。但点i存在一个比点c更近的点l,因此c不是i的最近点,不能讲点c和点i连接。此时cd两点都没有其它最近点距离小于cd间距,因此直接连接cd。

c.对于线段不共线的端点,分两种情况。

一是能直接找到互为最近点的情况,例如图17中的点a:

a).寻找a的最近点,得到b,c,d,e

b).依次检查b,c,d,e,寻找各自的最近点,发现b的最近点是点a。ab互为最近点,应该连接。

二是不能直接找到互为最近点的情况,例如图17中的点i:

a).寻找i的最近点,得到点g(交点为n)。但g的最近点却不是i,它们没有互为最近点,不能连接。

b).此时继续查找点i的第二近点,找到点l。l不是线段端点,不存在最近点,此时l可以和i连接。

d.进行线段连接时,先查找两点各自所属的两条线段。如果两条线段不共线,则需先求线段交点,然后从交点处分别连接两点。例如上图中的点i和点g,如果它们互为最近点,则应该从交点n处分别连接ni和ng。

所有连接完成后,得到如图18所示结果。

用上述方法产生的墙体矢量信息,导入设计软件可用于自动生成3d房型,如图19所示。

在以上的描述中阐述了很多具体细节以便于充分理解本发明。但是以上描述仅是本发明的较佳实施例而已,本发明能够以很多不同于在此描述的其它方式来实施,因此本发明不受上面公开的具体实施的限制。同时任何熟悉本领域技术人员在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

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