多边形中凹凸点的识别方法及装置与流程

文档序号:13209404阅读:357来源:国知局
技术领域本发明涉及图像处理领域,具体而言,涉及一种多边形中凹凸点的识别方法及装置。

背景技术:
对多边形的顶点中的凹凸点进行识别的方法在计算几何、地理信息系统、人工智能、模式识别及计算机图形学等个方面都有广泛应用。目前的识别多边形中顶点的凹凸性常用角度法、矢量面积法、向量积法以及通过拓扑性进行计算等多种方法。这些方法可能需要计算面积,可能需要计算多阶行列式,都需要复杂的计算,计算量大。

技术实现要素:
有鉴于此,本发明实施例提供了一种多边形中凹凸点的识别方法及装置,在以预定时针顺序依次录入所有顶点后判定每个顶点的时针性后,通过判断每个顶点的时针性与预定时针顺序的一致性来判断每个顶点的凹凸性,计算简单,计算量小,以改善现有技术中计算量大的问题。为了实现上述目的,本发明采用的技术方案如下:一种多边形中凹凸点的识别方法,应用于建筑布图中的凹凸点识别,所述方法包括:确定所述多边形的所有顶点中的一个凸点;以所述凸点为起始点,按照预定时针顺序依次录入所述多边形的所有顶点;从第二个录入的顶点开始,依次确定每个顶点的时针性;判断每个顶点的时针性与所述预定时针顺序是否一致,若是,则判定所述顶点为凸点,若否,则判定所述顶点为凹点。一种多边形中凹凸点的识别装置,应用于建筑布图中的凹凸点识别,所述装置包括:起始凸点确定模块,用于确定所述多边形的所有顶点中的一个凸点;顶点录入模块,用于以所述凸点为起始点,按照预定时针顺序依次录入所述多边形的所有顶点;顶点时针性确认模块,用于从第二个录入的顶点开始,依次确定每个顶点的时针性;判断模块,用于判断每个顶点的时针性与所述预定时针顺序是否一致;凹凸点判定模块,当顶点的时针性与所述预定时针顺序一致,用于判定所述顶点为凸点,当顶点的时针性与所述预定时针顺序不一致,用于判定所述顶点为凹点。本发明实施例提供的多边形中凹凸点的识别方法及装置,在第一个录入点为凸点的情况下按预定时针顺序依次录入所有顶点,在所有顶点中,凸点的时针性与预定时针顺序一致,凹点的时针性与预定时针性不一致。于是,通过判断每个顶点的时针性与预定时针顺序的一致性,则可以得到每个顶点的凹凸性。在达到准确识别多边形中每个顶点的凹凸性的目的下,算法简单,计算量小。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1示出了本发明较佳实施例提供的计算机的方框示意图;图2示出了本发明第一实施例提供的多边形中凹凸点的识别方法的一种流程图;图3示出了一种利用本发明第一实施例提供的多边形中凹凸点的识别方法识别的多边形的示意图;图4示出了本发明第一实施例提供的多边形中凹凸点的识别方法在一种具体实施方式中的流程图;图5示出了本发明第一实施例提供的多边形中凹凸点的识别方法的一种应用场景示意图;图6示出了本发明第二实施例提供的多边形中凹凸点的识别装置的结构示意图;图7示出了本发明第二实施例提供的多边形中凹凸点的识别装置中的部分模块的结构示意图。具体实施方式下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。如图1所示,是本发明较佳实施例提供的计算机100的方框示意图。所述计算机100包括多边形中凹凸点的识别装置200、存储器101、存储控制器102、处理器103、外设接口104、输入输出单元105以及其他。所述存储器101、存储控制器102、处理器103、外设接口104、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述多边形中凹凸点的识别装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中的软件功能模块。所述处理器103用于执行存储器101中存储的可执行模块,例如所述多边形中凹凸点的识别装置包括的软件功能模块或计算机程序。其中,存储器101可以是,但不限于,随机存取存储器101(RandomAccessMemory,RAM),只读存储器101(ReadOnlyMemory,ROM),可编程只读存储器101(ProgrammableRead-OnlyMemory,PROM),可擦除只读存储器101(ErasableProgrammableRead-OnlyMemory,EPROM),电可擦除只读存储器101(ElectricErasableProgrammableRead-OnlyMemory,EEPROM)等。其中,存储器101用于存储程序,所述处理器103在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的流过程定义的服务器/计算机所执行的方法可以应用于处理器103中,或者由处理器103实现。处理器103可能是一种集成电路芯片,具有信号的处理能力。上述的处理器103可以是通用处理器103,包括中央处理器103(CentralProcessingUnit,简称CPU)、网络处理器103(NetworkProcessor,简称NP)等;还可以是数字信号处理器103(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器103可以是微处理器103或者该处理器103也可以是任何常规的处理器103等。所述外设接口104将各种输入/输入装置耦合至处理器103以及存储器101。在一些实施例中,外设接口104,处理器103以及存储控制器102可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。输入输出单元105用于提供给用户输入数据实现用户与所述服务器(或本地终端)的交互。所述输入输出单元105可以是,但不限于,鼠标和键盘等。第一实施例图2示出了本发明第一实施例提供的多边形中凹凸点的识别方法的流程图,该方法应用于建筑布图中的凹凸点识别,请参见图2,该方法包括:步骤S110:确定所述多边形的所有顶点中的一个凸点;在本实施例中,首先录入待处理的图像,该待处理的图像可以为包括需要进行凹凸点识别的多边形的建筑布图,进而对该待处理图像中的多边形进行凹凸点识别。本实施例所涉及到的用于识别凹凸点的多边形为所有顶点都处于同一平面的多边形。在平面内,可能包括多边形的多条边围成的封闭图形,也包括该多边形的多条边围成的封闭图形外的图形。为确保在录入所有顶点后,所要识别的多边形为多条边围成的封闭图形内对应的多边形,需要以所有顶点中的一个凸点作为录入的起始点。根据多边形的特性,横坐标值为最大值或者最小值的顶点一定是凸点,并且,纵坐标值为最大值或者最小值的顶点也一定是凸点。所以,在本实施例中,可以选取横坐标值为最大值或者最小值的顶点中的一个顶点作为用作起始点的凸点,也可以选取纵坐标值为最大值或者最小值的顶点中的一个顶点作为用作起始点的凸点。当然,在本实施中,具体选择哪一个为凸点的顶点作为起始点并不作为限定。步骤S120:以所述凸点为起始点,按照预定时针顺序依次录入所述多边形的所有顶点;在本步骤中,利用步骤S110中所确定的凸点作为录入的起始点,以预定时针顺序依次录入需要识别凹凸点的多边形的所有顶点。在本实施例中,每次录入时所选择的预定时针顺序并不作为限制,可以是逆时针顺序,也可以是顺时针顺序。例如,对于图3所示的坐标系中的多边形ABCD,A点的坐标为(x1,y1),B点的坐标为(x2,y2),C点的坐标为(x3,y3),可以选取横坐标值最小的A点作为录入的起始点,以顺时针作为预定时针顺序,则该多边形的顶点录入为ABCD。当然,若以横坐标值最大的C点作为录入的起始点,以逆时针作为预定时针顺序,则该多边形的顶点录入应为CBAD。步骤S130:从第二个录入的顶点开始,依次确定每个顶点的时针性;因为已知起始点为凸点,则从第二个录入的顶点开始判断每个顶点的时针性以确定其凹凸性。如图4所示,在一种具体实施方式中,步骤S130包括:步骤S131:判断待确定时针性顶点到所述待确定时针性顶点的后一个顶点形成的直线的斜率是否存在,若存在,则执行步骤S132,若不存在,则执行步骤S137。除第一个录入的顶点外,依次将每一个顶点作为待确定时针性顶点,确定其时针性,当然,当顺序录入的最后一个顶点作为待确定时针性顶点时,其后一个顶点为第一个录入的顶点。对于每一个待确定时针性顶点,其与其后一个顶点可以形成一条唯一的直线,判断该直线的斜率是否存在。在本实施中,具体判断方式可以是判断待确定时针性顶点的横坐标与其后一个顶点的横坐标是否相等,若相等,说明该待确定时针性顶点与其后一个顶点形成的直线垂直于横坐标轴,则该待确定时针性顶点与其后一个顶点形成的直线的斜率不存在。步骤S132:获取所述待确定时针性顶点的前一个顶点在所述直线上的投影点,所述投影点的投影方向平行于y轴。具体的,当待确定时针性顶点到其后一个顶点形成的直线的斜率存在,可以过该待确定时针性顶点的前一个顶点作纵坐标轴的平行线,则该平行线与直线存在交点,该交点对应为该待确定时针性顶点的前一个顶点在直线上的对应投影点。可以理解的,投影点的横坐标与待确定时针性顶点的前一个顶点的横坐标相等。继续以图3为例,以A点作为起始点按顺时针顺序录入顶点为ABCD,当B点作为待确定时针性顶点,B点到B点的后一个顶点C点形成的直线BC斜率存在,过B点的前一个顶点A点作纵坐标轴的平行线AA’,该平行线与直线BC存在交点,请参见图3,该交点为A’,则A’为待确定时针性顶点B点的前一个顶点A点在直线BC上的投影点。应当说明的是,在后续以图3为例的步骤中,均为在该场景下进行说明。步骤S133:根据所述投影点的坐标,获取所述投影点与所述待确定时针性顶点的前一个顶点的纵坐标之差,并且获取所述待确定时针性顶点的后一个顶点与所述待确定时针性顶点的横坐标之差。在本实施例中,利用投影点的纵坐标值减去相应的待确定时针性顶点的前一个顶点的纵坐标值即得到所需的投影点与待确定时针性顶点的前一个顶点的纵坐标之差,同样的,利用待确定时针性顶点的后一个顶点的横坐标值减去该待确定时针性顶点的横坐标值,即得到待确定时针性顶点的后一个顶点与该待确定时针性顶点的横坐标之差。投影点的纵坐标的计算方式可以是:获取所述直线的斜率;根据所述直线的斜率计算所述投影点的纵坐标。具体的,利用投影点的横坐标与待确定时针性顶点的横坐标的差值与直线的斜率的乘积再加上待确定时针性顶点的纵坐标即可以得到投影点的纵坐标。当然,在本实施例中,投影点的纵坐标的确定方式并不作为限定,可以根据具体情况确定。步骤S134:判断所述纵坐标之差与所述横坐标之差的正负性是否相同,若是,则执行步骤S135,若否,则执行步骤S136。步骤S135:判定所述待确定时针性顶点的时针性为顺时针。步骤S136:判定所述待确定时针性顶点的时针性为逆时针。若纵坐标之差与横坐标之差同为正值或者同为负值,则判定相应的待确定时针性顶点的时针性为顺时针;若纵坐标之差与横坐标之差一个为正值,另一个为负值,则判定相应的待确定时针性顶点的时针性为逆时针。如图3所示,以顶点A为起点,顺时针录入该多边形为ABCD,当B点作为待确定时针性顶点,B点与其后一个顶点C点的横坐标不相等,则直线BC斜率存在。作B点的前一个顶点A点平行于纵坐标轴的在直线BC上的投影点,得到投影点A’,请参见图3,投影点A’的横坐标与A点的横坐标相等,投影点A’的坐标表示为(x1,y’1)。由于直线BC的斜率k可以表示为k=(y3-y2)/(x3-x2),则投影点A’的纵坐标y’1=(y3-y2)/(x3-x2)*(x1-x2)+y2。得到投影点A’的纵坐标后,计算投影点A’与待确定时针性顶点B点的前一个顶点A点纵坐标之差为y’1-y1,计算B点的后一个顶点C点与B点的横坐标之差为x3-x2,对应图3中的多边形ABCD,y’1-y1得到的值为正数,x3-x2得到的值为正数,则可以判定,B点的时针性为顺时针。步骤S137:判断所述待确定时针性顶点的横坐标是否大于前一个顶点的横坐标,若是,则执行步骤S135,若否,则执行步骤S136。若待确定时针性顶点到待确定时针性顶点的后一个顶点形成的直线的斜率不存在,则可以通过比较待确定时针性顶点的横坐标与前一个顶点的横坐标的大小来判断待确定时针性顶点的时针性。若待确定时针性顶点的横坐标大于前一个顶点的横坐标,则可以判定待确定时针性顶点的时针性为顺时针,若待确定时针性顶点的横坐标小于前一个顶点的横坐标,则可以判定待确定时针性顶点的时针性为逆时针。步骤S140:判断每个顶点的时针性与所述预定时针顺序是否一致,若是,执行步骤S150,若否,则执行步骤S160。步骤S150:判定所述顶点为凸点。步骤S160:判定所述顶点为凹点。由于在平面内的多边形中,凸点的时针性与多边形的录入时针性一致,在获得每个顶点的时针性后,通过判断每个顶点的时针性与预定时针顺序是否一致来判断相应的顶点为凹点还是为凸点。即当录入该多边形顶点的预定时针顺序为顺时针,若某个顶点的时针性也是顺时针,则该顶点为凸点,若某个顶点的时针性是逆时针,则该顶点为凹点。当录入该多边形顶点的预定时针顺序为逆时针,若某个顶点的时针性为逆时针,则该顶点为凸点,否则该顶点为凹点。如图3所示,在以A点作为起始点顺时针录入多边形为ABCD后,判定B点的时针性为顺时针,则可以判定B点为凸点。在建筑布图的某些处理过程中,需要对建筑布图中的多边形进行凹凸点识别。例如,当需要获知环绕某建筑物的道路时,需要对该建筑物对应的建筑布图形成的多边形的各条边进行等距离位移扩展。对于不存在凹点的凸多边形,只需要直接使凸多边形的各条边向该凸多边形四周扩展即可达到的扩展的目的,但是在存在凹点的凹多边形中,对于凹点对应的边,需要根据具体情况确定扩展方向,于是需要对建筑布图中形成的多边形进行凹凸点识别。例如,图5示出了某建筑物在平面上形成的建筑布图中表现该建筑物的多边形abcdefgh,通过本方法实施例提供的多边形中的凹凸点识别方法可知,该多边形中的凹点为点f和点e。在获知环绕该建筑物的道路时,对该建筑物进行等距离位移扩展,但是对于凹点对应的边,不能按照凸多边形的扩展方式扩展。如,对于凹点e对应的ed边,若按照凸多边形的扩展方式直接扩展,则ed边的等距离位移扩展方向可能为bc边所在方向,而对于ed边的实际扩展方向应为如图5所示的fg所在方向,于是,需要在凹凸点识别后对于凹点对应的边采用其他扩展方式进行扩展。请参见图5,阴影部分为通过等距离位移扩展获得的环绕该建筑物的道路的图像。当然,可以理解的,该方法也可以应用于除建筑布图以外的其他图像中的凹凸点识别。综上所述,本发明实施例提供的多边形中凹凸点的识别方法,应用于建筑布图中的凹凸点识别。该方法在以预定时针顺序依次录入多边形的所有顶点后,通过依次判定每个顶点的时针性与录入多边形顶点的预定时针顺序的一致性来确定每个顶点的凹凸性,计算方式简单精确,可应用于复杂的多边形,且计算量小。第二实施例如图6所示,本实施例提供了一种多边形中凹凸点的识别装置200,该装置应用于建筑布图中的凹凸点识别,请参见图6,该装置包括:起始凸点确定模块210,用于确定所述多边形的所有顶点中的一个凸点。顶点录入模块220,用于以所述凸点为起始点,按照预定时针顺序依次录入所述多边形的所有顶点。顶点时针性确认模块230,用于从第二个录入的顶点开始,依次确定每个顶点的时针性。判断模块240,用于判断每个顶点的时针性与所述预定时针顺序是否一致。凹凸点判定模块250,当顶点的时针性与所述预定时针顺序一致,用于判定所述顶点为凸点,当顶点的时针性与所述预定时针顺序不一致,用于判定所述顶点为凹点。进一步的,如图7所示,顶点时针性确认模块230包括:斜率判断单元231,用于判断待确定时针性顶点到所述待确定时针性顶点的后一个顶点形成的直线的斜率是否存在。投影点获取单元232,当所述斜率判断模块判断所述直线的斜率存在,用于获取所述待确定时针性顶点的前一个顶点在所述直线上的投影点,所述投影点的投影方向平行于y轴。坐标差获取单元233,用于根据所述投影点的坐标,获取所述投影点与所述待确定时针性顶点的前一个顶点的纵坐标之差,并且获取所述待确定时针性顶点的后一个顶点与所述待确定时针性顶点的横坐标之差。正负判断单元234,用于判断所述纵坐标之差与所述横坐标之差的正负性是否相同。时针性判定单元235,若所述正负判断单元判断所述纵坐标之差与所述横坐标之差的正负性相同,用于判定所述待确定时针性顶点的时针性为顺时针,若所述正负判断单元判断所述纵坐标之差与所述横坐标之差的正负性不相同,用于判定所述待确定时针性顶点的时针性为逆时针。当所述斜率判断单元231判断所述直线的斜率不存在,所述正负判断单元234还用于判断所述待确定时针性顶点的横坐标是否大于前一个顶点的横坐标。当所述正负判断单元234判断所述待确定时针性顶点的横坐标大于所述前一个顶点的横坐标,所述时针性判定单元235还用于判定所述待确定时针性顶点的时针性为顺时针。当所述正负判断单元234判断所述待确定时针性顶点的横坐标小于所述前一个顶点的横坐标,所述时针性判定单元235还用于判定所述待确定时针性顶点的时针性为逆时针。进一步的,在本实施例中,坐标差获取单元233包括斜率获取子单元,用于获取所述直线的斜率;投影点纵坐标获取子单元,用于根据所述直线的斜率计算所述投影点的纵坐标。进一步的,在本实施例提供的一种实施方式中,起始凸点确定模块210用于确定所述多边形的所有顶点中横坐标值为最大值或最小值的顶点作为所述凸点。在本实施例的提供的另一种实施方式中,所述起始凸点确定模块210用于确定所述多边形的所有顶点中纵坐标值为最大值或最小值的顶点作为所述凸点。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1