CN116503262A - 户型图的矢量化处理方法、装置和电子设备 - Google Patents
户型图的矢量化处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN116503262A CN116503262A CN202210063052.8A CN202210063052A CN116503262A CN 116503262 A CN116503262 A CN 116503262A CN 202210063052 A CN202210063052 A CN 202210063052A CN 116503262 A CN116503262 A CN 116503262A
- Authority
- CN
- China
- Prior art keywords
- contour
- room
- line segment
- vector
- area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 39
- 238000010586 diagram Methods 0.000 title claims description 60
- 239000013598 vector Substances 0.000 claims abstract description 394
- 230000011218 segmentation Effects 0.000 claims abstract description 99
- 238000000034 method Methods 0.000 claims abstract description 75
- 230000008878 coupling Effects 0.000 claims abstract description 15
- 238000010168 coupling process Methods 0.000 claims abstract description 15
- 238000005859 coupling reaction Methods 0.000 claims abstract description 15
- 238000012545 processing Methods 0.000 claims description 43
- 238000009499 grossing Methods 0.000 claims description 28
- 238000012937 correction Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 6
- 230000000877 morphologic effect Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
- G06T5/30—Erosion or dilatation, e.g. thinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/12—Edge-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Library & Information Science (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
Abstract
本公开实施例公开了户型图的矢量化处理方法、装置和电子设备。该方法的一具体实施方式包括:获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图;利用房间区域语义分割图和房间边界语义分割图,提取房间的房间轮廓;对房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;利用房间边界语义分割图,对处理后的房间轮廓进行边界语义搜索,得到处理后的房间轮廓中每条边上的边界元素的矢量数据;对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。该实施方式可以得到更加准确的户型图的矢量数据。
Description
技术领域
本公开实施例涉及计算机技术领域,具体涉及户型图的矢量化处理方法、装置和电子设备。
背景技术
户型图通常指的是住房的平面空间布局图,即对各个独立空间的使用功能、相应位置、大小进行描述的图型。通过户型图,可以直观的看清房屋的走向布局。数字户型图则存储了相应的矢量信息,对户型图中的门窗、墙体、房间形状等元素进行精确的矢量坐标定位和表示,其中包含不同户型元素在户型图中对应的矢量线段集合。由于数字户型图的精度更高,对户型元素的描述更具体,因此,如何准确地求取出户型图中每条边上的边界元素的矢量数据具有重要意义。
发明内容
提供该公开内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该公开内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
本公开实施例提供了一种图像处理方法、装置和电子设备,可以得到更加准确的户型图的矢量数据。
第一方面,本公开实施例提供了一种户型图的矢量化处理方法,包括:获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图;利用房间区域语义分割图和房间边界语义分割图,提取房间的房间轮廓;对房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;利用房间边界语义分割图,对处理后的房间轮廓进行边界语义搜索,得到处理后的房间轮廓中每条边上的边界元素的矢量数据;对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
第二方面,本公开实施例提供了一种户型图的矢量化处理装置,包括:获取单元,用于获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图;提取单元,用于利用房间区域语义分割图和房间边界语义分割图,提取房间的房间轮廓;处理单元,用于对房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;搜索单元,用于利用房间边界语义分割图,对处理后的房间轮廓进行边界语义搜索,得到处理后的房间轮廓中每条边上的边界元素的矢量数据;修正单元,用于对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
第三方面,本公开实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的户型图的矢量化处理方法。
第四方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的户型图的矢量化处理方法的步骤。
本公开实施例提供的户型图的矢量化处理方法、装置和电子设备,通过获取待处理的户型图、上述户型图的房间区域语义分割图和房间边界语义分割图;之后,可以利用上述房间区域语义分割图和上述房间边界语义分割图,提取房间的房间轮廓;而后,可以对上述房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;然后,可以利用上述房间边界语义分割图,对上述处理后的房间轮廓进行边界语义搜索,得到上述处理后的房间轮廓中每条边上的边界元素的矢量数据;最后,可以对上述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。通过这种方式可以利用户型图、户型图的房间区域语义分割图和房间边界语义分割图,得到户型图的矢量数据,提高了所得到的户型图的矢量数据的准确性。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1是本公开的各个实施例可以应用于其中的示例性系统架构图;
图2是根据本公开的户型图的矢量化处理方法的一个实施例的流程图;
图3A是根据本公开的户型图的矢量化处理方法中户型图的一个示意图;
图3B是根据本公开的户型图的矢量化处理方法中房间区域语义分割图的一个示意图;
图3C是根据本公开的户型图的矢量化处理方法中房间边界语义分割图的一个示意图;
图3D是根据本公开的户型图的矢量化处理方法中修正后的房间区域语义分割图的一个示意图;
图3E是根据本公开的户型图的矢量化处理方法中房间轮廓的一个示意图;
图3F是根据本公开的户型图的矢量化处理方法中平滑拟合后的房间轮廓的一个示意图;
图3G是根据本公开的户型图的矢量化处理方法中膨胀后的房间轮廓的一个示意图;
图3H是根据本公开的户型图的矢量化处理方法中耦合后的房间轮廓的一个示意图;
图3I是根据本公开的户型图的矢量化处理方法中矢量数据的可视化结果的一个示意图;
图4是根据本公开的户型图的矢量化处理方法中对房间轮廓进行平滑拟合处理的一个实施例的流程图;
图5是根据本公开的户型图的矢量化处理方法中对平滑拟合后的房间轮廓进行膨胀与耦合的一个实施例的流程图;
图6是根据本公开的户型图的矢量化处理方法中对处理后的房间轮廓进行边界语义搜索的一个实施例的流程图;
图7是根据本公开的户型图的矢量化处理方法中对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正的一个实施例的流程图;
图8是根据本公开的户型图的矢量化处理装置的一个实施例的结构示意图;
图9是适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1示出了可以应用本公开的户型图的矢量化处理方法的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备1011、1012、1013,网络102和服务器103。网络102用以在终端设备1011、1012、1013和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1011、1012、1013通过网络102与服务器103交互,以发送或接收消息等,例如,服务器103可以从终端设备1011、1012、1013获取待处理的户型图,服务器103也可以向终端设备1011、1012、1013输出修正后的矢量数据。终端设备1011、1012、1013上可以安装有各种通讯客户端应用,例如图像处理类应用、找房类应用和即时通讯软件等
终端设备1011、1012、1013可以是硬件,也可以是软件。当终端设备1011、1012、1013为硬件时,可以是具有显示屏并且支持信息交互的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机等。当终端设备1011、1012、1013为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器103可以是提供各种服务的服务器。例如,可以获取待处理的户型图、上述户型图的房间区域语义分割图和房间边界语义分割图;之后,可以利用上述房间区域语义分割图和上述房间边界语义分割图,提取房间的房间轮廓;而后,可以对上述房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;然后,可以利用上述房间边界语义分割图,对上述处理后的房间轮廓进行边界语义搜索,得到上述处理后的房间轮廓中每条边上的边界元素的矢量数据;最后,可以对上述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
需要说明的是,服务器103可以是硬件,也可以是软件。当服务器103为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器103为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本公开实施例所提供的户型图的矢量化处理方法通常由服务器103执行,则户型图的矢量化处理装置通常设置于服务器103中。
还需要说明的是,若服务器103的本地存储有待处理的户型图,此时,系统架构100中不可以不存在终端设备1011、1012、1013和网络102。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本公开的户型图的矢量化处理方法的一个实施例的流程200。该户型图的矢量化处理方法,包括以下步骤:
步骤201,获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图。
在本实施例中,户型图的矢量化处理方法的执行主体(例如图1所示的服务器)可以获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图。户型图通常指的是住房的平面空间布局图,即对各个独立空间的使用功能、相应位置、大小进行描述的图型。通过户型图,可以直观的看清房屋的走向布局。
在这里,上述户型图的房间区域语义分割图可以通过将上述户型图输入预先训练的房间区域语义分割模型中得到。房间区域语义可以包括但不限于以下至少一项:客厅、卧室、卫生间、厨房和阳台。房间区域语义分割图中相同颜色的区域可以表征同一房间语义,例如,蓝色可以表征该房间区域为卧室。
在这里,上述户型图的房间边界语义分割图可以通过将上述户型图输入预先训练的房间边界语义分割模型中得到。房间边界语义可以包括但不限于以下至少一项:墙体、门、窗户、落地窗和垭口。房间边界语义分割图中相同颜色的边界可以表征同一边界语义,例如,红色可以表征该边界为门。
如图3A-3C所示,图3A示出了根据本公开的户型图的矢量化处理方法中户型图的一个示意图,图3B示出了根据本公开的户型图的矢量化处理方法中房间区域语义分割图的一个示意图,图3C示出了根据本公开的户型图的矢量化处理方法中房间边界语义分割图的一个示意图。
步骤202,利用房间区域语义分割图和房间边界语义分割图,提取房间的房间轮廓。
在本实施例中,上述执行主体可以利用上述房间区域语义分割图和上述房间边界语义分割图,提取房间的房间轮廓。具体地,上述执行主体可以在上述房间区域语义分割图中删除上述房间边界语义分割图中非背景区域的部分,得到修正后的房间区域语义分割图;之后,可以从上述修正后的房间区域语义分割图中提取房间的房间轮廓。例如,可以使用现有的轮廓提取方法(例如,OpenCV库的findContours函数)从上述修正后的房间区域语义分割图中提取房间的房间轮廓。
如图3D和3E所示,图3D示出了根据本公开的户型图的矢量化处理方法中修正后的房间区域语义分割图的一个示意图,图3E示出了根据本公开的户型图的矢量化处理方法中房间轮廓的一个示意图。
步骤203,对房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓。
在本实施例中,上述执行主体可以对在步骤202中提取出的房间轮廓进行平滑拟合处理,之后,可以对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓。
在这里,上述执行主体可以将上述房间轮廓的轮廓点集合输入预先训练的平滑拟合模型中,得到平滑拟合后的房间轮廓的轮廓点序列。上述平滑拟合模型可以用于表征轮廓的轮廓点序列与平滑拟合后的轮廓的轮廓点序列之间的对应关系。上述房间轮廓的轮廓点集合可以按照顺时针或逆时针排序。
之后,上述执行主体可以对平滑拟合后的房间轮廓进行膨胀,使得房间的每个子轮廓之间的缝隙被填补。而后,可以对膨胀后的房间轮廓进行耦合,即将相邻的子轮廓连接在一起。具体地,可以确定相邻的子轮廓之间的缝隙的中轴线,对相邻的子轮廓进行扩充,使其边与中轴线重合。
如图3F-3H所示,图3F示出了根据本公开的户型图的矢量化处理方法中平滑拟合后的房间轮廓的一个示意图。图3G示出了根据本公开的户型图的矢量化处理方法中膨胀后的房间轮廓的一个示意图。图3H示出了根据本公开的户型图的矢量化处理方法中耦合后的房间轮廓的一个示意图。
步骤204,利用房间边界语义分割图,对处理后的房间轮廓进行边界语义搜索,得到处理后的房间轮廓中每条边上的边界元素的矢量数据。
在本实施例中,上述执行主体可以利用上述房间边界语义分割图,对上述处理后的房间轮廓进行边界语义搜索,得到上述处理后的房间轮廓中每条边上的边界元素的矢量数据。边界语义搜索通常指的是将房间边界语义分割图中的门窗等各个边界元素分配到房间轮廓上。边界元素的矢量数据用于描述边界元素的大小、方向等。
步骤205,对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
在本实施例中,上述执行主体可以对上述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。大部分户型图都会存在两个房间共享一个边界元素(例如,门、窗等)的情况,此时需要比较不同房间边界中,具有相同方向、边界语义出现重合的线段对,若该线段对中表征同一边界语义的线段的起点和/或终端的坐标不相同,需要对其进行修正,使得共享同一边界元素的两个线段上表征边界元素的矢量数据得到统一。
在这里,上述执行主体可以对得到的修正后的矢量数据进行输出,并呈现上述修正后的矢量数据的可视化结果。如图3I所示,图3I示出了根据本公开的户型图的矢量化处理方法中矢量数据的可视化结果的一个示意图。在图3I中,walls_only表示墙体,doors表示门,wins表示推拉窗,voids表示垭口,frenchWin表示落地窗。
本公开的上述实施例提供的方法通过获取待处理的户型图、上述户型图的房间区域语义分割图和房间边界语义分割图;之后,可以利用上述房间区域语义分割图和上述房间边界语义分割图,提取房间的房间轮廓;而后,可以对上述房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;然后,可以利用上述房间边界语义分割图,对上述处理后的房间轮廓进行边界语义搜索,得到上述处理后的房间轮廓中每条边上的边界元素的矢量数据;最后,可以对上述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。通过这种方式可以利用户型图、户型图的房间区域语义分割图和房间边界语义分割图,得到户型图的矢量数据,提高了所得到的户型图的矢量数据的准确性。
在一些可选的实现方式中,房间轮廓通常包括至少一个子轮廓。上述执行主体可以通过如下方式对上述房间轮廓进行平滑拟合处理:针对上述至少一个子轮廓中的每个子轮廓,上述执行主体可以将该子轮廓的第一个轮廓点添加到目标轮廓点列表中。在这里,可以将该子轮廓上的任一轮廓点确定为第一个轮廓点。上述目标轮廓点列表可以为新生成的用于存放平滑拟合后的轮廓点的列表。之后,上述执行主体可以以上述第一个轮廓点为起点,对该子轮廓的轮廓点序列中的轮廓点进行索引设置。在这里,上述执行主体可以按照顺时针的顺序对该子轮廓的轮廓点序列中的轮廓点进行索引设置,也可以按照逆时针的顺序对该子轮廓的轮廓点序列中的轮廓点进行索引设置。若该子轮廓的轮廓点序列中包括100个轮廓点,则所设置的索引可以为0至99。而后,可以将上述第一个轮廓点与下一个轮廓点所组成的矢量确定为前一矢量。若下一个轮廓点为与第一个轮廓点相邻的第二个轮廓点,则可以将第一个轮廓点与第二个轮廓点所组成的矢量确定为前一矢量。
之后,上述执行主体可以执行如下平滑拟合步骤:上述执行主体可以利用上述轮廓点序列中当前遍历的轮廓点的索引,确定是否遍历完成。具体地,若当前遍历的轮廓点的索引是上述轮廓点序列中最后一个轮廓点的索引,则可以确定遍历完成;若当前遍历的轮廓点的索引不是上述轮廓点序列中最后一个轮廓点的索引,则可以确定未遍历完成。若遍历完成,则上述执行主体可以输出目标轮廓点列表,生成平滑拟合处理后的房间轮廓。
若未遍历完成,则上述执行主体可以将当前遍历的轮廓点与当前遍历的轮廓点的下一个轮廓点所组成的矢量确定为当前矢量。之后,可以基于前一矢量和当前矢量,继续执行上述平滑拟合步骤。具体地,上述执行主体可以利用前一矢量的长度、当前矢量的长度以及前一矢量和当前矢量之间的矢量夹角,继续执行上述平滑拟合步骤。需要说明的是,该子轮廓的轮廓点序列中的两个相邻轮廓点之间的长度可以根据实际情况进行设置,例如,若该子轮廓的轮廓线较为平滑,可以将两个相邻轮廓点之间的长度设置的较大;若该子轮廓的轮廓线较为粗糙,可以将两个相邻轮廓点之间的长度设置的较小。
在一些可选的实现方式中,上述执行主体可以通过如下方式基于前一矢量和当前矢量,继续执行上述平滑拟合步骤:上述执行主体可以将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较。若前一矢量的长度小于上述长度阈值且当前矢量的长度小于上述长度阈值,则可以说明前一矢量和当前矢量的长度均较小,在空间上的关联性不够高,上述执行主体可以对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤。
在一些可选的实现方式中,上述执行主体可以通过如下方式基于前一矢量和当前矢量,继续执行上述平滑拟合步骤:上述执行主体可以将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较。若前一矢量的长度和当前矢量的长度中的一个大于上述长度阈值且另一个小于上述长度阈值,此时,包括两种情况,第一种情况为当前矢量的长度大于上述长度阈值、前一矢量的长度小于上述长度阈值,第二种情况为当前矢量的长度小于上述长度阈值、前一矢量的长度大于上述长度阈值,则可以说明当前矢量和前一矢量中有一个矢量的长度较长,可以将这两个矢量进行合并,上述执行主体可以将前一矢量的矢量终点更新为当前矢量的矢量终点,之后,可以对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤。
在一些可选的实现方式中,上述执行主体可以通过如下方式基于前一矢量和当前矢量,继续执行上述平滑拟合步骤:上述执行主体可以将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较。若前一矢量的长度和当前矢量的长度大于上述长度阈值,则上述执行主体可以确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值(例如,70度)。若小于上述夹角阈值,则可以说明前一矢量与当前矢量不能构成直角,上述执行主体可以将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤。
在一些可选的实现方式中,上述执行主体可以通过如下方式基于前一矢量和当前矢量,继续执行上述平滑拟合步骤:上述执行主体可以将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较。若前一矢量的长度和当前矢量的长度大于上述长度阈值,则上述执行主体可以确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值。若大于上述夹角阈值,则可以说明前一矢量与当前矢量可以构成直角,上述执行主体可以将目标轮廓点列表中的最后一个点与当前矢量的矢量起点构成的矢量确定为目标矢量,更新目标矢量的矢量终点,使得目标矢量处于水平方向或竖直方向,将目标矢量的矢量终点添加到目标轮廓点列表中,之后,可以将当前矢量作为前一矢量,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤。
在一些可选的实现方式中,房间轮廓通常包括至少一个子轮廓。上述执行主体可以通过如下方式对平滑拟合后的房间轮廓进行膨胀与耦合:上述执行主体可以对上述平滑拟合后的房间轮廓进行形态学运算,得到上述户型图的户型区域,使得上述户型区域中各个子轮廓之间的缝隙已被填充。具体地,上述执行主体可以首先对房间轮廓进行膨胀把中间的缝隙填;之后,由于房间轮廓外圈也被膨胀了,此时通常会对房间外围腐蚀相应的像素点。例如,若对房间轮廓膨胀了5个像素;之后可以对房间外围腐蚀5个像素。而后,可以将当前模式设置为第一模式。当前模式可以包括第一模式和第二模式,在不同的模式下,所使用的耦合方式不同。
而后,上述执行主体可以执行如下第一步骤:上述执行主体可以记录当前房间区域的总面积为第一面积。当前房间区域通常包括房间轮廓中的各个子轮廓的区域。在开始时,当前房间区域的总面积通常为上述平滑拟合后的房间轮廓中各个子轮廓的面积之和。之后,上述执行主体可以对上述平滑拟合后的房间轮廓中的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置。在这里,上述执行主体可以按照顺时针的顺序或者逆时针的顺序或者随机顺序对上述平滑拟合后的房间轮廓中的各个子轮廓进行索引设置。然后,上述执行主体可以执行如下第二步骤:可以利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成;若遍历完成,则可以确定当前房间区域的总面积作为第二面积;而后,可以确定第二面积是否大于第一面积;若第二面积大于第一面积,则可以说明房间轮廓还有可以膨胀的空间,可以继续执行上述第一步骤。
在一些可选的实现方式中,在确定第二面积是否大于第一面积之后,若确定出第二面积不大于第一面积,则上述执行主体可以确定当前模式是否为第一模式。若当前模式是第一模式,则上述执行主体可以将当前模式切换到第二模式,继续执行上述第一步骤。
在一些可选的实现方式中,在利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成之后,若确定出未遍历完成,则上述执行主体可以执行如下第三步骤:上述执行主体可以利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。具体地,若当前遍历的线段的索引是当前遍历的线段所属的子轮廓中最后一个线段的索引,则可以确定遍历完成。若确定出遍历完成,则上述执行主体可以对当前遍历的子轮廓的索引进行递增操作,即将子轮廓的索引加1,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行上述第二步骤。
在一些可选的实现方式中,在利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,若确定出未遍历完成,则上述执行主体可以对当前遍历的线段按照逆时针旋转目标角度的方向进行延展,延展出的部分与当前遍历的线段构造出矩形区域。上述目标角度通常为90度,延展的长度可以为一个像素宽度,此时,即对当前遍历的线段按照逆时针旋转90度的方向延展一个像素宽度。之后,可以确定当前模式是否为第一模式。若当前模式是第一模式,则上述执行主体可以确定矩形区域是否不完全落在上述户型图的户型区域内或与当前房间区域重叠。若矩形区域不完全落在上述户型图的户型区域内或与当前房间区域重叠,则说明当前遍历的线段不可以向外延展,上述执行主体可以对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第三步骤。
在一些可选的实现方式中,在确定矩形区域是否不完全落在上述户型图的户型区域内或与当前房间区域重叠之后,若确定出矩形区域完全落在上述户型图的户型区域内且不与当前房间区域重叠,则说明当前遍历的线段可以向外延展,上述执行主体可以将矩形区域合并到当前房间区域中,之后,可以更新当前遍历的子轮廓的轮廓点序列;而后,可以对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第三步骤。
在一些可选的实现方式中,在确定当前模式是否为第一模式之后,若确定出当前模式不是第一模式,则可以说明当前模式为第二模式,在第二模式下,上述执行主体可以在矩形区域与上述户型图的户型区域的重合区域的面积与不重合区域的面积的比值较大的情况下,对当前遍历的线段向外延展。此时,上述执行主体可以确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值,其中,重合区域可以为矩形区域与上述户型图的户型区域之间重合的区域,不重合区域可以为矩形区域中除重合区域之外的其他区域;若是,则可以对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第三步骤。
在一些可选的实现方式中,在确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于上述比例阈值之后,若矩形区域不与当前房间区域重叠且重合区域的面积与不重合区域的面积的比值大于等于上述比例阈值,则在当前模式为第二模式的情况下,当前遍历的线段可以向外延展,上述执行主体可以将矩形区域合并到当前房间区域中,以及可以更新当前遍历的子轮廓的轮廓点序列,即利用合并后的当前房间区域的轮廓点对当前遍历的子轮廓的轮廓点序列进行更新;而后,可以对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第三步骤。
在一些可选的实现方式中,房间轮廓通常包括至少一个子轮廓。上述执行主体可以通过如下方式利用上述房间边界语义分割图,对上述处理后的房间轮廓进行边界语义搜索,得到上述处理后的房间轮廓中每条边上的边界元素的矢量数据:上述执行主体可以对上述处理后的房间轮廓的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置。在这里,上述执行主体可以按照顺时针的顺序或者逆时针的顺序或者随机顺序对上述处理后的房间轮廓中的各个子轮廓进行索引设置。之后,可以执行如下第四步骤:可以利用当前遍历的子轮廓的索引,确定是否对上述处理后的房间轮廓遍历完成。具体地,若当前遍历的子轮廓的索引是所有子轮廓中的索引中最大的一个,则可以确定遍历完成。若对上述处理后的房间轮廓遍历完成,则上述执行主体可以输出上述处理后的房间轮廓中每条边上的边界元素的矢量数据。边界元素包括但不限于以下至少一项:墙体、门、窗户、落地窗和垭口。边界元素的矢量数据用于描述边界元素的大小、方向等。
在一些可选的实现方式中,在利用当前遍历的子轮廓的索引,确定是否对上述处理后的房间轮廓遍历完成之后,若未对上述处理后的房间轮廓遍历完成,则上述执行主体可以执行如下第五步骤:上述执行主体可以利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。具体地,若当前遍历的线段的索引是当前遍历的线段所属的子轮廓包含的线段的索引中最大的一个,则可以确定遍历完成。若对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行上述第四步骤。
在一些可选的实现方式中,在利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,若确定出未对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以将目标深度设置为预设数值,上述目标深度可以为沿着搜索方向对当前遍历的线段进行平移的深度。深度也可以为像素点的宽度。上述搜索方向通常为垂直于线段方向且与房间边界语义分割图中该条线段对应的线段靠近的方向。若线段是水平方向的,则搜索方向通常为垂直方向;若线段是垂直方向的,则搜索方向通常为水平方向。在初始时刻,通常将目标深度设置为0。之后,上述执行主体可以执行如下第六步骤:可以确定目标深度是否小于预设深度阈值,上述深度阈值通常为允许搜索的最大深度。若大于等于上述深度阈值,则说明对当前遍历的线段进行平移的深度大于允许搜索的最大深度,此时,上述执行主体可以记录当前最大的有效语义比例值对应的边界语义搜索结果。上述有效语义比例值通常为具有语义的线段长度与当前遍历的线段的长度的比值。作为示例,若当前遍历的线段的长度为20,具有语义的线段长度为10,则此时的有效语义比例值为0.5,若之前,求取出的当前遍历的线段的有效语义比例值包括:0.2、0.35、0.4,则当前最大的有效语义比例值对应的边界语义搜索结果为有效语义比例值为0.5时对应的边界语义搜索结果。而后,上述执行主体可以对当前遍历的线段的索引进行递增操作,即将当前遍历的线段的索引加1,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第五步骤。
在一些可选的实现方式中,在确定目标深度是否小于预设深度阈值之后,若确定出目标深度小于上述深度阈值,则可以说明对当前遍历的线段进行平移的深度没有到达允许搜索的最大深度,此时,上述执行主体可以将当前遍历的线段沿着搜索方向平移目标深度。上述搜索方向通常为垂直于线段方向且与房间边界语义分割图中该条线段对应的线段靠近的方向。而后,可以在上述房间边界语义分割图中与当前遍历的线段相对应的线段上,搜索不同边界语义的位置,确定有效语义比例值。作为示例,若上述房间边界语义分割图中存在一扇门和两面墙,上述执行主体可以在上述房间边界语义分割图中与当前遍历的线段相对应的线段上,搜索这一扇门和两面墙的位置,将表征这一扇门和两面墙的线段的长度与线段的总长度的比值确定为有效语义比例值。而后,可以确定有效语义比例值是否小于预设有效语义比例阈值,例如,0.9。若确定出有效语义比例值小于上述有效语义比例阈值,则对目标深度进行递增操作,例如,可以对目标深度增加一个像素值,继续执行上述第六步骤。
在一些可选的实现方式中,在确定有效语义比例值是否小于预设有效语义比例阈值之后,若确定出有效语义比例值大于等于上述有效语义比例阈值,则上述执行主体可以记录当前最大的有效语义比例值对应的边界语义搜索结果。之后,可以对当前遍历的线段的索引进行递增操作,即将当前遍历的线段的索引加1,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第五步骤。
在一些可选的实现方式中,针对房间轮廓中的每条边,该条边上的边界元素的矢量数据可以包括:该条边的方向、该条边的坐标、该条边的范围和该条边上各个边界元素的范围。在这里,该条边的方向可以为二值变量。方向可以为水平方向或垂直方向。该条边的坐标可以以一个整型数字表示。作为示例,若当前边沿水平方向,处在y=y0方向,则坐标变量的值为y0;若当前边沿垂直方向,处在x=x0方向,则坐标变量的值为x0。该条边的范围通常是一个包含两个整型数字的列表,分别为该条边的起点和终点。该条边上各个边界元素的范围可以包括每个边界元素的起点和终点。
通过这种方式,可以将多条二维线段压缩到一维的紧凑表示,减少存储空间占用;提高数据类型的可读性;抽象后的房间轮廓线段建立了房间轮廓和其上的门窗等元素的绑定关系,对边界线段进行平移等操作可以更易同步到绑定的户型元素上。
作为示例,对于一条水平的矢量线段,起点为(30,10),终点为(5,10),则范围变量的值为[30,5],坐标变量的值为整数10。其上若包含两扇单开门,第一扇门起点为(18,10),终点为(16,10),则第一扇门的范围为[18,16];第二扇起点为(14,10),终点为(12,10),则第二扇门的范围为[14,12],门的范围集合为:[[18,16],[14,12]]。
在一些可选的实现方式中,上述执行主体可以通过如下方式对上述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据:上述执行主体可以执行如下第七步骤:可以利用当前遍历的子轮廓的索引,确定是否对上述处理后的房间轮廓遍历完成,具体地,若确定出当前遍历的子轮廓的索引为所有子轮廓的索引中最大的一个,则可以确定出遍历完成。若确定出对上述处理后的房间轮廓遍历完成,则可以输出修正后的矢量数据。
在一些可选的实现方式中,在利用当前遍历的子轮廓的索引,确定是否对上述处理后的房间轮廓遍历完成之后,若确定出未对上述处理后的房间轮廓遍历完成,则上述执行主体可以执行如下第八步骤:上述执行主体可以利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。具体地,若当前遍历的线段的索引是当前遍历的线段所属的子轮廓包含的线段的索引中最大的一个,则可以确定遍历完成。若确定出对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以对当前遍历的子轮廓的索引进行递增操作,即将当前遍历的子轮廓的索引加1,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行上述第七步骤。
在一些可选的实现方式中,在利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,若确定出未对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以执行如下第九步骤:可以确定当前遍历的线段的边界语义是否遍历完全。若确定出遍历完全,则上述执行主体可以对当前遍历的线段的索引进行递增操作,即将当前遍历的线段的索引加1,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第八步骤。
在一些可选的实现方式中,在确定当前遍历的线段的边界语义是否遍历完全之后,若确定出未遍历完全,则上述执行主体可以获取当前语义和其他子轮廓有重叠的轮廓线。由于户型图可能会存在两个房间共享一个边界元素的情况,例如,相邻房间通过一扇门形成通路,则可以认为这扇门作为边界元素被这两个房间共享,以及这扇门会同时出现在这两个房间对应的轮廓中的某一条轮廓线段上。当前语义和其他子轮廓有重叠的轮廓线即为与当前语义所指示的轮廓线共享边界元素的轮廓线。之后,可以确定上述轮廓线中语义线段是否与当前语义完全对应。若两个房间共享一个边界元素,此时需要比较不同房间边界中,具有相同方向、边界语义出现重合的线段对,若该线段对中表征同一边界语义的线段的两个端点的坐标完全相同,则可以说明上述轮廓线中语义线段与当前语义完全对应。若完全对应,则上述执行主体可以索引下一边界语义,继续执行上述第九步骤。
在一些可选的实现方式中,在确定上述轮廓线中语义线段是否与当前语义完全对应之后,若确定出上述轮廓线中语义线段与当前语义未完全对应,则上述执行主体可以求取上述轮廓线与目标线段边界语义相同的交集线段,利用上述交集线段对上述轮廓线与上述目标线段进行更新,上述目标线段可以为其他子轮廓中与上述轮廓线的边界语义相同但不完全相等的线段。作为示例,若上述轮廓线中门的范围为[10,15],目标线段中门的范围为[11,16],则上述轮廓线与目标线段中门的交集线段的范围为[11,15],可以将上述轮廓线中门的范围和目标线段中门的范围均更新为[11,15]。
进一步参考图4,其示出了户型图的矢量化处理方法中对房间轮廓进行平滑拟合处理的一个实施例的流程400。该对房间轮廓进行平滑拟合处理的流程400,包括以下步骤:
步骤401,针对至少一个子轮廓中的每个子轮廓,将该子轮廓的第一个轮廓点添加到目标轮廓点列表中。
在本实施例中,针对至少一个子轮廓中的每个子轮廓,户型图的矢量化处理方法的执行主体(例如图1所示的服务器)可以将该子轮廓的第一个轮廓点添加到目标轮廓点列表中。在这里,可以将该子轮廓上的任一轮廓点确定为第一个轮廓点。上述目标轮廓点列表可以为新生成的用于存放平滑拟合后的轮廓点的列表。
步骤402,以第一个轮廓点为起点,对该子轮廓的轮廓点序列中的轮廓点进行索引设置。
在本实施例中,上述执行主体可以以上述第一个轮廓点为起点,对该子轮廓的轮廓点序列中的轮廓点进行索引设置。在这里,上述执行主体可以按照顺时针的顺序对该子轮廓的轮廓点序列中的轮廓点进行索引设置,也可以按照逆时针的顺序对该子轮廓的轮廓点序列中的轮廓点进行索引设置。若该子轮廓的轮廓点序列中包括100个轮廓点,则所设置的索引可以为0至99。
步骤403,将第一个轮廓点与下一个轮廓点所组成的矢量确定为前一矢量。
在本实施例中,上述执行主体可以将上述第一个轮廓点与下一个轮廓点所组成的矢量确定为前一矢量。若下一个轮廓点为与第一个轮廓点相邻的第二个轮廓点,则可以将第一个轮廓点与第二个轮廓点所组成的矢量确定为前一矢量。
步骤404,利用轮廓点序列中当前遍历的轮廓点的索引,确定是否遍历完成。
在本实施例中,上述执行主体可以利用上述轮廓点序列中当前遍历的轮廓点的索引,确定是否遍历完成。具体地,若当前遍历的轮廓点的索引是上述轮廓点序列中最后一个轮廓点的索引,则可以确定遍历完成,此时,可以执行步骤405。若当前遍历的轮廓点的索引不是上述轮廓点序列中最后一个轮廓点的索引,则可以确定未遍历完成,此时,可以执行步骤406。
步骤405,若遍历完成,则输出目标轮廓点列表,生成平滑拟合处理后的房间轮廓。
在本实施例中,若在步骤404中确定出遍历完成,则上述执行主体可以输出目标轮廓点列表,生成平滑拟合处理后的房间轮廓。
步骤406,若未遍历完成,则将当前遍历的轮廓点与当前遍历的轮廓点的下一个轮廓点所组成的矢量确定为当前矢量。
在本实施例中,若在步骤404中确定出未遍历完成,则上述执行主体可以将当前遍历的轮廓点与当前遍历的轮廓点的下一个轮廓点所组成的矢量确定为当前矢量。
步骤407,确定前一矢量的长度和当前矢量的长度是否均小于预设长度阈值。
在本实施例中,上述执行主体可以确定前一矢量的长度和当前矢量的长度是否均小于预设长度阈值。
若确定出前一矢量的长度和当前矢量的长度均小于上述长度阈值,则上述执行主体可以执行步骤408。
若确定出前一矢量的长度和当前矢量的长度不是均小于上述长度阈值,则上述执行主体可以执行步骤409。
步骤408,若前一矢量的长度和当前矢量的长度均小于长度阈值,则对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤404-415。
在本实施例中,若在步骤407中确定出前一矢量的长度和当前矢量的长度均小于上述长度阈值,则可以说明前一矢量和当前矢量的长度均较小,在空间上的关联性不够高,上述执行主体可以对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤404-415。
步骤409,若前一矢量的长度和当前矢量的长度不是均小于长度阈值,则确定前一矢量的长度和当前矢量的长度中是否一个大于长度阈值且另一个小于长度阈值。
在本实施例中,若在步骤407中确定出前一矢量的长度和当前矢量的长度不是均小于上述长度阈值,则上述执行主体可以确定前一矢量的长度和当前矢量的长度中是否一个大于长度阈值且另一个小于长度阈值。前一矢量的长度和当前矢量的长度中一个大于长度阈值且另一个小于长度阈值可以包括两种情况,第一种情况为当前矢量的长度大于上述长度阈值、前一矢量的长度小于上述长度阈值,第二种情况为当前矢量的长度小于上述长度阈值、前一矢量的长度大于上述长度阈值。
若前一矢量的长度和当前矢量的长度中一个大于长度阈值且另一个小于长度阈值,则上述执行主体可以执行步骤410。
若前一矢量的长度和当前矢量的长度中不是一个大于长度阈值且另一个小于长度阈值,则上述执行主体可以执行步骤411。
步骤410,若前一矢量的长度和当前矢量的长度中的一个大于长度阈值且另一个小于长度阈值,则将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤404-415。
在本实施例中,若在步骤409中确定出前一矢量的长度和当前矢量的长度中一个大于长度阈值且另一个小于长度阈值,则可以说明当前矢量和前一矢量中有一个矢量的长度较长,可以将这两个矢量进行合并,上述执行主体可以将前一矢量的矢量终点更新为当前矢量的矢量终点,之后,可以对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤404-415。
步骤411,若前一矢量的长度和当前矢量的长度中不是一个大于长度阈值且另一个小于长度阈值,则确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值。
在本实施例中,若在步骤409中确定出前一矢量的长度和当前矢量的长度中不是一个大于长度阈值且另一个小于长度阈值,此时可以说明前一矢量的长度和当前矢量的长度均大于上述长度阈值,上述执行主体可以确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值(例如,70度)。
若前一矢量和当前矢量的矢量夹角小于上述夹角阈值,则上述执行主体可以执行步骤412。
若前一矢量和当前矢量的矢量夹角大于上述夹角阈值,则上述执行主体可以执行步骤413。
步骤412,若前一矢量和当前矢量的矢量夹角小于夹角阈值,则将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤404-415。
在本实施例中,若在步骤411中确定出前一矢量和当前矢量的矢量夹角小于上述夹角阈值,则可以说明前一矢量与当前矢量不能构成直角,上述执行主体可以将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤404-415。
步骤413,若前一矢量和当前矢量的矢量夹角大于夹角阈值,则将目标轮廓点列表中的最后一个点与当前矢量的矢量起点构成的矢量确定为目标矢量。
在本实施例中,若在步骤411中确定出前一矢量和当前矢量的矢量夹角大于上述夹角阈值,则可以说明前一矢量与当前矢量可以构成直角,上述执行主体可以将目标轮廓点列表中的最后一个点与当前矢量的矢量起点构成的矢量确定为目标矢量。
步骤414,更新目标矢量的矢量终点,使得目标矢量处于水平方向或竖直方向,将目标矢量的矢量终点添加到目标轮廓点列表中。
在本实施例中,上述执行主体可以更新目标矢量的矢量终点,使得目标矢量处于水平方向或竖直方向,将目标矢量的矢量终点添加到目标轮廓点列表中。
步骤415,将当前矢量作为前一矢量,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤404-415。
在本实施例中,上述执行主体可以将当前矢量作为前一矢量,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行上述平滑拟合步骤404-415。
本公开的上述实施例提供的方法通过利用前一矢量的长度、当前矢量的长度、前一矢量和当前矢量的矢量夹角,对房间轮廓进行平滑拟合处理,提高了对房间轮廓进行平滑拟合的处理效果。
进一步参考图5,其示出了户型图的矢量化处理方法中对平滑拟合后的房间轮廓进行膨胀与耦合的一个实施例的流程500。该对平滑拟合后的房间轮廓进行膨胀与耦合的流程500,包括以下步骤:
步骤501,对平滑拟合后的房间轮廓进行形态学运算,得到户型图的户型区域。
在本实施例中,户型图的矢量化处理方法的执行主体(例如图1所示的服务器)可以对平滑拟合后的房间轮廓进行形态学运算,得到户型图的户型区域,使得上述户型区域中各个子轮廓之间的缝隙已被填充。具体地,上述执行主体可以首先对房间轮廓进行膨胀把中间的缝隙填;之后,由于房间轮廓外圈也被膨胀了,此时通常会对房间外围腐蚀相应的像素点。例如,若对房间轮廓膨胀了5个像素;之后可以对房间外围腐蚀5个像素。在这里,房间轮廓通常包括至少一个子轮廓。
步骤502,将当前模式设置为第一模式。
在本实施例中,上述执行主体可以将当前模式设置为第一模式。当前模式可以包括第一模式和第二模式,在不同的模式下,所使用的耦合方式不同。
步骤503,执行如下第一步骤:记录当前房间区域的总面积为第一面积;对平滑拟合后的房间轮廓中的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置;执行如下第二步骤:利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成;若遍历完成,则确定当前房间区域的总面积作为第二面积;确定第二面积是否大于第一面积;若第二面积大于第一面积,则继续执行第一步骤。
在本实施例中,步骤503可以包括子步骤5031、5032和5033。
其中:
步骤5031,记录当前房间区域的总面积为第一面积。
在本实施例中,上述执行主体可以记录当前房间区域的总面积为第一面积。在开始时,当前房间区域的总面积通常为上述平滑拟合后的房间轮廓中各个子轮廓的面积之和。
步骤5032,对平滑拟合后的房间轮廓中的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置。
在本实施例中,上述执行主体可以对上述平滑拟合后的房间轮廓中的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置。在这里,上述执行主体可以按照顺时针的顺序或者逆时针的顺序或者随机顺序对上述平滑拟合后的房间轮廓中的各个子轮廓进行索引设置。
步骤5033,执行如下第二步骤:利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成;若遍历完成,则确定当前房间区域的总面积作为第二面积;确定第二面积是否大于第一面积;若第二面积大于第一面积,则继续执行第一步骤。
在本实施例中,步骤5033可以包括子步骤50331、50332、50333和50334。其中:
步骤50331,利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成。
在本实施例中,上述执行主体可以利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成。
若确定出对各个子轮廓遍历完成,则上述执行主体可以执行步骤50332。
若确定出未对各个子轮廓遍历完成,则上述执行主体可以执行步骤506。
步骤50332,若遍历完成,则确定当前房间区域的总面积作为第二面积。
在本实施例中,若在步骤50331中确定出对各个子轮廓遍历完成,则上述执行主体可以确定当前房间区域的总面积作为第二面积。
步骤50333,确定第二面积是否大于第一面积。
在本实施例中,上述执行主体可以确定第二面积是否大于第一面积。
若第二面积大于第一面积,则上述执行主体可以执行步骤50334。
若第二面积不大于第一面积,则上述执行主体可以执行步骤504。
步骤50334,若第二面积大于第一面积,则继续执行第一步骤503。
在本实施例中,若在步骤50333中确定出第二面积大于第一面积,则可以说明房间轮廓还有可以膨胀的空间,上述执行主体可以继续执行上述第一步骤503。
步骤504,若第二面积不大于第一面积,则确定当前模式是否为第一模式。
在本实施例中,若在步骤50333中确定出第二面积不大于第一面积,则上述执行主体可以确定当前模式是否为第一模式。
若当前模式是第一模式,则上述执行主体可以执行步骤505。
步骤505,若当前模式是第一模式,则将当前模式切换到第二模式,继续执行第一步骤。
在本实施例中,若在步骤504中确定出当前模式是第一模式,则上述执行主体可以将当前模式切换到第二模式,继续执行上述第一步骤。
步骤506,若在步骤50331中确定出未遍历完成,则执行如下第三步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第二步骤。
在本实施例中,步骤506可以包括子步骤5061和5062。其中:
步骤5061,利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。
在本实施例中,上述执行主体可以利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。具体地,若当前遍历的线段的索引是当前遍历的线段所属的子轮廓中最后一个线段的索引,则可以确定遍历完成。
若确定出遍历完成,则上述执行主体可以执行步骤5062。
若确定出未遍历完成,则上述执行主体可以执行步骤507。
步骤5062,若遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第二步骤。
在本实施例中,若在步骤5061中确定出对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以对当前遍历的子轮廓的索引进行递增操作,即将子轮廓的索引加1,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行上述第二步骤5033。
步骤507,若未遍历完成,则对当前遍历的线段按照逆时针旋转目标角度的方向进行延展,延展出的部分与当前遍历的线段构造出矩形区域。
在本实施例中,若在步骤5061中确定出未对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以对当前遍历的线段按照逆时针旋转目标角度的方向进行延展,延展出的部分与当前遍历的线段构造出矩形区域。上述目标角度通常为90度,延展的长度可以为一个像素宽度,此时,即对当前遍历的线段按照逆时针旋转90度的方向延展一个像素宽度。
步骤508,确定当前模式是否为第一模式。
在本实施例中,上述执行主体可以确定当前模式是否为第一模式。
若当前模式是第一模式,则上述执行主体可以执行步骤509。
若当前模式不是第一模式,则上述执行主体可以执行步骤512。
步骤509,若当前模式是第一模式,则确定矩形区域是否不完全落在户型图的户型区域内或与当前房间区域重叠。
在本实施例中,若在步骤508中确定出当前模式是第一模式,则上述执行主体可以确定矩形区域是否不完全落在上述户型图的户型区域内或与当前房间区域重叠。
若矩形区域不完全落在上述户型图的户型区域内或与当前房间区域重叠,则上述执行主体可以执行步骤510。
若矩形区域完全落在户型图的户型区域内且不与当前房间区域重叠,则上述执行主体可以执行步骤511。
步骤510,若在步骤509中确定出矩形区域不完全落在户型图的户型区域内或与当前房间区域重叠,或者若在步骤512中确定出矩形区域与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第三步骤。
在本实施例中,若在步骤509中确定出矩形区域不完全落在上述户型图的户型区域内或与当前房间区域重叠,则说明当前遍历的线段不可以向外延展,上述执行主体可以对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第三步骤506。
若在步骤512中确定出矩形区域与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值,其中,重合区域可以为矩形区域与所述户型图的户型区域之间重合的区域,不重合区域可以为矩形区域中除重合区域之外的其他区域,则上述执行主体可以对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第三步骤506。
步骤511,若在步骤509中确定出矩形区域完全落在户型图的户型区域内且不与当前房间区域重叠,或者若在步骤512中确定出矩形区域不与当前房间区域重叠且重合区域的面积与不重合区域的面积的比值大于等于比例阈值,则将矩形区域合并到当前房间区域中,以及更新当前遍历的子轮廓的轮廓点序列。
在本实施例中,若在步骤509中确定出矩形区域完全落在户型图的户型区域内且不与当前房间区域重叠,则说明当前遍历的线段可以向外延展,上述执行主体可以将矩形区域合并到当前房间区域中,之后,可以更新当前遍历的子轮廓的轮廓点序列;而后,可以执行步骤510,即对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第三步骤506。
在步骤512中确定出矩形区域不与当前房间区域重叠且重合区域的面积与不重合区域的面积的比值大于等于上述比例阈值,则在当前模式为第二模式的情况下,当前遍历的线段可以向外延展,上述执行主体可以将矩形区域合并到当前房间区域中,以及可以更新当前遍历的子轮廓的轮廓点序列,即利用合并后的当前房间区域的轮廓点对当前遍历的子轮廓的轮廓点序列进行更新;而后,可以执行步骤510。
步骤512,若当前模式不是第一模式,则确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值。
在本实施例中,若在步骤508中确定出当前模式不是第一模式,则可以说明当前模式为第二模式,在第二模式下,上述执行主体可以在矩形区域与上述户型图的户型区域的重合区域的面积与不重合区域的面积的比值较大的情况下,对当前遍历的线段向外延展。此时,上述执行主体可以确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值。
若矩形区域与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值,则上述执行主体可以执行步骤510。
本公开的上述实施例提供的方法通过确定房间面积是否发生变化,以对当前模式进行切换,在两种模式下,确定是否能够将延展的区域合并到当前轮廓包含的区域中,从而实现对平滑拟合后的房间轮廓的膨胀与耦合,通过这种方式实现了对房间轮廓之间的空隙的填补,此外通过自适应的膨胀策略,使得每个房间轮廓贴近原始户型图中黑色墙体的中轴线,提高了耦合的精度。
继续参考图6,其示出了户型图的矢量化处理方法中对处理后的房间轮廓进行边界语义搜索的一个实施例的流程600。该对处理后的房间轮廓进行边界语义搜索的流程600,包括以下步骤:
步骤601,对处理后的房间轮廓的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置。
在本实施例中,户型图的矢量化处理方法的执行主体(例如图1所示的服务器)可以对上述处理后的房间轮廓的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置。在这里,上述执行主体可以按照顺时针的顺序或者逆时针的顺序或者随机顺序对上述处理后的房间轮廓中的各个子轮廓进行索引设置。
步骤602,执行如下第四步骤:利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成;若对处理后的房间轮廓遍历完成,则输出处理后的房间轮廓中每条边上的边界元素的矢量数据。
在本实施例中,步骤602可以包括子步骤6021和6022。其中:
步骤6021,利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成。
在本实施例中,上述执行主体可以利用当前遍历的子轮廓的索引,确定是否对上述处理后的房间轮廓遍历完成。具体地,若当前遍历的子轮廓的索引是所有子轮廓中的索引中最大的一个,则可以确定遍历完成。
若对上述处理后的房间轮廓遍历完成,则上述执行主体可以执行步骤6022。
若未对上述处理后的房间轮廓遍历完成,则上述执行主体可以执行步骤603。
步骤6022,若对处理后的房间轮廓遍历完成,则输出处理后的房间轮廓中每条边上的边界元素的矢量数据。
在本实施例中,若在步骤6021中确定出对上述处理后的房间轮廓遍历完成,则上述执行主体可以输出上述处理后的房间轮廓中每条边上的边界元素的矢量数据。边界元素包括但不限于以下至少一项:墙体、门、窗户、落地窗和垭口。边界元素的矢量数据用于描述边界元素的大小、方向等。
步骤603,若在步骤6021中确定出未对处理后的房间轮廓遍历完成,则执行如下第五步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第四步骤602。
在本实施例中,步骤603可以包括子步骤6031和6032。其中:
步骤6031,利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。
在本实施例中,上述执行主体可以利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。具体地,若当前遍历的线段的索引是当前遍历的线段所属的子轮廓包含的线段的索引中最大的一个,则可以确定遍历完成。
若对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以执行步骤6032。
若未对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以执行步骤604。
步骤6032,若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第四步骤。
在本实施例中,若在步骤6031中确定出对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行上述第四步骤602。
步骤604,若未对当前遍历的线段所属的子轮廓遍历完成,则将目标深度设置为预设数值。
在本实施例中,若在步骤6031中确定出未对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以将目标深度设置为预设数值,上述目标深度可以为沿着搜索方向对当前遍历的线段进行平移的深度。深度也可以为像素点的宽度。上述搜索方向通常为垂直于线段方向且与房间边界语义分割图中该条线段对应的线段靠近的方向。若线段是水平方向的,则搜索方向通常为垂直方向;若线段是垂直方向的,则搜索方向通常为水平方向。在初始时刻,通常将目标深度设置为0。
步骤605,执行如下第六步骤:确定目标深度是否小于预设深度阈值;若大于等于深度阈值,则记录当前最大的有效语义比例值对应的边界语义搜索结果,其中,有效语义比例值为具有语义的线段长度与当前遍历的线段的长度的比值;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第五步骤。
在本实施例中,步骤605可以包括子步骤6051、6052和6053。
其中:
步骤6051,确定目标深度是否小于预设深度阈值。
在本实施例中,上述执行主体可以确定目标深度是否小于预设深度阈值,上述深度阈值通常为允许搜索的最大深度。
若大于等于深度阈值,则上述执行主体可以执行步骤6052。
若小于深度阈值,则上述执行主体可以执行步骤606。
步骤6052,若大于等于深度阈值,则记录当前最大的有效语义比例值对应的边界语义搜索结果。
在本实施例中,若在步骤6051中大于等于上述深度阈值,则说明对当前遍历的线段进行平移的深度大于允许搜索的最大深度,此时,上述执行主体可以记录当前最大的有效语义比例值对应的边界语义搜索结果。上述有效语义比例值通常为具有语义的线段长度与当前遍历的线段的长度的比值。作为示例,若当前遍历的线段的长度为20,具有语义的线段长度为10,则此时的有效语义比例值为0.5,若之前,求取出的当前遍历的线段的有效语义比例值包括:0.2、0.35、0.4,则当前最大的有效语义比例值对应的边界语义搜索结果为有效语义比例值为0.5时对应的边界语义搜索结果。
步骤6053,对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第五步骤。
在本实施例中,上述执行主体可以对当前遍历的线段的索引进行递增操作,即将当前遍历的线段的索引加1,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第五步骤603。
步骤606,若小于深度阈值,则将当前遍历的线段沿着搜索方向平移目标深度。
在本实施例中,若在步骤6051中确定出目标深度小于深度阈值,则可以说明对当前遍历的线段进行平移的深度没有到达允许搜索的最大深度,此时,上述执行主体可以将当前遍历的线段沿着搜索方向平移目标深度。上述搜索方向通常为垂直于线段方向且与房间边界语义分割图中该条线段对应的线段靠近的方向。
步骤607,在房间边界语义分割图中与当前遍历的线段相对应的线段上,搜索不同边界语义的位置,确定有效语义比例值。
在本实施例中,上述执行主体可以在上述房间边界语义分割图中与当前遍历的线段相对应的线段上,搜索不同边界语义的位置,确定有效语义比例值。作为示例,若上述房间边界语义分割图中存在一扇门和两面墙,上述执行主体可以在上述房间边界语义分割图中与当前遍历的线段相对应的线段上,搜索这一扇门和两面墙的位置,将表征这一扇门和两面墙的线段的长度与线段的总长度的比值确定为有效语义比例值。
步骤608,确定有效语义比例值是否小于预设有效语义比例阈值。
在本实施例中,上述执行主体可以确定有效语义比例值是否小于预设有效语义比例阈值,例如,0.9。
若小于上述有效语义比例阈值,则上述执行主体可以执行步骤609。
若大于等于上述有效语义比例阈值,则上述执行主体可以执行步骤610。
步骤609,若小于有效语义比例阈值,则对目标深度进行递增操作,继续执行第六步骤。
在本实施例中,若在步骤608中确定出有效语义比例值小于上述有效语义比例阈值,则上述执行主体可以对目标深度进行递增操作,例如,可以对目标深度增加一个像素值,继续执行上述第六步骤605。
步骤610,若大于等于有效语义比例阈值,则执行步骤6052和步骤6053。
在本实施例中,若在步骤608中确定出有效语义比例值大于等于上述有效语义比例阈值,则上述执行主体可以记录当前最大的有效语义比例值对应的边界语义搜索结果。之后,可以执行步骤6052和步骤6053,即对当前遍历的线段的索引进行递增操作,即将当前遍历的线段的索引加1,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第五步骤603。
本公开的上述实施例提供的方法通过沿着搜索方向对当前遍历的线段进行平移,以在户型边界分割图上,搜索不同边界语义的位置,从而确定有效语义比例值,将最大有效语义比例值对应的边界语义搜索结果作为最终的边界语义搜索结果,通过这种方式可以使得边界语义搜索结果更准确。
进一步参考图7,其示出了户型图的矢量化处理方法中对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正的一个实施例的流程700。该对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正的流程700,包括以下步骤:
步骤701,执行如下第七步骤:利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成;若对处理后的房间轮廓遍历完成,则输出修正后的矢量数据。
在本实施例中,步骤701可以包括子步骤7011和7012。其中:
步骤7011,利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成。
在本实施例中,户型图的矢量化处理方法的执行主体(例如图1所示的服务器)可以利用当前遍历的子轮廓的索引,确定是否对上述处理后的房间轮廓遍历完成,具体地,若确定出当前遍历的子轮廓的索引为所有子轮廓的索引中最大的一个,则可以确定出遍历完成。
若确定出对处理后的房间轮廓遍历完成,则上述执行主体可以执行步骤7012。
若确定未出对处理后的房间轮廓遍历完成,则上述执行主体可以执行步骤702。
步骤7012,若对处理后的房间轮廓遍历完成,则输出修正后的矢量数据。
在本实施例中,若在步骤7011中确定出对上述处理后的房间轮廓遍历完成,则上述执行主体可以输出修正后的矢量数据。
步骤702,若在步骤7011中确定出未对处理后的房间轮廓遍历完成,则执行如下第八步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第七步骤。
在本实施例中,步骤702可以包括子步骤7021和7022。其中:
步骤7021,利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。
在本实施例中,上述执行主体可以利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成。具体地,若当前遍历的线段的索引是当前遍历的线段所属的子轮廓包含的线段的索引中最大的一个,则可以确定遍历完成。
若确定出对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以执行步骤7022。
若确定出未对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以执行步骤703。
步骤7022,若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第七步骤。
在本实施例中,若在步骤7021中确定出对当前遍历的线段所属的子轮廓遍历完成,则上述执行主体可以对当前遍历的子轮廓的索引进行递增操作,即将当前遍历的子轮廓的索引加1,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行上述第七步骤701。
步骤703,若在步骤7021中确定出未对当前遍历的线段所属的子轮廓遍历完成,则执行如下第九步骤:确定当前遍历的线段的边界语义是否遍历完全;若遍历完全,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第八步骤。
在本实施例中,步骤703可以包括子步骤7031和7032。其中:
步骤7031,确定当前遍历的线段的边界语义是否遍历完全。
在本实施例中,上述执行主体可以确定当前遍历的线段的边界语义是否遍历完全。
若确定出遍历完全,则上述执行主体可以执行步骤7032。
若确定出未遍历完全,则上述执行主体可以执行步骤704。
步骤7032,若遍历完全,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第八步骤。
在本实施例中,若在步骤7031中确定出遍历完全,则上述执行主体可以对当前遍历的线段的索引进行递增操作,即将当前遍历的线段的索引加1,将递增后的索引所指示的线段作为当前遍历的线段,继续执行上述第八步骤702。
步骤704,若未遍历完全,则获取当前语义和其他子轮廓有重叠的轮廓线。
在本实施例中,若在步骤7031中确定出未遍历完全,则上述执行主体可以获取当前语义和其他子轮廓有重叠的轮廓线。由于户型图可能会存在两个房间共享一个边界元素的情况,当前语义和其他子轮廓有重叠的轮廓线即为与当前语义所指示的轮廓线共享边界元素的轮廓线。
步骤705,确定轮廓线中语义线段是否与当前语义完全对应。
在本实施例中,上述执行主体可以确定上述轮廓线中语义线段是否与当前语义完全对应。若两个房间共享一个边界元素,此时需要比较不同房间边界中,具有相同方向、边界语义出现重合的线段对,若该线段对中表征同一边界语义的线段的起点和/或终端的坐标相同,则可以说明上述轮廓线中语义线段与当前语义完全对应。
若确定出轮廓线中语义线段与当前语义完全对应,则上述执行主体可以执行步骤706。
若确定出轮廓线中语义线段与当前语义未完全对应,则上述执行主体可以执行步骤707。
步骤706,若完全对应,则索引下一边界语义,继续执行第九步骤。
在本实施例中,若在步骤705中确定出轮廓线中语义线段与当前语义完全对应,则上述执行主体可以索引下一边界语义,继续执行上述第九步骤703。
步骤707,若未完全对应,则求取轮廓线与目标线段边界语义相同的交集线段,利用交集线段对轮廓线与目标线段进行更新。
在本实施例中,若在步骤705中确定出轮廓线中语义线段与当前语义未完全对应,则上述执行主体可以求取上述轮廓线与目标线段边界语义相同的交集线段,利用上述交集线段对上述轮廓线与上述目标线段进行更新,上述目标线段可以为其他子轮廓中与上述轮廓线的边界语义相同但不完全相等的线段。作为示例,若上述轮廓线中门的范围为[10,15],目标线段中门的范围为[11,16],则上述轮廓线与目标线段中门的交集线段的范围为[11,15],可以将上述轮廓线中门的范围和目标线段中门的范围均更新为[11,15]。
本公开的上述实施例提供的方法通过在两个房间共享一个边界元素时,比较不同房间边界中,具有相同方向、边界语义出现重合的线段对,若该线段对中表征同一边界语义的线段的起点和/或终端的坐标不相同,对这两个房间共享的同一边界元素进行长度统一,从而实现对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正。
进一步参考图8,作为对上述各图所示方法的实现,本公开提供了一种户型图的矢量化处理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图8所示,本实施例的户型图的矢量化处理装置800包括:获取单元801、提取单元802、处理单元803、搜索单元804和修正单元805。其中,获取单元801用于获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图;提取单元802用于利用房间区域语义分割图和房间边界语义分割图,提取房间的房间轮廓;处理单元803用于对房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;搜索单元804用于利用房间边界语义分割图,对处理后的房间轮廓进行边界语义搜索,得到处理后的房间轮廓中每条边上的边界元素的矢量数据;修正单元805用于对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
在本实施例中,户型图的矢量化处理装置800的获取单元801、提取单元802、处理单元803、搜索单元804和修正单元805的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204和步骤205。
在一些可选的实现方式中,房间轮廓包括至少一个子轮廓;以及处理单元803可以进一步用于通过如下方式对房间轮廓进行平滑拟合处理:针对至少一个子轮廓中的每个子轮廓,将该子轮廓的第一个轮廓点添加到目标轮廓点列表中;以第一个轮廓点为起点,对该子轮廓的轮廓点序列中的轮廓点进行索引设置;将第一个轮廓点与下一个轮廓点所组成的矢量确定为前一矢量;执行如下平滑拟合步骤:利用轮廓点序列中当前遍历的轮廓点的索引,确定是否遍历完成;若遍历完成,则输出目标轮廓点列表,生成平滑拟合处理后的房间轮廓;若未遍历完成,则将当前遍历的轮廓点与当前遍历的轮廓点的下一个轮廓点所组成的矢量确定为当前矢量;基于前一矢量和当前矢量,继续执行平滑拟合步骤。
在一些可选的实现方式中,处理单元803可以进一步用于通过如下方式基于前一矢量和当前矢量,继续执行平滑拟合步骤:将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;若前一矢量的长度小于长度阈值且当前矢量的长度小于长度阈值,则对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤。
在一些可选的实现方式中,处理单元803可以进一步用于通过如下方式基于前一矢量和当前矢量,继续执行平滑拟合步骤:将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;若前一矢量的长度和当前矢量的长度中的一个大于长度阈值且另一个小于长度阈值,则将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤。
在一些可选的实现方式中,处理单元803可以进一步用于通过如下方式基于前一矢量和当前矢量,继续执行平滑拟合步骤:将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;若前一矢量的长度和当前矢量的长度大于长度阈值,则确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值;若小于夹角阈值,则将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤。
在一些可选的实现方式中,处理单元803可以进一步用于通过如下方式基于前一矢量和当前矢量,继续执行平滑拟合步骤:将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;若前一矢量的长度和当前矢量的长度大于长度阈值,则确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值;若大于夹角阈值,则将目标轮廓点列表中的最后一个点与当前矢量的矢量起点构成的矢量确定为目标矢量,更新目标矢量的矢量终点,使得目标矢量处于水平方向或竖直方向,将目标矢量的矢量终点添加到目标轮廓点列表中,将当前矢量作为前一矢量,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行平滑拟合步骤。
在一些可选的实现方式中,房间轮廓包括至少一个子轮廓;以及处理单元803可以进一步用于通过如下方式对平滑拟合后的房间轮廓进行膨胀与耦合:对平滑拟合后的房间轮廓进行形态学运算,得到户型图的户型区域,其中,户型区域中各个子轮廓之间的缝隙已被填充;将当前模式设置为第一模式;执行如下第一步骤:记录当前房间区域的总面积为第一面积,其中,当前房间区域包括房间轮廓中的各个子轮廓的区域;对平滑拟合后的房间轮廓中的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置;执行如下第二步骤:利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成;若遍历完成,则确定当前房间区域的总面积作为第二面积;确定第二面积是否大于第一面积;若第二面积大于第一面积,则继续执行第一步骤。
在一些可选的实现方式中,在确定第二面积是否大于第一面积之后,处理单元803可以进一步用于若第二面积不大于第一面积,则确定当前模式是否为第一模式;若当前模式是第一模式,则将当前模式切换到第二模式,继续执行第一步骤。
在一些可选的实现方式中,在利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成之后,处理单元803可以进一步用于若未遍历完成,则执行如下第三步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第二步骤。
在一些可选的实现方式中,在利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,处理单元803可以进一步用于若未遍历完成,则对当前遍历的线段按照逆时针旋转目标角度的方向进行延展,延展出的部分与当前遍历的线段构造出矩形区域;确定当前模式是否为第一模式;若当前模式是第一模式,则确定矩形区域是否不完全落在户型图的户型区域内或与当前房间区域重叠;若是,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第三步骤。
在一些可选的实现方式中,在确定矩形区域是否不完全落在户型图的户型区域内或与当前房间区域重叠之后,处理单元803可以进一步用于若矩形区域完全落在户型图的户型区域内且不与当前房间区域重叠,则将矩形区域合并到当前房间区域中,以及更新当前遍历的子轮廓的轮廓点序列;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第三步骤。
在一些可选的实现方式中,在确定当前模式是否为第一模式之后,处理单元803可以进一步用于若当前模式不是第一模式,则确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值,其中,重合区域为矩形区域与户型图的户型区域之间重合的区域,不重合区域为矩形区域中除重合区域之外的其他区域;若是,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第三步骤。
在一些可选的实现方式中,在确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值之后,处理单元803可以进一步用于若矩形区域不与当前房间区域重叠且重合区域的面积与不重合区域的面积的比值大于等于比例阈值,则将矩形区域合并到当前房间区域中,以及更新当前遍历的子轮廓的轮廓点序列;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第三步骤。
在一些可选的实现方式中,房间轮廓包括至少一个子轮廓;以及搜索单元804可以进一步用于通过如下方式利用房间边界语义分割图,对处理后的房间轮廓进行边界语义搜索,得到处理后的房间轮廓中每条边上的边界元素的矢量数据:对处理后的房间轮廓的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置;执行如下第四步骤:利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成;若对处理后的房间轮廓遍历完成,则输出处理后的房间轮廓中每条边上的边界元素的矢量数据。
在一些可选的实现方式中,在利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成之后,搜索单元804可以进一步用于若未对处理后的房间轮廓遍历完成,则执行如下第五步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第四步骤。
在一些可选的实现方式中,在利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,搜索单元804可以进一步用于若未对当前遍历的线段所属的子轮廓遍历完成,则将目标深度设置为预设数值,其中,目标深度为沿着搜索方向对当前遍历的线段进行平移的深度;执行如下第六步骤:确定目标深度是否小于预设深度阈值;若大于等于深度阈值,则记录当前最大的有效语义比例值对应的边界语义搜索结果,其中,有效语义比例值为具有语义的线段长度与当前遍历的线段的长度的比值;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第五步骤。
在一些可选的实现方式中,在确定目标深度是否小于预设深度阈值之后,搜索单元804可以进一步用于若小于深度阈值,则将当前遍历的线段沿着搜索方向平移目标深度;在房间边界语义分割图上,搜索不同边界语义的位置,确定有效语义比例值;确定有效语义比例值是否小于预设有效语义比例阈值;若小于有效语义比例阈值,则对目标深度进行递增操作,继续执行第六步骤。
在一些可选的实现方式中,在确定有效语义比例值是否小于预设有效语义比例阈值之后,搜索单元804可以进一步用于若大于等于有效语义比例阈值,则记录当前最大的有效语义比例值对应的边界语义搜索结果;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第五步骤。
在一些可选的实现方式中,针对房间轮廓中的每条边,该条边上的边界元素的矢量数据包括:该条边的方向、该条边的坐标、该条边的范围和该条边上各个边界元素的范围。
在一些可选的实现方式中,修正单元805可以进一步用于通过如下方式对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据:执行如下第七步骤:利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成;若对处理后的房间轮廓遍历完成,则输出修正后的矢量数据。
在一些可选的实现方式中,在利用当前遍历的子轮廓的索引,确定是否对处理后的房间轮廓遍历完成之后,修正单元805可以进一步用于若未对处理后的房间轮廓遍历完成,则执行如下第八步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行第七步骤。
在一些可选的实现方式中,在利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,修正单元805可以进一步用于若未对当前遍历的线段所属的子轮廓遍历完成,则执行如下第九步骤:确定当前遍历的线段的边界语义是否遍历完全;若遍历完全,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行第八步骤。
在一些可选的实现方式中,在确定当前遍历的线段的边界语义是否遍历完全之后,修正单元805可以进一步用于若未遍历完全,则获取当前语义和其他子轮廓有重叠的轮廓线;确定轮廓线中语义线段是否与当前语义完全对应,其中,完全对应是轮廓线中语义线段的两个端点与表征当前语义的线段的两个端点完全重合;若完全对应,则索引下一边界语义,继续执行第九步骤。
在一些可选的实现方式中,在确定轮廓线中语义线段是否与当前语义完全对应之后,修正单元805可以进一步用于若未完全对应,则求取轮廓线与目标线段边界语义相同的交集线段,利用交集线段对轮廓线与目标线段进行更新,其中,目标线段为其他子轮廓中与轮廓线的边界语义相同但不完全相等的线段。
下面参考图9,其示出了适于用来实现本公开的实施例的电子设备(例如图1中的服务器)900的结构示意图。图9示出的电子设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储装置908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM 902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图9中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM 902被安装。在该计算机程序被处理装置901执行时,执行本公开的实施例的方法中限定的上述功能。需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图;利用房间区域语义分割图和房间边界语义分割图,提取房间的房间轮廓;对房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;利用房间边界语义分割图,对处理后的房间轮廓进行边界语义搜索,得到处理后的房间轮廓中每条边上的边界元素的矢量数据;对处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、提取单元、处理单元、搜索单元和修正单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取待处理的户型图、户型图的房间区域语义分割图和房间边界语义分割图的单元”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (27)
1.一种户型图的矢量化处理方法,其特征在于,包括:
获取待处理的户型图、所述户型图的房间区域语义分割图和房间边界语义分割图;
利用所述房间区域语义分割图和所述房间边界语义分割图,提取房间的房间轮廓;
对所述房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;
利用所述房间边界语义分割图,对所述处理后的房间轮廓进行边界语义搜索,得到所述处理后的房间轮廓中每条边上的边界元素的矢量数据;
对所述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
2.根据权利要求1所述的方法,其特征在于,房间轮廓包括至少一个子轮廓;以及
所述对所述房间轮廓进行平滑拟合处理,包括:
针对所述至少一个子轮廓中的每个子轮廓,将该子轮廓的第一个轮廓点添加到目标轮廓点列表中;以所述第一个轮廓点为起点,对该子轮廓的轮廓点序列中的轮廓点进行索引设置;将所述第一个轮廓点与下一个轮廓点所组成的矢量确定为前一矢量;
执行如下平滑拟合步骤:利用所述轮廓点序列中当前遍历的轮廓点的索引,确定是否遍历完成;若遍历完成,则输出目标轮廓点列表,生成平滑拟合处理后的房间轮廓;
若未遍历完成,则将当前遍历的轮廓点与当前遍历的轮廓点的下一个轮廓点所组成的矢量确定为当前矢量;基于前一矢量和当前矢量,继续执行所述平滑拟合步骤。
3.根据权利要求2所述的方法,其特征在于,所述基于前一矢量和当前矢量,继续执行所述平滑拟合步骤,包括:
将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;
若前一矢量的长度小于所述长度阈值且当前矢量的长度小于所述长度阈值,则对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行所述平滑拟合步骤。
4.根据权利要求2所述的方法,其特征在于,所述基于前一矢量和当前矢量,继续执行所述平滑拟合步骤,包括:
将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;
若前一矢量的长度和当前矢量的长度中的一个大于所述长度阈值且另一个小于所述长度阈值,则将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行所述平滑拟合步骤。
5.根据权利要求2所述的方法,其特征在于,所述基于前一矢量和当前矢量,继续执行所述平滑拟合步骤,包括:
将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;
若前一矢量的长度和当前矢量的长度大于所述长度阈值,则确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值;
若小于所述夹角阈值,则将前一矢量的矢量终点更新为当前矢量的矢量终点,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行所述平滑拟合步骤。
6.根据权利要求2所述的方法,其特征在于,所述基于前一矢量和当前矢量,继续执行所述平滑拟合步骤,包括:
将前一矢量的长度和当前矢量的长度与预设长度阈值进行比较;
若前一矢量的长度和当前矢量的长度大于所述长度阈值,则确定前一矢量和当前矢量的矢量夹角是否小于预设夹角阈值;
若大于所述夹角阈值,则将目标轮廓点列表中的最后一个点与当前矢量的矢量起点构成的矢量确定为目标矢量,更新目标矢量的矢量终点,使得目标矢量处于水平方向或竖直方向,将目标矢量的矢量终点添加到目标轮廓点列表中,将当前矢量作为前一矢量,对索引进行递增操作,将递增后的索引所指示的轮廓点作为当前遍历的轮廓点,继续执行所述平滑拟合步骤。
7.根据权利要求1所述的方法,其特征在于,房间轮廓包括至少一个子轮廓;以及
所述对平滑拟合后的房间轮廓进行膨胀与耦合,包括:
对平滑拟合后的房间轮廓进行形态学运算,得到所述户型图的户型区域,其中,所述户型区域中各个子轮廓之间的缝隙已被填充;
将当前模式设置为第一模式;
执行如下第一步骤:记录当前房间区域的总面积为第一面积,其中,当前房间区域包括房间轮廓中的各个子轮廓的区域;对所述平滑拟合后的房间轮廓中的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置;执行如下第二步骤:利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成;若遍历完成,则确定当前房间区域的总面积作为第二面积;确定第二面积是否大于第一面积;若第二面积大于第一面积,则继续执行所述第一步骤。
8.根据权利要求7所述的方法,其特征在于,在所述确定第二面积是否大于第一面积之后,所述方法还包括:
若第二面积不大于第一面积,则确定当前模式是否为第一模式;
若当前模式是第一模式,则将当前模式切换到第二模式,继续执行所述第一步骤。
9.根据权利要求7所述的方法,其特征在于,在所述利用当前遍历的子轮廓的索引,确定是否对各个子轮廓遍历完成之后,所述方法还包括:
若未遍历完成,则执行如下第三步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行所述第二步骤。
10.根据权利要求9所述的方法,其特征在于,在所述利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,所述方法还包括:
若未遍历完成,则对当前遍历的线段按照逆时针旋转目标角度的方向进行延展,延展出的部分与当前遍历的线段构造出矩形区域;确定当前模式是否为第一模式;若当前模式是第一模式,则确定矩形区域是否不完全落在所述户型图的户型区域内或与当前房间区域重叠;若是,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行所述第三步骤。
11.根据权利要求10所述的方法,其特征在于,在所述确定矩形区域是否不完全落在所述户型图的户型区域内或与当前房间区域重叠之后,所述方法还包括:
若矩形区域完全落在所述户型图的户型区域内且不与当前房间区域重叠,则将矩形区域合并到当前房间区域中,以及更新当前遍历的子轮廓的轮廓点序列;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行所述第三步骤。
12.根据权利要求10所述的方法,其特征在于,在所述确定当前模式是否为第一模式之后,所述方法还包括:
若当前模式不是第一模式,则确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值,其中,重合区域为矩形区域与所述户型图的户型区域之间重合的区域,不重合区域为矩形区域中除重合区域之外的其他区域;若是,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行所述第三步骤。
13.根据权利要求12所述的方法,其特征在于,在所述确定矩形区域是否与当前房间区域重叠或重合区域的面积与不重合区域的面积的比值小于预设比例阈值之后,所述方法还包括:
若矩形区域不与当前房间区域重叠且重合区域的面积与不重合区域的面积的比值大于等于所述比例阈值,则将矩形区域合并到当前房间区域中,以及更新当前遍历的子轮廓的轮廓点序列;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行所述第三步骤。
14.根据权利要求1所述的方法,其特征在于,房间轮廓包括至少一个子轮廓;以及
所述利用所述房间边界语义分割图,对所述处理后的房间轮廓进行边界语义搜索,得到所述处理后的房间轮廓中每条边上的边界元素的矢量数据,包括:
对所述处理后的房间轮廓的各个子轮廓进行索引设置,对每个子轮廓中的各个线段进行索引设置;
执行如下第四步骤:利用当前遍历的子轮廓的索引,确定是否对所述处理后的房间轮廓遍历完成;若对所述处理后的房间轮廓遍历完成,则输出所述处理后的房间轮廓中每条边上的边界元素的矢量数据。
15.根据权利要求14所述的方法,其特征在于,在所述利用当前遍历的子轮廓的索引,确定是否对所述处理后的房间轮廓遍历完成之后,所述方法还包括:
若未对所述处理后的房间轮廓遍历完成,则执行如下第五步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行所述第四步骤。
16.根据权利要求15所述的方法,其特征在于,在所述利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,所述方法还包括:
若未对当前遍历的线段所属的子轮廓遍历完成,则将目标深度设置为预设数值,其中,目标深度为沿着搜索方向对当前遍历的线段进行平移的深度;执行如下第六步骤:确定目标深度是否小于预设深度阈值;若大于等于所述深度阈值,则记录当前最大的有效语义比例值对应的边界语义搜索结果,其中,所述有效语义比例值为具有语义的线段长度与当前遍历的线段的长度的比值;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行所述第五步骤。
17.根据权利要求16所述的方法,其特征在于,在所述确定目标深度是否小于预设深度阈值之后,所述方法还包括:
若小于所述深度阈值,则将当前遍历的线段沿着搜索方向平移目标深度;在所述房间边界语义分割图中与当前遍历的线段相对应的线段上,搜索不同边界语义的位置,确定有效语义比例值;确定有效语义比例值是否小于预设有效语义比例阈值;若小于所述有效语义比例阈值,则对目标深度进行递增操作,继续执行所述第六步骤。
18.根据权利要求17所述的方法,其特征在于,在所述确定有效语义比例值是否小于预设有效语义比例阈值之后,所述方法还包括:
若大于等于所述有效语义比例阈值,则记录当前最大的有效语义比例值对应的边界语义搜索结果;对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行所述第五步骤。
19.根据权利要求1所述的方法,其特征在于,针对房间轮廓中的每条边,该条边上的边界元素的矢量数据包括:该条边的方向、该条边的坐标、该条边的范围和该条边上各个边界元素的范围。
20.根据权利要求1所述的方法,其特征在于,所述对所述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据,包括:
执行如下第七步骤:利用当前遍历的子轮廓的索引,确定是否对所述处理后的房间轮廓遍历完成;若对所述处理后的房间轮廓遍历完成,则输出修正后的矢量数据。
21.根据权利要求20所述的方法,其特征在于,在所述利用当前遍历的子轮廓的索引,确定是否对所述处理后的房间轮廓遍历完成之后,所述方法还包括:
若未对所述处理后的房间轮廓遍历完成,则执行如下第八步骤:利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成;若对当前遍历的线段所属的子轮廓遍历完成,则对当前遍历的子轮廓的索引进行递增操作,将递增后的索引所指示的子轮廓作为当前遍历的子轮廓,继续执行所述第七步骤。
22.根据权利要求21所述的方法,其特征在于,在所述利用当前遍历的线段的索引,确定是否对当前遍历的线段所属的子轮廓遍历完成之后,所述方法还包括:
若未对当前遍历的线段所属的子轮廓遍历完成,则执行如下第九步骤:确定当前遍历的线段的边界语义是否遍历完全;若遍历完全,则对当前遍历的线段的索引进行递增操作,将递增后的索引所指示的线段作为当前遍历的线段,继续执行所述第八步骤。
23.根据权利要求22所述的方法,其特征在于,在所述确定当前遍历的线段的边界语义是否遍历完全之后,所述方法还包括:
若未遍历完全,则获取当前语义和其他子轮廓有重叠的轮廓线;确定所述轮廓线中语义线段是否与当前语义完全对应,其中,完全对应是所述轮廓线中语义线段的两个端点与表征当前语义的线段的两个端点完全重合;若完全对应,则索引下一边界语义,继续执行所述第九步骤。
24.根据权利要求23所述的方法,其特征在于,在所述确定所述轮廓线中语义线段是否与当前语义完全对应之后,所述方法还包括:
若未完全对应,则求取所述轮廓线与目标线段边界语义相同的交集线段,利用所述交集线段对所述轮廓线与所述目标线段进行更新,其中,所述目标线段为其他子轮廓中与所述轮廓线的边界语义相同但不完全相等的线段。
25.一种户型图的矢量化处理装置,其特征在于,包括:
获取单元,用于获取待处理的户型图、所述户型图的房间区域语义分割图和房间边界语义分割图;
提取单元,用于利用所述房间区域语义分割图和所述房间边界语义分割图,提取房间的房间轮廓;
处理单元,用于对所述房间轮廓进行平滑拟合处理,对平滑拟合后的房间轮廓进行膨胀与耦合,得到处理后的房间轮廓;
搜索单元,用于利用所述房间边界语义分割图,对所述处理后的房间轮廓进行边界语义搜索,得到所述处理后的房间轮廓中每条边上的边界元素的矢量数据;
修正单元,用于对所述处理后的房间轮廓中每条边上的边界元素的矢量数据进行修正,得到修正后的矢量数据。
26.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-24中任一所述的方法。
27.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-24中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210063052.8A CN116503262A (zh) | 2022-01-19 | 2022-01-19 | 户型图的矢量化处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210063052.8A CN116503262A (zh) | 2022-01-19 | 2022-01-19 | 户型图的矢量化处理方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116503262A true CN116503262A (zh) | 2023-07-28 |
Family
ID=87320754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210063052.8A Pending CN116503262A (zh) | 2022-01-19 | 2022-01-19 | 户型图的矢量化处理方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116503262A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435110A (zh) * | 2023-10-11 | 2024-01-23 | 书行科技(北京)有限公司 | 一种图片处理方法、装置、电子设备和存储介质 |
CN117523036A (zh) * | 2024-01-05 | 2024-02-06 | 深圳大学 | 平面户型图结构化重建方法、装置、设备与介质 |
-
2022
- 2022-01-19 CN CN202210063052.8A patent/CN116503262A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435110A (zh) * | 2023-10-11 | 2024-01-23 | 书行科技(北京)有限公司 | 一种图片处理方法、装置、电子设备和存储介质 |
CN117523036A (zh) * | 2024-01-05 | 2024-02-06 | 深圳大学 | 平面户型图结构化重建方法、装置、设备与介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288413B2 (en) | Method for automatic modeling of an architecture based on an architectural drawing | |
CN116503262A (zh) | 户型图的矢量化处理方法、装置和电子设备 | |
US20070182762A1 (en) | Real-time interactive rubber sheeting using dynamic delaunay triangulation | |
CN108830787A (zh) | 图像变形的方法、装置及电子设备 | |
CN108320322B (zh) | 动画数据处理方法、装置、计算机设备和存储介质 | |
CN112424837B (zh) | 模型修正方法、装置、设备 | |
WO2020077913A1 (zh) | 图像处理方法、装置、硬件装置 | |
CN115830173A (zh) | 一种界面元素绘制方法及装置、设备、存储介质、产品 | |
CN114092642B (zh) | 一种三维户型模型生成方法、装置及设备 | |
CN113205601B (zh) | 漫游路径生成方法、装置、存储介质及电子设备 | |
CN116385859A (zh) | 图元识别方法、装置、计算机设备及其介质 | |
CN110472323B (zh) | 坡道三维模型构建方法、装置和电子设备 | |
CN110378948A (zh) | 3d模型重建方法、装置及电子设备 | |
Rudolf et al. | The meshing framework ViennaMesh for finite element applications | |
CN112465692A (zh) | 图像处理方法、装置、设备及存储介质 | |
CN115510689A (zh) | 脉状地质体建模方法、装置、设备及存储介质 | |
CN115481458A (zh) | 户型布局图的生成方法、装置、设备、存储介质及产品 | |
CN115578495A (zh) | 特效图像绘制方法、装置、设备及介质 | |
CN113506356A (zh) | 面积图的绘制方法、装置、可读介质和电子设备 | |
CN112199748A (zh) | 基于人类活动信息的平面图设计方法、装置及终端设备 | |
CN103593532A (zh) | 用于制图的数据处理方法和装置 | |
US10540741B2 (en) | Angular snapping of graphical objects in digital artboards | |
CN113538478B (zh) | 基于图像的箱体边界提取方法、系统、设备及存储介质 | |
CN114419264A (zh) | 虚拟交叉路口生成方法、装置、电子设备及存储介质 | |
CN116894933A (zh) | 一种三维模型比较方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |