CN117687543A - 三维模型规则曲面提取方法、装置、电子设备及存储介质 - Google Patents

三维模型规则曲面提取方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117687543A
CN117687543A CN202311451185.3A CN202311451185A CN117687543A CN 117687543 A CN117687543 A CN 117687543A CN 202311451185 A CN202311451185 A CN 202311451185A CN 117687543 A CN117687543 A CN 117687543A
Authority
CN
China
Prior art keywords
triangular
patch
target
patches
dimensional model
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
Application number
CN202311451185.3A
Other languages
English (en)
Inventor
苏凯
冯云
吕健宇
吴祖静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guilin Measuring & Cutting Tool Co ltd
Original Assignee
Guilin Measuring & Cutting Tool Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guilin Measuring & Cutting Tool Co ltd filed Critical Guilin Measuring & Cutting Tool Co ltd
Priority to CN202311451185.3A priority Critical patent/CN117687543A/zh
Publication of CN117687543A publication Critical patent/CN117687543A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本申请提供一种三维模型规则曲面提取方法、装置、电子设备及存储介质,涉及数据提取技术领域。方法包括:首先获取点击事件在屏幕坐标系上的触发点坐标,然后将触发点坐标转换到三维模型上,得到三维点,然后将三维点所在的三角面片作为基准三角面片,搜索得到第一目标三角面片及其对应的第一邻域信息,最后根据基准三角面片、各个第一目标三角面片和第一邻域信息,从各个第一目标三角面片中提取第二目标三角面片,并将各个第二目标三角面片组成对应形状的规则曲面。如此,可以改善传统曲面提取算法存在前置条件复杂、步骤冗长、提取效果不稳定的问题。

Description

