System and method for 3D model evaluation using triangle mesh hashing

JP2025529885A5Pending Publication Date: 2025-11-12FISNA INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025511645
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-08-22
Filing Date
2023-08-22
Publication Date
2025-11-12

AI Technical Summary

Technical Problem

Existing systems for searching and comparing 3D object models are inefficient and lack the ability to accurately determine similarities and differences, particularly in terms of size and topology, leading to challenges in data management and retrieval.

Method used

A method and system that utilizes triangle mesh hashing to compare 3D object models by calculating perimeter values and adjacent facet edge hashing, allowing for the determination of matches and deviations between polygon meshes, with the capability to scale objects for alignment and normalization.

Benefits of technology

Enables efficient and accurate comparison of 3D object models, facilitating data management and retrieval by identifying similar shapes and deviations, even in cases of different topological configurations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A method for comparing two or more three-dimensional (3D) object models by evaluating at least one 3D triangle from each received triangular mesh data. The method includes, for each reference triangle, identifying one or more neighboring triangles using a condition for triangle congruence and performing adjacent facet edge hashing to create an object hash value for each of the at least one 3D triangle. The method includes comparing the object hash value with one or more reference hash values ​​assigned to the one or more 3D object models, respectively. The method includes determining whether a match exists between the one or more 3D object models and the reference object based on the amount of match between the obtained hash values. In one or more embodiments, the method compares 3D triangular objects, such as previous scans of the same object, to determine deviations or the subtraction or addition of subparts over time.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Application No. 17 / 821,439, filed August 22, 2022, entitled "SYSTEM AND METHODS FOR 3D MODEL EVALUATION," the contents of which are incorporated herein by reference in their entirety for all purposes. [Background technology]

[0002] FIELD OF THE INVENTION The technical field disclosed in this specification relates to a three-dimensional data processing device, a three-dimensional data processing method, and a three-dimensional data processing program. More specifically, the present invention relates to a device, method, or program that has the ability to search for an object similar to a predetermined shape from an input three-dimensional shape model (e.g., a computer-aided design (CAD) model or a mesh model), and is capable of changing the search range in terms of size and / or balance.

[0003] 2. Description of Related Art This disclosure is generally directed to computer-aided design, drafting, manufacturing, and visualization systems (individually and collectively "CAD systems"), which often use databases of both two-dimensional (2D) and three-dimensional (3D) geometric models.

[0004] In recent years, object data representing 3D objects has become widely used, not only in the form of traditional CAD data but also in the form of 3D object data related to products. In addition, digitizing objects into 3D object data to establish digital archives has become common. As the amount of these types of data steadily increases, there is an increasing need for efficient data management and efficient retrieval of data requested by users. To meet these needs, various techniques have been proposed. Regarding techniques for searching for similar objects, many search methods have been proposed that calculate the features of multimedia objects as numerical feature values ​​and use multidimensional vectors composed of these feature values.

[0005] Furthermore, today, various products are designed using CAD. A system has been proposed for registering 3D form data and component parts of a product in a database and searching for similar products and parts. For example, U.S. Patent Application Publication No. 2002 / 0004710A1, the entire disclosure of which is incorporated herein, proposes a system for searching for objects that partially match a 3D form model made of polygons. This system uses nodes containing polygons as references and neighboring nodes as parent nodes to construct a form analysis tree, and evaluates the consistency of nodes in the form analysis tree to thereby determine the similarity of 3D forms. This approach allows, for example, a search to be performed using a mechanical part created by CAD as a search key, and then objects containing parts obtained by additionally processing the mechanical part as a subelement can be obtained as similar results. In light of the systems disclosed in the prior art, the present invention is believed to provide a novel system and method for comparing two or more 3D object models. Summary of the Invention

[0006] This disclosure provides a match between a 3D object and a reference polygon as a degree of match between no match and a perfect match. For clarity, the method for matching based on total perimeter values ​​is just one technique based on conditions for triangle congruence, as described below.

[0007] In one aspect, the present disclosure provides a novel system and method for comparing two or more three-dimensional (3D) object models by evaluating at least one reference polygon (triangle) from each received polygon mesh data. For each reference polygon (triangle), the method includes identifying adjacent polygons (triangles) using a condition for triangle congruence and performing adjacent facet edge hashing to create an object hash value for each of the at least one polygon (triangle). The method includes comparing the object hash value with one or more reference hash values ​​assigned to the one or more 3D object models, respectively. The method includes determining whether a match exists between the one or more 3D object models and the reference object based on the amount of match between the obtained hash values. In one or more embodiments, the method compares 3D polygon (triangle) data of an object, such as previous scans of the same object, to determine deviations or the subtraction or addition of subparts over time.

[0008] One possible method for calculating the compatibility between a reference polygon and an object polygon pattern is to calculate the compatibility from the degree of match between the polygon patterns. When the polygons are triangles, the degree of match between the polygon patterns can be calculated from the degree of match between the shapes of both triangles and the degree of match between the positions of both triangles. The degree of match between the shapes of the triangles can be calculated from the degree of match of one of the conditions for triangle congruence, which includes "three pairs of sides of a triangle are equal in length," "two pairs of sides of a triangle are equal in length and the measurements of the angles formed by the two pairs of sides are equal," and "one pair of sides of a triangle are equal in length and the measurements of the two pairs of angles at both ends of the side are equal."

[0009] In one aspect, the present disclosure provides novel systems and methods for comparing two or more three-dimensional (3D) object models. In one embodiment, the present innovation provides a method comprising: (i) receiving polygon mesh data describing a 3D object; (ii) obtaining perimeter values ​​(or edge lengths and angle values) of a reference polygon; (iii) comparing the obtained values ​​with stored values ​​of the reference object; and (iv) determining whether a match exists between the 3D object and the stored reference object based on the amount of match between the obtained and stored values.

[0010] In another aspect, the present disclosure provides novel systems and methods for comparing two or more three-dimensional (3D) object models. In one embodiment, the present innovation provides a method that includes:

[0011] In another aspect, the innovation provides a method that includes: (i) receiving triangular mesh data describing a 3D object; (ii) obtaining dimensional layers of the 3D object from a slicer program in each of one or more distinct orientations; (iii) obtaining scalar values ​​from the 2D data of each layer in each orientation; (iv) comparing the obtained perimeter values ​​with stored perimeter values ​​of a reference object; and (v) determining whether a match exists between the 3D object and the reference object based on an amount of match between the obtained scalar values ​​and the stored scalar values.

[0012] In another aspect, the present disclosure provides a method comprising receiving triangular mesh data describing a three-dimensional (3D) object. The method includes, for each 3D triangle of the received triangular mesh data of the 3D object evaluated as a reference triangle, (i) identifying one or more neighboring triangles that share a side with the reference triangle, (ii) calculating scalar values ​​from a numerical geometric description of the neighboring triangles, and (iii) assigning the scalar value to the reference triangle. The method includes comparing a total scalar value assigned to the 3D object with a total scalar value assigned to the reference object, and determining whether a match exists between the 3D object and the reference object based on an amount of match between the obtained total perimeter value and the stored total perimeter value.

[0013] In another aspect, the present disclosure provides a method comprising receiving triangular mesh data describing a three-dimensional (3D) object. The method includes, for each 3D triangle of the received triangular mesh data of the 3D object evaluated as a reference triangle, (i) identifying one or more adjacent triangles that share a side with the reference triangle, (ii) calculating perimeter values ​​of the adjacent triangles (total perimeter or equivalent discriminant value based on a condition for triangle congruence), and (iii) assigning the calculated values ​​to the reference triangle. The method includes comparing the calculated values ​​assigned to the 3D object with the calculated values ​​assigned to the reference object, and determining whether a match exists between the 3D object and the reference object based on the amount of match between the obtained and stored calculated values. The calculated values ​​between the 3D object and the reference object do not need to correlate 1:1; the two items can undergo scaling (a size normalization process), so preprocessing and matching can be achieved by normalization, standardization, etc. The 3D object can be scaled in one, two, or three orthogonal dimensions to match the reference object.

[0014] In another aspect, the present disclosure provides a method comprising receiving triangular mesh data describing a three-dimensional (3D) object. The method includes, for each 3D triangle of the received triangular mesh data of the 3D object evaluated as a reference triangle, (i) identifying three adjacent triangles that share an edge with the reference triangle, (ii) calculating a total perimeter value for the perimeter lengths of the three adjacent triangles, and (iii) assigning the total perimeter value to the reference triangle. The method includes comparing the total perimeter value assigned to the 3D object with the total perimeter value assigned to the reference object, and determining whether a match exists between the 3D object and the reference object based on an amount of match between the obtained total perimeter value and the stored total perimeter value.

[0015] These and other features are more fully described in the illustrated embodiments below. In general, it should be understood that features of one embodiment may be used in combination with features of another embodiment, and the embodiments are not intended to limit the scope of the invention.

[0016] Various exemplary embodiments of the present invention will become more apparent as the description proceeds and are set forth in the following detailed description taken in conjunction with the accompanying drawings. [Brief explanation of the drawings]

