CN111696111A - 一种基于ssdf衰减图聚类的3d模型网格分割方法 - Google Patents

一种基于ssdf衰减图聚类的3d模型网格分割方法 Download PDF

Info

Publication number
CN111696111A
CN111696111A CN202010542231.0A CN202010542231A CN111696111A CN 111696111 A CN111696111 A CN 111696111A CN 202010542231 A CN202010542231 A CN 202010542231A CN 111696111 A CN111696111 A CN 111696111A
Authority
CN
China
Prior art keywords
ssdf
point
value
points
attenuation map
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.)
Granted
Application number
CN202010542231.0A
Other languages
English (en)
Other versions
CN111696111B (zh
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.)
Chongqing University
Chongqing Institute of Green and Intelligent Technology of CAS
Original Assignee
Chongqing University
Chongqing Institute of Green and Intelligent Technology of CAS
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 Chongqing University, Chongqing Institute of Green and Intelligent Technology of CAS filed Critical Chongqing University
Priority to CN202010542231.0A priority Critical patent/CN111696111B/zh
Publication of CN111696111A publication Critical patent/CN111696111A/zh
Application granted granted Critical
Publication of CN111696111B publication Critical patent/CN111696111B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开一种基于SSDF衰减图聚类的3D模型网格分割方法,具体包括以下步骤:S1:读取待分割3D模型生成的三角网格,将网格中所有面的质心构建得到点集S,计算点集S中每个质心的SSDF值;S2:在点集S中通过循环选取SSDF值最大点Si并构建点Si的SSDF衰减图,对点集S进行聚类,输出初始分割结果;S3:根据初始分割结果中网格块的个数和预设阈值的比对,调整参数并重复S2,直到网格块的个数达到预设阈值,输出最终分割结果。本发明所提供的方法具有稳定性,当参数不变时,每次运行输出结果相同;适应性强,可对复杂3D模型网格进行分割;灵活性强,可根据需求调节参数以调整分割精细程度。

Description

