Methods for registration of three-dimensional frames to create three-dimensional virtual models of objects
First Claim
1. A method of constructing a virtual three-dimensional model of an object from a scanner, a data processing system, and at least one machine-readable memory accessible to said data processing system, comprising the steps of:
- (a) scanning the object with the scanner and thereby obtaining at least two two-dimensional images of the object, wherein during scanning the scanner and object are moved relative to each other resulting in each image being taken from a different position relative to the surface of the object;
(b) processing said data representing said set of images with said data processing system so as to convert each of said two-dimensional images into data representing a frame and thereby generate a set of frames corresponding to said images, said set of frames comprising a cloud of individual points, each point in each frame expressed as a location in a three-dimensional X, Y, and Z coordinate system;
(c) storing data representing said set of frames in said memory; and
(d) further processing said data representing said set of frames with said data processing system so as to register said frames relative to each other using a frame to frame registration process to thereby produce a three-dimensional virtual model of the object substantially consistent with all of said frames;
said frame to frame registration process comprising the steps of;
(i) performing an initialization step comprising the sub-steps of;
(A) selecting one of the frames from said set of frames as the first frame;
(B) ordering said set of frames in a sequence of frames Framei for i=1 to N for further processing, wherein Frame1 is the first frame;
(C) setting a quality index for evaluating the quality of the overall registration of one frame to another frame;
(D) setting the frame subscript value i=2; and
(E) selecting Framei−
1 and Framei for registering Framei to Framei−
1;
(ii) transforming the Z coordinate of every point in Framei, thereby bringing Framei closer to Framei−
1, comprising the sub-steps of;
(A) calculating for Framei−
1;
(1) the sum of all Z coordinates Zsum i−
1=sum of the Z coordinate of every point in Framei−
1; and
(2) the median Z coordinate Zmedian i−
1=Zsum i−
1 divided by the number of points in Framei−
1;
(B) calculating for Framei;
(1) the sum of all Z coordinates Zsum i=sum of the Z coordinate of every point in Framei; and
(2) the median Z coordinate Zmedian i=Zsum i divided by the number of points in Framei; and
(C) calculating Δ
Z=Zmedian i−
Zmedian i−
1;
subtracting Δ
Z from the Z coordinate of every point in Framei, thereby transforming the Z coordinate of every point in Framei, and setting Framei=Framei having the transformed Z coordinates.(iii) calculating the translation matrix for Framei comprising the sub-steps of;
(A) calculating a minimum distance vector from every point in Framei to the surface of Framei−
1, thereby creating a set of minimum distance vectors for Framei;
(B) eliminating from said set of minimum distance vectors for Framei each of said set of minimum distance vector for Framei that satisfies one or more exclusion criteria from a set of exclusion criteria, thereby creating a remaining set of minimum distance vectors for Framei, and marking each of the points corresponding to the remaining set of minimum distance vectors for Framei as an overlapping point, wherein said overlapping points define the area of overlap between Framei−
1 and Framei;
(C) calculating a vector sum of minimum distance vectors for Framei by summing all minimum distance vectors corresponding to said overlapping points in Framei; and
(D) calculating a median minimal distance vector (t)i for Framei by dividing the vector sum of minimum distance vectors for Framei with the number of vectors corresponding to said overlapping points in Framei thereby the median minimal distance vector (t)i for Framei forming the translation matrix [T](t)i;
(iv) calculating the rotation transformation matrix for Framei comprising the sub-steps of;
A creating a copy of Framei, and designating said copy of Framei Framei*;
(B) subtracting the median minimal distance vector (t)i from every point in Framei*;
(C) getting a position vector for every overlapping point in Framei* extending from the origin of the coordinate system for Framei* to the overlapping point in Framei*;
(D) calculating a vector sum of all position vectors corresponding to all of the overlapping points in Framei*;
(E) calculating the center of mass for Framei* by dividing the vector sum of all position vectors corresponding to all of the overlapping points in Framei* with the number of said position vectors corresponding to all of said overlapping points in Framei*;
(F) calculating a cross-vector for every overlapping point in Framei* by performing a cross-product operation of (1) the position vector for the overlapping point in Framei* substracted by the vector of the center of mass for Framei* and (2) said minimum distance vector for the overlapping point in Framei*;
(G) calculating a sum of all the cross-vectors corresponding to all of the overlapping points in Framei*;
(H) applying a weighting factor to the sum of all of said cross-vectors for Framei* thereby producing a weighted sum of all the cross-vectors for Framei*; and
(I) scaling the weighted sum of all the cross-vectors for Framei* with an empirical acceleration factor f thereby creating a scaled weighted sum of all the cross-vectors for Framei* thereby said scaled weighted sum of all the cross-vectors for Framei* forming the rotation transformation matrix [T](R)i,(v) applying the transformation to Framei and evaluating the results comprising the sub-steps of;
(A) computing the transformation matrix for Framei [T]i=+[T](t)i+[T](R)i; and
applying the transformation matrix [T]i to every point in Framei thereby producing a transformed Framei wherein [T](t)i produces the transalation of the X, Y and Z coordinates of every point in Framei and [T](R)i produces the magnitude and direction of rotation of Framei;
(B) calculating the closeness factor of the transformed Framei and Framei−
1 and comparing said closeness factor with the quality index;
(C) if the closeness factor>
the quality index, then returning to step (iii);
otherwise proceeding to the next step;
(D) if i<
N, setting i=i+1 and returning to step (ii) until FrameN is registered.
6 Assignments
0 Petitions
Accused Products
Abstract
A method and system are provided for constructing a virtual three-dimensional model of an object using a data processing system, and at least one machine-readable memory accessible to the data processing system. A set of at least two digital three-dimensional frames of portions of the object are obtained from a scanner or other source comprising a set of point coordinates in a three dimensional coordinate system providing differing information of the surface of the object. The frames provide a substantial overlap of the represented portions of the surface of the object, but do not coincide exactly. Data representing the set of frames are stored in the memory and processed by the data processing system so as to register the frames relative to each other to thereby produce a three-dimensional virtual representation of the portion of the surface of the object covered by the set of frames.
263 Citations
43 Claims
-
1. A method of constructing a virtual three-dimensional model of an object from a scanner, a data processing system, and at least one machine-readable memory accessible to said data processing system, comprising the steps of:
-
(a) scanning the object with the scanner and thereby obtaining at least two two-dimensional images of the object, wherein during scanning the scanner and object are moved relative to each other resulting in each image being taken from a different position relative to the surface of the object; (b) processing said data representing said set of images with said data processing system so as to convert each of said two-dimensional images into data representing a frame and thereby generate a set of frames corresponding to said images, said set of frames comprising a cloud of individual points, each point in each frame expressed as a location in a three-dimensional X, Y, and Z coordinate system; (c) storing data representing said set of frames in said memory; and (d) further processing said data representing said set of frames with said data processing system so as to register said frames relative to each other using a frame to frame registration process to thereby produce a three-dimensional virtual model of the object substantially consistent with all of said frames;
said frame to frame registration process comprising the steps of;(i) performing an initialization step comprising the sub-steps of; (A) selecting one of the frames from said set of frames as the first frame; (B) ordering said set of frames in a sequence of frames Framei for i=1 to N for further processing, wherein Frame1 is the first frame; (C) setting a quality index for evaluating the quality of the overall registration of one frame to another frame; (D) setting the frame subscript value i=2; and (E) selecting Framei−
1 and Framei for registering Framei to Framei−
1;(ii) transforming the Z coordinate of every point in Framei, thereby bringing Framei closer to Framei−
1, comprising the sub-steps of;(A) calculating for Framei−
1;
(1) the sum of all Z coordinates Zsum i−
1=sum of the Z coordinate of every point in Framei−
1; and
(2) the median Z coordinate Zmedian i−
1=Zsum i−
1 divided by the number of points in Framei−
1;(B) calculating for Framei;
(1) the sum of all Z coordinates Zsum i=sum of the Z coordinate of every point in Framei; and
(2) the median Z coordinate Zmedian i=Zsum i divided by the number of points in Framei; and(C) calculating Δ
Z=Zmedian i−
Zmedian i−
1;
subtracting Δ
Z from the Z coordinate of every point in Framei, thereby transforming the Z coordinate of every point in Framei, and setting Framei=Framei having the transformed Z coordinates.(iii) calculating the translation matrix for Framei comprising the sub-steps of; (A) calculating a minimum distance vector from every point in Framei to the surface of Framei−
1, thereby creating a set of minimum distance vectors for Framei;(B) eliminating from said set of minimum distance vectors for Framei each of said set of minimum distance vector for Framei that satisfies one or more exclusion criteria from a set of exclusion criteria, thereby creating a remaining set of minimum distance vectors for Framei, and marking each of the points corresponding to the remaining set of minimum distance vectors for Framei as an overlapping point, wherein said overlapping points define the area of overlap between Framei−
1 and Framei;(C) calculating a vector sum of minimum distance vectors for Framei by summing all minimum distance vectors corresponding to said overlapping points in Framei; and (D) calculating a median minimal distance vector (t)i for Framei by dividing the vector sum of minimum distance vectors for Framei with the number of vectors corresponding to said overlapping points in Framei thereby the median minimal distance vector (t)i for Framei forming the translation matrix [T](t)i; (iv) calculating the rotation transformation matrix for Framei comprising the sub-steps of; A creating a copy of Framei, and designating said copy of Framei Framei*; (B) subtracting the median minimal distance vector (t)i from every point in Framei*; (C) getting a position vector for every overlapping point in Framei* extending from the origin of the coordinate system for Framei* to the overlapping point in Framei*; (D) calculating a vector sum of all position vectors corresponding to all of the overlapping points in Framei*; (E) calculating the center of mass for Framei* by dividing the vector sum of all position vectors corresponding to all of the overlapping points in Framei* with the number of said position vectors corresponding to all of said overlapping points in Framei*; (F) calculating a cross-vector for every overlapping point in Framei* by performing a cross-product operation of (1) the position vector for the overlapping point in Framei* substracted by the vector of the center of mass for Framei* and (2) said minimum distance vector for the overlapping point in Framei*; (G) calculating a sum of all the cross-vectors corresponding to all of the overlapping points in Framei*; (H) applying a weighting factor to the sum of all of said cross-vectors for Framei* thereby producing a weighted sum of all the cross-vectors for Framei*; and (I) scaling the weighted sum of all the cross-vectors for Framei* with an empirical acceleration factor f thereby creating a scaled weighted sum of all the cross-vectors for Framei* thereby said scaled weighted sum of all the cross-vectors for Framei* forming the rotation transformation matrix [T](R)i, (v) applying the transformation to Framei and evaluating the results comprising the sub-steps of; (A) computing the transformation matrix for Framei [T]i=+[T](t)i+[T](R)i; and
applying the transformation matrix [T]i to every point in Framei thereby producing a transformed Framei wherein [T](t)i produces the transalation of the X, Y and Z coordinates of every point in Framei and [T](R)i produces the magnitude and direction of rotation of Framei;(B) calculating the closeness factor of the transformed Framei and Framei−
1 and comparing said closeness factor with the quality index;(C) if the closeness factor>
the quality index, then returning to step (iii);
otherwise proceeding to the next step;(D) if i<
N, setting i=i+1 and returning to step (ii) until FrameN is registered. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method of creating a virtual three-dimensional object, comprising the steps of:
-
a) scanning said object in a series of scans, each scan generating a set of images; b) converting said set of images into a set of three-dimensional frames; c) registering said frames in each of said series of scans to each other using a frame to frame registration process to thereby generate a series of segments, each segment comprising a portion of a three-dimensional model of the object;
said frame to frame registration process comprising the steps of;(i) performing an initialization step comprising the sub-steps of; (A) selecting one of the frames from said set of frames as the first frame; (B) ordering said set of frames in a sequence of frames Framei for i=1 to N for further processing, wherein Framei is the first frame; (C) setting a quality index for evaluating the quality of the overall registration of one frame to another frame; (D) setting the frame subscript value i=2; and (E) selecting Framei−
1 and Framei for registering Framei to Framei−
1;(ii) transforming the Z coordinate of every point in Framei, thereby bringing Framei closer to Framei−
1, comprising the sub-steps of;(A) calculating for Framei−
1;
(1) the sum of all Z coordinates Zsum i−
1=sum of the Z coordinate of every point in Framei−
1; and
(2) the median Z coordinate Zmedian i−
1=Zsum i−
1 divided by the number of points in Framei−
1;(B) calculating for Framei;
(1) the sum of all Z coordinates Zsum i=sum of the Z coordinate of every point in Framei; and
(2) the median Z coordinate Zmedian i=Zsum i divided by the number of points in Framei; and(C) calculating Δ
Z=Zmedian i−
Zmedian i−
1;
subtracting Δ
Z from the Z coordinate of every point in Framei, thereby transforming the Z coordinate of every point in Framei, and setting Framei=Framei having the transformed Z coordinates.(iii) calculating the translation matrix for Framei comprising the sub-steps of; (A) calculating a minimum distance vector from every point in Framei to the surface of Framei−
1, thereby creating a set of minimum distance vectors for Framei;(B) eliminating from said set of minimum distance vectors for Framei each of said set of minimum distance vector for Framei that satisfies one or more exclusion criteria from a set of exclusion criteria, thereby creating a remaining set of minimum distance vectors for Framei, and marking each of the points corresponding to the remaining set of minimum distance vectors for Framei as an overlapping point, wherein said overlapping points define the area of overlap between Framei−
1 and Framei;(C) calculating a vector sum of minimum distance vectors for Framei by summing all minimum distance vectors corresponding to said overlapping points in Framei; and (D) calculating a median minimal distance vector (t)i for Framei by dividing the vector sum of minimum distance vectors for Framei with the number of vectors corresponding to said overlapping points in Framei thereby the median minimal distance vector (t)i for Framei forming the translation matrix [T](t)i; (iv) calculating the rotation transformation matrix for Framei comprising the sub-steps of; (A) creating a copy of Framei, and designating said copy of Framei Framei*; (B) subtracting the median minimal distance vector (t)i from every point in Framei*; (C) getting a position vector for every overlapping point in Framei* extending from the origin of the coordinate system for Framei* to the overlapping point in Framei*; (D) calculating a vector sum of all position vectors corresponding to all of the overlapping points in Framei*; (E) calculating the center of mass for Framei* by dividing the vector sum of all position vectors corresponding to all of the overlapping points in Framei* with the number of said position vectors corresponding to all of said overlapping points in Framei*; (F) calculating a cross-vector for every overlapping point in Framei* by performing a cross-product operation of (1) the position vector for the overlapping point in Framei* substracted by the vector of the center of mass for Framei* and (2) said minimum distance vector for the overlapping point in Framei*; (G) calculating a sum of all the cross-vectors corresponding to all of the overlapping points in Framei*; (H) applying a weighting factor to the sum of all of said cross-vectors for Framei* thereby producing a weighted sum of all the cross-vectors for Framei*; and (I) scaling the weighted sum of all the cross-vectors for Framei* with an empirical acceleration factor f thereby creating a scaled weighted sum of all the cross-vectors for Framei* thereby said scaled weighted sum of all the cross-vectors for Framei* forming the rotation transformation matrix [T](R)i, (v) applying the transformation to Framei and evaluating the results comprising the sub-steps of; (A) computing the transformation matrix for Framei [T]i=+[T](t)i+[T](R)i; and
applying the transformation matrix [T]i to every point in Framei thereby producing a transformed Frame, wherein [T](t)i produces the transalation of the X, Y and Z coordinates of every point in Framei and [T](R)i produces the magnitude and direction of rotation of Framei;(B) calculating the closeness factor of the transformed Framei and Framei−
1 and comparing said closeness factor with the quality index;(C) if the closeness factor<
the quality index, then returning to step (iii);
otherwise proceeding to the next step;(D) if i>
N, setting i=i+1 and returning to step (ii) until FrameN is registered;and d) registering said segments relative to each other to thereby create said virtual three-dimensional model. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method of constructing a virtual three-dimensional model of an object using a data processing system, and at least one machine-readable memory accessible to said data processing system, comprising the steps of:
-
(a) obtaining a set of at least two digital three-dimensional frames of portions of the object, wherein said at least two frames comprise a set of point coordinates in a three dimensional coordinate system providing differing information of the surface of said object, whereas those frames provide a substantial overlap of the represented portions of the surface of the said object; (b) storing data representing said set of frames in said memory; and (c) processing said data representing said set of frames with said data processing system so as to register said frames relative to each other using a frame to frame registration process to thereby produce a three-dimensional virtual representation of the portion of the surface of said object covered by said set of frames, without using pre-knowledge about the spatial relationship between said frames;
said three-dimensional virtual representation being substantially consistent with all of said frames;
said frame to frame registration process comprising the steps of;(i) performing an initialization step comprising the sub-steps of; (A) selecting one of the frames from said set of frames as the first frame; (B) ordering said set of frames in a sequence of frames Framei for i=1 to N for further processing, wherein Framei is the first frame; (C) setting a quality index for evaluating the quality of the overall registration of one frame to another frame; (D) setting the frame subscript value i=2; and (E) selecting Framei−
1and Framei for registering Framei to Framei−
1;(ii) transforming the Z coordinate of every point in Framei, thereby bringing Framei closer to Framei−
1, comprising the sub-steps of;(A) calculating for Framei−
1;
(1) the sum of all Z coordinates Zsum i−
1=sum of the Z coordinate of every point in Framei−
1; and
(2) the median Z coordinate Zmedian i−
1=Zsum i−
1 divided by the number of points in Framei−
1;(B) calculating for Framei;
(1) the sum of all Z coordinates Zsum i=sum of the Z coordinate of every point in Framei; and
(2) the median Z coordinate Zmedian i=Zsum i divided by the number of points in Framei; and(C) calculating Δ
Z=Zmedian i−
Zmedian i−
1;
subtracting Δ
Z from the Z coordinate of every point in Framei, thereby transforming the Z coordinate of every point in Framei, and setting Framei=Framei having the transformed Z coordinates,(iii) calculating the translation matrix for Framei comprising the sub-steps of; (A) calculating a minimum distance vector from every point in Framei to the surface of Framei−
1, thereby creating a set of minimum distance vectors for Framei;(B) eliminating from said set of minimum distance vectors for Framei each of said set of minimum distance vector for Framei that satisfies one or more exclusion criteria from a set of exclusion criteria, thereby creating a remaining set of minimum distance vectors for Framei, and marking each of the points corresponding to the remaining set of minimum distance vectors for Framei as an overlapping point, wherein said overlapping points define the area of overlap between Framei−
1 and Framei;(C) calculating a vector sum of minimum distance vectors for Framei by summing all minimum distance vectors corresponding to said overlapping points in Framei; and (D) calculating a median minimal distance vector (t)i for Framei by dividing the vector sum of minimum distance vectors for Framei with the number of vectors corresponding to said overlapping points in Framei thereby the median minimal distance vector (t)i for Framei forming the translation matrix [T](t)i; (iv) calculating the rotation transformation matrix for Framei comprising the sub-steps of; (A) creating a copy of Framei, and designating said copy of Framei Framei*; (B) subtracting the median minimal distance vector (t)i from every point in Framei*; (C) getting a position vector for every overlapping point in Framei* extending from the origin of the coordinate system for Framei* to the overlapping point in Framei*; (D) calculating a vector sum of all position vectors corresponding to all of the overlapping points in Framei*; (E) calculating the center of mass for Framei* by dividing the vector sum of all position vectors corresponding to all of the overlapping points in Framei* with the number of said position vectors corresponding to all of said overlapping points in Framei*; (F) calculating a cross-vector for every overlapping point in Framei* by performing a cross-product operation of (1) the position vector for the overlapping point in Framei* substracted by the vector of the center of mass for Framei* and (2) said minimum distance vector for the overlapping point in Framei*; (G) calculating a sum of all the cross-vectors corresponding to all of the overlapping points in Framei*; (H) applying a weighting factor to the sum of all of said cross-vectors for Framei* thereby producing a weighted sum of all the cross-vectors for Framei*; and (I) scaling the weighted sum of all the cross-vectors for Framei* with an empirical acceleration factor f thereby creating a scaled weighted sum of all the cross-vectors for Framei* thereby said scaled weighted sum of all the cross-vectors for Framei* forming the rotation transformation matrix [T](R)i; (v) applying the transformation to Framei and evaluating the results comprising the sub-steps of; (A) computing the transformation matrix for Framei [T]i=+[T](t)i+[T](R)i; and
applying the transformation matrix [T]i to every point in Framei thereby producing a transformed Framei wherein [T](t)i produces the transalation of the X, Y and Z coordinates of every point in Framei and [T](R)i produces the magnitude and direction of rotation of Framei;(B) calculating the closeness factor of the transformed Framei and Framei−
1 and comparing said closeness factor with the quality index;(C) if the closeness factor<
the quality index, then returning to step (iii);
otherwise proceeding to the next step;(D) if i<
N, setting i=i+1 and returning to step (ii) until FrameN is registered. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43)
-
Specification