[0017] [Figure 1] 1 is a block diagram of an apparatus for matching a three-dimensional (3D) object to a reference object, according to one or more embodiments. [Figure 2] 1 is a flow diagram of a method for matching a 3D object to a reference object in accordance with one or more embodiments. [Figure 3A-3C] FIG. 1 is an isometric orthogonal view of an exemplary 3D object having a keyhole, in accordance with one or more embodiments. [Figure 4] FIG. 1 is a diagram of a reference triangle surrounded by three adjacent triangles, according to one or more embodiments. [Figure 5]FIG. 1 is a diagram of a reference triangle surrounded by three adjacent triangles and other triangles that share a vertex, in accordance with one or more embodiments. [Figure 6] 1 illustrates a flow diagram of an exemplary method for accelerated matching using slice perimeter measurements, according to one or more embodiments. [Figure 7] 1 illustrates a flow diagram of an exemplary method for exact matching that maps each reference triangle of a 3D triangular mesh to the perimeter sums for neighboring triangles, in accordance with one or more embodiments. [Figure 8] FIG. 1 illustrates a block diagram of an exemplary computer-readable medium or device including processor-executable instructions configured to embody one or more of the proposals described herein, according to one or more embodiments. [Figure 9] 1 illustrates a scenario of an aerial drone 3D scanning a communication tower as part of a routine inspection, in accordance with one or more embodiments. [Figure 10] 1 illustrates KeyC facet adjacent edge hashing, according to one or more embodiments. [Figure 11] 1 illustrates Key4 facet adjacent edge hashing, according to one or more embodiments. [Figure 12] 1 illustrates KeyV2 faceted adjacent edge hashing, according to one or more embodiments. [Figure 13] 1 illustrates KeyV facet adjacent edge hashing, according to one or more embodiments. [Figure 14] 1 illustrates KeyE or Key10 facet adjacent edge hashing, according to one or more embodiments. [Figure 15] 1 illustrates a flow diagram showing an exemplary method for comparing two or more three-dimensional (3D) object models, according to one or more embodiments. [Figure 16] 1 illustrates a flow diagram showing an example method for identifying deviations in an object, according to one or more embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0018] The present invention can be modified in various ways and implemented in multiple embodiments. Specific embodiments are shown in the drawings and described in detail. However, it is not intended that the present invention be limited to the specific embodiments, and it is understood that the present invention includes all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention.

[0019] Terms such as first and second may be used to describe various elements, but the elements should not be limited by the terms. Terms are used only to distinguish one element from another. For example, a first element may be termed a second element without departing from the scope of the present invention. Similarly, a second element may be termed the first element. The term "and / or" includes a combination of multiple associated illustrated terms or any one of multiple associated described terms.

[0020] When an element is described as being "connected" or "coupled" to another element, it should be understood that although the element may be "directly connected" or "coupled" to the other element, there may be a third element between the two elements. In contrast, when an element is described as being "directly connected" or "directly coupled" to another element, it should be understood that there is no third element between the two elements.

[0021] The terms used in this application are used only to describe particular embodiments and are not intended to limit the present invention. The singular expressions include the plural expressions unless the context clearly dictates otherwise. In this application, terms such as "comprise" or "have" are intended to refer to the presence of features, numbers, steps, operations, elements, or parts, or combinations thereof, described herein, and should not be understood to preclude the presence or possible addition of one or more other features, numbers, steps, operations, elements, parts, or combinations thereof.

[0022] All terms used herein have the same meaning as those commonly understood by those skilled in the art unless otherwise defined. For example, terms defined in a general dictionary should be interpreted as having the same meaning as the term in the context of the relevant art, and should not be interpreted as having an abstract or overly formal meaning unless expressly defined herein.

[0023] Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the accompanying drawings. In describing the present invention, to facilitate general understanding, the same reference numerals will be used to indicate the same elements throughout the drawings, and duplicate descriptions of the same elements will be omitted.

[0024] According to aspects of the present disclosure, a method is provided for comparing two or more three-dimensional (3D) object models. The 3D models may include polygon meshes. In some embodiments, the polygon mesh is a triangle mesh and the reference polygon is a reference triangle.

[0025] In one or more embodiments, the systems and methods of the present invention provide for obtaining triangular mesh data of a 3D object (e.g., from a slicer program). In one or more embodiments, calculated scalar values ​​from each layer of data in each orientation are obtained and compared to stored scalar values ​​of a reference object to determine a match. In one or more embodiments, the measurement data is facilitated by processing software. In another embodiment, smaller objects within the 3D object are analyzed similarly. In another embodiment, for a more robust approach, each triangle in the triangular mesh data is analyzed by assigning a value that numerically combines scalar values ​​calculated from surrounding triangles. In another embodiment, a match with the reference object is made based on the assigned and combined scalar values. In one or more embodiments, the 3D object can be scaled in one, two, or three orthogonal dimensions to match the reference object.

[0026] In one or more embodiments, the method includes receiving triangular mesh data describing two or more 3D object models. The method includes assigning one of the two or more 3D object models as a reference object. The method includes evaluating at least one 3D triangle from each of the received triangular mesh data of the two or more 3D object models as a reference triangle, and for each reference triangle, (i) identifying one or more neighboring triangles using a condition for triangle congruence, and (ii) performing adjacent facet edge hashing to create an object hash value for each of the at least one 3D triangle. The method includes comparing the object hash value to one or more reference hash values ​​assigned to the one or more 3D object models, respectively. The method includes determining whether a match exists between the one or more 3D object models and the reference object based on an amount of match between the obtained hash values.

[0027] According to another aspect of the present disclosure, a method for identifying deviations in an object is provided. In one or more embodiments, the method includes receiving first triangular mesh data describing an object at a first time point. The method includes evaluating at least one 3D triangle from the received triangular mesh data by (i) identifying one or more adjacent triangles using a condition for triangle congruence and (ii) performing adjacent facet edge hashing to create an object hash value for each of the at least one 3D triangle. The method includes creating a first 3D reference model for the at least one triangle of the first triangular mesh data, the first 3D reference model comprising a respective object hash value. The method includes receiving second triangular mesh data describing one of a similar object or an object at a second time point subsequent to the first time point. The method includes, for each reference triangle, evaluating at least one 3D triangle from each received second triangular mesh data, (i) identifying one or more adjacent triangles using a condition for triangle congruence. The method includes performing adjacent facet edge hashing to create an object hash value for each of the at least one 3D triangle. The method includes creating a second 3D reference model comprising an object hash value for each of the at least one triangle. The method includes comparing the first and second 3D object models.

[0028] In one aspect, the present invention generally relates to a novel system and method for comparing two or more three-dimensional (3D) object models. The present invention relates to a three-dimensional data processing device, a three-dimensional data processing method, and a three-dimensional data processing program. More specifically, the present invention relates to a device, method, or program capable of searching for parts similar to a predetermined shape from an input shape model (such as a CAD model or a mesh model), and capable of changing the search range with respect to size and / or topology.

[0029] In one or more embodiments, the method obtains dimensional layers of triangular mesh data of the 3D object from a slicer program in each of three orthogonal directions. In another embodiment, the method obtains existing 3D modeled triangular mesh data of the 3D object. In another embodiment, perimeter values ​​for each layer in each of the three orthogonal directions are obtained and compared to stored perimeter values ​​of the reference object to determine a match. In one or more embodiments, the measurement data can be facilitated by processing software, including but not limited to CNC / 3D printing software. Additionally, smaller objects within the 3D object are analyzed. For a more robust approach, each triangle in the triangular mesh data is analyzed by summing the perimeters of surrounding triangles and assigning a value. In another embodiment, a match with the reference object is made based on the assigned total perimeter value. In another embodiment, the values ​​calculated for the 3D object and the reference object do not need to correlate 1:1 and can be proportional. The two items can be scaled differently, and a match can be achieved by normalization, standardization, etc. The 3D object can be scaled in one, two, or three orthogonal dimensions to match the reference object.

[0030] In one or more embodiments, various methods are utilized depending on the average processing time required for the calculations. In other embodiments, the methods and process steps are not interdependent and can be used in various combinations to evaluate similarities and differences between two or more three-dimensional (3D) object models. The analysis methods can be used independently, in conjunction with one or more other analyses, in a given order, and can include other processes for further data collection on a case-by-case basis.

[0031] The present innovation relates to a similar shape comparison and search device 100, which comprises: (i) a reference shape model input unit 102 for providing a reference shape model; (ii) a test shape model input unit 104 for providing a test shape model; (iii) a comparison and search unit 106 for searching for shape models similar to the test shape model; and (iv) a display unit 108 for displaying any one of the test shape models determined to be similar to the reference shape model.

[0032] The comparison and search unit preferably includes (i) a file converting module (optional) 110, (ii) a mesh generation module (optional) 112 for meshing the shape model to obtain a shape mesh model, (iii) a parameter calculation module 116 for calculating parameters of a partial shape model, (iv) an object extraction module 118 for dividing the shape model into one or more partial shape models, and (v) a comparison calculation module 120 for comparing the similarity measure between the parameter characteristics of the shape model and the parameter characteristics of a reference shape model.

[0033] In another embodiment, the comparison and search unit preferably includes (i) a file converting module (optional) 110, (ii) a mesh generation module (optional) 112 for meshing the shape model to obtain a shape mesh model, (iii) an object slicing module (optional) 114 for slicing the shape model to obtain slice parameters of the shape model, (iv) a parameter calculation module 116 for calculating parameters of a partial shape model, (v) an object extraction module 118 for dividing the shape model into one or more partial shape models, and (vi) a comparison calculation module 120 for comparing the similarity measure between the parameter characteristics of the shape model and the parameter characteristics of a reference shape model.

[0034] The design of the present innovation can take on any number of configurations depending on the intended use of the system. Various configurations may include one or more of the following components: (a) a file converting module (optional), (b) a mesh generation module (optional), (c) an object slicing module (optional), (d) a parameter calculation module, (e) an object extraction module, (f) a comparison calculation module (optional), and (f) a comparison output display (optional).

[0035] The shape model data is converted into triangular mesh data, and a group of triangular mesh data is extracted and classified. The shape model data is divided into "components" with certain characteristics. These processes are a triangular mesh data converting process and a partial characteristic shape extracting process. Feature quantities of the triangular mesh data group representing the classified partial characteristic shapes are calculated, and then the difference between the feature quantities of the calculated triangular mesh data group and the feature quantities of the reference shape is calculated. A list of candidate similar shapes is displayed based on the value of the difference in the feature parameter quantities.