一种基于SSDF衰减图聚类的3D模型网格分割方法
技术领域
本发明涉及图形学和几何数字处理技术领域,特别涉及一种基于SSDF衰减图聚类的3D模型网格分割方法。
背景技术
计算机辅助工程(CAE)主要是指利用计算机技术对工程和产品的未来工作状态与运行行为进行模拟并分析其性能与安全可靠性,以达到尽早发现设计缺陷、验证可用性与可靠性的目的。工程和制造业的生命力在于创新,而实现创新最主要的技术保障在于可靠的设计与分析,所以CAE技术对于工业领域意义重大。
CAE系统大部分操作依赖于3D模型所生成的网格模型,有限元分析就是一个典型的例子。对3D模型的网格表示进行研究对CAE技术意义重大。目前与网格相关的研究领域主要包括网格参数化、网格简化、网格变形、网格分割等。近年来,随着网格分割技术被广泛应用到建模、模型检索、纹理映射,碰撞检测等领域,其逐渐成为计算机图形学一个越来越重要的研究方向。
所谓网格分割,是指将多边形集合划分成面片集合,每个面片由具有某种共性的多边形组成的过程。网格分割问题发展到现在,已经有许多相关方法被提出。1993年,Maillot等提出基于面法向量的网格分割方法。Mangan等于1999提出基于分水岭算法的表面分割方法,并将它用于表面简化。近年来,有多种基于聚类思想的网格分割方法被提出并得到了较大发展。Shlafman等先用基于K-means的方法进行初始分割,然后用最小分割方法优化结果。然而,由于K-means聚类结果具有随机性,难以达到理想效果。Golovinskiy等提出通过评价K-means、层次聚类和最小割三种方法对网格进行分割,该方法具有较好的分割效果,能在一定程度上反应网格特征,但该方法需要用多种算法进行聚类,效率较低。
发明内容
针对现有技术中3D模型网格分割精度较低的问题,本发明提出一种基于SSDF衰减图聚类的3D模型网格分割方法,通过计算网格中每个面的质心的SSDF值并构建SSDF衰减图,以对网格进行分割,提高了分割精细程度。
为了实现上述目的,本发明提供以下技术方案:
一种基于SSDF衰减图聚类的3D模型网格分割方法,具体包括以下步骤:
S1:读取待分割3D模型生成三角网格,将网格中所有面的质心构建得到点集S,计算点集S中每个质心的SSDF值;
S2:在点集S中通过循环选取最大SSDF值对应的点Si并构建点Si的SSDF衰减图,并对点集S进行聚类,输出初始分割结果;
S3:根据初始分割结果中网格块的个数和预设阈值的比对,调整参数并重复S2,直到网格块的个数达到预设阈值,输出最终分割结果。
优选的,所述S1中,SSDF值是指简化版形状直径函数所计算出的值,则每个面质心的SSDF值的计算步骤为:
以面的质心为起点,作K条与该质心内法线夹角小于90度的射线,这些射线与网格相交形成K条测量线段,则K条测量线段的长度的平均值即为该质心的SSDF值。
优选的,所述S2中,点Si的SSDF衰减图的构建方法为:
对于点集S中点Si,构建多条以点Si为起点的SSDF递减路径,多条SSDF递减路径中的点所组成的集合称作点Si的SSDF衰减图。
优选的,所述S2中,对点集S进行聚类输出初始分割结果的具体步骤包括:
S2-1:创建一个簇;
S2-2:从点集S未分配的点中找到SSDF值最大的点Px作为簇的中心;
S2-3:计算以点Px为起点的SSDF衰减图,并将点Px的SSDF衰减图中的点分配到簇中;
S2-4:循环执行步骤S2-1、S2-2和S2-3得到多个簇,直到点集S中所有点分配完为止;
S2-5:将簇之间达到阈值的交点标记为连接点,合并存在连接点的簇,输出聚类结果,即初始分割结果。
优选的,如果点Si同时属于簇Cu与簇Cv,且点Si的SSDF值大于簇Cu中m*|Cu|个的点的SSDF值,同时大于簇Cv中m*|Cv|个的点的SSDF值,则点Si称为簇Cu与簇Cv的连接点;|Cu|表示簇Cu中点的个数;|Cv|表示簇Cv中点的个数;m表示融合系数,其取值范围为0~1。
优选的,所述S3中,所述初始分割结果中网格块的个数为N,预设阈值为T,则当N﹤T时,将参数m调大并重复S2,直到N=T;则当N﹥T时,将参数m调小并重复S2,直到N=T。
综上所述,由于采用了上述技术方案,与现有技术相比,本发明至少具有以下有益效果:
本发明所提供的方法具有稳定性,当参数不变时,每次运行输出结果相同;适应性强,可对复杂3D模型网格进行分割;灵活性强,可根据需求调节参数以调整分割精细程度。
附图说明:
图1为根据本发明示例性实施例的一种基于SSDF衰减图聚类的3D模型网格分割方法流程示意图。
图2为根据本发明示例性实施例的SSDF值原理示意图。
具体实施方式
下面结合实施例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
如图1所示,本发明提供一种基于SSDF衰减图聚类的3D模型网格分割方法,具体包括以下步骤:
S1:用三维扫描仪采集需进行CAE碰撞测试的车辆点云数据并通过拓扑重建得到其三角网格模型,计算网格中每个面质心的SSDF值;
本实施例中,待分割3D模型三角网格是由顶点和面组成,网格分割就是对顶点和面进行分类。SSDF(Simplified Shape Diameter Function)值是指简化版形状直径函数所计算出的值,则每个面质心的SSDF值的计算步骤为:
以面的质心(顶点)为起点,作K(由用户输入,一般根据经验值设为10)条方向向量与该质心内法线夹角小于90度的射线,这些射线与网格相交形成K条测量线段,则K条测量线段的长度的平均值即为该面的SSDF值。
如图2所示,0点为网格上某三角面片的质心,OF为O点内法线;以O点为起点,分别作出4条与OF夹角小于90度的射线,并与网格相交得到交点A、B、C、D,即分别得到4条测量线段0A、0B、0C、0D,则测量线段0A、0B、0C、0D的长度分别为d1、d2、d3、d4,则SSDF=(d1+d2+d3+d4)/4。
S2:利用SSDF衰减图对网格中所有面的质心进行聚类;
本实施例中,网格中所有面的质心组成的点集为S,对于点集S中任意一点Si,计算其它点与点Si之间的欧几里得距离,取小于预设欧几里得距离值d(d为用户输入的参数)的点作为点Si的邻居集合Neighbors(Si)。对于由点集S中的点组成的有序序列(Si,Sx1,Sx2,…,Sxn),若满足
Figure BDA0002539308290000051
Figure BDA0002539308290000052
同时当1<=i<n时,有
Figure BDA0002539308290000053
Figure BDA0002539308290000054
则此序列称为以Si为起点的SSDF递减路径,SSDFValue(Sx)表示取点Sx的SSDF值。
本实施例中,以点Si为起点可找到多条SSDF递减路径,则所有SSDF递减路径中的点所组成的集合称作点Si的SSDF衰减图。
利用SSDF衰减图对网格中所有面的质心进行聚类的具体步骤包括:
S2-1:创建一个新簇Cx;
S2-2:从点集S未分配的点中找到SSDF值最大的点Px作为簇Cx的中心;
S2-3:计算点Px为起点的SSDF衰减图,并将点Px的SSDF衰减图中的点分配到新簇Cx;
S2-4:如果点集S中还有未分配的点,循环执行S2-1、S2-2和S2-3,直到点集S中所有点分配完为止;
本实施例中,例如可创建簇Cx、簇Cu与簇Cv,则点集S中所有点将分配到三个簇中,进行初步聚类。
S2-5:将簇之间达到阈值的交点标记为连接点,合并存在连接点的簇,输出聚类结果,即初始网格分割结果。
如果点Si同时属于簇Cu与簇Cv,且点Si的SSDF值大于m*|Cu|个簇Cu中的点SSDF值,同时大于m*|Cv|个簇Cv中的点SSDF值,则点Si称为簇Cu与簇Cv的连接点,m是由用户输入的参数,称作融合系数,其取值范围为0~1。m可以控制相邻簇合并的难易程度,m越大相邻簇越难合并,最终簇个数越多,m越小相邻簇越易合并,最终簇个数越少。|Cu|表示簇Cu的点个数,|Cv|表示簇Cv的点个数。
本实施例中,当簇进行合并后,网格中所有面的质心完成聚类,即将网格划分为多个块,输出初始分割结果,即网格的初始分割结果。
S3:根据初始网格分割结果中网格块的个数和预设阈值的比对,调整参数m,重复S2,直到网格块的个数达到预设阈值。
本实施例中,初始分割结果中块的个数为N,预设阈值为T。则当N﹤T时,将参数m调大并重复S2,直到N=T;则当N﹥T时,将m调小并重复S2,直到N=T。
M为融合系数,其取值范围为0~1,可以控制相邻簇合并的难易程度,m越大相邻簇越难合并,最终簇个数越多,m越小相邻簇越易合并,最终簇个数越少。
S4:输出并保存最终分割结果,将不同块用不同颜色区分渲染3D模型以便分析最终分割结果。
如果最终分割结果中存在过小的块,可能是碰撞分析所不需要的细节特征,需进行特征简化、抑制或删除,在建立有限元模型时可适当减少块内有限元网格密度,增加块间有限元网格密度(块间部分往往可能出现应力集中,需要更密集网格提升计算精度),车辆建立有限元模型后,则可进行CAE碰撞仿真,提取碰撞速度加速度、碰撞能量等参数验证车辆碰撞性能。本方法网格分割结果可辅助有限元工程师建立高质量有限元模型,提升碰撞仿真精度、减少计算开销。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (6)

