Systems and methods for evaluating 3D models using triangular mesh hashing
By using reference polygons and triangle congruence conditions in the 3D object model, combined with face edge hashing technology, the problem of comparing and retrieving similar 3D object models is solved, and efficient matching and analysis of shapes and structures is achieved.
Patent Information
- Application Number
- CN202380061796.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-08-22
- Filing Date
- 2023-08-22
- Publication Date
- 2025-04-04
AI Technical Summary
It is difficult to effectively compare and retrieve similar three-dimensional (3D) object models, especially when dealing with complex three-dimensional shapes and data.
By evaluating at least one reference polygon from the received polygon mesh data, identifying adjacent polygons using the conditions of triangle congruence, and performing neighbor face edge hashing, an object hash value is generated. Then, the object hash value is compared with the reference hash value, and whether there is a match between the 3D object model and the reference object is determined based on the match amount.
Effective comparison and matching of two or more 3D object models is achieved, the shape and structural similarity of objects can be identified, and suitable for detecting deviations or changes in sub-parts over time.
Smart Images

Figure CN119768839A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to U.S. application No. 17 / 821,439, filed on August 22, 2022, entitled “SYSTEM AND METHODS FOR 3D MODELEVALUATION,” the contents of which are incorporated herein by reference in their entirety for any purpose. Technical Field
[0003] The technical field disclosed herein 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, a method or a program, which has the ability to search for an object similar to a predetermined shape from an input three-dimensional shape model (computer-aided design (CAD) model or mesh model) and can change the search range in size and / or proportion. Background Art
[0004] Generally, the present disclosure relates to computer-aided design, drafting, manufacturing, and visualization systems (individually and collectively, "CAD systems"). CAD systems typically use a database of two-dimensional (2D) and three-dimensional (3D) geometric models.
[0005] In recent years, object data representing 3D objects, not only conventional CAD data but also 3D object data about commodities, has been widely used. In addition, the practice of digitizing objects into 3D object data to build digital archives has become popular. The amount of these types of data has been steadily increasing, and therefore, the demand for efficient data management and efficient retrieval of data requested by users has been growing. In order to meet these demands, various technologies have been proposed. Regarding the technology of retrieving similar objects, many retrieval methods have been proposed, which calculate the features of multimedia objects in feature values represented by digital values and use multidimensional vectors composed of feature values.
[0006] In addition, various products have been designed using CAD today. A system has been proposed that registers 3D table data and the constituent parts of a product into a database and retrieves similar products and parts. For example, in US2002 / 0004710A1, the disclosure of which is incorporated herein in its entirety, a system is proposed that retrieves objects that partially overlap with a 3D table model composed of polygons. In this system, a table analysis tree is constructed with adjacent nodes as parent nodes and nodes based on polygons, and the consistency of the nodes in the table analysis tree is evaluated to determine the similarity of the 3D table. By this method, for example, a mechanical part made by CAD can be used as a search keyword for searching, and then an object containing a part can be obtained, which is obtained as a sub-element by additional processing of the part. In view of the system disclosed in the prior art, it is believed that the present invention now provides a novel system and method for comparing two or more 3D object models. Summary of the invention
[0007] The present disclosure provides matching of a 3D object with a reference polygon, wherein the matching is performed in a degree of matching from no matching to complete matching. For the sake of clarity, the matching method based on the total perimeter value is only one technique based on the condition of triangle congruence, as described below.
[0008] 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 polygonal mesh data. For each reference polygon (triangle), the method includes using the condition of triangle congruence to identify adjacent polygons (triangles) and performing neighbor facet edge hashing to generate an object hash value for each polygon of at least one polygon (triangle). The method includes comparing the object hash value with one or more reference hash values assigned to one or more 3D object models, respectively. The method includes determining whether there is a match between one or more 3D object models and a reference object based on the amount of matching of the hash values obtained. In one or more embodiments, the method compares 3D polygon (triangle) data of an object, such as comparing data from a previous scan of the same object, to determine a decrease or increase in deviation or sub-portion over time.
[0009] As a method for calculating the goodness of fit between a reference polygon and an object polygon pattern, a method for calculating the goodness of fit based on, for example, the degree of matching between polygon patterns can be considered. When the polygon is a triangle, the degree of matching between polygon patterns can be calculated based on the degree of matching between the shapes of the two triangles and the degree of matching between the positions of the two triangles, etc. The degree of matching between the triangle shapes can be calculated based on the degree of matching of the conditions for triangle congruence, and the conditions for triangle congruence include: "three pairs of sides of the triangle are equal in length", "two pairs of sides of the triangle are equal in length and the angles formed by the two pairs of sides are equal", "a pair of sides of the triangle are equal in length and the two pairs of angles at both ends of the side are equal".
[0010] In one aspect, the present disclosure provides a novel system and method for comparing two or more three-dimensional (3D) object models. In one embodiment, the present invention provides a method, comprising: (i) receiving polygonal mesh data describing a 3D object; (ii) obtaining perimeter values (or side lengths and angle values) of a reference polygon; (iii) comparing the obtained values with stored values of the reference object; and (iv) determining whether there is a match between the 3D object and the stored reference object based on the amount of match between the obtained values and the stored values.
[0011] In another aspect, the present disclosure provides a novel system and method for comparing two or more three-dimensional (3D) object models. In one embodiment, the present invention provides a method comprising:
[0012] On the other hand, the present invention provides a method comprising: (i) receiving triangular mesh data describing a 3D object; (ii) obtaining a dimensional layer of the 3D object from a slicing program in each of one or more separate directions; (iii) obtaining a scalar value from the 2D data of each layer in each direction; (iv) comparing the obtained perimeter value with a stored perimeter value of a reference object; and (v) determining whether there is a match between the 3D object and the reference object based on the amount of match between the obtained scalar value and the stored scalar value.
[0013] In another aspect, the present invention provides a method comprising: receiving triangular mesh data describing a three-dimensional (3D) object. The method comprises, for each 3D triangle in the received triangular mesh data of the 3D object as a reference triangle, performing the following: (i) identifying one or more adjacent triangles that share a common edge with the reference triangle; (ii) calculating a scalar value based on the numerical geometric description of the adjacent triangles; and (iii) assigning the scalar value to the reference triangle. The method comprises comparing a total scalar value assigned to the 3D object with a total scalar value assigned to the reference object; and 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.
[0014] On the other hand, the present disclosure provides a method, including: receiving triangular mesh data describing a three-dimensional (3D) object. The method includes, for each 3D triangle in the triangular mesh data of the 3D object received as a reference triangle: (i) identifying one or more adjacent triangles that share a common side with the reference triangle; (ii) calculating a value of the perimeter of the adjacent triangles (a total perimeter or an equivalent identification value based on a condition of triangle congruence); and (iii) assigning the calculated value to the reference triangle. The method includes comparing the calculated value assigned to the 3D object with the calculated value assigned to the reference object; and determining whether there is a match between the 3D object and the reference object based on the amount of match between the obtained calculated value and the stored calculated value. The calculated values between the 3D object and the reference object do not have to correspond 1:1 because the two can be scaled (size normalized) and because 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.
[0015] In another aspect, the present disclosure provides a method, comprising: receiving triangular mesh data describing a three-dimensional (3D) object. For each 3D triangle in the received triangular mesh data of the 3D object as a reference triangle, the method comprises performing the following items: (i) identifying three adjacent triangles that share a common edge with the reference triangle; (ii) calculating a total perimeter value of the perimeter lengths of the three adjacent triangles; (iii) assigning a total perimeter value to the reference triangle. The method comprises comparing the total perimeter value assigned to the 3D object with the total perimeter value assigned to the reference object; and determining whether there is a match between the 3D object and the reference object based on the amount of match between the obtained and stored total perimeter values.
[0016] These and other features are more fully described in the embodiments shown below. It should be understood that, in general, features of one embodiment can also be used in combination with features of another embodiment, and these embodiments are not intended to limit the scope of the invention. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] Various exemplary embodiments of the present invention are described in the following detailed description in conjunction with the accompanying drawings, which will become more apparent as the description proceeds, in which:
[0018] Figure 1 is a block diagram of an apparatus for matching a three-dimensional (3D) object with a reference object according to one or more embodiments;
[0019] Figure 2 is a flow chart of a method of matching a 3D object with a reference object according to one or more embodiments;
[0020] Figure 3A-3Cis an isometric orthographic view of an exemplary 3D object having a keyhole according to one or more embodiments;
[0021] Figure 4 is a diagram of a reference triangle surrounded by three adjacent triangles according to one or more embodiments;
[0022] Figure 5 is a graph of a reference triangle surrounded by three adjacent triangles and other triangles that share vertices according to one or more embodiments;
[0023] Figure 6 A flow chart illustrating an exemplary method for fast matching using slice perimeter measurement according to one or more embodiments is shown;
[0024] Figure 7 A flowchart illustrating an example method of strictly matching each reference triangle of a 3D triangle mesh to a perimeter sum of adjacent triangles according to one or more embodiments;
[0025] Figure 8 A block diagram showing an exemplary computer-readable medium or computer-readable device including processor-executable instructions configured to embody one or more provisions set forth herein according to one or more embodiments;
[0026] Fig. 9 A scene showing an aerial drone 3D scanning a communication tower as part of a routine inspection in accordance with one or more embodiments
[0027] Fig.10 KeyC face neighbor edge hashing is shown according to one or more embodiments;
[0029] Fig.11 Key4 face neighbor edge hashing is shown according to one or more embodiments;
[0030] Fig.12 KeyV2 face neighbor edge hashing is shown according to one or more embodiments;
[0031] Fig.13 KeyV face neighbor edge hashing is shown according to one or more embodiments;
[0032] Fig.14 KeyE or Key10 face neighbor edge hashing is shown according to one or more embodiments;
[0033] Fig.15 A flowchart presenting an example method for comparing two or more three-dimensional (3D) object models is shown in accordance with one or more embodiments; and
[0034] Fig.16A flow chart presenting an example method for identifying deviations in an object is shown in accordance with one or more embodiments. DETAILED DESCRIPTION
[0035] The present invention can be modified in various ways and can be implemented to have multiple embodiments. Specific embodiments are shown in the drawings and described in detail. However, it should be understood that the present invention is not limited to specific embodiments, and the present invention includes all modifications, equivalents and substitutes that fall within the spirit and technical scope of the present invention.
[0036] Terms such as first and second can be used to describe various elements, but these elements should not be limited by these terms. These terms are only used to distinguish one element from another element. For example, without departing from the scope of the present invention, the first element can be named as the second element. Similarly, the second element can be named as the first element. The term "and / or" includes a combination of multiple related and shown items, or any one of multiple related and described items.
[0037] When it is said that an element is "connected" or "coupled" to another element, it should be understood that an element can be directly connected or coupled to another element, but a third element can exist between the two elements. Conversely, when it is described that an element is "directly connected" or "directly coupled" to another element, it should be understood that there is no third element between the two elements.
[0038] The terms used in this application are only used to describe specific embodiments and are not intended to limit the present invention. Unless otherwise clearly defined in the context, singular expressions include plural expressions. In this application, terms such as "including" or "having" are intended to specify the features, numbers, steps, operations, elements or parts described in the specification, or the existence of a combination thereof, and should not be understood as precluding the existence or possible addition of one or more other features, numbers, steps, operations, elements, parts or a combination thereof.
[0039] Unless otherwise defined, all terms used herein have the same meaning as those generally understood by those of ordinary skill in the art. Terms, such as those defined in common dictionaries, should be interpreted as having the same meaning as those in the context of the relevant technology and should not be interpreted as idealized or overly formal meanings unless a definition is clearly given in the specification.
[0040] Hereinafter, preferred embodiments of the present invention are described in more detail with reference to the accompanying drawings. In describing the present invention, in order to facilitate overall understanding, the same reference numerals are used to represent the same elements in all drawings, and repeated description of the same elements is omitted.
[0041] According to aspects of the present disclosure, a method for comparing two or more three-dimensional (3D) object models is provided. The 3D model may include a polygonal mesh. In some embodiments, the polygonal mesh is a triangular mesh and the reference polygon is a reference triangle.
[0042] 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., obtained from a slicing program). In one or more embodiments, a scalar value calculated from the data of each layer in each direction is obtained and compared with a stored scalar value of a reference object to determine the degree of match. In one or more embodiments, the measurement data is facilitated by processing software. In another embodiment, smaller objects within the 3D object are also analyzed. In another embodiment, in order to implement a more robust method, each triangle in the triangular mesh data is analyzed by assigning a value by numerically combining scalar values calculated from surrounding triangles. In another embodiment, matching is performed with a reference object based on the assigned combined scalar value. In one or more embodiments, the 3D object can be scaled in one, two, or three orthogonal dimensions to match the reference object.
[0043] In one or more embodiments, the method includes receiving triangular mesh data describing two or more 3D object models. The method includes designating one of the two or more 3D object models as a reference object. The method includes evaluating at least one 3D triangle from each received triangular mesh data of the two or more 3D object models as a reference triangle, and performing the following for each reference triangle: (i) using the condition of triangle congruence to identify one or more adjacent triangles; and (ii) performing neighbor face edge hashing to generate an object hash value for each 3D triangle of at least one 3D triangle. The method includes comparing the object hash value with one or more reference hash values respectively assigned to the one or more 3D object models. The method includes determining whether there is a match between the one or more 3D object models and the reference object based on the amount of matches of the hash values obtained.
[0044] According to other aspects 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. The method includes evaluating at least one 3D triangle from the received triangular mesh data by the following steps: (i) identifying one or more adjacent triangles using the condition of triangle congruence; and (ii) performing neighbor face edge hashing to generate an object hash value for each 3D triangle of at least one 3D triangle. The method includes creating a first 3D reference model, the first 3D reference model including the corresponding object hash value of at least one triangle of the first triangular mesh data. The method includes receiving second triangular mesh data describing a similar object or an object in an object at a second time after the first time. The method includes, for each reference triangle, evaluating at least one 3D triangle from each received second triangular mesh data as follows: (i) identifying one or more adjacent triangles using the condition of triangle congruence. The method includes performing neighbor face edge hashing to generate an object hash value for each 3D triangle of at least one 3D triangle. The method includes creating a second 3D reference model, the second 3D reference model including the corresponding object hash value of at least one triangle. The method includes comparing the first 3D object model and the second 3D object model.
[0045] 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 3D data processing device, a 3D data processing method, and a 3D data processing program. More specifically, the present invention relates to a device, a method, or a program that has the ability to search for a component similar to a predetermined shape from an input shape model (such as a CAD model or a mesh model) and is able to change the search range in terms of size and / or topology.
[0046] In one or more embodiments, a method obtains dimensional layers of triangular mesh data of a 3D object from a slicing program in each of three orthogonal directions. In another embodiment, the method obtains 3D modeling triangular mesh data of a pre-existing 3D object. In another embodiment, the perimeter value of each layer in each of the three orthogonal directions is obtained and compared with the stored perimeter value of the reference object to determine the degree of match. In one or more embodiments, the measurement data is facilitated by processing software, which includes but is not limited to CNC / 3D printing software. Smaller objects within the 3D object can also be analyzed. In order to achieve a more robust method, a value is assigned by summing the perimeters of the surrounding triangles to analyze each triangle in the triangular mesh data. In another embodiment, matching is performed with a reference object based on the assigned total perimeter value. In another embodiment, the calculated values of the 3D object and the reference object do not have to correspond 1:1, but can correspond proportionally. The two can have different scaling ratios, 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.
[0047] In one or more embodiments, the use of various methods is based on the average processing time required for the required calculations. In another embodiment, the methods and process steps are not interdependent and can be used in various combinations to evaluate the similarities and differences between two or more three-dimensional (3D) object models. These analysis methods can be used independently or in combination with one or more other analysis methods, in any order, and can include other processes for further data collection for specific situations.
[0048] The present invention relates to a similar shape comparison and retrieval device 100, which includes: (i) a reference shape model input unit 102, used to provide a reference shape model; (ii) a test shape model input unit 104, used to provide a test shape model; (iii) a comparison and retrieval unit 106, used to search for a shape model similar to the test shape model; and (iv) a display unit 108, used to display any one of the test shape models determined to be similar to the reference shape model.
[0049] The comparison and retrieval unit ideally includes: (i) a file conversion 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 the parameters of the local shape model; (iv) an object extraction module 118 for dividing the shape model into one or more partial shape models; (v) a comparison calculation module 120 for comparing the similarity between the parameter features of the shape model and the parameter features of the reference shape model.
[0050] In another embodiment, the comparison and retrieval unit ideally includes: (i) a file conversion 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 the local shape model; (v) an object extraction module 118, for dividing the shape model into one or more partial shape models; (vi) a comparison calculation module 120, for comparing the similarity between the parameter features of the shape model and the parameter features of the reference shape model.
[0051] Depending on the intended use of the system, the innovative design can adopt any number of configurations. Various configurations can include one or more of the following components: (a) file conversion module (optional); (b) mesh generation module (optional); (c) object slicing module (optional); (d) parameter calculation module; (e) object extraction module; (e) comparison calculation module (optional); and (f) comparison output display (optional).
[0052] The shape model data is converted into triangular mesh data, and triangular mesh data groups are extracted and classified. The shape model data is divided into "components" with certain characteristics. These are the triangular mesh data conversion process and the local feature shape extraction process. The feature quantity of the triangular mesh data group representing the classified local feature shape is calculated, and then the difference between the feature quantity of the calculated triangular mesh data group and the feature quantity of the reference shape is calculated. Based on the difference in the feature parameter quantity, a candidate list of similar shapes is displayed.
[0053] Figure 2 A method 200 is shown, including preliminary steps to prepare the process:
[0054] (1) using commercial computer-aided design software such as SolidWorks (Dassault Systemes SolidWorks Corp., Waltham, Mass.) or AutoCAD (Autodesk, Inc., San Rafael, Calif.) to generate a digital 3D model computer data file, or to obtain existing digital 3D model computer data;
[0055] (2) In step 202, the model is uploaded to the database. Various types of files that can be uploaded to the server for visualization may include, but are not limited to, the following files: 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.
[0056] (3) In step 204, the files are converted to the same format. A non-limiting example of a format is the .stl format. In an exemplary embodiment, all files are converted to the STL format, although other formats may be used. Commercial software such as NuGraf and PolyTrans Pro Translation System from Okino Computer Graphics, Ontario, Canada may be used for the conversion. The system may take any existing 3D model, such as a scan from a CT scan, CAD file, etc., and convert the scan to an STL file.
[0057] (4) In step 206, upload the data (eg, .stl) file to a processing queue having the same all-dimensional units (eg, all metric units or all imperial units).
[0058] (5) In step 208, check whether repair is needed. If repair is needed, the uploaded file is sent to a repair module (step 210), such as a well-known slicing program.
[0059] STL (STereoLithography) is a file format native to the stereolithography CAD software created by 3D Systems. STL has some new meanings, such as "Standard Triangle Language" and "Standard Subdivision Language". Many other software packages also support this file format; it is widely used in rapid prototyping, 3D printing, and computer-aided manufacturing. The term STL or .stl file used here refers to a computer data file that can be uploaded to a server for 3D object visualization, which can include but is not limited to the following files: 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.
[0060] In an exemplary embodiment of the first stage, the method 200 for processing an uploaded file includes a first step (step 212) of reading an object data file and storing vertices in SQL data. A vertex is the location of each point of a triangle in three-dimensional space. Therefore, the data is stored as three-dimensional reference points for the three points of the triangle. The lengths (and / or angles) of the sides starting from these three points are calculated. The reference data and measurements are associated with assigned identifiers of the triangles based on the processing order. The scanned object can have 500,000 or more triangles. The data (e.g., .stl) file provides surface triangles and solid pyramids. The surface definition of the object is obtained by a file conversion module, which: (a) accesses a polygonal mesh data file; (b) orients the object in three orthogonal axes {x, y, z}; (c) orients and / or rotates the mesh data to obtain one or more directions for rendering. These directions provide combinations as needed, regardless of the original orientation of the object. These three directions provide each combination, regardless of the original orientation of the object. Typically, the object data providing software uses plane "1" as the face facing the slice. The other two directions implement orthogonal sets of slices or other data sets.
[0061] In the optional second stage of step 214, the method includes recreating the data (e.g., .stl) file from the SQL version in three orthogonal axes {x, y, z} by rotating 90 degrees to the left and 90 degrees backward. In the third stage, this includes slicing each of the three directions with MATTERSLICE to obtain three sets of G codes. Slicing programs (e.g., slic3r, MatterSlice, craftware, matter control, etc.) can generate a result, which is then separated as a perimeter number by generating G code. G code is a machine language for computer numerical control (CNC) or three-dimensional printers that can be used to manufacture objects. Using G code, the method includes measuring the perimeter of all slices. For example, assuming that the G code provides 400 slices, 400 perimeters will be generated for comparison. Find a match that matches these 400 perimeters in any order. Due to different directions, slice 1 does not have to match slice 1. A score is obtained based on the number of layers. For example, in the case of no matching slices, the match can be 0, and in this example, the match can be 400 to achieve a perfect match.
[0062] In one or more embodiments, the method includes an optional step in which the 3D table data is brought into a situation where the longest coordinate is maximized. A method may be used to set such a coordinate system: maximize the x, y and z coordinates, calculate the similarity in each situation, and output the situation with the highest similarity as the search result.
[0063] In one or more embodiments, one or more data acquisition devices may be used to generate raw 3D data about an object and input the raw 3D data to a server. Some examples of suitable data acquisition devices include laser scanners for acquiring 3D surface data and MM scanners, CAT scanners, or laser confocal microscopes for acquiring 3D volume data. However, it should be understood that the data acquisition device may include any device that generates digitized 3D data from an object. The acquired 3D data may be 3D surface data, such as 3D surface data generated by optically scanning the surface of an object, or 3D volume data, including information about the interior of the object, such as volume data obtained from an MM scan, a CAT scan, or a laser confocal microscope.
[0064] In the example of 3D surface data, when an object is scanned using a laser scanner, tens or hundreds of thousands of point coordinates are generated, each representing a location on the object. The collection of these points is called a "point cloud". It has no structure, just a file containing point coordinate data (such as x, y, z values). As is well known in the art, point cloud information can also be generated interactively or automatically from mathematical functions using computer programs. In either case, to use the point cloud, it must be structured or modeled.
[0065] 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 known surface modeling primitives used to represent real-world and synthetic surfaces in computer graphics. Each triangle "knows" its neighbors, which are triangles that can quickly process the geometry represented by the triangulation. It is important to emphasize that the same set of vertices or data points may have multiple triangulations. Therefore, the focus is on the vertices themselves, not the "surface" represented by the triangles. The triangular mesh contains a representation of information about the geometry and connectivity, also known as topology. The geometry defines the location of the vertices in the (Euclidean) coordinate system. They are represented as triples (x, y, z). Connectivity defines the set of points connected into triangles or mesh faces. A triangle is given by three index values that identify the three vertices that enclose the triangle.
[0066] In one or more embodiments, one or more data compression modules may be used to compress certain data to enhance storage and transmission.
[0067] In early prototypes, the open source Slic3r product was used. To better handle lower resolution situations, the MatterSlice open source product was used in updated versions. The slicer parameters are set as follows:
[0068] In step 216, the slicer parameters are set: (1) unit measurement of the layer (0.1); (2) remove all solids between the perimeters and do not fill any solids or fills, thereby providing only a shell with all content size of 1 unit; and (3) provide the material size being input to fill the shell. The layer perimeters are automatically calculated, including the outer layer and possibly also the inner layer for holes or objects in the model. The data for each layer is compared to the data layers in the database. The matches are ranked based on the percentage of matches to the models in our database, including matches to the perimeters within the given model.
[0069] In stage 3, the layers are processed: three evaluations are performed on the object in three different directions. Figure 3A-3C 102a-102c, respectively, as described in the drawings. Note that a rotation of 180° from one of these orientations will produce the same results. Therefore, it is not necessary to rotate the model 300 in all possible orientations. The orientations 300a-300c allow the model 300 to be analyzed using all possible layerings that differ by 90° from the initial orientation of the model 300.
[0070] In one example, the height of a layer is calculated to be 0.1mm. The outer perimeter of each layer is calculated. Each layer is assigned a value corresponding to its perimeter. The units for a layer can be 1, 0.5, 0.1. In one example, the program "assumes" that everything is metric, so regardless of the units the STL file is actually measured in, it is assumed to be measured in units of 0.1mm. Also note that when a search is performed, the closest matches will be displayed in order. In step 1 here, the object will be identified among other objects and its perimeter calculated for matching before step 2 (extraction).
[0071] In stage 4 of step 216, the processed G-code is stripped of unnecessary information, thereby speeding up processing by retaining only the length of each layer. In stage 5 of step 218, a thumbnail image is generated to enable the user to easily and quickly view the scanned and processed model, object or part. In one embodiment, POV-ay software is used based on the first image presented (e.g., the front camera view). "POV-Ray" or "Persistence of Vision Raytracer" is provided by Vision Raytracer Pty. Ltd of Williamstown, Victoria, Australia.
[0072] Phase 6 includes two steps, steps 220 and 222, either or both of which may be performed. The choice may be made based on processing requirements. In step 1 of phase 6, SQL vertices are processed to form four triangle set keyholes. Figure 4Describe the first triangle A200 surrounded by the shared respective sides of triangles B201, C202 and D203. Calculate all three parameters for all 4 triangles = 3D reference points for the three points of the triangle + calculate the length of the side from the three points + read the order (triangles assigned numbers by order, 500,000 + triangles; just putting the information together here; already calculated above; now put all 4 together and assign a number.
[0073] To reiterate, in step 1, the edges involve a 4-triangle keyhole. Look at three data (reference point + calculated edges of all 4 triangles). That is, look at the reference triangle A plus the three triangles B, C, and D that touch the three edges of reference triangle A. Each triangle of the object is calculated as triangle #1 in the 4-triangle set keyhole. Therefore, if there are 1000 triangles, there are 1000 triangles #1 of the 4-triangle set keyhole. In one or more embodiments, four data are considered: (a) observe the edges of triangles A, B, C, D; and (b) determine the allocation order and data sequence of the surrounding triangles B, C, D according to the adopted convention. In one embodiment, the first column of data contains only the perimeter. The second, third, and fourth columns can contain the lengths of the edges shared by triangle A respectively.
[0074] When measuring the length of one or more triangles that share a side with a reference triangle, the default / initial orientation of the model is used and measurements are taken south (down) from the reference triangle. In one example, the triangle "below" the reference triangle, i.e., the triangle below the reference triangle that shares the bottom line of the reference triangle, is the first point measured. The perimeter is measured and the number for that triangle is derived. In one example, one or more additional triangles are measured. In the example above, triangle "5" is below the reference triangle ("1"). The perimeter of "5" is measured, then the perimeter of "4", then the perimeter of "3". In one specific example, the perimeter of "5" is derived to be 85mm, the perimeter of "4" is 300mm, and the perimeter of "3" is 65mm.
[0075] Note that the retrieved data results in a numerical value for the reference triangle that is based on the perimeter of one or more adjacent triangles. Each triangle in the model is treated as a reference triangle in this manner. This results in overlapping data. The entire model is treated as if it were flat. The topographic relationships between triangles are irrelevant to the process. Although counterintuitive, step 3 achieves superior calculations in terms of speed and accuracy (including reliability) compared to techniques that use simpler, more direct and obvious methods.
[0076] Back to Figure 2 , in step 2 of stage 6 in step 222, as Figure 5As shown, the eight (8) vertices of triangle A that are touched by triangle BD are evaluated. In addition, triangles E–K that share at least one vertex with triangle A are also considered. Each triangle of the object is calculated as triangle #1 of the 8+ triangle set keyhole. Therefore, if there are 1000 triangles, there are 1000 triangles of the 8+ triangle set keyhole #1. Considering the larger number of triangles, step 2 may be more processor-intensive than step 1. Note that these data points are registered in the same manner as in step 1. However, in step 2, additional calculations are performed. For the data of the starting triangle A: (1) obtain the perimeter of triangle A; (2) obtain the lengths of the three sides of triangle A; (3) observe the sides of triangle A and determine which triangles are B–D that share sides; (4) obtain the perimeter of triangle B–D; (5) triangle B–D; (6) determine which triangles EK, in addition to triangle BD, touch three points or vertices of triangle A; (7) obtain the perimeter of the touching triangles EK; and (8) obtain the lengths of the sides of the touching triangles E–K. The perimeter of triangle A + the measurements of the 3 sides = 4 data points, and then which triangles touch triangle A.
[0077] Return to step 2 of stage 6 in step 222, Figure 5 Described is the evaluation of the eight (8) vertices of triangle A that are touched by triangle BD. In addition, triangles E–K share at least one vertex with triangle A and are also considered. Each triangle of the object is calculated separately as triangle #1 of the 8+ triangle set keyhole. So if there are 1000 triangles, there are 1000 triangles of the 8+ triangle set keyhole #1. Taking into account the larger number of triangles, step 2 may be more processor intensive than step 1. Note that these data points are registered in the same way as in step 1. However, in step 2, additional calculations are performed. For the data of the starting triangle A: (1) get the perimeter of triangle A; (2) get the lengths of the three sides of triangle A; (3) observe the sides of triangle A and determine which triangles B–D are co-lateral; (4) get the perimeter of triangles B–D; (5) triangles B–D; (6) determine which triangles E–K, in addition to triangles B–D, are touching the three points or vertices of triangle A; (7) get the perimeter of touching triangles E–K; and (8) get the length of touching triangle EK. The perimeter of triangle A + the measurements of the 3 sides = 4 total data points, and then which triangle is touching triangle A.
[0078] In step 224, stage 7 Figure 2In the Object Extraction step, an object extraction is performed. If the reference model is inside another model in the database, the reference model is extracted and analyzed in this step. The same is true for other models in the database that exist inside the reference model. Objects are derived from the model, i.e. the child model is isolated and analyzed independently of the parent model. The object can be a hole, void or other part.
[0079] In an illustrative example, stage 7 object extraction may detect a short bolt as a reference object, finding that the short bolt is part of a longer but otherwise identical bolt. Conversely, the longer bolt may serve as a reference object. The shorter but otherwise identical bolt will be identified as comprising a corresponding percentage of the longer bolt. Therefore, it will perfectly match that portion of the bolt.
[0080] In a similar example, object extraction can be performed using a specific bolt as a reference object database, while the scanned model database is a jet engine. The .stl file can be an assembly file. In particular, the "jt" file is an open format that allows a large number of notes to be inserted into the file. The same bolt can be extracted from within the jet engine and displayed as a match. The location of each match in the engine can be identified and highlighted. There is no practical limit to the number of such sub-assemblies or parts that can be detected, such as finding 600 bolts in an engine and distinguishing them from 400 screws. The use of such information can include building a bill of materials for a specific object, detecting counterfeit patented parts, diagnosing failure modes of components, and so on.
[0081] Each of the above stages and steps may be performed individually or in various combinations. For example, stage 1 may be performed and then stage 6 may be performed directly. For another example, if there is more than one mesh / object to be analyzed, each mesh / object may be analyzed separately in the model database through each stage.
[0082] The present invention is a basic technology for providing great usability in processing three-dimensional data and covers a wide range of applications. It is expected that the search step can change the recognition mode of similarity between the query shape model and the feature part in terms of size or topology.
[0083] In one or more embodiments of the present invention, shape parts similar to arbitrary query shape data can be flexibly retrieved and displayed in terms of size or topology. One of the basic questions to ask is when two shapes are truly the same. There is no single answer to this, it depends on the aspects of the shapes that you are most interested in. At a basic level, if two shapes are identical, but located in different locations, then in most cases we consider them to be "the same." Topology has a broader concept of sameness than geometry. Here, if one shape can be pulled, stretched, and twisted into another shape, then the two shapes are considered "the same."
[0084] Topologically similar shapes can be retrieved by lowering the threshold of similarity. Lowering the similarity threshold, for example expanding the area of the target shape, allows expanding the range of shapes to be retrieved. The present invention uses mesh information to perform similarity searches. Thus, the present invention allows discovering shapes that are similar but have different topological structures.
[0085] In one or more embodiments, another stage or step may be performed to scale the results. If the number of facets in the model or the objects identified in the model are the same as the reference model, the compared model (or the model found in the database in the case of a search) may be scaled accordingly. After scaling, a layer analysis (step 1) may be performed to identify the extent to which the model has been scaled or stretched. If the model is stretched in one direction, such as after being elongated, after a matching model is identified in step 5, the processing in step 1 will generate the extent to which scaling has occurred (e.g., 50% longer). If the model is stretched in multiple directions, such as due to the scaling process in step 5 that causes the compared model to be the same size as the reference model, the model will be scaled up by 500%, so the layer-based results will result in a 100% match (assuming there are no other differences between the models). In this case, the ratio by which the compared model or the model found in the database must be scaled is proposed: the total size is reduced or expanded by 87%.
[0086] In an exemplary method: (1) perform 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 one from the second file and look at the ratio of the side lengths; (4) do this three times with this ratio so that all three sides are seen; (5) process matching for a large number of data points; (6) return to the previous processing step to start processing, while applying the ratio to see if each triangle matches.
[0087] In one or more embodiments, density calculations may be performed as another source of information for matching objects. In addition, artificial intelligence may be incorporated to extend use cases to predictive analysis or even prescriptive analysis. One or more embodiments may employ various artificial intelligence (AI)-based schemes to perform various aspects thereof. One or more aspects may be facilitated by an automatic classifier 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 certain class. In other words, f(x) = confidence (class). Such classification may employ probabilistic or statistically based analysis (e.g., taking into account analytical utility and cost) to predict or infer actions that a user desires to be automatically performed.
[0088] A support vector machine (SVM) is an example of a classifier that can be used. SVMs operate by finding a hypersurface in the space of possible inputs that attempts to separate triggering conditions from non-triggering events. Intuitively, this allows classification to be correct for test data that may be similar to the training data but not necessarily identical. Other directed and undirected model classification methods that provide different independence patterns can be employed (e.g., Bayes, Bayesian networks, decision trees, neural networks, fuzzy logic models, and probabilistic classification models). Classification as used herein may include statistical regression for developing priority models.
[0089] One or more embodiments may employ classifiers that are explicitly trained (e.g., via common training data) as well as classifiers that are implicitly trained (e.g., by observing user behavior, receiving external information). For example, an SVM may be configured via a learning or training phase within a classifier builder and feature selection module. Thus, a classifier may be used to automatically learn and perform many functions, including but not limited to determining according to predetermined criteria.
[0090] One application is a “Doctor ATM” or “ADM (Automatic Doctor Machine)” using a CT scanner that can look at the entire body, identify individual components such as organs, and compare these to previous scans of known healthy and diseased organs, looking for early indications of disease and cancer. Comparisons can also be made to previous models composed of the same person to detect trends. Regular scans will allow our algorithm to sound the alarm if a known pattern occurs that can indicate the early onset of disease (such as degenerative bone disease), cancer, or an enlarged heart.
[0091] One use for the processing described herein is to match a reference object database for a font to see if letters can be matched from within an object. Once the letters are found, the word or model number of an engraved model can be identified from the object. Another use is to confirm that a product has been assembled using the correct fasteners or components, or to correctly identify which parts 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 parts used over time. An unknown physical part can be scanned and matched to the original .stl version of the CAD / CAM model for other unit replacements. Matching prototypes or parts of prototypes can identify previously designed, tested, and manufactured parts that closely match, avoiding the creation of an unnecessary second supply chain.
[0092] Schools can check whether students who create 3D models for academic exercises are cheating. The present disclosure provides matching to identify parts of models, extended models, or rescaled models, etc. Schools can share a database of known pre-existing models to make duplication more difficult.
[0093] Figure 6 A flow chart of an example method 600 for fast matching using slice perimeter measurements according to one or more embodiments is shown. The method 600 begins by receiving triangulated mesh data describing a three-dimensional (3D) object (step 602). The method 600 includes obtaining dimension layers of the 3D object from a slicer in each of three orthogonal directions (step 604). The method 600 includes obtaining perimeter length values for each layer in each of the three orthogonal directions (step 606). The method 600 includes comparing the obtained perimeter length values with stored perimeter length values of a reference object (step 608). The method 600 includes determining whether there is a match between the 3D object and the reference object based on the amount of match between the obtained and stored perimeter length values (step 610). The method 600 then ends.
[0094] Figure 7 A flow chart of an example method 700 for strictly matching each reference triangle of a 3D triangle mesh is shown in accordance with one or more embodiments by associating the perimeter sum of adjacent triangles. The method 700 begins by receiving triangle mesh data describing a three-dimensional (3D) object (step 702). At step 704, for each 3D triangle of the received triangle mesh data of the 3D object, the method 700 includes identifying three adjacent triangles that share a common edge with the reference triangle (step 706). The method 700 includes calculating a total perimeter value of the perimeter lengths of the three adjacent triangles (step 708). The method 700 includes assigning a total perimeter value to the reference triangle (step 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 (step 712). The method 700 includes determining whether there is a match between the 3D object and the reference object based on the amount of matches of the obtained and stored total perimeter values (step 714). The method 700 then ends.
[0095] It is expected that aspects of the present invention will find application as follows in three stages of development including product design, production and use.
[0096] These stages include:
[0097] a. Design stage
[0098] i.CAD
[0099] ii.3D Model
[0100] b. Implementation
[0101] i. Production
[0102] ii. Scan 3D parts using laser scanning
[0103] c. Use
[0104] i.Natural loss
[0105] ii. Performance
[0106] iii. Scan 3D parts using laser scanning
[0107] During design phase enhancement / improvement, usage examples include: (i) CAD (SolidWorks, SolidEdge, AutoCAD); (ii) ANSI and other standards compliance; (iii) finding similar models and similar differences; (iv) differences between models or versions; (v) searching for physical properties and in some cases – defined tolerances; (vi) Additions: Quality Control to see if a part (scan or 3D drawing) is not just the same part / designation, but also any changes: (a) + tolerance attachment, e.g. + / -; and (b) e.g., body is x but tolerance is Y.
[0108] Implementation phase enhancements cover 70% of the potential market. Examples include: (i) Quality control, such as (a) comparing a 3D model (CAD) with a scan; (b) comparing a scan of a metal object with a scan of the object to be tested. Examples include: (ii) Automatically identifying "2D" information on PDFs and other documents written by engineers to automatically adjust settings for 3D model analysis.
[0109] Aspects of the present invention seek to improve quality control by increasing speed and efficiency, particularly compared to commonly known visual manual inspections which are slow and expensive and can only be performed a number of times.
[0110] A coordinate measuring machine (CMM) is a device used to measure the physical geometric features of an object. These machines can be controlled manually by an operator or by a computer. The measurements are defined by a probe attached to the third moving axis of the machine. CMM is also a device used during manufacturing and assembly processes to test parts or assemblies against design intent. By accurately recording the X, Y, and Z coordinates of an object, points can be generated, which can then be analyzed by regression algorithms to construct features. These points are collected by using a probe that is placed manually by an operator or automatically through direct computer control (DCC). A DCCMM can be programmed to measure the same part repeatedly; therefore, this can be considered a special form of industrial robot.
[0111] In today's world of manufacturing, it is critical to have a robust inspection process to improve quality control. With accurate 3D scanning and inspection analysis, companies can reduce iteration / adjustment cycles and quickly take appropriate corrective actions without slowing down their time to achieve their goals. In one or more embodiments, a 3D scanner measures the geometry of a 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 is used to compare to the original CAD drawing, or to a previous scan of the metal body part within tolerance.
[0112] A variety of techniques can be used to obtain dimensional data. In order to inspect parts that may be delicate and have steep geometries, non-contact techniques are often used, i.e., no physical probe contacts the part. Non-contact techniques typically detect some form of energy emanating from the sample being detected. 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. Energy detectors suitable for light detection include photodetectors (e.g., photodiodes), position sensitive devices, array detectors, and CCDs (charge coupled devices). Energy detectors suitable for heat detection include infrared imagers. Energy detectors suitable for sound detection include ultrasonic transducers.
[0113] Dimensional measurement equipment can use machine vision, 3D optical scanning, photogrammetry, and / or structured light imaging. Depending on the configuration, dimensional measurement equipment can generate 2D (two-dimensional) and / or 3D geometric measurements of a part. Machine vision is a technology that uses electronic imaging and algorithms to extract geometric information from an image of a part. 3D optical scanning is a technology that typically uses light reflections from a laser to calculate the surface geometry of a part. Photogrammetry is a technology that determines the geometry of a part by analyzing an electronic image, typically multiple images from different angles. Structured light imaging is a technology that projects a pattern of light onto a part and calculates the surface profile based on the detected deformation of the pattern reflected from the surface of the part.
[0114] If the dimensional measurement device includes and uses an energy transmitter, the energy transmitter transfers energy to the part. Typically, for non-contact measurement, the energy is in the form of radiation, such as light, heat and / or sound. Regardless of the form of energy, the energy transmitter generally does not transfer enough energy to damage or interfere with the part. Energy transmitters suitable for light emission include lamps, wide-field illuminators, structured illuminators, lasers, laser scanners, flash lamps, and modulated illuminators. In addition, the dimensional measurement device can be configured to use ambient light as a supplement or alternative to the light energy transmitter. Therefore, the energy detector can be configured to detect ambient light reflected and / or transmitted by the part. Energy transmitters suitable for heat dissipation include heaters. Energy transmitters suitable for sound emission include ultrasonic transducers.
[0115] In one or more embodiments, 3D scanning (e.g., laser scanning) plus auxiliary software (e.g., Polyworks) can be used to measure the physical geometric features of the object. Aspects of the invention include obtaining a 3D laser scan and then comparing it to a CAD standard and / or a laser scan of a gold body.
[0116] In one or more embodiments, 3D scanning equipment can be used on large structures, such as for inspecting cellular towers and military antennas. The 3D scan data can be used for the required two annual inspections to confirm the alignment of the tower and attached antenna to provide the best view / reception. For example, the scan can be performed by an automated drone that scans using lidar, laser, computed tomography (CT), photogrammetry, etc. to obtain a 3D model. Once the 3D scan data is obtained, the present invention can compare relevant aspects of the scanned object to a predetermined gold body (such as a specified CAD drawing or a previously scanned object) based on relevant parameters such as height, centerline, angle, etc. The user can set the tolerance to a default value or set a user setting by a number or percentage, etc.
[0117] In one or more embodiments, a method for modeling a cell tower using an unmanned aerial vehicle (UAV) is provided, wherein the method includes causing the UAV to fly a given flight path around a cell tower at the cell tower; obtaining multiple scans of the cell tower with respect to a flight plane; and obtaining and processing the multiple scans based on one or more location identifiers and / or one or more objects of interest to define a three-dimensional (3D) model of the cell tower.
[0118] In one or more embodiments, an unmanned aerial vehicle (UAV) includes: one or more rotors arranged on a body; one or more scanning devices associated with the body; a wireless interface; a processor and the one or more scanning devices coupled to the wireless interface; and a memory storing instructions that, when executed, cause the processor to: process commands to cause the UAV to fly a given flight path around a cell tower at a cellular base station; and provide multiple scans to a processing system that defines a three-dimensional (3D) model of the cell tower based on associations with one or more location identifiers and one or more objects of interest in multiple photographs.
[0119] In one or more embodiments, a method is performed at a cell tower by using an unmanned aerial vehicle (UAV) communicatively coupled to a controller to perform a cell tower assessment using 3D scanning without having to climb a tower at the cell tower, including causing the UAV to fly substantially vertically to a cell tower component using a controller; collecting data related to the cell tower component by scanning the cell tower component using the UAV; sending and / or storing the collected data; and processing the collected data to obtain information for the cell tower assessment.
[0120] In one or more embodiments, the present disclosure relates to three-dimensional (3D) modeling of a nested base station and a nested tower with an unmanned aerial vehicle. The present disclosure includes UAV-based systems and methods for 3D modeling and representing nested base stations and nested towers. The systems and methods include: obtaining various three-dimensional scans at the nested base station via a UAV; flying around the nested base station to obtain various scans at different angles at different locations (i.e., scans sufficient to generate an acceptable 3D model); and processing various pictures to enhance the 3D model of the nested base station and the nested tower. In addition, once the 3D model is constructed, the 3D model can be subjected to various measurements, including height, angle, thickness, elevation, and even radio frequency (RF).
[0121] In one or more embodiments, the present disclosure provides a cell-peak base station assessment for determining the downward tilt angle of each antenna of a cell-peak base station component. The downward tilt angle is the mechanical (external) downward tilt angle of the antenna. In the cell-peak base station assessment, the downward tilt angle is compared with an expected value.
[0122] In one or more embodiments, the present disclosure provides a method for verifying an antenna bearing angle, such as verifying that the antenna bearing angle is oriented within a defined angle. The bearing angle (AZ) refers to the compass direction of a point on the horizon directly below an observed object relative to true (geographic) north.
[0123] 3D scanning sensors enable the system to capture the 3-dimensional geometry and position of an object. The 3D scanning sensor can use any one of the following technologies or a combination of the following technologies to capture 3D position and geometric topology. These 3D scanning technologies may include, but are not limited to, visible and invisible structured light, photogrammetry, laser dynamic range imagers, light detection and ranging (lidar), laser triangulation, stereo and photometric data, polarization of light, etc., and may even use a combination of the above technologies to create textured or textureless 3D scans. These 3D scanners may use visible or invisible light (such as infrared light) to illuminate and capture objects or people. In addition, the sensor assembly can use a camera and a lighting system that emits and is sensitive to a certain range of ultraviolet rays. This can allow the capture and detection of skin age spots. The sensor assembly may also include a light-emitting device that allows the object to be illuminated.
[0124] Another embodiment involves a computer-readable medium comprising processor-executable instructions configured to implement one or more embodiments of the techniques presented herein. Figure 8 An embodiment of a computer-readable medium or computer-readable device designed in these ways is shown. Wherein the embodiment 800 includes a computer-readable medium 808, such as a CD-R, DVD-R, flash drive, hard drive disk, etc., having computer-readable data 806 encoded thereon. The computer-readable data 806 (e.g., binary data including a plurality of zeros and ones as shown in 806) in turn includes a set of computer instructions 804, which are configured to operate according to one or more principles set forth herein. In one such embodiment 800, the processor-executable computer instructions 804 may be configured to perform a method 802, such as Figure 6-Figure 7 In another embodiment, the processor executable instructions 804 may be configured to implement methods such as Figure 1 A system such as the device 100 of the present invention. Those skilled in the art can design many such computer-readable media that are configured to operate according to the techniques presented herein.
[0125] In one or more embodiments, Fig. 9An outdoor scene 900 is shown where 3D scanning equipment such as an aerial drone 902 can be used on a large structure, such as for inspecting a cellular tower 904, a broadcast tower 906. The 3D scan data can be used for the required two annual inspections to confirm the alignment of the towers 904, 906 and the attached antennas 908 to provide optimal field of view / reception. The aerial drone 902 can have one or more scanning devices 910 that use lidar, laser, computed tomography (CT), or photogrammetry, etc. to obtain a 3D model. The aerial drone 902 can geospatially orient the new 3D scan data to previous 3D scans 912, 914, respectively. In one or more embodiments, the aerial drone 902 obtains further directional information, such as via a global positioning system (GPS) satellite array 916.
[0126] Conditions for triangle congruence
[0127] For clarity, one or more disclosed embodiments involve selecting a reference triangle, finding three adjacent triangles that share three sides of the reference triangle, calculating the total perimeter of the perimeters of the three adjacent triangles, and then comparing. Other basic geometric principles of triangle congruence conditions may also be used according to aspects of the present disclosure:
[0128] (i) Side-Side-Side (SSS);
[0129] (ii) side-angle-side (SAS);
[0130] (iii) Angle-Side-Angle (ASA);
[0131] (iv) Angle-Angle-Side (AAS); and
[0132] (v)Right angle-hypotenuse-side (RHS).
[0133] b) Instead of using the SSS condition for one or more adjacent triangles, a combination of one or more conditions of triangle congruence is used for one or more reference triangles. The measurement can be extended from adjacent triangle to adjacent triangle.
[0134] Triangle hashing scheme: For a given triangle mesh, a hash value is assigned to each triangle. The hash is a number that describes multiple local geometric properties of the mesh near the triangle. In general, the hashing scheme should meet the following requirements:
[0135] (i) Local geometry encoding: The hash value is a function of the geometric measurements of a small region (patch) surrounding a triangle in the mesh that has a fixed and small topological or geometric distance from the triangle.
[0136] (ii) Isometric independence: The hash should not depend on the position or orientation of the triangle in space, but only on its shape and the relative positions of nearby triangles and their vertices.
[0137] (iii) Reversible hashing: There is a one-to-one correspondence between the recorded geometric measurement and the hash, so that the geometric measurement can be recovered from the hash value alone.
[0138] Face Neighbor Edge Hash: In one or more embodiments, the present disclosure includes using one or more types of face neighbor edge hashes, such as Key4, KeyE / Key10, KeyV, and KeyC. Fig.10 The KeyC face neighbor edge hash is shown. KeyC is provided by the following function: Round(Sum(perimeter+[adjacent perimeters]), 2). KeyC is the sum of the edge lengths of the triangle and the edge lengths of its neighbors.
[0139] An example of a method for executing KeyC is provided below:
[0140] A method for comparing two or more three-dimensional (3D) object models, comprising:
[0141] i) receiving polygonal (e.g., triangular) mesh data describing two or more three-dimensional (3D) object models;
[0142] ii) designating one of the two or more three-dimensional (3D) object models as a reference object;
[0143] iii) evaluating at least one 3D triangle of each received multi-sided (e.g., triangular) mesh data from two or more three-dimensional (3D) object models as a reference polygon, and performing the following for each reference triangle: (i) identifying one or more adjacent triangles (or other polygons) sharing a common side with the reference triangle; (ii) calculating a total perimeter value of the perimeters of the one or more adjacent triangles (or other polygons); and (iii) assigning the total perimeter value to the reference triangle (or polygon);
[0144] 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
[0145] v) determining whether there is a match between one or more three-dimensional (3D) object models and a reference object based on the obtained amount of match of the total perimeter values.
[0146] Another example of a method for executing KeyC is provided below:
[0147] A method for comparing two or more three-dimensional (3D) object models, comprising:
[0148] i) receiving triangulated mesh data describing two or more three-dimensional (3D) object models;
[0149] ii) designating one of the two or more three-dimensional (3D) object models as a reference object;
[0150] iii) evaluating at least one 3D triangle of each received triangular mesh data of two or more three-dimensional (3D) object models as a reference triangle, and performing the following for each reference triangle: (i) identifying three adjacent triangles that share a common side with the reference triangle; (ii) calculating a total perimeter value of the perimeters of the three adjacent triangles; and (iii) assigning the total perimeter value to the reference triangle;
[0151] 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
[0152] v) determining whether there is a match between one or more three-dimensional (3D) object models and a reference object based on the obtained amount of match of the total perimeter values.
[0153] Fig.11 Key4 face neighbor edge hashing is shown. Key4 is provided by the function Tuple(KeyC, KeyC_a1, KeyC_a2, KeyC_a3), where the suffixes "a1", "a2", and "a3" represent adjacent triangles, respectively. Key4 is obtained by combining the KeyC scores of a triangle with the KeyC scores of its neighbors into an ordered set. Key4 has proven to be very effective for search / compare applications. The following method provides an example of Key4:
[0154] A method for comparing two or more three-dimensional (3D) objects, comprising:
[0155] i) receiving triangulated mesh data describing two or more three-dimensional (3D) objects;
[0156] ii) evaluating at least one 3D triangle from each received triangle mesh data of the two or more three-dimensional 3D objects as a reference triangle, and for each triangle:
[0157] (a) identifying two or more adjacent triangles that share a common side with a reference triangle;
[0158] (b) calculating the total perimeter of two or more adjacent triangles; and
[0159] (c) assigning a total perimeter value to the reference triangle;
[0160] iii) comparing the total perimeter value assigned to the 3D object with the total perimeter value assigned to a reference three-dimensional (3D) object; and
[0161] iv) determining whether there is a match between two or more three-dimensional (3D) objects 3D based on the amount of matches obtained for the total perimeter values.
[0162] Key4++ is an improvement over Key4's face-neighbor-edge hashing by extending the numerical dynamic range and making the precision configurable. Instead of storing the perimeter summation results, the method evaluates the exponent of the maximum of the four summation results and the mantissa of each summation result. This generates a set of five integers for each triangle that can be encoded into a single 64-bit integer. This integer can be compared with the integers generated by other triangles to identify matching geometries. The precision of this method can be adjusted by controlling the number of significant bits in the perimeter summation mantissa. 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, uKeyC_a3 are as defined in Key4, but without numerical constraints. Key_exponent is the 11-bit exponent of max(uKeyC, uKeyC_a1, uKeyC_a2, uKeyC_a3). mantissa_* is the 13-digit mantissa (significant part) of uKeyc, uKeyC_a1, uKeyC_a2, and uKeyC_a3 respectively.
[0163] Fig.12 The KeyV2 face neighbor edge hash is shown. KeyV2 is provided by the following function: Sum(perimeter+[edge-adjacent perimeters]+[vertex-adjacent perimeters]). An example of a method using KeyV2 is as follows, which adds additional features to the Key4 method described above:
[0164] For each 3D triangle in the triangular mesh data of the 3D object received as a reference triangle, identify three adjacent triangles that share edges with the reference triangle and any other triangles that share vertices with the reference triangle:
[0165] (a) Calculate the total perimeter of three adjacent triangles and the perimeter of any other triangles that share a common vertex; and
[0166] (b) assigning the total perimeter value to the reference triangle;
[0167] (c) comparing the total perimeter value assigned to the 3D object with the total perimeter value assigned to the reference object; and
[0168] (d) Based on the obtained matching amount of the total perimeter values, determine whether there is a match between the 3D object and the reference object.
[0169] Fig.13 The KeyV face neighbor edge hash is shown. KeyV is provided by the following function: KevV_a = Round(perimeter+[vertex_edge_lengths], 2) Tuple(KeyVa, KeyVa1, KeyVa2, KeyVa3). For a single triangle, the sum includes the edge lengths of the triangle and the edge lengths from its vertices. The sum is concatenated for the triangle and its three neighboring triangles.
[0170] Fig.14 KeyE or Key10 face neighbor edge hash is shown. KeyE or Key10 is a face neighbor edge hash that extends the concept of KeyC to the next order of adjacent triangles: Tuple(key, KeyC_a1, KeyC_a11, keyC_a12, KeyC_a2, KeyC_a21, KeyC_a22, KeyC_a3, KeyC_a31, KeyC_a32)).
[0171] Curvature Hashing: This disclosure extends the concept of extracting numerical properties from a set of adjacent triangles. The Gaussian curvature of a surface is a mathematical measure of the rate of change of direction along the surface. This method approximates the Gaussian curvature of the surface on which a triangle lies and multiplies it by the area to obtain the area-normalized Gaussian curvature. This value is used in conjunction 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. This method creates an additional signature that also captures information about the angular variation of adjacent triangles, which is then used in similar applications.
[0172] The above techniques and methods describe extracting local geometric signatures from a triangle and its neighbors to uniquely encode the local shape of an object. According to other aspects of the present disclosure, a method computes a code (a single number or a set of numbers) derived from an analysis of a reference triangle and its neighboring triangles in a 3D mesh such that the code represents a numerical value of the local shape / geometry of the mesh.
[0173] Calculating added or deleted geometric content (i.e., when comparing two 3D objects where one 3D object is a revised version of the other 3D object): Use a sum of reference triangles to determine what content was deleted or added in the revised version of the 3D object. One or more neighbor edge hashing techniques can be used. In one example, at a first time, a method includes scanning an object to obtain first triangular mesh data. At a second time, the method includes scanning the object to obtain second triangular mesh data. The method includes determining whether there is a match between a 3D object based on the second triangular mesh data and a reference object based on the first triangular mesh data based on an amount of matches obtained for the total perimeter values.
[0174] Mesh transformation calculation: Using a one-to-one mapping relationship between a mesh object and the triangles in the object mesh, the method described herein can be used to calculate the translation or rotation (i.e., "deviation") of all or part of a mesh. When two meshes have a large number of similar triangles, with the help of the present disclosure, the two meshes can be easily aligned in three-dimensional space. Using one or more face neighbor edge hashing techniques described herein, the matching triangles in the two meshes are calculated to match exactly. The center points of the triangles are then extracted to establish an accurate correspondence between the positions of the matching triangles of the first mesh and the second mesh. The best-fit rigid affine transformation of the aligned matching triangles is calculated.
[0175] When two meshes have many very similar sub-portions, multiple alignments are found between two meshes with similar mesh partial matches. First, a matching triangle hash is calculated between the two meshes in a small local area. Then, the best fit rigid linear transformation that aligns the matching triangles is calculated. Overlaps are detected to sort the transformations. In addition to percentage matches, aspects of the present disclosure also include calculating a rigid affine transformation in three-dimensional space that best aligns the matching sub-portions.
[0176] Mesh distance calculation: Using a one-to-one mapping between mesh objects and triangles in the object mesh, the methods described herein can be used to calculate the distance of surface elements between two triangular meshes with the same triangles. In one or more embodiments, the Hausdorff distance is used to determine the deviation and can be used for any object described by a triangular mesh.
[0177] 3D Search: A search index can be constructed using the techniques described here. This search index allows accurate retrieval of similar or derived shapes in a database.
[0178] Fig.15is a flow chart illustrating an exemplary 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 (step 1502). The method 1500 includes designating one of the two or more 3D object models as a reference object (step 1504). The method 1500 includes evaluating at least one 3D triangle from each received triangular mesh data of the two or more 3D object models as a reference triangle (step 1506). The method 1500 includes, for each reference triangle, performing the following: (i) identifying two or more adjacent triangles using a condition of triangle congruence; and (ii) performing neighbor face edge hashing to generate an object hash value for each 3D triangle of at least one 3D triangle (step 1508). The method 1500 includes comparing the object hash value with one or more reference hash values respectively assigned to the one or more 3D object models (step 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 matches of the obtained hash values (step 1512 ). The method 1500 then ends.
[0179] In one or more embodiments, the conditions for triangle congruence include one or more of the following: (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, neighbor facet edge hashing includes a KeyC technique that includes summing the perimeter of a triangle and the perimeters of the sides of three adjacent triangles. In one or more specific embodiments, neighbor facet edge hashing also includes executing a Key4 technique that combines the KeyC score of a triangle and the KeyC scores of three adjacent triangles into an ordered set. In one or more specific embodiments, method 1500 includes executing a Key4++ technique that generates a set of five integers by evaluating the exponent of the largest sum of four sums generated by the Key4 technique and the mantissa of each summation to expand the numerical dynamic range and achieve configurability of configurable precision.
[0180] In one or more embodiments, method 1500 includes performing KeyE / Key10 techniques by extending KeyC to the next order of adjacent triangles. In one or more embodiments, neighbor face edge hashing includes KeyV2 techniques, which include summing the perimeter of a triangle, the edge adjacent perimeter, and the vertex adjacent perimeter. In one or more embodiments, neighbor face edge hashing includes KeyV techniques, which include summing the perimeter of a triangle and the edges of vertex adjacent triangles. In one or more embodiments, method 1500 also includes performing Gaussian curvature adjustment on 3D triangular mesh data. In one or more embodiments, method 1500 includes searching a database containing more than one 3D triangular mesh data according to a pattern of hash values to find a match. Subsequently, method 1500 ends.
[0181] Fig.16 1600 is a flow chart 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 (step 1602). The method 1600 includes evaluating at least one 3D triangle from the received triangular mesh data by the following steps: (i) identifying two or more adjacent triangles using a condition of triangle congruence; and (ii) performing neighbor face edge hashing to generate an object hash value for each 3D triangle of the at least one 3D triangle (step 1604). The method 1600 includes creating a first 3D reference model, the first 3D reference model including corresponding object hash values for at least one triangle of the first triangular mesh data (step 1606). The method 1600 includes receiving second triangular mesh data describing a similar object or one of the objects at a second time after the first time (step 1608). The method 1600 includes, for each reference triangle, identifying two or more adjacent triangles using a condition of triangle congruence, evaluating at least one 3D triangle from each received second triangular mesh data (step 1610). The method 1600 includes performing neighbor face edge hashing to generate an object hash value for each 3D triangle of the at least one 3D triangle (step 1612). The method 1600 includes creating a second 3D reference model, the second 3D reference model including the corresponding object hash value of the at least one triangle (step 1614). The method 1600 includes comparing the first 3D object model and the second 3D object model (step 1616). Subsequently, the method 1600 ends.
[0182] In one or more embodiments, method 1600 includes determining at least one sub-object that is added or removed based on comparing the first 3D object model and the second 3D object model. In one or more embodiments, method 1600 includes determining at least one sub-object that is translated and rotated one or more times based on comparing the first 3D object model and the second 3D object model. In one or more embodiments, method 1600 includes extracting a center point of each at least one 3D triangle; and performing a best fit rigid affine transformation to align the first 3D object model and the second 3D object model. In one or more embodiments, method 1600 includes determining a Hausdorff distance to determine a deviation of features between the first 3D object model and the second 3D object model.
[0183] At least a portion of the devices and / or processes described herein can be integrated into a data processing system by a reasonable amount of experimentation. Those skilled in the art will recognize that a typical data processing system typically includes one or more of a system unit housing, a video display device, a memory, a processor, an operating system, a driver, a graphical user interface and application programs, an interactive device (e.g., a touch pad or screen), and / or a control system including feedback loops and control motors, etc. A typical data processing system can be implemented using any suitable commercial means.
[0184] Thus, the presently described system may include a plurality of various hardware and / or software components, such as those described below. It should be understood that, for ease of description, the various described hardware and software components are described and named according to various functions, which may be performed by one or more software or hardware components within 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 the programs described below. Furthermore, it should be understood that, although, for ease of description, multiple programs and multiple databases are described, the various functions and / or databases may actually be parts of a single program or multiple programs running in one or more locations.
[0185] In addition, the database can be stored in a known manner locally or away from any device that accesses the data in the database. Where a database is described, it will be understood by those of ordinary skill in the art that (i) alternative database structures of the described database can be easily adopted, and (ii) other memory structures other than the database can be easily adopted. Any description or description of any example database introduced herein is an illustrative arrangement of information representation for storage. In addition to the arrangement suggested by the tables or other places shown in the accompanying drawings, for example, any number of other arrangements can be adopted. Similarly, any shown entry of the database represents only exemplary information. It will be understood by those of ordinary skill in the art that the number and content of the entries may be different from those described herein. In addition, although 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, the object methods or behaviors of the database can be used to implement various processes, such as described herein. In addition, the database can be stored in a known manner in the local or remote storage of any device that accesses data in the database.
[0186] Although processing steps, algorithms, etc. can be described in order, such processing can be configured to work in different orders. In other words, any sequence or order of steps that can be clearly described does not necessarily represent a requirement to perform steps in that order. On the contrary, the steps of the process described herein can be performed in any actual order. In addition, although described or implied as not occurring simultaneously, some steps can be performed simultaneously (for example, because one step is described after another step). In addition, illustrating the process by depicting it in the accompanying drawings does not mean that the illustrated process does not exclude other variations and modifications, does not mean that the illustrated process or any of its steps are necessary for the present invention, and does not mean that the illustrated process is preferred. Although the process can be described as including multiple steps, this does not mean that all or any steps are indispensable or necessary. Various other embodiments within the scope of the described invention include other processes that omit some or all of the described steps. Unless otherwise explicitly stated, it is not necessary or required to have any step.
[0187] In an exemplary system within a computing environment for implementing the present invention, a general-purpose computing device in the form of a computing system is included, which is commercially available from Intel, IBM, AMD, Motorola, Cyrix, etc. The components of the 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. The computing system typically includes various computer-readable media. Computer-readable media can be any available media that can be accessed by the computing system, and includes volatile and non-volatile media and removable and non-removable media. As an example and not limitation, computer-readable media may include computer storage media and communication media. Computer storage media include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules, or other data.
[0188] Computer memory includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other storage technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassette, magnetic tape, disk storage or other magnetic storage device, or any other medium that can be used to store the required information and can be accessed by the computing system. System memory includes computer storage media in the form of volatile and / or non-volatile memory, such as read-only memory (ROM) and random access memory (RAM). The basic input / output system (BIOS) is usually stored in ROM, and the basic input / output system (BIOS) contains basic routines that help to transfer information between various elements in the computing system (for example, during the startup process). RAM usually contains data and / or program modules that the processing unit can access immediately and / or currently operate on. By way of example and not limitation, operating system, application program, other program modules and program data are shown.
[0189] The computing system may also include other removable / non-removable, volatile / non-volatile computer storage media. As examples only, a hard disk drive that reads or writes non-removable non-volatile magnetic media, a disk drive that reads or writes a removable non-volatile disk, and an optical disk drive that reads or writes a removable non-volatile optical disk (such as a CDROM 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 can be used in an exemplary operating environment include, but are not limited to, cassettes, flash memory cards, digital versatile disks, digital videotapes, solid-state RAM, solid-state ROM, etc. The hard disk drive is usually connected to the system bus via a non-removable memory interface such as an interface, and the disk drive and the optical disk drive are usually connected to the system bus via a removable memory interface such as an interface.
[0190] The drives and their associated computer storage media discussed above provide storage of computer-readable instructions, data structures, program modules, and other data for a computing system. For example, a hard disk drive is shown as storing an operating system, application programs, other program modules, and program data. Please note that these components may be the same 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 represented by different numbers, at least, they are different copies.
[0191] A user may enter commands and information into a computing system through input devices such as a tablet or electronic digitizer, a microphone, a keyboard, and a pointing device, commonly referred to as a mouse, trackball, or touchpad. These and other input devices are typically connected to the processing unit through a user input interface coupled to the system bus, but may also be connected through other interfaces and bus structures such as a parallel port, a game port, or a 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. The monitor may also be integrated with a touch screen panel, etc. Note that the monitor and / or touch screen panel may be physically coupled to a housing in which the computing system is incorporated, such as in a tablet-type personal computer. In addition, a computer such as a computing system may also include other peripheral output devices such as speakers and printers, which may be connected through output peripheral interfaces, etc.
[0192] The computing system can operate in a networked environment using logical connections to one or more remote computers (e.g., remote computing systems). The remote computing system can be a personal computer, server, router, network PC, peer device, or other public network node, and typically includes many or all of the elements described above regarding the computing system, although only storage devices are described. The logical connections described include a local area network (LAN) connected via a network interface and a wide area network (WAN) connected via a modem, but may also include other networks. Such a networked environment is commonplace in offices, enterprise-wide computer networks, intranets, and networks.
[0193] For example, in this embodiment, the computer system may include a source machine from which data is migrated, and the remote computing system may include a target machine. Note, however, that the source and target machines do not have to be connected by a network or any other means, but rather data may be migrated via any medium that can be written by a source platform and read by one or more target platforms.
[0194] A central processor operating according to operating system software such as IBM OS / 2, Linux, UNIX, Microsoft Windows, Apple Mac OSX and other commercially available operating systems provides functionality for the services provided by the present invention. One or more operating systems may reside in a central location or a distributed location (i.e., mirrored or independent). Software programs or modules instruct the operating system to perform tasks, such as but not limited to facilitating client requests, system maintenance, security, data storage, data backup, data mining, document / report generation and algorithms. The functionality provided may be directly embodied in hardware, in software modules executed by a processor, or in any combination of the two. In addition, software operations may be performed in part or in whole by one or more server or client systems through hardware, software modules, or any 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 any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor so that the processor can read information from the storage medium and can write information to the storage medium. Alternatively, the storage medium may be integrated with the processor. The processor and the storage medium may also reside in an ASIC.The bus may be an optical or conventional bus operating according to various protocols well known in the art.
[0195] All publications, patents, and patent applications cited herein, whether supra or infra, are incorporated herein by reference in their entirety, as if each individual publication, patent, or patent application was expressly and individually indicated as incorporated by reference. It should be understood that any patent, publication, or other public material, in whole or in part, deemed to be incorporated by reference herein is incorporated into the present disclosure only to the extent that the incorporated material does not conflict with existing definitions, statements, or other public materials set forth in the present disclosure. Thus, to the extent necessary, the disclosure expressly set forth in the present disclosure supersedes any conflicting material incorporated herein by reference. Any material or portion thereof that is said to be incorporated herein by reference but conflicts with existing definitions, statements, or other public materials set forth herein is incorporated only to the extent that there is no conflict between the incorporated material and the existing disclosed material.
[0196] It must be noted that, 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 colorant" includes two or more such agents.
[0197] 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 the invention belongs. Although many methods and materials similar or equivalent to those described herein can be used in the practice of the present invention, preferred materials and methods are described herein.
[0198] As will be appreciated by those of ordinary skill in the art, the methods and compositions of the present invention substantially reduce or eliminate the disadvantages and drawbacks associated with prior art methods and compositions.
[0199] It should be noted that when employed in this disclosure, the terms "including", "comprising" and other derivatives of the root term "comprising" are open terms that specify the presence of any 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.
[0200] As required, detailed embodiments of the present invention are disclosed herein. However, it should be understood that the disclosed embodiments are merely examples of the present invention, which can be implemented in various forms. Therefore, the specific structural and functional details disclosed herein should not be interpreted as limiting, but only as the basis for the claims and as a representative basis for teaching those skilled in the art to apply the present invention differently with virtually any appropriate detailed structure.
[0201] Although it is obvious that the illustrative embodiments of the present invention disclosed herein achieve the above-mentioned objects, it will be appreciated that a person skilled in the art can design various modifications and other embodiments. Therefore, it will be appreciated that the appended claims are intended to cover all such modifications and embodiments that fall within the spirit and scope of the present invention.
Claims
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) designating one of the two or more 3D object models as a reference object; 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, and performing the following for each reference triangle: (i) identifying one or more adjacent triangles using a condition of triangle congruence; and (ii) performing neighbor face edge hashing to generate an object hash value for each 3D triangle of at least one 3D triangle; iv) comparing the object hash value with one or more reference hash values respectively assigned to the one or more 3D object models; and v) Determining whether there is a match between the one or more 3D object models and the reference object based on the amount of matches of the obtained hash values.
2. The method according to claim 1, wherein: The conditions for triangles to be congruent include one or more of the following: (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 according to claim 1, wherein: Neighbor face edge hashing includes a KeyC technique that includes summing the perimeter of a triangle's edge and the perimeters of the edges of three adjacent triangles.
4. The method according to claim 3, wherein: Neighbor face edge hashing also includes performing a Key4 technique that combines the KeyC score of the triangle and the KeyC scores of the three neighboring triangles into an ordered set.
5. The method according to claim 4, wherein: Also included is execution of a Key4++ technique that extends the numerical dynamic range and enables configurability of configurable precision by evaluating the exponent of the largest of four summations generated by the Key4 technique and the mantissa of each summation to produce a set of five integers.
6. The method according to claim 3, wherein: Also included is the implementation of the KeyE / Key10 technique by extending KeyC to the next order of adjacent triangles.
7. The method according to claim 1, wherein: Neighbor face edge hashing includes KeyV2 technology, which includes summing the perimeter of the triangle, the perimeter adjacent to the edge, and the perimeter adjacent to the vertex.
8. The method according to claim 1, wherein: Neighbor face edge hashing includes a KeyV technique that includes summing the perimeter of a triangle and the edges of triangles adjacent to a vertex. 9 . The method of claim 1 , further comprising performing Gaussian curvature adjustment on the 3D triangular mesh data.
10. The method according to claim 1, further comprising: vi) searching a database containing more than one 3D triangular mesh data for a match based on the pattern of hash values.
11. A method for identifying a deviation in an object, the method comprising: i) receiving first triangular mesh data describing an object at a first time; ii) evaluating at least one 3D triangle from the received triangle mesh data by: (i) identifying one or more adjacent triangles using the condition of triangle congruence; and (ii) performing neighbor face edge hashing to generate an object hash value for each 3D triangle of at least one 3D triangle; iii) creating a first 3D reference model, the first 3D reference model comprising a corresponding object hash value of at least one triangle of the first triangular mesh data; iv) receiving second triangular mesh data describing a similar object or one of the objects at a second time after the first time; v) for each reference triangle, evaluating at least one 3D triangle from each received second triangle mesh data as follows: (a) Use the triangle congruence condition to identify one or more adjacent triangles; (b) performing neighbor face edge hashing to generate an object hash value for each 3D triangle of at least one 3D triangle; (c) creating a second 3D reference model, the second 3D reference model comprising a corresponding object hash value for at least one triangle; and vi) Comparing the first 3D object model and the second 3D object model. 12 . The method of claim 11 , further comprising determining at least one sub-object to add or remove 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 sub-object that is translated and rotated one or more times based on comparing the first 3D object model and the second 3D object model.
14. The method according to claim 11, further comprising: vii) extracting the center point of each at least one 3D triangle; as well as 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 deviations of features between the first 3D object model and the second 3D object model.
Citation Information
Patent Citations
Shape analysis system, difference detection system for three-dimensional model, similar shape search system, shape analysis method, difference detection method for three-dimensional model, siomilar shape search method, and storage medium and program transmission apparatus therefor
US20020004710A1