[0036] FIG. 2 illustrates a method 200 that includes preliminary steps that prepare for processing. (1) Use commercially available computer-aided design software, such as SolidWorks (Dassault Systemes SolidWorks Corp., Waltham, Mass.) or AutoCAD (Autodesk, Inc., San Rafael, Calif.), to create a computer data file of a digital 3D model or obtain computer data of an existing digital 3D model. (2) In block 202, upload the model to a database. Various types of files that may be uploaded to the server for visualization include, but are not limited to, 3dxml, 3mf, asab, asat, asm, catpart, catproduct, dwg, dxf, fbx, glb, gltf, iges, igs, ipt, jt, model, obj, par, prt, sab, sat, sldasm, step, stl, stp, usd, usdz, vda, x_b, x_t, and xcgm files. (3) In block 204, the files are converted to the same format. One non-limiting example of a format is .stl. In the exemplary embodiment, the files are all converted to STL, although other formats can be used. Commercially available software such as NuGraf and PolyTrans Pro Translation System from Okino Computer Graphics (Ontario, Canada) can be used to perform the conversion. The system can take an existing 3D model from a scan, such as a CT scan, a CAD file, etc., and convert the scan into an STL file. (4) In block 206, a data (e.g., .stl) file with all dimensions in the same units (e.g., all metric or all English) is uploaded to a queue to be processed. (5) Block 208 checks whether repair is required, and if so, sends the uploaded file to a repair module, such as a commonly known slicer program (block 210).

[0037] STL (STereoLithography) is a file format native to the stereolithography CAD software created by 3D Systems. STL has several postscript backronyms, such as "Standard Triangle Language" and "Standard Tessellation Language." This file format is supported by many other software packages and is widely used for rapid prototyping, 3D printing, and computer-aided manufacturing. As used herein, the term STL or .stl file refers to a computer data file that can be uploaded to a server for visualization of 3D objects, which may include, but is not limited to, 3dxml, 3mf, asab, asat, asm, catpart, catproduct, dwg, dxf, fbx, glb, gltf, iges, igs, ipt, jt, model, obj, par, prt, sab, sat, sldasm, step, stl, stp, usd, usdz, vda, x_b, x_t, and xcgm files.

[0038] In one exemplary embodiment, the method 200 for processing an uploaded file in the first stage includes a first step (block 212) of reading the object data file and saving vertices to SQL data. A vertex is the location of each point of a triangle in three-dimensional space. Thus, data is saved as three-dimensional reference points for the triangle's three points. Calculations are made from the three points regarding the side lengths (and / or angles). The reference data and measurements are associated with identifiers assigned to the triangles based on the order in which they are processed. A scanned object can have over 500,000 triangles. The data (e.g., .stl) file provides surface triangles and solid pyramids. The object's surface definition is obtained by a file converting module, which (a) accesses the polygon mesh data file, (b) orients the object on three orthogonal axes {x, y, z}, and (c) orients and / or rotates the mesh data to obtain one or more orientations for presentation. The orientations provide a combination of orientations as needed, regardless of the object's origin. The three orientations provide a full range of combinations, regardless of which direction the object is emanating from. Generally, software providing object data will consider plane "1" to be the face oriented toward the slicer. The other two orientations provide a set of orthogonal slices or other data sets.

[0039] In an optional second stage at block 214, the method includes recreating the data (e.g., .stl) file from the SQL version into three orthogonal axes {x, y, z} by rotating 90 degrees left and 90 degrees back. In a third stage, the method includes slicing each of the three orientations with MATTERSLICE to obtain three sets of G-code. A slicing program (e.g., slic3r, MatterSlice, craftware, matter control, etc.) can generate the G-code, yielding a decomposed answer as a perimeter number. G-code is the machine language for a computer numerical control (CNC) or 3D printer from which objects can be created. Using the G-code, the method includes measuring the perimeter of all slices. As an example, consider a G-code providing 400 slices, which would yield 400 perimeter lengths for comparison. Find matches for those 400 perimeters in any order. Slice 1 may not match slice 1 because of its different orientation. Obtain a score based on the number of layers. For example, a match can range from 0, for no matching slices, to 400, for a perfect match in this example.

[0040] In one or more embodiments, the method includes the optional step of posing the 3D form data to maximize the longest coordinate. It may be possible to use a method that sets a coordinate system to maximize the x, y, and z coordinates, calculates the similarity for each case, and outputs the case with the highest similarity as the search result.

[0041] In one or more embodiments, one or more data acquisition devices can be used to generate raw 3D data about the object and input the raw 3D data to the server. Some examples of suitable data acquisition devices include laser scanners and MM scanners, CAT scanners, or laser confocal microscopes for acquiring 3D surface data. However, it will be understood that the data acquisition device can include any device that generates digitized 3D data from an object. The acquired 3D data can be 3D surface data, such as generated by optically scanning the surface of the object, or 3D volume data containing information about the interior of the object, such as obtained from MM scans, CAT scans, or laser confocal microscope volume data.

[0042] In one example of 3D surface data, an object is scanned using a laser scanner, generating tens or hundreds of thousands of point coordinates, each representing a location on the object. This collection of points is called a "point cloud." A point cloud has no structure; it is simply a file containing point coordinate data as x, y, and z values. Point cloud information can also be generated interactively or automatically from mathematical functions using a computer program, as is well known in the art. In either case, the point cloud must be structured or modeled in order to be manipulated.

[0043] One advantageous method for modeling 3D data is to triangulate a point cloud to generate a triangular mesh with digitized points as vertices. 3-D triangular meshes are well-known surface modeling primitives used in computer graphics to represent real-world and synthetic surfaces. Each triangle "knows" about its neighbors, a structure that allows for fast processing of the geometry represented by the triangulation. It is important to emphasize that the same vertex or set of data points may have multiple triangulations. Therefore, the emphasis is on the vertices themselves, not the "surface" represented by the triangle. A triangular mesh representation consists of information about geometry and connectivity, also known as topology. The geometry defines the location of the vertices in a (Euclidean) coordinate system. These are expressed as triplets (x, y, z). The connectivity defines the set of points that connect to form the triangles or faces of the mesh. A triangle is given by three index values ​​that identify the three vertices that bound the triangle.

[0044] In one or more embodiments, one or more data compression modules may be used to compress certain data for improved storage and transfer.

[0045] Earlier prototypes used the open source Slic3r product. Later versions use the MatterSlice open source product to better handle low resolution cases. The slicer parameters are set as follows:

[0046] Block 216 sets the slicer parameters: (1) the unit measurement of the layer (0.1), (2) only the shell of everything with a dimension of 1 unit is defined by removing solids between the perimeters and not filling with solids or infill, and (3) the material size to be entered to fill the shell. The layer perimeter is calculated automatically, which includes exterior layers and may also include interior layers for holes or objects in the model. The data for each layer is compared to layers of data in the database. Matches are ranked based on the percentage of match with the model in the database, including matches to the perimeter in a given model.

[0047] Layering is addressed in Stage 3. Three evaluations are performed with the object in three different orientations. Consider model 100 in orientations 102a-102c, illustrated in Figures 3A-3C, respectively. Note that turning 180° from one of these orientations produces the same result. Therefore, it is not necessary to turn model 300 to every possible orientation. Orientations 300a-300c allow for analyzing model 300 using layering at all possible 90° variations from model 300's initial orientation.

[0048] In one example, layers are calculated as 0.1mm high. The outer perimeter of each layer is calculated. Each layer is assigned a value corresponding to its perimeter. Layers can be in 1, .5, or .1 units. In one example, the program "assumes" everything is metric, so it assumes metric and uses 0.1mm, regardless of what units the STL file is actually measured in. Also, note that as a search is made, the closest matches are displayed in order. In step 1, where objects are identified within other objects, their perimeters are calculated for matches before step 2 (extraction).

[0049] In stage 4, block 216, the G-code is processed, removing unnecessary information and speeding up processing by retaining only the lengths per layer. In stage 5, block 218, thumbnail images are generated to allow the user to easily and quickly view the scanned and processed model, object, or part. In one embodiment, POV-Ray software is used based on the first image presented, such as a front camera view. "POV-Ray" or "Persistence of Vision Raytracer" is a trademark of Vision Raytracer Pty. Ltd., Williamstown, Victoria, Australia.

[0050] Stage 6 consists of two steps, blocks 220 and 222, either one or both can be performed. The choice can be made based on considerations of processing requirements. In Step 1 of Stage 6, the SQL vertices are processed for the keyhole of a set of four triangles. Figure 4 illustrates a first triangle A 200 that is surrounded by triangle B 201, triangle C 202, and triangle D 203 by sharing their respective edges. Calculate all three parameters for all four triangles = 3D reference points for the three points on the triangle + calculate the lengths of the edges from the three points + read order (assign numbers to triangles in order, 500,000+ triangles). We only need to consolidate the information here; the calculations were already done above. Now, consolidate the four and assign numbers.

[0051] In other words, in step 1, the edges are associated with the keyholes of the four triangles. Three pieces of data are examined (the reference point plus the calculated edges of all four triangles): the reference triangle A and the three triangles B, C, and D that are tangent to the three edges of the reference triangle A. Each triangle in the object is individually calculated as a keyhole triangle #1 in the set of four triangles. Thus, if there are 1,000 triangles, there will be 1,000 keyhole triangle #1s in the set of four triangles. In one or more embodiments, the four pieces of data are considered: (a) examine the edges of triangles A, B, C, and D; and (b) determine the assignment order and data sequence for the surrounding triangles B, C, and D according to the adopted rules. In one embodiment, the first data column contains only the perimeter. The second, third, and fourth columns can contain the lengths of each shared edge of triangle A.