1.一种基于SSDF衰减图聚类的3D模型网格分割方法,其特征在于,具体包括以下步骤:
S1:读取待分割3D模型生成三角网格,将网格中所有面的质心构建得到点集S,计算点集S中每个质心的SSDF值;
S2:在点集S中通过循环选取SSDF值最大点Si并构建点Si的SSDF衰减图,对点集S进行聚类,输出初始分割结果;
S3:根据初始分割结果中网格块的个数和预设阈值的比对,调整参数并重复S2,直到网格块的个数达到预设阈值,输出最终分割结果。
2.如权利要求1所述的一种基于SSDF衰减图聚类的3D模型网格分割方法,其特征在于,所述S1中,SSDF值是指简化版形状直径函数所计算出的值,则每个面质心的SSDF值的计算步骤为:
以面的质心为起点,作K条与该质心内法线夹角小于90度的射线,这些射线与网格相交形成K条测量线段,则K条测量线段的长度的平均值即为该质心的SSDF值。
3.如权利要求1所述的一种基于SSDF衰减图聚类的3D模型网格分割方法,其特征在于,所述S2中,点Si的SSDF衰减图的构建方法为:
对于由点集S中的点组成的有序序列(Si,Sx1,Sx2,…,Sxn),若满足
Figure FDA0002539308280000011
Figure FDA0002539308280000012
Figure FDA0002539308280000013
同时当1<=i<n时,有
Figure FDA0002539308280000014
Figure FDA0002539308280000015
Figure FDA0002539308280000016
则此序列称为以Si为起点的SSDF递减路径;找到所有以Si为起点的SSDF递减路径,这些路径中包含的点所组成的集合,即为Si的SSDF衰减图。Neighbors(Sx)表示点Sx的邻居集合,SSDFValue(Sx)表示取点Sx的SSDF值。
4.如权利要求1所述的一种基于SSDF衰减图聚类的3D模型网格分割方法,其特征在于,所述S2中,对点集S进行聚类输出初始分割结果的具体步骤包括:
S2-1:创建一个簇;
S2-2:从点集S未分配的点中找到SSDF值最大的点Px作为簇的中心;
S2-3:计算以点Px为起点的SSDF衰减图,并将点Px的SSDF衰减图中的点分配到簇中;
S2-4:循环执行步骤S2-1、S2-2和S2-3得到多个簇,直到点集S中所有点分配完为止;
S2-5:将簇之间达到阈值的交点标记为连接点,合并存在连接点的簇,输出聚类结果,即初始分割结果。
5.如权利要求4所述的一种基于SSDF衰减图聚类的3D模型网格分割方法,其特征在于,如果点Si同时属于簇Cu与簇Cv,且点Si的SSDF值大于簇Cu中m*|Cu|个的点的SSDF值,同时大于簇Cv中m*|Cv|个的点的SSDF值,则点Si称为簇Cu与簇Cv的连接点;|Cu|表示簇Cu中点的个数;|Cv|表示簇Cv中点的个数;m表示融合系数,其取值范围为0~1。
6.如权利要求4所述的一种基于SSDF衰减图聚类的3D模型网格分割方法,其特征在于,所述S3中,所述初始分割结果中网格块的个数为N,预设阈值为T,则当N﹤T时,将参数m调大并重复S2,直到N=T;则当N﹥T时,将参数m调小并重复S2,直到N=T。
CN202010542231.0A 2020-06-15 2020-06-15 一种基于ssdf衰减图聚类的3d模型网格分割方法 Active CN111696111B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010542231.0A CN111696111B (zh) 2020-06-15 2020-06-15 一种基于ssdf衰减图聚类的3d模型网格分割方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010542231.0A CN111696111B (zh) 2020-06-15 2020-06-15 一种基于ssdf衰减图聚类的3d模型网格分割方法

