This invention relates to the automatic identification and classification of real world objects via an analysis of virtual representation of said objects; where said representation is composed of any electronic, optical, or other medium for representing, storing, transmitting, or analyzing information about the original real world object. A component of this invention relates to the automatic rigging of 3D computer graphics.
There has been a great deal of research into methods for the automatic identification of digital representations. These methods are as diverse as the digital representations that are to be identified. For example, text recognition software utilizes methods involving the computation of discrete local symmetries; Microsoft's Kinect utilizes probabilistic tracking in metric spaces; and there is an entire plethora of skeletonization methodologies that utilize everything from voxelization of 3D spaces to Reb graphs.
The method utilized by Microsoft's Kinect device is by far the most widely used and impressive to date. However, Microsoft's probabilistic tracking method requires a large amount of training data in order to produce a predictive model, and each new predictive model requires substantial, even international, efforts to construct. This will not work for many industries that wish to dynamically and automatically identify real world objects because they require a method that can completely recognize an object after one scan, and then be able to match said identity to any other instances of the object. Other industries that can benefit from our technology are not even interested in recognizing objects, but are instead interested in being able to completely analyze the object based off of a single representation, such as a CAD design, and then be able to draw conclusions from said analysis.
Voxelization, Reb graphs, and energy gradient methods do retain this ability to perform analysis or identification based off of a single frame, or data set; however, they are known to be highly error prone and pose specific. This means that it is difficult to ensure that an object will be accurately and uniquely identified from instance to instance. Similarly, if an object is identified in one instance, and then repositioned, then the voxelization, Reb graph, and energy gradient methods may not recognize the re-positioned real world object as the same object from the initial data acquisition.
This Summary is not intended to limit the scope of the claimed subject matter or identify key or essential features of the claimed subject matter. This Summary is only provided, in an abridged form, a selection of concepts that are further described in the Detailed Description.
With the previous paragraph in mind, this disclosure details a novel method for the identification of real world objects via the identification of a skeletal representation for the real world object. The identification of said skeletal representation is frequently, and generically, referred to as skeletonization. The goal of the skeletonization process presented herein is to create a representation that, at least in part, utilizes the least amount of information possible to represent the object which it is modeling so as to aid in the expediation of subsequent analysis. This is in contrast to many previous definitions of skeletal representations that often involve the identification of excess information that can lead to the obfuscation of the identity of the real world object to be identified.
As a side product of this method, we have also devised a novel automatic rigging method. This automatic rigging method resides at the core of our automatic object identification method.
The scope of this claim is not in any way intended to be limited to the identification of real world objects and includes, but is not limited to, the identification of virtual objects.
Similarly numbered elements in the attached drawings correspond to one another.
The presented disclosure is directed at object identification and analysis. In particular, the use of an acquisition device such as a computed axial tomography (CT scan), radar, sonar, depth sensors, atomic force microscopy, or 3D scanning devices to acquire data representative of a real world object, where said representative data can then be analyzed to determine the identity of the said real world object. Similarly, the presented disclosure includes the use of the disclosed method to identify unknown virtual objects, such as a virtual cup, chair, or avatar, which represent potential real world objects, and to identify key components or sub-components of said virtual objects.
For the sphere in 28, this skeletal representation is a single point at the center of the sphere. For the cylinder in 30, this skeletal representation is the line that represents the principle component that determines the height of the cylinder. For the human point cloud in 32, the skeletal representation is a 15-node tree.
The concept of a skeletal representation is related, or similar, to the concept of a skeletal model or skeleton; where a skeletal model is a virtual specification of joints and other points of interest for a virtual model; and where said joints generally define the relative origin for a sub-graph, or component, of the overall virtual model. Different models may or may not require different skeletons in that not every model is defined over the same number or variety of sub-graphs or components.
There are two major differences between a skeleton 34 and a skeletal representation 36. The first is that a skeletal representation contains a topological scale that defines the lower bound and the upper bound for the size or significance of the attributes that are allowed to participate in or influence the skeletal representation. The topological scale S is a dimensional specification, such as but not limited to length, height, and width. As a non-limiting example,
The second difference is that a graphical skeleton typically includes any information that was detectable to the algorithm utilized to generate said skeleton whereas a skeletal representation only includes the minimal amount of information necessary to identify an object. In 34 we can see that a lot more information, in the form of joint information, is utilized to represent the same shape as the skeletal representation in 36.
Step 50 involves the acquisition of the data or information that is utilized to convey the characteristics of the object. This data is generally in the form of, but not limited to the form of, 3D information about the virtual or real object to be utilized for the computation of a skeletal representation.
Step 52 involves the computation of a skeletal representation for, or skeletonization of, the object represented by the data passed to this method in step 50. This skeletonization process can be performed utilizing any standard skeletonization methodology; for example, we could utilize, but are not limited to, thinning and boundary propagation methods, distance field methods, geometric methods, or general-field functions.
The final step in
Step 64 involves the reduction of G to an acyclic graph, or tree. An acyclic graph, or tree, G is meant to indicate the mathematical construct of a graph that does not contain a cycle; where a cycle is a path, or series of vertices, p in G such that the first and last vertex in p are the same vertex. Here, a path p is meant to indicate the mathematical construct that is defined over a series of vertices for a graph G, and such that if a vertex u immediately proceeds a vertex v in p then there exists an edge e(u, v) in G. One methodology for such a reduction is detailed in
Step 66 involves the creation of a joint for the skeletal representation for every vertex of degree greater than two. As a non-limiting example, we can create joints by sequentially querying each vertex v in G to determine v's degree. If v's degree is greater than two then we can set a flag that designates v as a joint in the skeletal representation.
Step 68 involves the creation of a joint for the skeletal representation for every vertex of degree equal one. As in 66, a non-limiting example for such a process would be to query the degree for every vertex v in G. If the degree of said vertex v in G is equal to one then we can set a flag that designates v as a joint for the skeletal representation.
Steps 70 and step 72 together implement a search for a significant change in the direction d of the overall skeleton. 72 begins this search by computing the direction of the lines defined over each edge in G. As a non-limiting example, if u and v are joints in G, and p is the path in G from u to v, then the direction of every edge e(x1, x2), where x, is closer to u than x2, then the direction of e is computed as the vector subtraction x2−x1, for all pairs of vertices (x1, x2) in the path p from u to v. The change in direction ΔT is then computed as the angular difference between the direction of two neighboring edges, or ΔT=cos−1(((x2−x1)·(x3−x2))/(|x2−x1∥x3−x2|)). Alternatively, ΔT could be computed as ΔT=Σii+r−2 cos−1 (((xi+1−xi)·(xi+2−xi+1))/((|xi+1−xi∥xi+2−xi+1|)) for some range r of edges; where 2≤r≤i+r≤|p|, r is even, and where i≥1. The computed value for ΔT is then assigned to the vertex at location i └r/2┘.
Step 72 implements the second half of the search for significant changes in the direction of the overall skeletal model structure. Significant changes in the skeletal model structure can be detected by scanning the value of ΔT for each vertex vi. If a value ΔTi>θ is detected then the index i of the vertex vi with said value for ΔTi is temporarily stored. The values of ΔT for the subsequent vertex vi+1 is then read. If ΔTi+1≥ΔTi then the value of ΔTi+1 is stored in the place of ΔTi. The process in step 72 continues in this manner until a value for ΔTi+1 is found such that ΔTi+1<ΔTi. Once a value for ΔTi+1 is found such that ΔTi+1<ΔTi the values d1=|vi−v1| and d2=|v|p|−vi| are computed. If d1>∂ and d2>∂ then the vertex vi associated with ΔTi is converted to a joint for the skeletal representation, as in 36.
Step 74 involves the removal of all of the remaining vertices. This is performed by visiting each remaining non-joint vertex v, where v participates in the two edges e(u, v) and e(v, w), removing v and the two edges e(u, v) and e(v, w) from G, and then adding the bi-undirected edge e(u, w) to G until only joints vertices remain in G.
Step 86 involves the computation of the deviation from the computed skeletal representation in 82 and the derived skeletal representation in 84. The deviation in 86 is performed by aligning the skeletal representation form 82 with the skeletal representation from 84 and then computing the pair-wise deviation in location from the joints in the skeletal representation from 82 with the joints in the skeletal representation from 84. If the skeletal representation from 82 has more or less joints than the skeletal representation in 84 then a penalty will be applied for each joint in the skeletal representation from 82 but not found in 84, and vice versa.
Step 88 decides if the deviation between the two skeletal representations is high or low. If the deviation is low then the method in
The algorithm in
Once the adjacency list for v′ is constructed, all of the edges e(v, u) that participated in C are deleted form G. Similarly, every vertex v∈C is subsequently deleted from G. Finally, v′ is added to G.
The algorithm in
Step 100 is broken up into four sub-steps 102, 104, 106, and 108. The first sub step 102 involves the alignment of the skeletal representation from the library with the object data. This is done by computing the mean-deviation form for the object data and then aligning the origin of the object data with the origin of the skeletal representation retrieved form the object library.
Sub-Step 104 involves aligning the principle components of the skeletal representation with the principal components of the object data. This is performed by computing the principle components associated with the object data, and then aligning the principle components of the skeletal representation with the principle components of the object data, or vice versa, or both can be aligned with a pre-defined orientation for the principle components. For example, the first principle component can be aligned with the y-axis, the second principle component can be aligned with the x-axis, and the third principle component can be aligned with the z-axis. The number of principle components to be aligned is directly proportional to the dimensionality of the data passed in at 42.
Sub-Step 106 involves adjusting the size of the skeletal representation retrieved from the library to have the same size and proportions as the object data. This can be performed via simple scaling methodologies over multidimensional space.
Sub-step 108 involves the clustering of the primary components, such as points, of the object data according to the components, such as line segments, of the skeletal representation from the object library. This can be done by any number of methods, but the two most efficient are general least squares methods and Voronoi diagram methods.
As a non-limiting example, the least squares method for clustering can be formulated as follows. Let S:={s1, s2, . . . , sn} be the set of components for the skeletal representation retrieved from the object library in 40. Let P:={p1, p2, . . . , pk} be the set of components for the object data in 42. Let {circumflex over (p)}j,i≅Projsjpi be the projection of component pi from P onto a component sj from S, and ri,j=|{circumflex over (p)}j,i−pi| be the residual after pi has been projected onto sj. Then we can define the least squares equation
minimize Σj−1nΣi=1kϕ(S,rj,i,pi)rj,12,
where ϕ(S, rj,i,pi) is the function
Using the above least squares method the object data can be clustered according to the geometric properties of the skeletal representation retrieved from the object library.
Step. 110 involves the computation of the bisecting polytope for each joint. 110 is divide up into two sub-steps. These bisecting polytopes can be utilized to align the components of the skeletal representation retrieved from the object library. A bisecting polytope is defined as the set B of components from P that are within A of the plane that bisects a joint φ in the skeletal representation obtained in 40. The joint φ is the intersection of two components si,sj∈S. As such, the plane that bisects φ is a hyperplane. This means that is the distance of a component pi ÅP to the hyperplane that bisects φ, and all components pi∈P within λ distance to said bisecting plane belong to the bisecting polytope Bk associated with the joint φk.
Sub-Step 112 involves the retrieval of the bisecting polytope information for each joint. This can be done during step 100, or as a separate search after the completion of 100.
Sub-Step. 114 involves the computation of the centroid for each bisecting polytope Bk; where a centroid is the geometric center of mass for the bisecting polytope. The computation of the centroid can be done in the usual way. Since the object data P is regarded as a set of uncorrelated data points, the centroid for Bk={pi, pi+1, . . . ,pi+h} can be computed as
centroidk=(pi, pi+1, . . . , pi+h)/h.
The computation of the centroid in 114 is only a non-limiting example of one way to compute the centroid for Bk; for there are many other equivalent methods for computing the centroid for Bk. Similarly, we could utilize the Euclidian center in 114 instead of the geometric center of mass.
Step. 120 only has one sub-step, and involves the actual alignment of the skeletal representation retrieved from the object library to the object data. This step involves updating the joint information for each intersection of a non-empty set of components from Sin 40 with the corresponding centroid computed in 122.
140 depicts a library of previously computed skeletal representations that can serve as a reference to be used in the acceleration of the computation of a skeletal representation for the currently unidentified object.
Step 142 indicates the acquisition of object data from a data source; specified in 14 as data representing a real world object. This object data acquisition can be performed as detailed in
Step 144 involves a conditional that keeps track of the number of times that the main body of the method in
Step 150 involves the retrieval of a previously identified skeletal representation from the object library according to the value of the iterator i. This previously identified skeletal representation is then utilized by Step 152 to segment the provided object data. The segmentation performed in 152 is according to a least square analysis such that each point p in the provided data is assigned to the closest segment of the skeletal representation passed from 140; where said segmentation is performed after the skeletal representation from 140 has been scaled to the same size as the representation in the raw object data, and has been aligned with the representation in the raw object data.
Let S={p1, p1, . . . , pk} be the set of raw object data captured in 142, and T={s1, s1, . . . , s1} be the set of components to the skeletal representation retrieved from the object library in 150. Then the segmentation performed in 1152 is done by assigning a value pi from S to a component sj in T according to the equation mind {d(pi, sj)|pi∈S{circumflex over ( )}sj∈T}; where d(pi, sj) is the minimum Euclidean distance from a value pi to a component sj.
Step 154 involves the computation of the joint polytopes associated with the intersection of the skeletal representation and the raw object data. A polytope is a geometric figure defined over a set of vertices. For the object identification method presented here, the raw data set S is mapped to a set of vertices to be utilized in the joint polytope. For each joint ji specified by the skeletal representation retrieved from the object library, a polytope is computed around said joint as the subset Si ⊆S that is within a distance ξ within the bisecting plane, or bisecting planes, of the components that intersect at the joint jt.
Step 156 aligns the joints of the skeletal representation retrieved from the object library with the center of mass for the associated polytopes computed in step 154. This alignment can be done, but is not limited to, by computing the mean-deviation form of the polytopes computed in step 154 and then updating the joint values to reflect the shift of the joint polytope from the origin. Step 158 involves the verification of the validity of the computed skeletal representation in 154 and 156. For further information, see
Step 164 involves the selection of the best computed skeletal representation. This selection is done by retrieving the computed skeletal representation that has the least amount of total deviation from the derived skeletal representation from 156. This best computed skeletal representation is then returned in 166.
The preceding detailed description of the methodologies and technologies herein is meant for illustrative purposes and descriptive purposes. This description is not meant to be exhaustive or limiting of technologies disclosed with respect to the exact form presented in the detailed description. Many possible variations and alterations are possible in light of the material covered above. The examples detailed above were chosen in an effort to best explain the concepts and principles of the technologies discussed herein. It is intended that the scope of the technologies presented herein be defined and delineated by the claims appended hereto.
Number | Name | Date | Kind |
---|---|---|---|
7103229 | Porikli | Sep 2006 | B2 |
8892358 | Ren | Nov 2014 | B2 |
20040249809 | Ramani | Dec 2004 | A1 |
20060067573 | Parr | Mar 2006 | A1 |
20100149179 | de Aguiar | Jun 2010 | A1 |
20110148865 | Lim | Jun 2011 | A1 |
20130107003 | Lim | May 2013 | A1 |
Entry |
---|
Agarwal, P.D., Shwarzkopf, O., Harir, M.: The Overlay of Lower Envelopes and its Applications, Disc. Comput. Geom. 15 (1996) 1-13. |
Aurenhammer, F., Klein, R.: Votonoi Diagrams. Handb. Comput. Geom., Elsevier, (2000) 201-290. |
Bowyer, A.: Computing Dirichlet Tessellations, The Computer Journal, vol. 24, No. 2 (1981) 162-166. |
Held, M.: VRONI: An Engineering Approach to the Reliable and Efficient Computation of Voronoi Diagrams of Points and Line Segments, Computational Geometry, vol. 18, 2, (2001). |
Held, M., Huber, S.: Topology-Oriented incremental Computation of Voronoi Diagrams of Circular Arcs and Straight-Line Segments, Computer-Aided Design 41 (2009) 327-338. |
Watson, D. F.: Computing the n-dimensional Delaunay Tessellation with Application to Voronoi Polytopes, The Computer Journal, vol. 24, No. 2 (1981) 167-172. |
Number | Date | Country | |
---|---|---|---|
20140300597 A1 | Oct 2014 | US |