[0052] When measuring the length of one or more triangles that share a side with a reference triangle, the measurement is taken south (downward) from the reference triangle using the default / initial orientation of the model. Thus, in one example, the triangle "below" the reference triangle, i.e., the triangle below the reference triangle that shares the base of the reference triangle, is the first measurement point. The perimeter is measured, and consequently the number of triangles. In one example, one or more additional triangles are measured. In the above example, triangle "5" is located below the reference triangle ("1"). The perimeter of "5" is measured, then the perimeter of "4", then the perimeter of "3". In one particular example, this results in a perimeter of "5" of 85mm, "4" of 300mm, and "3" of 65mm.

[0053] Note that the retrieved data is the resulting numerical value of a reference triangle, which is based on the perimeter of one or more neighboring triangles. Every triangle in the model is treated as a reference triangle in this manner. This results in data duplication. The entire model is treated as if it were flat. The topographical relationships between triangles are irrelevant to this process. Counterintuitively, step 3 results in computations that are superior in both speed and accuracy (including reliability) compared to techniques that use simpler, more readily apparent approaches.

[0054] Returning to FIG. 2, in step 2 of stage 6 in block 222, the eight vertices where triangles B through D touch triangle A are evaluated, as illustrated in FIG. 5. In addition, triangles E through K share at least one vertex with triangle A and are also considered. Each triangle in the object is individually calculated as a keyhole triangle #1 in the 8+ triangle set. Thus, if there are 1,000 triangles, there will be 1,000 keyhole triangle #1s in the 8+ triangle set. With an increasing number of triangles to consider, step 2 can be significantly more processor-intensive than step 1. Note that these data points are registered in the same way as in step 1; however, additional calculations are performed in step 2. For the starting piece of data for triangle A, (1) get the perimeter of triangle A, (2) get the three side lengths of triangle A, (3) look at the edges of triangle A to identify triangles B-D that share edges with them, (4) find the perimeter of triangles B-D, (5) get triangles B-D, and (6) get triangles E-K other than triangles B-D that touch three points or vertices of triangle A, (7) get the perimeter of the tangent triangles E-K, and (8) get the side lengths of the tangent triangles E-K. The perimeter of triangle A + the three side measurements = four data points total, plus which triangles touch triangle A.

[0055] Returning to Figure 2, stage 7 in block 224 involves object extraction. If the reference model is within another model in the database, the reference model is extracted and analyzed in this step, as well as for other models in the database that reside within the reference model. Objects are derived from the model, i.e., submodels are separated and analyzed independently of the parent model. Objects can be holes, voids, or other parts.

[0056] In one illustrative example, object extraction in stage 7 can detect a short bolt as a reference object that is otherwise identical but is known to be part of a longer bolt. Conversely, the longer bolt can be made the reference object. The shorter but otherwise identical bolt is identified as comprising a corresponding percentage of the longer bolt, and is therefore displayed as an exact match for that section of the bolt.

[0057] In a similar example, object extraction can be performed using specific bolts as the reference object database for a scanned model database of a jet engine. The .stl file can be an assembly file. In particular, "jt" files are an open format that allows numerous notes to be inserted into the file. Identical bolts within a jet engine can be extracted and shown as matching. The location of each match within the engine can be identified and highlighted. There is virtually no limit to the number of such subassemblies or parts that can be detected; for example, finding 600 bolts within an engine and distinguishing them from 400 screws. Uses of such information can include building a bill of materials for a specific object, detecting counterfeit patent parts, diagnosing component failure modes, etc.

[0058] Each of the above stages and steps can be performed individually or in various combinations. For example, stage 1 can be performed immediately followed by stage 6. For another example, if there are two or more meshes / objects to be analyzed in the model database, each mesh / object can be analyzed individually through each of the stages.

[0059] The present invention is a basic technology for providing excellent usability in handling three-dimensional data, and covers a wide range of applications. The searching step preferably allows changing the recognition mode of the similarity between the query shape model and characteristic parts in terms of size or topology.

[0060] One or more embodiments of the present invention allow for flexible retrieval and display of shape parts that are similar in size or topology to any query shape data. One fundamental question is whether two shapes are actually the same. This has no unique answer and depends on the aspect of the shape that the user is most interested in. At a basic level, if two shapes are identical but placed in different locations, they are considered "the same" for most purposes. Topology has a much broader concept of identity than geometry. Here, two shapes are considered "the same" if one can be pulled, stretched, or twisted into the other.

[0061] Topologically similar shapes can be found by lowering the similarity threshold. Lowering the similarity threshold, for example, by expanding the region of interest, allows for a broader range of shapes to be searched. The present invention uses mesh information to perform the similarity search. Thus, the present invention allows for finding similar shapes even if they have different topological configurations.

[0062] In one or more embodiments, a separate stage or step can be performed to scale the results. If the number of facets in the model or the objects identified in the model are identical to the reference model, the comparison model (or the model found in the database, in the case of a search) can be scaled accordingly. Following scaling, a layer analysis (step 1) can be performed to identify the extent to which the model has been scaled or stretched. If the model has been stretched in one direction, e.g., lengthened, processing in step 1 after identifying a matching model in step 5 will produce the extent to which scaling occurred (e.g., 50% longer). If the model has been stretched in multiple directions, e.g., the model has been proportionally expanded 500% larger, the scaling process in step 5 will bring the comparison model to the same size as the reference model, resulting in a layer-based result of 100% match (assuming no additional differences exist elsewhere between the models). In this case, the ratio by which the comparison model or the model found in the database needed to be scaled is presented, e.g., an 87% reduction or increase in total size.

[0063] An exemplary method might be (1) do process 3, (2) get the number of triangles from the stl file and see if they are the same or within 10%, (3) take the first 1, 2, 3, 4 or so triangles from the file and compare them to the first triangle from the second file to see the ratio of the side lengths, (4) run this ratio three times for three sides to confirm, (5) process matches with a number of data points, and (6) go back to the previous process step and start processing while applying the ratio to see if all the triangles match.

[0064] In one or more embodiments, density calculations can be performed as another information source for matching objects. Additionally, artificial intelligence can be incorporated to extend the use case to predictive and prescriptive analysis. One or more embodiments may employ various artificial intelligence (AI)-based schemes to perform various aspects. One or more aspects may be facilitated via an automatic classification system or process. A classifier is a function that maps an input attribute vector x = (x1, x2, x3, x4, xn) to a confidence that the input belongs to a class. In other words, f(x) = confidence(class). Such classification may employ probabilistic or statistical-based analysis (e.g., attribute distribution of analysis utility and cost) to predict or infer an action that a user desires to take automatically.

[0065] A support vector machine (SVM) is one example of a classifier that can be employed. SVMs operate by finding a hypersurface in the space of possible inputs, which attempts to separate triggering criteria from non-triggering events. Intuitively, this makes the classification correct for test data that may be similar, but not necessarily identical, to the training data. Other directed and undirected model classification approaches that provide different patterns of independence (e.g., naive Bayes, Bayesian networks, decision trees, neural networks, fuzzy logic models, and probabilistic classification models) may also be employed. Classification as used herein may include statistical regression, which is utilized to develop priority models.

[0066] One or more embodiments may employ classifiers that are implicitly trained (e.g., via observing user behavior, receiving exogenous information) in addition to classifiers that are explicitly trained (e.g., via generic training data). For example, an SVM may be constructed via a learning or training phase within a classifier constructor and feature selection module. In this manner, classifiers may be used to automatically learn and perform many functions, including, but not limited to, making decisions according to predetermined criteria.

[0067] One application is a "Doctor ATM" or "Automatic Doctor Machine" (ADM), which uses a CT scanner to examine the entire body, identify individual components such as organs, and compare these components with previous scans of known healthy and diseased organs to look for early signs of disease and cancer. Comparisons can also be made with previous models created on the same individual to detect trends. Periodic scans allow algorithms to alert if known patterns emerge that indicate the early onset of diseases such as degenerative skeletal conditions, certain cancers, or an enlarged heart.

[0068] One use of the process described herein is to match a reference object database for a font to see if a character matches from within the object. If a character is found, a word or engraved model number can be identified from within the object. Another use is to verify that a product is assembled with the correct fasteners or components, or to correctly identify which components should be used in a new or repaired assembly. A series of different versions of a product can be analyzed to identify changes in the components used over time. Unknown physical parts can be scanned and matched to the original .stl version of the CAD / CAM model to create additional replacement units. Matched prototypes or parts of prototypes can identify closely matching components that were previously designed, tested, and manufactured, thereby avoiding the creation of unnecessary secondary supply chains.

[0069] Schools can check for cheating by students creating 3D models for academic exercises. The present disclosure provides for identifying matches of parts of a model, stretched or rescaled models, etc. Schools can share databases of known pre-existing models to make cloning more difficult.

[0070] FIG. 6 illustrates a flow diagram of an example method 600 of rapid matching using slice perimeter measurements, according to one or more embodiments. Method 600 begins by receiving triangular mesh data describing a three-dimensional (3D) object (block 602). Method 600 includes obtaining dimensional layers of the 3D object from a slicer program in each of three orthogonal orientations (block 604). Method 600 includes obtaining perimeter length values ​​for each layer in each of the three orthogonal orientations (block 606). Method 600 includes comparing the obtained perimeter length values ​​with stored perimeter length values ​​(block 608). Method 600 includes determining whether a match exists between the 3D object and the reference object based on the amount of match between the obtained perimeter length values ​​and the stored perimeter length values ​​of the reference object (block 610). Method 600 then ends.