Publications (2)

Publication Number Publication Date
CN111696111A true CN111696111A (zh) 2020-09-22
CN111696111B CN111696111B (zh) 2023-04-18

Family

ID=72481025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010542231.0A Active CN111696111B (zh) 2020-06-15 2020-06-15 一种基于ssdf衰减图聚类的3d模型网格分割方法

Country Status (1)

Country Link
CN (1) CN111696111B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113379924A (zh) * 2021-06-30 2021-09-10 广东三维家信息科技有限公司 一种三维模型简化方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364310A (zh) * 2007-08-07 2009-02-11 北京灵图软件技术有限公司 一种三维模型图形的生成方法和装置
CN104281994A (zh) * 2014-10-22 2015-01-14 南京大学 一种基于局部粗糙度分析的三维网格水印嵌入和检测方法
US20160203637A1 (en) * 2013-06-25 2016-07-14 Tao Luo Method and apparatus for consistent segmentation of 3d models
CN106650916A (zh) * 2016-12-29 2017-05-10 西安思源学院 一种基于蚁群优化的网格分割方法
CN110728688A (zh) * 2019-10-17 2020-01-24 杭州电子科技大学上虞科学与工程研究院有限公司 一种基于能量优化的三维网格模型分割方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364310A (zh) * 2007-08-07 2009-02-11 北京灵图软件技术有限公司 一种三维模型图形的生成方法和装置
US20160203637A1 (en) * 2013-06-25 2016-07-14 Tao Luo Method and apparatus for consistent segmentation of 3d models
CN104281994A (zh) * 2014-10-22 2015-01-14 南京大学 一种基于局部粗糙度分析的三维网格水印嵌入和检测方法
CN106650916A (zh) * 2016-12-29 2017-05-10 西安思源学院 一种基于蚁群优化的网格分割方法
CN110728688A (zh) * 2019-10-17 2020-01-24 杭州电子科技大学上虞科学与工程研究院有限公司 一种基于能量优化的三维网格模型分割方法及系统

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
HUIJUANZHANG等: "Shape segmentation by hierarchical splat clustering", 《COMPUTERS&GRAPHICS》 *
XIAOBAI CHEN等: "A Benchmark for 3D Mesh Segmentation", 《ACM TRANSACTIONS ON GRAPHICS》 *
张智勇: "基于密度衰减图的密度峰值聚类算法研究及应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
杜顺等: "基于形状直径函数的三维网格模型零水印算法", 《计算机辅助设计与图形学学报》 *
杜顺等: "网格分割的3维网格模型非盲水印算法", 《中国图象图形学报》 *
王鹏飞: "三维模型识别算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
舒振宇等: "基于局部稀疏表示的三维模型识别算法", 《计算机辅助设计与图形学学报》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113379924A (zh) * 2021-06-30 2021-09-10 广东三维家信息科技有限公司 一种三维模型简化方法、装置及存储介质