三维模型规则曲面提取方法、装置、电子设备及存储介质
技术领域
本发明涉及数据提取技术领域,具体而言,涉及一种三维模型规则曲面提取方法、装置、电子设备及存储介质。
背景技术
伴随着非接触式测量及相关技术的不断发展,三维扫描技术和非接触式测量技术在现代工业的各个领域得到广泛应用。为满足三维非接触测量的要求,特别是对于常见的如平面、球面、圆柱面和圆锥面等的表面,必须进行三维数据上的曲面提取和拟合。目前,多数曲面提取算法基于点云的曲面提取和拟合,或者使用区域生长法对整个点云进行同种曲面的分割。
在现有曲面提取方式中,进行曲面拟合的过程需要通过点云的高斯图来估计曲面的初值,同时要求点云中大部分点都是曲面上的点,才能拟合出较好的曲面。而在使用区域生长算法时,需要根据点云的曲率选取合适的种子点,才能得到较好的分割结果。存在前置条件复杂、步骤冗长、提取效果不稳定的问题。
发明内容
有鉴于此,本申请实施例的目的在于提供一种三维模型规则曲面提取方法、装置、电子设备及存储介质,能够改善传统曲面提取算法存在前置条件复杂、步骤冗长、提取效果不稳定的问题。
为实现上述技术目的,本申请采用的技术方案如下:
第一方面,本申请实施例提供了一种三维模型规则曲面提取方法,所述方法包括:
S1、响应于用户触发的点击事件,获取所述点击事件在屏幕坐标系上的触发点坐标;
S2、根据所述屏幕坐标系和模型坐标系之间的坐标转换关系,将所述触发点坐标转换到三维模型上,以确定所述触发点坐标对应的三维点;
S3、所述模型坐标系对应的所述三维模型中包括多个三角面片,确定所述三维点所在的三角面片作为基准三角面片、所述多个三角面片中的其余三角面片作为待索引三角面片;
S4、搜索满足第一阈值条件的各个所述待索引三角面片以作为第一目标三角面片,每个所述第一目标三角面片包括第一邻域信息,所述第一邻域信息包括所述第一目标三角面片的各顶点坐标、重心和法向量,所述第一阈值条件包括所述待索引三角面片到所述基准三角面片所在的平面的距离小于第一阈值、所述基准三角面片的法向量与所述待索引三角面片的法向量点乘大于第二阈值、所述待索引三角面片与所述基准三角面片相邻;
S5、对于每个所述第一目标三角面片,将所述第一目标三角面片作为新的所述基准三角面片,重复执行S4-S5,直到获取的所述第一目标三角面片为边缘面片,则停止搜索;
S6、根据所述基准三角面片、各个所述第一目标三角面片和每个所述第一目标三角面片对应的所述第一邻域信息,从各个所述第一目标三角面片中提取第二目标三角面片,并将各个所述第二目标三角面片组成对应形状的规则曲面。
结合第一方面,在一些可选的实施方式中,步骤S2包括:
通过预设的投影系统逆算方程,确定所述触发点坐标投影到近平面和远平面上的点;
根据所述触发点坐标、以及所述触发点坐标投影到近平面和远平面上的点,确定一条射线,并基于预设规则,从所述射线与所述三维模型相交形成的多个交点中确定所述三维点,其中,所述三维模型位于所述近平面和所述远平面之间,所述射线自所述触发点坐标出发,依次经过所述触发点坐标投影到近平面和远平面上的点。
结合第一方面,在一些可选的实施方式中,所述投影系统逆算方程如下:
式中,znear/far表示所述触发点坐标投影到近平面/远平面的点的深度值,(x,y)表示所述触发点坐标,(xc,yc)表示触发点在屏幕上归一化后的坐标,(xp,yp,zp,wp)表示缩放情况下,触发点在模型坐标系下的四维向量,(xn,yn,zn)表示所述触发点坐标投影到近平面/远平面上的点在模型坐标系下的坐标,w表示屏幕显示窗口的宽,h表示屏幕显示窗口的高,wp表示缩放比例,Matprojection表示投影矩阵,Matview表示视角矩阵,Matmodel表示模型矩阵。
结合第一方面,在一些可选的实施方式中,根据所述触发点坐标、以及所述触发点坐标投影到近平面和远平面上的点,确定一条射线,并基于预设规则,从所述射线与所述三维模型相交形成的多个交点中确定所述三维点,包括:
将所述触发点坐标作为起点,投射所述射线,所述射线依次经过所述触发点坐标投射到近平面上的点、三维模型以及所述触发点坐标投射到远平面上的点;
根据所述射线以及预设的交点计算公式,确定所述射线与所述三维模型的所有交点,并基于所述预设规则,从所述所有交点中确定满足所述预设规则的点为目标交点,作为所述三维点,其中,所述交点计算公式如下:
p+d×t=(1-m-n)v0+mv1+nv2
式中,p+d×t表示所述射线上的任意一点,p表示所述触发点坐标投影到近平面上的点,d表示所述射线的方向向量,t为任意非负整数,v0、v1、v2分别表示构成所述三维模型的三角面片的三个顶点坐标,m∈[0,+∞),n∈[0,+∞),m+n∈(-∞,1]。
结合第一方面,在一些可选的实施方式中,步骤S6包括:
S601、将所述基准三角面片、所述第一目标三角面片以及所述第一邻域信息作为拟合基础,拟合不同形状的曲面参数,所述曲面参数包括圆柱面参数、圆锥面参数或球面参数中的任一种;
S602、对于每种所述曲面参数,确定所述曲面参数对应的第二阈值条件,并根据所述基准三角面片,基于所述第二阈值条件搜索得到所述第二目标三角面片,所述第二目标三角面片表征满足所述第二阈值条件且与所述基准三角面片相邻的所述第一目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量;
S603、对于每种所述曲面参数,将所述第二目标三角面片作为新的基准三角面片,重复步骤S602至步骤S603,直至搜索得到的所述第二目标三角面片为边缘面片;
S604、对于每种所述曲面参数,将所述拟合基础替换为所述第二目标三角面片和对应的所述第二邻域信息,并循环步骤S601至步骤S604,直至循环的次数大于预设次数或者所述曲面参数的数值变化小于第三阈值;
S605、对于每种所述曲面参数,提取最后一次循环得到的第二目标三角面片,并将所述最后一次循环得到的第二目标三角面片进行组合得到对应形状的规则曲面。
结合第一方面,在一些可选的实施方式中,步骤S602包括:
当所述曲面参数为圆柱面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片到圆柱面轴线的距离小于等于第四阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量,所述圆柱面参数包括圆柱面的轴线和半径;
或者,当所述曲面参数为圆锥面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片所在母线方向与圆锥面轴线的夹角相较半顶角的差值小于等于第五阈值、反正弦弧度转换为角度后与半顶角的差值小于等于第六阈值作为所述第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述圆锥面参数包括圆锥面的轴线、顶点和半顶角,所述反正弦表示所述基准三角面片相邻的三角面片的重心到圆锥面轴线的距离、以及所述基准三角面片相邻的三角面片的重心到圆锥面顶点的距离,二者的比值;
或者,当所述曲面参数为球面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片的重心到球心的距离与球面半径的差值小于等于第七阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述球面参数包括球面的球心和半径。
结合第一方面,在一些可选的实施方式中,在步骤S1之前,所述方法还包括:
对所述三维模型中的所述多个三角面片进行预处理,以判断每个所述多个三角面片是否为边缘面片。
第二方面,本申请实施例还提供一种三维模型规则曲面提取装置,所述装置包括:
获取单元,用于响应于用户触发的点击事件,获取所述点击事件在屏幕坐标系上的触发点坐标;
坐标转换单元,用于根据所述屏幕坐标系和模型坐标系之间的坐标转换关系,将所述触发点坐标转换到三维模型上,以确定所述触发点坐标对应的三维点;
确定单元,所述模型坐标系对应的所述三维模型中包括多个三角面片,所述确定单元用于确定所述三维点所在的三角面片作为基准三角面片、所述多个三角面片中的其余三角面片作为待索引三角面片;
搜索单元,用于搜索满足第一阈值条件的各个所述待索引三角面片以作为第一目标三角面片,每个所述第一目标三角面片包括第一邻域信息,所述第一邻域信息包括所述第一目标三角面片的各顶点坐标、重心和法向量,所述第一阈值条件包括所述待索引三角面片到所述基准三角面片所在的平面的距离小于第一阈值、所述基准三角面片的法向量与所述待索引三角面片的法向量点乘大于第二阈值,所述待索引三角面片与所述基准三角面片相邻;
循环单元,用于对于每个所述第一目标三角面片,将所述第一目标三角面片作为新的所述基准三角面片,重复执行S4-S5,直到获取的所述第一目标三角面片为边缘面片,则停止搜索;
提取单元,用于根据所述基准三角面片、各个所述第一目标三角面片和每个所述第一目标三角面片对应的所述第一邻域信息,从各个所述第一目标三角面片中提取第二目标三角面片,并将各个所述第二目标三角面片组成对应形状的规则曲面。
第三方面,本申请实施例还提供一种电子设备,所述电子设备包括相互耦合的处理器及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行上述的方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述的方法。
采用上述技术方案的发明,具有如下优点:
在本申请提供的技术方案中,首先获取点击事件在屏幕坐标系上的触发点坐标,然后将触发点坐标转换到三维模型上,从而确定触发点坐标对应的三维点,然后将三维点所在的三角面片作为基准三角面片,搜索得到第一目标三角面片及其对应的第一邻域信息,最后根据基准三角面片、各个第一目标三角面片和第一邻域信息,从各个第一目标三角面片中提取第二目标三角面片,并将各个第二目标三角面片组成对应形状的规则曲面。如此,可以改善传统曲面提取算法存在前置条件复杂、步骤冗长、提取效果不稳定的问题。
附图说明
本申请可以通过附图给出的非限定性实施例进一步说明。应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的电子设备的框图。
图2为本申请实施例提供的三维模型规则曲面提取方法的流程示意图。
图3为本申请实施例提供的三角面片数据的结构示意图。
图4为本申请实施例提供的邻边数据结构的示意图。
图5为本申请实施例提供的邻边数据结构的构建流程示意图。
图6为本申请实施例提供的邻边索引的记录过程示意图。
图7为本申请实施例提供的射线投影的示意图。
图8为本申请实施例提供的圆柱面拟合的示意图。
图9为本申请实施例提供的圆锥面拟合的示意图。
图10为本申请实施例提供的球面拟合的示意图。
图11为本申请实施例提供的圆柱面提取的流程示意图。
图12为本申请实施例提供的圆柱面提取结果的示意图。
图13为本申请实施例提供的圆锥面提取的流程示意图。
图14为本申请实施例提供的圆锥面提取结果的示意图。
图15为本申请实施例提供的球面提取的流程示意图。
图16为本申请实施例提供的球面提取结果的示意图。
图17为本申请实施例提供的边缘面片判断标准示意图。
图18为本申请实施例提供的边缘面片判断的流程示意图。
图19为本申请实施例提供的三维模型规则曲面提取装置的框图。
图标:100-电子设备;101-处理器;102-存储器;200-三维模型规则曲面提取装置;210-获取单元;220-坐标转换单元;230-确定单元;240-搜索单元;250-循环单元;260-提取单元。
具体实施方式
以下将结合附图和具体实施例对本申请进行详细说明,需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号,附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,本申请实施例提供一种电子设备100可以包括处理器101及存储器102。存储器102内存储计算机程序,当计算机程序被所述处理器101执行时,使得电子设备100能够执行下述三维模型规则曲面提取方法中的相应步骤。
在本实施例中,电子设备100可以是个人计算机、笔记本电脑、服务器等。用于响应于用户触发的点击事件,获取点击事件的触发点坐标,并将触发点坐标转换为待提取的三维模型上的三维点,然后将三维点所在的三角面片作为基准三角面片,搜索得到第一目标三角面片及其对应的第一邻域信息,然后根据第一目标三角面片和第一邻域信息,从第一目标三角面片中提取第二目标三角面片,并将每个第二目标三角面片进行组合得到规则曲面。
请参照图2,本申请还提供一种三维模型规则曲面提取方法,可以应用于上述电子设备100中,由电子设备100执行或实现方法中的各步骤。其中,三维模型规则曲面提取方法可以包括如下步骤:
步骤S1、响应于用户触发的点击事件,获取所述点击事件在屏幕坐标系上的触发点坐标;
步骤S2、根据所述屏幕坐标系和模型坐标系之间的坐标转换关系,将所述触发点坐标转换到三维模型上,以确定所述触发点坐标对应的三维点;
步骤S3、所述模型坐标系对应的所述三维模型中包括多个三角面片,确定所述三维点所在的三角面片作为基准三角面片、所述多个三角面片中的其余三角面片作为待索引三角面片;
步骤S4、搜索满足第一阈值条件的各个所述待索引三角面片以作为第一目标三角面片,每个所述第一目标三角面片包括第一邻域信息,所述第一邻域信息包括所述第一目标三角面片的各顶点坐标、重心和法向量,所述第一阈值条件包括所述待索引三角面片到所述基准三角面片所在的平面的距离小于第一阈值、所述基准三角面片的法向量与所述待索引三角面片的法向量点乘大于第二阈值、所述待索引三角面片与所述基准三角面片相邻;
步骤S5、对于每个所述第一目标三角面片,将所述第一目标三角面片作为新的所述基准三角面片,重复执行S4-S5,直到获取的所述第一目标三角面片为边缘面片,则停止搜索;
步骤S6、根据所述基准三角面片、各个所述第一目标三角面片和每个所述第一目标三角面片对应的所述第一邻域信息,从各个所述第一目标三角面片中提取第二目标三角面片,并将各个所述第二目标三角面片组成对应形状的规则曲面。
在上述的实施方式中,首先获取点击事件在屏幕坐标系上的触发点坐标,然后将触发点坐标转换到三维模型上,从而确定触发点坐标对应的三维点,然后将三维点所在的三角面片作为基准三角面片,搜索得到第一目标三角面片及其对应的第一邻域信息,最后根据基准三角面片、各个第一目标三角面片和第一邻域信息,从各个第一目标三角面片中提取第二目标三角面片,并将各个第二目标三角面片组成对应形状的规则曲面。如此,可以改善传统曲面提取算法存在前置条件复杂、步骤冗长、提取效果不稳定的问题。
下面将对三维模型规则曲面提取方法的各步骤进行详细阐述,如下:
可理解的,为便于上述方法的实施,在步骤S1之前,首先通过OpenGL(OpenGraphics Library,开放式图形库)调用GPU(Graphics Processing Unit,图像处理器)进行三维模型的显示,该三维模型可以是由三维扫描仪扫描得到的点云经过三角化之后得到的,即该三维模型由多个三角面片构成,该三维模型的最大长宽高可以为300mm×300mm×200mm,且三维扫描仪扫描得到的点云为密集的点云,即点云的数量平均值为150万左右,经过三角化之后三角面片的数量平均值为300万左右。
完成三维模型显示后,构建三角面片数据以及邻边数据结构。三角面片数据构建过程为,读取该三维模型,通常三维模型经三角化后,模型至少携带有每个三角面片的三个顶点坐标,若模型中还携带有三角面片的重心和法向量,直接读取该重心和法向量,并连同三角面片的顶点坐标,一并存入三角面片数据中;若模型中未携带三角面片的重心和法向量,则通过三角面片的顶点坐标计算出该三角面片的重心和法向量,计算公式如下:
式中,center表示三角面片的重心,normal表示三角面片的法向量,p0、p1、p2表示三角面片的三个顶点,×表示向量叉乘,‖·‖表示向量的模。
可理解的,三角面片数据中还应当包含每个三角面片的数字编号,以对不同三角面片进行区分和调用。
参照图3,确定三角面片的三个顶点坐标、重心和法向量后,存入如图3所示的数据结构中,以得到上述三角面片数据。
邻边数据结构包括三角面片索引(即前述每个三角面片的数字编号)、邻边索引、搜索标志和边缘标志,邻边数据结构的构建过程为,参照图4和图5,根据上述三角面片数据,遍历构成三维模型的每个三角面片,并记录三角面片自身的三角面片索引、以及三角面片每一条边对应的邻边索引(即与三角面片共用一条边的其他三角面片的索引)。示例性的,参照图6,对于四块索引分别为0、1、2、3且相邻的三角面片,以索引为0的三角面片作为中心面片,该中心面片由L0、L1、L2三条边构成,其中,索引为1的三角面片与中心面片共用L0边,索引为2的三角面片与中心面片共用L1边,索引为3的三角面片与中心面片共用L2边,将边L0、L1、L2对应的相邻三角面片的索引存入预先构建的初始值为空的邻边索引neighbor{}中,即中心面片(索引为0的三角面片)对应的邻边索引为neighbor{1,2,3}。
上述邻边数据结构中,搜索标志用于在后续三角面片的搜索过程中,表征当前索引对应的三角面片是否被搜索,防止重复搜索,边缘标志用于表征当前索引对应的三角面片是否为边缘面片。
在步骤S1中,用户可以根据自身需求,通过输入设备(例如鼠标、电子触控屏等,本实施例以鼠标为例),点击想要提取的规则曲面,通过上述电子设备100,响应于用户触发的点击事件,获取用户点击位置的屏幕坐标,即作为触发点坐标。
在步骤S2中,根据所述屏幕坐标系和模型坐标系之间的坐标转换关系,将所述触发点坐标转换到三维模型上,以确定所述触发点坐标对应的三维点,可以包括:
通过预设的投影系统逆算方程,确定所述触发点坐标投影到近平面和远平面上的点;
根据所述触发点坐标、以及所述触发点坐标投影到近平面和远平面上的点,确定一条射线,并基于预设规则,从所述射线与所述三维模型相交形成的多个交点中确定所述三维点,其中,所述三维模型位于所述近平面和所述远平面之间,所述射线自所述触发点坐标出发,依次经过所述触发点坐标投影到近平面和远平面上的点。
在本实施例中,投影系统逆算方程可以如下:
式中,(x,y)表示所述触发点坐标,w表示屏幕显示窗口的宽,h表示屏幕显示窗口的高。在本实施例中,先根据屏幕显示窗口的宽高将触发点坐标归一化为(-1.0,1.0)之间的投影屏幕坐标(xc,yc)。znear/far表示所述触发点坐标投影在近平面/远平面上的点的深度值(可理解为Z轴值),将深度值加入到触发点坐标中得到触发点在三维投影坐标系下三维坐标(xc,yc,znear/far)。Matprojection表示投影矩阵,Matview表示视角矩阵,Matmodel表示模型矩阵,都为4×4的矩阵。根据空间投影的原理,先将触发点的三维坐标扩展到四维,然后乘以投影、视角、模型矩阵的逆矩阵,得到三维模型对应的模型坐标系下的包含空间缩放比例wp的四维向量(xp,yp,zp,wp)。将缩放比例wp调节到1.0,即将四维向量全部除以wp,得到一个四维向量(xn,yn,zn,1.0)。最后提取出三维坐标(xn,yn,zn),就是三维模型对应的模型坐标系下触发点投影到近平面/远平面上的坐标值。
参照图7,在本实施例中,根据所述触发点坐标、以及所述触发点坐标投影到近平面和远平面上的点,确定一条射线,并基于预设规则,从所述射线与所述三维模型相交形成的多个交点中确定所述三维点,可以包括:
将所述触发点坐标作为起点,投射所述射线,所述射线依次经过所述触发点坐标投射到近平面上的点、三维模型以及所述触发点坐标投射到远平面上的点;
根据所述射线以及预设的交点计算公式,确定所述射线与所述三维模型的所有交点,并基于所述预设规则,从所述所有交点中确定满足所述预设规则的点为目标交点,作为所述三维点,其中,所述交点计算公式如下:
p+d×t=(1-m-n)v0+mv1+nv2
式中,p+d×t表示所述射线上的任意一点,p表示所述触发点坐标投影到近平面上的点,d表示所述射线的方向向量,t为任意非负整数,v0、v1、v2分别表示构成所述三维模型的三角面片的三个顶点坐标,m∈[0,+∞),n∈[0,+∞),m+n∈(-∞,1]。
在本实施例中,(1-m-n)v0+mv1+nv2可以表示三维模型上任意三角面片内的任意一点,对上述交点计算公式求解可得:
通过上式解出t的所有解后分别带入p+d×t中即可得到射线与三维模型的所有交点的坐标,根据预设规则,在本实施例中,预设规则可以是深度最小,即t最小时,求出的交点坐标作为上述三维点。
在步骤S3中,将上述三维点所在的三角面片作为基准三角面片,将构成三维模型的三角面片中,除基准三角面片以外的其余三角面片作为待索引三角面片,便于后续通过基准三角面片搜索得到满足第一阈值条件的第一目标三角面片,将每个第一目标三角面片以及基准三角面片进行组合,即可得到一个粗糙的曲面。
在步骤S4中,通过基准三角面片记录在三角面片数据中的数字编号,作为三角面片索引从邻边数据结构中查询与基准三角面片相邻的三角面片,依次判断与基准三角面片相邻的三角面片是否满足第一阈值条件,然后在搜索得到满足第一阈值条件的第一目标三角面片后,基于第一目标三角面片的数字编号(即三角面片索引),从三角面片数据中查询当前第一目标三角面片对应的第一邻域信息,即该第一目标三角面片的顶点坐标、重心和法向量,以作为后续规则曲面提取的参数基础。
在本实施例中,基准三角面片所在的平面可以根据基准三角面片的重心和法向量得到。
在本实施例中,第一阈值可以根据实际情况灵活设置,例如2mm、2.2mm、2.4mm等,本实施例中,第一阈值以2.4mm为例。
在本实施例中,第二阈值可以根据实际情况灵活设置,例如0.8、0.9、0.95等,本实施例中,第二阈值以0.9为例。
示例性的,以三维点所在的三角面片为基准三角面片,当待索引三角面片到基准三角面片所在的平面的距离小于2.4mm、基准三角面片的法向量与待索引三角面片的法向量点乘大于0.9、待索引三角面片与基准三角面片相邻(通过基准三角面片的三角面片索引,从邻边数据结构中直接确定与基准三角面片相邻的待索引三角面片)且待索引三角面片不是边缘面片时,确定该待索引三角面片为第一目标三角面片,并通过第一目标三角面片记录在三角面片数据中的数字编号,从三角面片数据中查询第一目标三角面片的顶点坐标、重心和法向量,并通过该数字编号作为三角面片索引,将邻边数据结构中,第一目标三角面片的搜索标志置位为true,表示该三角面片已被搜索过。
可理解的,上述步骤S4搜索得到的第一目标三角面片,仅包含满足第一阈值条件且与基准三角面片相邻的三角面片,在步骤S5中,将步骤S4得到的第一目标三角面片作为新的基准三角面片,并循环执行步骤S4和步骤S5,直至所有待索引三角面片均被搜索过一次。最终组合基准三角面片以及循环终止后得到的大量第一目标三角面片,作为上述粗糙的曲面。
值得一提的,每次用于三角面片的搜索循环终止后,邻边数据结构中的搜索标志均会被重置为false。
可理解的,步骤S4和步骤S5可理解为通过区域生长的方式,以基准三角面片作为种子点,以第一阈值条件作为区域生长的阈值,通过步骤S4进行第一次生长,并在步骤S5中,将第一次生长得到的第一目标三角面片作为新的种子点,在第一阈值条件的基础上进行迭代生长,直至待索引三角面片内没有满足第一阈值条件的三角面片。如此,将具有相似属性(即满足第一阈值条件)的三角面片进行组合,得到一个区域,该区域即上述粗糙的曲面。
在步骤S6中,根据所述基准三角面片、各个所述第一目标三角面片和每个所述第一目标三角面片对应的所述第一邻域信息,从各个所述第一目标三角面片中提取第二目标三角面片,并将各个所述第二目标三角面片组成对应形状的规则曲面,可以包括:
S601、将所述基准三角面片、所述第一目标三角面片以及所述第一邻域信息作为拟合基础,拟合不同形状的曲面参数,所述曲面参数包括圆柱面参数、圆锥面参数或球面参数中的任一种;
S602、对于每种所述曲面参数,确定所述曲面参数对应的第二阈值条件,并根据所述基准三角面片,基于所述第二阈值条件搜索得到所述第二目标三角面片,所述第二目标三角面片表征满足所述第二阈值条件且与所述基准三角面片相邻的所述第一目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量;
S603、对于每种所述曲面参数,将所述第二目标三角面片作为新的基准三角面片,重复步骤S602至步骤S603,直至搜索得到的所述第二目标三角面片为边缘面片;
S604、对于每种所述曲面参数,将所述拟合基础替换为所述第二目标三角面片和对应的所述第二邻域信息,并循环步骤S601至步骤S604,直至循环的次数大于预设次数或者所述曲面参数的数值变化小于第三阈值;
S605、对于每种所述曲面参数,提取最后一次循环得到的第二目标三角面片,并将所述最后一次循环得到的第二目标三角面片进行组合得到对应形状的规则曲面。
在本实施例中,得到第一目标三角面片和第一邻域信息后,需对由基准三角面片和第一目标三角面片组成的粗糙的曲面进行曲面参数拟合,基于用户选择,通过PCL(PointCloud Library,点云库)中的RANSAC算法初次拟合得到不同形状的曲面参数,曲面参数包括但不限于圆柱面参数、圆锥面参数或球面参数,其中,圆柱面参数可以包括圆柱面的轴线和半径,圆锥面参数可以包括圆锥面的轴线、顶角和半顶角,球面参数可以包括球面的球心和半径。
其中,圆柱面参数的拟合方式可以如下:
将第一目标三角面片的法向量看作三维点,根据第一目标三角面片中的所有三角面片的法向量,使用拟合平面的算法拟合出一个平面,以及该平面的中心点和平面法向量。由于圆柱面的轴线与圆柱面上每个三角面片的法向量垂直,而拟合出的平面法向量与圆柱面上的三角面片的法向量垂直,因此平面法向量可初步确认为圆柱面的轴线方向。得到轴线方向后,通过直线与平面相交的方式确定圆柱面轴线上的一点,具体的,参照图8,当搜索得到的第一目标三角面片的法向量与基准三角面片的法向量不平行时,从搜索得到的第一目标三角面片的重心为起点(即点cen2)、并以该第一目标三角面片的法向量为方向(即nor2)定义一条射线,以基准三角面片的重心作为前述平面上的一个点(即cen1)、以基准三角面片的法向量与圆柱面轴线方向向量的叉乘结果作为平面法向量(即n=dir×nor1),计算前述射线和平面的交点(即点p),初步确定该交点作为圆柱面轴线上的一点,为避免数据计算误差,对搜索得到的所有第一目标三角面片均确定一个对应的圆柱面轴线上的一点,并求取所有点的重心,确定该重心为圆柱面轴线上一点的最终结果。根据圆柱面轴线上的一点、搜索得到的所有第一目标三角面片的重心,分别求取搜索得到的每个第一目标三角面片到轴线的距离并去平均值,以作为初次拟合得到的圆柱面的半径。
圆锥面参数的拟合方式可以如下:
将第一目标三角面片的所有法向量看作三维点,根据第一目标三角面片中的所有三角面片的法向量,使用拟合平面的算法拟合出一个平面,以及该平面的中心点和平面法向量,因为圆锥面上每个三角面片的法向量看作一个点会在三维空间中构成一个圆,而圆锥面的轴线方向就是该圆的法向量,所以拟合出的平面的法向量可以初步确定为圆锥面的轴线方向。确定轴线方向之后,可以根据直线与平面的相交的方式来初步确定圆锥面的顶点坐标和半顶角。具体的,参照图9,用基准三角面片的法向量(即nor1)和圆锥面的轴线方向(即dir)计算出基准三角面片所在的母线方向(即gen,gen=dir-(dir·nor1)*nor1),母线与轴线的夹角(或者基准三角面片的法向量与轴线的夹角的余角(即γ))就是初步确定的半顶角(即θ),以基准三角面片的重心(即cen1)以及计算出的母线方向确定一条直线,用第一目标三角面片的法向量(例如nor2)与轴线的叉乘方向作为平面的法向量(即n),以第一目标三角面片的重心(例如cen2)作为平面上的一个点,以此来确定一个平面,计算出直线与平面的交点,即初步确定的圆锥面的顶点。
球面参数的拟合方式可以如下:
参照图10,以基准三角面片(即nor1)的重心(即cen1)为起点,以基准三角面片的法向量为方向向量,确定一条射线。以第一目标三角面片(例如nor2)的重心(即cen2)为平面上的一点,以第一目标三角面片的重心和一个顶点(即p0)组成一个向量,用该向量和第一目标三角面片的法向量叉乘的结果作为平面的法向量(即n,n=(cen2-p0)×nor2),确定一个平面。求这条射线和这个平面的交点,就是初步确定的球面球心点。
在本实施例中,步骤S602和步骤S603与前述步骤S4和步骤S5相似,可理解为通过区域生长的方式,将基准三角面片作为种子点,第二阈值条件作为区域生长的阈值,进行初次生长,得到满足第二阈值条件的第二目标三角面片,并通过第二目标三角面片的数字编号,从三角面片数据中查询第二目标三角面片的顶点坐标、重心和法向量,然后将初次生长得到的第二目标三角面片作为新的种子点,在第二阈值条件的基础上进行迭代生长,直至第一目标三角面片内没有满足第二阈值条件的三角面片。
在本实施例中,步骤S602可以包括:
当所述曲面参数为圆柱面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片到圆柱面轴线的距离小于等于第四阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量,所述圆柱面参数包括圆柱面的轴线和半径;
其中,第四阈值可以根据实际情况灵活设置,例如0.2mm、0.3mm、0.4mm等,本实施例以0.2mm为例。
或者,当所述曲面参数为圆锥面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片所在母线方向与圆锥面轴线的夹角相较半顶角的差值小于等于第五阈值、反正弦弧度转换为角度后与半顶角的差值小于等于第六阈值作为所述第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述圆锥面参数包括圆锥面的轴线、顶点和半顶角,所述反正弦表示所述基准三角面片相邻的三角面片的重心到圆锥面轴线的距离、以及所述基准三角面片相邻的三角面片的重心到圆锥面顶点的距离,二者的比值;
其中,第五阈值和第六阈值可以根据实际情况灵活设置,例如0.4度、0.5度、0.6度等,本实施例第五阈值和第六阈值均为0.5度。
或者,当所述曲面参数为球面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片的重心到球心的距离与球面半径的差值小于等于第七阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述球面参数包括球面的球心和半径。
其中,第七阈值可以根据实际情况灵活设置,例如0.01mm、0.02mm、0.03mm等,本实施例以0.01mm为例。
在本实施例中,可理解的,通过初次拟合得到的曲面参数与规则曲面的实际参数可能存在误差(例如初次拟合得到的曲面参数记载的圆柱面轴线,和实际圆柱面的轴线并不在同一位置),因此,终止步骤S603中的循环得到第二目标三角面片后,通过步骤S604循环对第二目标三角面片进行曲面参数拟合以及根据拟合得到的曲面参数确定第二阈值条件,然后搜索满足第二阈值条件的新的第二目标三角面片,以通过循环步骤S601至步骤S604,不断对曲面参数进行修正,达到提高规则曲面提取精确率的目的,直至循环次数大于预设次数或者任意连续两次拟合得到的曲面参数之间,二者的数值变化小于第三阈值。
在本实施例中,预设次数和第三阈值可以根据实际情况灵活设置。
结束上述步骤S604中的循环后,提取步骤S604中最后一次循环得到的第二目标三角面片,并将每个第二目标三角面片以及三维点所在的三角面片按照邻边数据结构中记录的邻边索引进行组合,得到规则曲面。
示例性的,参照图11,经过步骤601初次拟合确定圆柱面的圆柱面参数后,通过步骤602,以基准三角面片为种子点,限定第一目标三角面片到圆柱面的距离与圆柱面半径的差值在0.2mm内,限定第一目标三角面片不为边缘面片,进行初次区域生长,并得到圆柱面参数对应的第二目标三角面片。然后通过RANSAC算法再次对第二目标三角面片进行圆柱面拟合,得到新的圆柱面参数。沿用相同的种子点和阈值条件,循环进行区域生长和通过EANSAC进行圆柱面拟合,直至循环次数大于100次或者任意连续两次圆柱面拟合得到的圆柱面半径差值在0.001mm内、以及轴线点乘大于0.999为止,然后提取最后一次循环得到的第二目标三角面片,并将最后一次循环得到的第二目标三角面片中的每个三角面片进行组合得到圆柱面。如图12所示,斜线部分即为提取到的圆柱面。
参照图13,经过初次拟合确定圆锥面的圆锥面参数后,通过步骤602,以基准三角面片为种子点,限定第一目标三角面片所在母线方向与轴线的夹角相较半顶角的差值在0.5度内,反正弦弧度转换为角度后与半顶角的差值在0.5度内,以及限定第一目标三角面片不为边缘面片,进行区域生长,以得到圆锥面参数对应的第二目标三角面片。然后通过RANSAC算法对第二目标三角面片进行圆锥面拟合,得到新的圆锥面参数。沿用相同的种子点和阈值条件,循环进行区域生长和通过EANSAC进行圆锥面拟合,直至循环次数大于100次,或者任意连续两次圆锥面参数拟合得到的圆锥面顶点差值在0.001mm内,以及,任意连续两次圆锥面参数拟合得到的轴线点乘大于0.999为止。然后提取最后一次循环得到的第二目标三角面片,并将最后一次循环得到的第二目标三角面片中的每个三角面片进行组合得到圆锥面。如图14所示,斜线部分即为提取到的圆锥面。
参照图15,经过初次拟合确定球面的球面参数后,通过步骤602,以基准三角面片为种子点,限定第一目标三角面片的重心到球心的距离与球面半径的差值在0.01mm内,限定第一目标三角面片不为边缘面片,进行初次区域生长,并得到球面参数对应的第二目标三角面片。然后通过RANSAC算法对球面参数对应的第二目标三角面片进行球面拟合,得到新的球面参数。沿用相同的种子点和阈值条件,循环进行区域生长和通过EANSAC进行球面拟合,直至循环次数大于100次或者任意连续两次球面拟合得到的球面半径差值在0.001mm内、以及任意连续两次球面参数拟合得到的球面的球心距离在0.001mm内为止,然后提取最后一次循环得到的第二目标三角面片,并将最后一次循环得到的第二目标三角面片中的每个三角面片进行组合得到球面。如图16所示,斜线部分即为提取到的球面。
作为一种可选的实施方式,在构建三角面片数据和邻边结构数据,以及响应于用户触发的点击事件,获取所述点击事件在屏幕坐标系上的触发点坐标之间,方法还可以包括:
对所述三维模型中的所述多个三角面片进行预处理,以判断每个所述多个三角面片是否为边缘面片。
在本实施例中,对所述三维模型中的所述多个三角面片进行预处理,以判断每个所述多个三角面片是否为边缘面片,可以包括:
获取任一个三角面片的三角面片数据和邻边数据结构;
根据邻边数据结构,确定任一个三角面片的相邻三角面片、以及相邻三角面片的三角面片数据;
确定相邻三角面片中,相邻三角面片的法向量与所述任一个三角面片的法向量的点乘小于第八阈值的面片数量;
当面片数量大于相邻三角面片的数量的一半,确定所述任一个三角面片为边缘面片。
参照图17,通过当前三角面片与相邻三角面片,二者的法向量点乘的数值,判断二者的朝向是否相同或相近,当二者的朝向差异较大,且当前三角面片的所有相邻三角面片中,多数三角面片与当前三角面片的朝向差异较大时,确定当前三角面片为边缘面片。
在本实施例中,第八阈值可以根据情况灵活设置,例如0.5、0.75、1.0等等,本实施例以0.75为例。
具体的,参照图18,首先随机指定一个三角面片作为当前三角面片,并读取当前三角面片的邻边数据结构,从而获得当前三角面片的三角面片索引和邻边索引,并根据邻边索引中记载的相邻三角面片的数字编号,从三角面片数据中读取相邻三角面片的法向量,将当前三角面片的法向量、以及所有相邻三角面片的法向量分别进行点乘,并记录点乘值小于0.75的数量,当该数量大于相邻三角面片数量的一半(由于本实施例是基于密集点云的三角化,与同一个三角面片相邻的三角面片数量可能较多,因此此处的数量至少大于与被指定的三角面片相邻的所有三角面片数量的一半,以防止误判)时,确定当前三角面片为边缘面片,然后指定下一个三角面片作为新的当前三角面片并重复前述判断步骤,直至遍历所有三角面片。
为便于理解,下面将结合图12、图14和图16,对基于区域生长,实现三维模型规则曲面提取的方式进行阐述,如下:
首先确定输入主要是由三维扫描仪扫描得到的点云经过三角化之后得到的三维模型,模型的最大长宽高为300mm×300mm×200mm,并且扫描得到的点云为密集的点云,即点云的数量平均值为150万左右,经过三角化之后三角面个数平均值为300万左右,由OpenGL使用GPU完成模型的显示。
在加载模型时,先计算出三维模型中每个三角面片的法向量和重心,之后根据重合的边得到三角面片的邻边数据结构,然后根据相邻的法向量判断模型的边缘面片。
在显示出模型并完成模型数据的预处理(即边缘面片的判断)之后,使用操作系统的库函数获取鼠标点的坐标,然后根据显示时的空间矩阵、视角矩阵、投影矩阵的值,计算得到鼠标点相对应于三维模型上的三维点坐标,并记录三维点所在的三角面片作为基准三角面片。
然后根据三角面片的重心和法向量,设置三角面片到基准三角面片所在平面的距离为2.4mm之内,法向量点乘值比0.9大,以及不为边缘的第一阈值条件,从基准三角面片出发,根据邻边数据结构进行区域生长,得到所有满足第一阈值条件且相邻的三角面片,即为第一目标三角面片;
对第一目标三角面片进行圆柱面粗拟合,得到圆柱面的轴线以及半径,设置三角面片到圆柱面的距离与半径的差值在0.2mm之内,以及不为边缘点的第二阈值条件,进行区域生长,得到所有满足第二阈值条件且相邻的三角面片,之后使用PCL中的RANSAC再次对三角面片进行圆柱面拟合,并设置到圆柱面与半径的差值在0.2mm之内,不为边缘点的第二阈值条件,进行区域生长,不断迭代,直到迭代次数大于100次或者两次拟合的圆柱面半径差值在0.001mm之内以及轴线点乘阈值比0.999大为止,最后一次迭代循环得到的所有三角面片以及拟合的参数就是提取到的圆柱面,如图12所示,斜线部分为提取到的圆柱面。
对第一目标三角面片进行圆锥面粗拟合,得到圆锥面的轴线、顶点以及半顶角,设置三角面片重心到圆锥面顶点的方向,即三角面片所在母线方向,与轴线所得的夹角与半顶角的差值在0.5度之内,通过三角面片重心到轴线的距离与三角面片重心到顶点的距离的比值计算反正弦值,反正弦弧度转换为角度后与半顶角的差值在0.5度之内,以及不为边缘点的第二阈值条件,进行区域生长,得到所有满足第二阈值条件且相邻的第二目标三角面片,之后使用PCL中的RANSAC再次对第二目标三角面片进行圆锥面拟合,并设置同样的区域生长阈值条件,进行区域生长,不断迭代,直到迭代次数大于100次或者两次拟合的圆锥面顶点距离在0.001mm之内以及轴线点乘阈值比0.999大为止,最后一次迭代循环得到的所有三角面片以及拟合的参数就是提取到的圆锥面,如图14所示,斜线部分为提取到的圆锥面。
对第一目标三角面片进行球面粗拟合,得到球面的球心和半径,设置三角面片重心到球心距离与半径的差值在0.01mm之内,以及不为边缘点的第二阈值条件,进行区域生长,得到所有满足第二阈值条件且相邻的第二目标三角面片,之后使用PCL中的RANSAC再次对三角面片进行球面拟合,并设置同样的区域生长阈值条件,进行区域生长,不断迭代,直到迭代次数大于100次或者两次拟合的球心距离在0.001mm之内以及半径的差值在0.001mm之内为止,最后一次迭代循环得到的所有三角面片以及拟合的参数就是提取到的球面,如图16所示,斜线部分为提取到的球面。
基于上述设计,本申请实施例在提取过程上,通过用户点击鼠标,即可覆盖鼠标点所在的规则曲面并进行提取;在测量结果上对于不同模型的不同规则曲面都能适应,对于不同的精度的规则曲面提取需求,可以通过改变对应区域生长和迭代的阈值大小,来满足对应的精度要求,并且能够适应小部分残缺的规则曲面的拾取需求。本申请实施例在三维模型的规则曲面的提取功能上,具备简便的操作方式、精确的提取结果和较高的适用性。
请参照图19,本申请还提供一种三维模型规则曲面提取装置200,三维模型规则曲面提取装置200包括至少一个可以软件或固件(Firmware)的形式存储于存储器102中或固化在操作系统(Operating System,OS)中的软件功能模块。处理器101用于执行存储器102中存储的可执行模块,例如三维模型规则曲面提取装置200所包括的软件功能模块及计算机程序等。
三维模型规则曲面提取装置200包括获取单元210、坐标转换单元220、确定单元230、搜索单元240、循环单元250和提取单元260,各单元具有的功能可以如下:
获取单元210,用于响应于用户触发的点击事件,获取所述点击事件在屏幕坐标系上的触发点坐标;
坐标转换单元220,用于根据所述屏幕坐标系和模型坐标系之间的坐标转换关系,将所述触发点坐标转换到三维模型上,以确定所述触发点坐标对应的三维点;
确定单元230,所述模型坐标系对应的所述三维模型中包括多个三角面片,所述确定单元230用于确定所述三维点所在的三角面片作为基准三角面片、所述多个三角面片中的其余三角面片作为待索引三角面片;
搜索单元240,用于搜索满足第一阈值条件的各个所述待索引三角面片以作为第一目标三角面片,每个所述第一目标三角面片包括第一邻域信息,所述第一邻域信息包括所述第一目标三角面片的各顶点坐标、重心和法向量,所述第一阈值条件包括所述待索引三角面片到所述基准三角面片所在的平面的距离小于第一阈值、所述基准三角面片的法向量与所述待索引三角面片的法向量点乘大于第二阈值,所述待索引三角面片与所述基准三角面片相邻;
循环单元250,用于对于每个所述第一目标三角面片,将所述第一目标三角面片作为新的所述基准三角面片,重复执行S4-S5,直到获取的所述第一目标三角面片为边缘面片,则停止搜索;
提取单元260,用于根据所述基准三角面片、各个所述第一目标三角面片和每个所述第一目标三角面片对应的所述第一邻域信息,从各个所述第一目标三角面片中提取第二目标三角面片,并将各个所述第二目标三角面片组成对应形状的规则曲面。
可选的,坐标转换单元220还用于:
通过预设的投影系统逆算方程,确定所述触发点坐标投影到近平面和远平面上的点;
根据所述触发点坐标、以及所述触发点坐标投影到近平面和远平面上的点,确定一条射线,并基于预设规则,从所述射线与所述三维模型相交形成的多个交点中确定所述三维点,其中,所述三维模型位于所述近平面和所述远平面之间,所述射线自所述触发点坐标出发,依次经过所述触发点坐标投影到近平面和远平面上的点。
可选的,投影系统逆算方程可以如下:
式中,znear/far表示所述触发点坐标投影到近平面/远平面的点的深度值,(x,y)表示所述触发点坐标,(xc,yc)表示触发点在屏幕上归一化后的坐标,(xp,yp,zp,wp)表示缩放情况下,触发点在模型坐标系下的四维向量,(xn,yn,zn)表示所述触发点坐标投影到近平面/远平面上的点在模型坐标系下的坐标,w表示屏幕显示窗口的宽,h表示屏幕显示窗口的高,wp表示缩放比例,Matprojection表示投影矩阵,Matview表示视角矩阵,Matmodel表示模型矩阵。
可选的,坐标转换单元220还用于:
将所述触发点坐标作为起点,投射所述射线,所述射线依次经过所述触发点坐标投射到近平面上的点、三维模型以及所述触发点坐标投射到远平面上的点;
根据所述射线以及预设的交点计算公式,确定所述射线与所述三维模型的所有交点,并基于所述预设规则,从所述所有交点中确定满足所述预设规则的点为目标交点,作为所述三维点,其中,所述交点计算公式如下:
p+d×t=(1-m-n)v0+mv1+nv2
式中,p+d×t表示所述射线上的任意一点,p表示所述触发点坐标投影到近平面上的点,d表示所述射线的方向向量,t为任意非负整数,v0、v1、v2分别表示构成所述三维模型的三角面片的三个顶点坐标,m∈[0,+∞),n∈[0,+∞),m+n∈(-∞,1]。
可选的,提取单元260还用于:
将所述基准三角面片、所述第一目标三角面片以及所述第一邻域信息作为拟合基础,拟合不同形状的曲面参数,所述曲面参数包括圆柱面参数、圆锥面参数或球面参数中的任一种;
对于每种所述曲面参数,确定所述曲面参数对应的第二阈值条件,并根据所述基准三角面片,基于所述第二阈值条件搜索得到所述第二目标三角面片,所述第二目标三角面片表征满足所述第二阈值条件且与所述基准三角面片相邻的所述第一目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量;
对于每种所述曲面参数,将所述第二目标三角面片作为新的基准三角面片,重复步骤S602至步骤S603,直至搜索得到的所述第二目标三角面片为边缘面片;
对于每种所述曲面参数,将所述拟合基础替换为所述第二目标三角面片和对应的所述第二邻域信息,并循环步骤S601至步骤S604,直至循环的次数大于预设次数或者所述曲面参数的数值变化小于第三阈值;
对于每种所述曲面参数,提取最后一次循环得到的第二目标三角面片,并将所述最后一次循环得到的第二目标三角面片进行组合得到对应形状的规则曲面。
可选的,提取单元260还用于:
当所述曲面参数为圆柱面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片到圆柱面轴线的距离小于等于第四阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量,所述圆柱面参数包括圆柱面的轴线和半径;
或者,当所述曲面参数为圆锥面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片所在母线方向与圆锥面轴线的夹角相较半顶角的差值小于等于第五阈值、反正弦弧度转换为角度后与半顶角的差值小于等于第六阈值作为所述第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述圆锥面参数包括圆锥面的轴线、顶点和半顶角,所述反正弦表示所述基准三角面片相邻的三角面片的重心到圆锥面轴线的距离、以及所述基准三角面片相邻的三角面片的重心到圆锥面顶点的距离,二者的比值;
或者,当所述曲面参数为球面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片的重心到球心的距离与球面半径的差值小于等于第七阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述球面参数包括球面的球心和半径。
可选的,三维模型规则曲面提取装置200还包括:
预处理单元,用于对所述三维模型中的所述多个三角面片进行预处理,以判断每个所述多个三角面片是否为边缘面片。
在本实施例中,处理器101可以是一种集成电路芯片,具有信号的处理能力。上述处理器101可以是通用处理器。例如,该处理器101可以是中央处理器(Central ProcessingUnit,CPU)、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。
存储器102可以是,但不限于,随机存取存储器,只读存储器,可编程只读存储器,可擦除可编程只读存储器,电可擦除可编程只读存储器等。在本实施例中,存储器102可以用于存储三角面片数据、邻边数据结构、触发点坐标、三维点、第一阈值、第二阈值、第三阈值、第四阈值、第五阈值、第六阈值、第七阈值、第八阈值、投影系统逆算方程、交点计算公式、预设规则、曲面参数、规则曲面等。当然,存储器102还可以用于存储程序,处理器101在接收到执行指令后,执行该程序。
可以理解的是,图1中所示的电子设备100结构仅为一种结构示意图,电子设备100还可以包括比图1所示更多的组件。图1中所示的各组件可以采用硬件、软件或其组合实现。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备100的具体工作过程,可以参考前述方法中的各步骤对应过程,在此不再过多赘述。
本申请实施例还提供一种计算机可读存储介质。计算机可读存储介质中存储有计算机程序,当计算机程序在计算机上运行时,使得计算机执行如上述实施例中所述的三维模型规则曲面提取方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
综上所述,本申请实施例提供一种三维模型规则曲面提取方法、装置、电子设备及存储介质。在本技术方案中,首先获取点击事件在屏幕坐标系上的触发点坐标,然后将触发点坐标转换到三维模型上,从而确定触发点坐标对应的三维点,然后将三维点所在的三角面片作为基准三角面片,搜索得到第一目标三角面片及其对应的第一邻域信息,最后根据基准三角面片、各个第一目标三角面片和第一邻域信息,从各个第一目标三角面片中提取第二目标三角面片,并将各个第二目标三角面片组成对应形状的规则曲面。如此,可以改善传统曲面提取算法存在前置条件复杂、步骤冗长、提取效果不稳定的问题。
在本申请所提供的实施例中,应该理解到,所揭露的装置、系统和方法,也可以通过其它的方式实现。以上所描述的装置、系统和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种三维模型规则曲面提取方法,其特征在于,所述方法包括:
S1、响应于用户触发的点击事件,获取所述点击事件在屏幕坐标系上的触发点坐标;
S2、根据所述屏幕坐标系和模型坐标系之间的坐标转换关系,将所述触发点坐标转换到三维模型上,以确定所述触发点坐标对应的三维点;
S3、所述模型坐标系对应的所述三维模型中包括多个三角面片,确定所述三维点所在的三角面片作为基准三角面片、所述多个三角面片中的其余三角面片作为待索引三角面片;
S4、搜索满足第一阈值条件的各个所述待索引三角面片以作为第一目标三角面片,每个所述第一目标三角面片包括第一邻域信息,所述第一邻域信息包括所述第一目标三角面片的各顶点坐标、重心和法向量,所述第一阈值条件包括所述待索引三角面片到所述基准三角面片所在的平面的距离小于第一阈值、所述基准三角面片的法向量与所述待索引三角面片的法向量点乘大于第二阈值、所述待索引三角面片与所述基准三角面片相邻;
S5、对于每个所述第一目标三角面片,将所述第一目标三角面片作为新的所述基准三角面片,重复执行S4-S5,直到获取的所述第一目标三角面片为边缘面片,则停止搜索;
S6、根据所述基准三角面片、各个所述第一目标三角面片和每个所述第一目标三角面片对应的所述第一邻域信息,从各个所述第一目标三角面片中提取第二目标三角面片,并将各个所述第二目标三角面片组成对应形状的规则曲面。
2.根据权利要求1所述的方法,其特征在于,步骤S2包括:
通过预设的投影系统逆算方程,确定所述触发点坐标投影到近平面和远平面上的点;
根据所述触发点坐标、以及所述触发点坐标投影到近平面和远平面上的点,确定一条射线,并基于预设规则,从所述射线与所述三维模型相交形成的多个交点中确定所述三维点,其中,所述三维模型位于所述近平面和所述远平面之间,所述射线自所述触发点坐标出发,依次经过所述触发点坐标投影到近平面和远平面上的点。
3.根据权利要求2所述的方法,其特征在于,所述投影系统逆算方程如下:
式中,znear/far表示所述触发点坐标投影到近平面/远平面的点的深度值,(x,y)表示所述触发点坐标,(xc,yc)表示触发点在屏幕上归一化后的坐标,(xp,yp,zp,wp)表示缩放情况下,触发点在模型坐标系下的四维向量,(xn,yn,zn)表示所述触发点坐标投影到近平面/远平面上的点在模型坐标系下的坐标,w表示屏幕显示窗口的宽,h表示屏幕显示窗口的高,wp表示缩放比例,Matprojection表示投影矩阵,Matview表示视角矩阵,Matmodel表示模型矩阵。
4.根据权利要求2所述的方法,其特征在于,根据所述触发点坐标、以及所述触发点坐标投影到近平面和远平面上的点,确定一条射线,并基于预设规则,从所述射线与所述三维模型相交形成的多个交点中确定所述三维点,包括:
将所述触发点坐标作为起点,投射所述射线,所述射线依次经过所述触发点坐标投射到近平面上的点、三维模型以及所述触发点坐标投射到远平面上的点;
根据所述射线以及预设的交点计算公式,确定所述射线与所述三维模型的所有交点,并基于所述预设规则,从所述所有交点中确定满足所述预设规则的点为目标交点,作为所述三维点,其中,所述交点计算公式如下:
p+d×t=(1-m-n)v0+mv1+nv2
式中,p+d×t表示所述射线上的任意一点,p表示所述触发点坐标投影到近平面上的点,d表示所述射线的方向向量,t为任意非负整数,v0、v1、v2分别表示构成所述三维模型的三角面片的三个顶点坐标,m∈[0,+∞),n∈[0,+∞),m+n∈(-∞,1]。
5.根据权利要求1所述的方法,其特征在于,步骤S6包括:
S601、将所述基准三角面片、所述第一目标三角面片以及所述第一邻域信息作为拟合基础,拟合不同形状的曲面参数,所述曲面参数包括圆柱面参数、圆锥面参数或球面参数中的任一种;
S602、对于每种所述曲面参数,确定所述曲面参数对应的第二阈值条件,并根据所述基准三角面片,基于所述第二阈值条件搜索得到所述第二目标三角面片,所述第二目标三角面片表征满足所述第二阈值条件且与所述基准三角面片相邻的所述第一目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量;
S603、对于每种所述曲面参数,将所述第二目标三角面片作为新的基准三角面片,重复步骤S602至步骤S603,直至搜索得到的所述第二目标三角面片为边缘面片;
S604、对于每种所述曲面参数,将所述拟合基础替换为所述第二目标三角面片和对应的所述第二邻域信息,并循环步骤S601至步骤S604,直至循环的次数大于预设次数或者所述曲面参数的数值变化小于第三阈值;
S605、对于每种所述曲面参数,提取最后一次循环得到的第二目标三角面片,并将所述最后一次循环得到的第二目标三角面片进行组合得到对应形状的规则曲面。
6.根据权利要求5所述的方法,其特征在于,步骤S602包括:
当所述曲面参数为圆柱面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片到圆柱面轴线的距离小于等于第四阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,每个所述第二目标三角面片包括第二邻域信息,所述第二邻域信息包括所述第二目标三角面片对应的顶点坐标、重心和法向量,所述圆柱面参数包括圆柱面的轴线和半径;
或者,当所述曲面参数为圆锥面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片所在母线方向与圆锥面轴线的夹角相较半顶角的差值小于等于第五阈值、反正弦弧度转换为角度后与半顶角的差值小于等于第六阈值作为所述第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述圆锥面参数包括圆锥面的轴线、顶点和半顶角,所述反正弦表示所述基准三角面片相邻的三角面片的重心到圆锥面轴线的距离、以及所述基准三角面片相邻的三角面片的重心到圆锥面顶点的距离,二者的比值;
或者,当所述曲面参数为球面参数时,根据所述基准三角面片,以所述基准三角面片相邻的三角面片的重心到球心的距离与球面半径的差值小于等于第七阈值作为第二阈值条件,在所述第一目标三角面片中搜索,得到满足所述第二阈值条件且与所述基准三角面片相邻的所述第二目标三角面片,所述球面参数包括球面的球心和半径。
7.根据权利要求1所述的方法,其特征在于,在步骤S1之前,所述方法还包括:
对所述三维模型中的所述多个三角面片进行预处理,以判断每个所述多个三角面片是否为边缘面片。
8.一种三维模型规则曲面提取装置,其特征在于,所述装置包括:
获取单元,用于响应于用户触发的点击事件,获取所述点击事件在屏幕坐标系上的触发点坐标;
坐标转换单元,用于根据所述屏幕坐标系和模型坐标系之间的坐标转换关系,将所述触发点坐标转换到三维模型上,以确定所述触发点坐标对应的三维点;
确定单元,所述模型坐标系对应的所述三维模型中包括多个三角面片,所述确定单元用于确定所述三维点所在的三角面片作为基准三角面片、所述多个三角面片中的其余三角面片作为待索引三角面片;
搜索单元,用于搜索满足第一阈值条件的各个所述待索引三角面片以作为第一目标三角面片,每个所述第一目标三角面片包括第一邻域信息,所述第一邻域信息包括所述第一目标三角面片的各顶点坐标、重心和法向量,所述第一阈值条件包括所述待索引三角面片到所述基准三角面片所在的平面的距离小于第一阈值、所述基准三角面片的法向量与所述待索引三角面片的法向量点乘大于第二阈值,所述待索引三角面片与所述基准三角面片相邻;
循环单元,用于对于每个所述第一目标三角面片,将所述第一目标三角面片作为新的所述基准三角面片,重复执行S4-S5,直到获取的所述第一目标三角面片为边缘面片,则停止搜索;
提取单元,用于根据所述基准三角面片、各个所述第一目标三角面片和每个所述第一目标三角面片对应的所述第一邻域信息,从各个所述第一目标三角面片中提取第二目标三角面片,并将各个所述第二目标三角面片组成对应形状的规则曲面。
9.一种电子设备,其特征在于,所述电子设备包括相互耦合的处理器及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-7中任一项所述的方法。
CN202311451185.3A 2023-11-02 2023-11-02 三维模型规则曲面提取方法、装置、电子设备及存储介质 Pending CN117687543A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311451185.3A CN117687543A (zh) 2023-11-02 2023-11-02 三维模型规则曲面提取方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311451185.3A CN117687543A (zh) 2023-11-02 2023-11-02 三维模型规则曲面提取方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117687543A true CN117687543A (zh) 2024-03-12