[0071] FIG. 7 illustrates a flow diagram of an example method 700 of exact matching, in accordance with one or more embodiments, for mapping each reference triangle of a 3D triangular mesh to the sum of the perimeters of its neighboring triangles. The method 700 begins by receiving triangular mesh data describing a three-dimensional (3D) object (block 702). For each 3D triangle of the received triangular mesh data of the 3D object that is evaluated as a reference triangle at block 704, the method 700 includes identifying three adjacent triangles that share an edge with the reference triangle (block 706). The method 700 includes calculating a total perimeter value for the perimeter lengths of the three adjacent triangles (block 708). The method 700 includes assigning the total perimeter value to the reference triangle (block 710). The method 700 includes comparing the total perimeter value assigned to the 3D object with the total perimeter value assigned to the reference object (block 712). The method 700 includes determining whether there is a match between the 3D object and the reference object based on the amount of match between the obtained total perimeter value and the stored total perimeter value (block 714), after which the method 700 ends.

[0072] This aspect of innovation is envisioned to apply to three stages of development, including product design, manufacturing, and use, as follows:

[0073] These stages include: a. Design stage i.CAD ii.3D model b. Realization i.Manufacturing ii. Scanning 3D parts using laser scanning c.Use i.Old age ii. Performance iii. Scanning 3D parts using laser scanning

[0074] During the design stage, use cases include: (i) CAD (SolidWorks, SolidEdge, AutoCAD), (ii) ANSI and other standards compliance, (iii) search for similar models and similar differences, (iv) differences between models or versions, (v) search for physical attributes and defined tolerances within specific cases, (vi) Addition: Quality control to ensure that the part (scan or 3D drawing) is not only the same part / item, but also (a) adherence to tolerances, e.g. + / -, (b) changes to add, e.g., "gold standard" is x and tolerance is Y.

[0075] Enhancements to the realization stage will cover 70% of the potential market. Examples include (i) quality control, e.g., (a) comparing 3D models (CAD) with scans, and (b) comparing scans of a gold standard object with scans of the object under test. Examples include (ii) automatic recognition of "2D" information in PDFs and other documents written by engineers to automatically adjust settings for 3D model analysis.

[0076] Aspects of the present innovation aim to improve quality control by improving speed and efficiency, particularly compared to commonly known human visual inspection, which is slow, costly and does not allow for as much inspection.

[0077] Coordinate measuring machines (CMMs) are devices used to measure the physical geometric properties of objects. These machines can be manually controlled by an operator or computer-controlled. Measurements are defined by a probe attached to the machine's third axis of motion. CMMs are also used in manufacturing and assembly processes to test parts or assemblies against design intent. By precisely recording the X, Y, and Z coordinates of an object, points are generated that can then be analyzed via regression algorithms for feature construction. These points are collected using a probe that is positioned manually by an operator or automatically via direct computer control (DCC). DCC CMMs can be programmed to repeatedly measure the same part; therefore, they can be considered a specialized form of industrial robotics.

[0078] Having a robust inspection process to improve quality control is essential in today's manufacturing world. Accurate 3D scanning and inspection analysis allows companies to reduce iteration / tuning loops and quickly derive the right corrective actions without delaying time-to-market goals. In one or more embodiments, a 3D scanner measures the geometry of the physical part and brings it into the digital world. The data output is typically a point cloud represented in an STL (stereolithography) file format. This data can be used to compare against the original CAD drawing or to compare to a previous scan of a gold standard part within tolerances.

[0079] Dimensional data can be obtained by a variety of techniques. For inspection of parts, which can be delicate and have abrupt geometries, non-contact techniques are commonly used, i.e., no physical probe touches the part. Non-contact techniques typically all detect some form of energy emitted from the sample being probed. Suitable forms of energy include light, heat, and sound. When the energy is in the form of light, the light may include one or more of visible light, infrared (IR) light, near-infrared (NIR) light, and ultraviolet (UV) light. Suitable energy detectors for light detection include photodetectors, such as photodiodes, position sensing devices, array detectors, and CCDs (charge-coupled devices). Suitable energy detectors for heat detection include infrared imagers. Suitable energy detectors for sound detection include ultrasonic transducers.

[0080] Dimensional measurement devices may use machine vision, 3D optical scanning, photogrammetry, and / or structured light imaging. Depending on the configuration, dimensional measurement devices may generate 2D (two-dimensional) and / or 3D geometric measurements of a part. Machine vision is a technique that uses electronic imaging and algorithms to extract geometric information from an image of a part. 3D optical scanning is a technique that uses the reflection of light, often from a laser, to calculate the geometry of a part's surface. Photogrammetry is a technique that determines the geometry of a part through the analysis of electronic images, usually multiple images from different angles. Structured light imaging is a technique that projects a pattern of light onto a part and calculates a surface profile from the detected distortion of the pattern reflected by the part's surface.

[0081] If the dimensional measurement device includes and uses an energy emitter, the energy emitter applies energy to the part. Typically, for non-contact measurements, the energy is in the form of radiation, such as light, heat, and / or sound. Regardless of the form of energy, the energy emitter typically does not apply enough energy to damage or otherwise interfere with the part. Energy emitters suitable for emitting light include lamps, wide-field illuminators, structured illuminators, lasers, laser scanners, flash lamps, and modulated illuminators. Additionally, the dimensional measurement device may be configured to use ambient light as a supplement to or alternative to the optical energy emitter. Thus, the energy detector may be configured to detect ambient light reflected and / or transmitted by the part. Energy emitters suitable for emitting heat include heaters. Energy emitters suitable for emitting sound include ultrasonic transducers.

[0082] In one or more embodiments, helper software (e.g., Polyworks) can be used in addition to a 3D scan (e.g., a laser scan) to measure the physical geometric properties of an object. Aspects of the invention include obtaining a 3D laser scan and then comparing it to a CAD standard and / or gold standard laser scan.

[0083] In one or more embodiments, 3D scanning equipment can be used for large structures, such as the inspection of cell phone towers and military antennas. 3D scan data can be used for the twice-yearly inspections required to ensure the alignment of the tower and attached antenna provides optimal visibility / reception. For example, scans can be performed by automated drones scanning with lidar, laser, computed tomography (CT), photogrammetry, etc., to obtain 3D models. Once the 3D scan data is obtained, the innovation can compare relevant aspects of the scanned object with a previously determined gold standard, such as a specified CAD drawing or a pre-scanned object, for relevant parameters such as height, centerline, angle, etc. The user can input tolerances as defaults or set them as numbers, percentages, etc.

[0084] In one or more embodiments, a method for modeling a cell site with an unmanned aerial vehicle (UAV) is provided, the method comprising: flying the UAV on a given flight path around a cell tower at the cell site; acquiring multiple scans of the cell site around the flight plane; and acquiring and processing the multiple scans to define a three-dimensional (3D) model of the cell site based on one or more location identifiers and / or one or more objects of interest.

[0085] In one or more embodiments, an unmanned aerial vehicle (UAV) includes one or more rotors disposed on a body, one or more scanning devices associated with the body, a wireless interface, a processor coupled to the wireless interface and the one or more scanning devices, and memory storing instructions that, when executed, cause the processor to process commands to fly the UAV on a given flight path around a cell tower at a cell site, and provide multiple scans to a processing system that defines a three-dimensional (3D) model of the cell site based on one or more location identifiers in the multiple photographs and associated with one or more objects of interest.

[0086] In one or more embodiments, a method performed at a cell site by an unmanned aerial vehicle (UAV) communicatively coupled to a controller to perform a cell site audit using 3D scanning without requiring tower climbing at the cell site includes using the controller to fly the UAV substantially vertically to a cell site component, collecting data associated with the cell site component by scanning the cell site component using the UAV, transmitting and / or storing the collected data, and processing the collected data to obtain information for the cell site audit.

[0087] In one or more embodiments, the present disclosure relates to three-dimensional (3D) modeling of cell sites and cell towers using unmanned aerial vehicles. The present disclosure includes UAV-based systems and methods for 3D modeling and representation of cell sites and cell towers. The systems and methods include acquiring various 3D scans via UAVs at the cell site, flying around the cell site to acquire various scans at different angles and in various locations (i.e., enough scans to produce an acceptable 3D model), and processing the various footage to develop a 3D model of the cell site and cell tower. Additionally, once the 3D model is constructed, various measurements can be made of the 3D model, including height, angle, thickness, elevation, and even radio frequency (RF).

[0088] In one or more embodiments, the present disclosure provides a cell site audit that is used to determine the downtilt angles of individual antennas of components of a cell site. The downtilt angles are the mechanical (external) downtilt angles of the antennas. In the cell site audit, the downtilt angles are compared to expected values.

[0089] In one or more embodiments, the present disclosure provides a method for verifying an antenna azimuth angle, for example, for verifying that the antenna azimuth angle is pointed within a defined angle. Azimuth angle (AZ) is the compass direction of a point on the horizon directly below an observed object relative to true north (geographic north).

[0090] The 3D scanning sensor enables the system to capture the three-dimensional geometry and position of an object. The 3D scanning sensor may capture the 3D position and geometric topology using any of the following various techniques, or a combination thereof: These 3D scanning techniques may be, but are not limited to, visible and invisible structured light, photogrammetry, laser dynamic range imager, light detection and ranging (lidar), laser triangulation, stereoscopic and photometric data, light polarization, or the like, or may utilize some combination of the aforementioned techniques to create textured or textureless 3D scans. These 3D scanners may use visible or invisible light (e.g., infrared) to illuminate and capture an object or person. In addition, the sensor assembly may use a camera and lighting system that emits and senses a specific range of ultraviolet light. This may enable the capture and detection of age spots. The sensor assembly may also include a light-emitting device that allows for illumination of the object.