Also Published As

Publication number Publication date
CN111696111B (zh) 2023-04-18

Similar Documents

Publication Publication Date Title
Gao et al. Feature suppression based CAD mesh model simplification
CN100468418C (zh) 由边界表示数据生成体数据的方法及其程序
US8831913B2 (en) Method of design optimisation
CN111581776B (zh) 一种基于几何重建模型的等几何分析方法
CN111696210A (zh) 一种基于三维点云数据特征轻量化的点云重构方法及系统
Di Angelo et al. A new mesh-growing algorithm for fast surface reconstruction
CN111797555B (zh) 一种基于有限元模型的几何重构方法
CN105793848B (zh) 包括建模步骤的计算机辅助设计方法
CN107767453B (zh) 一种基于规则约束的建筑物lidar点云重构优化方法
CN115661374B (zh) 一种基于空间划分和模型体素化的快速检索方法
CN111028335B (zh) 一种基于深度学习的点云数据的分块面片重建方法
CN112767552B (zh) 基于支持向量机的散乱点云三角化方法
CN103970949B (zh) 一种快速成型中三角面片模型的逐边分层方法
CN111243094B (zh) 一种基于点灯法的三维模型精确体素化方法
CN113077553A (zh) 一种基于表面属性的三维模型分割方法
CN101853526A (zh) 一种自适应密度的非均匀点云简化处理方法
CN113610983A (zh) 一种离散点空间曲面三角网格自动剖分方法
CN118094668B (zh) 一种自适应笛卡尔网格快速生成优化方法
CN111696111B (zh) 一种基于ssdf衰减图聚类的3d模型网格分割方法
CN113971718B (zh) 一种对三维点云模型进行布尔运算的方法
CN108389263A (zh) 面向边界元方法求解计算的iges面网格快速生成方法
US7333104B2 (en) Method and program of converting three-dimensional shape data into cell internal data
CN117473655A (zh) 基于边坍缩网格优化的飞行器仿真驱动设计方法和装置
US20050162418A1 (en) Boundary data inside/outside judgment method and program thereof
Shi et al. A Framework of Point Cloud Simplification Based on Voxel Grid and Its Applications

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
GR01 Patent grant
GR01 Patent grant