Family

ID=90136060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311451185.3A Pending CN117687543A (zh) 2023-11-02 2023-11-02 三维模型规则曲面提取方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117687543A (zh)

Similar Documents

Publication Publication Date Title
Taha et al. An efficient algorithm for calculating the exact Hausdorff distance
Bosche et al. Automated recognition of 3D CAD objects in site laser scans for project 3D status visualization and performance control
Bosché Plane-based registration of construction laser scans with 3D/4D building models
Xu et al. Reconstruction of scaffolds from a photogrammetric point cloud of construction sites using a novel 3D local feature descriptor
US8412492B2 (en) System and method for fitting feature elements using a point-cloud of an object
US20110304619A1 (en) Primitive quadric surface extraction from unorganized point cloud data
EP0981108A2 (en) Method, apparatus and computer medium for surface reconstruction by voronoi filtering
CN109615702B (zh) 网格补洞方法、图像处理设备及具有存储功能的装置
dos Santos et al. Extraction of building roof boundaries from LiDAR data using an adaptive alpha-shape algorithm
CN114863060A (zh) 基于点云的三维模型重建方法、装置、设备及存储介质
US20090289953A1 (en) System and method for adjusting view of a measuring report of an object
CN115690184A (zh) 一种基于三维激光扫描的隧道掌子面位移量测方法
CN114861500A (zh) 基于三维点云自动生成隧道结构有限元模型的方法及系统
Sindram et al. Voluminator 2.0–speeding up the approximation of the volume of defective 3D building models
Dabrowski Novel PCSE-based approach of inclined structures geometry analysis on the example of the Leaning Tower of Pisa
Honti et al. Automation of cylinder segmentation from point cloud data
CN110570511B (zh) 点云数据的处理方法、装置、系统和存储介质
CN117687543A (zh) 三维模型规则曲面提取方法、装置、电子设备及存储介质
CN115371596A (zh) 一种基于迭代搜索的直线度测量方法和装置
Ledoux et al. Validation of planar partitions using constrained triangulations
Dyshkant Comparison of point clouds acquired by 3d scanner
Hermann et al. Application of computational geometry in coordinate measurement
CN117807875B (zh) 石英器件的三维数据逆向重建和尺寸测量系统及方法
CN110727755B (zh) 一种地物形状规则化方法、电子设备及存储介质
US10529444B1 (en) System that rapidly generates a solvent-excluded surface

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