[0091] Yet another embodiment includes a computer-readable medium including processor-executable instructions configured to implement one or more embodiments of the techniques presented herein. One embodiment of a computer-readable medium or device contemplated in these ways is illustrated in FIG. 8, where implementation 800 includes a computer-readable medium 808, such as a CD-R, DVD-R, flash drive, hard disk drive platter, or the like, having computer-readable data 806 encoded thereon. This computer-readable data 806, such as binary data including a plurality of 0s and 1s as shown in 806, includes a set of computer instructions 804 configured to operate according to one or more principles described herein. In one such embodiment 800, the processor-executable computer instructions 804 may be configured to perform a method 802, such as methods 600, 700 of FIGS. 6-7. In another embodiment, the processor-executable instructions 804 may be configured to implement a system, such as apparatus 100 of FIG. 1. Many such computer-readable media configured to operate according to the techniques presented herein may be devised by one of ordinary skill in the art.

[0092] In one or more embodiments, FIG. 9 illustrates an outdoor scenario 900 in which 3D scanning equipment, such as an aerial drone 902, can be used for the inspection of large structures, such as cell towers 904 and broadcast towers 906. The 3D scan data can be used for twice-yearly inspections required to ensure the alignment of towers 904, 906 and attached antennas 908 provides the best view / reception. The aerial drone 902 can have one or more scanning devices 910, such as Lidar, laser, computed tomography (CT), or photogrammetry, used to acquire the 3D model. The aerial drone 902 can geospatially orient new 3D scan data to previous 3D scans 912, 914, respectively. In one or more embodiments, the aerial drone 902 acquires additional orientation information, such as via a Global Positioning System (GPS) satellite array 916.

[0093] Conditions for Congruence of Triangles For clarity, one or more disclosed embodiments refer to selecting a base triangle, finding three adjacent triangles that share three sides of the base triangle, calculating the total perimeter of the perimeters of the three adjacent triangles, and then comparing them. In accordance with aspects of the present disclosure, other basic geometric principles in the conditions for triangle congruence, namely: (i) Side-Side-Side (SSS) (ii) Side-Angle-Side (SAS) (iii) Angle-Side-Angle (ASA) (iv) Angle-Angle-Side (AAS) and (v) Another one of the right-angle-hypotenuse-side (RHS) may also be used. b) Instead of the SSS of one or more adjacent triangles, one or more combinations of conditions for triangle congruence may be used with respect to one or more reference triangles. The measurement may be extended to adjacent triangles.

[0094] Triangle hashing scheme: Given a triangular mesh, each triangle is assigned a hash value. The hash is a numerical value that describes some local geometric properties of the mesh in the triangle's vicinity. In general, a hashing scheme should satisfy the following requirements: (i) Local Geometry Encoding: The hash is a function of geometric measurements of patches of the mesh surrounding the triangle that are within a small, fixed topological or geometric distance from the triangle. (ii) Isometric independence: The hash does not depend on the triangle's position or orientation in space, but only on its shape and the relative positions of nearby triangles and their vertices. (iii) Reversible hashing: The recorded geometric measurements form a one-to-one correspondence with the hash, so that the geometric measurements can be recovered from the hash value alone.

[0095] Facet Adjacency Edge Hashing: In one or more embodiments, the present disclosure includes using one or more types of facet adjacency edge hashing, for example, Key4, KeyE / Key10, KeyV, and KeyC. Figure 10 illustrates KeyC facet adjacency edge hashing. KeyC is provided by the function Round(Sum(Perimeter + [Adjacent Perimeter]), 2). KeyC is the sum of the edge lengths of a triangle and its neighbors.

[0096] An example of a method for performing KeyC is provided below. A method for comparing two or more three-dimensional (3D) object models includes: i) receiving polygonal (e.g., triangular) mesh data describing two or more three-dimensional (3D) object models; ii) assigning one of two or more three-dimensional (3D) object models as a reference object; and iii) evaluating at least one 3D triangle as a reference polygon from each of the received polygonal (e.g., triangular) mesh data of the two or more three-dimensional (3D) object models, where for each reference triangle, (i) identifying one or more neighboring triangles (or other polygons) that share one side with the reference triangle, (ii) calculating a total perimeter value of the perimeter lengths of the one or more neighboring triangles (or other polygons), and (iii) assigning the total perimeter value to the reference triangle (or polygon); iv) comparing the total perimeter value assigned to the one or more 3D object models with the total perimeter value assigned to the reference object; and v) determining whether a match exists between the one or more three-dimensional (3D) object models and the reference object based on the match amount of the obtained total perimeter values.

[0097] Another example of a method for performing KeyC is provided below. A method for comparing two or more three-dimensional (3D) object models includes: i) receiving triangular mesh data describing two or more three-dimensional (3D) object models; ii) assigning one of two or more three-dimensional (3D) object models as a reference object; and iii) evaluating at least one three-dimensional (3D) triangle as a reference triangle from each of the received triangular mesh data of the two or more three-dimensional (3D) object models, where for each reference triangle, (i) identifying three adjacent triangles that share one side with the reference triangle, (ii) calculating a total perimeter value of the perimeter lengths of the three adjacent triangles, and (iii) assigning the total perimeter value to the reference triangle; iv) comparing the total perimeter value assigned to the one or more 3D object models with the total perimeter value assigned to the reference object; and v) determining whether a match exists between the one or more three-dimensional (3D) object models and the reference object based on the match amount of the obtained total perimeter values.

[0098] Figure 11 illustrates Key4 facet adjacent edge hashing. Key4 is provided by the function Tuple(KeyC, KeyC_a1, KeyC_a2, KeyC_a3), where the suffixes "a1", "a2", and "a3" refer to the adjacent triangles, respectively. Key4 is provided by combining the KeyC score of a triangle with the scores of its neighbors into a sorted set. Key4 has been found to be effective for search / comparison applications. An example of Key4 is provided by the following method: A method for comparing two or more three-dimensional (3D) objects is i) receiving triangular mesh data describing two or more three-dimensional (3D) objects; ii) evaluating at least one three-dimensional (3D) triangle as a reference triangle from each of the received triangular mesh data of the two or more 3D objects, wherein for each reference triangle: (a) Identifying two or more adjacent triangles that share a side with a reference triangle; (b) Calculate the total perimeter of the perimeters of two or more adjacent triangles; (c) assigning a total perimeter value to the reference triangle; and iii) comparing the total perimeter value assigned to the 3D object with the total perimeter value assigned to a reference three-dimensional (3D) object; iv) determining whether a match exists between two or more three-dimensional (3D) objects 3D based on the amount of match of the obtained total perimeter values.

[0099] Key4++ improves on Key4's facet adjacency edge hashing by expanding the dynamic range of numbers and making the precision configurable. Instead of storing the marginal sums, the method evaluates the exponent of the largest sum and the mantissa of each of the four sums. This produces a set of five integers for each triangle, which can be encoded into a single 64-bit integer. This integer can be compared to integers produced from other triangles to identify matching geometries. The precision of the method can be adapted by controlling the number of significant bits in the mantissa of the marginal sums. An example of a Key4++ function is a 64-bit integer (key_exponent, mantissa_uKeyC, mantissa_a1, mantissa_a2, mantissa_a3), where uKeyc, uKeyC_a1, uKeyC_a2, and uKeyC_a3 are as defined in Key4, but digit founding is not applied. Key_exponent is the 11-bit exponent of max(uKeyC, uKeyC_a1, uKeyC_a2, uKeyC_a3). mantissa_* is the 13-bit mantissa (significant digits) of uKeyc, uKeyC_a1, uKeyC_a2, uKeyC_a3, respectively.

[0100] Figure 12 shows KeyV2 facet adjacency edge hashing. KeyV2 is provided by the function Sum(perimeter + [edge adjacency perimeter] + [vertex adjacency perimeter]). One example of how to use KeyV2 is the method described above for Key4 with additional features. For each 3D triangle of the received triangular mesh data of the 3D object evaluated as a reference triangle, identify three adjacent triangles that share an edge with the reference triangle and other triangles that share a vertex with the reference triangle; (a) Calculate the total perimeter of the three adjacent triangles and the perimeters of other triangles that share a vertex; (b) assigning the total perimeter value to the reference triangle; (c) comparing the total perimeter value assigned to the 3D object with the total perimeter value assigned to the reference object; (d) determining whether a match exists between the 3D object and the reference object based on the match amount of the obtained total perimeter values;

[0101] Figure 13 shows KeyV facet adjacent edge hashing. KeyV is provided by the following function: KevV_a=Round(perimeter+[vertex_edge_lengths],2)Tuple(KeyVa, KeyVa1, KeyVa2, KeyVa3). For a single triangle sum, it is the sum of that edge and the edges starting from that vertex. This sum is concatenated over the triangle and its three neighbors.

[0102] Figure 14 shows KeyE or Key10 facet adjacent edge hashing. KeyE or Key10 is a facet adjacent edge hashing that extends the concept of KeyC to adjacent triangles of the following order: Tuple(KeyC, KeyC_a1, KeyC_a11, keyC_a12, KeyC_a2, KeyC_a21, KeyC_a22, KeyC_a3, KeyC_a31, KeyC_a32)).

[0103] Curvature Hashing: This disclosure extends the concept of extracting numerical properties from adjacent triangles. The Gaussian curvature of a surface is a mathematical measure of the rate of directional change along the surface. Our method approximates the Gaussian curvature of a surface at the triangle and multiplies it by the area to obtain the area-normalized Gaussian curvature. This value is used in combination with the perimeter of adjacent triangles to create a triangle signature (also known as a hash value). The Key4 method uses the perimeter of a triangle to determine a unique signature. Our method creates an additional signature that further captures information about the angular change of adjacent triangles, which is then used in similar applications.

