一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

狭长面检测方法、终端以及存储介质与流程

2023-01-15 06:45:06 来源:中国专利 TAG:


1.本发明涉及cae仿真领域,尤其涉及一种狭长面检测方法、终端以及存储介质。


背景技术:

2.狭长面是指在模型中狭小细长的面,这些面由于特征尺寸小或是面内线与线之间的间隔过窄,容易导致在cae(computer assistant engineering,计算机辅助工程)仿真中出现网格划分质量低,甚至划分失败。因此常需要在仿真前对模型的狭长面进行检测和清理。
3.目前市场上已有多款软件开发有自主的狭长面检查功能,包括comsol和spaceclaim等。这些软件主要是通过输入面积和允许的最小容差尺寸,通过对面积快速筛选后计算面内线与线的最大间距和线的长度,如果线间距或者线长小于输入容差,则认为它是狭长面。但是spaceclaim和comsol目前只支持对全狭长面的检测,对于半狭长面并不支持,这也导致模型的细小特征无法得到彻底检测,难以有效提升网格划分质量。


技术实现要素:

4.为了克服现有技术的不足,本发明提出一种狭长面检测方法、终端以及存储介质,在面的边数不大于3时,通过狭长角的数量以及狭长角对应边的最大间距识别面的类型,并在面的边数大于3时,利用面的面积、面内的最长边识别狭长面,通过面中的狭长区域、狭长角识别半狭长面,从而能够检测出所有的半狭长面和全狭长面,使模型的细小特征能够得到全面检测,准确性高,提升了网格划分质量。
5.为解决上述问题,本发明采用的一个技术方案为:一种狭长面检测方法,所述狭长面检测方法包括:s101:根据待检测的面的信息获取面的边数,判断所述边数是否大于3,若是,则执行s103,若否,则执行s102;s102:基于边数、面内狭长角的信息确定面的类型,所述信息包括狭长角的数量、狭长角的两条边的最大间距;s103:根据面的面积以及面内的最长边的长度对所述面进行全狭长面识别,并在所述面不为全狭长面时,检测面中的狭长区域、狭长角,根据检测结果识别半狭长面。
6.进一步地,所述根据待检测的面的信息获取面的边数的步骤具体包括:根据所述信息获取面的id,基于所述id确定面的拓扑关系,通过所述拓扑关系获取面的边数。
7.进一步地,所述基于边数、面内狭长角的信息确定面的类型的步骤具体包括:判断所述边数是否为1;若是,则根据边的长度、面的面积进行全狭长面识别;若否,则根据边数、狭长角的信息确定面的类型。
8.两条边的切向量识别面内的狭长角,根据所述狭长角的数量、狭长角的两条边的最大间距确定面的类型。
9.进一步地,所述识别面内的狭长角的步骤具体包括:根据面的夹角对应的两条边的切向量计算所述夹角的角度,判断所述角度是否小于预设值;若是,则确定所述夹角为狭长角;若否,则确定所述夹角不是狭长角。
10.进一步地,所述根据边的长度、面的面积进行全狭长面识别的步骤包括:判断边是否为退化边;若是,则在所述面积小于指定容差与所述长度的乘积时,确定面为全狭长面;若否,则确定面不属于狭长面。
11.进一步地,所述检测面中的狭长区域、狭长角的步骤具体包括:获取面内不相邻两条边之间的最短距离,判断所述最短距离是否满足第一预设条件;若是,则通过其中一条边上的采样点到另一条边的投影进行狭长区域检测和识别,并在识别到狭长区域后,检测狭长角;若否,确定不存在狭长区域。
12.进一步地,所述检测狭长角的步骤具体包括:检测角度小于预设值的狭长角,判断检测到的狭长角是否朝向面内;若是,则确定存在狭长角;若否,则确定不存在狭长角。
13.基于相同的发明构思,本发明还提出一种智能终端,所述智能终端包括处理器、存储器,所述存储器存储有计算机程序,所述处理器与所述存储器连接,所述处理器根据所述计算机程序执行如上所述的狭长面检测方法。
14.基于相同的发明构思,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有程序数据,所述程序数据被用于执行如上所述的狭长面检测方法。
15.相比现有技术,本发明的有益效果在于:在面的边数不大于3时,通过狭长角的数量以及狭长角对应边的最大间距识别面的类型,并在面的边数大于3时,利用面的面积、面内的最长边识别狭长面,通过面中的狭长区域、狭长角识别半狭长面,从而能够检测出所有的半狭长面和全狭长面,使模型的细小特征能够得到全面检测,准确性高,提升了网格划分质量。
附图说明
16.图1为本发明狭长面检测方法一实施例的流程图;图2为本发明狭长面检测方法一实施例的示意图;图3为本发明狭长面检测方法中狭长角计算一实施例的示意图;图4为本发明边数为1或2时的狭长面检测方法一实施例的示意图;图5为本发明边数为3时的狭长面检测方法一实施例的示意图;图6为本发明狭长面检测方法中第一狭长区域一实施例的示意图;图7为本发明狭长面检测方法中第二狭长区域一实施例的示意图;图8为本发明狭长面检测方法中边与边误判情况一实施例的示意图;图9为本发明狭长面检测方法中边与边误判情况另一实施例的示意图;图10为本发明狭长面检测方法中边与边误判情况又一实施例的示意图;图11为本发明边数为4时的狭长面检测方法一实施例的流程图;图12为本发明智能终端一实施例的结构图;图13为本发明智能终端上的狭长面检测与清理一实施例的运行流程图;图14为本发明计算机可读存储介质一实施例的结构图。
具体实施方式
17.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。本技术还可以通过另外不同的具体实
施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,通常在此处附图中描述和示出的各本公开实施例在不冲突的前提下,可相互组合,其中的结构部件或功能模块可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
18.在本技术公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数生式的“一种”、“所述”和“该”也旨在包括多数生式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
19.请参阅图1-图11,其中,图1为本发明狭长面检测方法一实施例的流程图;图2为本发明狭长面检测方法一实施例的示意图;图3为本发明狭长面检测方法中狭长角计算一实施例的示意图;图4为本发明边数为1或2时的狭长面检测方法一实施例的示意图;图5为本发明边数为3时的狭长面检测方法一实施例的示意图;图6为本发明狭长面检测方法中第一狭长区域一实施例的示意图;图7为本发明狭长面检测方法中第二狭长区域一实施例的示意图;图8为本发明狭长面检测方法中边与边误判情况一实施例的示意图;图9为本发明狭长面检测方法中边与边误判情况另一实施例的示意图;图10为本发明狭长面检测方法中边与边误判情况又一实施例的示意图;图11为本发明边数为4时的狭长面检测方法一实施例的流程图。结合图1-图11对本发明的狭长面检测方法进行说明。
20.在本实施例中,执行狭长面检测方法的设备可以为手机、平板电脑、工作站、服务器以及其他能够在cae仿真中执行狭长面检测的智能终端。
21.其中,智能终端执行的狭长面检测方法包括:s101:根据待检测的面的信息获取面的边数,判断边数是否大于3,若是,则执行s103,若否,则执行s102。
22.在本实施例中,根据待检测的面的信息获取面的边数的步骤具体包括:根据信息获取面的id,基于id确定面的拓扑关系,通过拓扑关系获取面的边数。
23.具体的,待检测的面的信息包括每个面的id,获取面的id后,根据拓扑关系拿到一个面的所有边。其中,通过边对应的有向边查找一个面的所有边,从而得到面的边数。
24.在本实施例中,待检测的面的信息可以为用户输入的模型或面的信息。在获取待检测的面的信息后,智能终端还接收输入的用户参数,该用户参数包括指定容差。
25.s102:基于边数、面内狭长角的信息确定面的类型,信息包括狭长角的数量、狭长角的两条边的最大间距。
26.基于边数、面内狭长角的信息确定面的类型的步骤具体包括:判断边数是否为1;若是,则根据边的长度、面的面积进行全狭长面识别;若否,则根据边数、狭长角的信息确定面的类型。
27.其中,根据边的长度、面的面积进行全狭长面识别的步骤包括:判断边是否为退化边;若是,则在面积小于指定容差与长度的乘积时,确定面为全狭长面;若否,则确定面不属于狭长面。
28.具体的,当边的数量为1时,该面可能是退化边生成的面(退化边:位于曲面奇点位置,在三维空间中是一个点),在检测中先判断面的边是否是退化边,如果是退化边,则获取边的长度l、面的面积area,若面积满足area<dtol*l,则认为它是全狭长面。其中,dtol为指定容差。
29.在本实施例中,边数为2或3时,根据边数、狭长角的信息确定面的类型的步骤具体包括:识别面内的狭长角,根据狭长角的数量、狭长角的两条边的最大间距确定面的类型。
30.其中,识别面内的狭长角的步骤具体包括:根据面的夹角对应的两条边的向量计算夹角的角度,判断角度是否小于预设值;若是,则确定夹角为狭长角;若否,则确定夹角不是狭长角。
31.在本实施例中,两条边的向量为两条对应的切线的向量。具体的,查找两条边的公共点a,然后沿着两条线各自求对应的切线向量,再通过点乘向量积的方式求出实际的夹角的角度值。
32.在一个具体的实施例中,预设值为3
°
,将夹角度数小于3的夹角确定为狭长角。预设值是多次试验后总结的经验值,狭长角一般都在0~5度内,故取中间值3度。在其他实施例中,预设值也可以为0~5度内的其他数值。
33.在一个实施例中,边的数量为2,遍历面内的夹角,根据夹角的度数识别狭长角。并在识别到狭长角后,计算狭长角的两条边之间的最大间距dist,如果dist 《 dtol则认为它是全狭长面,如果dist 》 dtol则认为它是半狭长面。
34.在另一个实施例中,边的数量为3,遍历面内的夹角,根据夹角的度数识别狭长角。并在识别到狭长角后,根据狭长角的数量进行狭长面识别。其中,狭长角的数量为1时,计算狭长角的两条边之间的最大间距dist,如果dist 《 dtol则认为它是全狭长面,如果dist 》 dtol则认为它是半狭长面。在狭长角的数量为2时,分别计算两个狭长角对应的两条边之间的最大间距dist1、dist2,将dist1、dist2中的最大值与指定容差dtol进行比较。若最大值大于指定容差dtol,则面为半狭长面,若最大值小于指定容差dtol,则面为全狭长面。
35.s103:根据面的面积以及面内的最长边对面进行全狭长面识别,并在面不为全狭长面时,检测面中的狭长区域、狭长角,根据检测结果确定面的类型。
36.在本实施例中,边数大于等于4时,意味着一个面内除了狭长角的情况还可能存在多个狭长区域。对于边数大于等于4的面,本技术主要用了两种方法来检测,第一种是针对狭长区域的检测,第二种是针对狭长角的检测。
37.其中,在检测狭长区域前,先进行全狭长面识别,根据面的面积以及面内的最长边对面进行全狭长面识别的方式与边数为1时的全狭长面识别方式类似。具体的,计算面的面积darea以及面内最长边的长度dmzxlen,若darea<dtol*dmzxlen,则确定面为全狭长面。若不满足darea<dtol*dmzxlen则确定不是全狭长面。
38.在本实施例中,检测面中的狭长区域、狭长角的步骤具体包括:获取面内不相邻两条边之间的最短距离,判断最短距离是否满足第一预设条件;若是,则通过其中一条边上的采样点到另一条边的投影进行狭长区域检测和识别,并在识别到狭长区域后,检测狭长角;若否,确定不存在狭长区域。
39.其中,第一预设条件为面内不相邻两条边之间的最短距离小于指定容差。
40.具体的,狭长区域的检测本质上就是通过计算两两不相邻的edge(边)之间的距离,如果edge之间的最短距离dist小于指定容差dtol,则认为两条边edge之间可能存在半狭长区域。但是,在检测过程容易出现将正常的edge对认为是狭长区域。如图8-10所示,edge1和edge2之间的最小距离dist<dtol,但是edge1和edge2并未形成狭长区域,为避免这种情况发生,本技术增加了边与边投影的方式来辅助判断两条edge是否形成狭长区域。
41.通过其中一条边上的采样点到另一条边的投影进行狭长区域检测包括:设夹角的两条边为edge1、edge2,通过对edge1采样得到n个采样点,构建向量并将其投影到edge2的v0向量上,得到向量。计算投影参数向量。计算投影参数判断是否在edge2的参数域的范围(0,1)内,若是,且edge1和edge2之间的最小距离小于容差dtol,则确定检测到狭长区域,若否,则确定不相邻两条边未构成狭长区域。
42.在本实施例中,狭长区域分为第一狭长区域,第二狭长区域,其中,第一狭长区域中两条边的距离沿着小于dtol的方向不断减少,在几何清理只需要计算一对分割点;而第二狭长区域在几何清理时,需要计算两对分割点。两条边的间距在狭长区域内先减后增。因此,在检测到狭长区域后,还需要识别狭长区域的类型。
43.具体的,识别到构成狭长区域的两条边后,判断形成的狭长区域是否属于第二狭长区域。因此,在检测到两条边的最小距离小于指定容差dtol时,会对其中一条边均匀采样n个点,并计算采样点到另一条边的距离,如果距离呈现先减少后增加的趋势,则认为它是“第二狭长区域”。
44.在检测到狭长区域后,进一步检测狭长角,其中,检测狭长角的步骤具体包括:检测角度小于预设值的狭长角,判断检测到的狭长角是否朝向面内;若是,则确定存在狭长角;若否,则确定不存在狭长角。
45.具体的,检测狭长角的方式与上文对其他边数的面使用的狭长角检测方式相同,也是遍历面内边与边的夹角,判断该夹角是否小于预设值,在小于预设值时,确定该夹角为狭长角。
46.但是,有一种情况是需避免的,即狭长角朝面内延伸的情况,这种情况并不属于狭长面。因此,在检测到小于预设值的夹角后,在夹角的两条边分别均匀采样n个点,点与点一一对应连接成线并求连接线中点的坐标,判断中点的坐标是否在面内,如果都在面内,则确定夹角朝向面内,该夹角为符合需求的狭长角,即确定存在狭长角。若否,则确定夹角不朝向面内,确定不存在狭长角。
47.在完成上述狭长区域、狭长角检测后,将存在狭长区域且狭长角朝向面内的面或只存在狭长区域的面确定为半狭长面。
48.经过上述方式,完成对不同边数的面的狭长面检测,从而能够检测出模型中所有的半狭长面和全狭长面,使模型的细小特征能够得到全面检测,准确性高,提升了网格划分质量。
49.其中,在执行狭长面检测后,还可以进行半狭长面以及全狭长面的清理操作。该半狭长面的清理操作包括:获取半狭长面,根据半狭长面中的狭长区域的分割线分割半狭长面生成全狭长面,将全狭长面与相邻面合并。判断是否合并成功,并在合并不成功时,清除全狭长面,进行面缝合处理。
50.在本实施例中,半狭长面的清理过程,本质上就是把小于容差的狭长区域清除,只保留大于容差的面。因此,要将狭长区域从半狭长面中分割出来。所以首先会计算狭长区域内边与边之间的分割点对,利用该分割点对分割狭长区域。其中,在进行清理时,将检测到的狭长角所在区域作为狭长区域以进行分割点查找。
51.在本实施例中,根据半狭长面中的狭长区域分割半狭长面生成全狭长面的步骤具体包括:获取狭长区域的分割点,根据分割点形成的分割线分割半狭长面。
52.其中,获取狭长区域的分割点的步骤具体包括:获取狭长区域对应的两条边,根据两条边上的点之间的距离得到狭长区域的分割点。
53.具体的,在狭长区域为第一狭长区域时,根据两条边上的点之间的距离得到狭长区域的分割点的步骤具体包括:确定狭长区域为第一狭长区域,基于狭长区域的一条边的两个端点执行一次二分法,通过二分法查找到另一条边的距离为指定容差的中点,将中点以及所述中点在另一条边上的对应点确定为分割点。
54.在一个具体的实施例中,基于二分法的分割点搜索,狭长区域对应的两条边为edge1、edge2,将edge1的两个端点作为二分法的起始点startpnt和终点endpnt,通过寻找起始点和终点之间的中点midpnt到edge2的距离dist,判断dist与指定容差dtol的关系,如果dist大于dtol则将计算的中点作midpnt为新的起点(第一次中点是由边的起点和终点取中间值得到,接下来每次的中点位置计算会根据上一次中点计算得到的dist,如果dist小于dtol,则以上一次的中点为新的终点,起点跟上一次保持一致,计算新的中点;如果dist大于dtol,则以上一次的中点为新的起点,终点跟上一次保持一致,再计算新的中点);如果dist小于dtol则将计算的中点作为新的终点。然后继续计算起始点和终点的中点并计算新的dist,不断迭代直到dist等于dtol。这个时候的中点midpnt和它在edge2对应的点即为所求分割点,这两个点之间的距离为dtol。
55.在狭长区域为第二狭长区域时,根据两条边上的点之间的距离得到狭长区域的分割点的步骤包括:确定狭长区域为第二狭长区域,基于狭长区域的一条边的两个端点执行两次二分法,通过二分法查找到另一条边的距离为指定容差的中点,将中点以及中点在另一条边上的对应点确定为分割点,其中,两次二分法中,作为起点、终点的端点不同。
56.在一个具体的实施例中,狭长区域对应的两条边为edge1、edge2,对于第二狭长区域类型的分割点计算,则通过两次相反方向的二分法计算得到两对分割点(即第一次二分法是以edge1的左端点为起点start,右端点为end来计算分割点对,第二次二分法是以edge1的右端点为起点start,edge1的左端点为end来计算分割点,通过这种方式得到两对分割点对)在获取到分割点对后就可以创建分割线(得到分割点后连接分割点对的两个点创建一条直线,该直线作为分割线)。并分割线对半狭长面进行分割,分割完后我们就得到一个新的全狭长面和一个正常面。其中,全狭长面为分割点所在的边之间的距离小于指定容差的面。
57.在本实施例中,得到半狭长面中的全狭长面后,可以将检测得到的全狭长面以及半狭长面中的全狭长面一起进行接下来的清理操作。
58.将全狭长面与相邻面合并的步骤具体包括:获取全狭长面上分割线以外的边,计算边上的中点在全狭长面、相邻面上的法向量,基于法向量的夹角将全狭长面、相邻面合并。
59.具体的,基于法向量的夹角将全狭长面、相邻面合并的步骤包括:将最小的夹角对应的边确定为合并边,基于合并边合并全狭长面、相邻面。
60.在一个具体的实施例中,首先拿到新生成的全狭长面的所有边,并过滤掉边中分割线形成的边。得到过滤的边后取边的中点分别计算该点在全狭长面和相邻面的法向量,并计算两个法向量的夹角。比较不同的并取值最小的边作为合并边,通过该合并边进行全狭长面与相邻面的合并。这样可以提高合并面的成功率和合并质量。
61.在本实施例中,判断是否合并成功的步骤具体包括:通过预设的合并面算法处理合并结果,根据合并算法对应的返回值判断是否合并成功。
62.具体的,智能终端在合并时,调用合并面算法接口,通过合并面算法接口的返回值来判断是否合并成功。
63.在判断合并不成功后,删除该全狭长面,尝试对剩余的面进行缝合处理,若缝合成功,则提示修复成功;若缝合不成功,则提示修复失败。
64.基于相同的发明构思,本发明还提出一种智能终端,请参阅图12、13,图12为本发明智能终端一实施例的结构图;图13为本发明智能终端上的狭长面检测与清理一实施例的运行流程图,结合图12、13对本发明的智能终端进行具体说明。
65.在本实施例中,智能终端包括处理器、存储器,存储器存储有计算机程序,处理器与存储器连接,处理器通过计算机程序执行如权上述实施例所述的狭长面检测方法。
66.在一些实施例中,存储器可能包括但不限于高速随机存取存储器、非易失性存储器。例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程功能器件、分立门或者晶体管功能器件、分立硬件组件。
67.在一个实施例中,智能终端通过基于zwsim平台执行狭长面的检测和清理。智能终端显示操作界面,用户点击“狭长面清理”功能后进入对应界面,在界面内选择要检测的模型或者面后,输入狭长面检测的参数,点击“检测”,后台会调用狭长面的检测模块(如狭长面检测接口)进行狭长面检测,并将检测到的全狭长面和半狭长面返回操作界面。用户可以单独对面进行清理修复,也可以一键全部修复。点击“删除”时后台会调用狭长面的清理模块(如狭长面清理接口)进行狭长面清理操作,如果清理成功会更新操作界面的狭长面检测结果。
68.基于相同的发明构思,本发明还提出一种计算机可读存储介质,请参阅图14,图14为本发明计算机可读存储介质一实施例的结构图,结合图14对本发明的计算机可读存储介质进行说明。
69.在本实施例中,计算机可读存储介质存储有程序数据,该程序数据被用于执行如上述实施例所述的位图填充方法。
70.其中,计算机可读存储介质可包括,但不限于,软盘、光盘、cd-rom(紧致盘-只读存储器)、磁光盘、rom(只读存储器)、ram(随机存取存储器)、eprom(可擦除可编程只读存储器)、eeprom(电可擦除可编程只读存储器)、磁卡或光卡、闪存或适于存储机器可执行指令的其他类型的介质/机器可读介质。该计算机可读存储介质可以是未接入计算机设备的产品,也可以是已接入计算机设备使用的部件。
71.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献