[0104] The aforementioned techniques and methods describe how to extract local geometric markers from a triangle and its neighbors to uniquely encode the local shape of an object. According to a further aspect of the present disclosure, a method calculates a code (a single number or set of numbers) resulting from an analysis of a reference triangle and its neighbors in a 3D mesh, such that this code represents the numerical value of the local shape / geometry of the mesh.

[0105] Calculating added or removed geometric content (i.e., when comparing two 3D objects, one of which is a revision of the other): Using the sum of the reference triangles to determine the content removed or added in the revised version of the 3D object. One or more adjacent edge hashing techniques may be used. In one example, at a first time point, the method includes scanning the object to obtain first triangular mesh data. At a second time point, the method includes scanning the object to obtain second triangular mesh data. The method includes determining whether a match exists between the 3D object based on the second triangular mesh data and the reference object based on the first triangular mesh data based on the amount of match of the obtained sum perimeter values.

[0106] Mesh Transformation Calculation: Using the one-to-one mapping between triangles of the mesh object and the target mesh, the translation or rotation (i.e., "deviation") of all or part of the mesh can be calculated using the methods described herein. If two meshes have significantly similar triangles, the two meshes can be easily aligned in three-dimensional space with the benefit of this disclosure. Matching triangles are calculated between two meshes that match exactly once using one or more facet-adjacent edge hashing techniques described herein. The center points of the triangles are then extracted to create an exact correspondence between the locations of the matching triangles in the first and second meshes. A best-fit rigid affine transformation is calculated that aligns the matching triangles.

[0107] When two meshes have many significantly similar subparts, we find many alignments between the two meshes where similar mesh parts match. First, matching triangle hashes are calculated between the two meshes in a local patch. Then, a best-fit rigid linear transformation that aligns the matching triangles is calculated. An overlap check is performed and the transformations are ranked. Beyond percentage matching, aspects of the present disclosure include additionally calculating rigid affine transformations in three spaces that best align the matching subparts.

[0108] Mesh Distance Calculation: Using a one-to-one mapping between triangles in a mesh object and a target mesh, the methods described herein can be used to calculate the distance of surface elements between two triangular meshes that have identical triangles. In one or more embodiments, the Hausdorff distance is used to determine this deviation and can be used for objects described by triangular meshes.

[0109] 3D Search: The techniques described herein can be used to build a search index that allows for precise searching of similar or derivative shapes within a database.

[0110] FIG. 15 is a flow diagram presenting an example method 1500 for comparing two or more three-dimensional (3D) object models. In one or more embodiments, the method 1500 includes receiving triangular mesh data describing two or more 3D object models (block 1502). The method 1500 includes assigning one of the two or more 3D object models as a reference object (block 1504). The method 1500 includes evaluating at least one 3D triangle from each of the received triangular mesh data of the two or more 3D object models as a reference triangle (block 1506). For each reference triangle, the method 1500 includes (i) identifying two or more adjacent triangles using a condition for triangle congruence, and (ii) performing adjacent facet edge hashing to create an object hash value for each of the at least one 3D triangle (block 1508). The method 1500 includes comparing the object hash value to one or more reference hash values ​​respectively assigned to the one or more 3D object models (block 1510). The method 1500 includes determining whether a match exists between the one or more 3D object models and the reference object based on the amount of match of the obtained hash values ​​(block 1512). Thereafter, the method 1500 ends.

[0111] In one or more embodiments, the conditions for triangle congruence comprise one or more of: (i) Side-Side-Side (SSS), (ii) Side-Angle-Side (SAS), (iii) Angle-Side-Angle (ASA), (iv) Angle-Angle-Side (AAS), and (v) Right Angle-Hypotenuse-Side (RHS). In one or more embodiments, the adjacent facet edge hashing comprises a KeyC technique that sums the perimeters of a triangle's edge and the edges of its three neighboring triangles. In one or more specific embodiments, the adjacent facet edge hashing further includes performing a Key4 technique that combines the KeyC scores of the triangle and its three neighbors into a sorted set. In one or more specific embodiments, method 1500 includes performing a Key4++ technique to extend the dynamic range of numbers and enable configurable precision by evaluating the exponent and mantissa of the largest sum of each of the four sums produced by the Key4 technique to generate a set of five integers.

[0112] In one or more embodiments, method 1500 includes performing a KeyE / Key10 technique by extending KeyC to adjacent triangles in the following order: In one or more embodiments, the adjacent facet edge hashing comprises a KeyV2 technique that comprises summing a triangle's perimeter, edge adjacent perimeter, and vertex adjacent perimeter. In one or more embodiments, the adjacent facet edge hashing comprises a KeyV technique that sums a triangle's perimeter and the edges of its vertex adjacent triangles. In one or more embodiments, method 1500 further includes performing a Gaussian curvature adjustment on the 3D triangular mesh data. In one or more embodiments, method 1500 includes searching two or more databases of 3D triangular mesh data to find a match based on the pattern of the hash values. Method 1500 then ends.

[0113] FIG. 16 is a flow diagram illustrating a method 1600 for identifying deviations in an object. In one or more embodiments, the method includes receiving first triangular mesh data describing an object at a first time point (block 1602). The method 1600 includes evaluating at least one 3D triangle from the received triangular mesh data by (i) identifying two or more adjacent triangles using a condition for triangle congruence and (ii) performing adjacent facet edge hashing to produce an object hash value for each of the at least one 3D triangle (block 1604). The method 1600 also includes creating a first 3D reference model comprising the object hash value for each of the at least one triangle of the first triangular mesh data (block 1606). The method 1600 also includes receiving second triangular mesh data describing one of a similar object or an object at a second time point subsequent to the first time point (block 1608). The method 1600 includes evaluating at least one 3D triangle from each received second triangular mesh data by identifying two or more adjacent triangles for each reference triangle using a condition for triangle congruence (block 1610). The method 1600 includes performing adjacent facet edge hashing to create an object hash value for each of the at least one 3D triangle (block 1612). The method 1600 includes creating a second 3D reference model comprising the object hash value of each of the at least one triangle (block 1614). The method 1600 includes comparing the first and second 3D object models (block 1616). The method 1600 then ends.

[0114] In one or more embodiments, the method 1600 includes determining at least one of a sub-object to be added or removed based on a comparison of the first and second 3D object models. In one or more embodiments, the method 1600 includes determining at least one of one or more translated and rotated sub-objects based on a comparison of the first and second 3D object models. In one or more embodiments, the method 1600 includes extracting a center point for at least one 3D triangle and performing a best-fit rigid affine transformation to align the first and second 3D object models. In one or more embodiments, the method 1600 includes determining a Hausdorff distance to determine a deviation between features of the first and second 3D object models.

[0115] At least some of the devices and / or processes described herein can be integrated into a data processing system with a reasonable amount of experimentation. Those skilled in the art will recognize that a typical data processing system generally includes one or more of a system unit housing, a video display device, memory, a processor, an operating system, drivers, a graphical user interface, application programs, interaction devices such as a touchpad or screen, and / or a control system including feedback loops and control motors. A typical data processing system can be implemented using suitable commercially available components.

[0116] Thus, the presently described system may comprise a number of various hardware and / or software components, as described below. It will be understood that, for ease of explanation, the various described hardware and software components have been described and named in terms of various functions that may be performed by one or more software or hardware components in the system. However, it will be understood that the system may incorporate any number of programs configured to perform any number of functions, including, but not limited to, those described below. Furthermore, while, for ease of explanation, multiple programs and multiple databases are described, it should be understood that in reality, the various functions and / or databases may be part of a single program or multiple programs executing in one or more locations.

[0117] Where a database is described, those skilled in the art will understand that (i) alternative database structures may be readily used, and (ii) other memory structures other than a database may be readily used. The diagrams or descriptions of sample databases presented herein are exemplary arrangements for representing stored information. For example, any number of other arrangements may be used beyond those suggested by tables depicted in the drawings or elsewhere. Similarly, the illustrated entries in the database represent exemplary information only, and those skilled in the art will understand that the number and content of entries may differ from those described herein. Furthermore, while the database is described as a table, other formats (including relational databases, object-based models, and / or distributed databases) are well known and can be used to store and manipulate the data types described herein. Similarly, object methods or operations of a database may be used to implement various processes as described herein. Additionally, the database may be stored locally or remotely from any device that accesses data in the database in a known manner.

[0118] Although process steps, algorithms, and the like may be described in sequential order, such processes may be configured to operate in different orders. In other words, a sequence or order of steps that may be explicitly described does not indicate that the steps necessarily have to be performed in that order. Conversely, steps of processes described herein may be performed in any order that is practical. Furthermore, some steps may be performed simultaneously, even though they may be described or suggested as being performed non-concurrently (e.g., because one step is described after another step). Furthermore, illustration of a process by showing in drawings does not imply that the illustrated process excludes other variations or modifications, that the illustrated process or any of its steps are required by the invention, or that the illustrated process is preferred. Although a process may be described as including multiple steps, this does not imply that all or any steps are essential or required. Various other embodiments within the scope of the described invention(s) include other processes that omit some or all of the described steps. No step is essential or required unless expressly specified otherwise.

[0119] Exemplary systems within a computing environment for implementing the invention include general-purpose computing devices in the form of computing systems commercially available from Intel, IBM, AMD, Motorola, Cyrix, and others. Components of a computing system may include, but are not limited to, a processing unit, a system memory, and a system bus that couples various system components including the system memory to the processing unit. The system bus may be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. Computing systems typically include a variety of computer-readable media. Computer-readable media are any available media that can be accessed by a computing system and include both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data.

[0120] Computer memory includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other media that can be used to store desired information and that can be accessed by a computing system. System memory includes computer storage media in the form of volatile and / or nonvolatile memory, such as read-only memory (ROM) and random access memory (RAM). A basic input / output system (BIOS) contains basic routines that help transfer information between elements within a computing system, such as during start-up, and is typically stored in ROM. RAM typically contains data and / or program modules that are immediately accessible to and / or currently being operated on by a processing unit. Examples include, but are not limited to, an operating system, application programs, other program modules, and program data.

[0121] The computing system may also include other removable / non-removable, volatile / non-volatile computer storage media. By way of example only, hard disk drives that read from or write to non-removable, non-volatile magnetic media, magnetic disk drives that read from or write to removable, non-volatile magnetic disks, and optical disk drives that read from or write to removable, non-volatile optical disks such as CD-ROMs or other optical media may be used to store the invention of the present embodiment. Other removable / non-removable, volatile / non-volatile computer storage media that may be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid-state RAM, solid-state ROM, etc. Hard disk drives are typically connected to the system bus via non-removable memory interfaces, while magnetic disk drives and optical disk drives are typically connected to the system bus via removable memory interfaces.

[0122] The drives and their associated computer storage media provide storage of computer-readable instructions, data structures, program modules, and other data for the computing system. For example, a hard disk drive is illustrated as storing an operating system, application programs, other program modules, and program data. Note that these components can be the same as or different from the operating system, application programs, other program modules, and program data. The operating system, application programs, other program modules, and program data are given different numbers to indicate that, at a minimum, they are different copies.

[0123] A user may enter commands and information into a computing system through input devices such as a tablet, electronic digitizer, microphone, keyboard, and pointing device commonly referred to as a mouse, trackball, or touchpad. These and other input devices are often connected to the processing unit through a user input interface coupled to the system bus, but may also be connected by other interface and bus structures, such as a parallel port, game port, or universal serial bus (USB). A monitor or other type of display device is also connected to the system bus through an interface such as a video interface. A monitor may also be integrated with a touchscreen panel or the like. It should be noted that the monitor and / or touchscreen panel may be physically coupled to a housing in which the computing system is incorporated, e.g., a tablet-type personal computer. In addition, a computer such as a computing system may include other peripheral output devices, such as speakers and printers, which may be connected through an output peripheral interface or the like.

[0124] The computing system may operate in a networked environment using logical connections to one or more remote computers, such as a remote computing system. The remote computing system may be a personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computing system, although only a memory storage device is illustrated. The logical connections shown include a local area network (LAN) connected through a network interface and a wide area network (WAN) connected through a modem, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.

[0125] For example, in this embodiment, the computer system may comprise a source machine from which data is migrated, and the remote computing system may comprise a destination machine. However, the source and destination machines need not be connected by a network or other means; instead, data may be migrated via any medium capable of being written by the source platform and read by the destination platform.

[0126] A central processor operating pursuant to operating system software, such as IBM OS / 2, Linux, UNIX, Microsoft Windows, Apple Mac OSX, and other commercially available operating systems, provides the functionality for the services provided by the present invention. The operating system may reside in a central location or in a distributed location (i.e., mirrored or standalone). Software programs or modules direct the operating system to perform tasks such as facilitating client requests, system maintenance, security, data storage, data backup, data mining, document / report generation, and algorithms. The functionality provided may be embedded directly in hardware, embedded in software modules executed by a processor, or a combination of the two. Furthermore, software operations may be executed, in part or in whole, by one or more server or client systems via hardware, software modules, or a combination of the two. Software modules (programs or executables) may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, removable disk, CD-ROM, DVD, optical disk, or other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. Alternatively, the storage medium may be integral to the processor. Alternatively, the processor and the storage medium may reside in an ASIC. The bus may be an optical or conventional bus operating according to various protocols known in the art.

[0127] All publications, patents, and patent applications cited herein, whether supra or infra, are incorporated herein by reference in their entirety to the same extent as if each individual publication, patent, or patent application was specifically and individually indicated as incorporated by reference. It should be understood that any patent, publication, or other disclosure material identified as being incorporated herein by reference, in whole or in part, is incorporated herein only to the extent that the incorporated material does not contradict existing definitions, descriptions, or other disclosure material set forth in the present disclosure. Thus, to the extent necessary, the disclosure explicitly set forth herein supersedes any conflicting material incorporated herein by reference. Any material, or portion thereof, identified as being incorporated herein by reference that contradicts existing definitions, descriptions, or other disclosure material set forth herein is incorporated only to the extent that no contradiction arises between the incorporated material and the existing disclosure material.

[0128] As used in this specification and the appended claims, the singular forms "a," "an," and "the" include plural referents unless the content clearly dictates otherwise. Thus, for example, reference to a "coloring agent" includes two or more such agents.

[0129] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Although a number of methods and materials similar or equivalent to those described herein can be used in the practice of the present invention, the preferred materials and methods are described herein.

[0130] As will be appreciated by those skilled in the art, the methods and compositions of the present invention significantly reduce or eliminate the disadvantages and shortcomings associated with the methods and compositions of the prior art.

[0131] It should be noted that, as used in this disclosure, "comprises," "comprising," and other derivatives of the root word "comprise" are intended to be open-ended terms specifying the presence of stated features, elements, integers, steps, or components, and are not intended to exclude the presence or addition of one or more other features, elements, integers, steps, components, or groups thereof.

[0132] Where necessary, detailed embodiments of the present invention are disclosed herein, but it should be understood that the disclosed embodiments are merely exemplary of the invention, which may be embodied in various forms. Therefore, the specific structural and functional details disclosed herein should not be construed as limiting, but merely as a basis for the claims and as a representative basis for teaching those skilled in the art to variously use the present invention in substantially appropriate structural details.

[0133] While it is clear that the exemplary embodiments of the invention disclosed herein will accomplish the objectives set forth above, it will be understood that numerous modifications and other embodiments may be devised by those skilled in the art, and it will therefore be understood that the appended claims are intended to cover all such modifications and embodiments which fall within the spirit and scope of the invention.

Claims

1. 1. A method for comparing two or more three-dimensional (3D) object models, the method comprising: i) receiving triangular mesh data describing two or more 3D object models; ii) assigning one of the two or more 3D object models as a reference object; and iii) evaluating at least one 3D triangle from each received triangular mesh data of the two or more 3D object models as a reference triangle, where for each reference triangle, (i) identify one or more adjacent triangles using a condition for triangle congruence, and (ii) perform adjacent facet edge hashing to produce an object hash value for each of the at least one 3D triangle; iv) comparing the object hash value with one or more reference hash values ​​respectively assigned to one or more 3D object models; v) determining whether a match exists between one or more 3D object models and the reference object based on the amount of match of the obtained hash values.

2. 2. The method of claim 1, wherein the conditions for congruence of the triangles comprise one or more of: (i) side-side-side (SSS), (ii) side-angle-side (SAS), (iii) angle-side-angle (ASA), (iv) angle-angle-side (AAS), and (v) right-angle-hypotenuse-side (RHS).

3. The method of claim 1 , wherein the adjacent facet edge hashing comprises a KeyC technique comprising summing the perimeter of edges of a triangle and three adjacent triangles.

4. The method of claim 3 , wherein the adjacent facet edge hashing further comprises performing a Key 4 technique that combines Key C scores of the triangle and its three neighbors into a sorted set.

5. 5. The method of claim 4, further comprising performing a Key4++ technique for extending the dynamic range of numbers and providing configurable precision by evaluating the exponent and mantissa of the largest sum of each of four sums produced by the Key4 technique to produce a set of five integers.

6. The method of claim 3 , further comprising performing a Key E / Key 10 technique by extending the Key C to adjacent triangles in the following order:

7. The method of claim 1 , wherein the adjacent facet edge hashing comprises a KeyV2 technique comprising summing a perimeter, an edge adjacent perimeter, and a vertex adjacent perimeter of the triangle.

8. The method of claim 1 , wherein the adjacent facet edge hashing comprises a KeyV technique comprising summing the perimeter of the triangle and the edges of vertex-adjacent triangles.

9. The method of claim 1 , further comprising performing a Gaussian curvature adjustment on the 3D triangular mesh data.

10. 10. The method of claim 1, further comprising: vi) searching two or more databases of 3D triangular mesh data to find a match based on a pattern of the hash value.

11. 1. A method for identifying deviations in an object, comprising: i) receiving first triangular mesh data describing an object at a first point in time; ii) evaluating at least one 3D triangle from the received triangular mesh data by (i) identifying one or more adjacent triangles using a condition for triangle congruence, and (ii) performing adjacent facet edge hashing to produce an object hash value for each of the at least one 3D triangle; iii) creating a first 3D reference model for the at least one triangle of the first triangular mesh data, the first 3D reference model comprising a respective object hash value; iv) receiving second triangular mesh data describing one of a similar object or an object at a second time point subsequent to the first time point; v) for each reference triangle, evaluating at least one 3D triangle from each received second triangular mesh data, (a) identifying one or more adjacent triangles using conditions for triangle congruence; (b) performing adjacent facet edge hashing to produce an object hash value for each of the at least one 3D triangle; (c) creating and evaluating a second 3D reference model comprising a respective object hash value for the at least one triangle; vi) comparing the first 3D object model with the second 3D object model.

12. The method of claim 11 , further comprising determining at least one of a sub-object to be added or removed based on comparing the first 3D object model and the second 3D object model.

13. The method of claim 11 , further comprising determining at least one of one or more translational and rotational sub-objects based on comparing the first 3D object model and the second 3D object model.

14. vii) extracting a center point for each at least one 3D triangle; The method of claim 11 , further comprising: viii) performing a best fit rigid affine transformation to align the first 3D object model and the second 3D object model.

15. The method of claim 11 , further comprising determining a Hausdorff distance to determine deviation between features of the first and second 3D object models.